Esempio n. 1
0
		"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/');
Esempio n. 2
0
 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;
 }