redirect("exec"); } public function exec() { $con = WebVirtUtil::GetConnection(); $pools = array(); foreach(libvirt_list_storagepools($con) as $name){ $pool = libvirt_storagepool_lookup_by_name($con,$name); $uuid = libvirt_storagepool_get_uuid_string($pool); $info = libvirt_storagepool_get_info($pool); $state = "NOT RUNNING"; switch($info["state"]){ case 0: break; case 1: $state = "INITIALIZING"; break; case 2: $state = "RUNNING"; break; case 3: $state = "DEGRADED"; break; case 4: $state = "INACCESSIBLE"; break; } $capacity = $info["capacity"]; $allocation = $info["allocation"]; $available = $info["available"]; $volumes = array(); foreach(libvirt_storagepool_list_volumes($pool) as $vname){ $volume = libvirt_storagevolume_lookup_by_name($pool,$vname); $vinfo = libvirt_storagevolume_get_info($volume); $vpath = libvirt_storagevolume_get_path($volume); $vtype = ($vinfo["type"] == 0) ? "FILE" : "BLOCK"; $vcapa = $vinfo["capacity"]; $valloc = $vinfo["allocation"]; array_push($volumes,array("name" => $vname,"path" => $vpath,"type" => $vtype, "capacity" => $vcapa,"allocation" => $valloc)); } array_push($pools,array("name" => $name,"state" => $state,"capacity" => $capacity, "allocation" => $allocation,"available" => $available, "volumes" => $volumes,"uuid" => $uuid)); } $this->set("storagepools",$pools); } public function EditPool() { if(!isset($this->params["url"]["id"])){ $this->set("content","StoragePool ID is required."); $this->render("storage/Error"); exit(); } $con = WebVirtUtil::GetConnection(); $id = $this->params["url"]["id"]; $res = libvirt_storagepool_lookup_by_uuid_string($con,$id); $pool = array(); $pool["id"] = $id; $pool["name"] = libvirt_storagepool_get_name($res); $info = libvirt_storagepool_get_info($res); $state = "NOT RUNNING"; switch($info["state"]){ case 0: break; case 1: $state = "INITIALIZING"; break; case 2: $state = "RUNNING"; break; case 3: $state = "DEGRADED"; break; case 4: $state = "INACCESSIBLE"; break; } $pool["state"] = $state; $pool["capacity"] = $info["capacity"]; $pool["allocation"] = $info["allocation"]; $pool["available"] = $info["available"]; $volumes = array(); foreach(libvirt_storagepool_list_volumes($res) as $vname){ $volume = libvirt_storagevolume_lookup_by_name($res,$vname); $vinfo = libvirt_storagevolume_get_info($volume); $vpath = libvirt_storagevolume_get_path($volume); $vtype = ($vinfo["type"] == 0) ? "FILE" : "BLOCK"; $vcapa = $vinfo["capacity"]; $valloc = $vinfo["allocation"]; array_push($volumes,array("name" => $vname,"path" => $vpath,"type" => $vtype, "capacity" => $vcapa,"allocation" => $valloc)); } $pool["volumes"] = $volumes; $this->set("pool",$pool); } public function DeleteVolume() { if(!isset($this->params["form"])){ $this->set("content","invalid volume information"); $this->render("error"); return; } $con = WebVirtUtil::GetConnection(); if($con === FALSE){ $this->set("content","libvirt Error :".libvirt_get_last_error()); $this->render("error"); return; } $pid = $this->params["form"]["pid"]; $pool = @libvirt_storagepool_lookup_by_uuid_string($con,$pid); $vname = $this->params["form"]["vname"]; $volume = @libvirt_storagevolume_lookup_by_name($pool,$vname); if($volume === FALSE){ $this->set("content","libvirt Error :".libvirt_get_last_error()); $this->render("error"); return; } // 0 => VIR_STORAGE_VOL_DELETE_NORMAL : Delete metadata only (fast operation) $ret = @libvirt_storagevolume_delete($volume,0); if($volume === FALSE){ $this->set("content","libvirt Error :".libvirt_get_last_error()); $this->render("error"); return; } $this->set("content",$vname." was successfully deleted"); } public function AddVolume() { if(!isset($this->params["form"])){ $this->set("content","invalid volume definition"); $this->render("error"); return; } $id = htmlspecialchars($this->params["form"]["id"]); $name = htmlspecialchars($this->params["form"]["name"]); $capacity = htmlspecialchars($this->params["form"]["capacity"]); $allocate = htmlspecialchars($this->params["form"]["allocate"]); //validate $xml = ""; $xml .= "".$name.""; $xml .= "".$capacity.""; $xml .= "".$allocate.""; $xml .= ""; $con = WebVirtUtil::GetConnection(); if($con === FALSE){ $this->set("content","libvirt Error : ".libvirt_get_last_error()); $this->render("error"); return; } $res = @libvirt_storagepool_lookup_by_uuid_string($con,$id); if($res === FALSE){ $this->set("content","libvirt Error : ".libvirt_get_last_error()); $this->render("error"); return; } $ret = @libvirt_storagevolume_create_xml($res,$xml); if($ret === FALSE){ $this->set("content","libvirt Error : ".libvirt_get_last_error()); $this->render("error"); return; } $info = @libvirt_storagevolume_get_info($ret); $info["name"] = $name; $info["path"] = @libvirt_storagevolume_get_path($ret); $this->set("content",$name." was successfully created"); $this->set("volumeinfo",$info); } } ?>