Esempio n. 1
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"])
Esempio n. 2
0
    def test_not_order_dependent(self):
        _networks_1 = [
            {
                "site": "rennes",
                "vlan_id": 4,
                "nature": "kavlan",
                "network": "1.2.3.4/24",
            },
            {
                "site": "rennes",
                "vlan_id": 5,
                "nature": "kavlan",
                "network": "2.2.3.4/24",
            },
        ]
        networks_1 = [g5k_api_utils.ConcreteVlan(**n) for n in _networks_1]
        networks_2 = [networks_1[1], networks_1[0]]

        resources_1 = copy.deepcopy(self.resources)
        resources_2 = copy.deepcopy(self.resources)
        utils.concretize_networks(resources_1, networks_1)
        utils.concretize_networks(resources_2, networks_2)

        self.maxDiff = None
        self.assertCountEqual(resources_1["networks"], resources_2["networks"])
Esempio n. 3
0
    def test_one_missing(self):
        _networks = [{
            "site": "rennes",
            "vlan_id": 4,
            "nature": "kavlan",
            "network": "1.2.3.4/24",
        }]

        networks = [g5k_api_utils.ConcreteVlan(**n) for n in _networks]
        with self.assertRaises(MissingNetworkError):
            utils.concretize_networks(self.resources, networks)
Esempio n. 4
0
 def test_exact(self):
     desc = {
         "cluster": "foocluster",
         "_c_nodes": ["foocluster-1", "foocluster-2"],
         "secondary_networks": ["network_1", "network_2"],
     }
     networks = [
         {
             "type":
             KAVLAN,
             "id":
             "network_1",
             "role":
             "net_role_1",
             "site":
             "rennes",
             "_c_network":
             [g5k_api_utils.ConcreteVlan(site="rennes", vlan_id="4")],
         },
         {
             "type":
             KAVLAN,
             "id":
             "network_2",
             "roles": ["net_role_2", "net_role_3"],
             "site":
             "rennes",
             "_c_network":
             [g5k_api_utils.ConcreteVlan(site="rennes", vlan_id="5")],
         },
     ]
     g5k_api_utils.get_cluster_interfaces = mock.MagicMock(
         return_value=[("eth0", "en0"), ("eth1", "en1")])
     g5k_api_utils.set_nodes_vlan = mock.Mock()
     gk = mock.Mock()
     utils._mount_secondary_nics(desc, networks)
     self.assertCountEqual(
         [("en0", ["net_role_1"]), ("en1", ["net_role_2", "net_role_3"])],
         desc["_c_nics"],
     )
Esempio n. 5
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)
Esempio n. 6
0
 def test_act(self):
     _networks = [{
         "site": "rennes",
         "vlan_id": 4,
         "nature": "kavlan",
         "network": "1.2.3.4/24"
     }, {
         "site": "rennes",
         "vlan_id": 5,
         "nature": "kavlan",
         "network": "2.2.3.4/24"
     }]
     networks = [g5k_api_utils.ConcreteVlan(**n) for n in _networks]
     utils.concretize_networks(self.resources, networks)
     self.assertEqual([networks[0]],
                      self.resources["networks"][0]["_c_network"])
     self.assertEqual([networks[1]],
                      self.resources["networks"][1]["_c_network"])
Esempio n. 7
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"])
Esempio n. 8
0
    def test_prod(self):
        self.resources["networks"][0]["type"] = PROD
        self.resources["networks"][0]["nature"] = PROD
        networks = [
            g5k_api_utils.ConcreteVlan(
                **{
                    "site": "rennes",
                    "vlan_id": 5,
                    "nature": "kavlan",
                    "network": "1.2.3.4/24"
                }),
            g5k_api_utils.ConcreteProd(**{
                "site": "rennes",
                "nature": PROD,
                "network": "2.2.3.4/24"
            })
        ]

        utils.concretize_networks(self.resources, networks)
        # self.assertEqual(networks[0], self.resources["networks"][0]["_c_network"])
        self.assertEqual(
            None, self.resources["networks"][0]["_c_network"][0].vlan_id)
        self.assertEqual([networks[0]],
                         self.resources["networks"][1]["_c_network"])