Exemplo n.º 1
0
    def test_load_config(self):
        config = {'group1': {'a': 'b'}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {
                'a': 'c',
                'k': 'v'
            },
            'group2': {
                '1': '2'
            }
        }

        n = Nulecule('some-id', '0.0.2', {}, [], 'some/path')
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(n.config, {
            'group1': {
                'a': 'b',
                'k': 'v'
            },
            'group2': {
                '1': '2'
            }
        })
Exemplo n.º 2
0
    def test_load_config_with_default_provider(self):
        """
        Test Nulecule load_config with a default provider.
        """
        config = Config(answers={})

        params = [{
            "name": "key1",
            "default": "val1",
        }, {
            "name": "key3",
            "default": "val3"
        }, {
            "name": "provider",
            "default": "docker"
        }]

        graph = [{
            "name":
            "component1",
            "params": [{
                "name": "key1",
            }, {
                "name": "key2",
                "default": "val2"
            }],
            "artifacts": []
        }]

        n = Nulecule(id='some-id',
                     specversion='0.0.2',
                     metadata={},
                     graph=graph,
                     params=params,
                     basepath='some/path',
                     config=config)
        n.load_components()
        n.load_config(config)

        self.assertEqual(
            n.config.runtime_answers(), {
                'general': {
                    'namespace': 'default',
                    'provider': 'docker',
                    'key1': 'val1',
                    'key3': 'val3'
                },
                'component1': {
                    'key2': 'val2'
                }
            })

        self.assertEqual(
            n.components[0].config.context(scope=n.components[0].namespace), {
                'key3': 'val3',
                'key2': 'val2',
                'key1': 'val1',
                'provider': 'docker',
                'namespace': 'default'
            })
Exemplo n.º 3
0
    def test_load_config_without_default_provider(self):
        """
        Test Nulecule load_config without specifying a default provider.
        """
        config = Config()

        params = [
            {
                "name": "key1",
                "default": "val1",
            },
            {
                "name": "key3",
                "default": "val3"
            }
        ]

        graph = [
            {
                "name": "component1",
                "params": [
                    {
                        "name": "key1",
                    },
                    {
                        "name": "key2",
                        "default": "val2"
                    }
                ],
                "artifacts": []
            }
        ]

        n = Nulecule(id='some-id', specversion='0.0.2', metadata={},
                     graph=graph, params=params, basepath='some/path',
                     config=config)
        n.load_components()
        n.load_config()

        self.assertEqual(n.config.runtime_answers(), {
            'general': {
                'namespace': 'default',
                'provider': 'kubernetes',
                'key1': 'val1',
                'key3': 'val3'
            },
            'component1': {
                'key2': 'val2'
            }
        })

        self.assertEqual(
            n.components[0].config.context(n.components[0].namespace),
            {'key3': 'val3',
             'key2': 'val2',
             'key1': 'val1',
             'namespace': 'default',
             'provider': 'kubernetes'}
        )
Exemplo n.º 4
0
    def test_load_config_with_defaultprovider_overridden_by_provider_in_answers(
            self):
        """
        Test Nulecule load_config with default provider specified
        in global params in Nulecule spec, but overridden in answers config.
        """
        config = {
            'general': {
                'provider': 'new-provider'
            },
            'group1': {
                'a': 'b'
            }
        }
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {
                'a': 'c',
                'k': 'v'
            },
            'group2': {
                '1': '2'
            }
        }

        n = Nulecule(id='some-id',
                     specversion='0.0.2',
                     metadata={},
                     graph=[],
                     basepath='some/path',
                     params=[{
                         'name': 'provider',
                         'default': 'some-provider'
                     }])
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(
            n.config, {
                'general': {
                    'provider': 'new-provider'
                },
                'group1': {
                    'a': 'b',
                    'k': 'v'
                },
                'group2': {
                    '1': '2'
                }
            })
