Пример #1
0
    def test_interpolation_of_env_vars_kube_deploy_spec(
            self, environMock, chartConfigMock):
        chart = Chart({'name': {'values': {}}}, None)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False
        chartConfig.debug = False
        chart.args = ['thing=$(environVar)']
        environMock.environ = {}

        chart._check_env_vars()
        self.assertEqual(chart.args[0], 'thing=$(environVar)')
Пример #2
0
    def test_interpolation_of_env_vars(self, environMock, chartConfigMock):
        chart = Chart({'name': {'values': {}}}, None)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False

        chart.args = ['thing=${environVar}', 'another=$environVar']
        environMock.environ = {'environVar': 'asdf'}

        chart._check_env_vars()
        self.assertEqual(chart.args[0], 'thing=asdf')
        self.assertEqual(chart.args[1], 'another=asdf')
Пример #3
0
    def test_flat_key_values(self, chartConfigMock):
        chart = Chart(self.chart_object, None)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False

        self.assertEqual(chart.args, [],
                         "self.args should be empty before running")
        chart.build_set_string_arguments()
        self.assertEqual(
            chart.args, ["--set-string", "keyone=valueone"],
            "Expected build_set_arguments to build --set args correctly.")
Пример #4
0
    def test_interpolation_of_missing_env_vars(self, environMock,
                                               chartConfigMock):
        chart = Chart({'name': {'values': {}}}, None)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False

        chart.args = ['thing=${environVar}']
        environMock.environ = {}

        with self.assertRaises(Exception):
            chart._check_env_vars()
Пример #5
0
    def test_chart_install(self, repositoryMock):
        repo_mock = repositoryMock()
        repo_mock.chart_path = ""
        helm_client_mock = mock.MagicMock()

        chart = Chart({'nameofchart': {'namespace': 'fakenamespace', 'set-values': {}}}, helm_client_mock)
        chart.config.dryrun = False

        chart.install()
        helm_client_mock.upgrade.assert_called_once()
        upgrade_call = helm_client_mock.upgrade.call_args
        self.assertEqual(upgrade_call[0][0], ['nameofchart', '', '--namespace', 'fakenamespace'])
Пример #6
0
    def test_null_value(self, chartConfigMock):
        chart = Chart(self.chart_object, None)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False
        chart.values_strings = {
            "testnull": None,
        }

        chart.build_set_string_arguments()
        self.assertEqual(chart.args, [
            "--set-string",
            "testnull=null",
        ])
Пример #7
0
 def test_chart_initializes_empty_file_paths(self, chartConfigMock):
     """Assert that we initialize the empty list for new charts"""
     chart = Chart({"fake-chart": {}}, None)
     chartConfig = chartConfigMock()
     chartConfig.course_base_directory = '.'
     chartConfig.dryrun = False
     self.assertEqual(chart._temp_values_file_paths, [])
Пример #8
0
    def test_yaml_loaded_integration(self):
        yaml_file = StringIO('''
---
charts:
  my-chart:
    values-strings:
      keyone: value one
      keytwo:
        keythree: value three
        keyfour:
        - --settings
      keyfive:
      - --one
      - --two
      deeplynested_objects:
      - name: hiya
        another:
          nested: value
          nesting: value
      - non: conforming
        lists:
        - more lists
        - and more
        - and:
            a_random_dict: value
''')
        course = Handler.load(yaml_file)
        chart = Chart(course["charts"], None)
        chart.build_set_string_arguments()
        self.assertEqual(chart.args, [
            "--set-string", "keyone=value one",
            "--set-string", "keytwo.keythree=value three",
            "--set-string", "keytwo.keyfour[0]=--settings",
            "--set-string", "keyfive[0]=--one",
            "--set-string", "keyfive[1]=--two",
            "--set-string", "deeplynested_objects[0].name=hiya",
            "--set-string", "deeplynested_objects[0].another.nested=value",
            "--set-string", "deeplynested_objects[0].another.nesting=value",
            "--set-string", "deeplynested_objects[1].non=conforming",
            "--set-string", "deeplynested_objects[1].lists[0]=more lists",
            "--set-string", "deeplynested_objects[1].lists[1]=and more",
            "--set-string", "deeplynested_objects[1].lists[2].and.a_random_dict=value",
        ])
