// convertToStateJobs takes a slice of params.MachineJob and makes them a slice of state.MachineJob func convertToStateJobs(jobs []params.MachineJob) ([]state.MachineJob, error) { outJobs := make([]state.MachineJob, len(jobs)) var err error for j, job := range jobs { if outJobs[j], err = state.MachineJobFromParams(job); err != nil { return nil, err } } return outJobs, nil }
func stateJobs(jobs []params.MachineJob) ([]state.MachineJob, error) { newJobs := make([]state.MachineJob, len(jobs)) for i, job := range jobs { newJob, err := state.MachineJobFromParams(job) if err != nil { return nil, err } newJobs[i] = newJob } return newJobs, nil }
// initBootstrapMachine initializes the initial bootstrap machine in state. func initBootstrapMachine(c ConfigSetter, st *state.State, cfg BootstrapMachineConfig) (*state.Machine, error) { logger.Infof("initialising bootstrap machine with config: %+v", cfg) jobs := make([]state.MachineJob, len(cfg.Jobs)) for i, job := range cfg.Jobs { machineJob, err := state.MachineJobFromParams(job) if err != nil { return nil, fmt.Errorf("invalid bootstrap machine job %q: %v", job, err) } jobs[i] = machineJob } m, err := st.AddOneMachine(state.MachineTemplate{ Addresses: cfg.Addresses, Series: version.Current.Series, Nonce: BootstrapNonce, Constraints: cfg.Constraints, InstanceId: cfg.InstanceId, HardwareCharacteristics: cfg.Characteristics, Jobs: jobs, }) if err != nil { return nil, fmt.Errorf("cannot create bootstrap machine in state: %v", err) } if m.Id() != BootstrapMachineId { return nil, fmt.Errorf("bootstrap machine expected id 0, got %q", m.Id()) } // Read the machine agent's password and change it to // a new password (other agents will change their password // via the API connection). logger.Debugf("create new random password for machine %v", m.Id()) newPassword, err := utils.RandomPassword() if err != nil { return nil, err } if err := m.SetPassword(newPassword); err != nil { return nil, err } if err := m.SetMongoPassword(newPassword); err != nil { return nil, err } c.SetPassword(newPassword) return m, nil }