Exemplo n.º 1
0
 def test_prod(self):
     site = "rennes"
     nodes = [
         "foocluster-1.rennes.grid5000.fr",
         "foocluster-2.rennes.grid5000.fr"
     ]
     r = Resources({
         "resources": {
             "machines": [{
                 "_c_nodes": nodes,
                 "primary_network": "network1"
             }],
             "networks": [{
                 "type": PROD,
                 "id": "network1",
                 "site": site
             }],
         }
     })
     deployed = set(nodes)
     undeployed = set()
     api._check_deployed_nodes = mock.Mock(return_value=(undeployed,
                                                         deployed))
     r.driver.deploy = mock.Mock(return_value=(deployed, undeployed))
     r.deploy()
     r.driver.deploy.assert_called_with(site, nodes,
                                        {"env_name": DEFAULT_ENV_NAME})
     self.assertCountEqual(deployed,
                           r.c_resources["machines"][0]["_c_deployed"])
     self.assertCountEqual(undeployed,
                           r.c_resources["machines"][0]["_c_undeployed"])
Exemplo n.º 2
0
    def test_2_deployements_with_undeployed(self):
        site = "rennes"
        nodes_foo = [
            "foocluster-1.rennes.grid5000.fr",
            "foocluster-2.rennes.grid5000.fr",
        ]
        nodes_bar = [
            "barcluster-1.rennes.grid5000.fr",
            "barcluster-2.rennes.grid5000.fr",
        ]

        _c_network_1 = g5k_api_utils.ConcreteProd(site=site)
        _c_network_2 = g5k_api_utils.ConcreteVlan(vlan_id="4", site="rennes")
        r = Resources({
            "resources": {
                "machines": [
                    {
                        "_c_nodes": nodes_foo,
                        "primary_network": "network1"
                    },
                    {
                        "_c_nodes": nodes_bar,
                        "primary_network": "network2"
                    },
                ],
                "networks": [
                    {
                        "type": PROD,
                        "id": "network1",
                        "_c_network": [_c_network_1],
                        "site": "rennes",
                    },
                    {
                        "type": KAVLAN,
                        "id": "network2",
                        "_c_network": [_c_network_2],
                        "site": "rennes",
                    },
                ],
            }
        })
        d_foo = set(["foocluster-1.rennes.grid5000.fr"])
        u_foo = set(nodes_foo) - d_foo
        d_bar = set(["barcluster-2.rennes.grid5000.fr"])
        u_bar = set(nodes_bar) - d_bar

        # we make the deployed check fail to force the deployment
        api._check_deployed_nodes = mock.Mock(side_effect=[([], []), ([], [])])
        r.driver.deploy = mock.Mock(side_effect=[(d_foo, u_foo), (d_bar,
                                                                  u_bar)])
        r.deploy()
        self.assertEqual(2, r.driver.deploy.call_count)
        self.assertCountEqual(d_foo,
                              r.c_resources["machines"][0]["_c_deployed"])
        self.assertCountEqual(u_foo,
                              r.c_resources["machines"][0]["_c_undeployed"])
        self.assertCountEqual(d_bar,
                              r.c_resources["machines"][1]["_c_deployed"])
        self.assertCountEqual(u_bar,
                              r.c_resources["machines"][1]["_c_undeployed"])
Exemplo n.º 3
0
 def test_vlan(self):
     nodes = ["foocluster-1", "foocluster-2"]
     schema.validate = mock.Mock()
     r = Resources({
         "machines": [{
             "_c_nodes": nodes,
             "primary_network": "network1"
         }],
         "networks": [{
             "type": KAVLAN,
             "id": "network1",
             "_c_network": {
                 "site": "rennes",
                 "vlan_id": 4
             }
         }]
     })
     deployed = set(["foocluster-1", "foocluster-2"])
     undeployed = set()
     utils._deploy = mock.Mock(return_value=(deployed, undeployed))
     r.deploy()
     utils._deploy.assert_called_with(nodes, False, {
         "env_name": ENV_NAME,
         "vlan": 4
     })
     self.assertItemsEqual(deployed,
                           r.c_resources["machines"][0]["_c_deployed"])
     self.assertItemsEqual(undeployed,
                           r.c_resources["machines"][0]["_c_undeployed"])
Exemplo n.º 4
0
 def test_no_concrete_network_yet(self):
     demand_networks = [{"type": PROD, "id": "network1"}]
     r = Resources(
         {"resources": {
             "networks": demand_networks,
             "machines": []
         }})
     networks = r.get_networks()
     self.assertCountEqual([], networks)
Exemplo n.º 5
0
 def test_no_concrete_network_yet(self):
     expected_networks = [{"type": PROD, "id": "network1"}]
     schema.validate = mock.Mock()
     r = Resources(
         {"resources": {
             "networks": expected_networks,
             "machines": []
         }})
     networks = r.get_networks()
     self.assertCountEqual(expected_networks, networks)
