Exemplo n.º 1
0
 def add_remove_services(self, grpname, ip_ports):
     """ Reconfigures service group membership to be the
     same as supplied list of ip and port
     """
     to_add = ip_ports
     to_remove = []
     try:
         bindings = servicegroup_servicegroupmember_binding.get(
             self.ns_session, grpname)
         existing = [(b.ip, b.port) for b in bindings if b.port != 0]
         to_remove = list(set(existing) - set(ip_ports))
         to_add = list(set(ip_ports) - set(existing))
         to_leave = list(set(ip_ports) & set(existing))
     except nitro_exception:
         pass  # no bindings
     for s in to_remove:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Unbinding %s:%s from service group %s " % (s[0], s[1], grpname))
         servicegroup_servicegroupmember_binding.delete(self.ns_session,
                                                        binding)
     for s in to_add:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Binding %s:%s from service group %s " % (s[0], s[1], grpname))
         servicegroup_servicegroupmember_binding.add(self.ns_session,
                                                     binding)
     for s in to_leave:
         logger.info("Service %s:%s is already bound to  service group %s" % (s[0], s[1], grpname))
Exemplo n.º 2
0
 def _configure_services(self, grpname, srvrs):
     to_add = srvrs
     to_remove = []
     try:
         bindings = servicegroup_servicegroupmember_binding.get(
             self.ns_session, grpname)
         existing = [(b.ip, b.port) for b in bindings if b.port != 0]
         to_remove = list(set(existing) - set(srvrs))
         to_add = list(set(srvrs) - set(existing))
         to_leave = list(set(srvrs) & set(existing))
     except nitro_exception as e:
         pass  # no bindings
     for s in to_remove:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Unbinding %s:%s from service group %s " % (s[0], s[1],
                     grpname))
         servicegroup_servicegroupmember_binding.delete(self.ns_session,
                                                        binding)
     for s in to_add:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Binding %s:%s from service group %s " %
                     (s[0], s[1], grpname))
         servicegroup_servicegroupmember_binding.add(self.ns_session,
                                                     binding)
     for s in to_leave:
         logger.info("%s:%s is already bound to  service group %s"
                     % (s[0], s[1], grpname))
Exemplo n.º 3
0
 def _configure_services(self, grpname, srvrs):
     to_add = srvrs
     to_remove = []
     try:
         bindings = servicegroup_servicegroupmember_binding.get(
             self.ns_session, grpname)
         existing = [(b.ip, b.port) for b in bindings if b.port != 0]
         to_remove = list(set(existing) - set(srvrs))
         to_add = list(set(srvrs) - set(existing))
         to_leave = list(set(srvrs) & set(existing))
     except nitro_exception as e:
         pass  # no bindings
     for s in to_remove:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Unbinding %s:%s from service group %s " %
                     (s[0], s[1], grpname))
         servicegroup_servicegroupmember_binding.delete(
             self.ns_session, binding)
     for s in to_add:
         binding = servicegroup_servicegroupmember_binding()
         binding.servicegroupname = grpname
         binding.ip = s[0]
         binding.port = s[1]
         logger.info("Binding %s:%s from service group %s " %
                     (s[0], s[1], grpname))
         servicegroup_servicegroupmember_binding.add(
             self.ns_session, binding)
     for s in to_leave:
         logger.info("%s:%s is already bound to  service group %s" %
                     (s[0], s[1], grpname))
Exemplo n.º 4
0
    def servicegroup_servicegroupmember_binding(self, action, fqdns, port,
                                                svcGrp):
        '''Function to bind (add) or unbind (delete) server(s) to a servicegroup.

	@param action string: add or delete
	@param fqdns list: list of FQDNs
	@param port int: Destination port for server
	@param svcGrp string: name of service group to bind servers with services to.
'''

        listOfObjs = []

        try:
            for i in range(len(fqdns)):
                listOfObjs.append(servicegroup_servicegroupmember_binding())
                listOfObjs[i].servicegroupname = svcGrp
                listOfObjs[i].servername = fqdns[i]
                listOfObjs[i].port = port

            if action == 'add':
                servicegroup_servicegroupmember_binding.add(
                    self._sess, listOfObjs)
            elif action == 'delete':
                servicegroup_servicegroupmember_binding.delete(
                    self._sess, listOfObjs)
        except nitro_exception as e:
            print('Exception::errorcode=' + str(e.errorcode) + ',message=' +
                  e.message)
        except Exception as e:
            print('Exception::message=' + str(e.args))
        else:
            return True

        return False
