Ejemplo n.º 1
0
    def setUp(self):
        self.vnc_lib = mock.Mock()
        self.cassandra = mock.Mock()
        self.logger = mock.Mock()
        self.svc = mock.Mock()

        mocked_gsc = mock.MagicMock()
        mocked_gsc.uuid = 'fake-gsc-uuid'
        self.vnc_lib.service_appliance_set_create.return_value = "opencontrail"
        self.vnc_lib.global_system_config_read.return_value = mocked_gsc
        def no_id_side_effect(fq_name):
            raise NoIdError("xxx")
        self.vnc_lib.service_appliance_set_read = mock.Mock(side_effect=no_id_side_effect)
        conf_parser = argparse.ArgumentParser(add_help=False)
        config = ConfigParser.SafeConfigParser({'admin_token': None})
        self._args, remaining_argv = conf_parser.parse_known_args()
        self._args.config_sections = config

        def sas_read_side_effect(obj_type, uuids):
            if obj_type == 'service_appliance_set':
                return (True, [{
                   'fq_name': ['default-global-system-config', 'opencontrail'],
                   'service_appliance_driver': 'svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver'
                   }])
            return (False, None)
        self.cassandra.read = mock.Mock(
            side_effect=sas_read_side_effect)
        DBBase.init(self.svc, None, self.cassandra)
        self.lb_agent = loadbalancer_agent.LoadbalancerAgent(self.svc, self.vnc_lib,
                                               self.cassandra, self._args)
        self.svc.loadbalancer_agent = self.lb_agent
        sas = config_db.ServiceApplianceSetSM.get('opencontrail')
        self.assertEqual(sas.driver, "svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver")
        sas.add()
        self.assertIsNotNone(self.lb_agent._loadbalancer_driver['opencontrail'])
Ejemplo n.º 2
0
    def setUp(self):
        self.vnc_lib = mock.Mock()
        self.cassandra = mock.Mock()
        self.logger = mock.Mock()
        self.svc = mock.Mock()

        mocked_gsc = mock.MagicMock()
        mocked_gsc.uuid = 'fake-gsc-uuid'
        self.vnc_lib.global_system_config_read.return_value = mocked_gsc

        def mock_kv_retrieve(subnet_id):
            if subnet_id == "pool_subnet_id":
                return "fake-pool-vn 40.1.1.0/24"
            elif subnet_id == "vip_subnet_id":
                return "fake-vip-vn 1.1.1.0/24"
            self.assertTrue(False)

        #end
        self.vnc_lib.kv_retrieve = mock.Mock(side_effect=mock_kv_retrieve)
        self.vnc_lib.service_appliance_set_create.return_value = "opencontrail"

        self._mock_bigip_interfaces = None
        self._mock_BigIp = None

        self._db = {}

        def read_db(id):
            if id in self._db:
                return self._db[id].get('driver_info', None)

        def put_db(id, data):
            from copy import deepcopy
            self._db[id] = {'driver_info': deepcopy(data)}

        def remove_db(id, data=None):
            if data is None:
                del self._db[id]
                return
            if self._db[id][data[0]]:
                del self._db[id][data[0]]

        self.cassandra.pool_driver_info_get = mock.Mock(side_effect=read_db)
        self.cassandra.pool_driver_info_insert = mock.Mock(side_effect=put_db)
        self.cassandra.pool_remove = mock.Mock(side_effect=remove_db)

        conf_parser = argparse.ArgumentParser(add_help=False)
        config = ConfigParser.SafeConfigParser({'admin_token': None})
        self._args, remaining_argv = conf_parser.parse_known_args()
        self._args.config_sections = config

        def sas_read_side_effect(obj_type, uuids, **kwargs):
            if obj_type == 'service_appliance_set':
                return (True, [{
                    'fq_name':
                    ['default-global-system-config', 'opencontrail'],
                    'service_appliance_driver':
                    'svc_monitor.services.loadbalancer\
.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver'
                }])
            return (False, None)

        DBBase.init(self.svc, None, self.cassandra)
        config_db.ServiceApplianceSetSM._cassandra.object_read = \
                         mock.Mock(side_effect=sas_read_side_effect)

        # return NoIdError exception for first query
        def no_id_side_effect(fq_name):
            raise NoIdError("xxx")
        self.vnc_lib.service_appliance_set_read = \
            mock.Mock(side_effect=no_id_side_effect)

        self.lb_agent = loadbalancer_agent.LoadbalancerAgent(
            self.svc, self.vnc_lib, self.cassandra, self._args)
        self.svc.loadbalancer_agent = self.lb_agent
        sas = config_db.ServiceApplianceSetSM.get('opencontrail')
        self.assertEqual(
            sas.driver,
            "svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.\
OpencontrailLoadbalancerDriver")
        sas.add()
        DBBase.init(self.svc, None, self.cassandra)
        config_db.ServiceApplianceSetSM._cassandra.object_read = \
                         mock.Mock(side_effect=sas_read_side_effect)

        import sys
        sys.modules['f5'] = mock.Mock()
        sys.modules['f5.bigip'] = mock.Mock()
        self.create_f5_service_appliance_set()
