/// <summary> /// Creates a waiter using the provided configuration. /// </summary> /// <param name="request">Request to send.</param> /// <param name="config">Wait Configuration</param> /// <param name="targetStates">Desired resource states. If multiple states are provided then the waiter will return once the resource reaches any of the provided states</param> /// <returns>a new Oci.common.Waiter instance</returns> public Waiter <LaunchInstanceRequest, LaunchInstanceResponse> ForLaunchInstance(LaunchInstanceRequest request, WaiterConfiguration config, params WorkrequestsService.Models.WorkRequest.StatusEnum[] targetStates) { return(new Waiter <LaunchInstanceRequest, LaunchInstanceResponse>(() => { var response = client.LaunchInstance(request).Result; var getWorkRequestRequest = new Oci.WorkrequestsService.Requests.GetWorkRequestRequest { WorkRequestId = response.OpcWorkRequestId }; workRequestClient.Waiters.ForWorkRequest(getWorkRequestRequest, config, targetStates).Execute(); return response; })); }
private static async Task <Instance> createInstance(ComputeClient computeClient, LaunchInstanceDetails launchInstanceDetails) { logger.Info("Launching an instance....."); LaunchInstanceRequest launchInstanceRequest = new LaunchInstanceRequest { LaunchInstanceDetails = launchInstanceDetails }; LaunchInstanceResponse launchInstanceResponse = await computeClient.LaunchInstance(launchInstanceRequest); GetInstanceRequest getInstanceRequest = new GetInstanceRequest { InstanceId = launchInstanceResponse.Instance.Id }; WaiterConfiguration waiterConfiguration = new WaiterConfiguration { MaxAttempts = 20, GetNextDelayInSeconds = DelayStrategy.GetExponentialDelayInSeconds }; GetInstanceResponse getInstanceResponse = computeClient.Waiters.ForInstance(getInstanceRequest, waiterConfiguration, Instance.LifecycleStateEnum.Running).Execute(); Instance instance = getInstanceResponse.Instance; return(instance); }