55 "strings"
66
77 "github.com/coreos/fleet/job"
8+ "github.com/coreos/fleet/schema"
89 "github.com/coreos/fleet/unit"
910)
1011
@@ -13,48 +14,53 @@ import (
1314func (c * FleetClient ) Create (target string ) (err error ) {
1415 var (
1516 unitName string
16- unitPtr * unit.Unit
17+ unitFile * unit.UnitFile
1718 )
1819 // create unit
19- unitName , unitPtr , err = c .createUnit (target )
20+ unitName , unitFile , err = c .createUnit (target )
2021 if err != nil {
2122 return err
2223 }
23- // schedule job
24- j := job .NewJob (unitName , * unitPtr )
25- if err := c .Fleet .CreateJob (j ); err != nil {
24+ //
25+ u := & schema.Unit {
26+ Name : unitName ,
27+ Options : schema .MapUnitFileToSchemaUnitOptions (unitFile ),
28+ }
29+ // schedule unit
30+ if err := c .Fleet .CreateUnit (u ); err != nil {
2631 return fmt .Errorf ("failed creating job %s: %v" , unitName , err )
2732 }
28- newState := job .JobStateLoaded
29- err = c .Fleet .SetJobTargetState (unitName , newState )
33+ desiredState := string ( job .JobStateLoaded )
34+ err = c .Fleet .SetUnitTargetState (unitName , desiredState )
3035 if err != nil {
3136 return err
3237 }
33- err = waitForJobStates ([]string {unitName }, jobStateLoaded )
38+ outchan , errchan := waitForUnitStates ([]string {unitName }, desiredState )
39+ err = printUnitState (unitName , outchan , errchan )
3440 if err != nil {
3541 return err
3642 }
3743 return nil
3844}
3945
40- func (c * FleetClient ) createUnit (target string ) (unitName string , unitPtr * unit.Unit , err error ) {
46+ func (c * FleetClient ) createUnit (target string ) (unitName string , uf * unit.UnitFile , err error ) {
4147 component , num , err := splitTarget (target )
4248 if err != nil {
4349 return
4450 }
4551 if strings .HasSuffix (component , "-data" ) {
46- unitName , unitPtr , err = c .createDataUnit (component )
52+ unitName , uf , err = c .createDataUnit (component )
4753 } else {
48- unitName , unitPtr , err = c .createServiceUnit (component , num )
54+ unitName , uf , err = c .createServiceUnit (component , num )
4955 }
5056 if err != nil {
51- return unitName , unitPtr , err
57+ return unitName , uf , err
5258 }
5359 return
5460}
5561
5662// Create normal service unit
57- func (c * FleetClient ) createServiceUnit (component string , num int ) (unitName string , unitPtr * unit.Unit , err error ) {
63+ func (c * FleetClient ) createServiceUnit (component string , num int ) (name string , uf * unit.UnitFile , err error ) {
5864 // if number wasn't provided get next unit number
5965 if num == 0 {
6066 num , err = c .nextUnit (component )
@@ -63,31 +69,31 @@ func (c *FleetClient) createServiceUnit(component string, num int) (unitName str
6369 }
6470 }
6571 // build a fleet unit
66- unitName , err = formatUnitName (component , num )
72+ name , err = formatUnitName (component , num )
6773 if err != nil {
6874 return "" , nil , err
6975 }
70- unitPtr , err = NewUnit (component )
76+ uf , err = NewUnit (component )
7177 if err != nil {
7278 return
7379 }
74- return unitName , unitPtr , nil
80+ return name , uf , nil
7581}
7682
7783// Create data container unit
78- func (c * FleetClient ) createDataUnit (component string ) (unitName string , unitPtr * unit.Unit , err error ) {
79- unitName , err = formatUnitName (component , 0 )
84+ func (c * FleetClient ) createDataUnit (component string ) (name string , uf * unit.UnitFile , err error ) {
85+ name , err = formatUnitName (component , 0 )
8086 if err != nil {
8187 return
8288 }
8389 machineID , err := randomMachineID (c )
8490 if err != nil {
8591 return
8692 }
87- unitPtr , err = NewDataUnit (component , machineID )
93+ uf , err = NewDataUnit (component , machineID )
8894 if err != nil {
8995 return
9096 }
91- return unitName , unitPtr , nil
97+ return name , uf , nil
9298
9399}
0 commit comments