/** * * Starts the bulk upload * @param KalturaBatchJob $job */ private function startBulkUpload(KalturaBatchJob $job) { KalturaLog::info("Start bulk upload ({$job->id})"); //Gets the right Engine instance $engine = KBulkUploadEngine::getEngine($job->jobSubType, $job); if (is_null($engine)) { throw new KalturaException("Unable to find bulk upload engine", KalturaBatchJobAppErrors::ENGINE_NOT_FOUND); } $job = $this->updateJob($job, 'Parsing file [' . $engine->getName() . ']', KalturaBatchJobStatus::QUEUED, $engine->getData()); $engine->setJob($job); $engine->setData($job->data); $engine->handleBulkUpload(); $job = $engine->getJob(); $data = $engine->getData(); $countObjects = $this->countCreatedObjects($job->id, $job->data->bulkUploadObjectType); $countHandledObjects = $countObjects[0]; $countErrorObjects = $countObjects[1]; if (!$countHandledObjects && !$engine->shouldRetry() && $countErrorObjects) { throw new KalturaBatchException("None of the uploaded items were processed succsessfuly", KalturaBatchJobAppErrors::BULK_NO_ENTRIES_HANDLED, $engine->getData()); } if ($engine->shouldRetry()) { self::$kClient->batch->resetJobExecutionAttempts($job->id, $this->getExclusiveLockKey(), $job->jobType); return $this->closeJob($job, null, null, "Retrying: " . $countHandledObjects . " " . $engine->getObjectTypeTitle() . " objects were handled untill now", KalturaBatchJobStatus::RETRY); } return $this->closeJob($job, null, null, 'Waiting for objects closure', KalturaBatchJobStatus::ALMOST_DONE, $data); }
/** * * Starts the bulk upload * @param KalturaBatchJob $job */ private function startBulkUpload(KalturaBatchJob $job) { KalturaLog::debug("startBulkUpload({$job->id})"); //Gets the right Engine instance $engine = KBulkUploadEngine::getEngine($job->jobSubType, $this->taskConfig, $this->kClient, $job); if (is_null($engine)) { throw new KalturaException("Unable to find bulk upload engine", KalturaBatchJobAppErrors::ENGINE_NOT_FOUND); } $this->updateJob($job, 'Parsing file [' . $engine->getName() . ']', KalturaBatchJobStatus::QUEUED, 1); $openedEntries = $this->kClient->batch->updateBulkUploadResults($job->id); if ($openedEntries) { KalturaLog::debug("There are open objects on the job so we wait for them"); $this->kClient->batch->resetJobExecutionAttempts($job->id, $this->getExclusiveLockKey(), $job->jobType); return $this->closeJob($job, null, null, null, KalturaBatchJobStatus::RETRY); } $engine->handleBulkUpload(); $job = $engine->getJob(); $data = $engine->getData(); $countHandledObjects = $this->countCreatedObjects($job->id, $job->data->bulkUploadObjectType); if (!$countHandledObjects) { throw new KalturaBatchException("None of the uploaded items were processed succsessfuly", KalturaBatchJobAppErrors::BULK_NO_ENTRIES_HANDLED); } if ($engine->shouldRetry()) { $handledObjectsTypeName = $this->getBulkUploadObectTypeName($job->data->bulkUploadObjectType); KalturaLog::debug("Set the job to retry"); $this->kClient->batch->resetJobExecutionAttempts($job->id, $this->getExclusiveLockKey(), $job->jobType); return $this->closeJob($job, null, null, "Retrying: [{$countHandledObjects}] {$handledObjectsTypeName} objects were handled untill now", KalturaBatchJobStatus::RETRY); } return $this->closeJob($job, null, null, 'Waiting for objects closure', KalturaBatchJobStatus::ALMOST_DONE, $data); }
/** * (non-PHPdoc) * @see KBulkUploadEngine::addBulkUploadResult() */ protected function addBulkUploadResult(KalturaBulkUploadResult $bulkUploadResult) { parent::addBulkUploadResult($bulkUploadResult); $this->handledRecordsThisRun++; //adds one to the count of handled records }
protected function addBulkUploadResult(KalturaBulkUploadResult $bulkUploadResult) { parent::addBulkUploadResult($bulkUploadResult); }
/** * Update widevine asset properties * If flavorAssetId is not set find asset by entryID and flavorParamsId * * @param string $entryId * @param SimpleXMLElement $widevineAssetElm */ private function handleWidevineAsset($entryId, SimpleXMLElement $widevineAssetElm) { $widevineAsset = new KalturaWidevineFlavorAsset(); $widevineAsset->widevineAssetId = $widevineAssetElm->widevineAssetId; if ($widevineAssetElm->widevineDistributionStartDate) { $widevineAsset->widevineDistributionStartDate = KBulkUploadEngine::parseFormatedDate((string) $widevineAssetElm->widevineDistributionStartDate); } if ($widevineAssetElm->widevineDistributionEndDate) { $widevineAsset->widevineDistributionEndDate = KBulkUploadEngine::parseFormatedDate((string) $widevineAssetElm->widevineDistributionEndDate); } $flavorAssetId = null; if (isset($widevineAssetElm['flavorAssetId'])) { $flavorAssetId = $widevineAssetElm['flavorAssetId']; } if (!$flavorAssetId) { $flavorParamsId = $widevineAssetElm->flavorParamsId; $filter = new KalturaAssetFilter(); $filter->entryIdEqual = $entryId; $flavorAssetList = KBatchBase::$kClient->flavorAsset->listAction($filter); if ($flavorAssetList->objects) { foreach ($flavorAssetList->objects as $flavorAsset) { if ($flavorAsset->flavorParamsId == $flavorParamsId) { $flavorAssetId = $flavorAsset->id; } } } } if ($flavorAssetId) { KalturaLog::debug("updating flavor asset: " . $flavorAssetId); KBatchBase::$kClient->flavorAsset->update($flavorAssetId, $widevineAsset); } }
public function handleDistribution($entryId, SimpleXMLElement $distribution) { $distributionProfileId = null; if (!empty($distribution->distributionProfileId)) { $distributionProfileId = (int) $distribution->distributionProfileId; } if (!$distributionProfileId && (!empty($distribution->distributionProfile) || !empty($distribution->distributionProvider))) { $distributionProfileId = $this->getDistributionProfileId($distribution->distributionProfile, $distribution->distributionProvider); } if (!$distributionProfileId) { throw new KalturaBatchException("Missing custom data distributionProfile attribute", KalturaBatchJobAppErrors::BULK_MISSING_MANDATORY_PARAMETER); } $distributionPlugin = KalturaContentDistributionClientPlugin::get($this->xmlBulkUploadEngine->getClient()); $entryDistributionFilter = new KalturaEntryDistributionFilter(); $entryDistributionFilter->distributionProfileIdEqual = $distributionProfileId; $entryDistributionFilter->entryIdEqual = $entryId; $pager = new KalturaFilterPager(); $pager->pageSize = 1; $entryDistributionResponse = $distributionPlugin->entryDistribution->listAction($entryDistributionFilter, $pager); $entryDistribution = new KalturaEntryDistribution(); $entryDistributionId = null; if (is_array($entryDistributionResponse->objects) && count($entryDistributionResponse->objects) > 0) { $existingEntryDistribution = reset($entryDistributionResponse->objects); $entryDistributionId = $existingEntryDistribution->id; } else { $entryDistribution->entryId = $entryId; $entryDistribution->distributionProfileId = $distributionProfileId; } if (!empty($distribution->sunrise) && KBulkUploadEngine::isFormatedDate($distribution->sunrise)) { $entryDistribution->sunrise = KBulkUploadEngine::parseFormatedDate($distribution->sunrise); } if (!empty($distribution->sunset) && KBulkUploadEngine::isFormatedDate($distribution->sunset)) { $entryDistribution->sunset = KBulkUploadEngine::parseFormatedDate($distribution->sunset); } if (!empty($distribution->flavorAssetIds)) { $entryDistribution->flavorAssetIds = $distribution->flavorAssetIds; } if (!empty($distribution->thumbAssetIds)) { $entryDistribution->thumbAssetIds = $distribution->thumbAssetIds; } $submitWhenReady = false; if ($distribution['submitWhenReady']) { $submitWhenReady = true; } $this->xmlBulkUploadEngine->impersonate(); if ($entryDistributionId) { $updatedEntryDistribution = $distributionPlugin->entryDistribution->update($entryDistributionId, $entryDistribution); if ($submitWhenReady && $updatedEntryDistribution->dirtyStatus == KalturaEntryDistributionFlag::UPDATE_REQUIRED) { $distributionPlugin->entryDistribution->submitUpdate($entryDistributionId); } } else { $createdEntryDistribution = $distributionPlugin->entryDistribution->add($entryDistribution); $distributionPlugin->entryDistribution->submitAdd($createdEntryDistribution->id, $submitWhenReady); } $this->xmlBulkUploadEngine->unimpersonate(); }