diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-10-15 14:51:21 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-10-15 14:51:21 +0300 |
commit | f723ea50fc6a66187c43a40935bebd94b8013c78 (patch) | |
tree | 796cc2a5b39698aa5b60384bda981efaa9aeac81 /icktool | |
parent | 035f4492eab2c411ffb6abb4d7e2c0157c6bb2e3 (diff) | |
download | ick2-f723ea50fc6a66187c43a40935bebd94b8013c78.tar.gz |
Add: first version of icktool
Diffstat (limited to 'icktool')
-rwxr-xr-x | icktool | 68 |
1 files changed, 68 insertions, 0 deletions
@@ -0,0 +1,68 @@ +#!/usr/bin/python3 +# Copyright 2017 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import sys + +import cliapp + +import ick2 + + +class Icktool(cliapp.Application): + + _default_scopes = [ + 'uapi_version_get', + ] + + def add_settings(self): + self.settings.string( + ['controller'], + 'use URL as the controller base URL', + metavar='URL', + ) + + self.settings.string( + ['token-private-key-cmd'], + 'run CMD to print private key for token signing', + metavar='CMD', + ) + + self.settings.string_list( + ['scope'], + 'add SCOPE to the list of scope in generated token', + metavar='SCOPE', + default=self._default_scopes, + ) + + def cmd_token(self, args): + uri = self.settings['controller'] + if not uri: + raise cliapp.AppException('no --controller specified') + + cmd = self.settings['token-private-key-cmd'] + if not cmd: + raise cliapp.AppException('no --token-private-cmd specified') + + scopes = self.settings['scope'] + + privkey = cliapp.runcmd(['sh', '-c', cmd]) + token = cliapp.runcmd(['./create-token', ' '.join(scopes)], feed_stdin=privkey) + sys.stdout.write(token.decode('ascii')) + sys.stdout.write('\n') + + +Icktool(version=ick2.__version__).run() |