def __init__(self, *args, **kw): super(GithubService, self).__init__(*args, **kw) self.auth = {} login = self.config_get('login') token = self.config_get_default('token') if token: if token.startswith('@oracle:'): username = self.config_get('username') token = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=token, interactive=self.config.interactive ) self.auth['token'] = token else: password = self.config_get_default('password') if not password or password.startswith('@oracle:'): username = self.config_get('username') password = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=password, interactive=self.config.interactive ) self.auth['basic'] = (login, password) self.exclude_repos = [] if self.config_get_default('exclude_repos', None): self.exclude_repos = [ item.strip() for item in self.config_get('exclude_repos').strip().split(',') ] self.include_repos = [] if self.config_get_default('include_repos', None): self.include_repos = [ item.strip() for item in self.config_get('include_repos').strip().split(',') ] self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool ) self.label_template = self.config_get_default( 'label_template', default='{{label}}', to_type=six.text_type ) self.filter_pull_requests = self.config_get_default( 'filter_pull_requests', default=False, to_type=asbool ) self.involved_issues = self.config_get_default( 'involved_issues', default=False, to_type=asbool )
def __init__(self, *args, **kw): super(GithubService, self).__init__(*args, **kw) self.auth = {} login = self.config_get('login') token = self.config_get_default('token') if token: if token.startswith('@oracle:'): username = self.config_get('username') token = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=token, interactive=self.config.interactive) self.auth['token'] = token else: password = self.config_get_default('password') if not password or password.startswith('@oracle:'): username = self.config_get('username') password = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=password, interactive=self.config.interactive) self.auth['basic'] = (login, password) self.exclude_repos = [] if self.config_get_default('exclude_repos', None): self.exclude_repos = [ item.strip() for item in self.config_get('exclude_repos').strip().split(',') ] self.include_repos = [] if self.config_get_default('include_repos', None): self.include_repos = [ item.strip() for item in self.config_get('include_repos').strip().split(',') ] self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool) self.label_template = self.config_get_default('label_template', default='{{label}}', to_type=six.text_type) self.filter_pull_requests = self.config_get_default( 'filter_pull_requests', default=False, to_type=asbool) self.involved_issues = self.config_get_default('involved_issues', default=False, to_type=asbool)
def __init__(self, *args, **kw): super(BugzillaService, self).__init__(*args, **kw) self.base_uri = self.config_get('base_uri') self.username = self.config_get('username') self.password = self.config_get('password') self.ignore_cc = self.config_get_default('ignore_cc', default=False, to_type=lambda x: x == "True") self.query_url = self.config_get_default('query_url', default=None) self.include_needinfos = self.config_get_default( 'include_needinfos', False, to_type=lambda x: x == "True") self.open_statuses = self.config_get_default( 'open_statuses', _open_statuses, to_type=lambda x: x.split(',')) log.name(self.target).debug(" filtering on statuses: {0}", self.open_statuses) # So more modern bugzilla's require that we specify # query_format=advanced along with the xmlrpc request. # https://bugzilla.redhat.com/show_bug.cgi?id=825370 # ...but older bugzilla's don't know anything about that argument. # Here we make it possible for the user to specify whether they want # to pass that argument or not. self.advanced = asbool(self.config_get_default('advanced', 'no')) if not self.password or self.password.startswith("@oracle:"): self.password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=self.password, interactive=self.config.interactive ) url = 'https://%s/xmlrpc.cgi' % self.base_uri self.bz = bugzilla.Bugzilla(url=url) self.bz.login(self.username, self.password)
def __init__(self, *args, **kw): super(GitlabService, self).__init__(*args, **kw) host = self.config_get_default("host", default="gitlab.com", to_type=six.text_type) self.login = self.config_get("login") token = self.config_get("token") if not token or token.startswith("@oracle:"): token = get_service_password( self.get_keyring_service(self.config, self.target), self.login, oracle=password, interactive=self.config.interactive, ) self.auth = (host, token) if self.config_get_default("use_https", default=True, to_type=asbool): self.scheme = "https" else: self.scheme = "http" self.exclude_repos = [] if self.config_get_default("exclude_repos", None): self.exclude_repos = [item.strip() for item in self.config_get("exclude_repos").strip().split(",")] self.include_repos = [] if self.config_get_default("include_repos", None): self.include_repos = [item.strip() for item in self.config_get("include_repos").strip().split(",")] self.import_labels_as_tags = self.config_get_default("import_labels_as_tags", default=False, to_type=asbool) self.label_template = self.config_get_default("label_template", default="{{label}}", to_type=six.text_type) self.filter_merge_requests = self.config_get_default("filter_merge_requests", default=False, to_type=asbool)
def __init__(self, *args, **kw): super(GithubService, self).__init__(*args, **kw) login = self.config.get(self.target, 'login') password = self.config.get(self.target, 'passw') if not password or password.startswith('@oracle:'): username = self.config.get(self.target, 'username') service = "github://%[email protected]/%s" % (login, username) password = get_service_password(service, login, oracle=password, interactive=self.config.interactive) self.auth = (login, password) self.exclude_repos = [] self.include_repos = [] if self.config.has_option(self.target, 'exclude_repos'): self.exclude_repos = [ item.strip() for item in self.config.get(self.target, 'exclude_repos') .strip().split(',') ] if self.config.has_option(self.target, 'include_repos'): self.include_repos = [ item.strip() for item in self.config.get(self.target, 'include_repos') .strip().split(',') ]
def __init__(self, *args, **kw): super(JiraService, self).__init__(*args, **kw) self.username = self.config_get('username') self.url = self.config_get('base_uri') password = self.config_get('password') if not password or password.startswith("@oracle:"): password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=password, interactive=self.config.interactive) default_query = 'assignee=' + self.username + \ ' AND resolution is null' self.query = self.config_get_default('query', default_query) self.jira = JIRA(options={ 'server': self.config_get('base_uri'), 'rest_api_version': 'latest', 'verify': self.config_get_default('verify_ssl', default=None, to_type=asbool), }, basic_auth=(self.username, password)) self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool) self.label_template = self.config_get_default('label_template', default='{{label}}', to_type=six.text_type)
def __init__(self, *args, **kw): super(BugzillaService, self).__init__(*args, **kw) base_uri = self.config.get(self.target, 'bugzilla.base_uri') username = self.config.get(self.target, 'bugzilla.username') password = self.config.get(self.target, 'bugzilla.password') # So more modern bugzilla's require that we specify # query_format=advanced along with the xmlrpc request. # https://bugzilla.redhat.com/show_bug.cgi?id=825370 # ...but older bugzilla's don't know anything about that argument. # Here we make it possible for the user to specify whether they want # to pass that argument or not. self.advanced = True # Default to True. if self.config.has_option(self.target, 'bugzilla.advanced'): self.advanced = asbool(self.config.get( self.target, 'bugzilla.advanced')) if not password or password.startswith("@oracle:"): service = "bugzilla://%s@%s" % (username, base_uri) password = get_service_password(service, username, oracle=password, interactive=self.config.interactive) url = 'https://%s/xmlrpc.cgi' % base_uri self.bz = bugzilla.Bugzilla(url=url) self.bz.login(username, password)
def __init__(self, *args, **kw): super(GithubService, self).__init__(*args, **kw) login = self.config.get(self.target, 'login') password = self.config.get(self.target, 'passw') if not password or password.startswith('@oracle:'): username = self.config.get(self.target, 'username') service = "github://%[email protected]/%s" % (login, username) password = get_service_password( service, login, oracle=password, interactive=self.config.interactive) self.auth = (login, password) self.exclude_repos = [] self.include_repos = [] if self.config.has_option(self.target, 'exclude_repos'): self.exclude_repos = [ item.strip() for item in self.config.get( self.target, 'exclude_repos').strip().split(',') ] if self.config.has_option(self.target, 'include_repos'): self.include_repos = [ item.strip() for item in self.config.get( self.target, 'include_repos').strip().split(',') ]
def __init__(self, *args, **kw): super(BitbucketService, self).__init__(*args, **kw) self.auth = None if self.config_get_default("login"): login = self.config_get("login") password = self.config_get_default("password") if not password or password.startswith("@oracle:"): username = self.config_get("username") password = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=password, interactive=self.config.interactive, ) self.auth = (login, password) self.exclude_repos = [] if self.config_get_default("exclude_repos", None): self.exclude_repos = [item.strip() for item in self.config_get("exclude_repos").strip().split(",")] self.include_repos = [] if self.config_get_default("include_repos", None): self.include_repos = [item.strip() for item in self.config_get("include_repos").strip().split(",")] self.filter_merge_requests = self.config_get_default("filter_merge_requests", default=False, to_type=asbool)
def __init__(self, *args, **kw): super(BugzillaService, self).__init__(*args, **kw) base_uri = self.config.get(self.target, 'bugzilla.base_uri') username = self.config.get(self.target, 'bugzilla.username') password = self.config.get(self.target, 'bugzilla.password') # So more modern bugzilla's require that we specify # query_format=advanced along with the xmlrpc request. # https://bugzilla.redhat.com/show_bug.cgi?id=825370 # ...but older bugzilla's don't know anything about that argument. # Here we make it possible for the user to specify whether they want # to pass that argument or not. self.advanced = True # Default to True. if self.config.has_option(self.target, 'bugzilla.advanced'): self.advanced = asbool( self.config.get(self.target, 'bugzilla.advanced')) if not password or password.startswith("@oracle:"): service = "bugzilla://%s@%s" % (username, base_uri) password = get_service_password( service, username, oracle=password, interactive=self.config.interactive) url = 'https://%s/xmlrpc.cgi' % base_uri self.bz = bugzilla.Bugzilla(url=url) self.bz.login(username, password)
def __init__(self, *args, **kw): super(BitbucketService, self).__init__(*args, **kw) self.auth = None if self.config_get_default('login'): login = self.config_get('login') password = self.config_get_default('password') if not password or password.startswith('@oracle:'): username = self.config_get('username') password = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=password, interactive=self.config.interactive) self.auth = (login, password) self.exclude_repos = [] if self.config_get_default('exclude_repos', None): self.exclude_repos = [ item.strip() for item in self.config_get('exclude_repos').strip().split(',') ] self.include_repos = [] if self.config_get_default('include_repos', None): self.include_repos = [ item.strip() for item in self.config_get('include_repos').strip().split(',') ] self.filter_merge_requests = self.config_get_default( 'filter_merge_requests', default=False, to_type=asbool)
def __init__(self, *args, **kw): super(BugzillaService, self).__init__(*args, **kw) self.base_uri = self.config_get('base_uri') self.username = self.config_get('username') self.password = self.config_get('password') self.ignore_cc = self.config_get_default('ignore_cc', default=False, to_type=lambda x: x == "True") self.query_url = self.config_get_default('query_url', default=None) self.include_needinfos = self.config_get_default( 'include_needinfos', False, to_type=lambda x: x == "True") self.open_statuses = self.config_get_default( 'open_statuses', _open_statuses, to_type=lambda x: x.split(',')) log.name(self.target).debug(" filtering on statuses: {0}", self.open_statuses) # So more modern bugzilla's require that we specify # query_format=advanced along with the xmlrpc request. # https://bugzilla.redhat.com/show_bug.cgi?id=825370 # ...but older bugzilla's don't know anything about that argument. # Here we make it possible for the user to specify whether they want # to pass that argument or not. self.advanced = asbool(self.config_get_default('advanced', 'no')) if not self.password or self.password.startswith("@oracle:"): self.password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=self.password, interactive=self.config.interactive) url = 'https://%s/xmlrpc.cgi' % self.base_uri self.bz = bugzilla.Bugzilla(url=url) self.bz.login(self.username, self.password)
def __init__(self, *args, **kw): super(JiraService, self).__init__(*args, **kw) self.username = self.config_get("username") self.url = self.config_get("base_uri") password = self.config_get("password") if not password or password.startswith("@oracle:"): password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=password, interactive=self.config.interactive, ) default_query = "assignee=" + self.username + " AND resolution is null" self.query = self.config_get_default("query", default_query) self.jira = JIRA( options={ "server": self.config_get("base_uri"), "rest_api_version": "latest", "verify": self.config_get_default("verify_ssl", default=None, to_type=asbool), }, basic_auth=(self.username, password), ) self.import_labels_as_tags = self.config_get_default("import_labels_as_tags", default=False, to_type=asbool) self.label_template = self.config_get_default("label_template", default="{{label}}", to_type=six.text_type)
def __init__(self, *args, **kw): super(JiraService, self).__init__(*args, **kw) self.username = self.config_get('username') self.url = self.config_get('base_uri') password = self.config_get('password') if not password or password.startswith("@oracle:"): password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=password, interactive=self.config.interactive ) default_query = 'assignee=' + self.username + \ ' AND status != closed and status != resolved' self.query = self.config_get_default('query', default_query) self.jira = JIRA( options={ 'server': self.config_get('base_uri'), 'rest_api_version': 'latest', 'verify': self.config_get_default('verify_ssl', default=None, to_type=asbool), }, basic_auth=(self.username, password) ) self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool ) self.label_template = self.config_get_default( 'label_template', default='{{label}}', to_type=six.text_type )
def config_get_password(self, key, login): password = self.config_get_default(key) keyring_service = self.get_keyring_service(self.config, self.target), if not password or password.startswith("@oracle:"): password = get_service_password( keyring_service, login, oracle=password, interactive=self.config.interactive) return password
def get_password(self, key, login='******'): password = self.config.get(key) keyring_service = self.get_keyring_service(self.config) if not password or password.startswith("@oracle:"): password = get_service_password( keyring_service, login, oracle=password, interactive=self.config.interactive) return password
def __init__(self, *args, **kw): super(TracService, self).__init__(*args, **kw) base_uri = self.config.get(self.target, 'trac.base_uri') username = self.config.get(self.target, 'trac.username') password = self.config.get(self.target, 'trac.password') if not password or password.startswith('@oracle:'): service = "https://%s@%s/" % (username, base_uri) password = get_service_password(service, username, oracle=password, interactive=self.config.interactive) uri = 'https://%s:%s@%s/login/xmlrpc' % (username, password, base_uri) self.trac = offtrac.TracServer(uri)
def __init__(self, *args, **kw): super(BitbucketService, self).__init__(*args, **kw) self.auth = None if self.config_get_default('login'): login = self.config_get('login') password = self.config_get_default('password') if not password or password.startswith('@oracle:'): username = self.config_get('username') password = get_service_password( self.get_keyring_service(self.config, self.target), login, oracle=password, interactive=self.config.interactive) self.auth = (login, password)
def __init__(self, *args, **kw): super(BitbucketService, self).__init__(*args, **kw) self.auth = None if self.config.has_option(self.target, 'login'): login = self.config.get(self.target, 'login') password = self.config.get(self.target, 'passw') if not password or password.startswith('@oracle:'): username = self.config.get(self.target, 'username') service = "bitbucket://%[email protected]/%s" % (login, username) password = get_service_password( service, login, oracle=password, interactive=self.config.interactive) self.auth = (login, password)
def __init__(self, *args, **kw): super(TracService, self).__init__(*args, **kw) base_uri = self.config_get("base_uri") username = self.config_get("username") password = self.config_get("password") if not password or password.startswith("@oracle:"): password = get_service_password( self.get_keyring_service(self.config, self.target), username, oracle=password, interactive=self.config.interactive, ) auth = "%s:%s" % (username, password) uri = "https://%s@%s/login/xmlrpc" % (urllib.quote_plus(auth), base_uri) self.trac = offtrac.TracServer(uri)
def __init__(self, *args, **kw): super(TracService, self).__init__(*args, **kw) base_uri = self.config_get('base_uri') username = self.config_get('username') password = self.config_get('password') if not password or password.startswith('@oracle:'): password = get_service_password( self.get_keyring_service(self.config, self.target), username, oracle=password, interactive=self.config.interactive) auth = '%s:%s' % (username, password) uri = 'https://%s@%s/login/xmlrpc' % (urllib.quote_plus(auth), base_uri) self.trac = offtrac.TracServer(uri)
def __init__(self, *args, **kw): super(MegaplanService, self).__init__(*args, **kw) self.hostname = self.config.get(self.target, 'hostname') _login = self.config.get(self.target, 'login') _password = self.config.get(self.target, 'password') if not _password or _password.startswith("@oracle:"): service = "megaplan://%s@%s" % (_login, self.hostname) _password = get_service_password(service, _login, oracle=_password, interactive=self.config.interactive) self.client = megaplan.Client(self.hostname) self.client.authenticate(_login, _password) self.project_name = self.hostname if self.config.has_option(self.target, "project_name"): self.project_name = self.config.get(self.target, "project_name")
def __init__(self, *args, **kw): super(MegaplanService, self).__init__(*args, **kw) self.hostname = self.config_get('hostname') _login = self.config_get('login') _password = self.config_get('password') if not _password or _password.startswith("@oracle:"): _password = get_service_password( self.get_keyring_service(self.config, self.target), _login, oracle=_password, interactive=self.config.interactive) self.client = megaplan.Client(self.hostname) self.client.authenticate(_login, _password) self.project_name = self.config_get_default('project_name', self.hostname)
def __init__(self, *args, **kw): super(VersionOneService, self).__init__(*args, **kw) parsed_address = parse.urlparse(self.config_get("base_uri")) self.address = parsed_address.netloc self.instance = parsed_address.path.strip("/") self.username = self.config_get("username") self.password = self.config_get_default("password") if not self.password or self.password.startswith("@oracle:"): self.password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=self.password, interactive=self.config.interactive, ) self.timezone = self.config_get_default("timezone", default=LOCAL_TIMEZONE) self.project = self.config_get_default("project_name", default="") self.timebox_name = self.config_get_default("timebox_name")
def __init__(self, *args, **kw): super(TeamLabService, self).__init__(*args, **kw) self.hostname = self.config_get('hostname') _login = self.config_get('login') _password = self.config_get('password') if not _password or _password.startswith("@oracle:"): _password = get_service_password( self.get_keyring_service(self.config, self.target), _login, oracle=_password, interactive=self.config.interactive ) self.client = TeamLabClient(self.hostname) self.client.authenticate(_login, _password) self.project_name = self.config_get_default( 'project_name', self.hostname )
def __init__(self, *args, **kw): super(VersionOneService, self).__init__(*args, **kw) parsed_address = parse.urlparse(self.config_get('base_uri')) self.address = parsed_address.netloc self.instance = parsed_address.path.strip('/') self.username = self.config_get('username') self.password = self.config_get_default('password') if not self.password or self.password.startswith('@oracle:'): self.password = get_service_password( self.get_keyring_service(self.config, self.target), self.username, oracle=self.password, interactive=self.config.interactive) self.timezone = self.config_get_default('timezone', default=LOCAL_TIMEZONE) self.project = self.config_get_default('project_name', default='') self.timebox_name = self.config_get_default('timebox_name')
def __init__(self, *args, **kw): super(GitlabService, self).__init__(*args, **kw) host = self.config_get_default('host', default='gitlab.com', to_type=six.text_type) self.login = self.config_get('login') token = self.config_get('token') if not token or token.startswith('@oracle:'): token = get_service_password(self.get_keyring_service( self.config, self.target), self.login, oracle=password, interactive=self.config.interactive) self.auth = (host, token) if self.config_get_default('use_https', default=True, to_type=asbool): self.scheme = 'https' else: self.scheme = 'http' self.exclude_repos = [] if self.config_get_default('exclude_repos', None): self.exclude_repos = [ item.strip() for item in self.config_get('exclude_repos').strip().split(',') ] self.include_repos = [] if self.config_get_default('include_repos', None): self.include_repos = [ item.strip() for item in self.config_get('include_repos').strip().split(',') ] self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool) self.label_template = self.config_get_default('label_template', default='{{label}}', to_type=six.text_type) self.filter_merge_requests = self.config_get_default( 'filter_merge_requests', default=False, to_type=asbool)
def __init__(self, *args, **kw): super(TeamLabService, self).__init__(*args, **kw) self.hostname = self.config.get(self.target, 'hostname') _login = self.config.get(self.target, 'login') _password = self.config.get(self.target, 'password') if not _password or _password.startswith("@oracle:"): service = "teamlab://%s@%s" % (_login, self.hostname) _password = get_service_password( service, _login, oracle=_password, interactive=self.config.interactive) self.client = Client(self.hostname) self.client.authenticate(_login, _password) self.project_name = self.hostname if self.config.has_option(self.target, "project_name"): self.project_name = self.config.get(self.target, "project_name")
def __init__(self, *args, **kw): super(GitlabService, self).__init__(*args, **kw) host = self.config_get_default( 'host', default='gitlab.com', to_type=six.text_type) self.login = self.config_get('login') token = self.config_get('token') if not token or token.startswith('@oracle:'): token = get_service_password( self.get_keyring_service(self.config, self.target), self.login, oracle=password, interactive=self.config.interactive ) self.auth = (host, token) self.exclude_repos = [] if self.config_get_default('exclude_repos', None): self.exclude_repos = [ item.strip() for item in self.config_get('exclude_repos').strip().split(',') ] self.include_repos = [] if self.config_get_default('include_repos', None): self.include_repos = [ item.strip() for item in self.config_get('include_repos').strip().split(',') ] self.import_labels_as_tags = self.config_get_default( 'import_labels_as_tags', default=False, to_type=asbool ) self.label_template = self.config_get_default( 'label_template', default='{{label}}', to_type=six.text_type ) self.filter_merge_requests = self.config_get_default( 'filter_merge_requests', default=False, to_type=asbool )
def __init__(self, *args, **kw): super(JiraService, self).__init__(*args, **kw) self.username = self.config.get(self.target, 'jira.username') self.url = self.config.get(self.target, 'jira.base_uri') password = self.config.get(self.target, 'jira.password') if not password or password.startswith("@oracle:"): service = "jira://%s@%s" % (self.username, self.url) password = get_service_password(service, self.username, oracle=password, interactive=self.config.interactive) default_query = 'assignee=' + self.username + \ ' AND status != closed and status != resolved' self.query = self.config.get(self.target, 'jira.query', default_query) self.project_prefix = self.config.get( self.target, 'jira.project_prefix', '') self.jira = JIRA( options={ 'server': self.config.get(self.target, 'jira.base_uri'), 'rest_api_version': 'latest', }, basic_auth=(self.username, password) )
def __init__(self, *args, **kw): super(TracService, self).__init__(*args, **kw) base_uri = self.config_get('base_uri') scheme = self.config_get_default('scheme', default='https') username = self.config_get_default('username', default=None) if username: password = self.config_get('password') if not password or password.startswith('@oracle:'): password = get_service_password( self.get_keyring_service(self.config, self.target), username, oracle=password, interactive=self.config.interactive) auth = urllib.quote_plus('%s:%s' % (username, password)) + '@' else: auth = '' if self.config_get_default('no_xmlrpc', default=False): uri = '%s://%s%s/' % (scheme, auth, base_uri) self.uri = uri self.trac = None else: uri = '%s://%s%s/login/xmlrpc' % (scheme, auth, base_uri) self.trac = offtrac.TracServer(uri)
def __init__(self, *args, **kw): super(TracService, self).__init__(*args, **kw) base_uri = self.config_get('base_uri') scheme = self.config_get_default('scheme', default='https') username = self.config_get_default('username', default=None) if username: password = self.config_get('password') if not password or password.startswith('@oracle:'): password = get_service_password( self.get_keyring_service(self.config, self.target), username, oracle=password, interactive=self.config.interactive ) auth = urllib.quote_plus('%s:%s' % (username, password)) + '@' else: auth = '' if self.config_get_default('no_xmlrpc', default=False): uri = '%s://%s%s/' % (scheme, auth, base_uri) self.uri = uri self.trac = None else: uri = '%s://%s%s/login/xmlrpc' % (scheme, auth, base_uri) self.trac = offtrac.TracServer(uri)