/** * @return MediaServerNode */ public function getMediaServer() { $mediaServer = ServerNodePeer::retrieveByPK($this->mediaServerId); if ($mediaServer instanceof MediaServerNode) { return $mediaServer; } return null; }
protected function internalFulfilled(kScope $scope) { KalturaLog::debug("Validating edge server [{$this->getEdgeServerIds()}] are active"); $edgeServers = ServerNodePeer::retrieveRegisteredServerNodesArrayByPKs($this->edgeServerIds); if (!count($edgeServers)) { KalturaLog::debug("Unable to find active edge in list, condition is false"); return false; } KalturaLog::debug("Found active edge in list, condition is true"); return true; }
public function buildEdgeFullPath($protocol = 'http', $format = null, $deliveryType = null, $assetType = null) { $edgeFullPath = rtrim($this->getedgePath($format, $deliveryType, $assetType), "/") . "/"; if ($this->parent_id) { $parentEdge = ServerNodePeer::retrieveByPK($this->parent_id); if ($parentEdge) { $edgeFullPath = $edgeFullPath . $parentEdge->buildEdgeFullPath($protocol, $format, $deliveryType, $assetType); } } return $edgeFullPath; }
protected function doGetListResponse(KalturaFilterPager $pager, $type = null) { $c = new Criteria(); if ($type) { $c->add(ServerNodePeer::TYPE, $type); } $serverNodeFilter = $this->toObject(); $serverNodeFilter->attachToCriteria($c); $pager->attachToCriteria($c); $list = ServerNodePeer::doSelect($c); $totalCount = count($list); return array($list, $totalCount); }
public function applyDeliveryProfileDynamicAttributes(DeliveryProfileDynamicAttributes $deliveryAttributes) { $edgeServerIds = explode(',', $this->getEdgeServerIds()); $edgeServers = ServerNodePeer::retrieveOrderedServerNodesArrayByPKs($edgeServerIds); if (!count($edgeServers)) { return false; } foreach ($edgeServers as $edgeServer) { $activeEdgeServerIds[] = $edgeServer->getId(); } $deliveryAttributes->setEdgeServerIds($activeEdgeServerIds); return true; }
public static function retrieveOrderedServerNodesArrayByPKs($pks, PropelPDO $con = null) { if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(ServerNodePeer::DATABASE_NAME); $criteria->add(ServerNodePeer::ID, $pks, Criteria::IN); $criteria->add(ServerNodePeer::STATUS, ServerNodeStatus::ACTIVE); $orderBy = "FIELD (" . self::ID . "," . implode(",", $pks) . ")"; // first take the pattner_id and then the rest $criteria->addAscendingOrderByColumn($orderBy); $objs = ServerNodePeer::doSelect($criteria, $con); } return $objs; }
protected function internalFulfilled(kScope $scope) { KalturaLog::debug("Validating edge server [{$this->getEdgeServerIds()}] are active"); $edgeServers = ServerNodePeer::retrieveRegisteredServerNodesArrayByPKs($this->edgeServerIds); if (!count($edgeServers)) { KalturaLog::debug("Unable to find active edge in list, condition is false"); return false; } $isFulfilled = false; foreach ($edgeServers as $edgeServer) { /* @var $edgeServer EdgeServerNode */ if ($edgeServer->validateEdgeTreeRegistered()) { $isFulfilled = true; KalturaLog::debug("Found active edge in list, condition is true"); break; } } return $isFulfilled; }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(ServerNodePeer::DATABASE_NAME); $criteria->add(ServerNodePeer::ID, $pks, Criteria::IN); $objs = ServerNodePeer::doSelect($criteria, $con); } return $objs; }
/** * @return MediaServerNode */ public function getMediaServer() { return ServerNodePeer::retrieveByPK($this->mediaServerId); }
/** * Update server node status * * @action reportStatus * @param string $hostName * @return KalturaServerNode */ function reportStatusAction($hostName, KalturaServerNode $serverNode = null) { $dbServerNode = ServerNodePeer::retrieveActiveServerNodes($hostName, $this->getPartnerId()); //Allow serverNodes auto registration without calling add if (!$dbServerNode) { if ($serverNode) { $dbServerNode = $this->addNewServerNode($serverNode); } else { throw new KalturaAPIException(KalturaErrors::SERVER_NODE_NOT_FOUND, $hostName); } } $dbServerNode->setHeartbeatTime(time()); $dbServerNode->save(); $serverNode = KalturaServerNode::getInstance($dbServerNode, $this->getResponseProfile()); return $serverNode; }
public function getFieldNameFromPeer($field_name) { $res = ServerNodePeer::translateFieldName($field_name, $this->field_name_translation_type, BasePeer::TYPE_COLNAME); return $res; }
/** * Serve XML rendition of the Kaltura Live Transcoding Profile usable by the Wowza transcoding add-on * * @action serve * @param string $streamName the id of the live entry with it's stream suffix * @param string $hostname the media server host name * @return file * * @throws KalturaErrors::ENTRY_ID_NOT_FOUND * @throws WowzaErrors::INVALID_STREAM_NAME */ public function serveAction($streamName, $hostname = null) { $matches = null; if (!preg_match('/^(\\d_.{8})_(\\d+)$/', $streamName, $matches)) { throw new KalturaAPIException(WowzaErrors::INVALID_STREAM_NAME, $streamName); } $entryId = $matches[1]; $suffix = $matches[2]; $entry = null; if (!kCurrentContext::$ks) { kEntitlementUtils::initEntitlementEnforcement(null, false); $entry = kCurrentContext::initPartnerByEntryId($entryId); if (!$entry || $entry->getStatus() == entryStatus::DELETED) { throw new KalturaAPIException(KalturaErrors::ENTRY_ID_NOT_FOUND, $entryId); } // enforce entitlement $this->setPartnerFilters(kCurrentContext::getCurrentPartnerId()); } else { $entry = entryPeer::retrieveByPK($entryId); } if (!$entry || $entry->getType() != KalturaEntryType::LIVE_STREAM || !in_array($entry->getSource(), array(KalturaSourceType::LIVE_STREAM, KalturaSourceType::LIVE_STREAM_ONTEXTDATA_CAPTIONS))) { throw new KalturaAPIException(KalturaErrors::ENTRY_ID_NOT_FOUND, $entryId); } $mediaServer = null; if ($hostname) { $mediaServer = ServerNodePeer::retrieveActiveServerNodes($hostname); } $conversionProfileId = $entry->getConversionProfileId(); $liveParams = assetParamsPeer::retrieveByProfile($conversionProfileId); $liveParamsInput = null; $disableIngested = true; foreach ($liveParams as $liveParamsItem) { /* @var $liveParamsItem liveParams */ if ($liveParamsItem->getStreamSuffix() == $suffix) { $liveParamsInput = $liveParamsItem; if (!$liveParamsInput->hasTag(assetParams::TAG_SOURCE)) { $liveParams = array($liveParamsInput); $disableIngested = false; } break; } } $ignoreLiveParamsIds = array(); if ($disableIngested) { $conversionProfileAssetParams = flavorParamsConversionProfilePeer::retrieveByConversionProfile($conversionProfileId); foreach ($conversionProfileAssetParams as $conversionProfileAssetParamsItem) { /* @var $conversionProfileAssetParamsItem flavorParamsConversionProfile */ if ($conversionProfileAssetParamsItem->getOrigin() == assetParamsOrigin::INGEST) { $ignoreLiveParamsIds[] = $conversionProfileAssetParamsItem->getFlavorParamsId(); } } } // translate the $liveParams to XML according to doc: http://www.wowza.com/forums/content.php?304#configTemplate $root = new SimpleXMLElement('<Root/>'); $transcode = $root->addChild('Transcode'); $encodes = $transcode->addChild('Encodes'); $groups = array(); foreach ($liveParams as $liveParamsItem) { /* @var $liveParamsItem liveParams */ if (!$liveParamsItem->hasTag(assetParams::TAG_SOURCE) && in_array($liveParamsItem->getId(), $ignoreLiveParamsIds)) { continue; } $this->appendLiveParams($entry, $mediaServer, $encodes, $liveParamsItem); $tags = $liveParamsItem->getTagsArray(); $tags[] = 'all'; foreach ($tags as $tag) { if (!isset($groups[$tag])) { $groups[$tag] = array(); } $systemName = $liveParamsItem->getSystemName() ? $liveParamsItem->getSystemName() : $liveParamsItem->getId(); $groups[$tag][] = $systemName; } } $decode = $transcode->addChild('Decode'); $video = $decode->addChild('Video'); $video->addChild('Deinterlace', 'false'); $streamNameGroups = $transcode->addChild('StreamNameGroups'); foreach ($groups as $groupName => $groupMembers) { $streamNameGroup = $streamNameGroups->addChild('StreamNameGroup'); $streamNameGroup->addChild('Name', $groupName); $streamNameGroup->addChild('StreamName', '${SourceStreamName}_' . $groupName); $members = $streamNameGroup->addChild('Members'); foreach ($groupMembers as $groupMember) { $member = $members->addChild('Member'); $member->addChild('EncodeName', $groupMember); } } $properties = $transcode->addChild('Properties'); $dom = new DOMDocument("1.0"); $dom->preserveWhiteSpace = false; $dom->formatOutput = true; $dom->loadXML($root->asXML()); return new kRendererString($dom->saveXML(), 'text/xml'); }
public function getDeliveryServerNodeUrl($removeAfterUse = false) { $deliveryUrl = null; $deliveryNodeIds = $this->params->getEdgeServerIds(); $deliveryNodes = ServerNodePeer::retrieveRegisteredServerNodesArrayByPKs($deliveryNodeIds); if (!count($deliveryNodes)) { KalturaLog::debug("No active delivery nodes found among the requested edge list: " . print_r($deliveryNodeIds, true)); return null; } $deliveryNode = null; foreach ($deliveryNodes as $node) { /* @var $node EdgeServerNode */ if ($node->validateEdgeTreeRegistered()) { $deliveryNode = $node; break; } } if (!$deliveryNode) { KalturaLog::debug("Active edges were found but non of them is active, Failed to build valid serving route"); return null; } $deliveryUrl = $deliveryNode->getPlaybackHost($this->params->getMediaProtocol(), $this->params->getFormat(), $this->getType()); if (count($deliveryNodes) && $removeAfterUse) { $this->params->setEdgeServerIds(array_diff($deliveryNodeIds, array($deliveryNode->getId()))); } return $deliveryUrl; }
/** * Builds a Criteria object containing the primary key for this object. * * Unlike buildCriteria() this method includes the primary key values regardless * of whether or not they have been modified. * * @return Criteria The Criteria object containing value(s) for primary key(s). */ public function buildPkeyCriteria() { $criteria = new Criteria(ServerNodePeer::DATABASE_NAME); $criteria->add(ServerNodePeer::ID, $this->id); if ($this->alreadyInSave) { if ($this->isColumnModified(ServerNodePeer::CUSTOM_DATA)) { if (!is_null($this->custom_data_md5)) { $criteria->add(ServerNodePeer::CUSTOM_DATA, "MD5(cast(" . ServerNodePeer::CUSTOM_DATA . " as char character set latin1)) = '{$this->custom_data_md5}'", Criteria::CUSTOM); } else { $criteria->add(ServerNodePeer::CUSTOM_DATA, NULL, Criteria::ISNULL); } } if (count($this->modifiedColumns) == 2 && $this->isColumnModified(ServerNodePeer::UPDATED_AT)) { $theModifiedColumn = null; foreach ($this->modifiedColumns as $modifiedColumn) { if ($modifiedColumn != ServerNodePeer::UPDATED_AT) { $theModifiedColumn = $modifiedColumn; } } $atomicColumns = ServerNodePeer::getAtomicColumns(); if (in_array($theModifiedColumn, $atomicColumns)) { $criteria->add($theModifiedColumn, $this->getByName($theModifiedColumn, BasePeer::TYPE_COLNAME), Criteria::NOT_EQUAL); } } } return $criteria; }
public function getDeliveryServerNodeUrl($removeAfterUse = false) { $deliveryUrl = null; $deliveryNodeIds = $this->params->getEdgeServerIds(); $deliveryNodes = ServerNodePeer::retrieveRegisteredServerNodesArrayByPKs($deliveryNodeIds); if (!count($deliveryNodes)) { KalturaLog::debug("No active delivery nodes found among the requested edge list: " . print_r($deliveryNodeIds, true)); return null; } /* @var $deliveryNode EdgeServerNode */ $deliveryNode = array_shift($deliveryNodes); $deliveryUrl = $deliveryNode->getPlaybackHost($this->params->getMediaProtocol(), $this->params->getFormat(), $this->getType()); if (count($deliveryNodes) && $removeAfterUse) { $this->params->setEdgeServerIds(array_diff($deliveryNodeIds, array($deliveryNode->getId()))); } return $deliveryUrl; }
public function setMediaServer($index, $hostname, $applicationName = null) { if (is_null($this->getFirstBroadcast())) { $this->setFirstBroadcast(kApiCache::getTime()); } $mediaServerNode = ServerNodePeer::retrieveActiveServerNodes($hostname); if (!$mediaServerNode) { throw new kCoreException("Media server with host name [{$hostname}] not found", kCoreException::MEDIA_SERVER_NOT_FOUND); } $key = $this->getId() . "_{$hostname}_{$index}"; if ($this->storeInCache($key) && $this->isMediaServerRegistered($index, $hostname)) { KalturaLog::debug("cached and registered - index: {$index}, hostname: {$hostname}"); return; } KalturaLog::debug("about to setMediaServer. index: {$index}, hostname: {$hostname}"); $this->setLastBroadcast(kApiCache::getTime()); $server = new kLiveMediaServer($index, $hostname, $mediaServerNode->getDc(), $mediaServerNode->getId(), $applicationName ? $applicationName : $mediaServerNode->getApplicationName()); $this->putInCustomData("server-{$index}", $server, LiveEntry::CUSTOM_DATA_NAMESPACE_MEDIA_SERVERS); $this->setLiveStatus(LiveEntryStatus::PLAYABLE); }
public function validateSystemNameDuplication($serverNodeId = null, $type) { $c = KalturaCriteria::create(ServerNodePeer::OM_CLASS); if ($serverNodeId) { $c->add(ServerNodePeer::ID, $serverNodeId, Criteria::NOT_EQUAL); } $c->add(ServerNodePeer::SYSTEM_NAME, $this->systemName); $c->add(ServerNodePeer::TYPE, $type); if (ServerNodePeer::doCount($c)) { throw new KalturaAPIException(KalturaErrors::SYSTEM_NAME_ALREADY_EXISTS, $this->systemName); } }
public function getRegiteredNodeServers() { $edgeServerIds = explode(',', $this->getEdgeServerIds()); $edgeServers = ServerNodePeer::retrieveRegisteredServerNodesArrayByPKs($edgeServerIds); return $edgeServers; }
public function validateEdgeTreeRegistered() { /* @var $edgeServer EdgeServerNode */ $parentId = $this->getParentId(); if ($parentId) { $parentEdge = ServerNodePeer::retrieveRegisteredServerNodeByPk($parentId); if (!$parentEdge) { return false; } return $parentEdge->validateEdgeTreeRegistered(); } return true; }