Ejemplo n.º 1
0
    def parseParams(self, params):
        obj_dict = params.copy()
        nodes_list = obj_dict.pop('nodes', [])
        probes_list = obj_dict.get('healthMonitor', [])
        vips_list = obj_dict.get('virtualIps', [])
        stic = obj_dict.get('sessionPersistence', [])

        try:
            lb = obj_dict.pop('lb')
        except KeyError:
            lb_ref = db_api.loadbalancer_pack_extra(obj_dict)
        else:
            lb_ref = db_api.loadbalancer_pack_extra(obj_dict)
            lb_ref['id'] = lb['id']
            lb_ref['tenant_id'] = lb['tenant_id']
            lb_ref['created_at'] = lb['created_at']
            lb_ref['updated_at'] = lb['updated_at']

        lb_ref['status'] = lb_status.BUILD
        self.lb = lb_ref

        sf_ref = db_api.serverfarm_pack_extra({})
        self.sf = sf_ref
        self.sf._rservers = []
        self.sf._probes = []
        self.sf._sticky = []

        predictor_ref = db_api.predictor_pack_extra({})
        self.sf._predictor = predictor_ref

        """ Parse RServer nodes and attach them to SF """
        for node in nodes_list:
            rs_ref = db_api.server_pack_extra(node)
            # We need to check if there is already real server with the
            # same IP deployed
            try:
                parent_ref = db_api.server_get_by_address_on_device(self.conf,
                                                        rs_ref['address'],
                                                        lb_ref['device_id'])
            except exception.ServerNotFound:
                pass
            else:
                if parent_ref.get('address') != '':
                    rs_ref['parent_id'] = parent_ref['id']

            self.rs.append(rs_ref)
            self.sf._rservers.append(rs_ref)

        for pr in probes_list:
            probe_ref = db_api.probe_pack_extra(pr)
            self.probes.append(probe_ref)
            self.sf._probes.append(probe_ref)

        for vip in vips_list:
            vs_ref = db_api.virtualserver_pack_extra(vip)
            vs_ref['transport'] = lb_ref['extra'].get('transport')
            vs_ref['appProto'] = lb_ref['protocol']
            vs_ref['name'] = vs_ref['id']
            self.vips.append(vs_ref)
            self.vips.append(vs_ref)
 def test_server_get_by_address_on_device(self):
     lb_fake = get_fake_lb("1", "tenant1")
     lb_ref = db_api.loadbalancer_create(self.conf, lb_fake)
     sf_fake = get_fake_sf(lb_ref["id"])
     sf_ref = db_api.serverfarm_create(self.conf, sf_fake)
     server_fake = get_fake_server(sf_ref["id"], 1, "10.0.0.1")
     server_ref = db_api.server_create(self.conf, server_fake)
     server = db_api.server_get_by_address_on_device(self.conf, "10.0.0.1", "1")
     with self.assertRaises(exception.ServerNotFound) as cm:
         server = db_api.server_get_by_address_on_device(self.conf, "10.0.0.2", "1")
     expected = {"server_address": "10.0.0.2", "device_id": "1"}
     err = cm.exception
     self.assertEqual(err.kwargs, expected)
     with self.assertRaises(exception.ServerNotFound) as cm:
         server = db_api.server_get_by_address_on_device(self.conf, "10.0.0.1", "2")
     err = cm.exception
     expected = {"server_address": "10.0.0.1", "device_id": "2"}
     self.assertEqual(err.kwargs, expected)
Ejemplo n.º 3
0
 def test_server_get_by_address_on_device(self):
     lb_fake = get_fake_lb('1', 'tenant1')
     lb_ref = db_api.loadbalancer_create(self.conf, lb_fake)
     sf_fake = get_fake_sf(lb_ref['id'])
     sf_ref = db_api.serverfarm_create(self.conf, sf_fake)
     server_fake = get_fake_server(sf_ref['id'], 1, '10.0.0.1')
     server_ref = db_api.server_create(self.conf, server_fake)
     server = db_api.server_get_by_address_on_device(self.conf, '10.0.0.1',
                                                     '1')
     with self.assertRaises(exception.ServerNotFound) as cm:
         server = db_api.server_get_by_address_on_device(self.conf,
                                                         '10.0.0.2', '1')
     expected = {'server_address': '10.0.0.2',
                 'device_id': '1'}
     err = cm.exception
     self.assertEqual(err.kwargs, expected)
     with self.assertRaises(exception.ServerNotFound) as cm:
         server = db_api.server_get_by_address_on_device(self.conf,
                                                         '10.0.0.1', '2')
     err = cm.exception
     expected = {'server_address': '10.0.0.1',
                 'device_id': '2'}
     self.assertEqual(err.kwargs, expected)