File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,6 +3,8 @@ package client
33import (
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
Original file line number Diff line number Diff line change 11package 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
610func (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
Original file line number Diff line number Diff line change @@ -3,13 +3,24 @@ package client
33import (
44 "fmt"
55 "os"
6+ "regexp"
67
78 "github.com/coreos/fleet/job"
89)
910
1011// Start launches target units and blocks until active
1112func (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 }
You can’t perform that action at this time.
0 commit comments