Skip to content

Commit c38904c

Browse files
author
Gabriel Monroy
committed
refactor(*): remove auto scale on create/destroy
1 parent 3227656 commit c38904c

8 files changed

Lines changed: 58 additions & 28 deletions

File tree

client/create.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ func (c *FleetClient) Create(target string) (err error) {
1616
unitName string
1717
unitFile *unit.UnitFile
1818
)
19-
// create unit
19+
// create unit file
2020
unitName, unitFile, err = c.createUnitFile(target)
2121
if err != nil {
2222
return err
2323
}
24-
//
24+
// define unit
2525
u := &schema.Unit{
2626
Name: unitName,
2727
Options: schema.MapUnitFileToSchemaUnitOptions(unitFile),
@@ -64,14 +64,6 @@ func (c *FleetClient) createUnitFile(target string) (unitName string, uf *unit.U
6464

6565
// Create normal service unit
6666
func (c *FleetClient) createServiceUnit(component string, num int) (name string, uf *unit.UnitFile, err error) {
67-
// if number wasn't provided get next unit number
68-
if num == 0 {
69-
num, err = c.nextUnit(component)
70-
if err != nil {
71-
return "", nil, err
72-
}
73-
}
74-
// build a fleet unit
7567
name, err = formatUnitName(component, num)
7668
if err != nil {
7769
return "", nil, err

client/destroy.go

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,54 @@ package client
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/coreos/fleet/job"
78
)
89

910
// Destroy units for a given target
10-
func (c *FleetClient) Destroy(targets string) (err error) {
11-
component, num, err := splitTarget(targets)
11+
func (c *FleetClient) Destroy(target string) (err error) {
12+
component, num, err := splitTarget(target)
1213
if err != nil {
1314
return
1415
}
15-
if num == 0 {
16-
num, err = c.lastUnit(component)
17-
if err != nil {
18-
return err
19-
}
16+
if strings.HasSuffix(component, "-data") {
17+
err = c.destroyDataUnit(component)
18+
} else {
19+
err = c.destroyServiceUnit(component, num)
2020
}
21+
if err != nil {
22+
return err
23+
}
24+
return
25+
}
26+
27+
func (c *FleetClient) destroyServiceUnit(component string, num int) (err error) {
2128
name, err := formatUnitName(component, num)
2229
if err != nil {
2330
return err
2431
}
32+
desiredState := string(job.JobStateInactive)
33+
err = c.Fleet.SetUnitTargetState(name, desiredState)
34+
if err != nil {
35+
return err
36+
}
37+
outchan, errchan := waitForUnitStates([]string{name}, desiredState)
38+
err = printUnitState(name, outchan, errchan)
39+
if err != nil {
40+
return err
41+
}
42+
if err = c.Fleet.DestroyUnit(name); err != nil {
43+
return fmt.Errorf("failed destroying job %s: %v", name, err)
44+
}
45+
return err
46+
}
2547

48+
func (c *FleetClient) destroyDataUnit(component string) (err error) {
49+
name, err := formatUnitName(component, 0)
50+
if err != nil {
51+
return err
52+
}
2653
desiredState := string(job.JobStateInactive)
2754
err = c.Fleet.SetUnitTargetState(name, desiredState)
2855
if err != nil {
@@ -36,5 +63,6 @@ func (c *FleetClient) Destroy(targets string) (err error) {
3663
if err = c.Fleet.DestroyUnit(name); err != nil {
3764
return fmt.Errorf("failed destroying job %s: %v", name, err)
3865
}
39-
return
66+
return err
67+
4068
}

client/journal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
// Journal prints the systemd journal of target unit(s)
99
func (c *FleetClient) Journal(target string) (err error) {
10-
units, err := c.getUnits(target)
10+
units, err := c.Units(target)
1111
if err != nil {
1212
return
1313
}

client/scale.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
package client
22

3+
import "strconv"
4+
35
// Scale creates or destroys units to match the desired number
46
func (c *FleetClient) Scale(component string, num int) (err error) {
57
for {
6-
components, err := c.getUnits(component)
8+
components, err := c.Units(component)
79
if err != nil {
810
return err
911
}
1012
if len(components) == num {
1113
break
1214
}
1315
if len(components) < num {
14-
err := c.Create(component)
16+
num, err = c.nextUnit(component)
17+
if err != nil {
18+
return err
19+
}
20+
err := c.Create(component + "@" + strconv.Itoa(num))
1521
if err != nil {
1622
return err
1723
}
1824
continue
1925
}
2026
if len(components) > num {
21-
err := c.Destroy(component)
27+
num, err = c.lastUnit(component)
28+
if err != nil {
29+
return err
30+
}
31+
err := c.Destroy(component + "@" + strconv.Itoa(num))
2232
if err != nil {
2333
return err
2434
}

client/start.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import "github.com/coreos/fleet/job"
44

55
// Start launches target units and blocks until active
66
func (c *FleetClient) Start(target string) (err error) {
7-
units, err := c.getUnits(target)
7+
units, err := c.Units(target)
88
if err != nil {
99
return
1010
}

client/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
// Status prints the systemd status of target unit(s)
99
func (c *FleetClient) Status(target string) (err error) {
10-
units, err := c.getUnits(target)
10+
units, err := c.Units(target)
1111
if err != nil {
1212
return
1313
}

client/stop.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import "github.com/coreos/fleet/job"
44

55
// Stop sets target units to inactive and blocks until complete
66
func (c *FleetClient) Stop(target string) (err error) {
7-
units, err := c.getUnits(target)
7+
units, err := c.Units(target)
88
if err != nil {
99
return
1010
}

client/unit.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
var rootPaths = []string{"/var/lib/deis/units", "units"}
1717

1818
// getUnits returns a list of units filtered by target
19-
func (c *FleetClient) getUnits(target string) (units []string, err error) {
19+
func (c *FleetClient) Units(target string) (units []string, err error) {
2020
allUnits, err := c.Fleet.Units()
2121
if err != nil {
2222
return
@@ -40,7 +40,7 @@ func (c *FleetClient) getUnits(target string) (units []string, err error) {
4040

4141
// nextUnit returns the next unit number for a given component
4242
func (c *FleetClient) nextUnit(component string) (num int, err error) {
43-
units, err := c.getUnits(component)
43+
units, err := c.Units(component)
4444
if err != nil {
4545
return
4646
}
@@ -53,7 +53,7 @@ func (c *FleetClient) nextUnit(component string) (num int, err error) {
5353

5454
// lastUnit returns the last unit number for a given component
5555
func (c *FleetClient) lastUnit(component string) (num int, err error) {
56-
units, err := c.getUnits(component)
56+
units, err := c.Units(component)
5757
if err != nil {
5858
return
5959
}

0 commit comments

Comments
 (0)