Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit e59c34f

Browse files
authored
Skip brokers on empty args (#104)
1 parent 06eef58 commit e59c34f

1 file changed

Lines changed: 40 additions & 27 deletions

File tree

cmd/delete/delete.go

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ func NewCmd() *cobra.Command {
5858
ValidArgsFunction: o.deleteCompletion,
5959
RunE: func(cmd *cobra.Command, args []string) error {
6060
if broker != "" {
61-
o.Context = broker
62-
o.Manifest = manifest.New(path.Join(o.ConfigBase, broker, manifestFile))
63-
cobra.CheckErr(o.Manifest.Read())
6461
return o.deleteBroker(broker)
6562
}
63+
if len(args) == 0 {
64+
return fmt.Errorf("expected at least 1 component name, got 0")
65+
}
6666
return o.deleteComponents(args, false)
6767
},
6868
}
@@ -93,10 +93,15 @@ func (o *DeleteOptions) initialize() {
9393
}
9494

9595
func (o *DeleteOptions) deleteBroker(broker string) error {
96-
if err := o.deleteComponents([]string{}, true); err != nil {
96+
oo := *o
97+
oo.Context = broker
98+
oo.Manifest = manifest.New(path.Join(oo.ConfigBase, broker, manifestFile))
99+
cobra.CheckErr(oo.Manifest.Read())
100+
101+
if err := oo.deleteComponents([]string{}, true); err != nil {
97102
return fmt.Errorf("deleting component: %w", err)
98103
}
99-
if err := os.RemoveAll(path.Join(o.ConfigBase, broker)); err != nil {
104+
if err := os.RemoveAll(path.Join(oo.ConfigBase, broker)); err != nil {
100105
return fmt.Errorf("delete broker %q: %v", broker, err)
101106
}
102107
if broker == o.Context {
@@ -105,47 +110,55 @@ func (o *DeleteOptions) deleteBroker(broker string) error {
105110
return nil
106111
}
107112

108-
func (o *DeleteOptions) deleteComponents(names []string, force bool) error {
113+
func (o *DeleteOptions) deleteComponents(names []string, deleteBroker bool) error {
109114
ctx := context.Background()
110115
client, err := docker.NewClient()
111116
if err != nil {
112117
return fmt.Errorf("docker client: %w", err)
113118
}
114119
for _, object := range o.Manifest.Objects {
120+
if deleteBroker {
121+
o.deleteEverything(ctx, object, client)
122+
continue
123+
}
115124
if object.Kind == "Secret" {
125+
// do not remove secrets implicitly,
126+
/// we may need them to finalize external services
116127
continue
117128
}
118-
skip := false
119-
if len(names) > 0 {
120-
skip = true
121-
for _, v := range names {
122-
if v == object.Metadata.Name {
123-
skip = false
124-
break
125-
}
129+
skip := true
130+
for _, v := range names {
131+
if v == object.Metadata.Name {
132+
skip = false
133+
break
126134
}
127135
}
128136
if skip {
129137
continue
130138
}
131139
if object.Kind == "Broker" {
132-
if !force {
133-
continue
134-
}
135-
object.Metadata.Name += "-broker"
136-
}
137-
log.Printf("Deleting %q %s", object.Metadata.Name, strings.ToLower(object.Kind))
138-
if err := o.removeExternalServices(ctx, object); err != nil {
139-
log.Printf("WARN: external services are not deleted: %v", err)
140+
log.Printf("use \"tmctl delete --broker %s\" to delete the broker. Skipping", object.Metadata.Name)
141+
continue
140142
}
141-
o.deleteContainer(ctx, object.Metadata.Name, client)
142-
o.removeObject(object.Metadata.Name)
143-
o.cleanupTriggers(object.Metadata.Name)
144-
o.cleanupSecrets(object.Metadata.Name)
143+
o.deleteEverything(ctx, object, client)
145144
}
146145
return nil
147146
}
148147

148+
func (o *DeleteOptions) deleteEverything(ctx context.Context, object kubernetes.Object, client *client.Client) {
149+
log.Printf("Deleting %q %s", object.Metadata.Name, strings.ToLower(object.Kind))
150+
if object.Kind == "Broker" {
151+
object.Metadata.Name = object.Metadata.Name + "-broker"
152+
}
153+
if err := o.removeExternalServices(ctx, object); err != nil {
154+
log.Printf("WARN: external services are not deleted: %v", err)
155+
}
156+
o.removeContainer(ctx, object.Metadata.Name, client)
157+
o.removeObject(object.Metadata.Name)
158+
o.cleanupTriggers(object.Metadata.Name)
159+
o.cleanupSecrets(object.Metadata.Name)
160+
}
161+
149162
func (o *DeleteOptions) removeObject(component string) {
150163
for _, object := range o.Manifest.Objects {
151164
if component != object.Metadata.Name {
@@ -167,7 +180,7 @@ func (o *DeleteOptions) removeObject(component string) {
167180
}
168181
}
169182

170-
func (o *DeleteOptions) deleteContainer(ctx context.Context, name string, client *client.Client) error {
183+
func (o *DeleteOptions) removeContainer(ctx context.Context, name string, client *client.Client) error {
171184
return docker.ForceStop(ctx, name, client)
172185
}
173186

0 commit comments

Comments
 (0)