Abstract out GetSR
This commit is contained in:
parent
b73cbc1230
commit
2a4ce52eaa
@ -431,6 +431,14 @@ func (self *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (pa
|
||||
return artifact, nil
|
||||
}
|
||||
|
||||
func (self *Builder) Cancel() {
|
||||
if self.runner != nil {
|
||||
log.Println("Cancelling the step runner...")
|
||||
self.runner.Cancel()
|
||||
}
|
||||
fmt.Println("Cancelling the builder")
|
||||
}
|
||||
|
||||
// all steps should check config.ShouldKeepInstance first before cleaning up
|
||||
func (cfg config) ShouldKeepInstance(state multistep.StateBag) bool {
|
||||
switch cfg.KeepInstance {
|
||||
@ -448,10 +456,26 @@ func (cfg config) ShouldKeepInstance(state multistep.StateBag) bool {
|
||||
}
|
||||
}
|
||||
|
||||
func (self *Builder) Cancel() {
|
||||
if self.runner != nil {
|
||||
log.Println("Cancelling the step runner...")
|
||||
self.runner.Cancel()
|
||||
func (config config) GetSR(client XenAPIClient) (*SR, error) {
|
||||
if config.SrName == "" {
|
||||
// Find the default SR
|
||||
return client.GetDefaultSR()
|
||||
|
||||
} else {
|
||||
// Use the provided name label to find the SR to use
|
||||
srs, err := client.GetSRByNameLabel(config.SrName)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch {
|
||||
case len(srs) == 0:
|
||||
return nil, fmt.Errorf("Couldn't find a SR with the specified name-label '%s'", config.SrName)
|
||||
case len(srs) > 1:
|
||||
return nil, fmt.Errorf("Found more than one SR with the name '%s'. The name must be unique", config.SrName)
|
||||
}
|
||||
|
||||
return srs[0], nil
|
||||
}
|
||||
fmt.Println("Cancelling the builder")
|
||||
}
|
||||
|
@ -61,39 +61,13 @@ func (self *stepCreateInstance) Run(state multistep.StateBag) multistep.StepActi
|
||||
}
|
||||
|
||||
// Create VDI for the instance
|
||||
var sr *SR
|
||||
|
||||
if config.SrName == "" {
|
||||
// Find the default SR
|
||||
default_sr, err := client.GetDefaultSR()
|
||||
sr = default_sr
|
||||
|
||||
sr, err := config.GetSR(client)
|
||||
if err != nil {
|
||||
ui.Error(fmt.Sprintf("Error getting default SR: %s", err.Error()))
|
||||
ui.Error(fmt.Sprintf("Unable to get SR: %s", err.Error()))
|
||||
return multistep.ActionHalt
|
||||
}
|
||||
|
||||
} else {
|
||||
// Use the provided name label to find the SR to use
|
||||
srs, err := client.GetSRByNameLabel(config.SrName)
|
||||
|
||||
if err != nil {
|
||||
ui.Error(fmt.Sprintf("Error getting default SR: %s", err.Error()))
|
||||
return multistep.ActionHalt
|
||||
}
|
||||
|
||||
switch {
|
||||
case len(srs) == 0:
|
||||
ui.Error(fmt.Sprintf("Couldn't find a SR with the specified name-label '%s'. Aborting.", config.SrName))
|
||||
return multistep.ActionHalt
|
||||
case len(srs) > 1:
|
||||
ui.Error(fmt.Sprintf("Found more than one SR with the name '%s'. The name must be unique. Aborting.", config.SrName))
|
||||
return multistep.ActionHalt
|
||||
}
|
||||
|
||||
sr = srs[0]
|
||||
}
|
||||
|
||||
vdi, err := sr.CreateVdi("Packer-disk", config.RootDiskSize)
|
||||
if err != nil {
|
||||
ui.Error(fmt.Sprintf("Unable to create packer disk VDI: %s", err.Error()))
|
||||
|
Loading…
Reference in New Issue
Block a user