コード例 #1
0
ファイル: OscarsService.php プロジェクト: ufrgs-hyman/meican
 private static function saveCircuit($gri, $desc, $status, $start, $end, $bandwidth, $path)
 {
     $conn = Connection::findOne(['external_id' => $gri]);
     if ($conn == null) {
         $conn = new Connection();
         $conn->external_id = $gri;
         $conn->name = $desc;
         $conn->type = 'OSCARS';
         $conn->status = 'PROVISIONED';
         $conn->version = 1;
         $conn->dataplane_status = $status == 'ACTIVE' ? 'ACTIVE' : 'INACTIVE';
         $conn->auth_status = 'UNEXECUTED';
         $conn->resources_status = 'PROVISIONED';
         $conn->start = DateUtils::timestampToDB($start);
         $conn->finish = DateUtils::timestampToDB($end);
         $conn->bandwidth = $bandwidth;
         if ($conn->save()) {
             Yii::trace($path);
             for ($i = 0; $i < count($path); $i++) {
                 $point = new ConnectionPath();
                 $point->conn_id = $conn->id;
                 $point->path_order = $i;
                 $urnArray = explode(":", $path[$i]);
                 Yii::trace($urnArray);
                 $point->vlan = explode('=', $urnArray[7])[1];
                 Yii::trace($point->vlan);
                 $point->domain = explode('=', $urnArray[3])[1];
                 Yii::trace($point->domain);
                 $urnArray[7] = '';
                 $urnArray[6] = '';
                 $point->port_urn = substr(implode(':', $urnArray), 0, -2);
                 Yii::trace($point->port_urn);
                 $point->save();
             }
             OscarsService::associateNSICircuits($conn);
         } else {
             Yii::trace($conn->getErrors());
         }
     } else {
         $conn->dataplane_status = $status == 'ACTIVE' ? 'ACTIVE' : 'INACTIVE';
         $conn->save();
     }
 }
コード例 #2
0
ファイル: Reservation.php プロジェクト: ufrgs-hyman/meican
 public function createConnections($events)
 {
     $paths = $this->getPaths()->all();
     Yii::trace($events);
     for ($i = 0; $i < count($events['start']); $i++) {
         $conn = new Connection();
         $date = new \DateTime($events['start'][$i]);
         $conn->start = $date->format('Y-m-d H:i');
         $date = new \DateTime($events['finish'][$i]);
         $conn->finish = $date->format('Y-m-d H:i');
         $conn->reservation_id = $this->id;
         $conn->status = Connection::STATUS_PENDING;
         $conn->dataplane_status = Connection::DATA_STATUS_INACTIVE;
         $conn->auth_status = Connection::AUTH_STATUS_UNEXECUTED;
         $conn->resources_status = Connection::RES_STATUS_RELEASED;
         $conn->version = 0;
         $conn->bandwidth = $this->bandwidth;
         $conn->type = Connection::TYPE_NSI;
         if ($conn->save()) {
             $k = 0;
             foreach ($paths as $resPath) {
                 $connPath = new ConnectionPath();
                 $connPath->path_order = $k;
                 $connPath->conn_id = $conn->id;
                 $connPath->domain = explode(":", $resPath->port_urn)[0];
                 $k++;
                 $connPath->port_urn = $resPath->port_urn;
                 $connPath->vlan = $resPath->vlan;
                 $connPath->save();
             }
         } else {
             Yii::trace($conn->getErrors());
         }
     }
 }
コード例 #3
0
 private function updateConnectionPath($conn, $response)
 {
     //updating path
     //clean old points
     $oldPaths = $conn->getPaths()->all();
     foreach ($oldPaths as $oldPath) {
         $oldPath->delete();
     }
     //save new points
     $pathNodes = $response->reservation->criteria->children->child;
     if (count($pathNodes) < 2) {
         $pathNodes = [$pathNodes];
     }
     Yii::trace(print_r($pathNodes, true));
     $i = 0;
     foreach ($pathNodes as $pathNode) {
         Yii::trace(print_r($pathNode, true));
         $pathNodeXml = $pathNode->any;
         $pathNodeXml = str_replace("<nsi_p2p:p2ps>", "<p2p>", $pathNodeXml);
         $pathNodeXml = str_replace("</nsi_p2p:p2ps>", "</p2p>", $pathNodeXml);
         $pathNodeXml = '<?xml version="1.0" encoding="UTF-8"?>' . $pathNodeXml;
         $xml = new \DOMDocument();
         $xml->loadXML($pathNodeXml);
         $parser = new \DOMXpath($xml);
         $src = $parser->query("//sourceSTP");
         $dst = $parser->query("//destSTP");
         $path = new ConnectionPath();
         $path->conn_id = $conn->id;
         $path->path_order = $i;
         $i++;
         $path->setPortBySTP($src->item(0)->nodeValue);
         $path->setDomainBySTP($src->item(0)->nodeValue);
         if (!$path->save()) {
             Yii::trace($path);
             return false;
         }
         $path = new ConnectionPath();
         $path->conn_id = $conn->id;
         $path->path_order = $i;
         $i++;
         $path->setPortBySTP($dst->item(0)->nodeValue);
         $path->setDomainBySTP($dst->item(0)->nodeValue);
         if (!$path->save()) {
             Yii::trace($path);
             return false;
         }
     }
     return true;
 }