public function actionGetAll($status, $type) { self::beginAsyncAction(); $data = Yii::$app->cache->get('circuits.oscars.all'); if ($data === false) { OscarsService::loadCircuits(Yii::$app->params['oscars.bridge.provider.url']); // store $data in cache so that it can be retrieved next time Yii::$app->cache->set('circuits.oscars.all', 'true', 120000); } $conns = Connection::find()->where(['dataplane_status' => $status, 'type' => $type])->with('fullPath')->asArray()->all(); return json_encode($conns); }
/** * Contact configured OSCARS instance, get (active and scheduled) circuits * and save in MEICAN database. */ public function actionLoadCircuits() { return OscarsService::loadCircuits(Yii::$app->params['oscars.bridge.provider.url']); }
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(); } }