def _move_configviewer_dirs_to_final_destination(self, hosts):
        LOGGER.info("Updating configviewer data.")

        for host in hosts:
            temp_path = build_config_viewer_host_directory(host, revision=self.revision)
            dest_path = build_config_viewer_host_directory(host)

            if exists(dest_path):
                path_to_revision_file = join(dest_path, "%s.rev" % host)
                revision_from_file = self._read_integer_from_file(path_to_revision_file)

                if revision_from_file > int(self.revision):
                    LOGGER.debug(
                        'Will not update configviewer data for host "%s" since the current revision file contains revision %d which is higher than %s',
                        host,
                        revision_from_file,
                        self.revision,
                    )
                    rmtree(temp_path)
                    continue

                rmtree(dest_path)

            LOGGER.debug('Updating configviewer data for host "%s"', host)
            move(temp_path, dest_path)
    def test_should_move_or_remove_temporary_directories(self):

        config_rpm_maker = self._given_config_rpm_maker()

        self.write_revision_file_for_hostname('tuvweb01', revision='3')
        self.write_revision_file_for_hostname('berweb01', revision='4')

        config_rpm_maker.build()

        self.assert_path_does_not_exist(build_config_viewer_host_directory('devweb01', revision='2'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('tuvweb01', revision='2'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('berweb01', revision='2'))
Example #3
0
    def test_should_move_or_remove_temporary_directories(self):

        config_rpm_maker = self._given_config_rpm_maker()

        self.write_revision_file_for_hostname('tuvweb01', revision='3')
        self.write_revision_file_for_hostname('berweb01', revision='4')

        config_rpm_maker.build()

        self.assert_path_does_not_exist(build_config_viewer_host_directory('devweb01', revision='2'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('tuvweb01', revision='2'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('berweb01', revision='2'))
    def test_should_not_delete_host_directory_when_a_file_has_been_deleted_in_repository_host_directory(self):

        svn_service = SvnService(base_url=self.repo_url, path_to_config=get_svn_path_to_config())
        ConfigRpmMaker('1', svn_service).build()

        if call('svn delete -q -m "deleting hostspecific file devweb01" %s/config/host/devweb01/host_specific_file' % self.repo_url, shell=True):
            raise IntegrationTestException('Could not delete test data.')

        clean_up_deleted_hosts_data(svn_service, '3')

        self.assert_path_exists(build_config_viewer_host_directory('berweb01'))
        self.assert_path_exists(build_config_viewer_host_directory('tuvweb01'))
        self.assert_path_exists(build_config_viewer_host_directory('devweb01'))
    def test_should_delete_config_viewer_host_directories_when_directories_have_been_deleted_in_repository(self):

        svn_service = SvnService(base_url=self.repo_url, path_to_config=get_svn_path_to_config())
        ConfigRpmMaker('1', svn_service).build()

        if call('svn delete -q -m "deleting host tuvweb01 and devweb01" {0}/config/host/devweb01 {0}/config/host/tuvweb01'.format(self.repo_url), shell=True):
            raise IntegrationTestException('Could not delete test data.')

        clean_up_deleted_hosts_data(svn_service, '3')

        self.assert_path_exists(build_config_viewer_host_directory('berweb01'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('devweb01'))
        self.assert_path_does_not_exist(build_config_viewer_host_directory('tuvweb01'))
 def __init__(self,
              thread_name,
              hostname,
              revision,
              work_dir,
              svn_service_queue,
              error_logging_handler=None):
     self.thread_name = thread_name
     self.hostname = hostname
     self.revision = revision
     self.work_dir = work_dir
     self.error_logging_handler = error_logging_handler
     self.output_file_path = os.path.join(self.work_dir,
                                          self.hostname + '.output')
     self.error_file_path = os.path.join(self.work_dir,
                                         self.hostname + '.error')
     self.logger = self._create_logger()
     self.svn_service_queue = svn_service_queue
     self.config_rpm_prefix = get_config_rpm_prefix()
     self.host_config_dir = os.path.join(
         self.work_dir, self.config_rpm_prefix + self.hostname)
     self.variables_dir = os.path.join(self.host_config_dir, 'VARIABLES')
     self.rpm_requires_path = os.path.join(self.variables_dir,
                                           'RPM_REQUIRES')
     self.rpm_provides_path = os.path.join(self.variables_dir,
                                           'RPM_PROVIDES')
     self.spec_file_path = os.path.join(
         self.host_config_dir,
         self.config_rpm_prefix + self.hostname + '.spec')
     self.config_viewer_host_dir = build_config_viewer_host_directory(
         hostname, revision=self.revision)
     self.rpm_build_dir = os.path.join(self.work_dir, 'rpmbuild')
    def test_should_return_path_and_append_a_postfix(self, mock_get):

        mock_get.return_value = 'path-to-config-viewer-host-directory'

        actual_path = build_config_viewer_host_directory('devweb01', revision='123')

        mock_get.assert_called_with()
        self.assertEqual('path-to-config-viewer-host-directory/devweb01.new-revision-123', actual_path)
Example #8
0
    def assert_revision_file_contains_revision(self, hostname, revision):

        config_viewer_host_data = build_config_viewer_host_directory(hostname)
        error_message = 'Directory "%s" does not exist.' % config_viewer_host_data
        self.assertTrue(exists(config_viewer_host_data), error_message)

        revision_file_path = join(config_viewer_host_data, '%s.rev' % hostname)
        self.assert_file_content(revision_file_path, revision)
    def assert_revision_file_contains_revision(self, hostname, revision):

        config_viewer_host_data = build_config_viewer_host_directory(hostname)
        error_message = 'Directory "%s" does not exist.' % config_viewer_host_data
        self.assertTrue(exists(config_viewer_host_data), error_message)

        revision_file_path = join(config_viewer_host_data, '%s.rev' % hostname)
        self.assert_file_content(revision_file_path, revision)
    def test_should_not_delete_host_directory_when_a_file_has_been_deleted_in_repository_host_directory(
            self):

        svn_service = SvnService(base_url=self.repo_url,
                                 path_to_config=get_svn_path_to_config())
        ConfigRpmMaker('1', svn_service).build()

        if call('svn delete -q -m "deleting hostspecific file devweb01" %s/config/host/devweb01/host_specific_file'
                % self.repo_url,
                shell=True):
            raise IntegrationTestException('Could not delete test data.')

        clean_up_deleted_hosts_data(svn_service, '3')

        self.assert_path_exists(build_config_viewer_host_directory('berweb01'))
        self.assert_path_exists(build_config_viewer_host_directory('tuvweb01'))
        self.assert_path_exists(build_config_viewer_host_directory('devweb01'))
    def test_should_return_path_to_host_directory(self, mock_get):

        mock_get.return_value = 'path-to-config-viewer-host-directory'

        actual_path = build_config_viewer_host_directory('devweb01')

        mock_get.assert_called_with()
        self.assertEqual('path-to-config-viewer-host-directory/devweb01', actual_path)
Example #12
0
def _delete_host_directory(host_name):
    """ deletes the config viewer data for the given host name """

    host_directory = build_config_viewer_host_directory(host_name)
    if exists(host_directory):
        LOGGER.info('Deleting config viewer data for host "%s"', host_name)
        rmtree(host_directory)
    else:
        verbose(LOGGER).debug('Wanted to delete host directory "%s", but it did not exist.' % host_directory)
Example #13
0
    def test_should_return_path_to_host_directory(self, mock_get):

        mock_get.return_value = 'path-to-config-viewer-host-directory'

        actual_path = build_config_viewer_host_directory('devweb01')

        mock_get.assert_called_with()
        self.assertEqual('path-to-config-viewer-host-directory/devweb01',
                         actual_path)
    def write_revision_file_for_hostname(self, hostname, revision):

        config_viewer_host_directory = build_config_viewer_host_directory(hostname)

        if not exists(config_viewer_host_directory):
            makedirs(config_viewer_host_directory)

        revision_file_path = join(config_viewer_host_directory, '%s.rev' % hostname)
        with open(revision_file_path, "w") as revision_file:
            revision_file.write(revision)
    def test_should_delete_config_viewer_host_directories_when_directories_have_been_deleted_in_repository(
            self):

        svn_service = SvnService(base_url=self.repo_url,
                                 path_to_config=get_svn_path_to_config())
        ConfigRpmMaker('1', svn_service).build()

        if call('svn delete -q -m "deleting host tuvweb01 and devweb01" {0}/config/host/devweb01 {0}/config/host/tuvweb01'
                .format(self.repo_url),
                shell=True):
            raise IntegrationTestException('Could not delete test data.')

        clean_up_deleted_hosts_data(svn_service, '3')

        self.assert_path_exists(build_config_viewer_host_directory('berweb01'))
        self.assert_path_does_not_exist(
            build_config_viewer_host_directory('devweb01'))
        self.assert_path_does_not_exist(
            build_config_viewer_host_directory('tuvweb01'))
Example #16
0
    def test_should_return_path_and_append_a_postfix(self, mock_get):

        mock_get.return_value = 'path-to-config-viewer-host-directory'

        actual_path = build_config_viewer_host_directory('devweb01',
                                                         revision='123')

        mock_get.assert_called_with()
        self.assertEqual(
            'path-to-config-viewer-host-directory/devweb01.new-revision-123',
            actual_path)
Example #17
0
def _delete_host_directory(host_name):
    """ deletes the config viewer data for the given host name """

    host_directory = build_config_viewer_host_directory(host_name)
    if exists(host_directory):
        LOGGER.info('Deleting config viewer data for host "%s"', host_name)
        rmtree(host_directory)
    else:
        verbose(LOGGER).debug(
            'Wanted to delete host directory "%s", but it did not exist.' %
            host_directory)
Example #18
0
    def write_revision_file_for_hostname(self, hostname, revision):

        config_viewer_host_directory = build_config_viewer_host_directory(
            hostname)

        if not exists(config_viewer_host_directory):
            makedirs(config_viewer_host_directory)

        revision_file_path = join(config_viewer_host_directory,
                                  '%s.rev' % hostname)
        with open(revision_file_path, "w") as revision_file:
            revision_file.write(revision)
Example #19
0
    def _move_configviewer_dirs_to_final_destination(self, hosts):
        LOGGER.info("Updating configviewer data.")

        for host in hosts:
            temp_path = build_config_viewer_host_directory(
                host, revision=self.revision)
            dest_path = build_config_viewer_host_directory(host)

            if exists(dest_path):
                path_to_revision_file = join(dest_path, "%s.rev" % host)
                revision_from_file = self._read_integer_from_file(
                    path_to_revision_file)

                if revision_from_file > int(self.revision):
                    LOGGER.debug(
                        'Will not update configviewer data for host "%s" since the current revision file contains revision %d which is higher than %s',
                        host, revision_from_file, self.revision)
                    rmtree(temp_path)
                    continue

                rmtree(dest_path)

            LOGGER.debug('Updating configviewer data for host "%s"', host)
            move(temp_path, dest_path)
    def test_should_write_revision_file(self):

        svn_service_queue = self.create_svn_service_queue()
        host_rpm_builder = HostRpmBuilder(thread_name="Thread-0",
                                          revision='1',
                                          hostname="berweb01",
                                          work_dir=self.temporary_directory,
                                          svn_service_queue=svn_service_queue)

        host_rpm_builder.build()

        host_directory = build_config_viewer_host_directory("berweb01", revision='1')
        revision_file_path = join(host_directory, 'berweb01.rev')

        self.assert_path_exists(revision_file_path)
        self.assert_file_content(revision_file_path, '1')
Example #21
0
    def test_should_write_revision_file(self):

        svn_service_queue = self.create_svn_service_queue()
        host_rpm_builder = HostRpmBuilder(thread_name="Thread-0",
                                          revision='1',
                                          hostname="berweb01",
                                          work_dir=self.temporary_directory,
                                          svn_service_queue=svn_service_queue)

        host_rpm_builder.build()

        host_directory = build_config_viewer_host_directory("berweb01",
                                                            revision='1')
        revision_file_path = join(host_directory, 'berweb01.rev')

        self.assert_path_exists(revision_file_path)
        self.assert_file_content(revision_file_path, '1')