diff options
author | Steve Gargan <steve.gargan@intercom.io> | 2016-11-08 09:40:15 +0100 |
---|---|---|
committer | Rene Moser <mail@renemoser.net> | 2016-11-08 09:50:06 +0100 |
commit | 0270abe944c3ecd54bdf08012f57de115bde7896 (patch) | |
tree | e93d37ba58e913787f2cb41186ee33df135176d5 | |
parent | 1ad49cefea94b2e8a8bade00b5ce3bec3d0cd471 (diff) | |
download | ansible-modules-extras-0270abe944c3ecd54bdf08012f57de115bde7896.tar.gz |
allow services to be removed by name as well as id (#3372)
(cherry picked from commit 328efedfe63ec30f0a8307d4532ac0ef06367c72)
-rw-r--r-- | clustering/consul.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clustering/consul.py b/clustering/consul.py index a034e167..f32e7a6a 100644 --- a/clustering/consul.py +++ b/clustering/consul.py @@ -298,7 +298,7 @@ def add_service(module, service): changed = False consul_api = get_consul_api(module) - existing = get_service_by_id(consul_api, service.id) + existing = get_service_by_id_or_name(consul_api, service.id) # there is no way to retrieve the details of checks so if a check is present # in the service it must be re-registered @@ -306,7 +306,7 @@ def add_service(module, service): service.register(consul_api) # check that it registered correctly - registered = get_service_by_id(consul_api, service.id) + registered = get_service_by_id_or_name(consul_api, service.id) if registered: result = registered changed = True @@ -322,7 +322,7 @@ def add_service(module, service): def remove_service(module, service_id): ''' deregister a service from the given agent using its service id ''' consul_api = get_consul_api(module) - service = get_service_by_id(consul_api, service_id) + service = get_service_by_id_or_name(consul_api, service_id) if service: consul_api.agent.service.deregister(service_id) module.exit_json(changed=True, id=service_id) @@ -338,10 +338,10 @@ def get_consul_api(module, token=None): token=module.params.get('token')) -def get_service_by_id(consul_api, service_id): +def get_service_by_id_or_name(consul_api, service_id_or_name): ''' iterate the registered services and find one with the given id ''' for name, service in consul_api.agent.services().iteritems(): - if service['ID'] == service_id: + if service['ID'] == service_id_or_name or service['Service'] == service_id_or_name: return ConsulService(loaded=service) |