~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/Azure/azure-sdk-for-go/management/vmutils/rolestate.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package vmutils
 
2
 
 
3
import (
 
4
        "time"
 
5
 
 
6
        "github.com/Azure/azure-sdk-for-go/management"
 
7
        vm "github.com/Azure/azure-sdk-for-go/management/virtualmachine"
 
8
)
 
9
 
 
10
// WaitForDeploymentPowerState blocks until all role instances in deployment to
 
11
// reach desired power state.
 
12
func WaitForDeploymentPowerState(client management.Client, cloudServiceName, deploymentName string, desiredPowerstate vm.PowerState) error {
 
13
        for {
 
14
                deployment, err := vm.NewClient(client).GetDeployment(cloudServiceName, deploymentName)
 
15
                if err != nil {
 
16
                        return err
 
17
                }
 
18
                if allInstancesInPowerState(deployment.RoleInstanceList, desiredPowerstate) {
 
19
                        return nil
 
20
                }
 
21
                time.Sleep(2 * time.Second)
 
22
        }
 
23
}
 
24
 
 
25
func allInstancesInPowerState(instances []vm.RoleInstance, desiredPowerstate vm.PowerState) bool {
 
26
        for _, r := range instances {
 
27
                if r.PowerState != desiredPowerstate {
 
28
                        return false
 
29
                }
 
30
        }
 
31
 
 
32
        return true
 
33
}