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  }