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(); } }
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()); } } }
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; }