Example #1
0
    def test_requires_all_of_predicate(self):
        self.components_metadata.append({
            'name':
            'additional_service:test_service',
            'requires': [{
                'all_of': {
                    'items': [
                        'network:core:test_network_2', 'storage:*',
                        'hypervisor:test_hypervisor'
                    ]
                }
            }]
        })
        selected_components_list = [
            'additional_service:test_service', 'network:core:test_network_2',
            'storage:test_storage_2', 'hypervisor:test_hypervisor'
        ]

        self._validate_with_expected_errors(
            selected_components_list,
            "Requirements was not satisfied for component "
            "'additional_service:test_service': all_of(["
            "'hypervisor:test_hypervisor', 'network:core:test_network_2', "
            "'storage:*'])")

        selected_components_list.append('storage:test_storage')
        ComponentsRestrictions.validate_components(
            selected_components_list, self.components_metadata,
            self.required_components_types)
Example #2
0
 def _validate_components(cls, release_id, components_list):
     release = objects.Release.get_by_uid(release_id)
     release_components = objects.Release.get_all_components(release)
     ComponentsRestrictions.validate_components(
         components_list,
         release_components,
         release.required_component_types)
Example #3
0
    def test_requires_all_of_predicate(self):
        self.components_metadata.append({
            'name': 'additional_service:test_service',
            'requires': [{
                'all_of': {
                    'items': [
                        'network:core:test_network_2',
                        'storage:*',
                        'hypervisor:test_hypervisor'
                    ]
                }
            }]
        })
        selected_components_list = ['additional_service:test_service',
                                    'network:core:test_network_2',
                                    'storage:test_storage_2',
                                    'hypervisor:test_hypervisor']

        self._validate_with_expected_errors(
            selected_components_list,
            "Requirements was not satisfied for component "
            "'additional_service:test_service': all_of(["
            "'hypervisor:test_hypervisor', 'network:core:test_network_2', "
            "'storage:*'])"
        )

        selected_components_list.append('storage:test_storage')
        ComponentsRestrictions.validate_components(
            selected_components_list, self.components_metadata,
            self.required_components_types)
    def test_requires_all_of_predicate(self):
        self.components_metadata.append(
            {
                "name": "additional_service:test_service",
                "requires": [
                    {"all_of": {"items": ["network:core:test_network_2", "storage:*", "hypervisor:test_hypervisor"]}}
                ],
            }
        )
        selected_components_list = [
            "additional_service:test_service",
            "network:core:test_network_2",
            "storage:test_storage_2",
            "hypervisor:test_hypervisor",
        ]

        self._validate_with_expected_errors(
            selected_components_list,
            "Requirements was not satisfied for component "
            "'additional_service:test_service': all_of(["
            "'hypervisor:test_hypervisor', 'network:core:test_network_2', "
            "'storage:*'])",
        )

        selected_components_list.append("storage:test_storage")
        ComponentsRestrictions.validate_components(
            selected_components_list, self.components_metadata, self.required_components_types
        )
    def test_requires_any_of_predicate(self):
        self.components_metadata.append(
            {
                "name": "additional_service:test_service",
                "requires": [
                    {"any_of": {"items": ["network:core:*"]}},
                    {"any_of": {"items": ["storage:test_storage_2", "hypervisor:test_hypervisor"]}},
                ],
            }
        )
        self._validate_with_expected_errors(
            ["additional_service:test_service", "network:ml2:test_network_3"],
            "Requirements was not satisfied for component "
            "'additional_service:test_service': any_of(['network:core:*'])",
        )

        self._validate_with_expected_errors(
            ["additional_service:test_service", "network:core:test_network_2"],
            "Requirements was not satisfied for component "
            "'additional_service:test_service': "
            "any_of(['hypervisor:test_hypervisor', 'storage:test_storage_2'])",
        )

        ComponentsRestrictions.validate_components(
            [
                "additional_service:test_service",
                "network:core:test_network_2",
                "hypervisor:test_hypervisor",
                "storage:test_storage_2",
            ],
            self.components_metadata,
            self.required_components_types,
        )
Example #6
0
 def _validate_components(cls, release_id, components_list):
     #取出此release包含的组件
     release = objects.Release.get_by_uid(release_id)
     release_components = objects.Release.get_all_components(release)
     #检查组件间兼容问题,依赖问题是否满足
     ComponentsRestrictions.validate_components(
         components_list, release_components,
         release.required_component_types)
Example #7
0
    def test_not_all_required_types_components(self):
        selected_components_list = [
            'hypervisor:test_hypervisor', 'network:core:test_network_2',
            'storage:test_storage_2'
        ]
        ComponentsRestrictions.validate_components(
            selected_components_list, self.components_metadata,
            self.required_components_types)

        while selected_components_list:
            selected_components_list.pop()
            self._validate_with_expected_errors(
                selected_components_list,
                "Components with {0} types are required but wasn't found "
                "in data.".format(
                    sorted(
                        set(self.required_components_types) - set([
                            x.split(':')[0] for x in selected_components_list
                        ]))))
Example #8
0
    def test_not_all_required_types_components(self):
        selected_components_list = [
            'hypervisor:test_hypervisor',
            'network:core:test_network_2',
            'storage:test_storage_2'
        ]
        ComponentsRestrictions.validate_components(
            selected_components_list, self.components_metadata,
            self.required_components_types)

        while selected_components_list:
            selected_components_list.pop()
            self._validate_with_expected_errors(
                selected_components_list,
                "Components with {0} types are required but wasn't found "
                "in data.".format(sorted(
                    set(self.required_components_types) - set(
                        [x.split(':')[0] for x in selected_components_list])
                ))
            )
Example #9
0
 def _validate_with_expected_errors(self, components_list, error_msg):
     with self.assertRaises(errors.InvalidData) as exc_cm:
         ComponentsRestrictions.validate_components(
             components_list, self.components_metadata,
             self.required_components_types)
     self.assertEqual(exc_cm.exception.message, error_msg)
Example #10
0
 def _validate_with_expected_errors(self, components_list, error_msg):
     with self.assertRaises(errors.InvalidData) as exc_cm:
         ComponentsRestrictions.validate_components(
             components_list, self.components_metadata,
             self.required_components_types)
     self.assertEqual(exc_cm.exception.message, error_msg)
Example #11
0
 def _validate_components(cls, release_id, components_list):
     release = objects.Release.get_by_uid(release_id)
     release_components = objects.Release.get_all_components(release)
     ComponentsRestrictions.validate_components(
         components_list, release_components,
         release.required_component_types)