Commit e290ab9e by e0d Committed by Feanil Patel

incremental fixes

parent d0476bef
......@@ -11,6 +11,7 @@
tasks:
- name: Manage IAM Role and Profile
ec2_iam_role:
profile: "{{ profile }}"
state: "{{ state }}"
instance_profile_name: "{{ instance_profile_name }}"
role_name: "{{ role_name }}"
......@@ -40,6 +41,7 @@
- name: Manage ACLs
ec2_acl:
profile: "{{ profile }}"
name: "{{ item.name }}"
vpc_id: "{{ vpc_id }}"
state: "{{ state }}"
......@@ -79,6 +81,7 @@
- name: Manage Service Subnets
ec2_subnet:
profile: "{{ profile }}"
state: "{{ state }}"
region: "{{ aws_region }}"
name: "{{ item.name }}"
......@@ -177,6 +180,7 @@
- name: Manage metric alarms
ec2_metric_alarm:
profile: "{{ profile }}"
state: "{{ item.state }}"
region: "{{ aws_region }}"
name: "{{ item.name }}"
......
......@@ -225,7 +225,7 @@ class ElbManager(object):
def __init__(self, module, name, listeners=None, purge_listeners=None,
zones=None, purge_zones=None, security_group_ids=None,
health_check=None, subnets=None, purge_subnets=None,
scheme="internet-facing", region=None, **aws_connect_params):
scheme="internet-facing", tags=[], region=None, **aws_connect_params):
self.module = module
self.name = name
......@@ -238,6 +238,7 @@ class ElbManager(object):
self.subnets = subnets
self.purge_subnets = purge_subnets
self.scheme = scheme
self.tags = tags
self.aws_connect_params = aws_connect_params
self.region = region
......@@ -258,6 +259,7 @@ class ElbManager(object):
self._set_elb_listeners()
self._set_subnets()
self._set_health_check()
self.do_tags()
def ensure_gone(self):
"""Destroy the ELB"""
......@@ -541,6 +543,40 @@ class ElbManager(object):
return "%s:%s%s" % (protocol, self.health_check['ping_port'], path)
## can be removed if https://github.com/ansible/ansible/pull/9113 is merged upstream
def is_taggable(self, object):
from boto.ec2.ec2object import TaggedEC2Object
if not object or not issubclass(object.__class__, TaggedEC2Object):
return False
return True
def do_tags(self):
"""
General function for adding tags to objects that are subclasses
of boto.ec2.ec2object.TaggedEC2Object. Currently updates
existing tags, as the API overwrites them, but does not remove
orphans.
:param module:
:param object:
:param tags:
"""
dry_run = True if self.module.check_mode else False
if (self.is_taggable(self.elb)):
tag_dict = {}
for tag in self.tags:
tag_dict[tag['key']] = tag['value']
self.elb.add_tags(tag_dict, dry_run)
else:
pass
#self.module.fail_json(msg="ELB object is not a subclass of TaggedEC2Object")
## end can be removed
def main():
argument_spec = ec2_argument_spec()
......@@ -555,7 +591,8 @@ def main():
health_check={'default': None, 'required': False, 'type': 'dict'},
subnets={'default': None, 'required': False, 'type': 'list'},
purge_subnets={'default': False, 'required': False, 'type': 'bool'},
scheme={'default': 'internet-facing', 'required': False}
scheme={'default': 'internet-facing', 'required': False},
tags={'default': None, 'required': False, 'type': 'list'}
)
)
......@@ -578,6 +615,7 @@ def main():
subnets = module.params['subnets']
purge_subnets = module.params['purge_subnets']
scheme = module.params['scheme']
tags = module.params['tags']
if state == 'present' and not listeners:
module.fail_json(msg="At least one port is required for ELB creation")
......@@ -588,7 +626,7 @@ def main():
elb_man = ElbManager(module, name, listeners, purge_listeners, zones,
purge_zones, security_group_ids, health_check,
subnets, purge_subnets,
scheme, region=region, **aws_connect_params)
scheme, tags, region=region, **aws_connect_params)
if state == 'present':
elb_man.ensure_ok()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment