protected override void ProcessRecord() { base.ProcessRecord(); if (!ConfirmDelete("OCIDatabaseTerminateDbSystem", "Invoke")) { return; } TerminateDbSystemRequest request; try { request = new TerminateDbSystemRequest { DbSystemId = DbSystemId, IfMatch = IfMatch }; HandleOutput(request); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
private static async Task terminateDbSystem(DatabaseClient databaseClient, string dbSystemId) { try { logger.Info("Terminating the Database..."); TerminateDbSystemRequest terminateDbSystemRequest = new TerminateDbSystemRequest { DbSystemId = dbSystemId }; await databaseClient.TerminateDbSystem(terminateDbSystemRequest); GetDbSystemRequest getDbSystemRequest = new GetDbSystemRequest { DbSystemId = dbSystemId }; WaiterConfiguration waiterConfiguration = new WaiterConfiguration { MaxAttempts = 20, GetNextDelayInSeconds = DelayStrategy.GetExponentialDelayInSeconds }; databaseClient.Waiters.ForDbSystem(getDbSystemRequest, waiterConfiguration, DbSystem.LifecycleStateEnum.Terminated).Execute(); logger.Info("Database terminated"); } catch (Exception e) { logger.Error($"failed to terminate DbSystem: {e}"); } }
/// <summary> /// Terminates a DB system and permanently deletes it and any databases running on it, and any storage volumes attached to it. /// The database data is local to the DB system and will be lost when the system is terminated. /// Oracle recommends that you back up any data in the DB system prior to terminating it. /// </summary> /// <param name="request"></param> /// <returns></returns> public TerminateDbSystemResponse TerminateDbSystem(TerminateDbSystemRequest request) { var uri = new Uri($"{GetEndPoint(DatabaseServices.DbSystems, this.Region)}/{request.DbSystemId}"); using (var webResponse = this.RestClient.Delete(uri, new HttpRequestHeaderParam() { IfMatch = request.IfMatch })) using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); return(new TerminateDbSystemResponse() { OpcRequestId = webResponse.Headers.Get("opc-request-id") }); } }
private void HandleOutput(TerminateDbSystemRequest request) { var waiterConfig = new WaiterConfiguration { MaxAttempts = MaxWaitAttempts, GetNextDelayInSeconds = (_) => WaitIntervalSeconds }; switch (ParameterSetName) { case StatusParamSet: response = client.Waiters.ForTerminateDbSystem(request, waiterConfig, WaitForStatus).Execute(); break; case Default: response = client.TerminateDbSystem(request).GetAwaiter().GetResult(); break; } WriteOutput(response, CreateWorkRequestObject(response.OpcWorkRequestId)); }