public bool WaitUntilInstanceStatus( string _UniqueInstanceName, EBVMInstanceStatus[] _OrStatus, Action <string> _ErrorMessageAction = null) { EBVMInstanceStatus CurrentInstanceStatus = EBVMInstanceStatus.None; List <EBVMInstanceStatus> Conditions = new List <EBVMInstanceStatus>(_OrStatus); int LocalErrorRetryCount = 0; do { var FoundInstance = FindInstanceByUniqueName(_UniqueInstanceName, _ErrorMessageAction); if (FoundInstance != null) { if (GetInstanceStatus(_UniqueInstanceName, out CurrentInstanceStatus, _ErrorMessageAction)) { if (Conditions.Contains(CurrentInstanceStatus)) { return(true); } } else { if (++LocalErrorRetryCount < 5 && ThreadSleep(2000)) { continue; } return(false); } } else { if (++LocalErrorRetryCount < 5 && ThreadSleep(2000)) { continue; } return(false); } } while (!Conditions.Contains(CurrentInstanceStatus) && ThreadSleep(2000)); return(true); }
public bool GetInstanceStatus( string _UniqueInstanceName, out EBVMInstanceStatus _Status, Action <string> _ErrorMessageAction = null) { _Status = EBVMInstanceStatus.None; var FoundInstance = FindInstanceByUniqueName(_UniqueInstanceName, _ErrorMessageAction); if (FoundInstance != null) { _Status = GetStatusFromString(FoundInstance.PowerState.ToString()); if (_Status == EBVMInstanceStatus.None) { _Status = EBVMInstanceStatus.None; _ErrorMessageAction?.Invoke("BVMServiceAZ->GetInstanceStatus: Unexpected instance status: " + FoundInstance.PowerState.ToString()); return(false); } return(true); } return(false); }