本文整理汇总了Golang中github.com/cloudfoundry/bosh-init/ui.Stage类的典型用法代码示例。如果您正苦于以下问题:Golang Stage类的具体用法?Golang Stage怎么用?Golang Stage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Stage类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Upload
// Upload stemcell to an IAAS. It does the following steps:
// 1) uploads the stemcell to the cloud (if needed),
// 2) saves a record of the uploaded stemcell in the repo
func (m *manager) Upload(extractedStemcell ExtractedStemcell, uploadStage biui.Stage) (cloudStemcell CloudStemcell, err error) {
manifest := extractedStemcell.Manifest()
stageName := fmt.Sprintf("Uploading stemcell '%s/%s'", manifest.Name, manifest.Version)
err = uploadStage.Perform(stageName, func() error {
foundStemcellRecord, found, err := m.repo.Find(manifest.Name, manifest.Version)
if err != nil {
return bosherr.WrapError(err, "Finding existing stemcell record in repo")
}
if found {
cloudStemcell = NewCloudStemcell(foundStemcellRecord, m.repo, m.cloud)
return biui.NewSkipStageError(bosherr.Errorf("Found stemcell: %#v", foundStemcellRecord), "Stemcell already uploaded")
}
cid, err := m.cloud.CreateStemcell(manifest.ImagePath, manifest.CloudProperties)
if err != nil {
return bosherr.WrapErrorf(err, "creating stemcell (%s %s)", manifest.Name, manifest.Version)
}
stemcellRecord, err := m.repo.Save(manifest.Name, manifest.Version, cid)
if err != nil {
//TODO: delete stemcell from cloud when saving fails
return bosherr.WrapErrorf(err, "saving stemcell record in repo (cid=%s, stemcell=%s)", cid, extractedStemcell)
}
cloudStemcell = NewCloudStemcell(stemcellRecord, m.repo, m.cloud)
return nil
})
if err != nil {
return cloudStemcell, err
}
return cloudStemcell, nil
}
开发者ID:vestel,项目名称:bosh-init,代码行数:37,代码来源:manager.go
示例2: UpdateJobs
func (i *instance) UpdateJobs(
deploymentManifest bideplmanifest.Manifest,
stage biui.Stage,
) error {
newState, err := i.stateBuilder.Build(i.jobName, i.id, deploymentManifest, stage)
if err != nil {
return bosherr.WrapErrorf(err, "Building state for instance '%s/%d'", i.jobName, i.id)
}
stepName := fmt.Sprintf("Updating instance '%s/%d'", i.jobName, i.id)
err = stage.Perform(stepName, func() error {
err := i.vm.Stop()
if err != nil {
return bosherr.WrapError(err, "Stopping the agent")
}
err = i.vm.Apply(newState.ToApplySpec())
if err != nil {
return bosherr.WrapError(err, "Applying the agent state")
}
err = i.vm.Start()
if err != nil {
return bosherr.WrapError(err, "Starting the agent")
}
return nil
})
if err != nil {
return err
}
return i.waitUntilJobsAreRunning(deploymentManifest.Update.UpdateWatchTime, stage)
}
开发者ID:jmaryland,项目名称:bosh-init,代码行数:34,代码来源:instance.go
示例3: shutdown
func (i *instance) shutdown(
pingTimeout time.Duration,
pingDelay time.Duration,
stage biui.Stage,
) error {
stepName := fmt.Sprintf("Waiting for the agent on VM '%s'", i.vm.CID())
waitingForAgentErr := stage.Perform(stepName, func() error {
if err := i.vm.WaitUntilReady(pingTimeout, pingDelay); err != nil {
return bosherr.WrapError(err, "Agent unreachable")
}
return nil
})
if waitingForAgentErr != nil {
i.logger.Warn(i.logTag, "Gave up waiting for agent: %s", waitingForAgentErr.Error())
return nil
}
if err := i.stopJobs(stage); err != nil {
return err
}
if err := i.unmountDisks(stage); err != nil {
return err
}
return nil
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:25,代码来源:instance.go
示例4: Delete
func (i *instance) Delete(
pingTimeout time.Duration,
pingDelay time.Duration,
stage biui.Stage,
) error {
vmExists, err := i.vm.Exists()
if err != nil {
return bosherr.WrapErrorf(err, "Checking existance of vm for instance '%s/%d'", i.jobName, i.id)
}
if vmExists {
if err = i.shutdown(pingTimeout, pingDelay, stage); err != nil {
return err
}
}
// non-existent VMs still need to be 'deleted' to clean up related resources owned by the CPI
stepName := fmt.Sprintf("Deleting VM '%s'", i.vm.CID())
return stage.Perform(stepName, func() error {
err := i.vm.Delete()
cloudErr, ok := err.(bicloud.Error)
if ok && cloudErr.Type() == bicloud.VMNotFoundError {
return biui.NewSkipStageError(cloudErr, "VM not found")
}
return err
})
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:27,代码来源:instance.go
示例5: GetStemcell
func (s Fetcher) GetStemcell(deploymentManifest bideplmanifest.Manifest, stage biui.Stage) (ExtractedStemcell, error) {
stemcell, err := deploymentManifest.Stemcell(deploymentManifest.JobName())
if err != nil {
return nil, err
}
stemcellTarballPath, err := s.TarballProvider.Get(stemcell, stage)
if err != nil {
return nil, err
}
var extractedStemcell ExtractedStemcell
err = stage.Perform("Validating stemcell", func() error {
extractedStemcell, err = s.StemcellExtractor.Extract(stemcellTarballPath)
if err != nil {
return bosherr.WrapErrorf(err, "Extracting stemcell from '%s'", stemcellTarballPath)
}
return nil
})
if err != nil {
return nil, err
}
return extractedStemcell, nil
}
开发者ID:vestel,项目名称:bosh-init,代码行数:26,代码来源:fetcher.go
示例6: renderJobTemplates
// renderJobTemplates renders all the release job templates for multiple release jobs specified
// by a deployment job and randomly uploads them to blobstore
func (b *jobRenderer) renderJobTemplates(
releaseJobs []bireljob.Job,
releaseJobProperties map[string]*biproperty.Map,
jobProperties biproperty.Map,
globalProperties biproperty.Map,
deploymentName string,
stage biui.Stage,
) ([]RenderedJobRef, error) {
renderedJobRefs := make([]RenderedJobRef, 0, len(releaseJobs))
err := stage.Perform("Rendering job templates", func() error {
renderedJobList, err := b.jobListRenderer.Render(releaseJobs, releaseJobProperties, jobProperties, globalProperties, deploymentName, "")
if err != nil {
return err
}
defer renderedJobList.DeleteSilently()
for _, renderedJob := range renderedJobList.All() {
renderedJobRef, err := b.compressAndUpload(renderedJob)
if err != nil {
return err
}
renderedJobRefs = append(renderedJobRefs, renderedJobRef)
}
return nil
})
return renderedJobRefs, err
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:32,代码来源:job_renderer.go
示例7: GetDeploymentManifest
func (y DeploymentManifestParser) GetDeploymentManifest(deploymentManifestPath string, releaseSetManifest birelsetmanifest.Manifest, stage biui.Stage) (bideplmanifest.Manifest, error) {
var deploymentManifest bideplmanifest.Manifest
err := stage.Perform("Validating deployment manifest", func() error {
var err error
deploymentManifest, err = y.DeploymentParser.Parse(deploymentManifestPath)
if err != nil {
return bosherr.WrapErrorf(err, "Parsing deployment manifest '%s'", deploymentManifestPath)
}
err = y.DeploymentValidator.Validate(deploymentManifest, releaseSetManifest)
if err != nil {
return bosherr.WrapError(err, "Validating deployment manifest")
}
err = y.DeploymentValidator.ValidateReleaseJobs(deploymentManifest, y.ReleaseManager)
if err != nil {
return bosherr.WrapError(err, "Validating deployment jobs refer to jobs in release")
}
return nil
})
if err != nil {
return bideplmanifest.Manifest{}, err
}
return deploymentManifest, nil
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:27,代码来源:deployment_manifest_parser.go
示例8: compilePackages
// compilePackages compiles the specified packages, in the order specified, uploads them to the Blobstore, and returns the blob references
func (c *dependencyCompiler) compilePackages(requiredPackages []*birelpkg.Package, stage biui.Stage) ([]CompiledPackageRef, error) {
packageRefs := make([]CompiledPackageRef, 0, len(requiredPackages))
for _, pkg := range requiredPackages {
stepName := fmt.Sprintf("Compiling package '%s/%s'", pkg.Name, pkg.Fingerprint)
err := stage.Perform(stepName, func() error {
compiledPackageRecord, err := c.packageCompiler.Compile(pkg)
if err != nil {
return err
}
packageRef := CompiledPackageRef{
Name: pkg.Name,
Version: pkg.Fingerprint,
BlobstoreID: compiledPackageRecord.BlobID,
SHA1: compiledPackageRecord.BlobSHA1,
}
packageRefs = append(packageRefs, packageRef)
return nil
})
if err != nil {
return nil, err
}
}
return packageRefs, nil
}
开发者ID:vestel,项目名称:bosh-init,代码行数:29,代码来源:dependency_compiler.go
示例9: stopRegistryNice
func (i *installation) stopRegistryNice(logger boshlog.Logger, stage biui.Stage) {
err := stage.Perform("Stopping registry", func() error {
return i.StopRegistry()
})
if err != nil {
logger.Warn("installation", "Registry failed to stop: %s", err)
}
}
开发者ID:vestel,项目名称:bosh-init,代码行数:8,代码来源:installation.go
示例10: attachDisk
func (d *diskDeployer) attachDisk(disk bidisk.Disk, vm VM, stage biui.Stage) error {
stageName := fmt.Sprintf("Attaching disk '%s' to VM '%s'", disk.CID(), vm.CID())
err := stage.Perform(stageName, func() error {
return vm.AttachDisk(disk)
})
return err
}
开发者ID:vestel,项目名称:bosh-init,代码行数:8,代码来源:disk_deployer.go
示例11: createDisk
func (d *diskDeployer) createDisk(diskPool bideplmanifest.DiskPool, vm VM, stage biui.Stage) (disk bidisk.Disk, err error) {
err = stage.Perform("Creating disk", func() error {
disk, err = d.diskManager.Create(diskPool, vm.CID())
return err
})
return disk, err
}
开发者ID:vestel,项目名称:bosh-init,代码行数:8,代码来源:disk_deployer.go
示例12: WithRunningRegistry
func (i *installation) WithRunningRegistry(logger boshlog.Logger, stage biui.Stage, fn func() error) error {
err := stage.Perform("Starting registry", func() error {
return i.StartRegistry()
})
if err != nil {
return err
}
defer i.stopRegistryNice(logger, stage)
return fn()
}
开发者ID:vestel,项目名称:bosh-init,代码行数:10,代码来源:installation.go
示例13: migrateDisk
func (d *diskDeployer) migrateDisk(
originalDisk bidisk.Disk,
diskPool bideplmanifest.DiskPool,
vm VM,
stage biui.Stage,
) (newDisk bidisk.Disk, err error) {
d.logger.Debug(d.logTag, "Migrating disk '%s'", originalDisk.CID())
err = stage.Perform("Creating disk", func() error {
newDisk, err = d.diskManager.Create(diskPool, vm.CID())
return err
})
if err != nil {
return newDisk, err
}
stageName := fmt.Sprintf("Attaching disk '%s' to VM '%s'", newDisk.CID(), vm.CID())
err = stage.Perform(stageName, func() error {
return vm.AttachDisk(newDisk)
})
if err != nil {
return newDisk, err
}
stageName = fmt.Sprintf("Migrating disk content from '%s' to '%s'", originalDisk.CID(), newDisk.CID())
err = stage.Perform(stageName, func() error {
return vm.MigrateDisk()
})
if err != nil {
return newDisk, err
}
err = d.updateCurrentDiskRecord(newDisk)
if err != nil {
return newDisk, err
}
stageName = fmt.Sprintf("Detaching disk '%s'", originalDisk.CID())
err = stage.Perform(stageName, func() error {
return vm.DetachDisk(originalDisk)
})
if err != nil {
return newDisk, err
}
stageName = fmt.Sprintf("Deleting disk '%s'", originalDisk.CID())
err = stage.Perform(stageName, func() error {
return originalDisk.Delete()
})
if err != nil {
return newDisk, err
}
return newDisk, nil
}
开发者ID:vestel,项目名称:bosh-init,代码行数:55,代码来源:disk_deployer.go
示例14: deleteDisk
func (d *deployment) deleteDisk(deleteStage biui.Stage, disk bidisk.Disk) error {
stepName := fmt.Sprintf("Deleting disk '%s'", disk.CID())
return deleteStage.Perform(stepName, func() error {
err := disk.Delete()
cloudErr, ok := err.(bicloud.Error)
if ok && cloudErr.Type() == bicloud.DiskNotFoundError {
return biui.NewSkipStageError(cloudErr, "Disk not found")
}
return err
})
}
开发者ID:vestel,项目名称:bosh-init,代码行数:11,代码来源:deployment.go
示例15: deleteStemcell
func (d *deployment) deleteStemcell(deleteStage biui.Stage, stemcell bistemcell.CloudStemcell) error {
stepName := fmt.Sprintf("Deleting stemcell '%s'", stemcell.CID())
return deleteStage.Perform(stepName, func() error {
err := stemcell.Delete()
cloudErr, ok := err.(bicloud.Error)
if ok && cloudErr.Type() == bicloud.StemcellNotFoundError {
return biui.NewSkipStageError(cloudErr, "Stemcell not found")
}
return err
})
}
开发者ID:vestel,项目名称:bosh-init,代码行数:11,代码来源:deployment.go
示例16: waitUntilJobsAreRunning
func (i *instance) waitUntilJobsAreRunning(updateWatchTime bideplmanifest.WatchTime, stage biui.Stage) error {
start := time.Duration(updateWatchTime.Start) * time.Millisecond
end := time.Duration(updateWatchTime.End) * time.Millisecond
delayBetweenAttempts := 1 * time.Second
maxAttempts := int((end - start) / delayBetweenAttempts)
stepName := fmt.Sprintf("Waiting for instance '%s/%d' to be running", i.jobName, i.id)
return stage.Perform(stepName, func() error {
time.Sleep(start)
return i.vm.WaitToBeRunning(maxAttempts, delayBetweenAttempts)
})
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:12,代码来源:instance.go
示例17: installCpiRelease
func (i CpiInstaller) installCpiRelease(installer biinstall.Installer, installationManifest biinstallmanifest.Manifest, target biinstall.Target, stage biui.Stage) (biinstall.Installation, error) {
var installation biinstall.Installation
var err error
err = stage.PerformComplex("installing CPI", func(installStage biui.Stage) error {
installation, err = installer.Install(installationManifest, installStage)
return err
})
if err != nil {
return installation, bosherr.WrapError(err, "Installing CPI")
}
return installation, nil
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:13,代码来源:installer.go
示例18: ValidateCpiRelease
func (i CpiInstaller) ValidateCpiRelease(installationManifest biinstallmanifest.Manifest, stage biui.Stage) error {
return stage.Perform("Validating cpi release", func() error {
cpiReleaseName := installationManifest.Template.Release
cpiRelease, found := i.ReleaseManager.Find(cpiReleaseName)
if !found {
return bosherr.Errorf("installation release '%s' must refer to a provided release", cpiReleaseName)
}
err := i.Validator.Validate(cpiRelease, installationManifest.Template.Name)
if err != nil {
return bosherr.WrapErrorf(err, "Invalid CPI release '%s'", cpiReleaseName)
}
return nil
})
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:15,代码来源:installer.go
示例19: findCurrentDeploymentAndDelete
func (c *deploymentDeleter) findCurrentDeploymentAndDelete(stage biui.Stage, deploymentManager bidepl.Manager) error {
c.logger.Debug(c.logTag, "Finding current deployment...")
deployment, found, err := deploymentManager.FindCurrent()
if err != nil {
return bosherr.WrapError(err, "Finding current deployment")
}
return stage.PerformComplex("deleting deployment", func(deleteStage biui.Stage) error {
if !found {
//TODO: skip? would require adding skip support to PerformComplex
c.logger.Debug(c.logTag, "No current deployment found...")
return nil
}
return deployment.Delete(deleteStage)
})
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:17,代码来源:deployment_deleter.go
示例20: Get
func (p *provider) Get(source Source, stage biui.Stage) (string, error) {
if strings.HasPrefix(source.GetURL(), "file://") {
filePath := strings.TrimPrefix(source.GetURL(), "file://")
expandedPath, err := p.fs.ExpandPath(filePath)
if err != nil {
p.logger.Warn(p.logTag, "Failed to expand file path %s, using original URL", filePath)
return filePath, nil
}
p.logger.Debug(p.logTag, "Using the tarball from file source: '%s'", filePath)
return expandedPath, nil
}
if !strings.HasPrefix(source.GetURL(), "http") {
return "", bosherr.Errorf("Invalid source URL: '%s', must be either file:// or http(s)://", source.GetURL())
}
var cachedPath string
err := stage.Perform(fmt.Sprintf("Downloading %s", source.Description()), func() error {
var found bool
cachedPath, found = p.cache.Get(source)
if found {
p.logger.Debug(p.logTag, "Using the tarball from cache: '%s'", cachedPath)
return biui.NewSkipStageError(bosherr.Error("Already downloaded"), "Found in local cache")
}
retryStrategy := boshretry.NewAttemptRetryStrategy(p.downloadAttempts, p.delayTimeout, p.downloadRetryable(source), p.logger)
err := retryStrategy.Try()
if err != nil {
return bosherr.WrapErrorf(err, "Failed to download from '%s'", source.GetURL())
}
p.logger.Debug(p.logTag, "Using the downloaded tarball: '%s'", cachedPath)
return nil
})
if err != nil {
return "", err
}
return p.cache.Path(source), nil
}
开发者ID:mattcui,项目名称:bosh-init,代码行数:43,代码来源:provider.go
注:本文中的github.com/cloudfoundry/bosh-init/ui.Stage类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论