public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (!string.IsNullOrWhiteSpace(CsvList))
            {
                foreach (var key in CsvList.Split(","))
                {
                    ModelStateEntry entry;
                    ViewContext.ViewData.ModelState.TryGetValue(key, out entry);
                    if (entry == null || !entry.Errors.Any())
                    {
                        continue;
                    }

                    var tagBuilder = new TagBuilder(context.TagName);
                    tagBuilder.AddCssClass(ValidationErrorClass);
                    output.MergeAttributes(tagBuilder);
                    break;
                }
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            Parser.Default.ParseArguments <Options>(args).WithParsed <Options>(o =>
            {
                if (o.Mode == null || (o.Mode.ToUpper() != "START" && o.Mode.ToUpper() != "STOP"))
                {
                    o.Mode = "START";
                }
                if (o.FailoverType == null || (o.FailoverType.ToUpper() != "TEST" && o.FailoverType.ToUpper() != "LIVE"))
                {
                    o.FailoverType = "LIVE";
                }

                Initialise();
                Stopwatch watch = new Stopwatch();
                watch.Start();
                Console.Clear();
                Output.WriteLine("Zerto Failover Application");
                Output.WriteLine("vCenter:       " + Common.vc);
                Output.WriteLine("ZVM:           " + Common.zvm);
                Output.WriteLine("Mode:          " + o.Mode.ToUpper());
                Output.WriteLine("Type:          " + o.FailoverType.ToUpper());
                if (o.FailoverType.ToUpper() == "LIVE")
                {
                    Output.WriteLine("Commit Policy: " + o.CommitPolicy.ToUpper());
                    Output.WriteLine("Wait Time (s): " + o.WaitTime.ToString());
                }
                Output.WriteLine("CSV File:      " + o.Csv.ToUpper());
                Output.WriteLine("------------------------------------------------------------------------------");
                try
                {
                    var reader    = new StreamReader(o.Csv);
                    CsvReader csv = new CsvReader(reader);
                    csv.Configuration.HasHeaderRecord   = true;
                    csv.Configuration.MissingFieldFound = null;
                    var csvList    = new CsvList();
                    var csvRecords = csv.EnumerateRecords(csvList);

                    if (ZertoZvm.GetSession(Common.zvm, Common.zvm_username, Common.zvm_password, "application/json"))
                    {
                        foreach (var row in csvRecords)
                        {
                            if (o.Mode.ToUpper() == "START" && o.FailoverType.ToUpper() == "TEST")
                            // START TEST FAILOVER
                            {
                                if (row.BuildGroup == 0)
                                {
                                    //START VM PROCESS
                                    Output.WriteLine("");
                                    Output.WriteLine("Powering on VM " + row.VpgName);
                                    try
                                    {
                                        Dictionary <string, string> Parameters = new Dictionary <string, string>();
                                        Parameters.Clear();
                                        var vmSession = VmwareRest.GetSession(Common.vc, Common.vc_username, Common.vc_password, "application/json");
                                        Parameters.Add("filter.names", row.VpgName);
                                        var vmRef = JToken.Parse(VmwareRest.GetResult("/rest/vcenter/vm", Parameters));
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 0)
                                        {
                                            Output.WriteLine("Unable to find VM!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count > 1)
                                        {
                                            Output.WriteLine("Multiple VMs found, please confirm VM name is unique!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 1)
                                        {
                                            var vmResult = VmwareRest.PostRequest("/rest/vcenter/vm/" + vmRef.SelectToken("value.[0].vm") + "/power/start", null);
                                            if (vmResult == "OK")
                                            {
                                                Output.WriteLine(row.VpgName + " powered on");
                                            }
                                            else
                                            {
                                                Output.WriteLine("Unable to power on " + row.VpgName);
                                            }
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e);
                                    }
                                }
                                else
                                {
                                    //START FAILOVER PROCESS
                                    Output.WriteLine("");
                                    Output.Write("Starting Failover Test for " + row.VpgName);
                                    try
                                    {
                                        Task <bool> failoverTest = CheckTaskStatus(ZertoZvm.FailoverTest(row.VpgName, "").ToString());
                                        failoverTest.Wait();
                                        Output.WriteLine("");
                                        if (failoverTest.Result == true)
                                        {
                                            Output.WriteLine("Built Failover Test for " + row.VpgName);
                                        }
                                        else
                                        {
                                            Output.WriteLine("Unable to Build Failover Test for " + row.VpgName);
                                        }
                                        failoverTest.Dispose();
                                        if (row.Delay > 0)
                                        {
                                            Output.WriteLine("Pausing for " + row.Delay + " seconds");
                                            Task <bool> delay = Delay(row.Delay);
                                            delay.Wait();
                                            delay.Dispose();
                                            Output.WriteLine("");
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e);
                                    }
                                }
                            }

                            if (o.Mode.ToUpper() == "START" && o.FailoverType.ToUpper() == "LIVE")
                            // START LIVE FAILOVER
                            {
                                if (row.BuildGroup == 0)
                                {
                                    //START VM PROCESS
                                    Output.WriteLine("");
                                    Output.WriteLine("Powering on VM " + row.VpgName);
                                    try
                                    {
                                        Dictionary <string, string> Parameters = new Dictionary <string, string>();
                                        Parameters.Clear();
                                        var vmSession = VmwareRest.GetSession(Common.vc, Common.vc_username, Common.vc_password, "application/json");
                                        Parameters.Add("filter.names", row.VpgName);
                                        var vmRef = JToken.Parse(VmwareRest.GetResult("/rest/vcenter/vm", Parameters));
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 0)
                                        {
                                            Output.WriteLine("Unable to find VM!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count > 1)
                                        {
                                            Output.WriteLine("Multiple VMs found, please confirm VM name is unique!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 1)
                                        {
                                            var vmResult = VmwareRest.PostRequest("/rest/vcenter/vm/" + vmRef.SelectToken("value.[0].vm") + "/power/start", null);
                                            if (vmResult == "OK")
                                            {
                                                Output.WriteLine(row.VpgName + " powered on");
                                            }
                                            else
                                            {
                                                Output.WriteLine("Unable to power on " + row.VpgName);
                                            }
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e);
                                    }
                                }
                                else
                                {
                                    //START FAILOVER PROCESS
                                    Output.WriteLine("");
                                    Output.Write("Starting Failover for " + row.VpgName);
                                    try
                                    {
                                        Task <bool> failover = CheckTaskStatus(ZertoZvm.Failover(row.VpgName, "", GetCommitPolicy(o.CommitPolicy), o.WaitTime).ToString());
                                        failover.Wait();
                                        Output.WriteLine("");
                                        if (failover.Result == true)
                                        {
                                            Output.WriteLine("Built Failover for " + row.VpgName);
                                        }
                                        else
                                        {
                                            Output.WriteLine("Unable to Build Failover for " + row.VpgName);
                                        }
                                        failover.Dispose();
                                        if (row.Delay > 0)
                                        {
                                            Output.WriteLine("Pausing for " + row.Delay + " seconds");
                                            Task <bool> delay = Delay(row.Delay);
                                            delay.Wait();
                                            delay.Dispose();
                                            Output.WriteLine("");
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e);
                                    }
                                }
                            }

                            if (o.Mode.ToUpper() == "STOP" && o.FailoverType.ToUpper() == "TEST")
                            // STOP TEST FAILOVER
                            {
                                if (row.BuildGroup == 0)
                                {
                                    //STOP VM PROCESS
                                    Output.WriteLine("");
                                    Output.WriteLine("Powering off VM " + row.VpgName);
                                    try
                                    {
                                        Dictionary <string, string> Parameters = new Dictionary <string, string>();
                                        Parameters.Clear();
                                        var vmSession = VmwareRest.GetSession(Common.vc, Common.vc_username, Common.vc_password, "application/json");
                                        Parameters.Add("filter.names", row.VpgName);
                                        var vmRef = JToken.Parse(VmwareRest.GetResult("/rest/vcenter/vm", Parameters));
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 0)
                                        {
                                            Output.WriteLine("Unable to find VM!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count > 1)
                                        {
                                            Output.WriteLine("Multiple VMs found, please confirm VM name is unique!");
                                        }
                                        if (JArray.FromObject(vmRef.SelectToken("value")).Count == 1)
                                        {
                                            var vmResult = VmwareRest.PostRequest("/rest/vcenter/vm/" + vmRef.SelectToken("value.[0].vm") + "/power/stop", null);
                                            if (vmResult == "OK")
                                            {
                                                Output.WriteLine(row.VpgName + " powered off");
                                            }
                                            else
                                            {
                                                Output.WriteLine("Unable to power off " + row.VpgName);
                                            }
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e.Message);
                                    }
                                }
                                else
                                {
                                    //STOP FAILOVER PROCESS
                                    Output.WriteLine("");
                                    Output.Write("Stopping Failover Test for " + row.VpgName);
                                    try
                                    {
                                        Task <bool> stopFailover = CheckTaskStatus(ZertoZvm.FailoverTestStop(row.VpgName).ToString());
                                        stopFailover.Wait();
                                        Output.WriteLine("");
                                        if (stopFailover.Result == true)
                                        {
                                            Output.WriteLine("Destroyed Failover Test for " + row.VpgName);
                                        }
                                        else
                                        {
                                            Output.WriteLine("Unable to Destroy Failover Test for " + row.VpgName);
                                        }
                                        stopFailover.Dispose();
                                    }
                                    catch (Exception e)
                                    {
                                        Output.WriteLine("");
                                        Output.WriteLine("EXCEPTION " + e.Message);
                                    }
                                }
                            }

                            if (o.Mode.ToUpper() == "STOP" && o.FailoverType.ToUpper() == "LIVE")
                            // NOT AN AVAILABLE OPTION
                            {
                                Output.WriteLine("");
                                Output.WriteLine("Stopping a LIVE failover process is not a valid option...");
                            }
                        }
                    }
                    else
                    {
                        Output.WriteLine("ERROR");
                        Output.WriteLine("Unable to authenticate with ZVM API");
                    }
                }
                catch (Exception e)
                {
                    Output.WriteLine("EXCEPTION");
                    Output.WriteLine(e.Message);
                    Output.WriteLine(e.Data.ToString());
                }
                watch.Stop();
                Output.WriteLine("");
                Output.WriteLine("Duration: " + TimeSpan.FromSeconds(watch.Elapsed.TotalSeconds).ToString(@"hh\:mm\:ss"));
                Console.WriteLine();
                Console.WriteLine("Press any key to close...");
                Output.WriteLine("------------------------------------------------------------------------------");
                Console.ReadKey();
            });
        }
 //コンバート用のテキストの作成
 public static string MakeConvertText(IEnumerable<DropRecord> records,  Dictionary<int, string> dropshipheader, Dictionary<int, string> dropitemheader)
 {
     StringBuilder sb = new StringBuilder();
     CsvList<string> header = new CsvList<string>();
     foreach (string x in DropRecord.LogConvertHeader)
     {
         header.Add(x);
     }
     sb.AppendLine(string.Join(",", header.ToArray()));
     //個々のデータ
     foreach (var x in records)
     {
         //--行の追加
         sb.AppendLine(x.MakeLogConvertText(dropshipheader, dropitemheader));
     }
     //帰り値
     return sb.ToString();
 }
        //リストビューをコピーするだけ
        private void button_copy_Click(object sender, EventArgs e)
        {
            if (listView_output.Items.Count == 0) return;

            StringBuilder sb = new StringBuilder();
            //ヘッダー
            var header = new CsvList<string>();
            foreach(int i in Enumerable.Range(0, listView_output.Columns.Count))
            {
                header.Add(listView_output.Columns[i].Text);
            };
            sb.AppendLine(string.Join("\t", header));
            //アイテム
            foreach(int i in Enumerable.Range(0, listView_output.Items.Count))
            {
                var row = new CsvList<string>();
                var item = listView_output.Items[i];
                foreach(int j in Enumerable.Range(0, item.SubItems.Count))
                {
                    row.Add(item.SubItems[j].Text);
                }
                sb.AppendLine(string.Join("\t", row));
            }
            //クリップボードにコピー
            Clipboard.SetText(sb.ToString());
        }
        /// <summary>
        /// CSVの行を作成
        /// </summary>
        /// <returns>CSVの行テキスト</returns>
        public CsvList<string> ExportCSV()
        {
            var csv = new CsvList<string>();

            csv.Add(this.api_id.ToString());
            csv.Add(this.api_sortno.ToString());
            csv.Add(this.api_name ?? ExCommon.NullString);
            csv.Add(ExCommon.ListToCsvString(this.api_type));
            csv.Add(this.api_taik.ToString());

            csv.Add(this.api_souk.ToString());
            csv.Add(this.api_houg.ToString());
            csv.Add(this.api_raig.ToString());
            csv.Add(this.api_soku.ToString());
            csv.Add(this.api_baku.ToString());

            csv.Add(this.api_tyku.ToString());
            csv.Add(this.api_tais.ToString());
            csv.Add(this.api_atap.ToString());
            csv.Add(this.api_houm.ToString());
            csv.Add(this.api_raim.ToString());

            csv.Add(this.api_houk.ToString());
            csv.Add(this.api_raik.ToString());
            csv.Add(this.api_bakk.ToString());
            csv.Add(this.api_saku.ToString());
            csv.Add(this.api_sakb.ToString());

            csv.Add(this.api_luck.ToString());
            csv.Add(this.api_leng.ToString());
            csv.Add(this.api_rare.ToString());
            csv.Add(ExCommon.ListToCsvString(this.api_broken));
            csv.Add(this.api_info ?? ExCommon.NullString);

            csv.Add(this.api_usebull ?? ExCommon.NullString);
            csv.Add(this.api_cost.ToString());
            csv.Add(this.api_distance.ToString());
            csv.Add(this.TaiBaku.ToString());
            csv.Add(this.Geigeki.ToString());

            return csv;
        }
 /// <summary>
 /// CSVのヘッダーを作成
 /// </summary>
 /// <returns>CSVのヘッダーテキスト</returns>
 public static CsvList<string> ExportCSVHeader()
 {
     var csv = new CsvList<string>();
     csv.AddRange(ExMasterSlotitemHeader);
     return csv;
 }