Merge pull request #2174 from shiba24/dynamodb2_pay_per_request
Support create_table with PAY_PER_REQUEST billing mode of DynamoDB
This commit is contained in:
		
						commit
						f76b406c4b
					
				| @ -156,7 +156,15 @@ class DynamoHandler(BaseResponse): | |||||||
|         body = self.body |         body = self.body | ||||||
|         # get the table name |         # get the table name | ||||||
|         table_name = body['TableName'] |         table_name = body['TableName'] | ||||||
|         # get the throughput |         # check billing mode and get the throughput | ||||||
|  |         if "BillingMode" in body.keys() and body["BillingMode"] == "PAY_PER_REQUEST": | ||||||
|  |             if "ProvisionedThroughput" in body.keys(): | ||||||
|  |                 er = 'com.amazonaws.dynamodb.v20111205#ValidationException' | ||||||
|  |                 return self.error(er, | ||||||
|  |                                   'ProvisionedThroughput cannot be specified \ | ||||||
|  |                                    when BillingMode is PAY_PER_REQUEST') | ||||||
|  |             throughput = None | ||||||
|  |         else:         # Provisioned (default billing mode) | ||||||
|             throughput = body["ProvisionedThroughput"] |             throughput = body["ProvisionedThroughput"] | ||||||
|         # getting the schema |         # getting the schema | ||||||
|         key_schema = body['KeySchema'] |         key_schema = body['KeySchema'] | ||||||
|  | |||||||
| @ -949,6 +949,33 @@ def test_bad_scan_filter(): | |||||||
|         raise RuntimeError('Should of raised ResourceInUseException') |         raise RuntimeError('Should of raised ResourceInUseException') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @mock_dynamodb2 | ||||||
|  | def test_create_table_pay_per_request(): | ||||||
|  |     client = boto3.client('dynamodb', region_name='us-east-1') | ||||||
|  |     client.create_table( | ||||||
|  |         TableName='test1', | ||||||
|  |         AttributeDefinitions=[{'AttributeName': 'client', 'AttributeType': 'S'}, {'AttributeName': 'app', 'AttributeType': 'S'}], | ||||||
|  |         KeySchema=[{'AttributeName': 'client', 'KeyType': 'HASH'}, {'AttributeName': 'app', 'KeyType': 'RANGE'}], | ||||||
|  |         BillingMode="PAY_PER_REQUEST" | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @mock_dynamodb2 | ||||||
|  | def test_create_table_error_pay_per_request_with_provisioned_param(): | ||||||
|  |     client = boto3.client('dynamodb', region_name='us-east-1') | ||||||
|  | 
 | ||||||
|  |     try: | ||||||
|  |         client.create_table( | ||||||
|  |             TableName='test1', | ||||||
|  |             AttributeDefinitions=[{'AttributeName': 'client', 'AttributeType': 'S'}, {'AttributeName': 'app', 'AttributeType': 'S'}], | ||||||
|  |             KeySchema=[{'AttributeName': 'client', 'KeyType': 'HASH'}, {'AttributeName': 'app', 'KeyType': 'RANGE'}], | ||||||
|  |             ProvisionedThroughput={'ReadCapacityUnits': 123, 'WriteCapacityUnits': 123}, | ||||||
|  |             BillingMode="PAY_PER_REQUEST" | ||||||
|  |         ) | ||||||
|  |     except ClientError as err: | ||||||
|  |         err.response['Error']['Code'].should.equal('ValidationException') | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| @mock_dynamodb2 | @mock_dynamodb2 | ||||||
| def test_duplicate_create(): | def test_duplicate_create(): | ||||||
|     client = boto3.client('dynamodb', region_name='us-east-1') |     client = boto3.client('dynamodb', region_name='us-east-1') | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user