Skip to content

Commit f6e0b86

Browse files
author
Gabriel Monroy
committed
fix(destroy): wait for job state inactive on destroy
1 parent 486b422 commit f6e0b86

4 files changed

Lines changed: 50 additions & 36 deletions

File tree

README.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ deis-registry-data.service: loaded
5151
deis-logger-data.service: loaded
5252
deis-builder-data.service: loaded
5353

54-
Activating data containers...
54+
Launching data containers...
5555
deis-database-data.service: launched
5656
deis-registry-data.service: launched
5757
deis-logger-data.service: launched
5858
deis-builder-data.service: launched
5959

60-
Scheduling units...
60+
Scheduling service containers...
6161
deis-database@1.service: loaded
6262
deis-cache@1.service: loaded
6363
deis-logger@1.service: loaded
@@ -66,15 +66,14 @@ deis-controller@1.service: loaded
6666
deis-builder@1.service: loaded
6767
deis-router@1.service: loaded
6868

69-
Activating units...
69+
Launching service containers...
7070
deis-logger@1.service: launched
7171
deis-cache@1.service: launched
7272
deis-database@1.service: launched
7373
deis-registry@1.service: launched
7474
deis-controller@1.service: launched
7575
deis-builder@1.service: launched
7676
deis-router@1.service: launched
77-
7877
Done.
7978
```
8079

@@ -85,13 +84,16 @@ You can also use the `deisctl uninstall` command to destroy platform units:
8584

8685
```console
8786
$ deisctl uninstall
88-
Destroyed Unit deis-database@1.service
89-
Destroyed Unit deis-cache@1.service
90-
Destroyed Unit deis-logger@1.service
91-
Destroyed Unit deis-registry@1.service
92-
Destroyed Unit deis-controller@1.service
93-
Destroyed Unit deis-builder@1.service
94-
Destroyed Unit deis-router@1.service
87+
88+
Destroying service containers...
89+
deis-database@1.service: inactive
90+
deis-cache@1.service: inactive
91+
deis-logger@1.service: inactive
92+
deis-registry@1.service: inactive
93+
deis-controller@1.service: inactive
94+
deis-builder@1.service: inactive
95+
deis-router@1.service: inactive
96+
Done.
9597
```
9698

9799
To uninstall a specific component, use `deisctl uninstall router`.

client/create.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func (c *FleetClient) Create(target string) (err error) {
1717
unitFile *unit.UnitFile
1818
)
1919
// create unit
20-
unitName, unitFile, err = c.createUnit(target)
20+
unitName, unitFile, err = c.createUnitFile(target)
2121
if err != nil {
2222
return err
2323
}
@@ -28,7 +28,10 @@ func (c *FleetClient) Create(target string) (err error) {
2828
}
2929
// schedule unit
3030
if err := c.Fleet.CreateUnit(u); err != nil {
31-
return fmt.Errorf("failed creating job %s: %v", unitName, err)
31+
// ignore units that already exist
32+
if err.Error() != "job already exists" {
33+
return fmt.Errorf("failed creating job %s: %v", unitName, err)
34+
}
3235
}
3336
desiredState := string(job.JobStateLoaded)
3437
err = c.Fleet.SetUnitTargetState(unitName, desiredState)
@@ -43,7 +46,7 @@ func (c *FleetClient) Create(target string) (err error) {
4346
return nil
4447
}
4548

46-
func (c *FleetClient) createUnit(target string) (unitName string, uf *unit.UnitFile, err error) {
49+
func (c *FleetClient) createUnitFile(target string) (unitName string, uf *unit.UnitFile, err error) {
4750
component, num, err := splitTarget(target)
4851
if err != nil {
4952
return

client/destroy.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package client
22

33
import (
44
"fmt"
5+
6+
"github.com/coreos/fleet/job"
57
)
68

79
// Destroy units for a given target
8-
func (c *FleetClient) Destroy(target string) (err error) {
9-
component, num, err := splitTarget(target)
10+
func (c *FleetClient) Destroy(targets string) (err error) {
11+
component, num, err := splitTarget(targets)
1012
if err != nil {
1113
return
1214
}
@@ -16,17 +18,23 @@ func (c *FleetClient) Destroy(target string) (err error) {
1618
return err
1719
}
1820
}
19-
unitName, err := formatUnitName(component, num)
21+
name, err := formatUnitName(component, num)
2022
if err != nil {
2123
return err
2224
}
23-
_, err = c.Fleet.Unit(unitName)
25+
26+
desiredState := string(job.JobStateInactive)
27+
err = c.Fleet.SetUnitTargetState(name, desiredState)
2428
if err != nil {
25-
return
29+
return err
30+
}
31+
outchan, errchan := waitForUnitStates([]string{name}, desiredState)
32+
err = printUnitState(name, outchan, errchan)
33+
if err != nil {
34+
return err
2635
}
27-
if err = c.Fleet.DestroyUnit(unitName); err != nil {
28-
return fmt.Errorf("failed destroying job %s: %v", unitName, err)
36+
if err = c.Fleet.DestroyUnit(name); err != nil {
37+
return fmt.Errorf("failed destroying job %s: %v", name, err)
2938
}
30-
fmt.Printf("Destroyed Unit %s\n", unitName)
3139
return
3240
}

cmd/cmd.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,19 @@ func installDataContainers(c client.Client) error {
119119
"logger-data",
120120
"builder-data",
121121
}
122-
fmt.Println("Scheduling data containers...")
122+
fmt.Println("\nScheduling data containers...")
123123
for _, dataContainer := range dataContainers {
124-
c.Create(dataContainer)
125-
// if err != nil {
126-
// return err
127-
// }
124+
err := c.Create(dataContainer)
125+
if err != nil {
126+
return err
127+
}
128128
}
129-
fmt.Println("Activating data containers...")
129+
fmt.Println("\nLaunching data containers...")
130130
for _, dataContainer := range dataContainers {
131-
c.Start(dataContainer)
132-
// if err != nil {
133-
// return err
134-
// }
131+
err := c.Start(dataContainer)
132+
if err != nil {
133+
return err
134+
}
135135
}
136136
return nil
137137
}
@@ -146,9 +146,9 @@ func installDefaultServices(c client.Client) error {
146146
"controller=1",
147147
"builder=1",
148148
"router=1"}
149-
fmt.Println("Scheduling units...")
149+
fmt.Println("\nScheduling service containers...")
150150
err := Scale(c, targets)
151-
fmt.Println("Activating units...")
151+
fmt.Println("\nLaunching service containers...")
152152
err = Start(c, []string{"logger", "cache", "database"})
153153
if err != nil {
154154
return err
@@ -174,13 +174,12 @@ func installDefaultServices(c client.Client) error {
174174
}
175175

176176
func Uninstall(c client.Client, targets []string) error {
177-
// if targets, uninstall all services
177+
// if no targets, uninstall all services
178178
if len(targets) == 0 {
179179
err := uninstallAllServices(c)
180180
if err != nil {
181181
return err
182182
}
183-
184183
} else {
185184
// uninstall the specific target
186185
for _, target := range targets {
@@ -202,7 +201,9 @@ func uninstallAllServices(c client.Client) error {
202201
"controller=0",
203202
"builder=0",
204203
"router=0"}
204+
fmt.Println("\nDestroying service containers...")
205205
err := Scale(c, targets)
206+
fmt.Println("Done.")
206207
return err
207208
}
208209

0 commit comments

Comments
 (0)