Esempio n. 1
0
 public function updateContextScriptVMIInstances($script, $vmiinstances)
 {
     $changes = array("deleted" => array(), "added" => array());
     //remove associated vmi instances which are no longer wanted
     $m = new Default_Model_VMIinstanceContextScripts();
     $f1 = new Default_Model_VMIinstanceContextScriptsFilter();
     $f2 = new Default_Model_VMIinstanceContextScriptsFilter();
     $f1->contextscriptid->numequals($script->id);
     $f2->vmiinstanceid->notin($vmiinstances);
     $m->filter->chain($f1->chain($f2, "AND"), "AND");
     if (count($m->items) > 0) {
         foreach ($m->items as $item) {
             $changes["deleted"][] = $item->vmiinstanceid;
             $item->getMapper()->delete($item);
         }
     }
     //collect already existing vmi instances
     $excludeids = array();
     $m = new Default_Model_VMIinstanceContextScripts();
     $f1 = new Default_Model_VMIinstanceContextScriptsFilter();
     $f2 = new Default_Model_VMIinstanceContextScriptsFilter();
     $f1->contextscriptid->numequals($script->id);
     $f2->vmiinstanceid->in($vmiinstances);
     $m->filter->chain($f1->chain($f2, "AND"), "AND");
     if (count($m->items) > 0) {
         foreach ($m->items as $item) {
             if ($item->hasContext()) {
                 $excludeids[] = "" . $item->vmiinstanceid;
             }
         }
     }
     //get final vmi instances to be included
     for ($i = 0; $i < count($vmiinstances); $i += 1) {
         if (in_array($vmiinstances[$i], $excludeids) === false) {
             $item = new Default_Model_VMIinstanceContextScript();
             $item->vmiinstanceid = $vmiinstances[$i];
             $item->contextscriptid = $script->id;
             if ($this->user !== null) {
                 $item->addedbyID = $this->user->id;
             }
             $item->save();
             $changes["added"][] = $vmiinstances[$i];
         }
     }
     if (count($changes["added"]) > 0 || count($changes["deleted"]) > 0) {
         return true;
     }
     return false;
 }
Esempio n. 2
0
 private static function relateScriptToVmiInstance($vmiinstanceid, $script, $user, $usetransaction = true)
 {
     self::clearVmiInstances($vmiinstanceid, $user->id, $usetransaction);
     //Associate context script entry with vmi instance
     $vmiscript = new Default_Model_VMIinstanceContextScript();
     $vmiscript->vmiinstanceid = $vmiinstanceid;
     $vmiscript->contextscriptid = $script->id;
     $vmiscript->addedbyid = $user->id;
     $vmiscript->save();
     return $script;
 }
Esempio n. 3
0
 public function syncContextScript($contextscriptxml, $vmiinstance)
 {
     if ($contextscriptxml === null || !$vmiinstance) {
         return true;
     }
     $contextscript = null;
     $url = $contextscriptxml->xpath("./virtualization:url");
     if (count($url) > 0) {
         $url = trim(strval($url[0]));
     } else {
         $url = "";
     }
     $id = trim(strval($contextscriptxml->attributes()->id));
     if ($id === "" || is_numeric($id) && intval($id) <= 0) {
         if ($url !== "") {
             $contextscript = $this->findContextScriptByUrl($url);
         }
         if ($contextscript === null) {
             $contextscript = $this->createContextScript($contextscriptxml);
             if ($contextscript !== false && is_string($contextscript) === false) {
                 VapplianceStorage::store($contextscript, $vmiinstance->id, $contextscript->addedbyid);
             }
         }
     } else {
         if (is_numeric($id) && intval($id) > 0) {
             $contextscript = $this->getContextScriptById($id);
         }
     }
     if (is_string($contextscript)) {
         return $contextscript;
     }
     try {
         //Clear existing relations to context scripts for this vmi instance
         $vmiinstacnescripts = new Default_Model_VMIinstanceContextScripts();
         $vmiinstacnescripts->filter->vmiinstanceid = $vmiinstance->id;
         if (count($vmiinstacnescripts->items) > 0) {
             foreach ($vmiinstacnescripts->items as $item) {
                 $vmiinstacnescripts->remove($item);
             }
         }
         //create new relation to context scripts for this vmi instance
         $user = $this->_parent->getUser();
         $vmiinstancecontextscript = new Default_Model_VMIinstanceContextScript();
         $vmiinstancecontextscript->vmiinstanceid = $vmiinstance->id;
         $vmiinstancecontextscript->contextscriptid = $contextscript->id;
         if ($user) {
             $vmiinstancecontextscript->addedbyid = $user->id;
         }
         $vmiinstancecontextscript->save();
     } catch (Exception $ex) {
         return $ex->getMessage();
     }
     return true;
 }