class TestPlumberyInfrastructure(unittest.TestCase): def setUp(self): facility = FakeFacility() self.infrastructure = PlumberyInfrastructure(facility=facility) def tearDown(self): self.infrastructure = None def test_build(self): self.infrastructure.build(fakeBluePrint) def test_get_container(self): container = self.infrastructure.get_container(fakeBluePrint) self.assertEqual(container.domain, None) self.assertEqual(container.network, None) def test_get_ethernet(self): self.infrastructure.get_ethernet('MyNetwork') # self.infrastructure.get_ethernet(['XY6', 'MyNetwork']) # self.infrastructure.get_ethernet(['dd-eu', 'EU6', 'MyNetwork']) def test_get_ipv4(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure._get_ipv4() def test_get_network_domain(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure.get_network_domain('fake')
def build_blueprint(self, names): """ Builds a named blueprint for this facility :param names: the name(s) of the blueprint(s) to build :type names: ``str`` or ``list`` of ``str`` This function builds the named blueprint in two steps: the infrastructure comes first, and then the nodes themselves. >>>facility.build_blueprint('sql') If the keyword ``basement`` mentions one or several blueprints, then network domains of these special blueprints are built before the actual target blueprint. Example ``fittings.yaml``:: --- basement: admin blueprints: - admin: ethernet: control - sql: ethernet: data nodes: - server1: glue: control In this example, the node ``server1``has two network interfaces. The main network interface is connected to the network ``data``, and the secondary network interface is connected to the network ``control``. """ self.power_on() infrastructure = PlumberyInfrastructure(self) nodes = PlumberyNodes(self) basement = self.list_basement() for name in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) for name in self.expand_blueprint(names): blueprint = self.get_blueprint(name) if name not in basement: infrastructure.build(blueprint) nodes.build_blueprint( blueprint, infrastructure.get_container(blueprint))
def build_blueprint(self, names): """ Builds a named blueprint for this facility :param names: the name(s) of the blueprint(s) to build :type names: ``str`` or ``list`` of ``str`` This function builds the named blueprint in two steps: the infrastructure comes first, and then the nodes themselves. >>>facility.build_blueprint('sql') If the keyword ``basement`` mentions one or several blueprints, then network domains of these special blueprints are built before the actual target blueprint. Example ``fittings.yaml``:: --- basement: admin blueprints: - admin: ethernet: control - sql: ethernet: data nodes: - server1: glue: control In this example, the node ``server1``has two network interfaces. The main network interface is connected to the network ``data``, and the secondary network interface is connected to the network ``control``. """ self.power_on() infrastructure = PlumberyInfrastructure(self) nodes = PlumberyNodes(self) basement = self.list_basement() for name in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) for name in self.expand_blueprint(names): blueprint = self.get_blueprint(name) if name not in basement: infrastructure.build(blueprint) nodes.build_blueprint(blueprint, infrastructure.get_container(blueprint))
class TestPlumberyInfrastructure(unittest.TestCase): def setUp(self): facility = FakeFacility() self.infrastructure = PlumberyInfrastructure(facility=facility) def tearDown(self): self.infrastructure = None def test_build(self): self.infrastructure.build(fakeBluePrint) def test_name_listener(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure.name_listener('fake') self.assertEqual(name, 'fake_eu6.fake.listener') def test_get_listener(self): self.infrastructure.blueprint = fakeBluePrint listener = self.infrastructure._get_listener('fakeListener') self.assertEqual(listener, None) def test_name_pool(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure._name_pool() self.assertEqual(name, 'fake_eu6.pool') def test_get_pool(self): self.infrastructure.blueprint = fakeBluePrint pool = self.infrastructure._get_pool() self.assertEqual(pool, None) def test_get_container(self): container = self.infrastructure.get_container(fakeBluePrint) self.assertEqual(container.domain, None) self.assertEqual(container.network, None) def test_get_ethernet(self): self.infrastructure.get_ethernet('MyNetwork') # self.infrastructure.get_ethernet(['XY6', 'MyNetwork']) # self.infrastructure.get_ethernet(['dd-eu', 'EU6', 'MyNetwork']) def test_get_ipv4(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure._get_ipv4() def test_get_default(self): engine = PlumberyEngine() engine.from_text(defaultsPlan) facility = engine.list_facility('EU6')[0] infrastructure = PlumberyInfrastructure(facility) self.assertEqual(infrastructure.get_default('ipv4'), 'auto')
class TestPlumberyInfrastructure(unittest.TestCase): def setUp(self): facility = FakeFacility() self.infrastructure = PlumberyInfrastructure(facility=facility) def tearDown(self): self.infrastructure = None def test_build(self): self.infrastructure.build(fakeBluePrint) def test_name_listener(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure.name_listener('fake') self.assertEqual(name, 'fake_eu6.fake.listener') def test_get_listener(self): self.infrastructure.blueprint = fakeBluePrint listener = self.infrastructure._get_listener('fakeListener') self.assertEqual(listener, None) def test_name_pool(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure._name_pool() self.assertEqual(name, 'fake_eu6.pool') def test_get_pool(self): self.infrastructure.blueprint = fakeBluePrint pool = self.infrastructure._get_pool() self.assertEqual(pool, None) def test_get_container(self): container = self.infrastructure.get_container(fakeBluePrint) self.assertEqual(container.domain, None) self.assertEqual(container.network, None) def test_get_ethernet(self): self.infrastructure.get_ethernet('MyNetwork') # self.infrastructure.get_ethernet(['XY6', 'MyNetwork']) # self.infrastructure.get_ethernet(['dd-eu', 'EU6', 'MyNetwork']) def test_get_ipv4(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure._get_ipv4() def test_get_default(self): engine = PlumberyEngine(defaultsPlan) facility = engine.list_facility('EU6')[0] infrastructure = PlumberyInfrastructure(facility) self.assertEqual(infrastructure.get_default('ipv4'), 'auto')
def build_all_blueprints(self): """ Builds all blueprints defined for this facility This function builds all network domains across all blueprints, then it builds all nodes across all blueprints. If the keyword ``basement`` mentions one or several blueprints, then these are built before the other blueprints. """ self.power_on() infrastructure = PlumberyInfrastructure(self) nodes = PlumberyNodes(self) basement = self.list_basement() for name in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) blueprints = self.expand_blueprint('*') for name in blueprints: if name not in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) for name in basement: blueprint = self.get_blueprint(name) container = infrastructure.get_container(blueprint) nodes.build_blueprint(blueprint, container) for name in blueprints: if name not in basement: blueprint = self.get_blueprint(name) container = infrastructure.get_container(blueprint) nodes.build_blueprint(blueprint, container)
def build_all_blueprints(self): """ Builds all blueprints defined for this facility This function builds all network domains across all blueprints, then it builds all nodes across all blueprints. If the keyword ``basement`` mentions one or several blueprints, then these are built before the other blueprints. """ self.power_on() infrastructure = PlumberyInfrastructure(self) nodes = PlumberyNodes(self) basement = self.list_basement() for name in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) blueprints = self.expand_blueprint('*') for name in blueprints: if name not in basement: blueprint = self.get_blueprint(name) infrastructure.build(blueprint) for name in basement: blueprint = self.get_blueprint(name) container = infrastructure.get_container(blueprint) nodes.build_blueprint(blueprint, container) for name in blueprints: if name not in basement: blueprint = self.get_blueprint(name) container = infrastructure.get_container(blueprint) nodes.build_blueprint(blueprint, container)
class TestPlumberyInfrastructure(unittest.TestCase): def setUp(self): facility = FakeFacility() self.infrastructure = PlumberyInfrastructure(facility=facility) def tearDown(self): self.infrastructure = None def test_parse_firewall_port(self): elements = self.infrastructure.parse_firewall_port('icmp') self.assertEqual(elements, ('ICMP', 'any', None, None)) elements = self.infrastructure.parse_firewall_port('tcp:80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port(':80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port('80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port('udp:137..138') self.assertEqual(elements, ('UDP', '137..138', '137', '138')) elements = self.infrastructure.parse_firewall_port('any') self.assertEqual(elements, ('TCP', 'any', None, None)) def test_build(self): self.infrastructure.build(fakeBluePrint) def test_name_balancer(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure.name_balancer('fake') self.assertEqual(name, 'fake.fake.eu6.balancer') def test_get_balancer(self): self.infrastructure.blueprint = fakeBluePrint balancer = self.infrastructure._get_balancer('fakeListener') self.assertEqual(balancer, None) def test_name_pool(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure._name_pool() self.assertEqual(name, 'fake.eu6.pool') def test_get_pool(self): self.infrastructure.blueprint = fakeBluePrint pool = self.infrastructure._get_pool() self.assertEqual(pool, None) def test_get_container(self): container = self.infrastructure.get_container(fakeBluePrint) self.assertEqual(container.domain, None) self.assertEqual(container.network, None) def test_get_ethernet(self): self.infrastructure.get_ethernet('MyNetwork') # self.infrastructure.get_ethernet(['XY6', 'MyNetwork']) # self.infrastructure.get_ethernet(['dd-eu', 'EU6', 'MyNetwork']) def test_get_ipv4(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure._get_ipv4() def test_get_default(self): engine = PlumberyEngine(defaultsPlan) facility = engine.list_facility('EU6')[0] infrastructure = PlumberyInfrastructure(facility) self.assertEqual(infrastructure.get_default('ipv4'), 'auto')
class TestPlumberyInfrastructure(unittest.TestCase): def setUp(self): facility = FakeFacility() self.infrastructure = PlumberyInfrastructure(facility=facility) def tearDown(self): self.infrastructure = None def test_parse_firewall_port(self): elements = self.infrastructure.parse_firewall_port('icmp') self.assertEqual(elements, ('ICMP', 'any', None, None)) elements = self.infrastructure.parse_firewall_port('tcp:80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port(':80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port('80') self.assertEqual(elements, ('TCP', '80', '80', None)) elements = self.infrastructure.parse_firewall_port('udp:137..138') self.assertEqual(elements, ('UDP', '137..138', '137', '138')) elements = self.infrastructure.parse_firewall_port('any') self.assertEqual(elements, ('TCP', 'any', None, None)) def test_build(self): self.infrastructure.build(fakeBluePrint) def test_name_balancer(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure.name_balancer('fake') self.assertEqual(name, 'fake.fake.eu6.balancer') def test_get_balancer(self): self.infrastructure.blueprint = fakeBluePrint balancer = self.infrastructure._get_balancer('fakeListener') self.assertEqual(balancer, None) def test_name_pool(self): self.infrastructure.blueprint = fakeBluePrint name = self.infrastructure._name_pool() self.assertEqual(name, 'fake.eu6.pool') def test_get_pool(self): self.infrastructure.blueprint = fakeBluePrint pool = self.infrastructure._get_pool() self.assertEqual(pool, None) def test_get_container(self): container = self.infrastructure.get_container(fakeBluePrint) self.assertEqual(container.domain, None) self.assertEqual(container.network, None) def test_get_ethernet(self): self.infrastructure.get_ethernet('MyNetwork') # self.infrastructure.get_ethernet(['XY6', 'MyNetwork']) # self.infrastructure.get_ethernet(['dd-eu', 'EU6', 'MyNetwork']) def test_get_ipv4(self): self.infrastructure.blueprint = fakeBluePrint self.infrastructure._get_ipv4() def test_get_default(self): engine = PlumberyEngine(defaultsPlan) facility = engine.list_facility('EU6')[0] infrastructure = PlumberyInfrastructure(facility) self.assertEqual(infrastructure.get_default('ipv4'), 'auto')