set fs = createobject("scripting.filesystemobject") pv_path = get_pv_path(fs) vt_path = get_vt_path(fs) log_path = "xen_to_kvm_check.log" pv_drivers_version = get_version(fs, pv_path) vm_tools_version = get_version(fs, vt_path) IF pv_drivers_version >= "5.0" and vm_tools_version >= "2.5" Then IF has_set_metadata(fs, log_path) Then msgbox "Check version successsss!" & vbCrLf & "pv_drivers_version=" & pv_drivers_version & vbCrLf & "vm_tools_version=" & vm_tools_version WScript.Quit End IF set_metadata_result = set_metadata() IF set_metadata_result Then temp = write_log(fs, "support_hypervisor:all", log_path) msgbox "Check version success!" & vbCrLf & "pv_drivers_version=" & pv_drivers_version & vbCrLf & "vm_tools_version=" & vm_tools_version WScript.Quit End IF msgbox "Check version success but set metadata failed! Please run this script again later." WScript.Quit Else msgbox "Check version failed! Please install drivers at first." & vbCrLf & "pv_drivers_version=" & pv_drivers_version & vbCrLf & "vm_tools_version=" & vm_tools_version WScript.Quit End IF function get_pv_path(fs): x86_folder = "C:\Program Files (x86)" pv_path = "C:\Program Files (x86)\Xen PV Drivers\bin\version.ini" IF Not fs.folderExists(x86_folder) Then pv_path = "C:\Program Files\Xen PV Drivers\bin\version.ini" End IF get_pv_path = pv_path End function function get_vt_path(fs): x86_folder = "C:\Program Files (x86)" vt_path = "C:\Program Files (x86)\virtio\bin\version.ini" IF Not fs.folderExists(x86_folder) Then vt_path = "C:\Program Files\virtio\bin\version.ini" End IF get_vt_path = vt_path End function function get_version(fs, path): IF Not fs.FileExists(path) Then get_version = "" Exit function End IF set version_file = fs.OpenTextFile(path,1,true) line = version_file.readline arr = split(line, "=") temp = arr(1) arr = split(temp, "org") version_file.Close get_version = arr(0) End function function set_metadata(): set http = createobject("MSXML2.XMLHTTP") http.Open "POST", "http://169.254.169.254/openstack/latest/support_hypervisor", False http.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded" http.Send "{""support_hypervisor"":[""all""]}" IF http.status = "200" Then set_metadata = True Else set_metadata = False End IF End function function write_log(fs, log, log_path): IF fs.FileExists(log_path) Then set log_file = fs.OpenTextFile(log_path,2,true) log_file.Write Now & ": " & log log_file.Close Else set log_file = fs.CreateTextFile(log_path) log_file.Write Now & ": " & log log_file.Close End IF End function function has_set_metadata(fs, log_path): IF fs.FileExists(log_path) Then set fn = fs.GetFile(log_path) IF fn.size > 0 Then set log_file = fs.OpenTextFile(log_path,1,true) line = log_file.readline log_file.Close pos = InStr(line, "support_hypervisor:all") IF pos <> 0 Then has_set_metadata = True End IF End IF End IF has_set_metadata = False End function