本文整理匯總了Golang中github.com/cloudfoundry-incubator/bbs/models.Serial函數的典型用法代碼示例。如果您正苦於以下問題:Golang Serial函數的具體用法?Golang Serial怎麽用?Golang Serial使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Serial函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: NewValidDesiredLRP
func NewValidDesiredLRP(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
CachedDependencies: []*models.CachedDependency{
{Name: "app bits", From: "blobstore.com/bits/app-bits", To: "/usr/local/app", CacheKey: "cache-key", LogSource: "log-source"},
{Name: "app bits with checksum", From: "blobstore.com/bits/app-bits-checksum", To: "/usr/local/app-checksum", CacheKey: "cache-key", LogSource: "log-source", ChecksumAlgorithm: "md5", ChecksumValue: "checksum-value"},
},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
StartTimeoutMs: 15000,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
Network: &models.Network{
Properties: map[string]string{
"some-key": "some-value",
"some-other-key": "some-other-value",
},
},
EgressRules: []*models.SecurityGroupRule{{
Protocol: models.TCPProtocol,
Destinations: []string{"1.1.1.1/32", "2.2.2.2/32"},
PortRange: &models.PortRange{Start: 10, End: 16000},
}},
ModificationTag: &modTag,
LegacyDownloadUser: "legacy-dan",
TrustedSystemCertificatesPath: "/etc/somepath",
VolumeMounts: []*models.VolumeMount{
{
Driver: "my-driver",
VolumeId: "my-volume",
ContainerPath: "/mnt/mypath",
Mode: models.BindMountMode_RO,
},
},
}
err := desiredLRP.Validate()
Expect(err).NotTo(HaveOccurred())
return desiredLRP
}
示例2: NewValidDesiredLRP
func NewValidDesiredLRP(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
StartTimeout: 15,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
EgressRules: []*models.SecurityGroupRule{{
Protocol: models.TCPProtocol,
Destinations: []string{"1.1.1.1/32", "2.2.2.2/32"},
PortRange: &models.PortRange{Start: 10, End: 16000},
}},
ModificationTag: &modTag,
}
err := desiredLRP.Validate()
Expect(err).NotTo(HaveOccurred())
return desiredLRP
}
示例3:
Context("once the state has been synced with CC", func() {
JustBeforeEach(func() {
Eventually(func() ([]*models.DesiredLRP, error) { return bbsClient.DesiredLRPs(models.DesiredLRPFilter{}) }, 5).Should(HaveLen(3))
})
It("it (adds), (updates), and (removes extra) LRPs", func() {
defaultNofile := recipebuilder.DefaultFileDescriptorLimit
nofile := uint64(16)
expectedSetupActions1 := models.Serial(
&models.DownloadAction{
From: "http://file-server.com/v1/static/some-health-check.tar.gz",
To: "/tmp/lifecycle",
CacheKey: "buildpack-some-stack-lifecycle",
User: "vcap",
},
&models.DownloadAction{
From: "source-url-1",
To: ".",
CacheKey: "droplets-process-guid-1",
User: "vcap",
},
)
expectedSetupActions2 := models.Serial(
&models.DownloadAction{
From: "http://file-server.com/v1/static/some-health-check.tar.gz",
To: "/tmp/lifecycle",
CacheKey: "buildpack-some-stack-lifecycle",
User: "vcap",
},
&models.DownloadAction{
示例4: BuildRecipe
//.........這裏部分代碼省略.........
Artifact: "build artifacts cache",
From: downloadURL.String(),
To: builderConfig.BuildArtifactsCacheDir(),
User: "vcap",
},
),
)
downloadNames = append(downloadNames, "build artifacts cache")
}
downloadMsg := downloadMsgPrefix + fmt.Sprintf("Downloading %s...", strings.Join(downloadNames, ", "))
actions = append(actions, models.EmitProgressFor(models.Parallel(downloadActions...), downloadMsg, "Downloaded buildpacks", "Downloading buildpacks failed"))
fileDescriptorLimit := uint64(request.FileDescriptors)
//Run Builder
runEnv := append(request.Environment, &models.EnvironmentVariable{"CF_STACK", lifecycleData.Stack})
actions = append(
actions,
models.EmitProgressFor(
&models.RunAction{
User: "vcap",
Path: builderConfig.Path(),
Args: builderConfig.Args(),
Env: runEnv,
ResourceLimits: &models.ResourceLimits{
Nofile: &fileDescriptorLimit,
},
},
"Staging...",
"Staging complete",
"Staging failed",
),
)
//Upload Droplet
uploadActions := []models.ActionInterface{}
uploadNames := []string{}
uploadURL, err := backend.dropletUploadURL(request, lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
uploadActions = append(
uploadActions,
&models.UploadAction{
Artifact: "droplet",
From: builderConfig.OutputDroplet(), // get the droplet
To: addTimeoutParamToURL(*uploadURL, timeout).String(),
User: "vcap",
},
)
uploadNames = append(uploadNames, "droplet")
//Upload Buildpack Artifacts Cache
uploadURL, err = backend.buildArtifactsUploadURL(request, lifecycleData)
if err != nil {
return &models.TaskDefinition{}, "", "", err
}
uploadActions = append(uploadActions,
models.Try(
&models.UploadAction{
Artifact: "build artifacts cache",
From: builderConfig.OutputBuildArtifactsCache(), // get the compressed build artifacts cache
To: addTimeoutParamToURL(*uploadURL, timeout).String(),
User: "vcap",
},
),
)
uploadNames = append(uploadNames, "build artifacts cache")
uploadMsg := fmt.Sprintf("Uploading %s...", strings.Join(uploadNames, ", "))
actions = append(actions, models.EmitProgressFor(models.Parallel(uploadActions...), uploadMsg, "Uploading complete", "Uploading failed"))
annotationJson, _ := json.Marshal(cc_messages.StagingTaskAnnotation{
Lifecycle: TraditionalLifecycleName,
CompletionCallback: request.CompletionCallback,
})
taskDefinition := &models.TaskDefinition{
RootFs: models.PreloadedRootFS(lifecycleData.Stack),
ResultFile: builderConfig.OutputMetadata(),
MemoryMb: int32(request.MemoryMB),
DiskMb: int32(request.DiskMB),
CpuWeight: uint32(StagingTaskCpuWeight),
Action: models.WrapAction(models.Timeout(models.Serial(actions...), timeout)),
LogGuid: request.LogGuid,
LogSource: TaskLogSource,
CompletionCallbackUrl: backend.config.CallbackURL(stagingGuid),
EgressRules: request.EgressRules,
Annotation: string(annotationJson),
Privileged: true,
EnvironmentVariables: []*models.EnvironmentVariable{{"LANG", DefaultLANG}},
}
logger.Debug("staging-task-request")
return taskDefinition, stagingGuid, backend.config.TaskDomain, nil
}
示例5: Build
//.........這裏部分代碼省略.........
desiredApp.StartCommand,
desiredApp.ExecutionMetadata,
),
Env: createLrpEnv(desiredApp.Environment, desiredAppPorts[0]),
LogSource: AppLogSource,
ResourceLimits: &models.ResourceLimits{
Nofile: &numFiles,
},
})
desiredAppRoutingInfo, err := helpers.CCRouteInfoToRoutes(desiredApp.RoutingInfo, desiredAppPorts)
if err != nil {
buildLogger.Error("marshaling-cc-route-info-failed", err)
return nil, err
}
if desiredApp.AllowSSH {
hostKeyPair, err := b.config.KeyFactory.NewKeyPair(1024)
if err != nil {
buildLogger.Error("new-host-key-pair-failed", err)
return nil, err
}
userKeyPair, err := b.config.KeyFactory.NewKeyPair(1024)
if err != nil {
buildLogger.Error("new-user-key-pair-failed", err)
return nil, err
}
actions = append(actions, &models.RunAction{
User: "vcap",
Path: "/tmp/lifecycle/diego-sshd",
Args: []string{
"-address=" + fmt.Sprintf("0.0.0.0:%d", DefaultSSHPort),
"-hostKey=" + hostKeyPair.PEMEncodedPrivateKey(),
"-authorizedKey=" + userKeyPair.AuthorizedKey(),
"-inheritDaemonEnv",
"-logLevel=fatal",
},
Env: createLrpEnv(desiredApp.Environment, desiredAppPorts[0]),
ResourceLimits: &models.ResourceLimits{
Nofile: &numFiles,
},
})
sshRoutePayload, err := json.Marshal(ssh_routes.SSHRoute{
ContainerPort: 2222,
PrivateKey: userKeyPair.PEMEncodedPrivateKey(),
HostFingerprint: hostKeyPair.Fingerprint(),
})
if err != nil {
buildLogger.Error("marshaling-ssh-route-failed", err)
return nil, err
}
sshRouteMessage := json.RawMessage(sshRoutePayload)
desiredAppRoutingInfo[ssh_routes.DIEGO_SSH] = &sshRouteMessage
desiredAppPorts = append(desiredAppPorts, DefaultSSHPort)
}
setupAction := models.Serial(setup...)
actionAction := models.Codependent(actions...)
return &models.DesiredLRP{
Privileged: true,
Domain: cc_messages.AppLRPDomain,
ProcessGuid: lrpGuid,
Instances: int32(desiredApp.NumInstances),
Routes: &desiredAppRoutingInfo,
Annotation: desiredApp.ETag,
CpuWeight: cpuWeight(desiredApp.MemoryMB),
MemoryMb: int32(desiredApp.MemoryMB),
DiskMb: int32(desiredApp.DiskMB),
Ports: desiredAppPorts,
RootFs: rootFSPath,
LogGuid: desiredApp.LogGuid,
LogSource: LRPLogSource,
MetricsGuid: desiredApp.LogGuid,
EnvironmentVariables: containerEnvVars,
CachedDependencies: cachedDependencies,
Setup: models.WrapAction(setupAction),
Action: models.WrapAction(actionAction),
Monitor: models.WrapAction(monitor),
StartTimeout: uint32(desiredApp.HealthCheckTimeoutInSeconds),
EgressRules: desiredApp.EgressRules,
LegacyDownloadUser: "vcap",
}, nil
}
示例6: BuildTask
func (b *BuildpackRecipeBuilder) BuildTask(task *cc_messages.TaskRequestFromCC) (*models.TaskDefinition, error) {
logger := b.logger.Session("build-task", lager.Data{"request": task})
if task.DropletUri == "" {
logger.Error("missing-droplet-source", ErrDropletSourceMissing)
return nil, ErrDropletSourceMissing
}
if task.DockerPath != "" {
logger.Error("invalid-docker-path", ErrMultipleAppSources)
return nil, ErrMultipleAppSources
}
downloadAction := &models.DownloadAction{
From: task.DropletUri,
To: ".",
CacheKey: "",
User: "vcap",
}
runAction := &models.RunAction{
User: "vcap",
Path: "/tmp/lifecycle/launcher",
Args: []string{"app", task.Command, ""},
Env: task.EnvironmentVariables,
LogSource: "TASK",
ResourceLimits: &models.ResourceLimits{},
}
var lifecycle = "buildpack/" + task.RootFs
lifecyclePath, ok := b.config.Lifecycles[lifecycle]
if !ok {
logger.Error("unknown-lifecycle", ErrNoLifecycleDefined, lager.Data{
"lifecycle": lifecycle,
})
return nil, ErrNoLifecycleDefined
}
lifecycleURL := lifecycleDownloadURL(lifecyclePath, b.config.FileServerURL)
cachedDependencies := []*models.CachedDependency{
&models.CachedDependency{
From: lifecycleURL,
To: "/tmp/lifecycle",
CacheKey: fmt.Sprintf("%s-lifecycle", strings.Replace(lifecycle, "/", "-", 1)),
},
}
rootFSPath := models.PreloadedRootFS(task.RootFs)
taskDefinition := &models.TaskDefinition{
Privileged: true,
LogGuid: task.LogGuid,
MemoryMb: int32(task.MemoryMb),
DiskMb: int32(task.DiskMb),
CpuWeight: cpuWeight(task.MemoryMb),
EnvironmentVariables: task.EnvironmentVariables,
RootFs: rootFSPath,
CompletionCallbackUrl: task.CompletionCallbackUrl,
Action: models.WrapAction(models.Serial(
downloadAction,
runAction,
)),
CachedDependencies: cachedDependencies,
EgressRules: task.EgressRules,
LegacyDownloadUser: "vcap",
}
return taskDefinition, nil
}
示例7:
"resource_limits": {},
"path": "echo",
"user": "me"
}
}
]
}`,
models.Serial(
&models.Action{
DownloadAction: &models.DownloadAction{
From: "web_location",
To: "local_location",
CacheKey: "elephant",
User: "someone",
},
},
&models.Action{
RunAction: &models.RunAction{
Path: "echo",
User: "me",
ResourceLimits: &models.ResourceLimits{},
},
},
),
)
itSerializesAndDeserializes(
`{}`,
models.WrapAction(&models.SerialAction{}),
)
示例8:
}
defaultNofile := recipebuilder.DefaultFileDescriptorLimit
nofile := uint64(32)
expectedCachedDependencies := []*models.CachedDependency{
{
From: "http://file-server.com/v1/static/some-health-check.tar.gz",
To: "/tmp/lifecycle",
CacheKey: "buildpack-some-stack-lifecycle",
},
}
expectedSetupActions := models.Serial(
&models.DownloadAction{
From: "http://the-droplet.uri.com",
To: ".",
CacheKey: "droplets-the-guid",
User: "vcap",
},
)
desiredLrpWithoutModificationTag := desiredLrps[0]
desiredLrpWithoutModificationTag.ModificationTag = nil
Expect(desiredLrpWithoutModificationTag).To(Equal(&models.DesiredLRP{
ProcessGuid: "the-guid",
Domain: "cf-apps",
Instances: 3,
RootFs: models.PreloadedRootFS("some-stack"),
StartTimeout: 123456,
EnvironmentVariables: []*models.EnvironmentVariable{
{Name: "LANG", Value: recipebuilder.DefaultLANG},
},
CachedDependencies: expectedCachedDependencies,
示例9:
Expect(desiredLRP.DiskMb).To(BeEquivalentTo(512))
Expect(desiredLRP.Ports).To(Equal([]uint32{8080}))
Expect(desiredLRP.Privileged).To(BeTrue())
Expect(desiredLRP.StartTimeout).To(BeEquivalentTo(123456))
Expect(desiredLRP.LogGuid).To(Equal("the-log-id"))
Expect(desiredLRP.LogSource).To(Equal("CELL"))
Expect(desiredLRP.EnvironmentVariables).To(ConsistOf(&models.EnvironmentVariable{"LANG", recipebuilder.DefaultLANG}))
Expect(desiredLRP.MetricsGuid).To(Equal("the-log-id"))
expectedSetup := models.Serial(
&models.DownloadAction{
From: "http://the-droplet.uri.com",
To: ".",
CacheKey: "droplets-the-app-guid-the-app-version",
User: "vcap",
},
)
Expect(desiredLRP.Setup.GetValue()).To(Equal(expectedSetup))
expectedCacheDependencies := []*models.CachedDependency{
&models.CachedDependency{
From: "http://file-server.com/v1/static/some-lifecycle.tgz",
To: "/tmp/lifecycle",
CacheKey: "buildpack-some-stack-lifecycle",
},
}
Expect(desiredLRP.CachedDependencies).To(BeEquivalentTo(expectedCacheDependencies))
Expect(desiredLRP.LegacyDownloadUser).To(Equal("vcap"))
示例10:
Expect(desiredLRP.DiskMb).To(BeEquivalentTo(512))
Expect(desiredLRP.Ports).To(Equal([]uint32{8080}))
Expect(desiredLRP.Privileged).To(BeFalse())
Expect(desiredLRP.StartTimeout).To(BeEquivalentTo(123456))
Expect(desiredLRP.LogGuid).To(Equal("the-log-id"))
Expect(desiredLRP.LogSource).To(Equal("CELL"))
Expect(desiredLRP.EnvironmentVariables).NotTo(ConsistOf(&models.EnvironmentVariable{"LANG", recipebuilder.DefaultLANG}))
Expect(desiredLRP.MetricsGuid).To(Equal("the-log-id"))
expectedSetup := models.Serial(
&models.DownloadAction{
From: "http://file-server.com/v1/static/the/docker/lifecycle/path.tgz",
To: "/tmp/lifecycle",
CacheKey: "docker-lifecycle",
User: "root",
},
)
Expect(desiredLRP.Setup.GetValue()).To(Equal(expectedSetup))
parallelRunAction := desiredLRP.Action.CodependentAction
Expect(parallelRunAction.Actions).To(HaveLen(1))
runAction := parallelRunAction.Actions[0].RunAction
Expect(desiredLRP.Monitor.GetValue()).To(Equal(models.Timeout(
&models.ParallelAction{
Actions: []*models.Action{
&models.Action{
RunAction: &models.RunAction{
示例11:
}))
actions := actionsFromTaskDef(taskDef)
Expect(actions).To(Equal(models.Serial(
downloadAppAction,
models.EmitProgressFor(
models.Parallel(
downloadBuilderAction,
downloadFirstBuildpackAction,
downloadSecondBuildpackAction,
downloadBuildArtifactsAction,
),
"No buildpack specified; fetching standard buildpacks to detect and build your application.\n"+
"Downloading buildpacks (zfirst, asecond), build artifacts cache...",
"Downloaded buildpacks",
"Downloading buildpacks failed",
),
runAction,
models.EmitProgressFor(
models.Parallel(
uploadDropletAction,
uploadBuildArtifactsAction,
),
"Uploading droplet, build artifacts cache...",
"Uploading complete",
"Uploading failed",
),
).Actions))
Expect(taskDef.MemoryMb).To(Equal(memoryMb))
Expect(taskDef.DiskMb).To(Equal(diskMb))
示例12:
)
BeforeEach(func() {
processGuid = "process-guid-1"
desiredLRP = model_helpers.NewValidDesiredLRP(processGuid)
desiredLRP.DeprecatedStartTimeoutS = 15
desiredLRP.Action = models.WrapAction(&models.TimeoutAction{Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
DeprecatedTimeoutNs: 4 * int64(time.Second),
})
desiredLRP.Setup = models.WrapAction(&models.TimeoutAction{Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
DeprecatedTimeoutNs: 7 * int64(time.Second),
})
desiredLRP.Monitor = models.WrapAction(models.EmitProgressFor(
&models.TimeoutAction{
Action: models.WrapAction(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"})))),
DeprecatedTimeoutNs: 10 * int64(time.Second),
},
"start-message",
"success-message",
"failure-message",
))
})
JustBeforeEach(func() {
schedulingInfo, runInfo := desiredLRP.CreateComponents(fakeClock.Now())
runInfo.DeprecatedStartTimeoutS = 15
_, err := json.Marshal(desiredLRP.Routes)
Expect(err).NotTo(HaveOccurred())
示例13:
})
var newValidDesiredLRP = func(guid string) *models.DesiredLRP {
myRouterJSON := json.RawMessage(`{"foo":"bar"}`)
modTag := models.NewModificationTag("epoch", 0)
desiredLRP := &models.DesiredLRP{
ProcessGuid: guid,
Domain: "some-domain",
RootFs: "some:rootfs",
Instances: 1,
EnvironmentVariables: []*models.EnvironmentVariable{{Name: "FOO", Value: "bar"}},
Setup: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
Action: models.WrapAction(&models.RunAction{Path: "ls", User: "name"}),
DeprecatedStartTimeoutS: 15,
Monitor: models.WrapAction(models.EmitProgressFor(
models.Timeout(models.Try(models.Parallel(models.Serial(&models.RunAction{Path: "ls", User: "name"}))),
10*time.Second,
),
"start-message",
"success-message",
"failure-message",
)),
DiskMb: 512,
MemoryMb: 1024,
CpuWeight: 42,
Routes: &models.Routes{"my-router": &myRouterJSON},
LogSource: "some-log-source",
LogGuid: "some-log-guid",
MetricsGuid: "some-metrics-guid",
Annotation: "some-annotation",
EgressRules: []*models.SecurityGroupRule{{
示例14:
BeforeEach(func() {
newlyDesiredTask = &models.TaskDefinition{
LogGuid: "some-log-guid",
MemoryMb: 128,
DiskMb: 512,
EnvironmentVariables: []*models.EnvironmentVariable{
{Name: "foo", Value: "bar"},
{Name: "VCAP_APPLICATION", Value: "{\"application_name\":\"my-app\"}"},
},
RootFs: "http://docker-image.com",
CompletionCallbackUrl: "http://api.cc.com/v1/tasks/complete",
Action: models.WrapAction(models.Serial(
&models.DownloadAction{
From: taskRequest.DropletUri,
To: ".",
CacheKey: "",
User: "vcap",
},
&models.RunAction{},
)),
}
buildpackBuilder.BuildTaskReturns(newlyDesiredTask, nil)
})
It("logs the incoming and outgoing request", func() {
Eventually(logger.TestSink.Buffer).Should(gbytes.Say("serving"))
Eventually(logger.TestSink.Buffer).Should(gbytes.Say("desiring-task"))
})
It("creates the task", func() {
示例15:
"run": {
"resource_limits": {},
"path": "echo",
"user": "me",
"suppress_log_output": false
}
}
]
}`,
models.WrapAction(models.Serial(
&models.DownloadAction{
From: "web_location",
To: "local_location",
CacheKey: "elephant",
User: "someone",
},
&models.RunAction{
Path: "echo",
User: "me",
ResourceLimits: &models.ResourceLimits{},
},
)),
)
Describe("Validate", func() {
var serialAction *models.SerialAction
Context("when the action has 'actions' as a slice of valid actions", func() {
It("is valid", func() {
serialAction = models.Serial(
&models.UploadAction{