From a4b62a9a003d42eb0878fb96cface6d3534aa4ba Mon Sep 17 00:00:00 2001 From: Mike Wilson Date: Fri, 15 Feb 2019 10:33:53 -0500 Subject: [PATCH] Adding support for deletion of vip, dns, and init services. Change-Id: I6b0f00aaf7e3c83e1a35ed1ecb4127f743aeba6d --- requires.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/requires.py b/requires.py index da5b740..c3795a6 100644 --- a/requires.py +++ b/requires.py @@ -12,6 +12,7 @@ # limitations under the License. import json +import hashlib import relations.hacluster.common from charms.reactive import hook @@ -158,6 +159,19 @@ class HAClusterRequires(RelationBase): self.set_local(resources=resources) + def remove_vip(self, name, vip, iface=None): + """Remove a virtual IP + + :param name: string - Name of service + :param vip: string - Virtual IP + :param iface: string - Network interface vip bound to + """ + if iface: + nic_name = iface + else: + nic_name = hashlib.sha1(vip.encode('UTF-8')).hexdigest()[:7] + self.delete_resource('res_{}_{}_vip'.format(name, nic_name)) + def add_init_service(self, name, service, clone=True): """Add a InitService object for haproxy to self.resources @@ -174,6 +188,17 @@ class HAClusterRequires(RelationBase): relations.hacluster.common.InitService(name, service, clone)) self.set_local(resources=resources) + def remove_init_service(self, name, service): + """Remove an init service + + :param name: string - Name of service + :param service: string - Name of service used in init system + """ + res_key = 'res_{}_{}'.format( + name.replace('-', '_'), + service.replace('-', '_')) + self.delete_resource(res_key) + def add_dnsha(self, name, ip, fqdn, endpoint_type): """Add a DNS entry to self.resources @@ -205,6 +230,18 @@ class HAClusterRequires(RelationBase): self.set_local(resources=resources) + def remove_dnsha(self, name, endpoint_type): + """Remove a DNS entry + + :param name: string - Name of service + :param endpoint_type: string - Public, private, internal etc + :returns: None + """ + res_key = 'res_{}_{}_hostname'.format( + self.service_name.replace('-', '_'), + self.endpoint_type) + self.delete_resource(res_key) + def get_remote_all(self, key, default=None): """Return a list of all values presented by remote units for key""" values = []