{"action":"created","issue":{"url":"https://api.github.com/repos/cloudtools/troposphere/issues/1243","repository_url":"https://api.github.com/repos/cloudtools/troposphere","labels_url":"https://api.github.com/repos/cloudtools/troposphere/issues/1243/labels{/name}","comments_url":"https://api.github.com/repos/cloudtools/troposphere/issues/1243/comments","events_url":"https://api.github.com/repos/cloudtools/troposphere/issues/1243/events","html_url":"https://github.com/cloudtools/troposphere/pull/1243","id":387167735,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM1NzE2MDEx","number":1243,"title":"Add on-demand billing for DynamoDB tables","user":{"login":"djk29a","id":1290670,"node_id":"MDQ6VXNlcjEyOTA2NzA=","avatar_url":"https://avatars3.githubusercontent.com/u/1290670?v=4","gravatar_id":"","url":"https://api.github.com/users/djk29a","html_url":"https://github.com/djk29a","followers_url":"https://api.github.com/users/djk29a/followers","following_url":"https://api.github.com/users/djk29a/following{/other_user}","gists_url":"https://api.github.com/users/djk29a/gists{/gist_id}","starred_url":"https://api.github.com/users/djk29a/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djk29a/subscriptions","organizations_url":"https://api.github.com/users/djk29a/orgs","repos_url":"https://api.github.com/users/djk29a/repos","events_url":"https://api.github.com/users/djk29a/events{/privacy}","received_events_url":"https://api.github.com/users/djk29a/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-12-04T08:18:28Z","updated_at":"2018-12-04T20:30:05Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/cloudtools/troposphere/pulls/1243","html_url":"https://github.com/cloudtools/troposphere/pull/1243","diff_url":"https://github.com/cloudtools/troposphere/pull/1243.diff","patch_url":"https://github.com/cloudtools/troposphere/pull/1243.patch"},"body":"I saw that #1242 is also open for the same feature and that there were a couple suggestions made for adding more validation.\r\n\r\nI would appreciate feedback on whether my validation logic can be improved since I couldn't find any other set of properties resembling DynamoDB's billing logic now. I looked at the ELBv2 code and was surprised that it doesn't do more deep validation to model the numerous conditionally required properties / mutually exclusive properties.\r\n\r\nAlthough the `ProvisionedThroughput` AWSProperty has become optional unless the billing mode is `PAY_PER_REQUEST` this does not seem to be consistent when using Global Secondary Indexes because that still requires `ProvisionedThroughput` settings. You can confirm this currently in the console because you can't specify on-demand for the GSI. In a possibly related behavior, updates to the GSI `ProvisionedThroughput` property seem to be getting ignored and failing internally in CloudFormation with a 400 status `One or more parameter values were invalid: List of GlobalSecondaryIndexUpdates is empty`. All I really checked was that CloudFormation validates and creates the stack correctly.\r\n\r\nIn a slightly unrelated fix, I had a great deal of trouble getting a new use case accepted by the tests and added a fix. A complex object returned by a Conditional didn't validate in Troposphere but is definitely accepted by CloudFormation (the example template deploys nicely). Consequently, I added some extra logic to the template generator code to be a little more lenient. Should I split this PR into a separate bug fix? In self-interest, I'd prefer to keep this PR together but I'll do whatever is desired by maintainers.\r\n"},"comment":{"url":"https://api.github.com/repos/cloudtools/troposphere/issues/comments/444246660","html_url":"https://github.com/cloudtools/troposphere/pull/1243#issuecomment-444246660","issue_url":"https://api.github.com/repos/cloudtools/troposphere/issues/1243","id":444246660,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NDI0NjY2MA==","user":{"login":"petergaultney","id":549720,"node_id":"MDQ6VXNlcjU0OTcyMA==","avatar_url":"https://avatars1.githubusercontent.com/u/549720?v=4","gravatar_id":"","url":"https://api.github.com/users/petergaultney","html_url":"https://github.com/petergaultney","followers_url":"https://api.github.com/users/petergaultney/followers","following_url":"https://api.github.com/users/petergaultney/following{/other_user}","gists_url":"https://api.github.com/users/petergaultney/gists{/gist_id}","starred_url":"https://api.github.com/users/petergaultney/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/petergaultney/subscriptions","organizations_url":"https://api.github.com/users/petergaultney/orgs","repos_url":"https://api.github.com/users/petergaultney/repos","events_url":"https://api.github.com/users/petergaultney/events{/privacy}","received_events_url":"https://api.github.com/users/petergaultney/received_events","type":"User","site_admin":false},"created_at":"2018-12-04T20:30:05Z","updated_at":"2018-12-04T20:30:05Z","author_association":"NONE","body":"Would love to see this get into Troposphere. We're blocked on adopting the new OnDemand billing structure for some of our environments until Troposphere allows it."}}
{"actor":{"display_login":"petergaultney"}}