Пример #9
0
    def test_chart_install(self, repositoryMock, chartConfigMock):
        repo_mock = repositoryMock()
        repo_mock.chart_path = ""
        helm_client_mock = mock.MagicMock()

        chart = Chart(
            {'nameofchart': {
                'namespace': 'fakenamespace',
                'set-values': {}
            }}, helm_client_mock)
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = False
        chartConfig.debug = False
        chartConfig.create_namespace = True
        chartConfig.cluster_namespaces = []

        chart.install()
        helm_client_mock.upgrade.assert_called_once()
        upgrade_call = helm_client_mock.upgrade.call_args
        self.assertEqual(upgrade_call[0][0],
                         ['nameofchart', '', '--namespace', 'fakenamespace'])
Пример #10
0
    def test_dicts(self):
        chart = Chart(self.chart_object, None)
        chart.values_strings = {
            "levelone": {
                "leveltwo": "valuetwo",
            }
        }

        chart.build_set_string_arguments()
        self.assertEqual(chart.args, ["--set-string", "levelone.leveltwo=valuetwo"])

        chart.args = []
        chart.values_strings = {
            "levelone": {
                "leveltwo": {
                    "levelthree": {
                        "levelfour": "value four",
                    }
                }
            }
        }
        chart.build_set_string_arguments()
        self.assertEqual(chart.args, ["--set-string", "levelone.leveltwo.levelthree.levelfour=value four"])
Пример #11
0
    def get_chart(self, *args):
        chart = Chart(
            {'name': {
                'hooks': {
                    'pre_install': [
                        'omg',
                    ],
                    'post_install': [
                        'fetchez --la-vache',
                        'mooooooooo!',
                    ]
                }
            }
            },
            None,
        )
        chart.config.dryrun = False

        return chart
Пример #12
0
    def test_extra_config_args(self, chartConfigMock):

        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chartConfig.dryrun = True
        chartConfig.helm_args = ['extra', 'helm', 'args']
        chartConfig.dryrun = True

        helm_client_mock = mock.MagicMock()
        chart = Chart(
            {
                'nameofchart': {
                    'namespace': 'fakenamespace',
                    'hooks': {
                        'pre_install': 'command'
                    },
                    'plugin': 'someplugin',
                    'set-values': {}
                }
            }, helm_client_mock)
        self.assertEqual(chart.helm_args, ['extra', 'helm', 'args'])
        self.assertEqual(chart.debug_args, ['--dry-run', '--debug'])
Пример #13
0
    def test_hooks_parsed(self, chartConfigMock):
        helm_client_mock = mock.MagicMock()
        chartConfig = chartConfigMock()
        chartConfig.course_base_directory = '.'
        chart = Chart(
            {
                'nameofchart': {
                    'namespace': 'fakenamespace',
                    'hooks': {
                        'pre_install': 'command'
                    },
                    'plugin': 'someplugin',
                    'set-values': {}
                }
            }, helm_client_mock)

        self.assertIsInstance(chart.hooks, (dict))
        self.assertIsInstance(chart.pre_install_hook, (Hook))
        self.assertIsInstance(chart.post_install_hook, (Hook))

        self.assertEqual(chart.pre_install_hook.commands, ['command'])
        self.assertEqual(chart.post_install_hook.commands, [])
Пример #14
0
    def test_flat_key_values(self):
        chart = Chart(self.chart_object, None)

        self.assertEqual(chart.args, [], "self.args should be empty before running")
        chart.build_set_string_arguments()
        self.assertEqual(chart.args, ["--set-string", "keyone=valueone"], "Expected build_set_arguments to build --set args correctly.")
Пример #15
0
 def test_remove_temp_files(self, mock_os):
     """Assert that a temp file in the list has os.remove called against it"""
     chart = Chart({"fake-chart": {}}, None)
     chart._temp_values_file_paths.append('non/existent-path')
     chart.clean_up_temp_files()
     mock_os.remove.assert_called_once()
Пример #16
0
 def test_chart_initializes_empty_file_paths(self):
     """Assert that we initialize the empty list for new charts"""
     chart = Chart({"fake-chart": {}}, None)
     self.assertEqual(chart._temp_values_file_paths, [])