diff options
-rw-r--r-- | .zuul.yaml | 7 | ||||
-rw-r--r-- | barbicanclient/barbican.py | 30 | ||||
-rw-r--r-- | doc/requirements.txt | 3 | ||||
-rw-r--r-- | lower-constraints.txt | 73 | ||||
-rw-r--r-- | requirements.txt | 2 | ||||
-rw-r--r-- | test-requirements.txt | 4 | ||||
-rw-r--r-- | tox.ini | 9 |
7 files changed, 125 insertions, 3 deletions
diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..67a39c4 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,7 @@ +- project: + check: + jobs: + - openstack-tox-lower-constraints + gate: + jobs: + - openstack-tox-lower-constraints diff --git a/barbicanclient/barbican.py b/barbicanclient/barbican.py index e26eb34..a462f1d 100644 --- a/barbicanclient/barbican.py +++ b/barbicanclient/barbican.py @@ -46,6 +46,13 @@ _IDENTITY_API_VERSION_3 = ['3'] class Barbican(app.App): """Barbican command line interface.""" + # verbose logging levels + WARNING_LEVEL = 0 + INFO_LEVEL = 1 + DEBUG_LEVEL = 2 + CONSOLE_MESSAGE_FORMAT = '%(message)s' + DEBUG_MESSAGE_FORMAT = '%(levelname)s: %(name)s %(message)s' + def __init__(self, **kwargs): self.client = None @@ -328,6 +335,9 @@ class Barbican(app.App): """ self.client_manager = namedtuple('ClientManager', 'key_manager') if cmd.auth_required: + # NOTE(liujiong): cliff sets log level to DEBUG in run function, + # need to overwrite this configuration to depress DEBUG messages. + self.configure_logging() self.client_manager.key_manager = self.create_client(self.options) def run(self, argv): @@ -337,6 +347,26 @@ class Barbican(app.App): return 1 return super(Barbican, self).run(argv) + def configure_logging(self): + """Create logging handlers for any log output.""" + root_logger = logging.getLogger('') + # Set log level to INFO + root_logger.setLevel(logging.INFO) + + # Send higher-level messages to the console via stderr + console = logging.StreamHandler(self.stderr) + console_level = {self.WARNING_LEVEL: logging.WARNING, + self.INFO_LEVEL: logging.INFO, + self.DEBUG_LEVEL: logging.DEBUG, + }.get(self.options.verbose_level, logging.INFO) + if logging.DEBUG == console_level: + formatter = logging.Formatter(self.DEBUG_MESSAGE_FORMAT) + else: + formatter = logging.Formatter(self.CONSOLE_MESSAGE_FORMAT) + console.setFormatter(formatter) + root_logger.addHandler(console) + return + def main(argv=sys.argv[1:]): logging.basicConfig() diff --git a/doc/requirements.txt b/doc/requirements.txt index d3348d6..827758f 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,2 +1,5 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD openstackdocstheme>=1.18.1 # Apache-2.0 diff --git a/lower-constraints.txt b/lower-constraints.txt new file mode 100644 index 0000000..7876b87 --- /dev/null +++ b/lower-constraints.txt @@ -0,0 +1,73 @@ +appdirs==1.3.0 +asn1crypto==0.23.0 +Babel==2.3.4 +cffi==1.7.0 +cliff==2.8.0 +cmd2==0.8.0 +coverage==4.0 +cryptography==2.1 +debtcollector==1.2.0 +decorator==3.4.0 +deprecation==1.0 +dogpile.cache==0.6.2 +extras==1.0.0 +fixtures==3.0.0 +flake8==2.5.5 +hacking==0.12.0 +idna==2.6 +iso8601==0.1.11 +jmespath==0.9.0 +jsonpatch==1.16 +jsonpointer==1.13 +jsonschema==2.6.0 +keystoneauth1==3.4.0 +linecache2==1.0.0 +mccabe==0.2.1 +mock==2.0.0 +monotonic==0.6 +mox3==0.20.0 +msgpack-python==0.4.0 +munch==2.1.0 +netaddr==0.7.18 +netifaces==0.10.4 +nose==1.3.7 +openstacksdk==0.11.2 +os-client-config==1.28.0 +os-service-types==1.2.0 +osc-lib==1.8.0 +oslo.config==5.2.0 +oslo.i18n==3.15.3 +oslo.serialization==2.18.0 +oslo.utils==3.33.0 +oslotest==3.2.0 +pbr==2.0.0 +pep8==1.5.7 +positional==1.2.1 +prettytable==0.7.2 +pycparser==2.18 +pyflakes==0.8.1 +pyOpenSSL==17.1.0 +pyparsing==2.1.0 +pyperclip==1.5.27 +python-cinderclient==3.3.0 +python-glanceclient==2.8.0 +python-keystoneclient==3.8.0 +python-mimeparse==1.6.0 +python-novaclient==9.1.0 +python-openstackclient==3.12.0 +python-subunit==1.0.0 +pytz==2013.6 +PyYAML==3.12 +requests==2.14.2 +requests-mock==1.2.0 +requestsexceptions==1.2.0 +rfc3986==0.3.1 +simplejson==3.5.1 +six==1.10.0 +stevedore==1.20.0 +testrepository==0.0.18 +testtools==2.2.0 +traceback2==1.4.0 +unittest2==1.1.0 +warlock==1.2.0 +wrapt==1.7.0 diff --git a/requirements.txt b/requirements.txt index 2b0e705..aab6108 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ pbr!=2.1.0,>=2.0.0 # Apache-2.0 requests>=2.14.2 # Apache-2.0 six>=1.10.0 # MIT cliff!=2.9.0,>=2.8.0 # Apache-2.0 -keystoneauth1>=3.3.0 # Apache-2.0 +keystoneauth1>=3.4.0 # Apache-2.0 oslo.i18n>=3.15.3 # Apache-2.0 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 oslo.utils>=3.33.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 193d070..71f8127 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4,11 +4,11 @@ coverage!=4.4,>=4.0 # Apache-2.0 hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD -requests-mock>=1.1.0 # Apache-2.0 +requests-mock>=1.2.0 # Apache-2.0 mock>=2.0.0 # BSD testrepository>=0.0.18 # Apache-2.0/BSD testtools>=2.2.0 # MIT oslotest>=3.2.0 # Apache-2.0 nose>=1.3.7 # LGPL -oslo.config>=5.1.0 # Apache-2.0 +oslo.config>=5.2.0 # Apache-2.0 python-openstackclient>=3.12.0 # Apache-2.0 @@ -12,7 +12,9 @@ deps = -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt + commands = + rm -f .testrepository/times.dbm coverage erase python setup.py testr --coverage --testr-args='{posargs}' coverage report -m @@ -43,3 +45,10 @@ commands = nosetests {toxinidir}/functionaltests/{posargs} -v ignore = H202 show-source = True exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build + +[testenv:lower-constraints] +basepython = python3 +deps = + -c{toxinidir}/lower-constraints.txt + -r{toxinidir}/test-requirements.txt + -r{toxinidir}/requirements.txt |