"vappliance.permissions.manageversions" : "main:guides:general:permissions_guide#manage_virtual_appliance_versions", "vappliance.permissions.fullcontrol": "main:guides:general:permissions_guide#full_control", "swappliance.permissions.editmetadata" : "main:guides:general:permissions_guide#edit_information_publications", "swappliance.permissions.accessversions" : "main:guides:general:permissions_guide#access_private_data", "swappliance.permissions.managecontextscripts" : "main:guides:general:permissions_guide#manage_context_scripts", "swappliance.permissions.fullcontrol": "main:guides:general:permissions_guide#full_control", }, features:{ "logistics": true, "groupvaprovidertemplates": true, "swappliance": <?php echo Supports::swappliance() ? "true" : "false"; ?> , "singleVMIPolicy": <?php echo Supports::singleVMIPolicy() ? "true" : "false"; ?> , "email": <?php echo ApplicationConfiguration::email('enable', false) ? "true" : "false"; ?> } }; if( <?php echo $hasRepository; ?> ){ appdb.config.repository = { }; appdb.config.repository.endpoint = {}; appdb.config.repository.endpoint.base = "<?php echo ApplicationConfiguration::url('/repository/');
public function parseVAppImage($xml, $parent = null) { $m = $this->getItem("vmi", $xml); if (count($xml->xpath('./virtualization:notes')) > 0) { $m->notes = $xml->xpath('./virtualization:notes'); $m->notes = (string) $m->notes[0]; $m->notes = strip_tags($m->notes); if ($this->validateNotes($m->notes, "vmi") === false) { return $this->_setErrorMessage("Invalid notes value for VMI."); } } if (count($xml->xpath('./virtualization:description')) > 0) { $m->description = $xml->xpath('./virtualization:description'); $m->description = (string) $m->description[0]; $m->description = strip_tags($m->description); if ($this->validateDescription($m->description) === false) { return $this->_setErrorMessage("Invalid description value for virtual appliance version."); } } else { $m->description = ""; } if (count($xml->xpath('./virtualization:group')) > 0) { $m->groupname = $xml->xpath('./virtualization:group'); $m->groupname = (string) $m->groupname[0]; $m->groupname = strip_tags($m->groupname); if ($this->validateGroupname($m->groupname) === false) { return $this->_setErrorMessage("Invalid group value for VMI."); } if ($this->isexternalrequest === false) { $isunique = $this->isGroupNameUnique($m, $parent); if ($isunique === false) { return $this->_setErrorMessage("VMI Group values are used by other VMI groups in this version."); } } } //In case of a new vmi instance check if the user has given an identifier if (!$m->guid) { if (count($xml->xpath('./virtualization:identifier')) > 0) { $guid = $xml->xpath('./virtualization:identifier'); $guid = (string) $guid[0]; $guid = trim($guid); if (strlen($guid) > 0) { $m->guid = $guid; } } //check if user-defined identifier is in use from other entities(images, other application's vappliance versions etc if ($m->guid) { //check if user-defined identifier is in use from other entities(images, other application's vappliance versions etc $vaversions = new Default_Model_VAversions(); $vaversions->filter->guid->equals($m->guid); if (count($vaversions) > 0) { $vaversion = $vaversions->items[0]; $va = $vaversion->getVa(); if ($va) { $app = $va->getApplication(); if ($app) { return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used by " . $app->name . " virtual appliance."); } } return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used by another virtual appliance version."); } $vmis = new Default_Model_Vmis(); $vmis->filter->guid->equals($m->guid); if (count($vmis->items) > 0) { return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used by another virtual appliance image group."); } $vminstances = new Default_Model_VMIinstances(); $vminstances->filter->guid->equals($m->guid); if (count($vminstances->items) > 0) { return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used by another virtual appliance image."); } //Check if identifier is used inside a VO wide image list $voexists = self::VOGuidExists($m->guid); if ($voexists === true) { return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used in a virtual organization image list."); } else { if (is_string($voexists)) { return $this->_setErrorMessage("Image identifier " . $m->guid . " is already used by " . $voexists . " virtual organization image list."); } } } } if (count($xml->xpath('./virtualization:description')) > 0) { $m->description = $xml->xpath('./virtualization:description'); $m->description = (string) $m->description[0]; $m->description = strip_tags($m->description); if ($this->validateDescription($m->description) === false) { return $this->_setErrorMessage("Invalid description value for VMI."); } } $m->vappid = $parent->vappid; $m->name = $this->appname; $m->save(); //Retrieve current VMI Instances ids. $oldvmiinstanceids = $m->getWMIInstanceIds(); //Get VMIInstances of VMI $xinstances = $xml->xpath("./virtualization:instance"); $vmiinstances = array(); if (count($xinstances) > 0) { for ($i = 0; $i < count($xinstances); $i += 1) { $v = $this->parseVAppImageInstance($xinstances[$i], $m); if ($v === false) { return false; } $vmiinstances[] = $v; } } if (Supports::singleVMIPolicy() && count($vmiinstances) > 1) { return $this->_setErrorMessage("Only one VMI image per version is allowed"); } /* Delete old undefined vmi instances */ for ($i = 0; $i < count($vmiinstances); $i += 1) { $item = $vmiinstances[$i]; $index = -1; //find in old values for ($j = 0; $j < count($oldvmiinstanceids); $j += 1) { if ($item->id == $oldvmiinstanceids[$j]) { $index = $j; break; } } //Remove current vmi instance item from old values array if ($index > -1) { unset($oldvmiinstanceids[$index]); $oldvmiinstanceids = array_values($oldvmiinstanceids); } } /*Remove old vmi instances that are no longer defined in the request xml */ $oldvmiinstances = new Default_Model_VMIinstances(); $oldvmiinstances->filter->id->in($oldvmiinstanceids); if (count($oldvmiinstances->items) > 0) { for ($i = 0; $i < count($oldvmiinstances->items); $i += 1) { $item = $oldvmiinstances->items[$i]; $this->deleteContextScriptRelation($item->id); $item->delete(); } } //Check if remaining vmiinstances have duplicate urls for ($i = 0; $i < count($vmiinstances); $i += 1) { $vminst = $vmiinstances[$i]; //do not check url in deleted vmi instances if (in_array($vminst->id, $oldvmiinstanceids)) { continue; } $urlexists = $this->VMIInstanceUrlExists($vminst, $m); if ($urlexists === true) { return $this->_setErrorMessage("Duplicate url values in the same VMI group"); } } /*Associate VMIInstances with current VAVersion*/ $this->setupVAppList($parent, $vmiinstances); return $m; }