def __init__(self, username, password, project, baseurl, timeout=None, timings=False, http_log_debug=False, cacert=None, insecure=False, api_version=None): self.username = username self.password = password self.project = project self.baseurl = baseurl self.api_version = api_version or api_versions.APIVersion() self.timings = timings self.http_log_debug = http_log_debug self.sid = '' self.sid_old = 'beegosessionID' self.sid_new = 'sid' # Has no protocol, use http if not urlparse(baseurl).scheme: self.baseurl = 'http://' + baseurl parsed_url = urlparse(self.baseurl) self.protocol = parsed_url.scheme self.host = parsed_url.hostname self.port = parsed_url.port if timeout is not None: self.timeout = float(timeout) else: self.timeout = None # https if insecure: self.verify_cert = False else: if cacert: self.verify_cert = cacert else: self.verify_cert = True self.times = [] # [("item", starttime, endtime), ...] self._logger = logging.getLogger(__name__) self.session_id = None if self.http_log_debug and not self._logger.handlers: # Logging level is already set on the root logger ch = logging.StreamHandler() self._logger.addHandler(ch) self._logger.propagate = False if hasattr(requests, 'logging'): rql = requests.logging.getLogger(requests.__name__) rql.addHandler(ch) # Since we have already setup the root logger on debug, we # have to set it up here on WARNING (its original level) # otherwise we will get all the requests logging messages rql.setLevel(logging.WARNING)
def __init__(self, username, password, baseurl, timeout=None, timings=False, http_log_debug=False, api_version=None): self.username = username self.password = password self.baseurl = baseurl self.api_version = api_version or api_versions.APIVersion() self.timings = timings self.http_log_debug = http_log_debug if timeout is not None: self.timeout = float(timeout) else: self.timeout = None self.times = [] # [("item", starttime, endtime), ...] self._logger = logging.getLogger(__name__) self.session_id = None if self.http_log_debug and not self._logger.handlers: # Logging level is already set on the root logger ch = logging.StreamHandler() self._logger.addHandler(ch) self._logger.propagate = False if hasattr(requests, 'logging'): rql = requests.logging.getLogger(requests.__name__) rql.addHandler(ch) # Since we have already setup the root logger on debug, we # have to set it up here on WARNING (its original level) # otherwise we will get all the requests logging messages rql.setLevel(logging.WARNING)
def _find_actions(self, subparsers, actions_module, version, do_help): msg = _(" (Supported by API versions '%(start)s' - '%(end)s')") for attr in (a for a in dir(actions_module) if a.startswith('do_')): # I prefer to be hyphen-separated instead of underscores. command = attr[3:].replace('_', '-') callback = getattr(actions_module, attr) desc = callback.__doc__ or '' if hasattr(callback, "versioned"): additional_msg = "" subs = api_versions.get_substitutions( utils.get_function_name(callback)) if do_help: additional_msg = msg % { 'start': subs[0].start_version.get_string(), 'end': subs[-1].end_version.get_string() } subs = [ versioned_method for versioned_method in subs if version.matches(versioned_method.start_version, versioned_method.end_version) ] if subs: # use the "latest" substitution callback = subs[-1].func else: # there is no proper versioned method continue desc = callback.__doc__ or desc desc += additional_msg action_help = desc.strip() arguments = getattr(callback, 'arguments', []) subparser = subparsers.add_parser( command, help=action_help, description=desc, add_help=False, formatter_class=HarborHelpFormatter) subparser.add_argument( '-h', '--help', action='help', help=argparse.SUPPRESS, ) self.subcommands[command] = subparser for (args, kwargs) in arguments: start_version = kwargs.get("start_version", None) if start_version: start_version = api_versions.APIVersion(start_version) end_version = kwargs.get("end_version", None) if end_version: end_version = api_versions.APIVersion(end_version) else: end_version = api_versions.APIVersion( "%s.latest" % start_version.ver_major) if do_help: kwargs["help"] = kwargs.get( "help", "") + (msg % { "start": start_version.get_string(), "end": end_version.get_string() }) if not version.matches(start_version, end_version): continue kw = kwargs.copy() kw.pop("start_version", None) kw.pop("end_version", None) subparser.add_argument(*args, **kw) subparser.set_defaults(func=callback)
import pbr.version from harborclient import api_versions __version__ = pbr.version.VersionInfo('python-harborclient').version_string() API_MIN_VERSION = api_versions.APIVersion("2.0") # The max version should be the latest version that is supported in the client, # not necessarily the latest that the server can provide. This is only bumped # when client supported the max version, and bumped sequentially, otherwise # the client may break due to server side new version may include some # backward incompatible change. API_MAX_VERSION = api_versions.APIVersion("2.0")