Ejemplo n.º 1
0
 def create_svn_service_queue(self):
     svn_service = SvnService(base_url=self.repo_url,
                              username=None,
                              password=None,
                              path_to_config=get_svn_path_to_config())
     svn_service_queue = Queue()
     svn_service_queue.put(svn_service)
     return svn_service_queue
Ejemplo n.º 2
0
    def test_should_raise_SvnServiceException_when_invalid_revision_is_given(
            self):

        service = SvnService(self.repo_url,
                             None,
                             None,
                             path_to_config=get_svn_path_to_config())

        self.assertRaises(SvnServiceException, service.get_changed_paths, 13)
Ejemplo n.º 3
0
    def test_should_return_by_change_set_affected_hosts(self):

        service = SvnService(self.repo_url,
                             None,
                             None,
                             path_to_config=get_svn_path_to_config())

        self.assertEqual(['berweb01', 'devweb00', 'devweb01', 'tuvweb01'],
                         service.get_hosts(2))
Ejemplo n.º 4
0
    def test_should_return_changed_paths(self):

        service = SvnService(self.repo_url,
                             None,
                             None,
                             path_to_config=get_svn_path_to_config())

        self.assertEqual(['typ/web/data/index.html'],
                         service.get_changed_paths(2))
Ejemplo n.º 5
0
    def test_should_return_exactly_one_svn_log(self):

        service = SvnService(self.repo_url,
                             None,
                             None,
                             path_to_config=get_svn_path_to_config())

        logs = service.log('', 2, 5)

        self.assertEqual(1, len(logs))
Ejemplo n.º 6
0
def building_configuration_rpms_and_clean_host_directories(
        repository, revision):
    """ This function will start the process of building configuration rpms
        for the given configuration repository and the revision. """

    path_to_config = get_svn_path_to_config()
    svn_service = SvnService(base_url=repository,
                             path_to_config=path_to_config)
    svn_service.log_change_set_meta_information(revision)
    ConfigRpmMaker(revision=revision, svn_service=svn_service).build()
    clean_up_deleted_hosts_data(svn_service, revision)
    def test_should_return_tuples_of_svn_path_and_the_affected_file(self):

        service = SvnService(self.repo_url,
                             None,
                             None,
                             path_to_config=get_svn_path_to_config())

        self.assertEqual([('host/berweb01', 'VARIABLES'),
                          ('host/berweb01', 'VARIABLES/RPM_REQUIRES'),
                          ('host/berweb01', 'symlinks'),
                          ('host/berweb01', 'symlinks/link1.%symlink')],
                         service.export('host/berweb01', 'target/tmp/test', 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'))
Ejemplo n.º 10
0
    def _given_config_rpm_maker(self):
        svn_service = SvnService(base_url=self.repo_url, path_to_config=get_svn_path_to_config())

        return ConfigRpmMaker('2', svn_service)
    def test_should_create_files_for_hosts(self):

        configuration.set_property(is_no_clean_up_enabled, True)
        svn_service = SvnService(base_url=self.repo_url,
                                 path_to_config=get_svn_path_to_config())

        ConfigRpmMaker('2', svn_service).build()

        self.assert_config_viewer_file(
            'berweb01', 'berweb01.overlaying', """host/berweb01:/VARIABLES
loctyp/berweb:/VARIABLES/OVERRIDE
loc/pro:/VARIABLES/RPM_PROVIDES
host/berweb01:/VARIABLES/RPM_REQUIRES
loctyp/berweb:/VARIABLES/VAR_IN_VAR
typ/web:/data
typ/web:/data/file-with-special-character
typ/web:/data/index.html
typ/web:/data/other.html
loctyp/berweb:/files
all:/files/binary.zip
all:/files/file_from_all
loc/ber:/files/file_from_ber
loc/pro:/files/file_from_pro
loctyp/berweb:/files/override
host/berweb01:/symlinks
host/berweb01:/symlinks/link1.%symlink
loctyp/berweb:/vars
all:/vars/override
loctyp/berweb:/vars/var_in_var
""")

        self.assert_config_viewer_file(
            'berweb01', 'berweb01.variables',
            """<!DOCTYPE html><html><head><title>berweb01.variables</title></head><body><pre>                                 ALIASES :
                                     ALL : all
                                    FQDN : .+
                                    HOST : berweb01
                                  HOSTNR : 01
           INSTALL_PROTECTION_DEPENDENCY : hostname-<strong title="HOST">berweb01</strong>
                                      IP : .+
                                     LOC : ber
                                  LOCTYP : berweb
                                OVERRIDE : berweb
                                REVISION : 2
                                RPM_NAME : berweb01
                            RPM_PROVIDES : pro-prov2, all-prov2, all-prov, pro-prov, typ-web-provides, all-prov3
                            RPM_REQUIRES : ber-req2, pro-req, all-req, ber-req, ty-web-requirement, all-req2, host-spec-requirement
                  RPM_REQUIRES_NON_REPOS : ber-req2, pro-req, all-req, ber-req, ty-web-requirement, all-req2, host-spec-requirement
                      RPM_REQUIRES_REPOS :
                            SHORT_HOSTNR : 1
                                     TYP : web
                              VAR_IN_VAR : <strong title="LOC">ber</strong><strong title="TYP">web</strong><strong title="OVERRIDE">berweb</strong>
</pre></body></html>""")

        self.assert_host_files_are_there('berweb01')
        self.assert_config_viewer_file('berweb01',
                                       join('files', 'file_from_ber'), "")
        self.assert_config_viewer_file('berweb01',
                                       join('files', 'file_from_pro'), "")
        self.assert_config_viewer_file(
            'berweb01', join('files', 'override'),
            "<!DOCTYPE html><html><head><title>override</title></head><body><pre>berweb</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'LOC'),
            "<!DOCTYPE html><html><head><title>LOC</title></head><body><pre>ber</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'LOCTYP'),
            "<!DOCTYPE html><html><head><title>LOCTYP</title></head><body><pre>berweb</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'OVERRIDE'),
            "<!DOCTYPE html><html><head><title>OVERRIDE</title></head><body><pre>berweb</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'RPM_PROVIDES'),
            "<!DOCTYPE html><html><head><title>RPM_PROVIDES</title></head><body><pre>pro-prov2, all-prov2, all-prov, pro-prov, typ-web-provides, all-prov3</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'RPM_REQUIRES'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES</title></head><body><pre>ber-req2, pro-req, all-req, ber-req, ty-web-requirement, all-req2, host-spec-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'RPM_REQUIRES_NON_REPOS'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES_NON_REPOS</title></head><body><pre>ber-req2, pro-req, all-req, ber-req, ty-web-requirement, all-req2, host-spec-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file('berweb01',
                                       join('VARIABLES', 'RPM_REQUIRES_REPOS'),
                                       "")
        self.assert_config_viewer_file(
            'berweb01', join('VARIABLES', 'VAR_IN_VAR'),
            '''<!DOCTYPE html><html><head><title>VAR_IN_VAR</title></head><body><pre><strong title="LOC">ber</strong><strong title="TYP">web</strong><strong title="OVERRIDE">berweb</strong></pre></body></html>'''
        )
        self.assert_config_viewer_file(
            'berweb01', join('vars', 'override'),
            '''<!DOCTYPE html><html><head><title>override</title></head><body><pre><strong title="OVERRIDE">berweb</strong></pre></body></html>'''
        )
        self.assert_config_viewer_file(
            'berweb01', join('vars', 'var_in_var'),
            '''<!DOCTYPE html><html><head><title>var_in_var</title></head><body><pre><strong title="VAR_IN_VAR">berwebberweb</strong></pre></body></html>'''
        )

        self.assert_host_files_are_there('devweb01')
        self.assert_config_viewer_file(
            'devweb01', join('files', 'override'),
            "<!DOCTYPE html><html><head><title>override</title></head><body><pre>all</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'LOC'),
            "<!DOCTYPE html><html><head><title>LOC</title></head><body><pre>dev</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'LOCTYP'),
            "<!DOCTYPE html><html><head><title>LOCTYP</title></head><body><pre>devweb</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'OVERRIDE'),
            "<!DOCTYPE html><html><head><title>OVERRIDE</title></head><body><pre>all</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'RPM_PROVIDES'),
            "<!DOCTYPE html><html><head><title>RPM_PROVIDES</title></head><body><pre>typ-web-provides, all-prov, all-prov2, all-prov3</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'RPM_REQUIRES'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES</title></head><body><pre>all-req2, all-req, ty-web-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'devweb01', join('VARIABLES', 'RPM_REQUIRES_NON_REPOS'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES_NON_REPOS</title></head><body><pre>all-req2, all-req, ty-web-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file('devweb01',
                                       join('VARIABLES', 'RPM_REQUIRES_REPOS'),
                                       "")
        self.assert_config_viewer_file(
            'devweb01', join('vars', 'override'),
            '''<!DOCTYPE html><html><head><title>override</title></head><body><pre><strong title="OVERRIDE">all</strong></pre></body></html>'''
        )

        self.assert_config_viewer_file(
            'devweb01', 'devweb01.overlaying', """host/devweb01:/VARIABLES
host/devweb01:/VARIABLES/DUMMY_VAR1
all:/VARIABLES/OVERRIDE
typ/web:/VARIABLES/RPM_PROVIDES
typ/web:/VARIABLES/RPM_REQUIRES
typ/web:/data
typ/web:/data/file-with-special-character
typ/web:/data/index.html
typ/web:/data/other.html
all:/files
all:/files/binary.zip
all:/files/file_from_all
all:/files/override
host/devweb01:/host_specific_file
all:/vars
all:/vars/override
""")

        self.assert_config_viewer_file(
            'devweb01', 'devweb01.variables',
            """<!DOCTYPE html><html><head><title>devweb01.variables</title></head><body><pre>                                 ALIASES :
                                     ALL : all
                              DUMMY_VAR1 :
                                    FQDN : .+
                                    HOST : devweb01
                                  HOSTNR : 01
           INSTALL_PROTECTION_DEPENDENCY : hostname-<strong title="HOST">devweb01</strong>
                                      IP : .+
                                     LOC : dev
                                  LOCTYP : devweb
                                OVERRIDE : all
                                REVISION : 2
                                RPM_NAME : devweb01
                            RPM_PROVIDES : typ-web-provides, all-prov, all-prov2, all-prov3
                            RPM_REQUIRES : all-req2, all-req, ty-web-requirement
                  RPM_REQUIRES_NON_REPOS : all-req2, all-req, ty-web-requirement
                      RPM_REQUIRES_REPOS :
                            SHORT_HOSTNR : 1
                                     TYP : web
</pre></body></html>""")

        self.assert_host_files_are_there('tuvweb01')

        self.assert_config_viewer_file_exactly(
            'tuvweb01', 'tuvweb01.overlaying', """host/tuvweb01:/VARIABLES
host/tuvweb01:/VARIABLES/DUMMY_VAR2
all:/VARIABLES/OVERRIDE
typ/web:/VARIABLES/RPM_PROVIDES
typ/web:/VARIABLES/RPM_REQUIRES
typ/web:/data
typ/web:/data/file-with-special-character
typ/web:/data/index.html
typ/web:/data/other.html
all:/files
all:/files/binary.zip
all:/files/file_from_all
all:/files/override
all:/vars
all:/vars/override
""")

        self.assert_config_viewer_file(
            'tuvweb01', 'tuvweb01.variables',
            """<!DOCTYPE html><html><head><title>tuvweb01.variables</title></head><body><pre>                                 ALIASES :
                                     ALL : all
                              DUMMY_VAR2 :
                                    FQDN : .+
                                    HOST : tuvweb01
                                  HOSTNR : 01
           INSTALL_PROTECTION_DEPENDENCY : hostname-<strong title="HOST">tuvweb01</strong>
                                      IP : .+
                                     LOC : tuv
                                  LOCTYP : tuvweb
                                OVERRIDE : all
                                REVISION : 2
                                RPM_NAME : tuvweb01
                            RPM_PROVIDES : typ-web-provides, all-prov, all-prov2, all-prov3
                            RPM_REQUIRES : all-req2, all-req, ty-web-requirement
                  RPM_REQUIRES_NON_REPOS : all-req2, all-req, ty-web-requirement
                      RPM_REQUIRES_REPOS :
                            SHORT_HOSTNR : 1
                                     TYP : web
</pre></body></html>""")

        self.assert_config_viewer_file(
            'tuvweb01', join('files', 'override'),
            "<!DOCTYPE html><html><head><title>override</title></head><body><pre>all</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'LOC'),
            "<!DOCTYPE html><html><head><title>LOC</title></head><body><pre>tuv</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'LOCTYP'),
            "<!DOCTYPE html><html><head><title>LOCTYP</title></head><body><pre>tuvweb</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'OVERRIDE'),
            "<!DOCTYPE html><html><head><title>OVERRIDE</title></head><body><pre>all</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'RPM_PROVIDES'),
            "<!DOCTYPE html><html><head><title>RPM_PROVIDES</title></head><body><pre>typ-web-provides, all-prov, all-prov2, all-prov3</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'RPM_REQUIRES'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES</title></head><body><pre>all-req2, all-req, ty-web-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file(
            'tuvweb01', join('VARIABLES', 'RPM_REQUIRES_NON_REPOS'),
            "<!DOCTYPE html><html><head><title>RPM_REQUIRES_NON_REPOS</title></head><body><pre>all-req2, all-req, ty-web-requirement</pre></body></html>"
        )
        self.assert_config_viewer_file('tuvweb01',
                                       join('VARIABLES', 'RPM_REQUIRES_REPOS'),
                                       "")
        self.assert_config_viewer_file(
            'tuvweb01', join('vars', 'override'),
            '''<!DOCTYPE html><html><head><title>override</title></head><body><pre><strong title="OVERRIDE">all</strong></pre></body></html>'''
        )