def test_update_generated_objects_errors(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() plLogger = PLLogger.GetLogger("test_update_generated_objects") plLogger.LogInfo("start") project = stc_sys.GetObject("Project") template = ctor.Create("StmTemplateConfig", project) dev = ctor.Create("EmulatedDevice", project) # No ProtocolConfig template.AddObject(dev, RelationType("GeneratedObject")) res = AllocCmd.update_generated_objects(template, 13) assert "Could not find a parent ProtocolConfig for" in res template.RemoveObject(dev, RelationType("GeneratedObject")) # No NetworkBlocks bgp = ctor.Create("BgpRouterConfig", dev) bgp_auth_params = bgp.GetObject("BgpAuthenticationParams") assert bgp_auth_params template.AddObject(bgp_auth_params, RelationType("GeneratedObject")) res = AllocCmd.update_generated_objects(template, 13) assert res == "Could not find any NetworkBlocks to update route counts on." template.RemoveObject(bgp_auth_params, RelationType("GeneratedObject")) # Not enough route count v4_route_config = ctor.Create("BgpIpv4RouteConfig", bgp) v6_route_config = ctor.Create("BgpIpv6RouteConfig", bgp) template.AddObject(v4_route_config, RelationType("GeneratedObject")) template.AddObject(v6_route_config, RelationType("GeneratedObject")) res = AllocCmd.update_generated_objects(template, 1) assert "Could not distribute at least one route to each block" \ in res
def test_update_generated_objects(stc): ctor = CScriptableCreator() stc_sys = CStcSystem.Instance() plLogger = PLLogger.GetLogger("test_update_generated_objects") plLogger.LogInfo("start") project = stc_sys.GetObject("Project") template = ctor.Create("StmTemplateConfig", project) # Single NetworkBlock dev = ctor.Create("EmulatedDevice", project) bgp = ctor.Create("BgpRouterConfig", dev) v4_route_config = ctor.Create("BgpIpv4RouteConfig", bgp) template.AddObject(v4_route_config, RelationType("GeneratedObject")) net_block = v4_route_config.GetObject("NetworkBlock") assert net_block assert net_block.Get("NetworkCount") == 1 res = AllocCmd.update_generated_objects(template, 123) assert res == "" assert net_block.Get("NetworkCount") == 123 # Multiple NetworkBlocks v6_route_config = ctor.Create("BgpIpv6RouteConfig", bgp) template.AddObject(v6_route_config, RelationType("GeneratedObject")) v6_net_block = v6_route_config.GetObject("NetworkBlock") assert v6_net_block assert v6_net_block.Get("NetworkCount") == 1 res = AllocCmd.update_generated_objects(template, 123) assert res == "" assert net_block.Get("NetworkCount") == 62 assert v6_net_block.Get("NetworkCount") == 61 # Duplicate object type v6_route_config2 = ctor.Create("BgpIpv6RouteConfig", bgp) template.AddObject(v6_route_config2, RelationType("GeneratedObject")) v6_net_block2 = v6_route_config2.GetObject("NetworkBlock") assert v6_net_block2 assert v6_net_block2.Get("NetworkCount") == 1 res = AllocCmd.update_generated_objects(template, 125) assert res == "" assert net_block.Get("NetworkCount") == 42 assert v6_net_block.Get("NetworkCount") == 42 assert v6_net_block2.Get("NetworkCount") == 41 # Different protocol type (ISIS) dev2 = ctor.Create("EmulatedDevice", project) isis = ctor.Create("IsisRouterConfig", dev2) lsp = ctor.Create("IsisLspConfig", isis) isis_v4_route_config = ctor.Create("Ipv4IsisRoutesConfig", lsp) template.AddObject(lsp, RelationType("GeneratedObject")) isis_v4_net_block = isis_v4_route_config.GetObject("NetworkBlock") assert isis_v4_net_block assert isis_v4_net_block.Get("NetworkCount") == 1 res = AllocCmd.update_generated_objects(template, 200) assert res == "" assert net_block.Get("NetworkCount") == 67 assert v6_net_block.Get("NetworkCount") == 67 assert v6_net_block2.Get("NetworkCount") == 66 assert isis_v4_net_block.Get("NetworkCount") == 200 # Different protocol types on multiple objects bgp2 = ctor.Create("BgpRouterConfig", dev2) v6_route_config3 = ctor.Create("BgpIpv6RouteConfig", bgp2) v6_net_block3 = v6_route_config3.GetObject("NetworkBlock") assert v6_net_block3 assert v6_net_block3.Get("NetworkCount") == 1 template.AddObject(v6_route_config3, RelationType("GeneratedObject")) res = AllocCmd.update_generated_objects(template, 300) assert res == "" assert net_block.Get("NetworkCount") == 100 assert v6_net_block.Get("NetworkCount") == 100 assert v6_net_block2.Get("NetworkCount") == 100 assert isis_v4_net_block.Get("NetworkCount") == 150 assert v6_net_block3.Get("NetworkCount") == 150