8
8
"strings"
9
9
10
10
"github.com/rancher/cli/cliclient"
11
+ "github.com/rancher/norman/types"
11
12
managementClient "github.com/rancher/rancher/pkg/client/generated/management/v3"
12
13
"github.com/sirupsen/logrus"
13
14
"github.com/urfave/cli"
@@ -98,18 +99,26 @@ func ClusterCommand() cli.Command {
98
99
Name : "import" ,
99
100
Usage : "Import an existing Kubernetes cluster into a Rancher cluster" ,
100
101
Description : importDescription ,
101
- ArgsUsage : "[ CLUSTERID CLUSTERNAME] " ,
102
+ ArgsUsage : "CLUSTERID|--cluster-name CLUSTERNAME" ,
102
103
Action : clusterImport ,
103
104
Flags : []cli.Flag {
105
+ cli.StringFlag {
106
+ Name : "cluster-name, name, n" ,
107
+ Usage : "Specify cluster by `CLUSTERNAME` instead of CLUSTERID" ,
108
+ },
104
109
quietFlag ,
105
110
},
106
111
},
107
112
{
108
113
Name : "add-node" ,
109
114
Usage : "Outputs the docker command needed to add a node to an existing Rancher custom cluster" ,
110
- ArgsUsage : "[ CLUSTERID CLUSTERNAME] " ,
115
+ ArgsUsage : "CLUSTERID|--cluster-name CLUSTERNAME" ,
111
116
Action : clusterAddNode ,
112
117
Flags : []cli.Flag {
118
+ cli.StringFlag {
119
+ Name : "cluster-name, name, n" ,
120
+ Usage : "Specify cluster by `CLUSTERNAME` instead of CLUSTERID" ,
121
+ },
113
122
cli.StringSliceFlag {
114
123
Name : "label" ,
115
124
Usage : "Label to apply to a node in the format [name]=[value]" ,
@@ -136,22 +145,40 @@ func ClusterCommand() cli.Command {
136
145
{
137
146
Name : "delete" ,
138
147
Aliases : []string {"rm" },
139
- Usage : "Delete a cluster " ,
140
- ArgsUsage : "[ CLUSTERID/ CLUSTERNAME...] " ,
148
+ Usage : "Delete one or more clusters " ,
149
+ ArgsUsage : "CLUSTERID|--cluster-name CLUSTERNAME" ,
141
150
Action : clusterDelete ,
151
+ Flags : []cli.Flag {
152
+ cli.StringSliceFlag {
153
+ Name : "cluster-name, name, n" ,
154
+ Usage : "Specify cluster by `CLUSTERNAME` instead of CLUSTERID. Supply multiple times for multiple cluster names." ,
155
+ },
156
+ },
142
157
},
143
158
{
144
159
Name : "export" ,
145
160
Usage : "Export a cluster" ,
146
- ArgsUsage : "[ CLUSTERID/ CLUSTERNAME...] " ,
161
+ ArgsUsage : "CLUSTERID|--cluster-name CLUSTERNAME" ,
147
162
Action : clusterExport ,
163
+ Flags : []cli.Flag {
164
+ cli.StringFlag {
165
+ Name : "cluster-name, name, n" ,
166
+ Usage : "Specify cluster by `CLUSTERNAME` instead of CLUSTERID" ,
167
+ },
168
+ },
148
169
},
149
170
{
150
171
Name : "kubeconfig" ,
151
172
Aliases : []string {"kf" },
152
- Usage : "Return the kube config used to access the cluster" ,
153
- ArgsUsage : "[ CLUSTERID CLUSTERNAME] " ,
173
+ Usage : "Return the kubeconfig used to access the cluster" ,
174
+ ArgsUsage : "CLUSTERID|--cluster-name CLUSTERNAME" ,
154
175
Action : clusterKubeConfig ,
176
+ Flags : []cli.Flag {
177
+ cli.StringFlag {
178
+ Name : "cluster-name, name, n" ,
179
+ Usage : "Specify cluster by `CLUSTERNAME` instead of CLUSTERID" ,
180
+ },
181
+ },
155
182
},
156
183
{
157
184
Name : "add-member-role" ,
@@ -284,7 +311,7 @@ func clusterCreate(ctx *cli.Context) error {
284
311
}
285
312
286
313
func clusterImport (ctx * cli.Context ) error {
287
- if ctx .NArg () == 0 {
314
+ if ctx .NArg () == 0 && ctx . String ( "cluster-name" ) == "" {
288
315
return cli .ShowSubcommandHelp (ctx )
289
316
}
290
317
@@ -293,7 +320,12 @@ func clusterImport(ctx *cli.Context) error {
293
320
return err
294
321
}
295
322
296
- resource , err := Lookup (c , ctx .Args ().First (), "cluster" )
323
+ var resource * types.Resource
324
+ if name := ctx .String ("cluster-name" ); name != "" {
325
+ resource , err = LookupByName (c , name , "cluster" )
326
+ } else {
327
+ resource , err = LookupByID (c , ctx .Args ().First (), "cluster" )
328
+ }
297
329
if err != nil {
298
330
return err
299
331
}
@@ -325,7 +357,7 @@ func clusterImport(ctx *cli.Context) error {
325
357
326
358
// clusterAddNode prints the command needed to add a node to a cluster
327
359
func clusterAddNode (ctx * cli.Context ) error {
328
- if ctx .NArg () == 0 {
360
+ if ctx .NArg () == 0 && ctx . String ( "cluster-name" ) == "" {
329
361
return cli .ShowSubcommandHelp (ctx )
330
362
}
331
363
@@ -334,7 +366,12 @@ func clusterAddNode(ctx *cli.Context) error {
334
366
return err
335
367
}
336
368
337
- resource , err := Lookup (c , ctx .Args ().First (), "cluster" )
369
+ var resource * types.Resource
370
+ if name := ctx .String ("cluster-name" ); name != "" {
371
+ resource , err = LookupByName (c , name , "cluster" )
372
+ } else {
373
+ resource , err = LookupByID (c , ctx .Args ().First (), "cluster" )
374
+ }
338
375
if err != nil {
339
376
return err
340
377
}
@@ -400,18 +437,43 @@ func clusterAddNode(ctx *cli.Context) error {
400
437
}
401
438
402
439
func clusterDelete (ctx * cli.Context ) error {
403
- if ctx .NArg () == 0 {
440
+ if ctx .NArg () == 0 && len ( ctx . StringSlice ( "cluster-name" )) == 0 {
404
441
return cli .ShowSubcommandHelp (ctx )
405
442
}
406
443
444
+ clusterNames := ctx .StringSlice ("cluster-name" )
445
+ clusterIDs := ctx .Args ()
446
+
407
447
c , err := GetClient (ctx )
408
448
if err != nil {
409
449
return err
410
450
}
451
+ schemaclient , err := lookupSchemaClient (c , "cluster" )
452
+ if err != nil {
453
+ return err
454
+ }
455
+
456
+ for _ , clusterID := range clusterIDs {
457
+
458
+ resource , err := lookupByIDWithClient (schemaclient , clusterID , "cluster" )
459
+ if err != nil {
460
+ return err
461
+ }
462
+
463
+ cluster , err := getClusterByID (c , resource .ID )
464
+ if err != nil {
465
+ return err
466
+ }
411
467
412
- for _ , cluster := range ctx .Args () {
468
+ err = c .ManagementClient .Cluster .Delete (cluster )
469
+ if err != nil {
470
+ return err
471
+ }
472
+ fmt .Printf ("Cluster with ID %s deleted\n " , clusterID )
473
+ }
413
474
414
- resource , err := Lookup (c , cluster , "cluster" )
475
+ for _ , clusterName := range clusterNames {
476
+ resource , err := lookupByNameWithClient (schemaclient , clusterName , "cluster" )
415
477
if err != nil {
416
478
return err
417
479
}
@@ -425,13 +487,14 @@ func clusterDelete(ctx *cli.Context) error {
425
487
if err != nil {
426
488
return err
427
489
}
490
+ fmt .Printf ("Cluster with name %s deleted\n " , clusterName )
428
491
}
429
492
430
493
return nil
431
494
}
432
495
433
496
func clusterExport (ctx * cli.Context ) error {
434
- if ctx .NArg () == 0 {
497
+ if ctx .NArg () == 0 && ctx . String ( "cluster-name" ) == "" {
435
498
return cli .ShowSubcommandHelp (ctx )
436
499
}
437
500
@@ -440,7 +503,12 @@ func clusterExport(ctx *cli.Context) error {
440
503
return err
441
504
}
442
505
443
- resource , err := Lookup (c , ctx .Args ().First (), "cluster" )
506
+ var resource * types.Resource
507
+ if name := ctx .String ("cluster-name" ); name != "" {
508
+ resource , err = LookupByName (c , name , "cluster" )
509
+ } else {
510
+ resource , err = LookupByID (c , ctx .Args ().First (), "cluster" )
511
+ }
444
512
if err != nil {
445
513
return err
446
514
}
@@ -464,7 +532,7 @@ func clusterExport(ctx *cli.Context) error {
464
532
}
465
533
466
534
func clusterKubeConfig (ctx * cli.Context ) error {
467
- if ctx .NArg () == 0 {
535
+ if ctx .NArg () == 0 && ctx . String ( "cluster-name" ) == "" {
468
536
return cli .ShowSubcommandHelp (ctx )
469
537
}
470
538
@@ -473,7 +541,12 @@ func clusterKubeConfig(ctx *cli.Context) error {
473
541
return err
474
542
}
475
543
476
- resource , err := Lookup (c , ctx .Args ().First (), "cluster" )
544
+ var resource * types.Resource
545
+ if name := ctx .String ("cluster-name" ); name != "" {
546
+ resource , err = LookupByName (c , name , "cluster" )
547
+ } else {
548
+ resource , err = LookupByID (c , ctx .Args ().First (), "cluster" )
549
+ }
477
550
if err != nil {
478
551
return err
479
552
}
0 commit comments