Example #1
0
 public function save()
 {
     $this->reservation = new Reservation();
     $this->reservation->type = Reservation::TYPE_NORMAL;
     $this->reservation->name = $this->name;
     $this->reservation->date = DateUtils::now();
     $this->reservation->bandwidth = $this->bandwidth;
     $this->reservation->requester_nsa = CircuitsPreference::findOneValue(CircuitsPreference::MEICAN_NSA);
     $this->reservation->provider_nsa = CircuitsPreference::findOneValue(CircuitsPreference::CIRCUITS_DEFAULT_PROVIDER_NSA);
     $this->reservation->request_user_id = Yii::$app->user->getId();
     if ($this->reservation->save()) {
         for ($i = 0; $i < count($this->path['port']); $i++) {
             $path = new ReservationPath();
             $path->reservation_id = $this->reservation->id;
             if ($this->path['mode'][$i] == 'normal') {
                 $path->port_urn = Port::find()->where(['id' => $this->path['port'][$i]])->one()->urn;
             } else {
                 $path->port_urn = str_replace('urn:ogf:network:', '', $this->path['urn'][$i]);
             }
             $path->path_order = $i;
             $path->vlan = $this->path['vlan'][$i];
             if (!$path->save()) {
                 Yii::trace($path->getErrors());
             }
         }
         $this->reservation->createConnections($this->events);
     }
     Yii::trace($this->reservation->getErrors());
     return true;
 }
Example #2
0
 public function save()
 {
     $pref = CircuitsPreference::findOne(CircuitsPreference::MEICAN_NSA);
     $pref->value = $this->meicanNsa;
     if (!$pref->save()) {
         return false;
     }
     $pref = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_DEFAULT_PROVIDER_NSA);
     $pref->value = $this->defaultProviderNsa;
     if (!$pref->save()) {
         return false;
     }
     $pref = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_DEFAULT_CS_URL);
     $pref->value = $this->defaultCSUrl;
     if (!$pref->save()) {
         return false;
     }
     $pref = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_UNIPORT_ENABLED);
     $pref->value = $this->uniportsEnabled;
     if (!$pref->save()) {
         return false;
     }
     $pref = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_PROTOCOL);
     $pref->value = $this->protocol;
     if (!$pref->save()) {
         return false;
     }
     return true;
 }
Example #3
0
 private function checkRequesterUrl()
 {
     $pref = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_MEICAN_REQUESTER_URL);
     if ($pref) {
         $url = Url::toRoute("/circuits/requester", "http");
         if ($pref->value != $url) {
             $pref->value = $url;
             $pref->save();
         }
     }
 }
Example #4
0
 function __construct($conn)
 {
     $this->conn = $conn;
     //if ($conn) $this->res = $conn->getReservation()->one();
     /*$defaultNsa = CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_DEFAULT_PROVIDER_NSA)->value;
       if ($this->res && ($this->res->provider_nsa != $defaultNsa)) {
           return new \Exception("Provider enabled is not equal the reservation provider.");
       }*/
     if (Yii::$app->id == "meican-console") {
         $meicanRequesterUrl = CircuitsPreference::findOneValue(CircuitsPreference::CIRCUITS_MEICAN_REQUESTER_URL);
     } else {
         $meicanRequesterUrl = Url::toRoute("/circuits/nsi/requester", "http");
     }
     $this->soapClient = new ConnectionRequesterClient("urn:ogf:network:" . CircuitsPreference::findOneValue(CircuitsPreference::MEICAN_NSA), $meicanRequesterUrl, "urn:ogf:network:" . CircuitsPreference::findOneValue(CircuitsPreference::CIRCUITS_DEFAULT_PROVIDER_NSA), CircuitsPreference::findOneValue(CircuitsPreference::CIRCUITS_DEFAULT_CS_URL), realpath(__DIR__ . "/../../../../certificates/" . \Yii::$app->params['certificate.filename']), Yii::$app->params['certificate.pass']);
 }
