Support create_table with PAY_PER_REQUEST billing mode of DynamoDB
This commit is contained in:
parent
4a286c4bc2
commit
b822db8d8c
@ -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…
Reference in New Issue
Block a user