Example #1
0
    def test_branch_is_added_after_initial_expand_and_removed_if_not_nec(self):
        ensure_environment(self.settings, 'test', 'master')
        murdock_path = self._create_fake_hostgroup('murdock', ['qa'])

        self._jens_update()

        # --- Add override

        add_branch_to_repo(self.settings, murdock_path, 'foo')
        destroy_environment(self.settings, 'test')
        ensure_environment(self.settings, 'test', 'master',
            hostgroups=['murdock:foo'])

        self._jens_update()

        self.assertBare('hostgroups/murdock')
        for branch in MANDATORY_BRANCHES:
            self.assertClone('hostgroups/murdock/%s' % branch)
        self.assertClone('hostgroups/murdock/foo')
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'foo')

        # --- Remove it

        destroy_environment(self.settings, 'test')
        ensure_environment(self.settings, 'test', 'master')

        self._jens_update()

        self.assertBare('hostgroups/murdock')
        for branch in MANDATORY_BRANCHES:
            self.assertClone('hostgroups/murdock/%s' % branch)
        self.assertNotClone('hostgroups/murdock/foo')
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'master')
Example #2
0
    def test_environments_with_no_default_can_be_modified(self):
        guy_path = self._create_fake_module('guy', ['qa'])
        commit_id = get_refs(guy_path + '/.git')['qa']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)
        ensure_environment(self.settings, 'test', None,
            modules=["guy:%s" % override])

        self._jens_update()

        self.assertBare('modules/guy')
        self.assertClone('modules/guy/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'modules/guy', override)

        # ---- Point the override to a different commit

        destroy_environment(self.settings, 'test')
        commit_id = get_refs(guy_path + '/.git')['master']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)
        ensure_environment(self.settings, 'test', None,
            modules=["guy:%s" % override])

        self._jens_update()

        self.assertBare('modules/guy')
        self.assertClone('modules/guy/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'modules/guy', override)
Example #3
0
    def test_environments_with_no_default_can_be_modified(self):
        guy_path = self._create_fake_module('guy', ['qa'])
        commit_id = get_refs(guy_path + '/.git')['qa']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)
        ensure_environment(self.settings, 'test', None,
            modules=["guy:%s" % override])

        self._jens_update()

        self.assertBare('modules/guy')
        self.assertClone('modules/guy/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'modules/guy', override)

        # ---- Point the override to a different commit

        destroy_environment(self.settings, 'test')
        commit_id = get_refs(guy_path + '/.git')['master']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)
        ensure_environment(self.settings, 'test', None,
            modules=["guy:%s" % override])

        self._jens_update()

        self.assertBare('modules/guy')
        self.assertClone('modules/guy/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'modules/guy', override)
Example #4
0
    def test_branch_is_added_after_initial_expand_and_removed_if_not_nec(self):
        ensure_environment(self.settings, 'test', 'master')
        murdock_path = self._create_fake_hostgroup('murdock', ['qa'])

        self._jens_update()

        # --- Add override

        add_branch_to_repo(self.settings, murdock_path, 'foo')
        destroy_environment(self.settings, 'test')
        ensure_environment(self.settings, 'test', 'master',
            hostgroups=['murdock:foo'])

        self._jens_update()

        self.assertBare('hostgroups/murdock')
        for branch in MANDATORY_BRANCHES:
            self.assertClone('hostgroups/murdock/%s' % branch)
        self.assertClone('hostgroups/murdock/foo')
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'foo')

        # --- Remove it

        destroy_environment(self.settings, 'test')
        ensure_environment(self.settings, 'test', 'master')

        self._jens_update()

        self.assertBare('hostgroups/murdock')
        for branch in MANDATORY_BRANCHES:
            self.assertClone('hostgroups/murdock/%s' % branch)
        self.assertNotClone('hostgroups/murdock/foo')
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'master')
Example #5
0
    def test_override_not_deleted_if_shared(self):
        ensure_environment(self.settings, 'test', 'master')
        self._create_fake_hostgroup('murdock', ['qa', 'aijens_etcd'])
        sonic_path = self._create_fake_module('sonic', ['qa'])
        commit_id = get_refs(sonic_path + '/.git')['qa']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)

        self._jens_update()

        self.assertNotClone('hostgroups/murdock/aijens_etcd')

        # ----- Add two environments needing the same override

        ensure_environment(self.settings, 'test', 'master',
            modules=['sonic:%s' % override],
            hostgroups=['murdock:aijens_etcd'])
        ensure_environment(self.settings, 'test2', 'master',
            modules=['sonic:%s' % override],
            hostgroups=['murdock:aijens_etcd'])

        self._jens_update()

        self.assertClone('hostgroups/murdock/aijens_etcd')
        self.assertClone('modules/sonic/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test2", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test", 'modules/sonic', override)
        self.assertEnvironmentOverride("test2", 'modules/sonic', override)
        self.assertEnvironmentNumberOf("test", "modules", 1)
        self.assertEnvironmentNumberOf("test", "hostgroups", 1)
        self.assertEnvironmentNumberOf("test2", "modules", 1)
        self.assertEnvironmentNumberOf("test2", "hostgroups", 1)

        # ----- Destroy one of them

        destroy_environment(self.settings, 'test2')

        self._jens_update()

        self.assertClone('hostgroups/murdock/aijens_etcd')
        self.assertClone('modules/sonic/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentDoesntExist("test2")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test", 'modules/sonic', override)
Example #6
0
    def test_override_not_deleted_if_shared(self):
        ensure_environment(self.settings, 'test', 'master')
        self._create_fake_hostgroup('murdock', ['qa', 'aijens_etcd'])
        sonic_path = self._create_fake_module('sonic', ['qa'])
        commit_id = get_refs(sonic_path + '/.git')['qa']
        override = "{0}{1}".format(COMMIT_PREFIX, commit_id)

        self._jens_update()

        self.assertNotClone('hostgroups/murdock/aijens_etcd')

        # ----- Add two environments needing the same override

        ensure_environment(self.settings, 'test', 'master',
            modules=['sonic:%s' % override],
            hostgroups=['murdock:aijens_etcd'])
        ensure_environment(self.settings, 'test2', 'master',
            modules=['sonic:%s' % override],
            hostgroups=['murdock:aijens_etcd'])

        self._jens_update()

        self.assertClone('hostgroups/murdock/aijens_etcd')
        self.assertClone('modules/sonic/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test2", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test", 'modules/sonic', override)
        self.assertEnvironmentOverride("test2", 'modules/sonic', override)
        self.assertEnvironmentNumberOf("test", "modules", 1)
        self.assertEnvironmentNumberOf("test", "hostgroups", 1)
        self.assertEnvironmentNumberOf("test2", "modules", 1)
        self.assertEnvironmentNumberOf("test2", "hostgroups", 1)

        # ----- Destroy one of them

        destroy_environment(self.settings, 'test2')

        self._jens_update()

        self.assertClone('hostgroups/murdock/aijens_etcd')
        self.assertClone('modules/sonic/.%s' % commit_id, pointsto=commit_id)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentDoesntExist("test2")
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'aijens_etcd')
        self.assertEnvironmentOverride("test", 'modules/sonic', override)
Example #7
0
    def test_environment_completely_deleted_even_if_conf_file_is_present(self):
        self.settings.DIRECTORY_ENVIRONMENTS = True
        self._create_fake_hostgroup('murdock', ['qa', 'foo'])
        ensure_environment(self.settings, 'test', 'master',
            hostgroups=["murdock:foo"])

        self._jens_update()

        self.assertClone('hostgroups/murdock/foo')
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'foo')
        self.assertEnvironmentNumberOf("test", "modules", 0)
        self.assertEnvironmentNumberOf("test", "hostgroups", 1)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentHasAConfigFile("test")

        destroy_environment(self.settings, 'test')

        # ----- This should destroy all, including the configuration file

        self._jens_update()

        self.assertEnvironmentDoesntExist("test")
Example #8
0
    def test_environment_completely_deleted_even_if_conf_file_is_present(self):
        self.settings.DIRECTORY_ENVIRONMENTS = True
        self._create_fake_hostgroup('murdock', ['qa', 'foo'])
        ensure_environment(self.settings, 'test', 'master',
            hostgroups=["murdock:foo"])

        self._jens_update()

        self.assertClone('hostgroups/murdock/foo')
        self.assertEnvironmentOverride("test", 'hostgroups/hg_murdock', 'foo')
        self.assertEnvironmentNumberOf("test", "modules", 0)
        self.assertEnvironmentNumberOf("test", "hostgroups", 1)
        self.assertEnvironmentLinks("test")
        self.assertEnvironmentHasAConfigFile("test")

        destroy_environment(self.settings, 'test')

        # ----- This should destroy all, including the configuration file

        self._jens_update()

        self.assertEnvironmentDoesntExist("test")