/* * Clear environment transactions */ public Task <string> StartClearEnvTransaction(IMachineInfo machine, GammaTXClearEnv clear_step) { return(Task.Run(() => { var trx = GammaClientTXFactory.GetClearEnvTX(machine, clear_step); AddTransaction(trx); return StartTransactions(trx, machine, clear_step); })); }
private Task ClearEnvOnNodes(GammaTXClearEnv tx_code) { List <Task <string> > tasks = new List <Task <string> >(); foreach (var machine in from m in NodeMgr.Machines where m.IsSelected && m.Alive == NodeState.Online select m) { tasks.Add(TxMgr.StartClearEnvTransaction(machine, tx_code)); } return(Task.WhenAll(tasks)); }
private void ClearEnv(GammaTXClearEnv tx_code) { OpResult = string.Empty; CanExec = false; Task client_job = ClearEnvOnNodes(tx_code); client_job.GetAwaiter().OnCompleted(() => { CanExec = true; }); }
internal static GammaClientTransaction GetClearEnvTX(IMachineInfo machine, GammaTXClearEnv op_code) { var trx = new GammaClientTransaction() { Machine = machine.MachineName, TX_TYPE = GammaTransactionType.CLEARENV, TX_SUB_TYPE = (int)op_code, TX_CONTENT = string.Empty, TX_RESULT = string.Empty, TX_RESULT_CODE = GammaTransactionRC.RUNNING, }; GammaClientTXLogger.GetInstance().RegisterTransaction(trx); return(trx); }
private Task <string> StartTransactions(IGammaClientTransaction trx, IMachineInfo machine, GammaTXClearEnv clear_step) { trx.TransactionStarted(); Task <string> task; if (clear_step != GammaTXClearEnv.REBOOT) { switch (clear_step) { case GammaTXClearEnv.REG: task = GammaProxyFactory.GetCrsCleanerProxy(machine).RemoveOraKeysAsync(); break; case GammaTXClearEnv.GROUP: task = GammaProxyFactory.GetCrsCleanerProxy(machine).RmOraGroupAsync(); break; case GammaTXClearEnv.FILE: task = GammaProxyFactory.GetCrsCleanerProxy(machine).RemoveOraFilesAsync(); break; case GammaTXClearEnv.DISK: task = GammaProxyFactory.GetCrsCleanerProxy(machine).CleanDiskAsync(); break; case GammaTXClearEnv.DRIVER: task = GammaProxyFactory.GetCrsCleanerProxy(machine).RemoveDrvLtrAsync(); break; default: task = GenerateCompletedTask(TX_RESULT_SUC); break; } BindCmdTaskWithTranscation(task, trx); } else { /* * reboot node transaction no need to Bind, as it will always fails by its mean. */ var tmp = GammaProxyFactory.GetCrsCleanerProxy(machine).RestartComputerAsync(); task = tmp.ContinueWith <string>((t) => { trx.TransactionCompleted(); return(TX_RESULT_SUC); }); } return(task); }