本文整理匯總了Golang中github.com/cloudfoundry/bosh-init/deployment/manifest.Manifest類的典型用法代碼示例。如果您正苦於以下問題:Golang Manifest類的具體用法?Golang Manifest怎麽用?Golang Manifest使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Manifest類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: 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
}
示例2: BuildInitialState
func (b *builder) BuildInitialState(jobName string, instanceID int, deploymentManifest bideplmanifest.Manifest) (State, error) {
deploymentJob, found := deploymentManifest.FindJobByName(jobName)
if !found {
return nil, bosherr.Errorf("Job '%s' not found in deployment manifest", jobName)
}
networkInterfaces, err := deploymentManifest.NetworkInterfaces(deploymentJob.Name)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Finding networks for job '%s", jobName)
}
// convert map to array
networkRefs := make([]NetworkRef, 0, len(networkInterfaces))
for networkName, networkInterface := range networkInterfaces {
genericMap := make(map[string]interface{}, len(networkInterface))
for k, v := range networkInterface {
genericMap[k] = v
}
networkRefs = append(networkRefs, NetworkRef{
Name: networkName,
Interface: genericMap,
})
}
return &state{
deploymentName: deploymentManifest.Name,
name: jobName,
id: instanceID,
networks: networkRefs,
}, nil
}
示例3: UpdateDisks
func (i *instance) UpdateDisks(deploymentManifest bideplmanifest.Manifest, stage biui.Stage) ([]bidisk.Disk, error) {
diskPool, err := deploymentManifest.DiskPool(i.jobName)
if err != nil {
return []bidisk.Disk{}, bosherr.WrapError(err, "Getting disk pool")
}
disks, err := i.vm.UpdateDisks(diskPool, stage)
if err != nil {
return disks, bosherr.WrapError(err, "Updating disks")
}
return disks, nil
}
示例4: Create
func (m *manager) Create(stemcell bistemcell.CloudStemcell, deploymentManifest bideplmanifest.Manifest) (VM, error) {
jobName := deploymentManifest.JobName()
networkInterfaces, err := deploymentManifest.NetworkInterfaces(jobName)
m.logger.Debug(m.logTag, "Creating VM with network interfaces: %#v", networkInterfaces)
if err != nil {
return nil, bosherr.WrapError(err, "Getting network spec")
}
resourcePool, err := deploymentManifest.ResourcePool(jobName)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Getting resource pool for job '%s'", jobName)
}
agentID, err := m.uuidGenerator.Generate()
if err != nil {
return nil, bosherr.WrapError(err, "Generating agent ID")
}
cid, err := m.createAndRecordVm(agentID, stemcell, resourcePool, networkInterfaces)
if err != nil {
return nil, err
}
metadata := bicloud.VMMetadata{
Deployment: deploymentManifest.Name,
Job: deploymentManifest.JobName(),
Index: "0",
Director: "bosh-init",
}
err = m.cloud.SetVMMetadata(cid, metadata)
if err != nil {
cloudErr, ok := err.(bicloud.Error)
if ok && cloudErr.Type() == bicloud.NotImplementedError {
//ignore it
} else {
return nil, bosherr.WrapErrorf(err, "Setting VM metadata to %s", metadata)
}
}
vm := NewVM(
cid,
m.vmRepo,
m.stemcellRepo,
m.diskDeployer,
m.agentClient,
m.cloud,
m.fs,
m.logger,
)
return vm, nil
}
示例5: Build
func (b *builder) Build(jobName string, instanceID int, deploymentManifest bideplmanifest.Manifest, stage biui.Stage) (State, error) {
deploymentJob, found := deploymentManifest.FindJobByName(jobName)
if !found {
return nil, bosherr.Errorf("Job '%s' not found in deployment manifest", jobName)
}
releaseJobs, err := b.resolveJobs(deploymentJob.Templates)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Resolving jobs for instance '%s/%d'", jobName, instanceID)
}
renderedJobTemplates, err := b.renderJobTemplates(releaseJobs, deploymentJob.Properties, deploymentManifest.Properties, deploymentManifest.Name, stage)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Rendering job templates for instance '%s/%d'", jobName, instanceID)
}
compiledPackageRefs, err := b.jobDependencyCompiler.Compile(releaseJobs, stage)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Compiling job package dependencies for instance '%s/%d'", jobName, instanceID)
}
networkInterfaces, err := deploymentManifest.NetworkInterfaces(deploymentJob.Name)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Finding networks for job '%s", jobName)
}
// convert map to array
networkRefs := make([]NetworkRef, 0, len(networkInterfaces))
for networkName, networkInterface := range networkInterfaces {
networkRefs = append(networkRefs, NetworkRef{
Name: networkName,
Interface: networkInterface,
})
}
compiledDeploymentPackageRefs := make([]PackageRef, len(compiledPackageRefs), len(compiledPackageRefs))
for i, compiledPackageRef := range compiledPackageRefs {
compiledDeploymentPackageRefs[i] = PackageRef{
Name: compiledPackageRef.Name,
Version: compiledPackageRef.Version,
Archive: BlobRef{
BlobstoreID: compiledPackageRef.BlobstoreID,
SHA1: compiledPackageRef.SHA1,
},
}
}
// convert array to array
renderedJobRefs := make([]JobRef, len(releaseJobs), len(releaseJobs))
for i, releaseJob := range releaseJobs {
renderedJobRefs[i] = JobRef{
Name: releaseJob.Name,
Version: releaseJob.Fingerprint,
}
}
renderedJobListArchiveBlobRef := BlobRef{
BlobstoreID: renderedJobTemplates.BlobstoreID,
SHA1: renderedJobTemplates.Archive.SHA1(),
}
return &state{
deploymentName: deploymentManifest.Name,
name: jobName,
id: instanceID,
networks: networkRefs,
compiledPackages: compiledDeploymentPackageRefs,
renderedJobs: renderedJobRefs,
renderedJobListArchive: renderedJobListArchiveBlobRef,
hash: renderedJobTemplates.Archive.Fingerprint(),
}, nil
}
示例6: PrepareDeployment
func (c *DeploymentPreparer) PrepareDeployment(stage biui.Stage) (err error) {
c.ui.PrintLinef("Deployment state: '%s'", c.deploymentStateService.Path())
if !c.deploymentStateService.Exists() {
migrated, err := c.legacyDeploymentStateMigrator.MigrateIfExists(biconfig.LegacyDeploymentStatePath(c.deploymentManifestPath))
if err != nil {
return bosherr.WrapError(err, "Migrating legacy deployment state file")
}
if migrated {
c.ui.PrintLinef("Migrated legacy deployments file: '%s'", biconfig.LegacyDeploymentStatePath(c.deploymentManifestPath))
}
}
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 (
extractedStemcell bistemcell.ExtractedStemcell
deploymentManifest bideplmanifest.Manifest
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
}
for _, releaseRef := range releaseSetManifest.Releases {
err = c.releaseFetcher.DownloadAndExtract(releaseRef, stage)
if err != nil {
return err
}
}
err := c.cpiInstaller.ValidateCpiRelease(installationManifest, stage)
if err != nil {
return err
}
deploymentManifest, err = c.deploymentManifestParser.GetDeploymentManifest(c.deploymentManifestPath, releaseSetManifest, stage)
if err != nil {
return err
}
extractedStemcell, err = c.stemcellFetcher.GetStemcell(deploymentManifest, stage)
nonCpiReleasesMap, _ := deploymentManifest.GetListOfTemplateReleases()
delete(nonCpiReleasesMap, installationManifest.Template.Release) // remove CPI release from nonCpiReleasesMap
for _, release := range c.releaseManager.List() {
if _, ok := nonCpiReleasesMap[release.Name()]; ok {
if release.IsCompiled() {
compilationOsAndVersion := release.Packages()[0].Stemcell
if strings.ToLower(compilationOsAndVersion) != strings.ToLower(extractedStemcell.OsAndVersion()) {
return bosherr.Errorf("OS/Version mismatch between deployment stemcell and compiled package stemcell for release '%s'", release.Name())
}
}
} else {
// It is a CPI release, check if it is compiled
if release.IsCompiled() {
return bosherr.Errorf("CPI is not allowed to be a compiled release. The provided CPI release '%s' is compiled", release.Name())
}
}
}
return err
})
if err != nil {
return err
}
defer func() {
deleteErr := extractedStemcell.Delete()
if deleteErr != nil {
c.logger.Warn(c.logTag, "Failed to delete extracted stemcell: %s", deleteErr.Error())
}
}()
isDeployed, err := c.deploymentRecord.IsDeployed(c.deploymentManifestPath, c.releaseManager.List(), extractedStemcell)
if err != nil {
return bosherr.WrapError(err, "Checking if deployment has changed")
//.........這裏部分代碼省略.........
示例7: Create
func (m *manager) Create(stemcell bistemcell.CloudStemcell, deploymentManifest bideplmanifest.Manifest) (VM, error) {
jobName := deploymentManifest.JobName()
networkInterfaces, err := deploymentManifest.NetworkInterfaces(jobName)
m.logger.Debug(m.logTag, "Creating VM with network interfaces: %#v", networkInterfaces)
if err != nil {
return nil, bosherr.WrapError(err, "Getting network spec")
}
resourcePool, err := deploymentManifest.ResourcePool(jobName)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Getting resource pool for job '%s'", jobName)
}
agentID, found, err := m.vmRepo.FindCurrentAgentId()
if err != nil {
return nil, bosherr.WrapError(err, "Finding currently agent id of deployed vm")
}
if !found {
agentID, err = m.uuidGenerator.Generate()
if err != nil {
return nil, bosherr.WrapError(err, "Generating agent ID")
}
}
currentIP, found, err := m.vmRepo.FindCurrentIP()
if err != nil {
return nil, bosherr.WrapError(err, "Finding currently IP address of deployed vm")
}
ifaceMap := map[string]biproperty.Map{}
if found {
for networkName, networkInterface := range networkInterfaces {
networkInterface["ip"] = currentIP
ifaceMap[networkName] = networkInterface
}
} else {
ifaceMap = networkInterfaces
}
cid, err := m.createAndRecordVm(agentID, stemcell, resourcePool, ifaceMap)
if err != nil {
return nil, err
}
metadata := bicloud.VMMetadata{
Deployment: deploymentManifest.Name,
Job: deploymentManifest.JobName(),
Index: "0",
Director: "bosh-init",
}
err = m.cloud.SetVMMetadata(cid, metadata)
if err != nil {
cloudErr, ok := err.(bicloud.Error)
if ok && cloudErr.Type() == bicloud.NotImplementedError {
//ignore it
} else {
return nil, bosherr.WrapErrorf(err, "Setting VM metadata to %s", metadata)
}
}
vm := NewVM(
cid,
m.vmRepo,
m.stemcellRepo,
m.diskDeployer,
m.agentClient,
m.cloud,
m.fs,
m.logger,
)
return vm, nil
}
示例8: Build
func (b *builder) Build(jobName string, instanceID int, deploymentManifest bideplmanifest.Manifest, stage biui.Stage, agentState agentclient.AgentState) (State, error) {
initialState, err := b.BuildInitialState(jobName, instanceID, deploymentManifest)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Building initial state '%s", jobName)
}
deploymentJob, found := deploymentManifest.FindJobByName(jobName)
if !found {
return nil, bosherr.Errorf("Job '%s' not found in deployment manifest", jobName)
}
releaseJobs, err := b.resolveJobs(deploymentJob.Templates)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Resolving jobs for instance '%s/%d'", jobName, instanceID)
}
releaseJobProperties := make(map[string]*biproperty.Map)
for _, releaseJob := range deploymentJob.Templates {
releaseJobProperties[releaseJob.Name] = releaseJob.Properties
}
defaultAddress, err := b.defaultAddress(initialState.NetworkInterfaces(), agentState)
if err != nil {
return nil, err
}
renderedJobTemplates, err := b.renderJobTemplates(releaseJobs, releaseJobProperties, deploymentJob.Properties, deploymentManifest.Properties, deploymentManifest.Name, defaultAddress, stage)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Rendering job templates for instance '%s/%d'", jobName, instanceID)
}
compiledPackageRefs, err := b.jobDependencyCompiler.Compile(releaseJobs, stage)
if err != nil {
return nil, bosherr.WrapErrorf(err, "Compiling job package dependencies for instance '%s/%d'", jobName, instanceID)
}
compiledDeploymentPackageRefs := make([]PackageRef, len(compiledPackageRefs), len(compiledPackageRefs))
for i, compiledPackageRef := range compiledPackageRefs {
compiledDeploymentPackageRefs[i] = PackageRef{
Name: compiledPackageRef.Name,
Version: compiledPackageRef.Version,
Archive: BlobRef{
BlobstoreID: compiledPackageRef.BlobstoreID,
SHA1: compiledPackageRef.SHA1,
},
}
}
// convert array to array
renderedJobRefs := make([]JobRef, len(releaseJobs), len(releaseJobs))
for i, releaseJob := range releaseJobs {
renderedJobRefs[i] = JobRef{
Name: releaseJob.Name,
Version: releaseJob.Fingerprint,
}
}
renderedJobListArchiveBlobRef := BlobRef{
BlobstoreID: renderedJobTemplates.BlobstoreID,
SHA1: renderedJobTemplates.Archive.SHA1(),
}
return &state{
deploymentName: deploymentManifest.Name,
name: jobName,
id: instanceID,
networks: initialState.NetworkInterfaces(),
compiledPackages: compiledDeploymentPackageRefs,
renderedJobs: renderedJobRefs,
renderedJobListArchive: renderedJobListArchiveBlobRef,
hash: renderedJobTemplates.Archive.Fingerprint(),
}, nil
}
示例9: describeBuilder
func describeBuilder() {
var mockCtrl *gomock.Controller
BeforeEach(func() {
mockCtrl = gomock.NewController(GinkgoT())
})
AfterEach(func() {
mockCtrl.Finish()
})
var (
logger boshlog.Logger
mockReleaseJobResolver *mock_deployment_release.MockJobResolver
mockDependencyCompiler *mock_state_job.MockDependencyCompiler
mockJobListRenderer *mock_template.MockJobListRenderer
mockCompressor *mock_template.MockRenderedJobListCompressor
mockBlobstore *mock_blobstore.MockBlobstore
stateBuilder Builder
)
BeforeEach(func() {
logger = boshlog.NewLogger(boshlog.LevelNone)
mockReleaseJobResolver = mock_deployment_release.NewMockJobResolver(mockCtrl)
mockDependencyCompiler = mock_state_job.NewMockDependencyCompiler(mockCtrl)
mockJobListRenderer = mock_template.NewMockJobListRenderer(mockCtrl)
mockCompressor = mock_template.NewMockRenderedJobListCompressor(mockCtrl)
mockBlobstore = mock_blobstore.NewMockBlobstore(mockCtrl)
})
Describe("BuildInitialState", func() {
var (
jobName string
instanceID int
deploymentManifest bideplmanifest.Manifest
)
BeforeEach(func() {
jobName = "fake-deployment-job-name"
instanceID = 0
deploymentManifest = bideplmanifest.Manifest{
Name: "fake-deployment-name",
Jobs: []bideplmanifest.Job{
{
Name: "fake-deployment-job-name",
Networks: []bideplmanifest.JobNetwork{
{
Name: "fake-network-name",
StaticIPs: []string{"1.2.3.4"},
},
},
Templates: []bideplmanifest.ReleaseJobRef{
{
Name: "fake-release-job-name",
Release: "fake-release-name",
Properties: &biproperty.Map{
"fake-template-property": "fake-template-property-value",
},
},
},
Properties: biproperty.Map{
"fake-job-property": "fake-job-property-value",
},
},
},
Networks: []bideplmanifest.Network{
{
Name: "fake-network-name",
Type: "fake-network-type",
CloudProperties: biproperty.Map{
"fake-network-cloud-property": "fake-network-cloud-property-value",
},
},
},
Properties: biproperty.Map{
"fake-job-property": "fake-global-property-value", //overridden by job property value
},
}
stateBuilder = NewBuilder(
mockReleaseJobResolver,
mockDependencyCompiler,
mockJobListRenderer,
mockCompressor,
mockBlobstore,
logger,
)
})
It("generates an initial apply spec", func() {
state, err := stateBuilder.BuildInitialState(jobName, instanceID, deploymentManifest)
Expect(err).ToNot(HaveOccurred())
Expect(state.ToApplySpec()).To(Equal(bias.ApplySpec{
Deployment: "fake-deployment-name",
Index: 0,
//.........這裏部分代碼省略.........