//暫時 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; } }