@@ -20,15 +20,12 @@ import (
20
20
"encoding/json"
21
21
"errors"
22
22
"fmt"
23
+ "github.com/spf13/cobra"
23
24
"io"
25
+ "loxicmd/pkg/api"
24
26
"net/http"
25
- "os"
26
27
"strconv"
27
28
"time"
28
-
29
- "loxicmd/pkg/api"
30
-
31
- "github.com/spf13/cobra"
32
29
)
33
30
34
31
type DeleteLoadBalancerResult struct {
@@ -37,10 +34,10 @@ type DeleteLoadBalancerResult struct {
37
34
38
35
func validation (args []string ) error {
39
36
if len (args ) > 1 {
40
- fmt .Println ("create lb command get so many args" )
37
+ fmt .Println ("delete lb command too many args" )
41
38
fmt .Println (args )
42
39
} else if len (args ) <= 0 {
43
- return errors .New ("delete lb need <EXTERNAL-IP> args " )
40
+ return errors .New ("delete lb needs <EXTERNAL-IP> arg " )
44
41
}
45
42
46
43
return nil
@@ -53,27 +50,23 @@ func NewDeleteLoadBalancerCmd(restOptions *api.RESTOptions) *cobra.Command {
53
50
var icmpPortNumberList bool
54
51
var BGP bool
55
52
var Mark uint16
53
+ var Name string
56
54
57
55
var externalIP string
58
56
//var endpointList []string
59
57
60
58
var deleteLbCmd = & cobra.Command {
61
- Use : "lb <EXTERNAL-IP> [--tcp portNumber] [--udp portNumber] [--sctp portNumber] [--icmp portNumber] [--bgp] [--mark=<val>]" ,
59
+ Use : "lb <EXTERNAL-IP> [--tcp portNumber] [--udp portNumber] [--sctp portNumber] [--icmp portNumber] [--bgp] [--mark=<val>] [--name=<service-name>] " ,
62
60
Short : "Delete a LoadBalancer" ,
63
61
Long : `Delete a LoadBalancer.` ,
64
62
PreRun : func (cmd * cobra.Command , args []string ) {
65
- if len (args ) == 0 {
66
- cmd .Help ()
67
- os .Exit (0 )
68
- }
63
+ // if len(args) == 0 {
64
+ // cmd.Help()
65
+ // os.Exit(0)
66
+ // }
69
67
},
70
68
Run : func (cmd * cobra.Command , args []string ) {
71
- if err := validation (args ); err != nil {
72
- fmt .Println ("not valid EXTERNAL-IP" )
73
- return
74
- }
75
- externalIP = args [0 ]
76
- PortNumberList := make (map [string ][]int )
69
+
77
70
client := api .NewLoxiClient (restOptions )
78
71
ctx := context .TODO ()
79
72
var cancel context.CancelFunc
@@ -82,6 +75,30 @@ func NewDeleteLoadBalancerCmd(restOptions *api.RESTOptions) *cobra.Command {
82
75
defer cancel ()
83
76
}
84
77
78
+ if Name != "" {
79
+ subResources := []string {
80
+ "name" , Name ,
81
+ }
82
+ resp , err := client .LoadBalancer ().SubResources (subResources ).Delete (ctx )
83
+ if err != nil {
84
+ fmt .Printf ("Error: Failed to delete LoadBalancer(Name: %s)\n " , Name )
85
+ return
86
+ }
87
+ defer resp .Body .Close ()
88
+ fmt .Printf ("Debug: response.StatusCode: %d\n " , resp .StatusCode )
89
+ if resp .StatusCode == http .StatusOK {
90
+ PrintDeleteResult (resp , * restOptions )
91
+ }
92
+ return
93
+ }
94
+
95
+ if err := validation (args ); err != nil {
96
+ fmt .Println ("not valid EXTERNAL-IP" )
97
+ return
98
+ }
99
+ externalIP = args [0 ]
100
+ PortNumberList := make (map [string ][]int )
101
+
85
102
if len (tcpPortNumberList ) > 0 {
86
103
PortNumberList ["tcp" ] = tcpPortNumberList
87
104
}
@@ -129,6 +146,7 @@ func NewDeleteLoadBalancerCmd(restOptions *api.RESTOptions) *cobra.Command {
129
146
deleteLbCmd .Flags ().BoolVarP (& icmpPortNumberList , "icmp" , "" , false , "ICMP port list can be specified as '<port>,<port>...'" )
130
147
deleteLbCmd .Flags ().BoolVarP (& BGP , "bgp" , "" , false , "BGP enable information'" )
131
148
deleteLbCmd .Flags ().Uint16VarP (& Mark , "mark" , "" , 0 , "Specify the mark num to segregate a load-balancer VIP service" )
149
+ deleteLbCmd .Flags ().StringVarP (& Name , "name" , "" , Name , "Name for load balancer rule" )
132
150
return deleteLbCmd
133
151
}
134
152
0 commit comments