def test_merge_node_type_interfaces_and_node_template_no_interfaces(self):

        node_type = self._create_node_type(
            interfaces={
                'interface1': {
                    'start': {
                        'implementation': 'mock.tasks.start'
                    }
                }
            }
        )
        node_template = {}

        expected_merged_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start',
                    'inputs': {},
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None
                }
            }
        }

        actual_merged_interfaces = \
            merge_node_type_and_node_template_interfaces(
                node_type=node_type,
                node_template=node_template
            )

        self.assertEqual(actual_merged_interfaces,
                         expected_merged_interfaces)
Пример #2
0
    def test_merge_node_type_interfaces_and_node_template_no_interfaces(self):

        node_type_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start'
                }
            }
        }
        node_template_interfaces = {}

        expected_merged_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start',
                    'inputs': {},
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None,
                    'timeout': None,
                    'timeout_recoverable': None
                }
            }
        }

        self._validate_type_interfaces(node_type_interfaces)
        self._validate_instance_interfaces(node_template_interfaces)
        actual_merged_interfaces = \
            merge_node_type_and_node_template_interfaces(
                node_type_interfaces=node_type_interfaces,
                node_template_interfaces=node_template_interfaces)

        self.assertEqual(actual_merged_interfaces,
                         expected_merged_interfaces)
    def parse(self, node_type, host_types, plugins, resource_base, related_node_templates):
        node = self.build_dict_result()
        node.update({"name": self.name, "id": self.name, constants.TYPE_HIERARCHY: node_type[constants.TYPE_HIERARCHY]})

        node[constants.INTERFACES] = interfaces_parser.merge_node_type_and_node_template_interfaces(
            node_type_interfaces=node_type[constants.INTERFACES], node_template_interfaces=node[constants.INTERFACES]
        )

        node["operations"] = _process_operations(
            partial_error_message="in node '{0}' of type '{1}'".format(node["id"], node["type"]),
            interfaces=node[constants.INTERFACES],
            plugins=plugins,
            error_code=10,
            resource_base=resource_base,
        )

        node_name_to_node = dict((node["id"], node) for node in related_node_templates)
        _post_process_node_relationships(
            processed_node=node, node_name_to_node=node_name_to_node, plugins=plugins, resource_base=resource_base
        )

        contained_in = self.child(NodeTemplateRelationships).provided["contained_in"]
        if self.child(NodeTemplateType).value in host_types:
            node["host_id"] = self.name
        elif contained_in:
            containing_node = [n for n in related_node_templates if n["name"] == contained_in][0]
            if "host_id" in containing_node:
                node["host_id"] = containing_node["host_id"]

        return node
    def test_merge_node_type_and_node_template_interfaces(self):

        node_type_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start'
                },
                'stop': {
                    'implementation': 'mock.tasks.stop',
                    'inputs': {
                        'key': {
                            'default': 'value'
                        }
                    }
                }
            }
        }

        node_template_interfaces = {
            'interface1': {
                'start': 'mock.tasks.start-overridden'
            }
        }

        expected_merged_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start-overridden',
                    'inputs': {},
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None
                },
                'stop': {
                    'implementation': 'mock.tasks.stop',
                    'inputs': {
                        'key': 'value'
                    },
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None
                }
            }
        }

        self._validate_type_interfaces(node_type_interfaces)
        self._validate_instance_interfaces(node_template_interfaces)
        actual_merged_interfaces = \
            merge_node_type_and_node_template_interfaces(
                node_type_interfaces=node_type_interfaces,
                node_template_interfaces=node_template_interfaces)

        self.assertEqual(actual_merged_interfaces,
                         expected_merged_interfaces)
Пример #5
0
    def test_merge_node_type_and_node_template_interfaces(self):

        node_type_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start'
                },
                'stop': {
                    'implementation': 'mock.tasks.stop',
                    'inputs': {
                        'key': {
                            'default': 'value'
                        }
                    }
                }
            }
        }

        node_template_interfaces = {
            'interface1': {
                'start': 'mock.tasks.start-overridden'
            }
        }

        expected_merged_interfaces = {
            'interface1': {
                'start': {
                    'implementation': 'mock.tasks.start-overridden',
                    'inputs': {},
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None
                },
                'stop': {
                    'implementation': 'mock.tasks.stop',
                    'inputs': {
                        'key': 'value'
                    },
                    'executor': None,
                    'max_retries': None,
                    'retry_interval': None
                }
            }
        }

        self._validate_type_interfaces(node_type_interfaces)
        self._validate_instance_interfaces(node_template_interfaces)
        actual_merged_interfaces = \
            merge_node_type_and_node_template_interfaces(
                node_type_interfaces=node_type_interfaces,
                node_template_interfaces=node_template_interfaces)

        self.assertEqual(actual_merged_interfaces, expected_merged_interfaces)