func (d *driverTriton) CreateMachine(config Config) (string, error) { opts := cloudapi.CreateMachineOpts{ Package: config.MachinePackage, Image: config.MachineImage, Networks: config.MachineNetworks, Metadata: config.MachineMetadata, Tags: config.MachineTags, FirewallEnabled: config.MachineFirewallEnabled, } if config.MachineName != "" { opts.Name = config.MachineName } machine, err := d.client.CreateMachine(opts) if err != nil { return "", err } return machine.Id, nil }
func (s *StepCreateSourceMachine) Run(state multistep.StateBag) multistep.StepAction { sdcClient := state.Get("client").(*cloudapi.Client) ui := state.Get("ui").(packer.Ui) ui.Say("Creating source machine...") opts := cloudapi.CreateMachineOpts{ Package: s.MachinePackage, Image: s.MachineImage, Networks: s.MachineNetworks, Metadata: s.MachineMetadata, Tags: s.MachineTags, FirewallEnabled: s.MachineFirewallEnabled, } // Only supply a name if it was supplied in the template; the SDC API will // assign a default random name otherwise. if s.MachineName != "" { opts.Name = s.MachineName } machine, err := sdcClient.CreateMachine(opts) if err != nil { state.Put("error", fmt.Errorf("Problem creating source machine: %s", err)) return multistep.ActionHalt } s.machineId = machine.Id ui.Say("Waiting for source machine to become available...") err = waitForMachineState(sdcClient, machine.Id, "running", 10*time.Minute) if err != nil { state.Put("error", fmt.Errorf("Problem waiting for source machine to become available: %s", err)) return multistep.ActionHalt } state.Put("machine", machine.Id) return multistep.ActionContinue }