Example #1
0
 public function dependsOnIt(EtvaAsynchronousJob $j1, EtvaAsynchronousJob $j2)
 {
     if ($j2->getTasknamespace() == 'logicalvolume') {
         $j2_args = (array) json_decode($j1->getArguments());
         $j2_opts = (array) json_decode($j1->getOptions());
         $etva_node = EtvaNodePeer::getOrElectNodeFromArray(array_merge($j2_opts, $j2_args));
         if ($etva_node) {
             // original logical volume
             $original_lv = $j2_args['original'];
             $original_vg = $j2_opts['original-volumegroup'];
             // find orignal logical volume
             $etva_original_lv = $etva_node->retrieveLogicalvolumeByAny($original_lv, $original_vg);
             if ($etva_original_lv) {
                 $j1_args = (array) json_decode($j1->getArguments());
                 $lv_servers = $etva_original_lv->getServers();
                 // get servers where logical volume is attached
                 foreach ($lv_servers as $srv) {
                     if ($srv->getId() == $j1_args['server'] || $srv->getUuid() == $j1_args['server'] || $srv->getName() == $j1_args['server']) {
                         return true;
                         // depends on it
                     }
                 }
             }
         }
     }
     return false;
 }