Example #5
0
 public function actionIndex()
 {
     if (!self::can('configuration/read')) {
         return $this->goHome();
     }
     $config = new ConfigurationForm();
     $config->setPreferences(CircuitsPreference::findAll());
     if ($config->load($_POST)) {
         if (!self::can('configuration/update')) {
             Yii::$app->getSession()->addFlash("warning", Yii::t("circuits", "You are not allowed to update the configurations"));
             return $this->render('config', array('model' => $config));
         }
         if ($config->validate() && $config->save()) {
             Yii::$app->getSession()->addFlash("success", Yii::t("circuits", "Configurations saved successfully"));
         } else {
             foreach ($config->getErrors() as $attribute => $error) {
                 Yii::$app->getSession()->addFlash("error", $error[0]);
             }
             $config->clearErrors();
         }
     }
     return $this->render('index', array('model' => $config));
 }
Example #6
0
 public function save()
 {
     $this->reservation = new Reservation();
     $this->reservation->type = Reservation::TYPE_TEST;
     $this->reservation->name = Test::AT_PREFIX;
     $this->reservation->date = DateUtils::now();
     $this->reservation->start = DateUtils::now();
     $this->reservation->finish = DateUtils::now();
     $this->reservation->bandwidth = 10;
     $this->reservation->requester_nsa = CircuitsPreference::findOneValue(CircuitsPreference::MEICAN_NSA);
     $this->reservation->provider_nsa = CircuitsPreference::findOneValue(CircuitsPreference::CIRCUITS_DEFAULT_PROVIDER_NSA);
     $this->reservation->request_user_id = Yii::$app->user->getId();
     //Confere se usuário tem permissão para testar na origem OU no destino
     $source = Port::findOne(['id' => $this->src_port]);
     $destination = Port::findOne(['id' => $this->dst_port]);
     $permission = false;
     if ($source) {
         $source = $source->getDevice()->one();
         if ($source) {
             $domain = $source->getDomain()->one();
             if ($domain && RbacController::can('test/create', $domain->name)) {
                 $permission = true;
             }
         }
     }
     if ($destination) {
         $destination = $destination->getDevice()->one();
         if ($destination) {
             $domain = $destination->getDomain()->one();
             if ($domain && RbacController::can('test/create', $domain->name)) {
                 $permission = true;
             }
         }
     }
     if (!$permission) {
         Yii::$app->getSession()->addFlash("warning", Yii::t("circuits", "You are not allowed to create a automated test involving these selected domains"));
         return false;
     }
     if ($this->reservation->save()) {
         $this->reservation->name .= $this->reservation->id;
         $this->reservation->save();
         $path = new ReservationPath();
         $path->reservation_id = $this->reservation->id;
         $path->port_urn = Port::findOne($this->src_port)->urn;
         $path->path_order = 0;
         $path->vlan = $this->src_vlan;
         if (!$path->save()) {
             Yii::trace($path->getErrors());
             return false;
         }
         $path = new ReservationPath();
         $path->reservation_id = $this->reservation->id;
         $path->port_urn = Port::findOne($this->dst_port)->urn;
         $path->path_order = 1;
         $path->vlan = $this->dst_vlan;
         if (!$path->save()) {
             Yii::trace($path->getErrors());
             return false;
         }
         $task = new ScheduledTask();
         $task->freq = $this->cron_value;
         $task->obj_class = 'meican\\tester\\models\\Test';
         $task->obj_data = $this->reservation->id;
         if (!$task->save()) {
             Yii::trace($task->getErrors());
             return false;
         }
     } else {
         Yii::trace($this->reservation->getErrors());
         return false;
     }
     return true;
 }
 public function actionGetPortByDevice($id, $cols = null)
 {
     $query = Port::find()->where(['device_id' => $id])->orderBy(['name' => 'SORT ASC'])->asArray();
     if (!CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_UNIPORT_ENABLED)->getBoolean()) {
         $query->andWhere(['directionality' => Port::DIR_BI]);
     }
     if (CircuitsPreference::findOne(CircuitsPreference::CIRCUITS_PROTOCOL)->value == Service::TYPE_NSI_CSP_2_0) {
         $query->andWhere(['type' => Port::TYPE_NSI]);
     }
     $cols ? $data = $query->select(json_decode($cols))->all() : ($data = $query->all());
     $temp = Json::encode($data);
     Yii::trace($temp);
     return $temp;
 }