Exemplo n.º 6
0
 def test_concrete_network(self):
     concrete_net = g5k_api_utils.ConcreteVlan(site="nancy", vlan_id=1)
     expected_roles = ["mynetwork"]
     networks = [{
         "typlse": KAVLAN,
         "id": "network1",
         "roles": expected_roles,
         "_c_network": concrete_net,
     }]
     # a bit hacky because _c_network will be deepcopied so the ref will change
     r = Resources({"resources": {"networks": networks, "machines": []}})
     networks = r.get_networks()
     self.assertEqual(1, len(networks))
     actual_roles, actual_net = networks[0]
     self.assertCountEqual(expected_roles, actual_roles)
Exemplo n.º 7
0
 def test_concrete_network(self):
     networks = [{
         "type": KAVLAN,
         "id": "network1",
         "_c_network": {
             "site": "nancy",
             "vlan_id": 1
         }
     }]
     expected_networks = [{
         "type": KAVLAN,
         "id": "network1",
         "site": "nancy",
         "vlan_id": 1
     }]
     r = Resources({"resources": {"networks": networks, "machines": []}})
     networks = r.get_networks()
     self.assertCountEqual(expected_networks, networks)
Exemplo n.º 8
0
 def test_concrete_network(self):
     networks = [{
         "type": KAVLAN,
         "id": "network1",
         "_c_network": {
             "site": "nancy",
             "vlan_id": 1
         }
     }]
     expected_networks = [{
         "type": KAVLAN,
         "id": "network1",
         "site": "nancy",
         "vlan_id": 1
     }]
     schema.validate = mock.Mock()
     r = Resources({"networks": networks})
     networks = r.get_networks()
     self.assertItemsEqual(expected_networks, networks)
Exemplo n.º 9
0
 def test_2_deployements_with_undeployed(self):
     nodes_foo = ["foocluster-1", "foocluster-2"]
     nodes_bar = ["barcluster-1", "barcluster-2"]
     schema.validate = mock.Mock()
     r = Resources({
         "resources": {
             "machines": [{
                 "_c_nodes": nodes_foo,
                 "primary_network": "network1"
             }, {
                 "_c_nodes": nodes_bar,
                 "primary_network": "network2"
             }],
             "networks": [{
                 "type": PROD,
                 "id": "network1"
             }, {
                 "type": KAVLAN,
                 "id": "network2",
                 "_c_network": {
                     "site": "rennes",
                     "vlan_id": 4
                 }
             }]
         }
     })
     d_foo = set(["foocluster-1"])
     u_foo = set(nodes_foo) - d_foo
     d_bar = set(["barcluster-2"])
     u_bar = set(nodes_bar) - d_bar
     utils._deploy = mock.Mock(side_effect=[(d_foo, u_foo), (d_bar, u_bar)])
     r.deploy()
     self.assertEquals(2, utils._deploy.call_count)
     self.assertCountEqual(d_foo,
                           r.c_resources["machines"][0]["_c_deployed"])
     self.assertCountEqual(u_foo,
                           r.c_resources["machines"][0]["_c_undeployed"])
     self.assertCountEqual(d_bar,
                           r.c_resources["machines"][1]["_c_deployed"])
     self.assertCountEqual(u_bar,
                           r.c_resources["machines"][1]["_c_undeployed"])
Exemplo n.º 10
0
 def test_prod(self):
     nodes = ["foocluster-1", "foocluster-2"]
     schema.validate = mock.Mock()
     r = Resources({
         "machines": [{
             "_c_nodes": nodes,
             "primary_network": "network1"
         }],
         "networks": [{
             "type": PROD,
             "id": "network1"
         }]
     })
     deployed = set(["foocluster-1", "foocluster-2"])
     undeployed = set()
     utils._deploy = mock.Mock(return_value=(deployed, undeployed))
     r.deploy()
     utils._deploy.assert_called_with(nodes, False, {"env_name": ENV_NAME})
     self.assertCountEqual(deployed,
                           r.c_resources["machines"][0]["_c_deployed"])
     self.assertCountEqual(undeployed,
                           r.c_resources["machines"][0]["_c_undeployed"])
Exemplo n.º 11
0
    def test_vlan(self):
        site = "rennes"
        nodes = [
            "foocluster-1.rennes.grid5000.fr",
            "foocluster-2.rennes.grid5000.fr"
        ]
        _c_network = g5k_api_utils.ConcreteVlan(vlan_id="4", site=site)
        r = Resources({
            "resources": {
                "machines": [{
                    "_c_nodes": nodes,
                    "primary_network": "network1"
                }],
                "networks": [{
                    "type": KAVLAN,
                    "id": "network1",
                    "_c_network": [_c_network],
                    "site": "rennes",
                }],
            }
        })
        deployed = set(nodes)
        undeployed = set()

        api._check_deployed_nodes = mock.Mock(return_value=(undeployed,
                                                            deployed))
        r.driver.deploy = mock.Mock(return_value=(deployed, undeployed))
        r.deploy()
        r.driver.deploy.assert_called_with(site, nodes, {
            "env_name": DEFAULT_ENV_NAME,
            "vlan": "4"
        })
        self.assertCountEqual(deployed,
                              r.c_resources["machines"][0]["_c_deployed"])
        self.assertCountEqual(deployed,
                              r.c_resources["machines"][0]["_c_deployed"])
        self.assertCountEqual(undeployed,
                              r.c_resources["machines"][0]["_c_undeployed"])