Affected files:
A [revision details]
M state/api/machine.go
M state/api/params/params.go
M state/apiserver/machine_test.go
M state/apiserver/utils.go
M state/machine.go
+// Jobs returns the responsibilities that must be fulfilled by m's agent.
+func (m *Machine) Jobs() []params.MachineJob {
+ return m.doc.Jobs
+}
+
// Series returns the operating system series running on the machine.
func (m *Machine) Series() string {
return m.doc.Series
Reviewers: mp+165705_ code.launchpad. net,
Message:
Please take a look.
Description:
api: implement Machine.Jobs
https:/ /code.launchpad .net/~rogpeppe/ juju-core/ 312-api- jobs/+merge/ 165705
Requires: /code.launchpad .net/~rogpeppe/ juju-core/ 311-juju- bootstrap- state-change- password- 1.5/+merge/ 165675
https:/
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/9754043/
Affected files: machine. go params/ params. go /machine_ test.go /utils. go
A [revision details]
M state/api/
M state/api/
M state/apiserver
M state/apiserver
M state/machine.go
Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>
Index: state/machine.go
=== modified file 'state/machine.go'
--- state/machine.go 2013-05-21 16:40:29 +0000
+++ state/machine.go 2013-05-24 21:38:13 +0000
@@ -36,7 +36,7 @@
JobServeAPI
)
-var jobNames = []string{ MachineJob{ iron: "JobManageEnviron", "<unknown job %d>", j)
+var jobNames = []params.
JobHostUnits: "JobHostUnits",
JobManageEnv
JobServeAPI: "JobServeAPI",
@@ -47,7 +47,7 @@
if j <= 0 || j >= len(jobNames) {
return fmt.Sprintf(
}
- return jobNames[j]
+ return string(jobNames[j])
}
// machineDoc represents the internal state of a machine in MongoDB.
Index: state/api/ machine. go api/machine. go' machine. go 2013-05-24 19:03:39 +0000 machine. go 2013-05-24 21:38:13 +0000
=== modified file 'state/
--- state/api/
+++ state/api/
@@ -139,6 +139,11 @@
return m.doc.Life
}
+// Jobs returns the responsibilities that must be fulfilled by m's agent.
+func (m *Machine) Jobs() []params.MachineJob {
+ return m.doc.Jobs
+}
+
// Series returns the operating system series running on the machine.
func (m *Machine) Series() string {
return m.doc.Series
Index: state/apiserver /machine_ test.go apiserver/ machine_ test.go' /machine_ test.go 2013-05-24 19:03:39 +0000 /machine_ test.go 2013-05-24 21:38:13 +0000 string( life), Equals, "dead")
=== modified file 'state/
--- state/apiserver
+++ state/apiserver
@@ -212,6 +212,29 @@
c.Assert(
}
+func (s *suite) TestMachineJobs(c *C) { Environ, ord(c, stm) stm.Id( )) MachineJob{ JobHostUnits, JobManageEnviro n, reDead( c *C) { AddMachine( "series" , state.JobHostUnits)
+ stm, err := s.State.AddMachine(
+ "series",
+ state.JobHostUnits,
+ state.JobManage
+ state.JobServeAPI,
+ )
+ c.Assert(err, IsNil)
+ setDefaultPassw
+
+ st := s.openAs(c, stm.Tag())
+ defer st.Close()
+
+ m, err := st.Machine(
+ c.Assert(err, IsNil)
+
+ c.Assert(m.Jobs(), DeepEquals, []params.
+ params.
+ params.
+ params.JobServeAPI,
+ })
+}
+
func (s *suite) TestMachineEnsu
stm, err := s.State.
c.Assert(err, IsNil)
Index: state/apiserver /utils. go apiserver/ utils.go' /utils. go 2013-05-24 19:11:19 +0000 /utils. go 2013-05-24 21:38:13 +0000 params. MachineJob, len(jobs)) MachineJob( job.String( )) Life(stm. Life(). String( )),
=== modified file 'state/
--- state/apiserver
+++ state/apiserver
@@ -44,10 +44,16 @@
return nil
}
instId, _ := stm.InstanceId()
+ jobs := stm.Jobs()
+ pjobs := make([]
+ for i, job := range jobs {
+ pjobs[i] = params.
+ }
return ¶ms.Machine{
Id: stm.Id(),
InstanceId: string(instId),
Life: params.
Series: stm.Series(),
+ Jobs: pjobs,
}
}
Index: state/api/ params/ params. go api/params/ params. go' params/ params. go 2013-05-24 16:34:35 +0000 params/ params. go 2013-05-24 21:38:13 +0000
=== modified file 'state/
--- state/api/
+++ state/api/
@@ -63,6 +63,14 @@
Life Life
}
+type MachineJob string
+
+const (
+ JobHostUnits MachineJob = "JobHostUnits"
+ JobManageEnviron MachineJob = "JobManageEnviron"
+ JobServeAPI MachineJob = "JobServeAPI"
+)
+
// ServiceDeploy holds the parameters for making the ServiceDeploy call.
type ServiceDeploy struct {
ServiceName string
@@ -160,6 +168,7 @@
InstanceId string
Life Life
Series string
+ Jobs []MachineJob
}
// EntityWatcherId holds the id of an EntityWatcher.