Adding describe table end point

This commit is contained in:
zmsmith 2013-02-19 20:39:04 -05:00
commit 7e3aa7c8ee
4 changed files with 99 additions and 3 deletions

View file

@ -1,4 +1,47 @@
import datetime
from moto.core import BaseBackend
from .utils import unix_time
class Table(object):
def __init__(self, name, hash_key_attr=None, hash_key_type=None,
range_key_attr=None, range_key_type=None, read_capacity=None,
write_capacity=None):
self.name = name
self.hash_key_attr = hash_key_attr
self.hash_key_type = hash_key_type
self.range_key_attr = range_key_attr
self.range_key_type = range_key_type
self.read_capacity = read_capacity
self.write_capacity = write_capacity
self.created_at = datetime.datetime.now()
@property
def describe(self):
return {"Table": {
"CreationDateTime": unix_time(self.created_at),
"KeySchema": {
"HashKeyElement": {
"AttributeName": self.hash_key_attr,
"AttributeType": self.hash_key_type
},
"RangeKeyElement": {
"AttributeName": self.range_key_attr,
"AttributeType": self.range_key_type
}
},
"ProvisionedThroughput": {
"ReadCapacityUnits": self.read_capacity,
"WriteCapacityUnits": self.write_capacity
},
"TableName": self.name,
"TableStatus": "ACTIVE",
"ItemCount": 0,
"TableSizeBytes": 0,
}
}
class DynamoDBBackend(BaseBackend):
@ -6,7 +49,7 @@ class DynamoDBBackend(BaseBackend):
def __init__(self):
self.tables = {}
def create_table(self, name):
self.tables[name] = None
def create_table(self, name, **params):
self.tables[name] = Table(name, **params)
dynamodb_backend = DynamoDBBackend()

View file

@ -1,5 +1,6 @@
import re
import json
from .models import dynamodb_backend
@ -28,6 +29,11 @@ class DynamoHandler(object):
response = {"TableNames": tables}
return json.dumps(response)
def DescribeTable(self, uri, body, headers):
name = json.loads(body)['TableName']
table = dynamodb_backend.tables[name]
return json.dumps(table.describe)
def handler(uri, body, headers):
return DynamoHandler(uri, body, headers).dispatch()

6
moto/dynamodb/utils.py Normal file
View file

@ -0,0 +1,6 @@
import datetime
def unix_time(dt):
epoch = datetime.datetime.utcfromtimestamp(0)
delta = dt - epoch
return delta.total_seconds()