Ejemplo n.º 3
0
    def setUp(self):
        self.vnc_lib = mock.Mock()
        self.cassandra = mock.Mock()
        self.logger = mock.Mock()
        self.svc = mock.Mock()
        self._si_pool = {}

        mocked_gsc = mock.MagicMock()
        mocked_gsc.uuid = 'fake-gsc-uuid'
        self.vnc_lib.global_system_config_read.return_value = mocked_gsc

        def no_id_side_effect(fq_name):
            raise NoIdError("xxx")

        # Return NoIdError while si is read for first time
        self.vnc_lib.service_instance_read = \
            mock.Mock(side_effect=no_id_side_effect)
        self.vnc_lib.kv_retrieve.return_value = "fake-pool-vn 40.1.1.0/24"
        self.vnc_lib.service_appliance_set_create.return_value = "opencontrail"
        self.vnc_lib.service_appliance_set_read = \
            mock.Mock(side_effect=no_id_side_effect)

        self._store_si = {}

        def read_si(obj_type, uuid):
            return (True, [self.obj_to_dict(self._store_si[uuid[0]])])

        def store_si_create(obj):
            config_db.ServiceInstanceSM._cassandra.object_read = \
                mock.Mock(side_effect=read_si)
            obj.uuid = 'pool-si'
            self._store_si[obj.uuid] = obj

        def update_si_side_effect(obj):
            self._store_si[obj.uuid] = obj

        self.vnc_lib.service_instance_create = \
            mock.Mock(side_effect=store_si_create)

        self.vnc_lib.service_instance_update = \
            mock.Mock(side_effect=update_si_side_effect)

        self._db = {}

        def read_db(id):
            if id in self._db:
                return self._db[id]

        def put_db(id, data):
            self._db[id] = data

        def remove_db(id, data=None):
            if data is None:
                del self._db[id]
                return
            if self._db[id][data[0]]:
                del self._db[id][data[0]]

        self.cassandra.pool_driver_info_get = mock.Mock(side_effect=read_db)
        self.cassandra.pool_driver_info_insert = mock.Mock(side_effect=put_db)
        self.cassandra.pool_remove = mock.Mock(side_effect=remove_db)

        def validate_pool_update(obj_type, obj_uuid, ref_type, ref_uuid,
                                 ref_fq_name, operation):
            self.assertEqual(obj_type, "loadbalancer-pool")
            self.assertEqual(ref_type, "service-instance")
            pool = config_db.LoadbalancerPoolSM.get(obj_uuid)
            if operation is "ADD":
                si = config_db.ServiceInstanceSM.get(ref_uuid)
                self.assertIsNotNone(si)
                pool.service_instance = si.uuid
                si.loadbalancer_pool = pool.uuid
                self._si_pool[pool.uuid] = si.uuid
                self.assertEqual(si.uuid, "pool-si")
            elif operation is "DELETE":
                pool.service_instance = None
                del self._si_pool[pool.uuid]
            else:
                self.assertTrue(False)
            return

        self.vnc_lib.ref_update = mock.Mock(side_effect=validate_pool_update)

        conf_parser = argparse.ArgumentParser(add_help=False)
        config = ConfigParser.SafeConfigParser({'admin_token': None})
        self._args, remaining_argv = conf_parser.parse_known_args()
        self._args.config_sections = config

        def sas_read_side_effect(obj_type, uuids):
            if obj_type == 'service_appliance_set':
                return (True, [{
                    'fq_name':
                    ['default-global-system-config', 'opencontrail'],
                    'service_appliance_driver':
                    'svc_monitor.services.loadbalancer\
.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver'
                }])
            return (False, None)

        DBBase.init(self.svc, None, self.cassandra)
        config_db.ServiceApplianceSetSM._cassandra.object_read = \
                         mock.Mock(side_effect=sas_read_side_effect)

        self.lb_agent = loadbalancer_agent.LoadbalancerAgent(
            self.svc, self.vnc_lib, self.cassandra, self._args)
        self.svc.loadbalancer_agent = self.lb_agent
        sas = config_db.ServiceApplianceSetSM.get('opencontrail')
        self.assertEqual(
            sas.driver,
            "svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.\
OpencontrailLoadbalancerDriver")
        sas.add()
        self.assertIsNotNone(
            self.lb_agent._loadbalancer_driver['opencontrail'])
        mock_st_obj = self.create_lb_st()
    def setUp(self):
        self.vnc_lib = mock.Mock()
        self.cassandra = mock.Mock()
        self.logger = mock.Mock()
        self.svc = mock.Mock()
        self._db = {}

        def read_db(id):
            if id in self._db:
                return self._db[id]

        def put_db_config(id, data):
            if id not in self._db:
                self._db[id] = {}
            self._db[id]['config_info'] = data

        def put_db_driver(id, data):
            if id not in self._db:
                self._db[id] = {}
            self._db[id]['driver_info'] = data

        def remove_db(id, data=None):
            if data is None:
                del self._db[id]
                return
            if self._db[id]['driver_info'][data[0]]:
                del self._db[id]['driver_info'][data[0]]

        def list_pools():
            ret_list = []
            for each_entry_id, each_entry_data in self._db.iteritems() or []:
                config_info_obj_dict = each_entry_data['config_info']
                driver_info_obj_dict = None
                if 'driver_info' in each_entry_data:
                    driver_info_obj_dict = each_entry_data['driver_info']
                ret_list.append((each_entry_id, config_info_obj_dict, driver_info_obj_dict))
            return ret_list

        def list_loadbalancers():
            res_list = []
            return res_list

        def list_health_monitors():
            res_list = []
            return res_list

        self.cassandra.loadbalancer_list = mock.Mock(side_effect=list_loadbalancers)
        self.cassandra.pool_list = mock.Mock(side_effect=list_pools)
        self.cassandra.pool_remove = mock.Mock(side_effect=remove_db)
        self.cassandra.pool_driver_info_get = mock.Mock(side_effect=read_db)
        self.cassandra.pool_driver_info_insert = mock.Mock(side_effect=put_db_driver)
        self.cassandra.pool_config_insert = mock.Mock(side_effect=put_db_config)
        self.cassandra.health_monitor_list = mock.Mock(side_effect=list_health_monitors)

        mocked_gsc = mock.MagicMock()
        mocked_gsc.uuid = 'fake-gsc-uuid'
        self.vnc_lib.service_appliance_set_create.return_value = "opencontrail"
        self.vnc_lib.global_system_config_read.return_value = mocked_gsc
        def no_id_side_effect(fq_name):
            raise NoIdError("xxx")
        self.vnc_lib.service_appliance_set_read = mock.Mock(side_effect=no_id_side_effect)
        conf_parser = argparse.ArgumentParser(add_help=False)
        config = ConfigParser.SafeConfigParser({'admin_token': None})
        self._args, remaining_argv = conf_parser.parse_known_args()
        self._args.config_sections = config

        def sas_read_side_effect(obj_type, uuids):
            if obj_type == 'service_appliance_set':
                return (True, [{
                   'fq_name': ['default-global-system-config', 'opencontrail'],
                   'service_appliance_driver': 'svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver'
                   }])
            return (False, None)
        self.cassandra.object_read = mock.Mock(
            side_effect=sas_read_side_effect)
        DBBase.init(self.svc, None, self.cassandra)
        self.lb_agent = loadbalancer_agent.LoadbalancerAgent(self.svc, self.vnc_lib,
                                               self.cassandra, self._args)
        self.svc.loadbalancer_agent = self.lb_agent
        sas = config_db.ServiceApplianceSetSM.get('opencontrail')
        self.assertEqual(sas.driver, "svc_monitor.services.loadbalancer.drivers.ha_proxy.driver.OpencontrailLoadbalancerDriver")
        sas.add()
        self.assertIsNotNone(self.lb_agent._loadbalancer_driver['opencontrail'])