Exemplo n.º 5
0
    def unbind_svcgrp_svgrpmem(self, client):
        try:
            obj = [servicegroup_servicegroupmember_binding() for _ in range(2)]
            obj[0].servicegroupname = "sg1"
            obj[0].ip = "1.1.1.7"
            obj[0].port = 77

            obj[1].servicegroupname = "sg2"
            obj[1].ip = "1.1.1.8"
            obj[1].port = 78
            servicegroup_servicegroupmember_binding.delete(client, obj)
            print("unbind_svcgrp_svgrpmem - Done")
        except nitro_exception as e:
            print("Exception:: unbind_svcgrp_svgrpmem::rc=" + str(e.errorcode) + " , Message =" + e.message)
        except Exception as e:
            print("Exception:: unbind_svcgrp_svgrpmem::message=" + str(e.args))
def sync_service_members(client, module):
    log('sync_service_members')
    configured_service_members = get_configured_service_members(client, module)
    actual_service_members = get_actual_service_members(client, module)
    skip_add = []
    skip_delete = []

    # Find positions of identical service members
    for (configured_index,
         configured_service) in enumerate(configured_service_members):
        for (actual_index,
             actual_service) in enumerate(actual_service_members):
            if configured_service.has_equal_attributes(actual_service):
                skip_add.append(configured_index)
                skip_delete.append(actual_index)

    # Delete actual that are not identical to any configured
    for (actual_index, actual_service) in enumerate(actual_service_members):
        # Skip identical
        if actual_index in skip_delete:
            log('Skipping actual delete at index %s' % actual_index)
            continue

        # Fallthrouth to deletion
        if all([
                hasattr(actual_service, 'ip'),
                actual_service.ip is not None,
                hasattr(actual_service, 'servername'),
                actual_service.servername is not None,
        ]):
            actual_service.ip = None

        actual_service.servicegroupname = module.params['servicegroupname']
        servicegroup_servicegroupmember_binding.delete(client, actual_service)

    # Add configured that are not already present in actual
    for (configured_index,
         configured_service) in enumerate(configured_service_members):

        # Skip identical
        if configured_index in skip_add:
            log('Skipping configured add at index %s' % configured_index)
            continue

        # Fallthrough to addition
        configured_service.add()
Exemplo n.º 7
0
    def unbind_svcgrp_svgrpmem(self, client):
        try:
            obj = [servicegroup_servicegroupmember_binding() for _ in range(2)]
            obj[0].servicegroupname = "sg1"
            obj[0].ip = "1.1.1.7"
            obj[0].port = 77

            obj[1].servicegroupname = "sg2"
            obj[1].ip = "1.1.1.8"
            obj[1].port = 78
            servicegroup_servicegroupmember_binding.delete(client, obj)
            print("unbind_svcgrp_svgrpmem - Done")
        except nitro_exception as e:
            print("Exception:: unbind_svcgrp_svgrpmem::rc=" +
                  str(e.errorcode) + " , Message =" + e.message)
        except Exception as e:
            print("Exception:: unbind_svcgrp_svgrpmem::message=" + str(e.args))
    def delete_all_servicegroup_members():
        log('delete_all_servicegroup_members')
        if servicegroup_servicegroupmember_binding.count(
                client, module.params['servicegroupname']) == 0:
            return
        service_group_members = servicegroup_servicegroupmember_binding.get(
            client, module.params['servicegroupname'])
        log('len %s' % len(service_group_members))
        log('count %s' % servicegroup_servicegroupmember_binding.count(
            client, module.params['servicegroupname']))
        for member in service_group_members:
            log('%s' % dir(member))
            log('ip %s' % member.ip)
            log('servername %s' % member.servername)
            if all([
                    hasattr(member, 'ip'),
                    member.ip is not None,
                    hasattr(member, 'servername'),
                    member.servername is not None,
            ]):
                member.ip = None

            member.servicegroupname = module.params['servicegroupname']
            servicegroup_servicegroupmember_binding.delete(client, member)