From 0d0952cff08d2e034032b5b94eccb1502d5f0165 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 20 Apr 2018 10:11:59 +0300 Subject: Change: rename icktool2 to icktool, update NEWS --- icktool | 136 +++++----------------------------------------------------------- 1 file changed, 10 insertions(+), 126 deletions(-) (limited to 'icktool') diff --git a/icktool b/icktool index 7890f7f..20140ee 100755 --- a/icktool +++ b/icktool @@ -18,10 +18,13 @@ import configparser import json import logging -import os import sys +import time +import apifw import cliapp +import Crypto.PublicKey.RSA +import requests import yaml import ick2 @@ -83,7 +86,6 @@ class Icktool(cliapp.Application): ['secrets'], 'use URL as the controller base URL', metavar='URL', - default=os.path.expanduser('~/.config/icktool/credentials.conf'), ) self.settings.boolean( @@ -125,16 +127,6 @@ class Icktool(cliapp.Application): version = api.get_version() self._prettyson(version) - def cmd_trigger(self, args): - project_name = args[0] - pipeline_name = args[1] - - token = self._new_token() - api = self._new_api() - api.set_token(token) - result = api.trigger(project_name, pipeline_name) - self._prettyson(result) - def cmd_make_it_so(self, argv): obj = self._read_object() @@ -142,22 +134,15 @@ class Icktool(cliapp.Application): api = self._new_api() api.set_token(token) - self._create_resources( - api, '/projects', 'project', obj.get('projects', [])) - self._create_resources( - api, '/pipelines', 'pipeline', obj.get('pipelines', [])) + self._create_resources(api, '/projects', obj.get('projects', [])) + self._create_resources(api, '/pipelines', obj.get('pipelines', [])) def _read_object(self): return yaml.load(sys.stdin) - def _create_resources(self, api, path, field, objs): + def _create_resources(self, api, path, objs): for obj in objs: - try: - api.create(path, obj) - except ick2.HttpError: - if field in obj: - obj_path = '{}/{}'.format(path, obj[field]) - api.update(obj_path, obj) + api.create(path, obj) def cmd_show(self, args): token = self._new_token() @@ -173,76 +158,6 @@ class Icktool(cliapp.Application): objs = api.show('/' + kind) self._prettyson(objs) - def cmd_status(self, args): - token = self._new_token() - api = self._new_api() - api.set_token(token) - - rows = [] - projects = api.show('/projects')['projects'] - projects = sorted(projects, key=lambda p: p.get('project')) - - builds = api.show('/builds')['builds'] - - for project in projects: - pipeline_names = sorted(project['pipelines']) - for pipeline_name in pipeline_names: - build = self._get_latest_build( - project['project'], pipeline_name, builds) - - if build is None: - build = { - 'build_id': 'never', - 'log': 'none', - 'status': 'n/a', - } - - status = api.get_build_status( - project['project'], pipeline_name) - - row = { - 'project': project['project'], - 'pipeline': pipeline_name, - 'build_id': build['build_id'], - 'status': status['status'], - 'build_status': build['status'], - 'log': build['log'], - } - rows.append(row) - self._pretty_table( - rows, ['project', 'pipeline', 'status', 'build_status', 'log']) - - def _get_latest_build(self, project_name, pipeline_name, builds): - wanted = [ - b for b in builds - if b['project'] == project_name and b['pipeline'] == pipeline_name - ] - if wanted: - return wanted[-1] - return None - - def cmd_show_latest_log(self, args): - token = self._new_token() - api = self._new_api() - api.set_token(token) - - project_name = args[0] - builds = api.show('/builds')['builds'] - project_builds = [b for b in builds if b['project'] == project_name] - if project_builds: - b = project_builds[-1] - log = api.get_log(b['build_id']) - self.output.write(log.decode('UTF-8')) - - def cmd_show_log(self, args): - token = self._new_token() - api = self._new_api() - api.set_token(token) - - build_id = args[0] - log = api.get_log(build_id) - self.output.write(log.decode('UTF-8')) - def _new_api(self): api = ick2.ControllerClient() api.set_verify_tls(self.settings['verify-tls']) @@ -251,9 +166,6 @@ class Icktool(cliapp.Application): def _new_auth(self): url = self.settings['auth-url'] - if not url: - api = self._new_api() - url = api.get_auth_url() client_id, client_secret = self._get_client_creds(url) ac = ick2.AuthClient() @@ -265,8 +177,8 @@ class Icktool(cliapp.Application): if self.settings['token']: return self.settings['token'] ac = self._new_auth() - wanted_scopes = ' '.join(self.settings['scope']) - return ac.get_token(wanted_scopes) + scopes = ' '.join(self.settings['scope']) + return ac.get_token(scopes) def _get_client_creds(self, url): cp = configparser.ConfigParser() @@ -279,34 +191,6 @@ class Icktool(cliapp.Application): json.dump(obj, self.output, indent=4, sort_keys=True) self.output.write('\n') - def _pretty_table(self, rows, columns): - headings = { - column: column - for column in columns - } - - widths = { - column: 0 - for column in columns - } - - for row in [headings] + rows: - for column in columns: - widths[column] = max(widths[column], len(str(row[column]))) - - underlines = { - column: '-' * widths[column] - for column in columns - } - - for row in [headings, underlines] + rows: - self.output.write( - '{}\n'.format(self._pretty_row(widths, row, columns))) - - def _pretty_row(self, widths, row, columns): - parts = ['%*s' % (widths[c], row[c]) for c in columns] - return ' | '.join(parts) - class Command: -- cgit v1.2.1