예제 #1
0
        private ObservableCollection <Cluster> GetClusterInfo()
        {
            ObservableCollection <Cluster> clusters = new ObservableCollection <Cluster>();
            var net_mgr = NodeNetManagerFactory.GetSimpleNetworkManager();
            var tasks   = new List <Task>();
            var results = new List <string>();

            foreach (var machine in from m in net_mgr.Machines where m.Alive == NodeState.Online && m.IsSelected select m)
            {
                var proxy = GammaProxyFactory.GetCrsEnvProxy(machine);
                var rs    = proxy.GetClusterNamesAsync();
                tasks.Add(rs.ContinueWith((t) =>
                {
                    machine.ClusterName = t.Result;
                    results.Add(t.Result);
                }));
            }
            Task.WhenAll(tasks).GetAwaiter().GetResult();

            int counter = 0;

            foreach (var rs in results.Distinct())
            {
                clusters.Add(new Cluster(counter)
                {
                    ClusterName = rs.Trim()
                });
                counter += 1;
            }

            return(clusters);
        }
예제 #2
0
        private ObservableCollection <OraDB> GetDbsBySelectedCluster()
        {
            var updated_items = WorkloadSetupInfo.GetValue <ObservableCollection <Cluster> >(WorkloadSetupKeys.CLUSTERS);
            var selected      = from m in updated_items where m.IsSelected == true select m;
            var rs_list       = new ObservableCollection <OraDB>();

            if (selected.Count() == 1)
            {
                var cluster       = selected.First <Cluster>();
                var candiate_node = SelectOneNodeFromCluster(cluster.ClusterName);
                var proxy         = GammaProxyFactory.GetCrsEnvProxy(candiate_node);
                var rs            = proxy.GetDBNames();
                var dbnames       = rs.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();

                int count = 0;
                foreach (var db in dbnames)
                {
                    var dbhome = proxy.GetDBHOMEByName(db);
                    rs_list.Add(new OraDB(count)
                    {
                        DBHome = dbhome, DBName = db
                    });
                    count++;
                }
                return(rs_list);
            }
            else
            {
                return(null);
            }
        }
예제 #3
0
        public static Task <string> ExecuteCmdAsync(IGammaMachineInfo machine, string single_command)
        {
            string           filename = GetFileNameFromCmd(single_command);
            string           args     = GetArgsFromCmd(single_command);
            CmdExecutorProxy client   = GammaProxyFactory.GetCmdExecutorProxy(machine);

            return(client.ShellExecutorAsync(filename, args));
        }
예제 #4
0
        private Task <string> GenerateSwingbench(IOraDB db)
        {
            var db_cluster = GetSelectedCluster(WorkloadSetupInfo.GetValue <ObservableCollection <ICluster> >(WorkloadSetupKeys.CLUSTERS));
            var machine    = CollectOneNodeFromCluster(db_cluster);
            var proxy      = GammaProxyFactory.GetDBWorkloadProxy(machine);

            var task = proxy.InstallSwingBenchAsync(machine.MachineName, db.DBHome, db.DBName, SYSTEMPWD, SYSPWD, WorkloadDmpLoc, WorkloadDmpFilename);

            return(task);
        }
예제 #5
0
        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);
        }
예제 #6
0
        private ObservableCollection <IOraDB> GetDBnames(IMachineInfo machine)
        {
            var proxy   = GammaProxyFactory.GetCrsEnvProxy(machine);
            var rs      = proxy.GetDBNames();
            var dbnames = rs.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
            int count   = 0;
            var rs_list = new ObservableCollection <IOraDB>();

            foreach (var db in dbnames)
            {
                var dbhome = proxy.GetDBHOMEByName(db);
                rs_list.Add(OraDBFactory.GetOraDB(count, db, dbhome));
                count++;
            }
            return(rs_list);
        }
예제 #7
0
        private Task <string> StartTransactions(IGammaClientTransaction trx, IMachineInfo machine, GammaTXQATools tool, object qatoolArgs = null)
        {
            trx.TransactionStarted();
            Task <string> task;

            switch (tool)
            {
            case GammaTXQATools.GETLOG:
                if (qatoolArgs != null)
                {
                    bool tmp = (bool)qatoolArgs;
                    task = GammaProxyFactory.GetQAToolsProxy(machine).GetLogAsync(tmp);
                }
                else
                {
                    throw new Exception("Unexpected error when try to get operation option.");
                }
                break;

            case GammaTXQATools.CLEARLOG:
                task = GammaProxyFactory.GetQAToolsProxy(machine).ClearLogAsync();
                break;

            case GammaTXQATools.UPLOAD:
                if (qatoolArgs != null)
                {
                    GammaServiceLib.UploadRecord tmp = qatoolArgs as GammaServiceLib.UploadRecord;
                    task = GammaProxyFactory.GetQAToolsProxy(machine).UploadLogAsync(tmp);
                }
                else
                {
                    throw new Exception("Unexpected error when try to get upload information.");
                }
                break;

            default:
                task = GenerateCompletedTask(TX_RESULT_SUC);
                break;
            }
            BindCmdTaskWithTranscation(task, trx);
            return(task);
        }
예제 #8
0
        private async Task <ObservableCollection <ICluster> > GetClusterInfo()
        {
            ObservableCollection <ICluster> clusters = new ObservableCollection <ICluster>();

            var tasks   = new List <Task>();
            var results = new List <string>();

            foreach (var machine in from m in BaseFacility.NodeMgr.Machines where m.Alive == NodeState.Online && m.IsSelected select m)
            {
                var proxy = GammaProxyFactory.GetCrsEnvProxy(machine);
                var rs    = proxy.GetClusterNamesAsync();
                tasks.Add(rs.ContinueWith((t) =>
                {
                    if (!t.Result.ToLower().Contains("error") && !t.Result.ToLower().Contains(no_crs_home_found))
                    {
                        machine.ClusterName = t.Result;
                        results.Add(t.Result);
                    }
                    else
                    {
                        MessageBox.Show(t.Result);
                    }
                }));
            }
            await Task.WhenAll(tasks);

            int counter = 0;

            foreach (var rs in results.Distinct())
            {
                clusters.Add(new Cluster(counter)
                {
                    ClusterName = rs.Trim()
                });
                counter += 1;
            }
            return(clusters);
        }