diff options
Diffstat (limited to 'testapi/testapi-client/testapiclient/cli')
6 files changed, 220 insertions, 82 deletions
diff --git a/testapi/testapi-client/testapiclient/cli/deployresults.py b/testapi/testapi-client/testapiclient/cli/deployresults.py index a6fe13e..1ca0bef 100644 --- a/testapi/testapi-client/testapiclient/cli/deployresults.py +++ b/testapi/testapi-client/testapiclient/cli/deployresults.py @@ -2,6 +2,7 @@ import json from testapiclient.utils import command from testapiclient.utils import urlparse +from testapiclient.models import deployresult def deployresults_url(): @@ -85,13 +86,10 @@ class DeployresultCreate(command.ShowOne): parser.add_argument('deployresult', type=json.loads, help='Deployresult create request format:\n' - '\'{"job_name" : "","scenario" : "",' - '"stop_date" : "", "build_id" : "",' - '"upstream_job_name": "",' - '"version" : "", "pod_name" : "",' - '"criteria" : "", "installer" : "",' - '"upstream_build_id" : "",' - '"start_date" : "", "details" : ""}\'') + '\'{}\''.format(json.dumps( + deployresult.DeployResultCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): diff --git a/testapi/testapi-client/testapiclient/cli/pods.py b/testapi/testapi-client/testapiclient/cli/pods.py index 8d0970b..a7706f6 100644 --- a/testapi/testapi-client/testapiclient/cli/pods.py +++ b/testapi/testapi-client/testapiclient/cli/pods.py @@ -1,7 +1,9 @@ import json +from testapiclient.client import pods from testapiclient.utils import command from testapiclient.utils import urlparse +from testapiclient.models import pods as pm def pods_url(): @@ -60,15 +62,17 @@ class PodCreate(command.ShowOne): parser.add_argument('pod', type=json.loads, help='Pod create request format :\n' - '\'{"role": "", "name": "", "details": "", ' - '"mode": ""}\',\n role should be either ' + '\'{}\''.format(json.dumps( + pm.PodCreateRequest().__dict__ + )) + + '\n role should be either ' '"community-ci" or "production-ci", and ' 'mode should be either "metal" or "virtual.') return parser def take_action(self, parsed_args): - return self.format_output( - self.app.client_manager.post(pods_url(), parsed_args.pod)) + client = pods.PodsClient(client_manager=self.app.client_manager) + return self.format_output(client.create(parsed_args.pod)) class PodDelete(command.Command): diff --git a/testapi/testapi-client/testapiclient/cli/projects.py b/testapi/testapi-client/testapiclient/cli/projects.py index 510acc8..2fa5b5b 100644 --- a/testapi/testapi-client/testapiclient/cli/projects.py +++ b/testapi/testapi-client/testapiclient/cli/projects.py @@ -2,6 +2,7 @@ import json from testapiclient.utils import command from testapiclient.utils import urlparse +from testapiclient.models import project def projects_url(): @@ -51,9 +52,10 @@ class ProjectCreate(command.ShowOne): parser = super(ProjectCreate, self).get_parser(prog_name) parser.add_argument('project', type=json.loads, - help='Project create request format :{' - ' "name": (required)"", ' - '"description": (optional)""}') + help='Project create request format :\n' + '\'{}\''.format(json.dumps( + project.ProjectCreateRequest().__dict__ + ))) return parser def take_action(self, parsed_args): @@ -83,9 +85,10 @@ class ProjectPut(command.ShowOne): help='Update project by name') parser.add_argument('project', type=json.loads, - help='Project Update request format :{' - '"name": (required)"", ' - '"description": (optional)""}') + help='Project Update request format :\n' + '\'{}\''.format(json.dumps( + project.ProjectCreateRequest().__dict__ + ))) return parser def take_action(self, parsed_args): diff --git a/testapi/testapi-client/testapiclient/cli/results.py b/testapi/testapi-client/testapiclient/cli/results.py new file mode 100644 index 0000000..5500501 --- /dev/null +++ b/testapi/testapi-client/testapiclient/cli/results.py @@ -0,0 +1,97 @@ +import json + +from testapiclient.utils import command +from testapiclient.utils import urlparse +from testapiclient.models import result + + +def results_url(): + return urlparse.resource_join('results') + + +def result_url(parsed_args): + return urlparse.path_join(results_url(), parsed_args.result_id) + + +class ResultGet(command.Lister): + + def get_parser(self, prog_name): + parser = super(ResultGet, self).get_parser(prog_name) + parser.add_argument('-case', + help='Search results using tesetcase') + parser.add_argument('-build-tag', + help='Search results using build tag') + parser.add_argument('-from', + help='Search results using from date') + parser.add_argument('-last', + help='Search results using last date') + parser.add_argument('-scenario', + help='Search results using scenario') + parser.add_argument('-period', + help='Search results using period') + parser.add_argument('-project', + help='Search results using project') + parser.add_argument('-to', + help='Search results using to') + parser.add_argument('---version', + help='Search results using version') + parser.add_argument('-criteria', + help='Search results using version') + parser.add_argument('-installer', + help='Search results using installer') + parser.add_argument('-pod', + help='Search results using pod') + parser.add_argument('-page', + help='Search results using page') + return parser + + def take_action(self, parsed_args): + columns = ( + '_id', + 'pod_name', + 'project_name', + 'case_name', + 'installer', + 'version', + 'scenario', + 'criteria', + 'start_date' + ) + data = self.app.client_manager.get( + urlparse.query_by(results_url(), + ['case', 'build_tag', 'from', 'last', + 'scenario', 'period', 'project', + 'to', 'version', + 'criteria', 'installer', 'pod', 'page'], + parsed_args)) + return self.format_output(columns, data.get('results', [])) + + +class ResultGetOne(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(ResultGetOne, self).get_parser(prog_name) + parser.add_argument('result_id', + help='Search result by result id') + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.get(result_url(parsed_args))) + + +class ResultCreate(command.ShowOne): + + def get_parser(self, prog_name): + parser = super(ResultCreate, self).get_parser(prog_name) + parser.add_argument('result', + type=json.loads, + help='Result create request format:\n' + '\'{}\''.format(json.dumps( + result.ResultCreateRequest().__dict__))) + return parser + + def take_action(self, parsed_args): + return self.format_output( + self.app.client_manager.post( + results_url(), parsed_args.result)) diff --git a/testapi/testapi-client/testapiclient/cli/scenarios.py b/testapi/testapi-client/testapiclient/cli/scenarios.py index 507705a..197ee0c 100644 --- a/testapi/testapi-client/testapiclient/cli/scenarios.py +++ b/testapi/testapi-client/testapiclient/cli/scenarios.py @@ -2,6 +2,7 @@ import json from testapiclient.utils import command from testapiclient.utils import urlparse +from testapiclient.models import scenario def scenarios_url(): @@ -64,22 +65,37 @@ class ScenarioCreate(command.ShowOne): parser.add_argument('scenario', type=json.loads, help='Scenario create request format :\n' - '\'{ "installers": [], "name": ""}\',\n' - 'Intaller create request format :\n' - '\'{"installer": "","versions": []}\',\n' - 'Version create request format :\n' - '\'{"owner": "","version": "",' - '"projects": []}\',\n' - 'Project create request format :\n' - '\'{"project": "","customs": [],' - '"scores": [],' - '"trust_indicators": []}\',\n' - 'Custom create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioCreateRequest( + ).__dict__ + )) + + '\n Intaller create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioInstallerCreateRequest( + ).__dict__ + )) + + '\n Version create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioVersionCreateRequest( + ).__dict__ + )) + + '\n Project create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioProjectCreateRequest( + ).__dict__ + )) + + '\n Custom create request format :\n' '\'["asf","saf"]\',\n' - 'Score create request format :\n' - '\'{"date": "", "score": ""}\',\n' - 'Trust Indicators create request format :\n' - '\'{"date": "", "status": ""}\'') + '\n Score create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioScoreCreateRequest( + ).__dict__ + )) + + '\nTrustIndicator create request format:\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioTICreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -110,23 +126,38 @@ class ScenarioPut(command.ShowOne): help='Update scenario by name') parser.add_argument('scenario', type=json.loads, - help='Scenario create request format :\n' - '\'{ "installers": [], "name": ""}\',\n' - 'Intaller create request format :\n' - '\'{"installer": "","versions": []}\',\n' - 'Version create request format :\n' - '\'{"owner": "","version": "",' - '"projects": []}\',\n' - 'Project create request format :\n' - '\'{"project": "","customs": [],' - '"scores": [],' - '"trust_indicators": []}\',\n' - 'Custom create request format :\n' + help='Scenario create request format :\n' + + '\'{}\''.format(json.dumps( + scenario.ScenarioCreateRequest( + ).__dict__ + )) + + '\n Intaller create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioInstallerCreateRequest( + ).__dict__ + )) + + '\n Version create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioVersionCreateRequest( + ).__dict__ + )) + + '\n Project create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioProjectCreateRequest( + ).__dict__ + )) + + '\n Custom create request format :\n' '\'["asf","saf"]\',\n' - 'Score create request format :\n' - '\'{"date": "", "score": ""}\',\n' - 'Trust Indicators create request format :\n' - '\'{"date": "", "status": ""}\'') + '\n Score create request format :\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioScoreCreateRequest( + ).__dict__ + )) + + '\nTrustIndicator create request format:\n' + '\'{}\''.format(json.dumps( + scenario.ScenarioTICreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -145,7 +176,10 @@ class InstallerCreate(command.Command): parser.add_argument('installer', type=json.loads, help='Intaller create request format :\n' - '\'[{"installer": "","versions": []}]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioInstallerCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -186,7 +220,10 @@ class InstallerPut(command.Command): parser.add_argument('installer', type=json.loads, help='Intaller create request format :\n' - '\'[{"installer": "","versions": []}]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioInstallerCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -209,10 +246,10 @@ class VersionCreate(command.Command): parser.add_argument('version', type=json.loads, help='version create request format :\n' - '\'[{"owner":(string),' - '"version": (string),' - '"projects": (array[ScenarioProject])' - '}]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioVersionCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -261,10 +298,10 @@ class VersionPut(command.Command): parser.add_argument('version', type=json.loads, help='version update request format :\n' - '\'[{"owner":(string),' - '"version": (string),' - '"projects": (array[ScenarioProject])' - '}]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioVersionCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -320,10 +357,10 @@ class ProjectCreate(command.Command): parser.add_argument('project', type=json.loads, help='Project create request format :\n' - '\'[{ "project" (string),' - '"scores": (array[ScenarioScore]),' - '"trust_indicators": (array[ScenarioTI]),' - '"customs": (array[string]) }]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioProjectCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -378,10 +415,10 @@ class ProjectPut(command.Command): parser.add_argument('project', type=json.loads, help='Project update request format :\n' - '\'[{ "project" (string),' - '"scores": (array[ScenarioScore]),' - '"trust_indicators": (array[ScenarioTI]),' - '"customs": (array[string]) }]\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioProjectCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -511,8 +548,10 @@ class TrustIndicatorCreate(command.Command): parser.add_argument('trust_indicator', type=json.loads, help='trust indicator create request format :\n' - '\'{ "date": (string, optional),' - '"status": (string, optional) }\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioTICreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): @@ -547,8 +586,10 @@ class ScoreCreate(command.Command): parser.add_argument('score', type=json.loads, help='score create request format :\n' - '\'{ "date": (string, optional),' - '"score" : (string, optional) }\',\n') + '\'{}\''.format(json.dumps( + scenario.ScenarioScoreCreateRequest( + ).__dict__ + ))) return parser def take_action(self, parsed_args): diff --git a/testapi/testapi-client/testapiclient/cli/testcases.py b/testapi/testapi-client/testapiclient/cli/testcases.py index 6c97edb..3052c18 100644 --- a/testapi/testapi-client/testapiclient/cli/testcases.py +++ b/testapi/testapi-client/testapiclient/cli/testcases.py @@ -2,6 +2,7 @@ import json from testapiclient.utils import command from testapiclient.utils import urlparse +from testapiclient.models import testcase def testcases_url(name): @@ -60,12 +61,9 @@ class TestcaseCreate(command.ShowOne): parser.add_argument('testcase', type=json.loads, help='Testcase create request format:\n' - '\'{"run": "", "name": "", "ci_loop": "",' - '"tags": "",\n "url": "", "blocking": "",' - '"domains": "", "dependencies": "",\n ' - '"version": "", "criteria": "", "tier": "",' - '"trust": "",\n "catalog_description": "",' - '"description": ""}\'') + '\'{}\''.format(json.dumps( + testcase.TestCaseCreateRequest().__dict__ + ))) return parser def take_action(self, parsed_args): @@ -105,12 +103,9 @@ class TestcasePut(command.ShowOne): parser.add_argument('testcase', type=json.loads, help='Testcase Update request format:\n' - '\'{"run": "", "name": "", "ci_loop": "",' - '"tags": "",\n "url": "", "blocking": "",' - '"domains": "", "dependencies": "",\n ' - '"version": "", "criteria": "", "tier": "",' - '"trust": "",\n "catalog_description": "",' - '"description": ""}\'') + '\'{}\''.format(json.dumps( + testcase.TestCaseCreateRequest().__dict__ + ))) return parser def take_action(self, parsed_args): |