@@ -173,6 +173,30 @@ var instancesStandby = cli.Command{
173173 HideHelpCommand : true ,
174174}
175175
176+ var instancesStart = cli.Command {
177+ Name : "start" ,
178+ Usage : "Start a stopped instance" ,
179+ Flags : []cli.Flag {
180+ & requestflag.StringFlag {
181+ Name : "id" ,
182+ },
183+ },
184+ Action : handleInstancesStart ,
185+ HideHelpCommand : true ,
186+ }
187+
188+ var instancesStop = cli.Command {
189+ Name : "stop" ,
190+ Usage : "Stop instance (graceful shutdown)" ,
191+ Flags : []cli.Flag {
192+ & requestflag.StringFlag {
193+ Name : "id" ,
194+ },
195+ },
196+ Action : handleInstancesStop ,
197+ HideHelpCommand : true ,
198+ }
199+
176200func handleInstancesCreate (ctx context.Context , cmd * cli.Command ) error {
177201 client := hypeman .NewClient (getDefaultRequestOptions (cmd )... )
178202 unusedArgs := cmd .Args ().Slice ()
@@ -402,3 +426,75 @@ func handleInstancesStandby(ctx context.Context, cmd *cli.Command) error {
402426 transform := cmd .Root ().String ("transform" )
403427 return ShowJSON ("instances standby" , json , format , transform )
404428}
429+
430+ func handleInstancesStart (ctx context.Context , cmd * cli.Command ) error {
431+ client := hypeman .NewClient (getDefaultRequestOptions (cmd )... )
432+ unusedArgs := cmd .Args ().Slice ()
433+ if ! cmd .IsSet ("id" ) && len (unusedArgs ) > 0 {
434+ cmd .Set ("id" , unusedArgs [0 ])
435+ unusedArgs = unusedArgs [1 :]
436+ }
437+ if len (unusedArgs ) > 0 {
438+ return fmt .Errorf ("Unexpected extra arguments: %v" , unusedArgs )
439+ }
440+ options , err := flagOptions (
441+ cmd ,
442+ apiquery .NestedQueryFormatBrackets ,
443+ apiquery .ArrayQueryFormatComma ,
444+ ApplicationJSON ,
445+ )
446+ if err != nil {
447+ return err
448+ }
449+ var res []byte
450+ options = append (options , option .WithResponseBodyInto (& res ))
451+ _ , err = client .Instances .Start (
452+ ctx ,
453+ requestflag .CommandRequestValue [string ](cmd , "id" ),
454+ options ... ,
455+ )
456+ if err != nil {
457+ return err
458+ }
459+
460+ json := gjson .Parse (string (res ))
461+ format := cmd .Root ().String ("format" )
462+ transform := cmd .Root ().String ("transform" )
463+ return ShowJSON ("instances start" , json , format , transform )
464+ }
465+
466+ func handleInstancesStop (ctx context.Context , cmd * cli.Command ) error {
467+ client := hypeman .NewClient (getDefaultRequestOptions (cmd )... )
468+ unusedArgs := cmd .Args ().Slice ()
469+ if ! cmd .IsSet ("id" ) && len (unusedArgs ) > 0 {
470+ cmd .Set ("id" , unusedArgs [0 ])
471+ unusedArgs = unusedArgs [1 :]
472+ }
473+ if len (unusedArgs ) > 0 {
474+ return fmt .Errorf ("Unexpected extra arguments: %v" , unusedArgs )
475+ }
476+ options , err := flagOptions (
477+ cmd ,
478+ apiquery .NestedQueryFormatBrackets ,
479+ apiquery .ArrayQueryFormatComma ,
480+ ApplicationJSON ,
481+ )
482+ if err != nil {
483+ return err
484+ }
485+ var res []byte
486+ options = append (options , option .WithResponseBodyInto (& res ))
487+ _ , err = client .Instances .Stop (
488+ ctx ,
489+ requestflag .CommandRequestValue [string ](cmd , "id" ),
490+ options ... ,
491+ )
492+ if err != nil {
493+ return err
494+ }
495+
496+ json := gjson .Parse (string (res ))
497+ format := cmd .Root ().String ("format" )
498+ transform := cmd .Root ().String ("transform" )
499+ return ShowJSON ("instances stop" , json , format , transform )
500+ }
0 commit comments