Exemplo n.º 5
0
    def test_load_config_without_specified_provider(self):
        """
        Test Nulecule load_config without specifying a provider.
        """
        config = {"general": {}, "group1": {"a": "b"}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {"group1": {"a": "c", "k": "v"}, "group2": {"1": "2"}}

        n = Nulecule(id="some-id", specversion="0.0.2", metadata={}, graph=[], basepath="some/path")
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(
            n.config, {"general": {"provider": "kubernetes"}, "group1": {"a": "b", "k": "v"}, "group2": {"1": "2"}}
        )
Exemplo n.º 6
0
    def test_load_config(self):
        config = {'group1': {'a': 'b'}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {'a': 'c', 'k': 'v'},
            'group2': {'1': '2'}
        }

        n = Nulecule('some-id', '0.0.2', {}, [], 'some/path')
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(n.config, {
            'group1': {'a': 'b', 'k': 'v'},
            'group2': {'1': '2'}
        })
Exemplo n.º 7
0
    def test_load_config_without_specified_provider(self):
        """
        Test Nulecule load_config without specifying a provider.
        """
        config = {'general': {}, 'group1': {'a': 'b'}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {'a': 'c', 'k': 'v'},
            'group2': {'1': '2'}
        }

        n = Nulecule(id='some-id', specversion='0.0.2', metadata={}, graph=[], basepath='some/path')
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(n.config, {
            'general': {'provider': 'kubernetes'},
            'group1': {'a': 'b', 'k': 'v'},
            'group2': {'1': '2'}
        })
Exemplo n.º 8
0
    def test_load_config_with_defaultprovider_overridden_by_provider_in_answers(self):
        """
        Test Nulecule load_config with default provider specified
        in global params in Nulecule spec, but overridden in answers config.
        """
        config = {"general": {"provider": "new-provider"}, "group1": {"a": "b"}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {"group1": {"a": "c", "k": "v"}, "group2": {"1": "2"}}

        n = Nulecule(
            id="some-id",
            specversion="0.0.2",
            metadata={},
            graph=[],
            basepath="some/path",
            params=[{"name": "provider", "default": "some-provider"}],
        )
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(
            n.config, {"general": {"provider": "new-provider"}, "group1": {"a": "b", "k": "v"}, "group2": {"1": "2"}}
        )
Exemplo n.º 9
0
    def test_load_config_with_defaultprovider(self):
        """
        Test Nulecule load_config with default provider specified
        in global params in Nulecule spec.
        """
        config = {'general': {}, 'group1': {'a': 'b'}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {'a': 'c', 'k': 'v'},
            'group2': {'1': '2'}
        }

        n = Nulecule(id='some-id', specversion='0.0.2', metadata={}, graph=[],
                     basepath='some/path',
                     params=[{'name': 'provider', 'default': 'some-provider'}])
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(n.config, {
            'general': {'provider': 'some-provider'},
            'group1': {'a': 'b', 'k': 'v'},
            'group2': {'1': '2'}
        })
Exemplo n.º 10
0
    def test_load_config_without_specified_provider(self):
        """
        Test Nulecule load_config without specifying a provider.
        """
        config = {'general': {}, 'group1': {'a': 'b'}}
        mock_component_1 = mock.Mock()
        mock_component_1.config = {
            'group1': {
                'a': 'c',
                'k': 'v'
            },
            'group2': {
                '1': '2'
            }
        }

        n = Nulecule(id='some-id',
                     specversion='0.0.2',
                     metadata={},
                     graph=[],
                     basepath='some/path')
        n.components = [mock_component_1]
        n.load_config(config)

        self.assertEqual(
            n.config, {
                'general': {
                    'provider': 'kubernetes'
                },
                'group1': {
                    'a': 'b',
                    'k': 'v'
                },
                'group2': {
                    '1': '2'
                }
            })
Exemplo n.º 11
0
    def test_load_config_with_default_provider_overridden_by_answers(self):
        """
        Test Nulecule load_config with default provider overridden by provider
        in answers.
        """
        config = Config(answers={
            'general': {
                'provider': 'openshift'
            }
        })

        params = [
            {
                "name": "key1",
                "default": "val1",
            },
            {
                "name": "key3",
                "default": "val3"
            },
            {
                "name": "provider",
                "default": "docker"
            }
        ]

        graph = [
            {
                "name": "component1",
                "params": [
                    {
                        "name": "key1",
                    },
                    {
                        "name": "key2",
                        "default": "val2"
                    }
                ],
                "artifacts": []
            }
        ]

        n = Nulecule(id='some-id', specversion='0.0.2', metadata={},
                     graph=graph, params=params, basepath='some/path',
                     config=config)
        n.load_components()
        n.load_config(config)

        self.assertEqual(n.config.runtime_answers(), {
            'general': {
                'namespace': 'default',
                'provider': 'openshift',
                'key1': 'val1',
                'key3': 'val3'
            },
            'component1': {
                'key2': 'val2'
            }
        })

        self.assertEqual(
            n.components[0].config.context(n.components[0].namespace),
            {'key3': 'val3',
             'key2': 'val2',
             'key1': 'val1',
             'namespace': 'default',
             'provider': 'openshift'}
        )