diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-10-15 15:12:09 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-10-15 15:12:09 +0300 |
commit | 181f76776da5465416160bd571b399da9490f7fd (patch) | |
tree | 66dbba331ec33b74b1e2aae496289aa3fa6ad5fe /icktool | |
parent | 2f9a57aca66717ad2ddd5ef889334424e1849d1b (diff) | |
download | ick2-181f76776da5465416160bd571b399da9490f7fd.tar.gz |
Add: add "icktool version" command
Diffstat (limited to 'icktool')
-rwxr-xr-x | icktool | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -15,9 +15,13 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. +import json +import logging import sys import cliapp +import urllib3 +import requests import ick2 @@ -35,6 +39,17 @@ class Icktool(cliapp.Application): metavar='URL', ) + self.settings.boolean( + ['verify-tls'], + 'verify TLS certifcate signature? default is yes', + ) + + self.settings.string( + ['token'], + 'use TOKEN instead of generating a new one', + metavar='TOKEN', + ) + self.settings.string( ['token-private-key-cmd'], 'run CMD to print private key for token signing', @@ -48,6 +63,10 @@ class Icktool(cliapp.Application): default=self._default_scopes, ) + def setup(self): + if not self.settings['verify-tls']: + logging.captureWarnings(True) + def cmd_token(self, args): uri = self.settings['controller'] if not uri: @@ -64,5 +83,32 @@ class Icktool(cliapp.Application): sys.stdout.write(token.decode('ascii')) sys.stdout.write('\n') + def cmd_version(self, args): + verify = self.settings['verify-tls'] + token = self.settings['token'] + if not token: + scopes = self.settings['scope'] + cmd = self.settings['token-private-key-cmd'] + if not cmd: + raise cliapp.AppException('no --token-private-cmd specified') + + privkey = cliapp.runcmd(['sh', '-c', cmd]) + token = cliapp.runcmd(['./create-token', ' '.join(scopes)], feed_stdin=privkey) + token = token.decode('ascii') + + uri = self.settings['controller'] + if not uri: + raise cliapp.AppException('no --controller specified') + + version_url = '{}/version'.format(uri) + headers = { + 'Authorization': 'Bearer {}'.format(token), + } + r = requests.get(version_url, headers=headers, verify=verify) + + obj = r.json() + json.dump(r.json(), sys.stdout, indent=4) + sys.stdout.write('\n') + Icktool(version=ick2.__version__).run() |