summaryrefslogtreecommitdiff
path: root/icktool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-10-15 15:12:09 +0300
committerLars Wirzenius <liw@liw.fi>2017-10-15 15:12:09 +0300
commit181f76776da5465416160bd571b399da9490f7fd (patch)
tree66dbba331ec33b74b1e2aae496289aa3fa6ad5fe /icktool
parent2f9a57aca66717ad2ddd5ef889334424e1849d1b (diff)
downloadick2-181f76776da5465416160bd571b399da9490f7fd.tar.gz
Add: add "icktool version" command
Diffstat (limited to 'icktool')
-rwxr-xr-xicktool46
1 files changed, 46 insertions, 0 deletions
diff --git a/icktool b/icktool
index 6aa2a82..afeff3d 100755
--- a/icktool
+++ b/icktool
@@ -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()