Add glue.delete_table endpoint, for allowing tables to be deleted (#2112)
* Add glue.delete_table endpoint, for allowing tables to be deleted * remove extra whitespace
This commit is contained in:
parent
4a99dcddb2
commit
238d1c7c39
@ -56,6 +56,14 @@ class GlueBackend(BaseBackend):
|
|||||||
database = self.get_database(database_name)
|
database = self.get_database(database_name)
|
||||||
return [table for table_name, table in database.tables.items()]
|
return [table for table_name, table in database.tables.items()]
|
||||||
|
|
||||||
|
def delete_table(self, database_name, table_name):
|
||||||
|
database = self.get_database(database_name)
|
||||||
|
try:
|
||||||
|
del database.tables[table_name]
|
||||||
|
except KeyError:
|
||||||
|
raise TableNotFoundException(table_name)
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
class FakeDatabase(BaseModel):
|
class FakeDatabase(BaseModel):
|
||||||
|
|
||||||
|
@ -84,6 +84,12 @@ class GlueResponse(BaseResponse):
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def delete_table(self):
|
||||||
|
database_name = self.parameters.get('DatabaseName')
|
||||||
|
table_name = self.parameters.get('Name')
|
||||||
|
resp = self.glue_backend.delete_table(database_name, table_name)
|
||||||
|
return json.dumps(resp)
|
||||||
|
|
||||||
def get_partitions(self):
|
def get_partitions(self):
|
||||||
database_name = self.parameters.get('DatabaseName')
|
database_name = self.parameters.get('DatabaseName')
|
||||||
table_name = self.parameters.get('TableName')
|
table_name = self.parameters.get('TableName')
|
||||||
|
@ -209,6 +209,27 @@ def test_get_table_when_database_not_exits():
|
|||||||
exc.exception.response['Error']['Message'].should.match('Database nosuchdatabase not found')
|
exc.exception.response['Error']['Message'].should.match('Database nosuchdatabase not found')
|
||||||
|
|
||||||
|
|
||||||
|
@mock_glue
|
||||||
|
def test_delete_table():
|
||||||
|
client = boto3.client('glue', region_name='us-east-1')
|
||||||
|
database_name = 'myspecialdatabase'
|
||||||
|
helpers.create_database(client, database_name)
|
||||||
|
|
||||||
|
table_name = 'myspecialtable'
|
||||||
|
table_input = helpers.create_table_input(database_name, table_name)
|
||||||
|
helpers.create_table(client, database_name, table_name, table_input)
|
||||||
|
|
||||||
|
result = client.delete_table(DatabaseName=database_name, Name=table_name)
|
||||||
|
result['ResponseMetadata']['HTTPStatusCode'].should.equal(200)
|
||||||
|
|
||||||
|
# confirm table is deleted
|
||||||
|
with assert_raises(ClientError) as exc:
|
||||||
|
helpers.get_table(client, database_name, table_name)
|
||||||
|
|
||||||
|
exc.exception.response['Error']['Code'].should.equal('EntityNotFoundException')
|
||||||
|
exc.exception.response['Error']['Message'].should.match('Table myspecialtable not found')
|
||||||
|
|
||||||
|
|
||||||
@mock_glue
|
@mock_glue
|
||||||
def test_get_partitions_empty():
|
def test_get_partitions_empty():
|
||||||
client = boto3.client('glue', region_name='us-east-1')
|
client = boto3.client('glue', region_name='us-east-1')
|
||||||
|
Loading…
Reference in New Issue
Block a user