From 13bfeabf0070d583862f94d494c73a05ed1361b4 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 17:51:21 +0200 Subject: [PATCH 01/15] Add Makefile target for re-generating openapi spec, make sure it gets ran as part of every make run. --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 01c9b2da54..fac884657f 100644 --- a/Makefile +++ b/Makefile @@ -77,6 +77,10 @@ configgen: echo "" >> conf/st2.conf.sample . $(VIRTUALENV_DIR)/bin/activate; python ./tools/config_gen.py >> conf/st2.conf.sample; +.PHONY: .generate-openapi-spec +.generate-openapi-spec: + . virtualenv/bin/activate; tools/generate_spec.py > st2common/st2common/openapi.yaml + .PHONY: .pylint .pylint: @echo @@ -277,7 +281,7 @@ $(VIRTUALENV_DIR)/bin/activate: tests: pytests .PHONY: pytests -pytests: compile requirements .flake8 .pylint .pytests-coverage +pytests: compile requirements .generate-openapi-spec .flake8 .pylint .pytests-coverage .PHONY: .pytests .pytests: compile .unit-tests .itests clean From fbc47c5db26dcf607b0d220d96a5e4378016bd3c Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 17:53:55 +0200 Subject: [PATCH 02/15] Include latest re-generated openapi file. --- st2common/st2common/openapi.yaml | 130 ++++++------------------------- 1 file changed, 24 insertions(+), 106 deletions(-) diff --git a/st2common/st2common/openapi.yaml b/st2common/st2common/openapi.yaml index d83d00c05d..cb665d695d 100644 --- a/st2common/st2common/openapi.yaml +++ b/st2common/st2common/openapi.yaml @@ -235,11 +235,6 @@ paths: in: query description: Number of actions to get type: integer - - name: offset - in: query - description: Number of actions offset - type: integer - default: 0 - name: id in: query description: Action id filter @@ -429,11 +424,6 @@ paths: in: query description: Number of actions to get type: integer - - name: offset - in: query - description: Number of actions offset - type: integer - default: 0 - name: id in: query description: Action id filter @@ -533,10 +523,6 @@ paths: description: | Get list of action-aliases. parameters: - - name: name - in: query - description: Entity name filter - type: string - name: pack in: query description: Only return resources belonging to the provided pack @@ -712,12 +698,12 @@ paths: type: string - name: limit in: query - description: Number of action alias to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of action alias offset + description: Number of actions offset type: integer default: 0 responses: @@ -782,12 +768,12 @@ paths: required: false - name: limit in: query - description: Number of executions to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of executions offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -968,39 +954,6 @@ paths: description: Unexpected error schema: $ref: '#/definitions/Error' - put: - operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.put - description: | - Update status and result for an execution. - parameters: - - name: id - in: path - description: Entity id - type: string - required: true - - name: liveaction_api - in: body - description: Execution update request - schema: - $ref: '#/definitions/ExecutionUpdateRequest' - - name: show_secrets - in: query - description: Show secrets in plain text - type: boolean - x-parameters: - - name: user - in: context - x-as: requester_user - description: User performing the operation. - responses: - '200': - description: Execution that was updated - schema: - $ref: '#/definitions/Execution' - default: - description: Unexpected error - schema: - $ref: '#/definitions/Error' delete: operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.delete description: | @@ -1212,12 +1165,12 @@ paths: type: string - name: limit in: query - description: Number of keys to get from datastore + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of keys offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -1363,12 +1316,12 @@ paths: parameters: - name: limit in: query - description: Number of packs to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of packs offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -1634,12 +1587,12 @@ paths: parameters: - name: limit in: query - description: Number of configs to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of configs offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -1756,12 +1709,12 @@ paths: parameters: - name: limit in: query - description: Number of config_schemas to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of config_schemas offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -1833,12 +1786,12 @@ paths: type: string - name: limit in: query - description: Number of policytypes to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of policytypes offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -2226,11 +2179,6 @@ paths: in: query description: Number of entities to get type: integer - - name: offset - in: query - description: Number of policytypes offset - type: integer - default: 0 - name: id in: query description: Entity id filter @@ -2404,11 +2352,6 @@ paths: in: query description: Number of entities to get type: integer - - name: offset - in: query - description: Number of policytypes offset - type: integer - default: 0 - name: id in: query description: Entity id filter @@ -2536,12 +2479,12 @@ paths: required: false - name: limit in: query - description: Number of runnertypes to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of runnertypes offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -2654,11 +2597,6 @@ paths: in: query description: Number of entities to get type: integer - - name: offset - in: query - description: Number of policytypes offset - type: integer - default: 0 - name: id in: query description: Entity id filter @@ -2772,16 +2710,6 @@ paths: in: query description: Show secrets in plain text type: boolean - - name: limit - in: query - description: List N most recent apikeys. - type: integer - default: 50 - - name: offset - in: query - description: Number of apikeys offset - type: integer - default: 0 x-parameters: - name: user in: context @@ -2931,7 +2859,7 @@ paths: default: 50 - name: offset in: query - description: Number of ruleenforcements offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -3082,12 +3010,12 @@ paths: parameters: - name: limit in: query - description: Number of traces to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of traces offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -3182,12 +3110,12 @@ paths: parameters: - name: limit in: query - description: Number of triggertypes to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of triggertypes offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -3435,12 +3363,12 @@ paths: parameters: - name: limit in: query - description: Number of triggerinstances to get + description: Number of actions to get type: integer default: 100 - name: offset in: query - description: Number of triggerinstances offset + description: Number of actions offset type: integer default: 0 - name: sort @@ -3992,16 +3920,6 @@ definitions: x-nullable: true description: User context under which action should run (admins only) default: '' - ExecutionUpdateRequest: - type: object - properties: - status: - description: The current status of the action execution. - type: string - enum: {{ LIVEACTION_STATUSES }} - result: - type: object - additionalProperties: False ExecutionFilters: type: object KeyValuePair: @@ -4434,4 +4352,4 @@ security: - X-Auth-Token: [] - St2-Api-Key: [] - x-auth-token: [] - - st2-api-key: [] \ No newline at end of file + - st2-api-key: [] From 14950696b98c94816577c89df0d93d7bac20cd9e Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:06:29 +0200 Subject: [PATCH 03/15] Fix conflict and sync openapi.yaml.j2 with openapi.yaml. --- st2common/st2common/openapi.yaml.j2 | 76 ++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/st2common/st2common/openapi.yaml.j2 b/st2common/st2common/openapi.yaml.j2 index 8b77c1f762..31db52ac80 100644 --- a/st2common/st2common/openapi.yaml.j2 +++ b/st2common/st2common/openapi.yaml.j2 @@ -235,6 +235,11 @@ paths: in: query description: Number of actions to get type: integer + - name: offset + in: query + description: Number of actions offset + type: integer + default: 0 - name: id in: query description: Action id filter @@ -424,6 +429,11 @@ paths: in: query description: Number of actions to get type: integer + - name: offset + in: query + description: Number of actions offset + type: integer + default: 0 - name: id in: query description: Action id filter @@ -698,12 +708,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of actions alias to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of actions alias offset type: integer default: 0 responses: @@ -768,12 +778,12 @@ paths: required: false - name: limit in: query - description: Number of actions to get + description: Number of executions to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of executions offset type: integer default: 0 - name: sort @@ -1165,12 +1175,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of keys to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of keys offset type: integer default: 0 - name: sort @@ -1316,12 +1326,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of packs to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of packs offset type: integer default: 0 - name: sort @@ -1587,12 +1597,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of configs to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of configs offset type: integer default: 0 - name: sort @@ -1709,12 +1719,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of config schemas to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of config schemas offset type: integer default: 0 - name: sort @@ -1786,12 +1796,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of policy types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of policy types offset type: integer default: 0 - name: sort @@ -1868,6 +1878,16 @@ paths: in: query description: Policies name type: string + - name: limit + in: query + description: Number of policies to get + type: integer + default: 100 + - name: offset + in: query + description: Number of policies types offset + type: integer + default: 0 responses: '200': description: Policy created successfully. @@ -2479,12 +2499,12 @@ paths: required: false - name: limit in: query - description: Number of actions to get + description: Number of runner types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of runner types offset type: integer default: 0 - name: sort @@ -2710,6 +2730,16 @@ paths: in: query description: Show secrets in plain text type: boolean + - name: limit + in: query + description: Number of API keys to get + type: integer + default: 50 + - name: offset + in: query + description: Number of API keys to offset + type: integer + default: 0 x-parameters: - name: user in: context @@ -2859,7 +2889,7 @@ paths: default: 50 - name: offset in: query - description: Number of actions offset + description: Number of rule enforcements to offset type: integer default: 0 - name: sort @@ -3010,12 +3040,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of traces to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of traces to offset type: integer default: 0 - name: sort @@ -3110,12 +3140,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of trigger types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of trigger types to offset type: integer default: 0 - name: sort @@ -3363,12 +3393,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of trigger instances to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of trigger instances offset type: integer default: 0 - name: sort From 6c5415b835bec00516ee21a808bac23a5501cee2 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:13:15 +0200 Subject: [PATCH 04/15] Add note about file being auto generated. --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fac884657f..c11eb8cd5a 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,9 @@ configgen: .PHONY: .generate-openapi-spec .generate-openapi-spec: - . virtualenv/bin/activate; tools/generate_spec.py > st2common/st2common/openapi.yaml + echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml + echo "# and then run make .generate-openapi-spec make target" >> st2common/st2common/openapi.yaml + . virtualenv/bin/activate; tools/generate_spec.py >> st2common/st2common/openapi.yaml .PHONY: .pylint .pylint: From d0f199b3c4d1eafe5500dd9494fd72f6bc78a929 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:16:04 +0200 Subject: [PATCH 05/15] Resolve more conflicts and add missing data. --- st2common/st2common/openapi.yaml.j2 | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/st2common/st2common/openapi.yaml.j2 b/st2common/st2common/openapi.yaml.j2 index 31db52ac80..ab594244ec 100644 --- a/st2common/st2common/openapi.yaml.j2 +++ b/st2common/st2common/openapi.yaml.j2 @@ -533,6 +533,10 @@ paths: description: | Get list of action-aliases. parameters: + - name: name + in: query + description: Entity name filter + type: string - name: pack in: query description: Only return resources belonging to the provided pack @@ -964,6 +968,39 @@ paths: description: Unexpected error schema: $ref: '#/definitions/Error' + put: + operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.put + description: | + Update status and result for an execution. + parameters: + - name: id + in: path + description: Entity id + type: string + required: true + - name: liveaction_api + in: body + description: Execution update request + schema: + $ref: '#/definitions/ExecutionUpdateRequest' + - name: show_secrets + in: query + description: Show secrets in plain text + type: boolean + x-parameters: + - name: user + in: context + x-as: requester_user + description: User performing the operation. + responses: + '200': + description: Execution that was updated + schema: + $ref: '#/definitions/Execution' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' delete: operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.delete description: | @@ -3950,6 +3987,16 @@ definitions: x-nullable: true description: User context under which action should run (admins only) default: '' + ExecutionUpdateRequest: + type: object + properties: + status: + description: The current status of the action execution. + type: string + enum: {{ LIVEACTION_STATUSES }} + result: + type: object + additionalProperties: False ExecutionFilters: type: object KeyValuePair: From 5b2b3487952cc6c7c2af112eadac904792ebdd1f Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:18:44 +0200 Subject: [PATCH 06/15] Re-generate latest openapi.yaml file. --- st2common/st2common/openapi.yaml | 121 +++++++++++++++++++++++++------ 1 file changed, 98 insertions(+), 23 deletions(-) diff --git a/st2common/st2common/openapi.yaml b/st2common/st2common/openapi.yaml index cb665d695d..4b81645ce9 100644 --- a/st2common/st2common/openapi.yaml +++ b/st2common/st2common/openapi.yaml @@ -1,3 +1,5 @@ +# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2 +# and then run make .generate-openapi-spec make target swagger: '2.0' info: @@ -235,6 +237,11 @@ paths: in: query description: Number of actions to get type: integer + - name: offset + in: query + description: Number of actions offset + type: integer + default: 0 - name: id in: query description: Action id filter @@ -424,6 +431,11 @@ paths: in: query description: Number of actions to get type: integer + - name: offset + in: query + description: Number of actions offset + type: integer + default: 0 - name: id in: query description: Action id filter @@ -698,12 +710,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of actions alias to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of actions alias offset type: integer default: 0 responses: @@ -768,12 +780,12 @@ paths: required: false - name: limit in: query - description: Number of actions to get + description: Number of executions to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of executions offset type: integer default: 0 - name: sort @@ -954,6 +966,39 @@ paths: description: Unexpected error schema: $ref: '#/definitions/Error' + put: + operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.put + description: | + Update status and result for an execution. + parameters: + - name: id + in: path + description: Entity id + type: string + required: true + - name: liveaction_api + in: body + description: Execution update request + schema: + $ref: '#/definitions/ExecutionUpdateRequest' + - name: show_secrets + in: query + description: Show secrets in plain text + type: boolean + x-parameters: + - name: user + in: context + x-as: requester_user + description: User performing the operation. + responses: + '200': + description: Execution that was updated + schema: + $ref: '#/definitions/Execution' + default: + description: Unexpected error + schema: + $ref: '#/definitions/Error' delete: operationId: st2api.controllers.v1.actionexecutions:action_executions_controller.delete description: | @@ -1165,12 +1210,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of keys to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of keys offset type: integer default: 0 - name: sort @@ -1316,12 +1361,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of packs to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of packs offset type: integer default: 0 - name: sort @@ -1587,12 +1632,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of configs to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of configs offset type: integer default: 0 - name: sort @@ -1709,12 +1754,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of config schemas to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of config schemas offset type: integer default: 0 - name: sort @@ -1786,12 +1831,12 @@ paths: type: string - name: limit in: query - description: Number of actions to get + description: Number of policy types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of policy types offset type: integer default: 0 - name: sort @@ -1868,6 +1913,16 @@ paths: in: query description: Policies name type: string + - name: limit + in: query + description: Number of policies to get + type: integer + default: 100 + - name: offset + in: query + description: Number of policies types offset + type: integer + default: 0 responses: '200': description: Policy created successfully. @@ -2479,12 +2534,12 @@ paths: required: false - name: limit in: query - description: Number of actions to get + description: Number of runner types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of runner types offset type: integer default: 0 - name: sort @@ -2710,6 +2765,16 @@ paths: in: query description: Show secrets in plain text type: boolean + - name: limit + in: query + description: Number of API keys to get + type: integer + default: 50 + - name: offset + in: query + description: Number of API keys to offset + type: integer + default: 0 x-parameters: - name: user in: context @@ -2859,7 +2924,7 @@ paths: default: 50 - name: offset in: query - description: Number of actions offset + description: Number of rule enforcements to offset type: integer default: 0 - name: sort @@ -3010,12 +3075,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of traces to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of traces to offset type: integer default: 0 - name: sort @@ -3110,12 +3175,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of trigger types to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of trigger types to offset type: integer default: 0 - name: sort @@ -3363,12 +3428,12 @@ paths: parameters: - name: limit in: query - description: Number of actions to get + description: Number of trigger instances to get type: integer default: 100 - name: offset in: query - description: Number of actions offset + description: Number of trigger instances offset type: integer default: 0 - name: sort @@ -3920,6 +3985,16 @@ definitions: x-nullable: true description: User context under which action should run (admins only) default: '' + ExecutionUpdateRequest: + type: object + properties: + status: + description: The current status of the action execution. + type: string + enum: ['requested', 'scheduled', 'delayed', 'running', 'succeeded', 'failed', 'timeout', 'abandoned', 'canceling', 'canceled'] + result: + type: object + additionalProperties: False ExecutionFilters: type: object KeyValuePair: From 5c705ecf2dc604ce526902e22ed994157f48c7aa Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:21:32 +0200 Subject: [PATCH 07/15] Re-generate openapi.yaml file. --- st2common/st2common/openapi.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/st2common/st2common/openapi.yaml b/st2common/st2common/openapi.yaml index 4b81645ce9..3b62661288 100644 --- a/st2common/st2common/openapi.yaml +++ b/st2common/st2common/openapi.yaml @@ -535,6 +535,10 @@ paths: description: | Get list of action-aliases. parameters: + - name: name + in: query + description: Entity name filter + type: string - name: pack in: query description: Only return resources belonging to the provided pack From c5e4209f33df9cc4e23b934de8bca36c1becb6ab Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:23:09 +0200 Subject: [PATCH 08/15] Fix typos. --- st2common/st2common/openapi.yaml.j2 | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/st2common/st2common/openapi.yaml.j2 b/st2common/st2common/openapi.yaml.j2 index ab594244ec..042af19948 100644 --- a/st2common/st2common/openapi.yaml.j2 +++ b/st2common/st2common/openapi.yaml.j2 @@ -237,7 +237,7 @@ paths: type: integer - name: offset in: query - description: Number of actions offset + description: Number of actions to offset type: integer default: 0 - name: id @@ -431,7 +431,7 @@ paths: type: integer - name: offset in: query - description: Number of actions offset + description: Number of actions to offset type: integer default: 0 - name: id @@ -717,7 +717,7 @@ paths: default: 100 - name: offset in: query - description: Number of actions alias offset + description: Number of actions alias to offset type: integer default: 0 responses: @@ -787,7 +787,7 @@ paths: default: 100 - name: offset in: query - description: Number of executions offset + description: Number of executions to offset type: integer default: 0 - name: sort @@ -1217,7 +1217,7 @@ paths: default: 100 - name: offset in: query - description: Number of keys offset + description: Number of keys to offset type: integer default: 0 - name: sort @@ -1368,7 +1368,7 @@ paths: default: 100 - name: offset in: query - description: Number of packs offset + description: Number of packs to offset type: integer default: 0 - name: sort @@ -1639,7 +1639,7 @@ paths: default: 100 - name: offset in: query - description: Number of configs offset + description: Number of configs to offset type: integer default: 0 - name: sort @@ -1761,7 +1761,7 @@ paths: default: 100 - name: offset in: query - description: Number of config schemas offset + description: Number of config schemas to offset type: integer default: 0 - name: sort @@ -1838,7 +1838,7 @@ paths: default: 100 - name: offset in: query - description: Number of policy types offset + description: Number of policy types to offset type: integer default: 0 - name: sort @@ -1922,7 +1922,7 @@ paths: default: 100 - name: offset in: query - description: Number of policies types offset + description: Number of policies to offset type: integer default: 0 responses: @@ -2541,7 +2541,7 @@ paths: default: 100 - name: offset in: query - description: Number of runner types offset + description: Number of runner types to offset type: integer default: 0 - name: sort @@ -3435,7 +3435,7 @@ paths: default: 100 - name: offset in: query - description: Number of trigger instances offset + description: Number of trigger instances to offset type: integer default: 0 - name: sort From 0b198b15237d598da716de88bea228ee2dae8b13 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:23:58 +0200 Subject: [PATCH 09/15] Re-generate openapi.yaml file. --- st2common/st2common/openapi.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/st2common/st2common/openapi.yaml b/st2common/st2common/openapi.yaml index 3b62661288..5b877ec566 100644 --- a/st2common/st2common/openapi.yaml +++ b/st2common/st2common/openapi.yaml @@ -239,7 +239,7 @@ paths: type: integer - name: offset in: query - description: Number of actions offset + description: Number of actions to offset type: integer default: 0 - name: id @@ -433,7 +433,7 @@ paths: type: integer - name: offset in: query - description: Number of actions offset + description: Number of actions to offset type: integer default: 0 - name: id @@ -719,7 +719,7 @@ paths: default: 100 - name: offset in: query - description: Number of actions alias offset + description: Number of actions alias to offset type: integer default: 0 responses: @@ -789,7 +789,7 @@ paths: default: 100 - name: offset in: query - description: Number of executions offset + description: Number of executions to offset type: integer default: 0 - name: sort @@ -1219,7 +1219,7 @@ paths: default: 100 - name: offset in: query - description: Number of keys offset + description: Number of keys to offset type: integer default: 0 - name: sort @@ -1370,7 +1370,7 @@ paths: default: 100 - name: offset in: query - description: Number of packs offset + description: Number of packs to offset type: integer default: 0 - name: sort @@ -1641,7 +1641,7 @@ paths: default: 100 - name: offset in: query - description: Number of configs offset + description: Number of configs to offset type: integer default: 0 - name: sort @@ -1763,7 +1763,7 @@ paths: default: 100 - name: offset in: query - description: Number of config schemas offset + description: Number of config schemas to offset type: integer default: 0 - name: sort @@ -1840,7 +1840,7 @@ paths: default: 100 - name: offset in: query - description: Number of policy types offset + description: Number of policy types to offset type: integer default: 0 - name: sort @@ -1924,7 +1924,7 @@ paths: default: 100 - name: offset in: query - description: Number of policies types offset + description: Number of policies to offset type: integer default: 0 responses: @@ -2543,7 +2543,7 @@ paths: default: 100 - name: offset in: query - description: Number of runner types offset + description: Number of runner types to offset type: integer default: 0 - name: sort @@ -3437,7 +3437,7 @@ paths: default: 100 - name: offset in: query - description: Number of trigger instances offset + description: Number of trigger instances to offset type: integer default: 0 - name: sort From 0ed0e7ff8d1acd97605e4d51b482fca2d5405c0b Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Mon, 26 Jun 2017 18:28:58 +0200 Subject: [PATCH 10/15] Make sure we generate openapi.yaml file as part of every make target so there are no surprised and we are always working with latest generated file. --- Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index c11eb8cd5a..c1b4b06b95 100644 --- a/Makefile +++ b/Makefile @@ -79,6 +79,9 @@ configgen: .PHONY: .generate-openapi-spec .generate-openapi-spec: + @echo + @echo "================== Generate openapi.yaml file ====================" + @echo echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml echo "# and then run make .generate-openapi-spec make target" >> st2common/st2common/openapi.yaml . virtualenv/bin/activate; tools/generate_spec.py >> st2common/st2common/openapi.yaml @@ -161,7 +164,7 @@ bandit: requirements .bandit lint: requirements .lint .PHONY: .lint -.lint: .flake8 .pylint .bandit .st2client-dependencies-check .st2common-circular-dependencies-check .rst-check +.lint: .generate-openapi-spec .flake8 .pylint .bandit .st2client-dependencies-check .st2common-circular-dependencies-check .rst-check .PHONY: clean clean: .cleanpycs @@ -283,10 +286,10 @@ $(VIRTUALENV_DIR)/bin/activate: tests: pytests .PHONY: pytests -pytests: compile requirements .generate-openapi-spec .flake8 .pylint .pytests-coverage +pytests: compile requirements .flake8 .pylint .pytests-coverage .PHONY: .pytests -.pytests: compile .unit-tests .itests clean +.pytests: compile .generate-openapi-spec .unit-tests .itests clean .PHONY: .pytests-coverage .pytests-coverage: .unit-tests-coverage-html .itests-coverage-html clean From c3b3da26836fb16a05046314e13f225ef2520782 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 27 Jun 2017 10:09:45 +0200 Subject: [PATCH 11/15] Replace tools/generate_spec.py with st2-validate-api-spec. --- Makefile | 2 +- circle.yml | 2 +- tools/generate_spec.py | 27 --------------------------- 3 files changed, 2 insertions(+), 29 deletions(-) delete mode 100755 tools/generate_spec.py diff --git a/Makefile b/Makefile index c1b4b06b95..7f81b803b4 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ configgen: @echo echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml echo "# and then run make .generate-openapi-spec make target" >> st2common/st2common/openapi.yaml - . virtualenv/bin/activate; tools/generate_spec.py >> st2common/st2common/openapi.yaml + . virtualenv/bin/activate; st2common/bin/st2-validate-api-spec --generate >> st2common/st2common/openapi.yaml .PHONY: .pylint .pylint: diff --git a/circle.yml b/circle.yml index 7046a122ae..36ee91db5a 100644 --- a/circle.yml +++ b/circle.yml @@ -37,7 +37,7 @@ test: - case $CIRCLE_NODE_INDEX in 0) make ci-checks ci-packs-tests ;; 1) make ci-unit ;; 2) make ci-integration ;; 3) make ci-unit ;; 4) make ci-integration ;; esac: parallel: true post: - - case $CIRCLE_NODE_INDEX in 0) . virtualenv/bin/activate; tools/generate_spec.py > $CIRCLE_ARTIFACTS/openapi.yaml ;; [1,2]) codecov ;; esac: + - case $CIRCLE_NODE_INDEX in 0) . virtualenv/bin/activate; st2common/bin/st2-validate-api-spec --generate > $CIRCLE_ARTIFACTS/openapi.yaml ;; [1,2]) codecov ;; esac: parallel: true experimental: diff --git a/tools/generate_spec.py b/tools/generate_spec.py deleted file mode 100755 index f21d01e9e1..0000000000 --- a/tools/generate_spec.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python2.7 -# Licensed to the StackStorm, Inc ('StackStorm') under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import pkg_resources - -import jinja2 - -from st2common.util.spec_loader import ARGUMENTS - - -if __name__ == '__main__': - spec_template = pkg_resources.resource_string('st2common', 'openapi.yaml.j2') - spec_string = jinja2.Template(spec_template).render(**ARGUMENTS) - print(spec_string) From 3ce198d9653fd1fc195dca3f505b70dc71c255ef Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 27 Jun 2017 10:19:11 +0200 Subject: [PATCH 12/15] Split tool for generating api spec in a separate tool which just prints a string instead of writing a file. This way it offers more flexibility and we can use it in combination with echo, etc. Also update affected code. --- Makefile | 2 +- circle.yml | 2 +- st2common/bin/st2-generate-api-spec | 21 +++++++ st2common/st2common/cmd/generate_api_spec.py | 60 ++++++++++++++++++++ 4 files changed, 83 insertions(+), 2 deletions(-) create mode 100755 st2common/bin/st2-generate-api-spec create mode 100644 st2common/st2common/cmd/generate_api_spec.py diff --git a/Makefile b/Makefile index 7f81b803b4..43cec1a802 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ configgen: @echo echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml echo "# and then run make .generate-openapi-spec make target" >> st2common/st2common/openapi.yaml - . virtualenv/bin/activate; st2common/bin/st2-validate-api-spec --generate >> st2common/st2common/openapi.yaml + . virtualenv/bin/activate; st2common/bin/st2-generate-api-spec >> st2common/st2common/openapi.yaml .PHONY: .pylint .pylint: diff --git a/circle.yml b/circle.yml index 36ee91db5a..5211e02bc9 100644 --- a/circle.yml +++ b/circle.yml @@ -37,7 +37,7 @@ test: - case $CIRCLE_NODE_INDEX in 0) make ci-checks ci-packs-tests ;; 1) make ci-unit ;; 2) make ci-integration ;; 3) make ci-unit ;; 4) make ci-integration ;; esac: parallel: true post: - - case $CIRCLE_NODE_INDEX in 0) . virtualenv/bin/activate; st2common/bin/st2-validate-api-spec --generate > $CIRCLE_ARTIFACTS/openapi.yaml ;; [1,2]) codecov ;; esac: + - case $CIRCLE_NODE_INDEX in 0) . virtualenv/bin/activate; st2common/bin/st2-generate-api-spec > $CIRCLE_ARTIFACTS/openapi.yaml ;; [1,2]) codecov ;; esac: parallel: true experimental: diff --git a/st2common/bin/st2-generate-api-spec b/st2common/bin/st2-generate-api-spec new file mode 100755 index 0000000000..8040c83abf --- /dev/null +++ b/st2common/bin/st2-generate-api-spec @@ -0,0 +1,21 @@ +#!/usr/bin/env python2.7 +# Licensed to the StackStorm, Inc ('StackStorm') under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from st2common.cmd.generate_api_spec import main + +if __name__ == '__main__': + sys.exit(main()) diff --git a/st2common/st2common/cmd/generate_api_spec.py b/st2common/st2common/cmd/generate_api_spec.py new file mode 100644 index 0000000000..51ff051d93 --- /dev/null +++ b/st2common/st2common/cmd/generate_api_spec.py @@ -0,0 +1,60 @@ +# Licensed to the StackStorm, Inc ('StackStorm') under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +A script generates final openapi.yaml file based on openapi.yaml.j2 Jinja +template file. +""" + +from st2common import config +from st2common import log as logging +from st2common.util import spec_loader +from st2common.script_setup import setup as common_setup +from st2common.script_setup import teardown as common_teardown + + +__all__ = [ + 'main' +] + +LOG = logging.getLogger(__name__) + + +def setup(): + common_setup(config=config, setup_db=False, register_mq_exchanges=False) + + +def generate_spec(): + spec_string = spec_loader.generate_spec('st2common', 'openapi.yaml.j2') + print(spec_string) + + +def teartown(): + common_teardown() + + +def main(): + setup() + + try: + generate_spec() + ret = 0 + except Exception as e: + LOG.error(e.message) + ret = 1 + finally: + teartown() + + return ret From e5f182b464e8dbec2bfb904f71b8524df2888bd6 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 27 Jun 2017 10:40:16 +0200 Subject: [PATCH 13/15] Use consistent make format. --- Makefile | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 43cec1a802..d64d690213 100644 --- a/Makefile +++ b/Makefile @@ -77,15 +77,6 @@ configgen: echo "" >> conf/st2.conf.sample . $(VIRTUALENV_DIR)/bin/activate; python ./tools/config_gen.py >> conf/st2.conf.sample; -.PHONY: .generate-openapi-spec -.generate-openapi-spec: - @echo - @echo "================== Generate openapi.yaml file ====================" - @echo - echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml - echo "# and then run make .generate-openapi-spec make target" >> st2common/st2common/openapi.yaml - . virtualenv/bin/activate; st2common/bin/st2-generate-api-spec >> st2common/st2common/openapi.yaml - .PHONY: .pylint .pylint: @echo @@ -124,14 +115,26 @@ lint-api-spec: requirements .lint-api-spec @echo @echo "================== Lint API spec ====================" @echo - . $(VIRTUALENV_DIR)/bin/activate; st2common/bin/st2-validate-api-spec --generate + . $(VIRTUALENV_DIR)/bin/activate; st2common/bin/st2-validate-api-spec + +.PHONY: generate-api-spec +generate-api-spec: requirements .generate-api-spec + +.PHONY: .generate-api-spec +.generate-api-spec: + @echo + @echo "================== Generate openapi.yaml file ====================" + @echo + echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml + echo "# and then run make .generate-api-spec make target to generate the final spec file" >> st2common/st2common/openapi.yaml + . virtualenv/bin/activate; st2common/bin/st2-generate-api-spec >> st2common/st2common/openapi.yaml .PHONY: circle-lint-api-spec circle-lint-api-spec: @echo @echo "================== Lint API spec ====================" @echo - . $(VIRTUALENV_DIR)/bin/activate; st2common/bin/st2-validate-api-spec --generate || echo "Open API spec lint failed." + . $(VIRTUALENV_DIR)/bin/activate; st2common/bin/st2-validate-api-spec || echo "Open API spec lint failed." .PHONY: flake8 flake8: requirements .flake8 @@ -164,7 +167,7 @@ bandit: requirements .bandit lint: requirements .lint .PHONY: .lint -.lint: .generate-openapi-spec .flake8 .pylint .bandit .st2client-dependencies-check .st2common-circular-dependencies-check .rst-check +.lint: .generate-api-spec .flake8 .pylint .bandit .st2client-dependencies-check .st2common-circular-dependencies-check .rst-check .PHONY: clean clean: .cleanpycs @@ -289,7 +292,7 @@ tests: pytests pytests: compile requirements .flake8 .pylint .pytests-coverage .PHONY: .pytests -.pytests: compile .generate-openapi-spec .unit-tests .itests clean +.pytests: compile .generate-api-spec .unit-tests .itests clean .PHONY: .pytests-coverage .pytests-coverage: .unit-tests-coverage-html .itests-coverage-html clean From 832e120dce9ab62124192da944ee527505fabf4d Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 27 Jun 2017 10:44:17 +0200 Subject: [PATCH 14/15] Make warning more explicit. --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d64d690213..711733a5b4 100644 --- a/Makefile +++ b/Makefile @@ -125,8 +125,9 @@ generate-api-spec: requirements .generate-api-spec @echo @echo "================== Generate openapi.yaml file ====================" @echo - echo "# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2" > st2common/st2common/openapi.yaml - echo "# and then run make .generate-api-spec make target to generate the final spec file" >> st2common/st2common/openapi.yaml + echo "# NOTE: This file is auto-generated - DO NOT EDIT MANUALLY" > st2common/st2common/openapi.yaml + echo "# Edit st2common/st2common/openapi.yaml.j2 and then run" >> st2common/st2common/openapi.yaml + echo "# make .generate-api-spec make target to generate the final spec file" >> st2common/st2common/openapi.yaml . virtualenv/bin/activate; st2common/bin/st2-generate-api-spec >> st2common/st2common/openapi.yaml .PHONY: circle-lint-api-spec From 6dd5fd84da021b82ddfa50642b077241cd8eeafc Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 27 Jun 2017 10:44:27 +0200 Subject: [PATCH 15/15] Include latest generated file. --- st2common/st2common/openapi.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/st2common/st2common/openapi.yaml b/st2common/st2common/openapi.yaml index 5b877ec566..abbf8bbfbd 100644 --- a/st2common/st2common/openapi.yaml +++ b/st2common/st2common/openapi.yaml @@ -1,5 +1,6 @@ -# NOTE: This file is auto-generated. Please edit st2common/st2common/openapi.yaml.j2 -# and then run make .generate-openapi-spec make target +# NOTE: This file is auto-generated - DO NOT EDIT MANUALLY +# Edit st2common/st2common/openapi.yaml.j2 and then run +# make .generate-api-spec make target to generate the final spec file swagger: '2.0' info: