summaryrefslogtreecommitdiff
path: root/icktool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-10-15 14:51:21 +0300
committerLars Wirzenius <liw@liw.fi>2017-10-15 14:51:21 +0300
commitf723ea50fc6a66187c43a40935bebd94b8013c78 (patch)
tree796cc2a5b39698aa5b60384bda981efaa9aeac81 /icktool
parent035f4492eab2c411ffb6abb4d7e2c0157c6bb2e3 (diff)
downloadick2-f723ea50fc6a66187c43a40935bebd94b8013c78.tar.gz
Add: first version of icktool
Diffstat (limited to 'icktool')
-rwxr-xr-xicktool68
1 files changed, 68 insertions, 0 deletions
diff --git a/icktool b/icktool
new file mode 100755
index 0000000..6aa2a82
--- /dev/null
+++ b/icktool
@@ -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()