Пример #1
0
class TestInventoriesDynamic(_TestInventoriesBase):
    def setUp(self):
        super(TestInventoriesDynamic, self).setUp()
        mock_inv_overcloud = MagicMock()
        mock_inv_cell1 = MagicMock()
        mock_inv_overcloud.list.return_value = self.inventory_data[
            'overcloud_dynamic'
        ]
        mock_inv_cell1.list.return_value = self.inventory_data[
            'cell1_dynamic'
        ]
        stack_to_inv_obj_map = {
            'overcloud': mock_inv_overcloud,
            'cell1': mock_inv_cell1
            }
        self.inventories = TripleoInventories(stack_to_inv_obj_map)

    def test_merge(self):
        actual = dict(self.inventories._merge())
        expected = dict(self.inventory_data['merged_dynamic'])
        self.assertEqual(expected, actual)

    def test_list(self):
        actual = self.inventories.list()
        expected = self.inventory_data['merged_dynamic']
        self.assertEqual(expected, actual)
Пример #2
0
class TestInventoriesStatic(_TestInventoriesBase):
    def setUp(self):
        super(TestInventoriesStatic, self).setUp()
        mock_inv_overcloud = MagicMock()
        mock_inv_cell1 = MagicMock()
        mock_inv_overcloud.list.return_value = self.inventory_data[
            'overcloud_static'
        ]
        mock_inv_cell1.list.return_value = self.inventory_data[
            'cell1_static'
        ]
        stack_to_inv_obj_map = {
            'overcloud': mock_inv_overcloud,
            'cell1': mock_inv_cell1
            }
        self.inventories = TripleoInventories(stack_to_inv_obj_map)

    def test_merge(self):
        actual = dict(self.inventories._merge(dynamic=False))
        expected = self.inventory_data['merged_static']
        self.assertEqual(expected, actual)

    def test_inventory_write_static(self):
        tmp_dir = self.useFixture(fixtures.TempDir()).path
        inv_path = os.path.join(tmp_dir, "inventory.yaml")
        self.inventories.write_static_inventory(inv_path)
        expected = self.inventory_data['merged_static']
        with open(inv_path, 'r') as f:
            loaded_inv = collections.OrderedDict(yaml.safe_load(f))
        self.assertEqual(expected, loaded_inv)
Пример #3
0
 def setUp(self):
     super(TestInventoryUndercloudDynamic, self).setUp()
     mock_inv_undercloud = MagicMock()
     mock_inv_undercloud.list.return_value = self.inventory_data[
         'undercloud_dynamic'
     ]
     stack_to_inv_obj_map = {
         'foobar': mock_inv_undercloud
     }
     self.inventories = TripleoInventories(stack_to_inv_obj_map)
Пример #4
0
 def setUp(self):
     super(TestInventorySingleStatic, self).setUp()
     mock_inv_overcloud = MagicMock()
     mock_inv_overcloud.list.return_value = self.inventory_data[
         'overcloud_static'
     ]
     stack_to_inv_obj_map = {
         'overcloud': mock_inv_overcloud
     }
     self.inventories = TripleoInventories(stack_to_inv_obj_map)
Пример #5
0
 def setUp(self):
     super(TestInventories, self).setUp()
     mock_inv_central = MagicMock()
     mock_inv_edge0 = MagicMock()
     mock_inv_central.list.return_value = self._mock_inv_central_data()
     mock_inv_edge0.list.return_value = self._mock_inv_edge0_data()
     self.stack_to_inv_obj_map = {
         'central': mock_inv_central,
         'edge0': mock_inv_edge0
     }
     self.inventories = TripleoInventories(self.stack_to_inv_obj_map)
Пример #6
0
 def setUp(self):
     super(TestInventoriesDynamic, self).setUp()
     mock_inv_overcloud = MagicMock()
     mock_inv_cell1 = MagicMock()
     mock_inv_overcloud.list.return_value = self.inventory_data[
         'overcloud_dynamic'
     ]
     mock_inv_cell1.list.return_value = self.inventory_data[
         'cell1_dynamic'
     ]
     stack_to_inv_obj_map = {
         'overcloud': mock_inv_overcloud,
         'cell1': mock_inv_cell1
         }
     self.inventories = TripleoInventories(stack_to_inv_obj_map)
