github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/apiserver/common/machine.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/state" 10 "github.com/juju/juju/state/multiwatcher" 11 ) 12 13 // StateJobs translates a slice of multiwatcher jobs to their equivalents in state. 14 func StateJobs(jobs []multiwatcher.MachineJob) ([]state.MachineJob, error) { 15 newJobs := make([]state.MachineJob, len(jobs)) 16 for i, job := range jobs { 17 newJob, err := machineJobFromParams(job) 18 if err != nil { 19 return nil, err 20 } 21 newJobs[i] = newJob 22 } 23 return newJobs, nil 24 } 25 26 // machineJobFromParams returns the job corresponding to multiwatcher.MachineJob. 27 func machineJobFromParams(job multiwatcher.MachineJob) (state.MachineJob, error) { 28 switch job { 29 case multiwatcher.JobHostUnits: 30 return state.JobHostUnits, nil 31 case multiwatcher.JobManageEnviron: 32 return state.JobManageEnviron, nil 33 case multiwatcher.JobManageNetworking: 34 return state.JobManageNetworking, nil 35 case multiwatcher.JobManageStateDeprecated: 36 // Deprecated in 1.18. 37 return state.JobManageStateDeprecated, nil 38 default: 39 return -1, errors.Errorf("invalid machine job %q", job) 40 } 41 }