示例#1
0
 def test__get_nodes(self):
     engine = fuel.FuelEngine(self.deployment)
     engine.nodes = mock.MagicMock()
     engine.nodes.pop.side_effect = [1, 2, 3, 4]
     nodes = engine._get_nodes("cinder+compute")
     self.assertEqual([1, 2, 3, 4], nodes)
     expected_calls = [mock.call(["cpus==8", "storage>=2T"])] * 4
     self.assertEqual(expected_calls, engine.nodes.pop.mock_calls)
示例#2
0
    def test_deploy(self, mock_fuel_cluster, mock_fuel_client):
        attributes = {
            "editable": {
                "access": {
                    "user": {
                        "value": "user"
                    },
                    "password": {
                        "value": "pw"
                    },
                    "tenant": {
                        "value": "tn"
                    }
                }
            }
        }
        client = mock.Mock()
        cluster = mock.Mock(cluster={"id": 42},
                            **{
                                "get_endpoint_ip.return_value": "2.3.4.5",
                                "get_attributes.return_value": attributes
                            })
        mock_fuel_client.return_value = client
        mock_fuel_cluster.return_value = cluster
        self.deployment.add_resource = mock.Mock()

        engine = fuel.FuelEngine(self.deployment)

        engine._get_nodes = mock.Mock(side_effect=[1, 2, 3, 4])
        engine._get_release_id = mock.Mock()

        credential = engine.deploy()
        self.assertEqual(["admin"], list(credential))
        credential = credential["admin"]

        self.assertEqual("user", credential.username)
        self.assertEqual("pw", credential.password)
        self.assertEqual("tn", credential.tenant_name)
        self.assertEqual("http://2.3.4.5:5000/v2.0/", credential.auth_url)
        self.assertEqual(consts.EndpointPermission.ADMIN,
                         credential.permission)

        expected_cluster_calls = [
            mock.call.set_nodes(1, ["controller"]),
            mock.call.set_nodes(2, ["compute"]),
            mock.call.set_nodes(3, ["cinder"]),
            mock.call.set_nodes(4, ["compute", "cinder"]),
            mock.call.configure_network({"public": {
                "cidr": "10.1.1.0/24"
            }}),
            mock.call.deploy(),
            mock.call.get_endpoint_ip(),
            mock.call.get_attributes()
        ]
        self.assertEqual(expected_cluster_calls, cluster.mock_calls)
        self.assertEqual([mock.call.get_nodes()], client.mock_calls)
示例#3
0
    def test_cleanup(self, mock_deployment, mock_fuel_client):
        fake_resources = [{"id": 41, "info": {"id": 42}}]
        self.deployment.get_resources = mock.Mock(return_value=fake_resources)

        engine = fuel.FuelEngine(self.deployment)
        engine.client = mock.Mock()
        engine.cleanup()

        engine.client.delete_cluster.assert_called_once_with(42)
        mock_deployment.delete_resource.assert_called_once_with(41)
示例#4
0
 def test__get_release_id(self):
     engine = fuel.FuelEngine(self.deployment)
     engine.client = mock.Mock()
     fake_releases = [{
         "name": "fake",
         "id": 1
     }, {
         "name": "Havana on Ubuntu 12.04",
         "id": 42
     }]
     engine.client.get_releases = mock.Mock(return_value=fake_releases)
     self.assertEqual(42, engine._get_release_id())
示例#5
0
 def test__get_nodes_empty(self):
     engine = fuel.FuelEngine(self.deployment)
     self.assertEqual([], engine._get_nodes("nonexistent"))
示例#6
0
 def test__get_nodes_no_nodes(self):
     engine = fuel.FuelEngine(self.deployment)
     engine.nodes = mock.MagicMock()
     engine.nodes.pop.return_value = None
     self.assertRaises(exceptions.NoNodesFound, engine._get_nodes,
                       "controller")
示例#7
0
 def test_validate_no_computes(self):
     config = SAMPLE_CONFIG.copy()
     config["nodes"].pop("cinder+compute")
     deployment = {"config": config}
     engine = fuel.FuelEngine(deployment)
     self.assertRaises(exceptions.ValidationError, engine.validate)
示例#8
0
 def test_construct(self):
     fuel.FuelEngine(self.deployment)