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 = []