Skip to content

Commit 6d4ca30

Browse files
author
Gabriel Monroy
committed
allow specific targets
1 parent f49297c commit 6d4ca30

3 files changed

Lines changed: 69 additions & 17 deletions

File tree

client/create.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package client
33
import (
44
"fmt"
55
"os"
6+
"regexp"
7+
"strconv"
68

79
"github.com/coreos/fleet/job"
810
"github.com/coreos/fleet/unit"
@@ -42,15 +44,34 @@ func (c *FleetClient) Create(component string, data bool) (err error) {
4244
}
4345

4446
// Create normal service unit
45-
func (c *FleetClient) createServiceUnit(component string) (unitName string, unitPtr *unit.Unit, err error) {
46-
num, err := c.nextUnit(component)
47-
if err != nil {
48-
return
49-
}
50-
unitName, err = formatUnitName(component, num)
51-
if err != nil {
52-
return
47+
func (c *FleetClient) createServiceUnit(target string) (unitName string, unitPtr *unit.Unit, err error) {
48+
49+
// see if we were provided a specific target
50+
r := regexp.MustCompile(`([a-z-]+)\.([\d]+)`)
51+
match := r.FindStringSubmatch(target)
52+
var (
53+
num int
54+
component string
55+
)
56+
if len(match) == 3 {
57+
component = match[1]
58+
num, err = strconv.Atoi(match[2])
59+
if err != nil {
60+
return "", nil, err
61+
}
62+
unitName, err = formatUnitName(component, num)
63+
} else {
64+
component = target
65+
num, err := c.nextUnit(component)
66+
if err != nil {
67+
return "", nil, err
68+
}
69+
unitName, err = formatUnitName(component, num)
70+
if err != nil {
71+
return "", nil, err
72+
}
5373
}
74+
5475
unitPtr, err = NewUnit(component)
5576
if err != nil {
5677
return

client/destroy.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,40 @@
11
package client
22

3-
import "fmt"
3+
import (
4+
"fmt"
5+
"regexp"
6+
"strconv"
7+
)
48

59
// Destroy unschedules one unit for a given component type
610
func (c *FleetClient) Destroy(component string) (err error) {
7-
num, err := c.lastUnit(component)
8-
if err != nil {
9-
return
11+
12+
// see if we were provided a specific target
13+
r := regexp.MustCompile(`([a-z-]+)\.([\d]+)`)
14+
match := r.FindStringSubmatch(component)
15+
var (
16+
num int
17+
unitName string
18+
)
19+
if len(match) == 3 {
20+
num, err = strconv.Atoi(match[2])
21+
if err != nil {
22+
return err
23+
}
24+
unitName, err = formatUnitName(component, 0)
25+
} else {
26+
num, err = c.lastUnit(component)
27+
if err != nil {
28+
return err
29+
}
30+
unitName, err = formatUnitName(component, num)
31+
if err != nil {
32+
return err
33+
}
1034
}
1135
if num == 0 {
1236
return fmt.Errorf("no units to destroy")
1337
}
14-
unitName, err := formatUnitName(component, num)
15-
if err != nil {
16-
return
17-
}
1838
_, err = c.Fleet.Job(unitName)
1939
if err != nil {
2040
return

client/start.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,24 @@ package client
33
import (
44
"fmt"
55
"os"
6+
"regexp"
67

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

1011
// Start launches target units and blocks until active
1112
func (c *FleetClient) Start(target string, data bool) (err error) {
12-
units, err := c.getUnits(target)
13+
14+
// see if we were provided a specific target
15+
r := regexp.MustCompile(`([a-z-]+)\.([\d]+)`)
16+
match := r.FindStringSubmatch(target)
17+
var component string
18+
if len(match) == 3 {
19+
component = match[1]
20+
} else {
21+
component = target
22+
}
23+
units, err := c.getUnits(component)
1324
if err != nil {
1425
return
1526
}

0 commit comments

Comments
 (0)