Esempio n. 1
0
        //暫時 FOR VMWARE creat adapter
        static void VM_set_adapter(string[] vlan_id, string[] virNetworkName_m, string guid, string vmware_datacenter_name, string vmware_host_name, string order_id)
        {
            try
            {
                Create_VM_Service.AutoProvision_WS.AutoProvision_WS ws = new Create_VM_Service.AutoProvision_WS.AutoProvision_WS();
                Create_VM_Service.VMAPI.GCCA_HypervisorAPI vmapi = new GCCA_HypervisorAPI();

                #region cleaning adapter and database data
                /////cleaning adapter and database data
                List<JToken> adapter_detail = new List<JToken>();
                string clean = vmapi.getVMNICMacList(guid, vmware_datacenter_name, vmware_host_name, order_id);
                JToken token;
                token = JToken.Parse(clean.Remove(clean.Length - 1).Remove(0, 1).Replace("\\", "\\\\"));
                token.SelectToken("message")[1].SelectToken("Mac").ToString();
                for (int i = 1; i < token.SelectToken("message").Count(); i++) // colculate adapter num
                {
                    string temp = vmapi.removeVMNIC(guid, vmware_datacenter_name, vmware_host_name, order_id, token.SelectToken("message")[i].SelectToken("Nic_Name").ToString(), token.SelectToken("message")[1].SelectToken("Mac").ToString()).ToString();
                    System.IO.File.AppendAllText(@"C:\AutoProvision\logs.txt", " removeVMNIC is  : " + temp +  + Environment.NewLine);
                }
                DBManager dbManager = new DBManager(DataProvider.SqlServer);
                dbManager.ConnectionString = ConfigurationManager.AppSettings["SSM"].ToString();
                dbManager.Open();
                dbManager.CreateParameters(1);
                dbManager.AddParameters(0, "@order_id", order_id);
                string sql = "";
                sql = @"DELETE FROM order_nic_mac_list
                    WHERE order_id = @order_id";
                int updateOderId = dbManager.ExecuteNonQuery(CommandType.Text, sql);
                System.IO.File.AppendAllText(@"C:\AutoProvision\logs.txt", " change DB data number  : " + updateOderId + +Environment.NewLine);
                clean_IP(order_id);
                //////////////
                #endregion

                List<string> NetworkName = new List<string>();
                int j_test = 0;//單純控制下面迴圈
                int j_result = 1;//控制下面迴圈
                for (int i = 0; i < vlan_id.Length; i++)  //  找出VM上符合訂單上VLAN_ID的網卡名稱
                {
                    while (i < vlan_id.Length)
                    {
                        j_result = string.Compare(vlan_id[i], virNetworkName_m[j_test]);
                        if (j_result == 0)
                        {
                            NetworkName.Add(virNetworkName_m[j_test - 2]);
                            System.IO.File.AppendAllText(@"C:\AutoProvision\logs.txt", " virNetworkName_m is  : " + virNetworkName_m[j_test - 2] + +Environment.NewLine);
                            break;
                        }
                        j_test++;
                    }
                    j_test = 0;
                    j_result = 1;
                }

                for (int i = 0; i < vlan_id.Length; i++)//如果有多張網卡  建立多張網卡
                {
                    if (i == 0)//if 只有一張網卡,更改網卡名稱
                    { vmapi.adjustVMNIC(guid, vmware_datacenter_name, vmware_host_name, order_id, "Network adapter 1", NetworkName[i]); }//修改網卡內容 只有一張網卡時 修改第一張
                    //string ggg= vlan_id[];
                    else
                    { vmapi.addVMNIC(guid, vmware_datacenter_name, vmware_host_name, order_id, NetworkName[i]); }
                }

                string nic_mac_list = vmapi.getVMNICMacList(guid, vmware_datacenter_name, vmware_host_name, order_id);
                //string[] nic_mac_list2 = nic_mac_list.Split(new string[2]{"\"Mac\":\"","\"}"}, StringSplitOptions.RemoveEmptyEntries); //對API回傳的值做切割,
                string[] nic_mac_list2 = nic_mac_list.Split(new string[4] { "Nic_Name\":\"", "\",", "\"Mac\":\"", "\"}" }, StringSplitOptions.RemoveEmptyEntries); //字串分割  Nic_Name":"    ",    Mac":"   "}

                int j_i = 0;
                for (int i = 0; i < vlan_id.Length; i++)//將網卡MAC等資料 塞回DB
                {
                    j_i = 3 * i; //只要陣列中的 i*3+(1or2)的值
                    ws.save_nic_mac(order_id, nic_mac_list2[j_i + 1], nic_mac_list2[j_i + 2], vlan_id[i], vmware_host_name);  //將creat VM的資料(order_id,macID,nic_id,groupID,order_area,vlan_id,host_name) 塞回DB
                    System.IO.File.AppendAllText(@"C:\AutoProvision\logs.txt", " save_nic_mac: " + order_id + " " + nic_mac_list2[j_i + 1] + " " + nic_mac_list2[j_i + 2] + " " + vlan_id[i] + " " + vmware_host_name + " " + +Environment.NewLine);

                }
                dbManager.Dispose();
            }
            catch (Exception)
            {
                return;
            }
        }