@@ -43,11 +43,11 @@ func NewInventoryHandler(workdir string, restconfig *rest.Config, client ctrlcli
4343func (h * InventoryHandler ) Post (request * restful.Request , response * restful.Response ) {
4444 inventory := & kkcorev1.Inventory {}
4545 if err := request .ReadEntity (inventory ); err != nil {
46- api .HandleBadRequest (response , request , err )
46+ api .HandleError (response , request , err )
4747 return
4848 }
4949 if err := h .client .Create (request .Request .Context (), inventory ); err != nil {
50- api .HandleBadRequest (response , request , err )
50+ api .HandleError (response , request , err )
5151 return
5252 }
5353
@@ -61,21 +61,21 @@ func (h *InventoryHandler) Patch(request *restful.Request, response *restful.Res
6161 name := request .PathParameter ("inventory" )
6262 data , err := io .ReadAll (request .Request .Body )
6363 if err != nil {
64- api .HandleBadRequest (response , request , err )
64+ api .HandleError (response , request , err )
6565 return
6666 }
6767 patchType := request .HeaderParameter ("Content-Type" )
6868
6969 // Get the existing inventory object.
7070 inventory := & kkcorev1.Inventory {}
7171 if err := h .client .Get (request .Request .Context (), ctrlclient.ObjectKey {Namespace : namespace , Name : name }, inventory ); err != nil {
72- api .HandleBadRequest (response , request , err )
72+ api .HandleError (response , request , err )
7373 return
7474 }
7575
7676 // Apply the patch.
7777 if err := h .client .Patch (request .Request .Context (), inventory , ctrlclient .RawPatch (types .PatchType (patchType ), data )); err != nil {
78- api .HandleBadRequest (response , request , err )
78+ api .HandleError (response , request , err )
7979 return
8080 }
8181 // create host-check playbook
@@ -98,28 +98,27 @@ func (h *InventoryHandler) Patch(request *restful.Request, response *restful.Res
9898 }
9999 // Set the workdir in the playbook's spec config
100100 if err := unstructured .SetNestedField (playbook .Spec .Config .Value (), h .workdir , _const .Workdir ); err != nil {
101- api .HandleBadRequest (response , request , err )
101+ api .HandleError (response , request , err )
102102 return
103103 }
104104 if err := h .client .Create (request .Request .Context (), playbook ); err != nil {
105- api .HandleBadRequest (response , request , errors .Wrap (err , "failed to create hostcheck playbook" ))
105+ api .HandleError (response , request , errors .Wrap (err , "failed to create hostcheck playbook" ))
106106 return
107107 }
108108
109109 // Execute the playbook asynchronously.
110- if err := playbookManager .executor (playbook , h .client ); err != nil {
111- api .HandleBadRequest (response , request , errors .Wrap (err , "failed to execute hostcheck playbook" ))
110+ if err := playbookManager .executor (playbook , h .client , query . DefaultString ( request . QueryParameter ( "promise" ), "true" ) ); err != nil {
111+ api .HandleError (response , request , errors .Wrap (err , "failed to execute hostcheck playbook" ))
112112 return
113113 }
114-
115114 // update inventory annotation
116115 old := inventory .DeepCopy ()
117116 if inventory .Annotations == nil {
118117 inventory .Annotations = make (map [string ]string )
119118 }
120119 inventory .Annotations [kkcorev1 .HostCheckPlaybookAnnotation ] = playbook .Name
121120 if err := h .client .Patch (request .Request .Context (), inventory , ctrlclient .MergeFrom (old )); err != nil {
122- api .HandleBadRequest (response , request , errors .Wrap (err , "failed to execute hostcheck playbook" ))
121+ api .HandleError (response , request , errors .Wrap (err , "failed to execute hostcheck playbook" ))
123122 return
124123 }
125124
@@ -133,18 +132,17 @@ func (h *InventoryHandler) List(request *restful.Request, response *restful.Resp
133132 var fieldselector fields.Selector
134133 // Parse field selector from query parameters if present.
135134 if v , ok := queryParam .Filters [query .ParameterFieldSelector ]; ok {
136- fs , err := fields .ParseSelector (string ( v ) )
135+ fs , err := fields .ParseSelector (v )
137136 if err != nil {
138137 api .HandleError (response , request , err )
139138 return
140139 }
141140 fieldselector = fs
142141 }
143- namespace := request .PathParameter ("namespace" )
144142
145143 inventoryList := & kkcorev1.InventoryList {}
146144 // List inventory resources from the Kubernetes API.
147- err := h .client .List (request .Request .Context (), inventoryList , & ctrlclient.ListOptions {Namespace : namespace , LabelSelector : queryParam .Selector (), FieldSelector : fieldselector })
145+ err := h .client .List (request .Request .Context (), inventoryList , & ctrlclient.ListOptions {Namespace : request . PathParameter ( " namespace" ) , LabelSelector : queryParam .Selector (), FieldSelector : fieldselector })
148146 if err != nil {
149147 api .HandleError (response , request , err )
150148 return
@@ -202,7 +200,6 @@ func (h *InventoryHandler) ListHosts(request *restful.Request, response *restful
202200 queryParam := query .ParseQueryParameter (request )
203201 namespace := request .PathParameter ("namespace" )
204202 name := request .PathParameter ("inventory" )
205-
206203 // Retrieve the inventory object from the cluster.
207204 inventory := & kkcorev1.Inventory {}
208205 err := h .client .Get (request .Request .Context (), ctrlclient.ObjectKey {Namespace : namespace , Name : name }, inventory )
@@ -287,6 +284,8 @@ func (h *InventoryHandler) ListHosts(request *restful.Request, response *restful
287284 fillByPlaybook := func (playbook kkcorev1.Playbook , item * api.InventoryHostTable ) {
288285 // Set status and architecture based on playbook phase and result.
289286 switch playbook .Status .Phase {
287+ case kkcorev1 .PlaybookPhasePending , kkcorev1 .PlaybookPhaseRunning :
288+ item .Status = api .ResultPending
290289 case kkcorev1 .PlaybookPhaseFailed :
291290 item .Status = api .ResultFailed
292291 case kkcorev1 .PlaybookPhaseSucceeded :
@@ -321,7 +320,7 @@ func (h *InventoryHandler) ListHosts(request *restful.Request, response *restful
321320 val := query .GetFieldByJSONTag (reflect .ValueOf (o ), f .Field )
322321 switch val .Kind () {
323322 case reflect .String :
324- return strings .Contains (val .String (), string ( f .Value ) )
323+ return strings .Contains (val .String (), f .Value )
325324 default :
326325 return true
327326 }
0 commit comments