From c5f402bfa3f1a1ec0e42d401419b80b81ee42990 Mon Sep 17 00:00:00 2001 From: dahyung-kwon Date: Tue, 11 Sep 2018 20:22:54 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Add=20=E2=80=9CExtra=20CLI=20Arguments?= =?UTF-8?q?=E2=80=9D=20filed=20to=20"Create=20Task"=20UI.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/resources/pug/projects/createTaskModal.pug | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/web/resources/pug/projects/createTaskModal.pug b/web/resources/pug/projects/createTaskModal.pug index 0c445e25e..56c92da69 100644 --- a/web/resources/pug/projects/createTaskModal.pug +++ b/web/resources/pug/projects/createTaskModal.pug @@ -13,6 +13,10 @@ label.control-label.col-sm-4 Environment Override (*MUST* be valid JSON) .col-sm-6 div(ui-ace="{mode: 'json', workerPath: '/public/js/ace/'}" class="form-control" style="height: 100px" ng-model="task.environment") + .form-group + label.control-label.col-sm-4(uib-tooltip='*MUST* be a JSON array! Each argument must be an element of the array, for example: ["-i", "@myinventory.sh", "--private-key=/there/id_rsa", "-vvvv"]') Extra CLI Arguments + .col-sm-6 + div(ui-ace="{mode: 'json', workerPath: '/public/js/ace/'}" style="height: 100px" class="form-control" ng-model="task.arguments") .form-group .col-sm-6.col-sm-offset-4: .checkbox: label input(type="checkbox" ng-model="task.debug") From 4814b7ee40cf4d7808c75ff66c0775ab5d0a0878 Mon Sep 17 00:00:00 2001 From: dahyung-kwon Date: Tue, 11 Sep 2018 20:29:05 +0900 Subject: [PATCH 2/4] Add arguments column on task table. --- db/Task.go | 3 ++- db/migrations/v2.5.2.sql | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 db/migrations/v2.5.2.sql diff --git a/db/Task.go b/db/Task.go index 661edda2c..46ee84a4c 100644 --- a/db/Task.go +++ b/db/Task.go @@ -2,7 +2,6 @@ package db import "time" - //Task is a model of a task which will be executed by the runner type Task struct { ID int `db:"id" json:"id"` @@ -16,6 +15,8 @@ type Task struct { // override variables Playbook string `db:"playbook" json:"playbook"` Environment string `db:"environment" json:"environment"` + // to fit into []string + Arguments *string `db:"arguments" json:"arguments"` UserID *int `db:"user_id" json:"user_id"` diff --git a/db/migrations/v2.5.2.sql b/db/migrations/v2.5.2.sql new file mode 100644 index 000000000..ac61adc89 --- /dev/null +++ b/db/migrations/v2.5.2.sql @@ -0,0 +1 @@ +alter table task add `arguments` text null; \ No newline at end of file From 5d1ac1241e5794187930defdb4a3dc4218b36c03 Mon Sep 17 00:00:00 2001 From: dahyung-kwon Date: Tue, 11 Sep 2018 20:49:03 +0900 Subject: [PATCH 3/4] Add task.arguments value to getPlaybookArgs() method. --- api/tasks/runner.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/api/tasks/runner.go b/api/tasks/runner.go index 9eed70c21..cdfff364d 100644 --- a/api/tasks/runner.go +++ b/api/tasks/runner.go @@ -444,9 +444,18 @@ func (t *task) getPlaybookArgs() ([]string, error) { args = append(args, "--extra-vars", extraVar) } - var extraArgs []string + var templateExtraArgs []string if t.template.Arguments != nil { - err := json.Unmarshal([]byte(*t.template.Arguments), &extraArgs) + err := json.Unmarshal([]byte(*t.template.Arguments), &templateExtraArgs) + if err != nil { + t.log("Could not unmarshal arguments to []string") + return nil, err + } + } + + var taskExtraArgs []string + if t.task.Arguments != nil { + err := json.Unmarshal([]byte(*t.task.Arguments), &taskExtraArgs) if err != nil { t.log("Could not unmarshal arguments to []string") return nil, err @@ -454,9 +463,10 @@ func (t *task) getPlaybookArgs() ([]string, error) { } if t.template.OverrideArguments { - args = extraArgs + args = templateExtraArgs } else { - args = append(args, extraArgs...) + args = append(args, templateExtraArgs...) + args = append(args, taskExtraArgs...) args = append(args, playbookName) } return args, nil From 70bea1e1334efda7bf3c64c81bc61126d8306f6d Mon Sep 17 00:00:00 2001 From: "dahyung.kwon" Date: Tue, 16 Oct 2018 00:48:19 +0900 Subject: [PATCH 4/4] add version 2.5.2 --- db/version.go | 1 + 1 file changed, 1 insertion(+) diff --git a/db/version.go b/db/version.go index 00c7facf4..497be6b79 100644 --- a/db/version.go +++ b/db/version.go @@ -82,5 +82,6 @@ func init() { {Major: 2, Minor: 3, Patch: 2}, {Major: 2, Minor: 4}, {Major: 2, Minor: 5}, + {Major: 2, Minor: 5, Patch: 2}, } }