Esempio n. 1
0
    def from_file(cls, connection_name: str) -> Optional['JiraConnection']:
        """
        Raises ConfigError if file is missing, internal data fails validation, or assignee list fails to be queried
        """
        config_file = cls._build_config(connection_name)
        if not os.path.isfile(config_file):
            raise ConfigError(
                'Cannot initialize JIRA instance: {}. Missing config file: {}'.
                format(connection_name, cls._build_config(connection_name)))

        try:
            cp = configparser.RawConfigParser()
            cp.read(cls._build_config(connection_name))
            url = cp.get('Connection', 'url').rstrip('/')
            user = decode(encode_password(), cp.get('Connection', 'user'))
            password = decode(encode_password(),
                              cp.get('Connection', 'password'))

            result = JiraConnection(connection_name, url, user, password)
            result.possible_projects = cp.get('Connection',
                                              'projects').split(',')

            return result
        except configparser.NoOptionError as e:
            print('Failed to create JiraConnection from file: {}. Error: {}'.
                  format(config_file, str(e)))
            return None
Esempio n. 2
0
    def save_connection_config(self) -> None:
        if self.name and self.url:
            config_parser = RawConfigParser()
            config_parser.add_section(SECTION_TITLE)
            config_parser.set(SECTION_TITLE, 'url', self.url)

            if self._requires_auth:
                config_parser.set(SECTION_TITLE, 'username',
                                  self._auth['username'])
                password = encode(encode_password(), self._auth['password'])
                config_parser.set(SECTION_TITLE, 'password', password)

            if self.jenkins_views:
                config_parser.set(SECTION_TITLE, 'views',
                                  ','.join(self.view_names))

                for view in self.views:
                    view.save_view_config()

            save_argus_config(
                config_parser,
                build_config_file(jenkins_connections_dir, self.name))
        else:
            raise ConfigError(
                'No data to save in JenkinsConnection config file.')
Esempio n. 3
0
    def save_config(self) -> None:
        """
        Blindly overwrites existing config file for connection.
        """
        config_parser = configparser.RawConfigParser()
        config_parser.add_section('Connection')
        config_parser.set('Connection', 'url', self._url)
        config_parser.set('Connection', 'user',
                          encode(encode_password(), self._user))
        config_parser.set('Connection', 'password',
                          encode(encode_password(), self._pass))
        config_parser.set('Connection', 'projects',
                          ','.join(self.possible_projects))

        save_argus_config(config_parser,
                          self._build_config(self.connection_name))
Esempio n. 4
0
    def load_connection_config(jenkins_manager: 'JenkinsManager',
                               connection_name: str) -> None:
        config_file = build_config_file(jenkins_connections_dir,
                                        connection_name)
        if os.path.isfile(config_file):
            config_parser = RawConfigParser()
            config_parser.read(config_file)
            url = config_parser.get(SECTION_TITLE, 'url')
            auth = {}

            if config_parser.has_option(SECTION_TITLE, 'password'):
                auth['username'] = config_parser.get(SECTION_TITLE, 'username')
                auth['password'] = decode(
                    encode_password(),
                    config_parser.get(SECTION_TITLE, 'password'))

            try:
                jenkins_connection = JenkinsConnection(connection_name,
                                                       url,
                                                       auth=auth)
                if config_parser.has_option(SECTION_TITLE, 'views'):
                    view_names = config_parser.get(SECTION_TITLE,
                                                   'views').split(',')
                    print('Loading Jenkins views for connection: {}'.format(
                        connection_name))
                    for view_name in view_names:
                        JenkinsView.load_view_config(jenkins_connection,
                                                     view_name)
                jenkins_manager.jenkins_connections[
                    jenkins_connection.name] = jenkins_connection
            except Exception as e:
                print(
                    'WARNING! Error occurred during creation of Jenkins instance: {}.'
                    .format(e))
                print(
                    'Skipping addition of this instance. Check routing to url: {}'
                    .format(url))
                pause()
        else:
            'No config file for {}.'.format(connection_name)