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)
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)