41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
# may not use this file except in compliance with the License. A copy of
|
|
# the License is located at
|
|
#
|
|
# http://aws.amazon.com/apache2.0/
|
|
#
|
|
# or in the "license" file accompanying this file. This file is
|
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
# ANY KIND, either express or implied. See the License for the specific
|
|
# language governing permissions and limitations under the License.
|
|
|
|
|
|
def inject_create_tags(event_name, class_attributes, **kwargs):
|
|
"""This injects a custom create_tags method onto the ec2 service resource
|
|
|
|
This is needed because the resource model is not able to express
|
|
creating multiple tag resources based on the fact you can apply a set
|
|
of tags to multiple ec2 resources.
|
|
"""
|
|
class_attributes['create_tags'] = create_tags
|
|
|
|
|
|
def create_tags(self, **kwargs):
|
|
# Call the client method
|
|
self.meta.client.create_tags(**kwargs)
|
|
resources = kwargs.get('Resources', [])
|
|
tags = kwargs.get('Tags', [])
|
|
tag_resources = []
|
|
|
|
# Generate all of the tag resources that just were created with the
|
|
# preceding client call.
|
|
for resource in resources:
|
|
for tag in tags:
|
|
# Add each tag from the tag set for each resource to the list
|
|
# that is returned by the method.
|
|
tag_resource = self.Tag(resource, tag['Key'], tag['Value'])
|
|
tag_resources.append(tag_resource)
|
|
return tag_resources
|