Add broken DeleteTags implementation
diff --git a/ec2stack/controllers/default.py b/ec2stack/controllers/default.py
index 768d566..97293dd 100644
--- a/ec2stack/controllers/default.py
+++ b/ec2stack/controllers/default.py
@@ -45,10 +45,11 @@
security_groups.authenticate_security_group_ingress,
'CreateKeyPair': keypairs.create_keypair,
'CreateSecurityGroup': security_groups.create_security_group,
- 'CreateTag': tags.create_tags,
+ 'CreateTags': tags.create_tags,
'CreateVolume': volumes.create_volume,
'DeleteKeyPair': keypairs.delete_keypair,
'DeleteSecurityGroup': security_groups.delete_security_group,
+ 'DeleteTags': tags.delete_tags,
'DeleteVolume': volumes.delete_volume,
'DescribeAvailabilityZones': zones.describe_zones,
'DescribeImageAttribute': images.describe_image_attribute,
diff --git a/ec2stack/providers/cloudstack/tags.py b/ec2stack/providers/cloudstack/tags.py
index bd3ad99..6cbd512 100644
--- a/ec2stack/providers/cloudstack/tags.py
+++ b/ec2stack/providers/cloudstack/tags.py
@@ -4,8 +4,9 @@
"""This module contains functions for handling requests in relation to tags.
"""
-from ec2stack import helpers
-from ec2stack.providers import cloudstack
+from flask import current_app
+
+from ec2stack import helpers, errors
from ec2stack.providers.cloudstack import requester
@@ -27,19 +28,26 @@
@return: Response.
"""
+ key = helpers.get('Tag.1.Key')
+ value = helpers.get('Tag.1.Value')
+ resource_id = helpers.get('ResourceId.1')
+
+ if resource_id in current_app.config['RESOURCE_TYPE_MAP']:
+ resource_type = current_app.config['RESOURCE_TYPE_MAP'][resource_id]
+ else:
+ errors.invalid_request(
+ str(resource_id) +
+ " not found in configuration")
+
args = {
'command': 'createTags',
- 'name': helpers.get('ResourceId')
+ 'resourceIds': resource_id,
+ 'resourceType': resource_type,
+ 'tags[0].key': key,
+ 'tags[0].value': value
}
- keys = helpers.get_request_parameter_keys('Key')
- values = helpers.get_request_parameter_keys('value')
-
- for index in range(len(keys)):
- args['tags[' + index + '].key'] = keys[index]
- args['tags[' + index + '].value'] = values[index]
-
- response = requester.make_request(args)
+ response = requester.make_request_async(args)
response = response['createtagsresponse']
@@ -60,6 +68,52 @@
@helpers.authentication_required
+def delete_tags():
+ """
+ delete a tag.
+
+ @return: Response.
+ """
+ _delete_tag_request()
+ return _delete_tag_response()
+
+
+def _delete_tag_request():
+ """
+ Request to delete a tag.
+
+ @return: Response.
+ """
+ key = helpers.get('Tag.1.Key')
+ resource_id = helpers.get('ResourceId.1')
+
+ args = {
+ 'command': 'deleteTag',
+ 'resourceIds': resource_id,
+ 'tags[0].key': key
+ }
+
+ response = requester.make_request_async(args)
+
+ response = response['deletetagsresponse']
+
+ return response
+
+
+def _delete_tag_response():
+ """
+ Generates a response for a delete tag request.
+
+ @return: Response.
+ """
+ return {
+ 'template_name_or_list': 'status.xml',
+ 'response_type': 'DeleteTagsResponse',
+ 'return': 'true'
+ }
+
+
+@helpers.authentication_required
def describe_tags():
"""
Describe all tags.
@@ -68,9 +122,6 @@
"""
args = {'command': 'listTags'}
response = requester.make_request(args)
- response = cloudstack.describe_item(
- args, 'tag', {}, 'TagId'
- )
return _describe_tags_response(
response