Пример #7
0
class TestInventoryUndercloudDynamic(_TestInventoriesBase):
    def setUp(self):
        super(TestInventoryUndercloudDynamic, self).setUp()
        mock_inv_undercloud = MagicMock()
        mock_inv_undercloud.list.return_value = self.inventory_data[
            'undercloud_dynamic'
        ]
        stack_to_inv_obj_map = {
            'foobar': mock_inv_undercloud
        }
        self.inventories = TripleoInventories(stack_to_inv_obj_map)

    def test_list(self):
        actual = self.inventories.list()
        expected = self.inventory_data['undercloud_dynamic_merged']
        self.assertEqual(expected, actual)
Пример #8
0
class TestInventorySingleStatic(_TestInventoriesBase):
    def setUp(self):
        super(TestInventorySingleStatic, self).setUp()
        mock_inv_overcloud = MagicMock()
        mock_inv_overcloud.list.return_value = self.inventory_data[
            'overcloud_static'
        ]
        stack_to_inv_obj_map = {
            'overcloud': mock_inv_overcloud
        }
        self.inventories = TripleoInventories(stack_to_inv_obj_map)

    def test_list(self):
        actual = self.inventories.list()
        expected = self.inventory_data['single_static']
        self.assertEqual(expected, actual)
Пример #9
0
class TestInventories(base.TestCase):
    def setUp(self):
        super(TestInventories, self).setUp()
        mock_inv_central = MagicMock()
        mock_inv_edge0 = MagicMock()
        mock_inv_central.list.return_value = self._mock_inv_central_data()
        mock_inv_edge0.list.return_value = self._mock_inv_edge0_data()
        self.stack_to_inv_obj_map = {
            'central': mock_inv_central,
            'edge0': mock_inv_edge0
        }
        self.inventories = TripleoInventories(self.stack_to_inv_obj_map)

    def test_merge(self):
        self.inventories.merge()
        expected = self._mock_inv_merged_data()
        for k in expected.keys():
            self.assertEqual(expected[k], self.inventories.inventory[k])

    def test_inventory_write_static(self):
        self.inventories.merge()
        tmp_dir = self.useFixture(fixtures.TempDir()).path
        inv_path = os.path.join(tmp_dir, "inventory.yaml")
        self.inventories.write_static_inventory(inv_path)
        expected = self._mock_inv_merged_data()
        with open(inv_path, 'r') as f:
            loaded_inv = yaml.safe_load(f)
        self.assertEqual(expected, loaded_inv)

    def _mock_inv_central_data(self):
        return {
            "Undercloud": {
                "hosts": ["undercloud"],
                "vars": {
                    "username":
                    "******",
                    "overcloud_keystone_url":
                    "http://192.168.24.21:5000",
                    "project_name":
                    "admin",
                    "overcloud_horizon_url":
                    "http://192.168.24.21/dashboard",
                    "auth_url":
                    "https://192.168.24.2:13000",
                    "ansible_connection":
                    "local",
                    "cacert":
                    "/etc/pki/ca-trust/cm-local-ca.pem",
                    "ansible_host":
                    "localhost",
                    "ansible_remote_tmp":
                    "/tmp/ansible-${USER}",
                    "undercloud_service_list": [
                        "tripleo_nova_compute", "tripleo_heat_engine",
                        "tripleo_ironic_conductor",
                        "tripleo_swift_container_server",
                        "tripleo_swift_object_server", "tripleo_mistral_engine"
                    ],
                    "ansible_python_interpreter":
                    "/usr/bin/python",
                    "overcloud_admin_password":
                    "******",
                    "plan":
                    "central"
                }
            },
            "Controller": {
                "hosts": ["central-controller-0"],
                "vars": {
                    "tripleo_role_name":
                    "Controller",
                    "tripleo_role_networks": [
                        "management", "storage", "ctlplane", "external",
                        "internal_api", "storage_mgmt", "tenant"
                    ],
                    "serial":
                    "1",
                    "ansible_ssh_user":
                    "******",
                }
            },
            "overcloud": {
                "children": ["Controller"],
                "vars": {
                    "storage_mgmt_vip": "192.168.24.21",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.21",
                    "redis_vip": "192.168.24.11",
                    "internal_api_vip": "192.168.24.21",
                    "external_vip": "192.168.24.21",
                    "storage_vip": "192.168.24.21"
                }
            },
            "kernel": {
                "children": ["Controller"],
                "vars": {
                    "ansible_ssh_user": "******"
                }
            },
            "ovn_controller": {
                "children": ["Controller"],
                "vars": {
                    "ansible_ssh_user": "******"
                }
            },
            "_meta": {
                "hostvars": {
                    "central-controller-0": {
                        "storage_ip": "192.168.24.12",
                        "storage_mgmt_ip": "192.168.24.12",
                        "external_ip": "192.168.24.12",
                        "ctlplane_ip": "192.168.24.12",
                        "tenant_ip": "192.168.24.12",
                        "internal_api_ip": "192.168.24.12",
                        "management_ip": "192.168.24.12",
                        "ansible_host": "192.168.24.12"
                    }
                }
            }
        }

    def _mock_inv_edge0_data(self):
        return {
            "Undercloud": {
                "hosts": ["undercloud"],
                "vars": {
                    "username":
                    "******",
                    "overcloud_keystone_url":
                    "http://192.168.24.21:5000",
                    "project_name":
                    "admin",
                    "overcloud_horizon_url":
                    "http://192.168.24.21/dashboard",
                    "auth_url":
                    "https://192.168.24.2:13000",
                    "ansible_connection":
                    "local",
                    "cacert":
                    "/etc/pki/ca-trust/cm-local-ca.pem",
                    "ansible_host":
                    "localhost",
                    "ansible_remote_tmp":
                    "/tmp/ansible-${USER}",
                    "undercloud_service_list": [
                        "tripleo_nova_compute", "tripleo_heat_engine",
                        "tripleo_ironic_conductor",
                        "tripleo_swift_container_server",
                        "tripleo_swift_object_server", "tripleo_mistral_engine"
                    ],
                    "ansible_python_interpreter":
                    "/usr/bin/python",
                    "overcloud_admin_password":
                    "******",
                    "plan":
                    "edge0"
                }
            },
            "DistributedComputeHCI": {
                "hosts": ["edge0-distributedcomputehci-0"],
                "vars": {
                    "tripleo_role_name":
                    "DistributedComputeHCI",
                    "tripleo_role_networks": [
                        "management", "storage", "ctlplane", "external",
                        "internal_api", "storage_mgmt", "tenant"
                    ],
                    "serial":
                    "1",
                    "ansible_ssh_user":
                    "******",
                }
            },
            "overcloud": {
                "children": ["DistributedComputeHCI"],
                "vars": {
                    "storage_mgmt_vip": "192.168.24.20",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.20",
                    "redis_vip": "192.168.24.24",
                    "internal_api_vip": "192.168.24.20",
                    "external_vip": "192.168.24.20",
                    "storage_vip": "192.168.24.20"
                }
            },
            "kernel": {
                "children": ["DistributedComputeHCI"],
                "vars": {
                    "ansible_ssh_user": "******"
                }
            },
            "ovn_controller": {
                "children": ["DistributedComputeHCI"],
                "vars": {
                    "ansible_ssh_user": "******"
                }
            },
            "_meta": {
                "hostvars": {
                    "edge0-distributedcomputehci-0": {
                        "storage_ip": "192.168.24.13",
                        "storage_mgmt_ip": "192.168.24.13",
                        "external_ip": "192.168.24.13",
                        "ctlplane_ip": "192.168.24.13",
                        "tenant_ip": "192.168.24.13",
                        "internal_api_ip": "192.168.24.13",
                        "management_ip": "192.168.24.13",
                        "ansible_host": "192.168.24.13"
                    }
                }
            }
        }

    def _mock_inv_merged_data(self):
        return {
            "Undercloud": {
                "hosts": {
                    "undercloud": {}
                },
                "vars": {
                    "username":
                    "******",
                    "overcloud_keystone_url":
                    "http://192.168.24.21:5000",
                    "project_name":
                    "admin",
                    "overcloud_horizon_url":
                    "http://192.168.24.21/dashboard",
                    "auth_url":
                    "https://192.168.24.2:13000",
                    "ansible_connection":
                    "local",
                    "cacert":
                    "/etc/pki/ca-trust/cm-local-ca.pem",
                    "ansible_host":
                    "localhost",
                    "ansible_remote_tmp":
                    "/tmp/ansible-${USER}",
                    "undercloud_service_list": [
                        "tripleo_nova_compute", "tripleo_heat_engine",
                        "tripleo_ironic_conductor",
                        "tripleo_swift_container_server",
                        "tripleo_swift_object_server", "tripleo_mistral_engine"
                    ],
                    "ansible_python_interpreter":
                    "/usr/bin/python",
                    "overcloud_admin_password":
                    "******",
                    "plan":
                    '',
                    "plans": ["central", "edge0"]
                }
            },
            "central_Controller": {
                "hosts": {
                    "central-controller-0": {
                        "storage_ip": "192.168.24.12",
                        "storage_mgmt_ip": "192.168.24.12",
                        "external_ip": "192.168.24.12",
                        "ctlplane_ip": "192.168.24.12",
                        "tenant_ip": "192.168.24.12",
                        "internal_api_ip": "192.168.24.12",
                        "management_ip": "192.168.24.12",
                        "ansible_host": "192.168.24.12"
                    }
                },
                "vars": {
                    "tripleo_role_name":
                    "Controller",
                    "tripleo_role_networks": [
                        "management", "storage", "ctlplane", "external",
                        "internal_api", "storage_mgmt", "tenant"
                    ],
                    "serial":
                    "1",
                    "ansible_ssh_user":
                    "******",
                }
            },
            "central_overcloud": {
                "vars": {
                    "storage_mgmt_vip": "192.168.24.21",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.21",
                    "redis_vip": "192.168.24.11",
                    "internal_api_vip": "192.168.24.21",
                    "external_vip": "192.168.24.21",
                    "storage_vip": "192.168.24.21"
                },
                "children": {
                    "central_Controller": {}
                }
            },
            "central": {
                "vars": {
                    "storage_mgmt_vip": "192.168.24.21",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.21",
                    "redis_vip": "192.168.24.11",
                    "internal_api_vip": "192.168.24.21",
                    "external_vip": "192.168.24.21",
                    "storage_vip": "192.168.24.21"
                },
                "children": {
                    "central_Controller": {}
                }
            },
            "central_kernel": {
                "vars": {
                    "ansible_ssh_user": "******"
                },
                "children": {
                    "central_Controller": {}
                }
            },
            "central_ovn_controller": {
                "vars": {
                    "ansible_ssh_user": "******"
                },
                "children": {
                    "central_Controller": {}
                }
            },
            "edge0_DistributedComputeHCI": {
                "hosts": {
                    "edge0-distributedcomputehci-0": {
                        "storage_ip": "192.168.24.13",
                        "storage_mgmt_ip": "192.168.24.13",
                        "external_ip": "192.168.24.13",
                        "ctlplane_ip": "192.168.24.13",
                        "tenant_ip": "192.168.24.13",
                        "internal_api_ip": "192.168.24.13",
                        "management_ip": "192.168.24.13",
                        "ansible_host": "192.168.24.13"
                    }
                },
                "vars": {
                    "tripleo_role_name":
                    "DistributedComputeHCI",
                    "tripleo_role_networks": [
                        "management", "storage", "ctlplane", "external",
                        "internal_api", "storage_mgmt", "tenant"
                    ],
                    "serial":
                    "1",
                    "ansible_ssh_user":
                    "******",
                }
            },
            "edge0_overcloud": {
                "vars": {
                    "storage_mgmt_vip": "192.168.24.20",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.20",
                    "redis_vip": "192.168.24.24",
                    "internal_api_vip": "192.168.24.20",
                    "external_vip": "192.168.24.20",
                    "storage_vip": "192.168.24.20"
                },
                "children": {
                    "edge0_DistributedComputeHCI": {}
                }
            },
            "edge0": {
                "vars": {
                    "storage_mgmt_vip": "192.168.24.20",
                    "container_cli": "podman",
                    "ctlplane_vip": "192.168.24.20",
                    "redis_vip": "192.168.24.24",
                    "internal_api_vip": "192.168.24.20",
                    "external_vip": "192.168.24.20",
                    "storage_vip": "192.168.24.20"
                },
                "children": {
                    "edge0_DistributedComputeHCI": {}
                }
            },
            "edge0_kernel": {
                "vars": {
                    "ansible_ssh_user": "******"
                },
                "children": {
                    "edge0_DistributedComputeHCI": {}
                }
            },
            "edge0_ovn_controller": {
                "vars": {
                    "ansible_ssh_user": "******"
                },
                "children": {
                    "edge0_DistributedComputeHCI": {}
                }
            }
        }