本文整理汇总了Golang中github.com/vmware/vic/lib/config.VirtualContainerHostConfigSpec.BootstrapImagePath方法的典型用法代码示例。如果您正苦于以下问题:Golang VirtualContainerHostConfigSpec.BootstrapImagePath方法的具体用法?Golang VirtualContainerHostConfigSpec.BootstrapImagePath怎么用?Golang VirtualContainerHostConfigSpec.BootstrapImagePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/vmware/vic/lib/config.VirtualContainerHostConfigSpec
的用法示例。
在下文中一共展示了VirtualContainerHostConfigSpec.BootstrapImagePath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: createAppliance
//.........这里部分代码省略.........
Version: "0.0",
Key: conf.ExtensionName,
}
conf.AddComponent("vicadmin", &executor.SessionConfig{
User: "vicadmin",
Group: "vicadmin",
Cmd: executor.Cmd{
Path: "/sbin/vicadmin",
Args: []string{
"/sbin/vicadmin",
"-docker-host=unix:///var/run/docker.sock",
// FIXME: hack during config migration
"-insecure",
"-ds=" + conf.ImageStores[0].Host,
"-cluster=" + settings.ClusterPath,
"-pool=" + settings.ResourcePoolPath,
"-vm-path=" + vm2.InventoryPath,
},
Env: []string{
"PATH=/sbin:/bin",
},
Dir: "/home/vicadmin",
},
Restart: true,
},
)
if conf.HostCertificate != nil {
d.VICAdminProto = "https"
d.DockerPort = fmt.Sprintf("%d", opts.DefaultTLSHTTPPort)
} else {
d.VICAdminProto = "http"
d.DockerPort = fmt.Sprintf("%d", opts.DefaultHTTPPort)
}
conf.AddComponent("docker-personality", &executor.SessionConfig{
Cmd: executor.Cmd{
Path: "/sbin/docker-engine-server",
Args: []string{
"/sbin/docker-engine-server",
//FIXME: hack during config migration
"-serveraddr=0.0.0.0",
"-port=" + d.DockerPort,
"-port-layer-port=8080",
},
Env: []string{
"PATH=/sbin",
},
},
Restart: true,
},
)
conf.AddComponent("port-layer", &executor.SessionConfig{
Cmd: executor.Cmd{
Path: "/sbin/port-layer-server",
Args: []string{
"/sbin/port-layer-server",
//FIXME: hack during config migration
"--host=localhost",
"--port=8080",
"--insecure",
"--sdk=" + conf.Target.String(),
"--datacenter=" + settings.DatacenterName,
"--cluster=" + settings.ClusterPath,
"--pool=" + settings.ResourcePoolPath,
"--datastore=" + conf.ImageStores[0].Host,
"--vch=" + conf.ExecutorConfig.Name,
},
},
Restart: true,
},
)
conf.BootstrapImagePath = fmt.Sprintf("[%s] %s/%s", conf.ImageStores[0].Host, d.vmPathName, settings.BootstrapISO)
spec, err = d.reconfigureApplianceSpec(vm2, conf, settings)
if err != nil {
log.Errorf("Error while getting appliance reconfig spec: %s", err)
return err
}
// reconfig
info, err = tasks.WaitForResult(d.ctx, func(ctx context.Context) (tasks.ResultWaiter, error) {
return vm2.Reconfigure(ctx, *spec)
})
if err != nil {
log.Errorf("Error while setting component parameters to appliance: %s", err)
return err
}
if info.State != types.TaskInfoStateSuccess {
log.Errorf("Setting parameters to appliance reported: %s", info.Error.LocalizedMessage)
return err
}
d.appliance = vm2
return nil
}
示例2: Upgrade
// Upgrade will try to upgrade vch appliance to new version. If failed will try to roll back to original status.
func (d *Dispatcher) Upgrade(vch *vm.VirtualMachine, conf *config.VirtualContainerHostConfigSpec, settings *data.InstallerData) (err error) {
defer trace.End(trace.Begin(conf.Name))
d.appliance = vch
// update the displayname to the actual folder name used
if d.vmPathName, err = d.appliance.FolderName(d.ctx); err != nil {
log.Errorf("Failed to get canonical name for appliance: %s", err)
return err
}
ds, err := d.session.Finder.Datastore(d.ctx, conf.ImageStores[0].Host)
if err != nil {
err = errors.Errorf("Failed to find image datastore %q", conf.ImageStores[0].Host)
return err
}
d.session.Datastore = ds
if !conf.HostCertificate.IsNil() {
d.VICAdminProto = "https"
d.DockerPort = fmt.Sprintf("%d", opts.DefaultTLSHTTPPort)
} else {
d.VICAdminProto = "http"
d.DockerPort = fmt.Sprintf("%d", opts.DefaultHTTPPort)
}
if err = d.uploadImages(settings.ImageFiles); err != nil {
return errors.Errorf("Uploading images failed with %s. Exiting...", err)
}
conf.BootstrapImagePath = fmt.Sprintf("[%s] %s/%s", conf.ImageStores[0].Host, d.vmPathName, settings.BootstrapISO)
// ensure that we wait for components to come up
for _, s := range conf.ExecutorConfig.Sessions {
s.Started = ""
}
snapshotName := fmt.Sprintf("%s %s", UpgradePrefix, conf.Version.BuildNumber)
snapshotName = strings.TrimSpace(snapshotName)
snapshotRefID, err := d.createSnapshot(snapshotName, "upgrade snapshot")
if err != nil {
d.deleteUpgradeImages(ds, settings)
return err
}
defer func() {
if err == nil {
// do clean up aggressively, even the previous operation failed with context deadline excceeded.
d.deleteSnapshot(*snapshotRefID, snapshotName, conf.Name)
}
}()
if err = d.update(conf, settings); err == nil {
return nil
}
log.Errorf("Failed to upgrade: %s", err)
log.Infof("Rolling back upgrade")
// reset timeout, to make sure rollback still happens in case of deadline exceeded error in previous step
var cancel context.CancelFunc
d.ctx, cancel = context.WithTimeout(context.Background(), settings.RollbackTimeout)
defer cancel()
if rerr := d.rollback(conf, snapshotName); rerr != nil {
log.Errorf("Failed to revert appliance to snapshot: %s", rerr)
// return the error message for upgrade, instead of rollback
return err
}
d.deleteUpgradeImages(ds, settings)
log.Infof("Appliance is rollback to old version")
return err
}