コード例 #1
0
 def audit_lb_pools(self):
     for hm_id, config_data, driver_data in self._object_db.health_monitor_list():
         if HealthMonitorSM.get(hm_id):
             continue
         hm = config_data
         if not hasattr(hm, 'provider'):
             continue
         driver = self._get_driver_for_provider(hm['provider'])
         pools = set()
         for i in hm['pools'] or []:
             pools.add(i['pool_id'])
         try:
             for pool in pools:
                 driver.delete_health_monitor(hm, pool)
         except Exception:
             pass
         self._object_db.healthmonitor_remove(hm_id)
     for lb_id, config_data, driver_data in self._object_db.loadbalancer_list():
         if LoadbalancerSM.get(lb_id):
             continue
         # Delete the lb from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_loadbalancer(config_data)
         self._object_db.loadbalancer_remove(lb_id)
         self._delete_driver_for_loadbalancer(lb_id)
     for pool_id, config_data, driver_data in self._object_db.pool_list():
         if LoadbalancerPoolSM.get(pool_id):
             continue
         # Delete the pool from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_pool(config_data)
         self._object_db.pool_remove(pool_id)
         self._delete_driver_for_pool(pool_id)
コード例 #2
0
 def audit_lb_pools(self):
     for hm_id, config_data, driver_data in self._object_db.health_monitor_list(
     ):
         if HealthMonitorSM.get(hm_id):
             continue
         hm = config_data
         driver = self._get_driver_for_provider(hm['provider'])
         pools = set()
         for i in hm['pools'] or []:
             pools.add(i['pool_id'])
         try:
             for pool in pools:
                 driver.delete_health_monitor(hm, pool)
         except Exception:
             pass
         self._object_db.healthmonitor_remove(hm_id)
     for lb_id, config_data, driver_data in self._object_db.loadbalancer_list(
     ):
         if LoadbalancerSM.get(lb_id):
             continue
         # Delete the lb from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_loadbalancer(config_data)
         self._object_db.loadbalancer_remove(lb_id)
         self._delete_driver_for_loadbalancer(lb_id)
     for pool_id, config_data, driver_data in self._object_db.pool_list():
         if LoadbalancerPoolSM.get(pool_id):
             continue
         # Delete the pool from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_pool(config_data)
         self._object_db.pool_remove(pool_id)
         self._delete_driver_for_pool(pool_id)
コード例 #3
0
 def _get_driver_for_loadbalancer(self, lb_id, provider=None):
     if lb_id in self._loadbalancer_driver:
         return self._loadbalancer_driver[lb_id]
     if not provider:
         lb = LoadbalancerSM.get(lb_id)
         provider = lb.provider
     if provider:
         driver = self._get_driver_for_provider(provider)
         self._loadbalancer_driver[lb_id] = driver
         return driver
     return self._loadbalancer_driver[self._default_provider]
コード例 #4
0
 def _get_driver_for_loadbalancer(self, lb_id, provider=None):
     if lb_id in self._loadbalancer_driver:
         return self._loadbalancer_driver[lb_id]
     if not provider:
         lb = LoadbalancerSM.get(lb_id)
         provider = lb.provider
     if provider:
         driver = self._get_driver_for_provider(provider)
         self._loadbalancer_driver[lb_id] = driver
         return driver
     return self._loadbalancer_driver[self._default_provider]
コード例 #5
0
 def _send_lb_config_uve(self, lb_id, deleted):
     lb = LoadbalancerSM.get(lb_id)
     if not lb:
         return
     sandesh = self._svc_mon.logger._sandesh
     if deleted == True:
         uve_lb = UveLoadbalancerConfig(name=lb.uuid, deleted=True)
         uve_lb.listener = {}
         uve_lb.pool = {}
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb,
                                                sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
         return
     uve_lb = UveLoadbalancerConfig()
     uve_lb.name = lb.uuid
     uve_lb.listener = {}
     uve_lb.pool = {}
     pool_found = False
     for ll_id in lb.loadbalancer_listeners:
         ll = LoadbalancerListenerSM.get(ll_id)
         if not ll:
             continue
         if not ll.params['admin_state']:
             continue
         ll_uuid = ll.uuid
         pools = []
         pool = LoadbalancerPoolSM.get(ll.loadbalancer_pool)
         if pool and pool.params['admin_state']:
             pools.append(pool.uuid)
             uve_lb_listener = LoadbalancerConfig()
             uve_lb_listener.pool_uuid = pools
             uve_lb.listener[ll_uuid] = uve_lb_listener
             pool_uuid = pool.uuid
             pool_found = True
             members = []
             uve_lb_pool = LoadbalancerConfig()
             for member_id in pool.members:
                 member = LoadbalancerMemberSM.get(member_id)
                 members.append(member.uuid)
             uve_lb_pool.member_uuid = members
             uve_lb.pool[pool_uuid] = uve_lb_pool
     if pool_found == True:
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb,
                                                sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
     else:
         uve_lb = UveLoadbalancerConfig(name=lb.uuid, deleted=True)
         uve_lb.listener = {}
         uve_lb.pool = {}
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb,
                                                sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
     return
