本文整理汇总了Golang中github.com/tsuru/docker-cluster/cluster.Node.CreationStatus方法的典型用法代码示例。如果您正苦于以下问题:Golang Node.CreationStatus方法的具体用法?Golang Node.CreationStatus怎么用?Golang Node.CreationStatus使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/tsuru/docker-cluster/cluster.Node
的用法示例。
在下文中一共展示了Node.CreationStatus方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Run
func (t *runBs) Run(job monsterqueue.Job) {
params := job.Parameters()
dockerEndpoint := params["endpoint"].(string)
machineID := params["machine"].(string)
node := cluster.Node{Address: dockerEndpoint}
err := t.waitDocker(dockerEndpoint)
if err != nil {
job.Error(err)
t.destroyMachine(machineID)
return
}
rawMetadata := params["metadata"].(monsterqueue.JobParams)
metadata := make(map[string]string, len(rawMetadata))
for key, value := range rawMetadata {
metadata[key] = value.(string)
}
err = CreateContainer(dockerEndpoint, metadata["pool"], t.provisioner, true)
if err != nil {
node.CreationStatus = cluster.NodeCreationStatusError
node.Metadata = map[string]string{"creationError": err.Error()}
t.provisioner.Cluster().UpdateNode(node)
job.Error(err)
t.destroyMachine(machineID)
return
}
node.CreationStatus = cluster.NodeCreationStatusCreated
_, err = t.provisioner.Cluster().UpdateNode(node)
if err != nil {
job.Error(err)
t.destroyMachine(machineID)
return
}
job.Success(nil)
}
示例2: updateNodeHandler
func updateNodeHandler(w http.ResponseWriter, r *http.Request, t auth.Token) error {
params, err := unmarshal(r.Body)
if err != nil {
return err
}
address, _ := params["address"]
if address == "" {
return &errors.HTTP{Code: http.StatusBadRequest, Message: "address is required"}
}
nodes, err := mainDockerProvisioner.Cluster().UnfilteredNodes()
if err != nil {
return err
}
var oldNode *cluster.Node
for i := range nodes {
if nodes[i].Address == address {
oldNode = &nodes[i]
break
}
}
oldPool, _ := oldNode.Metadata["pool"]
allowedOldPool := permission.Check(t, permission.PermNodeUpdate,
permission.Context(permission.CtxPool, oldPool),
)
if !allowedOldPool {
return permission.ErrUnauthorized
}
newPool, ok := params["pool"]
if ok {
allowedNewPool := permission.Check(t, permission.PermNodeUpdate,
permission.Context(permission.CtxPool, newPool),
)
if !allowedNewPool {
return permission.ErrUnauthorized
}
}
delete(params, "address")
node := cluster.Node{Address: address, Metadata: params}
disabled, _ := strconv.ParseBool(r.URL.Query().Get("disabled"))
enabled, _ := strconv.ParseBool(r.URL.Query().Get("enabled"))
if disabled && enabled {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: "You can't make a node enable and disable at the same time.",
}
}
if disabled {
node.CreationStatus = cluster.NodeCreationStatusDisabled
}
if enabled {
node.CreationStatus = cluster.NodeStatusReady
}
_, err = mainDockerProvisioner.Cluster().UpdateNode(node)
return err
}
示例3: UpdateNode
func (p *dockerProvisioner) UpdateNode(opts provision.UpdateNodeOptions) error {
node := cluster.Node{Address: opts.Address, Metadata: opts.Metadata}
if opts.Disable {
node.CreationStatus = cluster.NodeCreationStatusDisabled
}
if opts.Enable {
node.CreationStatus = cluster.NodeCreationStatusCreated
}
_, err := mainDockerProvisioner.Cluster().UpdateNode(node)
if err == clusterStorage.ErrNoSuchNode {
return provision.ErrNodeNotFound
}
return err
}
示例4: Run
func (t *runBs) Run(job monsterqueue.Job) {
params := job.Parameters()
dockerEndpoint := params["endpoint"].(string)
node := cluster.Node{Address: dockerEndpoint}
err := t.waitDocker(dockerEndpoint)
if err != nil {
job.Error(err)
return
}
node.CreationStatus = cluster.NodeCreationStatusCreated
rawMetadata := params["metadata"].(monsterqueue.JobParams)
metadata := make(map[string]string, len(rawMetadata))
for key, value := range rawMetadata {
metadata[key] = value.(string)
}
err = createContainer(dockerEndpoint, metadata["pool"], t.provisioner, true)
if err != nil {
t.provisioner.Cluster().UpdateNode(node)
job.Error(err)
return
}
node.Metadata = map[string]string{"LastSuccess": time.Now().Format(time.RFC3339)}
_, err = t.provisioner.Cluster().UpdateNode(node)
if err != nil {
job.Error(err)
return
}
job.Success(nil)
}
示例5: updateNodeHandler
func updateNodeHandler(w http.ResponseWriter, r *http.Request, t auth.Token) error {
params, err := unmarshal(r.Body)
if err != nil {
return err
}
address, _ := params["address"]
if address == "" {
return &errors.HTTP{Code: http.StatusBadRequest, Message: "address is required"}
}
delete(params, "address")
node := cluster.Node{Address: address, Metadata: params}
disabled, _ := strconv.ParseBool(r.URL.Query().Get("disabled"))
if disabled {
node.CreationStatus = cluster.NodeCreationStatusDisabled
}
_, err = mainDockerProvisioner.Cluster().UpdateNode(node)
return err
}