def test_orchestrating(self): res_view = 'RES' chain_view = 'CHAIN' self.nm = NetworkGraphManager(auto_id=False, views=[chain_view, res_view], chain_view=chain_view, res_view=res_view) #build a basic chain network (chain_id, start_id, end_id) = self.nm.add_new_chain('start1', 'end1') vnf_node_id = self.nm.add_node( 'vnf1', chain_view, node_type=NetworkGraphManager.NODE_TYPE_VNF, req={ 'cpu': 4, 'mem': 4 }) vnf_node_id2 = self.nm.add_node( 'vnf2', chain_view, node_type=NetworkGraphManager.NODE_TYPE_VNF, req={ 'cpu': 7, 'mem': 4 }) self.nm.add_link(start_id, vnf_node_id, chain_view) self.nm.add_link(vnf_node_id, vnf_node_id2, chain_view) self.nm.add_link(vnf_node_id2, end_id, chain_view) #build a basic phy network phy1_id = self.nm.add_node( 'phy1', res_view, node_type=NetworkGraphManager.NODE_TYPE_HOST, res={ 'cpu': 2, 'mem': 3 }) phy2_id = self.nm.add_node( 'phy2', res_view, node_type=NetworkGraphManager.NODE_TYPE_HOST, res={ 'cpu': 4, 'mem': 3 }) self.nm.add_link(phy1_id, phy2_id, res_view) chain_g = self.nm.get_graph(chain_view) res_g = self.nm.get_graph(res_view) #start end end nodes are not presented in the physical view self.assertRaises(RuntimeError, Mapping.map, chain_g, res_g, DefaultSorter) self.nm.add_node('start1', res_view, node_type=NetworkGraphManager.NODE_TYPE_SAP) self.nm.add_node('end1', res_view, node_type=NetworkGraphManager.NODE_TYPE_SAP) #start end end nodes are not connected in the physical view self.assertRaises(RuntimeError, Mapping.map, chain_g, res_g, DefaultSorter) self.nm.add_link('start1', 'end1', res_view) pair_list = Mapping.map(chain_g, res_g, DefaultSorter) #Not enough resource available in res view, so we get an empty pair list self.assertFalse(pair_list) self.nm.modify_node(phy2_id, res_view, res={'cpu': 11, 'mem': 8}) pair_list = Mapping.map(chain_g, res_g, DefaultSorter) self.assertIn((vnf_node_id, phy2_id), pair_list) self.assertIn((vnf_node_id2, phy2_id), pair_list) self.nm.modify_node(phy2_id, res_view, res={'cpu': 8, 'mem': 4}) self.nm.modify_node(phy1_id, res_view, res={'cpu': 7, 'mem': 4}) pair_list = Mapping.map(chain_g, res_g, DefaultSorter) self.assertIn((vnf_node_id, phy2_id), pair_list) self.assertIn((vnf_node_id2, phy1_id), pair_list)
def setUp(self): self.def_views = ['NF_CHAIN', 'PHY'] self.nm = NetworkGraphManager(views=self.def_views, chain_view=self.def_views[0], res_view=self.def_views[1])