implement ID and Type values in the provisioner template info sharing
This commit is contained in:
parent
e1652696a6
commit
84063d2132
|
@ -77,6 +77,9 @@ func (s *stepCreateAlicloudInstance) Run(ctx context.Context, state multistep.St
|
||||||
ui.Message(fmt.Sprintf("Created instance: %s", instanceId))
|
ui.Message(fmt.Sprintf("Created instance: %s", instanceId))
|
||||||
s.instance = &instances.Instances.Instance[0]
|
s.instance = &instances.Instances.Instance[0]
|
||||||
state.Put("instance", s.instance)
|
state.Put("instance", s.instance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instanceId)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,6 +280,9 @@ func (s *StepRunSourceInstance) Run(ctx context.Context, state multistep.StateBa
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("instance", instance)
|
state.Put("instance", instance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instance.InstanceId)
|
||||||
|
|
||||||
// If we're in a region that doesn't support tagging on instance creation,
|
// If we're in a region that doesn't support tagging on instance creation,
|
||||||
// do that now.
|
// do that now.
|
||||||
|
|
|
@ -441,6 +441,9 @@ func (s *StepRunSpotInstance) Run(ctx context.Context, state multistep.StateBag)
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("instance", instance)
|
state.Put("instance", instance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instance.InstanceId)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,9 @@ func (s *stepCreateDroplet) Run(ctx context.Context, state multistep.StateBag) m
|
||||||
|
|
||||||
// Store the droplet id for later
|
// Store the droplet id for later
|
||||||
state.Put("droplet_id", droplet.ID)
|
state.Put("droplet_id", droplet.ID)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", droplet.ID)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,9 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
||||||
// Save the container ID
|
// Save the container ID
|
||||||
s.containerId = containerId
|
s.containerId = containerId
|
||||||
state.Put("container_id", s.containerId)
|
state.Put("container_id", s.containerId)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.containerId)
|
||||||
ui.Message(fmt.Sprintf("Container ID: %s", s.containerId))
|
ui.Message(fmt.Sprintf("Container ID: %s", s.containerId))
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,6 +176,9 @@ func (s *StepCreateInstance) Run(ctx context.Context, state multistep.StateBag)
|
||||||
|
|
||||||
// Things succeeded, store the name so we can remove it later
|
// Things succeeded, store the name so we can remove it later
|
||||||
state.Put("instance_name", name)
|
state.Put("instance_name", name)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", name)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,9 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
|
|
||||||
// Store the server id for later
|
// Store the server id for later
|
||||||
state.Put("server_id", serverCreateResult.Server.ID)
|
state.Put("server_id", serverCreateResult.Server.ID)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", serverCreateResult.Server.ID)
|
||||||
|
|
||||||
if err := waitForAction(ctx, client, serverCreateResult.Action); err != nil {
|
if err := waitForAction(ctx, client, serverCreateResult.Action); err != nil {
|
||||||
err := fmt.Errorf("Error creating server: %s", err)
|
err := fmt.Errorf("Error creating server: %s", err)
|
||||||
|
|
|
@ -67,6 +67,9 @@ func (s *stepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis
|
||||||
|
|
||||||
s.vmID = vm.Id
|
s.vmID = vm.Id
|
||||||
state.Put("vm_id", vm.Id)
|
state.Put("vm_id", vm.Id)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", vm.Id)
|
||||||
|
|
||||||
hdds, _, err := client.VmApi.VmListHdd(ctx, vm.Id)
|
hdds, _, err := client.VmApi.VmListHdd(ctx, vm.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -154,6 +154,9 @@ func (s *StepCloneVM) Run(ctx context.Context, state multistep.StateBag) multist
|
||||||
|
|
||||||
// Set the final name in the state bag so others can use it
|
// Set the final name in the state bag so others can use it
|
||||||
state.Put("vmName", s.VMName)
|
state.Put("vmName", s.VMName)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.VMName)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,6 +166,9 @@ func (s *StepCreateVM) Run(ctx context.Context, state multistep.StateBag) multis
|
||||||
|
|
||||||
// Set the final name in the state bag so others can use it
|
// Set the final name in the state bag so others can use it
|
||||||
state.Put("vmName", s.VMName)
|
state.Put("vmName", s.VMName)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.VMName)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,6 +96,9 @@ func (s *stepCreateJDCloudInstance) Run(_ context.Context, state multistep.State
|
||||||
"Hi, we have created the instance, its name=%v , "+
|
"Hi, we have created the instance, its name=%v , "+
|
||||||
"its id=%v, "+
|
"its id=%v, "+
|
||||||
"and its eip=%v :) ", instance.InstanceName, s.InstanceSpecConfig.InstanceId, eip.Result.ElasticIp.ElasticIpAddress))
|
"and its eip=%v :) ", instance.InstanceName, s.InstanceSpecConfig.InstanceId, eip.Result.ElasticIp.ElasticIpAddress))
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.InstanceSpecConfig.InstanceId)
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,9 @@ func (s *stepCreateLinode) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
return multistep.ActionHalt
|
return multistep.ActionHalt
|
||||||
}
|
}
|
||||||
state.Put("instance", instance)
|
state.Put("instance", instance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instance.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
disk, err := s.findDisk(ctx, instance.ID)
|
disk, err := s.findDisk(ctx, instance.ID)
|
||||||
|
|
|
@ -97,6 +97,9 @@ func (s *StepCreatePublicIPInstance) Run(ctx context.Context, state multistep.St
|
||||||
if err == nil {
|
if err == nil {
|
||||||
state.Put("PublicIP", publicIPInstance.PublicIP)
|
state.Put("PublicIP", publicIPInstance.PublicIP)
|
||||||
state.Put("PublicIPInstance", publicIPInstance)
|
state.Put("PublicIPInstance", publicIPInstance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", publicIPInstance)
|
||||||
}
|
}
|
||||||
|
|
||||||
return processStepResult(err, s.Error, state)
|
return processStepResult(err, s.Error, state)
|
||||||
|
|
|
@ -96,6 +96,9 @@ func (s *StepCreateServerInstance) Run(ctx context.Context, state multistep.Stat
|
||||||
serverInstanceNo, err := s.CreateServerInstance(loginKey.KeyName, zoneNo, feeSystemTypeCode)
|
serverInstanceNo, err := s.CreateServerInstance(loginKey.KeyName, zoneNo, feeSystemTypeCode)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
state.Put("InstanceNo", serverInstanceNo)
|
state.Put("InstanceNo", serverInstanceNo)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", serverInstanceNo)
|
||||||
}
|
}
|
||||||
|
|
||||||
return processStepResult(err, s.Error, state)
|
return processStepResult(err, s.Error, state)
|
||||||
|
|
|
@ -94,6 +94,9 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("server_id", server_id)
|
state.Put("server_id", server_id)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", server_id)
|
||||||
|
|
||||||
state.Put("server_ip", server.Ips[0].Ip)
|
state.Put("server_ip", server.Ips[0].Ip)
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,9 @@ func (s *StepRunSourceServer) Run(ctx context.Context, state multistep.StateBag)
|
||||||
|
|
||||||
s.server = latestServer.(*servers.Server)
|
s.server = latestServer.(*servers.Server)
|
||||||
state.Put("server", s.server)
|
state.Put("server", s.server)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.server.ID)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -253,6 +253,9 @@ func (s *StepRunSourceVm) Run(ctx context.Context, state multistep.StateBag) mul
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("vm", vm)
|
state.Put("vm", vm)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", vmId)
|
||||||
|
|
||||||
// If we're in a region that doesn't support tagging on vm creation,
|
// If we're in a region that doesn't support tagging on vm creation,
|
||||||
// do that now.
|
// do that now.
|
||||||
|
|
|
@ -36,6 +36,9 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
||||||
}
|
}
|
||||||
|
|
||||||
s.vmName = vmName
|
s.vmName = vmName
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", vmName)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,9 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
state.Put("volume_id", server.Entities.Volumes.Items[0].Id)
|
state.Put("volume_id", server.Entities.Volumes.Items[0].Id)
|
||||||
|
|
||||||
server = profitbricks.GetServer(datacenter.Id, server.Id)
|
server = profitbricks.GetServer(datacenter.Id, server.Id)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", server.Id)
|
||||||
|
|
||||||
state.Put("server_ip", server.Entities.Nics.Items[0].Properties.Ips[0])
|
state.Put("server_ip", server.Entities.Nics.Items[0].Properties.Ips[0])
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,9 @@ func (s *stepStartVM) Run(ctx context.Context, state multistep.StateBag) multist
|
||||||
|
|
||||||
// Store the vm id for later
|
// Store the vm id for later
|
||||||
state.Put("vmRef", vmRef)
|
state.Put("vmRef", vmRef)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", vmRef)
|
||||||
|
|
||||||
ui.Say("Starting VM")
|
ui.Say("Starting VM")
|
||||||
_, err = client.StartVm(vmRef)
|
_, err = client.StartVm(vmRef)
|
||||||
|
|
|
@ -60,6 +60,9 @@ func (s *stepCreateServer) Run(ctx context.Context, state multistep.StateBag) mu
|
||||||
s.serverID = server
|
s.serverID = server
|
||||||
|
|
||||||
state.Put("server_id", server)
|
state.Put("server_id", server)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.serverID)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,6 +175,9 @@ func (s *stepRunInstance) Run(ctx context.Context, state multistep.StateBag) mul
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("instance", describeResp.Response.InstanceSet[0])
|
state.Put("instance", describeResp.Response.InstanceSet[0])
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.instanceId)
|
||||||
Message(state, s.instanceId, "Instance created")
|
Message(state, s.instanceId, "Instance created")
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
|
|
|
@ -43,6 +43,9 @@ func (s *StepCreateSourceMachine) Run(ctx context.Context, state multistep.State
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("machine", machineId)
|
state.Put("machine", machineId)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", machineId)
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,9 @@ func (s *stepCreateInstance) Run(ctx context.Context, state multistep.StateBag)
|
||||||
|
|
||||||
s.instanceId = instanceId
|
s.instanceId = instanceId
|
||||||
state.Put("instance", instance)
|
state.Put("instance", instance)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instance)
|
||||||
|
|
||||||
if instance.BootDiskState != ucloudcommon.BootDiskStateNormal {
|
if instance.BootDiskState != ucloudcommon.BootDiskStateNormal {
|
||||||
ui.Say("Waiting for boot disk of instance initialized")
|
ui.Say("Waiting for boot disk of instance initialized")
|
||||||
|
|
|
@ -35,7 +35,11 @@ func (s *StepUp) Run(ctx context.Context, state multistep.StateBag) multistep.St
|
||||||
|
|
||||||
ui.Say("Calling Vagrant Up (this can take some time)...")
|
ui.Say("Calling Vagrant Up (this can take some time)...")
|
||||||
|
|
||||||
_, _, err := driver.Up(s.generateArgs())
|
args := s.generateArgs()
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", args[0])
|
||||||
|
_, _, err := driver.Up(args)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
state.Put("error", err)
|
state.Put("error", err)
|
||||||
|
|
|
@ -57,6 +57,9 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
||||||
}
|
}
|
||||||
|
|
||||||
s.vmName = vmName
|
s.vmName = vmName
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", s.vmName)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,10 @@ func (s *StepRun) Run(ctx context.Context, state multistep.StateBag) multistep.S
|
||||||
return multistep.ActionHalt
|
return multistep.ActionHalt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", vmxPath)
|
||||||
|
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -249,6 +249,9 @@ runcmd:
|
||||||
}
|
}
|
||||||
|
|
||||||
state.Put("disk_id", instance.BootDisk.DiskId)
|
state.Put("disk_id", instance.BootDisk.DiskId)
|
||||||
|
// instance_id is the generic term used so that users can have access to the
|
||||||
|
// instance id inside of the provisioners, used in step_provision.
|
||||||
|
state.Put("instance_id", instance.Id)
|
||||||
|
|
||||||
if s.Debug {
|
if s.Debug {
|
||||||
ui.Message(fmt.Sprintf("Instance ID %s started. Current instance status %s", instance.Id, instance.Status))
|
ui.Message(fmt.Sprintf("Instance ID %s started. Current instance status %s", instance.Id, instance.Status))
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
// accidentally being interpolated into empty strings at prepare time.
|
// accidentally being interpolated into empty strings at prepare time.
|
||||||
func PlaceholderData() map[string]string {
|
func PlaceholderData() map[string]string {
|
||||||
placeholderData := map[string]string{}
|
placeholderData := map[string]string{}
|
||||||
|
placeholderData["ID"] = "{{.ID}}"
|
||||||
// The following correspond to communicator-agnostic functions that are
|
// The following correspond to communicator-agnostic functions that are
|
||||||
// part of the SSH and WinRM communicator implementations. These functions
|
// part of the SSH and WinRM communicator implementations. These functions
|
||||||
// are not part of the communicator interface, but are stored on the
|
// are not part of the communicator interface, but are stored on the
|
||||||
|
@ -38,6 +38,7 @@ func PlaceholderData() map[string]string {
|
||||||
placeholderData["Port"] = "{{.Port}}"
|
placeholderData["Port"] = "{{.Port}}"
|
||||||
placeholderData["User"] = "{{.User}}"
|
placeholderData["User"] = "{{.User}}"
|
||||||
placeholderData["Password"] = "{{.Password}}"
|
placeholderData["Password"] = "{{.Password}}"
|
||||||
|
placeholderData["ConnType"] = "{{.Type}}"
|
||||||
|
|
||||||
// Backwards-compatability:
|
// Backwards-compatability:
|
||||||
placeholderData["WinRMPassword"] = "{{.WinRMPassword}}"
|
placeholderData["WinRMPassword"] = "{{.WinRMPassword}}"
|
||||||
|
@ -60,12 +61,24 @@ func PopulateProvisionHookData(state multistep.StateBag) map[string]interface{}
|
||||||
hookData["Port"] = commConf.Port()
|
hookData["Port"] = commConf.Port()
|
||||||
hookData["User"] = commConf.User()
|
hookData["User"] = commConf.User()
|
||||||
hookData["Password"] = commConf.Password()
|
hookData["Password"] = commConf.Password()
|
||||||
|
hookData["ConnType"] = commConf.Type
|
||||||
|
|
||||||
// Backwards compatibility; in practice, WinRMPassword is fulfilled by
|
// Backwards compatibility; in practice, WinRMPassword is fulfilled by
|
||||||
// Password.
|
// Password.
|
||||||
hookData["WinRMPassword"] = commConf.WinRMPassword
|
hookData["WinRMPassword"] = commConf.WinRMPassword
|
||||||
|
|
||||||
// TODO
|
// instance_id is placed in state by the builders.
|
||||||
// state.GetOK("id")
|
// Not yet implemented in Chroot, lxc/lxd, Azure, Qemu.
|
||||||
|
// Implemented in most others including digitalOcean (droplet id),
|
||||||
|
// docker (container_id), and clouds which use "server" internally instead
|
||||||
|
// of instance.
|
||||||
|
id, ok := state.GetOk("instance_id")
|
||||||
|
if ok {
|
||||||
|
hookData["ID"] = id
|
||||||
|
} else {
|
||||||
|
// Warn user that the id isn't implemented
|
||||||
|
hookData["ID"] = "ERR_ID_NOT_IMPLEMENTED_BY_BUILDER"
|
||||||
|
}
|
||||||
|
|
||||||
return hookData
|
return hookData
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue