本文整理汇总了Golang中github.com/docker/machine/libmachine/mcnutils.WaitForSpecificOrError函数的典型用法代码示例。如果您正苦于以下问题:Golang WaitForSpecificOrError函数的具体用法?Golang WaitForSpecificOrError怎么用?Golang WaitForSpecificOrError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WaitForSpecificOrError函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: waitForInstance
func (d *Driver) waitForInstance() error {
if err := mcnutils.WaitForSpecificOrError(d.instanceIsRunning, 120, 3*time.Second); err != nil {
return err
}
return nil
}
示例2: Create
func (d *Driver) Create() error {
log.Debugf("Creating a new Instance for Stack: %s", d.MachineName)
if d.SSHKeyPath != "" {
log.Debugf("Copying Key to Machine Directory: %s", d.GetSSHKeyPath)
if err := mcnutils.CopyFile(d.SSHPrivateKeyPath, d.GetSSHKeyPath()); err != nil {
return err
}
}
svc := cloudformation.New(session.New())
params := &cloudformation.CreateStackInput{
StackName: aws.String(d.MachineName),
TemplateURL: aws.String(d.CloudFormationURL),
Parameters: d.createParams(),
Tags: d.createTags(),
}
_, err := svc.CreateStack(params)
if err != nil {
return err
}
if err := mcnutils.WaitForSpecificOrError(d.stackAvailable, 120, 3*time.Second); err != nil {
return err
}
if err := d.getInstanceInfo(); err != nil {
return err
}
if err := waitFor(sshAvailableFunc(d)); err != nil {
return fmt.Errorf("Too many retries waiting for SSH to be available. Last error: %s", err)
}
log.Debugf("created instance ID %s, IP address %s, Private IP address %s",
d.InstanceId,
d.IPAddress,
d.PrivateIPAddress,
)
return nil
}
示例3: WaitForInstanceStatus
func (c *GenericClient) WaitForInstanceStatus(d *Driver, status string) error {
return mcnutils.WaitForSpecificOrError(func() (bool, error) {
current, err := servers.Get(c.Compute, d.MachineId).Extract()
if err != nil {
return true, err
}
if current.Status == "ERROR" {
return true, fmt.Errorf("Instance creation failed. Instance is in ERROR state")
}
if current.Status == status {
return true, nil
}
return false, nil
}, (d.ActiveTimeout / 4), 4*time.Second)
}
示例4: waitForInstanceStatus
// waitForInstanceStatus waits until instance reaches status. Copied from openstack Driver
func (d *Driver) waitForInstanceStatus(status string) (instance *Instance, err error) {
return instance, mcnutils.WaitForSpecificOrError(func() (bool, error) {
instance, err = d.client.GetInstance(d.ProjectID, d.InstanceID)
if err != nil {
return true, err
}
log.WithField("MachineId", d.InstanceID).Debugf("Machine state: %s", instance.Status)
if instance.Status == "ERROR" {
return true, fmt.Errorf("Instance creation failed. Instance is in ERROR state")
}
if instance.Status == status {
return true, nil
}
return false, nil
}, (statusTimeout / 4), 4*time.Second)
}
示例5: waitForInstanceStatus
// waitForInstanceStatus waits until instance reaches status. Copied from openstack Driver
func (d *Driver) waitForInstanceStatus(status string) (instance *Instance, err error) {
return instance, mcnutils.WaitForSpecificOrError(func() (bool, error) {
instance, err = d.client.GetInstance(d.ProjectID, d.InstanceID)
if err != nil {
return true, err
}
log.Debugf("Machine", map[string]interface{}{
"Name": d.KeyPairName,
"State": instance.Status,
})
if instance.Status == "ERROR" {
return true, fmt.Errorf("Instance creation failed. Instance is in ERROR state")
}
if instance.Status == status {
return true, nil
}
return false, nil
}, (statusTimeout / 4), 4*time.Second)
}
示例6: waitForJob
func (d *Driver) waitForJob(client *egoscale.Client, jobid string) error {
log.Infof("Waiting for job to complete...")
return mcnutils.WaitForSpecificOrError(func() (bool, error) {
return d.jobIsDone(client, jobid)
}, 60, 2*time.Second)
}