コード例 #6
0
 def _send_lb_config_uve(self, lb_id, deleted):
     lb = LoadbalancerSM.get(lb_id)
     if not lb:
         return
     sandesh = self._svc_mon.logger._sandesh
     if deleted == True:
         uve_lb = UveLoadbalancerConfig(name=lb.uuid, deleted=True)
         uve_lb.listener = {}
         uve_lb.pool = {}
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb, sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
         return
     uve_lb = UveLoadbalancerConfig()
     uve_lb.name = lb.uuid
     uve_lb.listener = {}
     uve_lb.pool = {}
     pool_found = False
     for ll_id in lb.loadbalancer_listeners:
         ll = LoadbalancerListenerSM.get(ll_id)
         if not ll:
             continue
         if not ll.params['admin_state']:
             continue
         ll_uuid = ll.uuid
         pools = []
         pool =  LoadbalancerPoolSM.get(ll.loadbalancer_pool)
         if pool and pool.params['admin_state']:
             pools.append(pool.uuid)
             uve_lb_listener = LoadbalancerConfig()
             uve_lb_listener.pool_uuid = pools
             uve_lb.listener[ll_uuid] = uve_lb_listener
             pool_uuid = pool.uuid
             pool_found = True
             members = []
             uve_lb_pool = LoadbalancerConfig()
             for member_id in pool.members:
                 member = LoadbalancerMemberSM.get(member_id)
                 members.append(member.uuid)
             uve_lb_pool.member_uuid = members
             uve_lb.pool[pool_uuid] = uve_lb_pool
     if pool_found == True:
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb, sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
     else:
         uve_lb = UveLoadbalancerConfig(name=lb.uuid, deleted=True)
         uve_lb.listener = {}
         uve_lb.pool = {}
         uve_trace = UveLoadbalancerConfigTrace(data=uve_lb, sandesh=sandesh)
         uve_trace.send(sandesh=sandesh)
     return
コード例 #7
0
    def _get_vip_vmi(self, si):
        lb = LoadbalancerSM.get(si.loadbalancer)
        if lb:
            vmi_id = lb.virtual_machine_interface
            vmi = VirtualMachineInterfaceSM.get(vmi_id)
            return vmi

        pool = LoadbalancerPoolSM.get(si.loadbalancer_pool)
        if pool:
            vip = VirtualIpSM.get(pool.virtual_ip)
            if vip:
                vmi_id = vip.virtual_machine_interface
                vmi = VirtualMachineInterfaceSM.get(vmi_id)
                return vmi

        return None
コード例 #8
0
    def _get_vip_vmi(self, si):
        lb = LoadbalancerSM.get(si.loadbalancer)
        if lb:
            vmi_id = lb.virtual_machine_interface
            vmi = VirtualMachineInterfaceSM.get(vmi_id)
            return vmi

        pool = LoadbalancerPoolSM.get(si.loadbalancer_pool)
        if pool:
            vip = VirtualIpSM.get(pool.virtual_ip)
            if vip:
                vmi_id = vip.virtual_machine_interface
                vmi = VirtualMachineInterfaceSM.get(vmi_id)
                return vmi

        return None
コード例 #9
0
 def audit_lb_pools(self):
     for lb_id, config_data, driver_data in self._object_db.loadbalancer_list():
         if LoadbalancerSM.get(lb_id):
             continue
         # Delete the lb from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_loadbalancer(config_data)
         self._object_db.loadbalancer_remove(lb_id)
         self._delete_driver_for_loadbalancer(lb_id)
     for pool_id, config_data, driver_data in self._object_db.pool_list():
         if LoadbalancerPoolSM.get(pool_id):
             continue
         # Delete the pool from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_pool(config_data)
         self._object_db.pool_remove(pool_id)
         self._delete_driver_for_pool(pool_id)
コード例 #10
0
 def audit_lb_pools(self):
     for lb_id, config_data, driver_data in self._cassandra.loadbalancer_list():
         if LoadbalancerSM.get(lb_id):
             continue
         # Delete the lb from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_loadbalancer(config_data)
         self._cassandra.loadbalancer_remove(lb_id)
         self._delete_driver_for_loadbalancer(lb_id)
     for pool_id, config_data, driver_data in self._cassandra.pool_list():
         if LoadbalancerPoolSM.get(pool_id):
             continue
         # Delete the pool from the driver
         driver = self._get_driver_for_provider(config_data['provider'])
         driver.delete_pool(config_data)
         self._cassandra.pool_remove(pool_id)
         self._delete_driver_for_pool(pool_id)
コード例 #11
0
    def _get_vip_vmi(self, si):
        pool = LoadbalancerPoolSM.get(si.loadbalancer_pool)
        if not pool:
            return None

        listener = LoadbalancerListenerSM.get(pool.loadbalancer_listener)
        if listener:
            lb = LoadbalancerSM.get(listener.loadbalancer)
            vmi_id = lb.virtual_machine_interface
            vmi = VirtualMachineInterfaceSM.get(vmi_id)
            return vmi

        vip = VirtualIpSM.get(pool.virtual_ip)
        if vip:
            vmi_id = vip.virtual_machine_interface
            vmi = VirtualMachineInterfaceSM.get(vmi_id)
            return vmi

        return None
コード例 #12
0
    def listener_get_reqdict(self, listener):
        props = listener.params
        lb = LoadbalancerSM.get(listener.loadbalancer)

        res = {'id': listener.uuid,
               'tenant_id': listener.parent_uuid.replace('-', ''),
               'name': listener.display_name,
               'description': self._get_object_description(listener),
               'subnet_id': lb.params.get('subnet_id'),
               'address': lb.params.get('vip_address'),
               'port_id': lb.virtual_machine_interface,
               'protocol_port': props['protocol_port'],
               'protocol': props['protocol'],
               'pool_id': listener.loadbalancer_pool,
               'session_persistence': None,
               'admin_state_up': props['admin_state'],
               'status': self._get_object_status(listener)}

        return res