本文整理汇总了Golang中github.com/cloudfoundry/bosh-init/release/set/manifest.Manifest.FindByName方法的典型用法代码示例。如果您正苦于以下问题:Golang Manifest.FindByName方法的具体用法?Golang Manifest.FindByName怎么用?Golang Manifest.FindByName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/cloudfoundry/bosh-init/release/set/manifest.Manifest
的用法示例。
在下文中一共展示了Manifest.FindByName方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Validate
func (v *validator) Validate(manifest Manifest, releaseSetManifest birelsetmanifest.Manifest) error {
errs := []error{}
cpiJobName := manifest.Template.Name
if v.isBlank(cpiJobName) {
errs = append(errs, bosherr.Error("cloud_provider.template.name must be provided"))
}
cpiReleaseName := manifest.Template.Release
if v.isBlank(cpiReleaseName) {
errs = append(errs, bosherr.Error("cloud_provider.template.release must be provided"))
}
_, found := releaseSetManifest.FindByName(cpiReleaseName)
if !found {
errs = append(errs, bosherr.Errorf("cloud_provider.template.release '%s' must refer to a release in releases", cpiReleaseName))
}
if len(errs) > 0 {
return bosherr.NewMultiError(errs...)
}
return nil
}
示例2: DeleteDeployment
func (c *deploymentDeleter) DeleteDeployment(stage biui.Stage) (err error) {
c.ui.PrintLinef("Deployment state: '%s'", c.deploymentStateService.Path())
if !c.deploymentStateService.Exists() {
c.ui.PrintLinef("No deployment state file found.")
return nil
}
deploymentState, err := c.deploymentStateService.Load()
if err != nil {
return bosherr.WrapError(err, "Loading deployment state")
}
target, err := c.targetProvider.NewTarget()
if err != nil {
return bosherr.WrapError(err, "Determining installation target")
}
err = c.tempRootConfigurator.PrepareAndSetTempRoot(target.TmpPath(), c.logger)
if err != nil {
return bosherr.WrapError(err, "Setting temp root")
}
defer func() {
err := c.releaseManager.DeleteAll()
if err != nil {
c.logger.Warn(c.logTag, "Deleting all extracted releases: %s", err.Error())
}
}()
var installationManifest biinstallmanifest.Manifest
err = stage.PerformComplex("validating", func(stage biui.Stage) error {
var releaseSetManifest birelsetmanifest.Manifest
releaseSetManifest, installationManifest, err = c.releaseSetAndInstallationManifestParser.ReleaseSetAndInstallationManifest(c.deploymentManifestPath)
if err != nil {
return err
}
cpiReleaseName := installationManifest.Template.Release
cpiReleaseRef, found := releaseSetManifest.FindByName(cpiReleaseName)
if !found {
return bosherr.Errorf("installation release '%s' must refer to a release in releases", cpiReleaseName)
}
err = c.releaseFetcher.DownloadAndExtract(cpiReleaseRef, stage)
if err != nil {
return err
}
err = c.cpiInstaller.ValidateCpiRelease(installationManifest, stage)
return err
})
if err != nil {
return err
}
err = c.cpiInstaller.WithInstalledCpiRelease(installationManifest, target, stage, func(localCpiInstallation biinstall.Installation) error {
return localCpiInstallation.WithRunningRegistry(c.logger, stage, func() error {
err = c.findAndDeleteDeployment(stage, localCpiInstallation, deploymentState.DirectorID, installationManifest.Mbus)
if err != nil {
return err
}
return stage.Perform("Uninstalling local artifacts for CPI and deployment", func() error {
err := c.cpiUninstaller.Uninstall(localCpiInstallation.Target())
if err != nil {
return err
}
return c.deploymentStateService.Cleanup()
})
})
})
return err
}
示例3: Validate
func (v *validator) Validate(deploymentManifest Manifest, releaseSetManifest birelsetmanifest.Manifest) error {
errs := []error{}
if v.isBlank(deploymentManifest.Name) {
errs = append(errs, bosherr.Error("name must be provided"))
}
networksErrors := v.validateNetworks(deploymentManifest.Networks)
errs = append(errs, networksErrors...)
for idx, resourcePool := range deploymentManifest.ResourcePools {
if v.isBlank(resourcePool.Name) {
errs = append(errs, bosherr.Errorf("resource_pools[%d].name must be provided", idx))
}
if v.isBlank(resourcePool.Network) {
errs = append(errs, bosherr.Errorf("resource_pools[%d].network must be provided", idx))
} else if _, ok := v.networkNames(deploymentManifest)[resourcePool.Network]; !ok {
errs = append(errs, bosherr.Errorf("resource_pools[%d].network must be the name of a network", idx))
}
if v.isBlank(resourcePool.Stemcell.URL) {
errs = append(errs, bosherr.Errorf("resource_pools[%d].stemcell.url must be provided", idx))
}
matched, err := regexp.MatchString("^(file|http|https)://", resourcePool.Stemcell.URL)
if err != nil || !matched {
errs = append(errs, bosherr.Errorf("resource_pools[%d].stemcell.url must be a valid URL (file:// or http(s)://)", idx))
}
if strings.HasPrefix(resourcePool.Stemcell.URL, "http") && v.isBlank(resourcePool.Stemcell.SHA1) {
errs = append(errs, bosherr.Errorf("resource_pools[%d].stemcell.sha1 must be provided for http URL", idx))
}
}
for idx, diskPool := range deploymentManifest.DiskPools {
if v.isBlank(diskPool.Name) {
errs = append(errs, bosherr.Errorf("disk_pools[%d].name must be provided", idx))
}
if diskPool.DiskSize <= 0 {
errs = append(errs, bosherr.Errorf("disk_pools[%d].disk_size must be > 0", idx))
}
}
if len(deploymentManifest.Jobs) > 1 {
errs = append(errs, bosherr.Error("jobs must be of size 1"))
}
for idx, job := range deploymentManifest.Jobs {
if v.isBlank(job.Name) {
errs = append(errs, bosherr.Errorf("jobs[%d].name must be provided", idx))
}
if job.PersistentDisk < 0 {
errs = append(errs, bosherr.Errorf("jobs[%d].persistent_disk must be >= 0", idx))
}
if job.PersistentDiskPool != "" {
if _, ok := v.diskPoolNames(deploymentManifest)[job.PersistentDiskPool]; !ok {
errs = append(errs, bosherr.Errorf("jobs[%d].persistent_disk_pool must be the name of a disk pool", idx))
}
}
if job.Instances < 0 {
errs = append(errs, bosherr.Errorf("jobs[%d].instances must be >= 0", idx))
}
if len(job.Networks) == 0 {
errs = append(errs, bosherr.Errorf("jobs[%d].networks must be a non-empty array", idx))
}
if v.isBlank(job.ResourcePool) {
errs = append(errs, bosherr.Errorf("jobs[%d].resource_pool must be provided", idx))
} else {
if _, ok := v.resourcePoolNames(deploymentManifest)[job.ResourcePool]; !ok {
errs = append(errs, bosherr.Errorf("jobs[%d].resource_pool must be the name of a resource pool", idx))
}
}
errs = append(errs, v.validateJobNetworks(job.Networks, deploymentManifest.Networks, idx)...)
if job.Lifecycle != "" && job.Lifecycle != JobLifecycleService {
errs = append(errs, bosherr.Errorf("jobs[%d].lifecycle must be 'service' ('%s' not supported)", idx, job.Lifecycle))
}
templateNames := map[string]struct{}{}
for templateIdx, template := range job.Templates {
if v.isBlank(template.Name) {
errs = append(errs, bosherr.Errorf("jobs[%d].templates[%d].name must be provided", idx, templateIdx))
}
if _, found := templateNames[template.Name]; found {
errs = append(errs, bosherr.Errorf("jobs[%d].templates[%d].name '%s' must be unique", idx, templateIdx, template.Name))
}
templateNames[template.Name] = struct{}{}
if v.isBlank(template.Release) {
errs = append(errs, bosherr.Errorf("jobs[%d].templates[%d].release must be provided", idx, templateIdx))
} else {
_, found := releaseSetManifest.FindByName(template.Release)
if !found {
errs = append(errs, bosherr.Errorf("jobs[%d].templates[%d].release '%s' must refer to release in releases", idx, templateIdx, template.Release))
}
}
}
}
if len(errs) > 0 {
//.........这里部分代码省略.........