mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
INFRA-5461 - fix a couple of smallish bugs in boto_elb modules
This commit is contained in:
parent
2d05aa0db1
commit
18b8fc8cad
2 changed files with 49 additions and 43 deletions
|
@ -49,6 +49,7 @@ from __future__ import absolute_import
|
|||
# Import Python libs
|
||||
import logging
|
||||
import json
|
||||
import time
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
@ -161,48 +162,53 @@ def get_elb_config(name, region=None, key=None, keyid=None, profile=None):
|
|||
'''
|
||||
conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
|
||||
|
||||
try:
|
||||
lb = conn.get_all_load_balancers(load_balancer_names=[name])
|
||||
lb = lb[0]
|
||||
ret = {}
|
||||
ret['availability_zones'] = lb.availability_zones
|
||||
listeners = []
|
||||
for _listener in lb.listeners:
|
||||
listener_dict = {}
|
||||
listener_dict['elb_port'] = _listener.load_balancer_port
|
||||
listener_dict['elb_protocol'] = _listener.protocol
|
||||
listener_dict['instance_port'] = _listener.instance_port
|
||||
listener_dict['instance_protocol'] = _listener.instance_protocol
|
||||
listener_dict['policies'] = _listener.policy_names
|
||||
if _listener.ssl_certificate_id:
|
||||
listener_dict['certificate'] = _listener.ssl_certificate_id
|
||||
listeners.append(listener_dict)
|
||||
ret['listeners'] = listeners
|
||||
backends = []
|
||||
for _backend in lb.backends:
|
||||
bs_dict = {}
|
||||
bs_dict['instance_port'] = _backend.instance_port
|
||||
bs_dict['policies'] = [p.policy_name for p in _backend.policies]
|
||||
backends.append(bs_dict)
|
||||
ret['backends'] = backends
|
||||
ret['subnets'] = lb.subnets
|
||||
ret['security_groups'] = lb.security_groups
|
||||
ret['scheme'] = lb.scheme
|
||||
ret['dns_name'] = lb.dns_name
|
||||
ret['tags'] = _get_all_tags(conn, name)
|
||||
lb_policy_lists = [
|
||||
lb.policies.app_cookie_stickiness_policies,
|
||||
lb.policies.lb_cookie_stickiness_policies,
|
||||
lb.policies.other_policies
|
||||
]
|
||||
policies = []
|
||||
for policy_list in lb_policy_lists:
|
||||
policies += [p.policy_name for p in policy_list]
|
||||
ret['policies'] = policies
|
||||
return ret
|
||||
except boto.exception.BotoServerError as error:
|
||||
log.debug(error)
|
||||
return {}
|
||||
while True:
|
||||
try:
|
||||
lb = conn.get_all_load_balancers(load_balancer_names=[name])
|
||||
lb = lb[0]
|
||||
ret = {}
|
||||
ret['availability_zones'] = lb.availability_zones
|
||||
listeners = []
|
||||
for _listener in lb.listeners:
|
||||
listener_dict = {}
|
||||
listener_dict['elb_port'] = _listener.load_balancer_port
|
||||
listener_dict['elb_protocol'] = _listener.protocol
|
||||
listener_dict['instance_port'] = _listener.instance_port
|
||||
listener_dict['instance_protocol'] = _listener.instance_protocol
|
||||
listener_dict['policies'] = _listener.policy_names
|
||||
if _listener.ssl_certificate_id:
|
||||
listener_dict['certificate'] = _listener.ssl_certificate_id
|
||||
listeners.append(listener_dict)
|
||||
ret['listeners'] = listeners
|
||||
backends = []
|
||||
for _backend in lb.backends:
|
||||
bs_dict = {}
|
||||
bs_dict['instance_port'] = _backend.instance_port
|
||||
bs_dict['policies'] = [p.policy_name for p in _backend.policies]
|
||||
backends.append(bs_dict)
|
||||
ret['backends'] = backends
|
||||
ret['subnets'] = lb.subnets
|
||||
ret['security_groups'] = lb.security_groups
|
||||
ret['scheme'] = lb.scheme
|
||||
ret['dns_name'] = lb.dns_name
|
||||
ret['tags'] = _get_all_tags(conn, name)
|
||||
lb_policy_lists = [
|
||||
lb.policies.app_cookie_stickiness_policies,
|
||||
lb.policies.lb_cookie_stickiness_policies,
|
||||
lb.policies.other_policies
|
||||
]
|
||||
policies = []
|
||||
for policy_list in lb_policy_lists:
|
||||
policies += [p.policy_name for p in policy_list]
|
||||
ret['policies'] = policies
|
||||
return ret
|
||||
except boto.exception.BotoServerError as error:
|
||||
if getattr(error, 'error_code', '') == 'Throttling':
|
||||
log.info('Throttled by AWS API, will retry in 5 seconds.')
|
||||
time.sleep(5)
|
||||
continue
|
||||
log.error(error)
|
||||
return {}
|
||||
|
||||
|
||||
def listener_dict_to_tuple(listener):
|
||||
|
|
|
@ -1312,7 +1312,7 @@ def _tags_present(name, tags, region, key, keyid, profile):
|
|||
tags_to_add = tags
|
||||
tags_to_update = {}
|
||||
tags_to_remove = []
|
||||
if lb['tags']:
|
||||
if lb.get('tags'):
|
||||
for _tag in lb['tags']:
|
||||
if _tag not in tags.keys():
|
||||
if _tag not in tags_to_remove:
|
||||
|
|
Loading…
Add table
Reference in a new issue