@@ -57,9 +57,11 @@ discard block |
||
| 57 | 57 | $_oDateIntervalEpsilon = new \DateInterval($oJobEntity->epsilon); |
| 58 | 58 | $_iIntervalEpsilon = (int) $_oDateIntervalEpsilon->format('%Y%M%D%H%I%S'); |
| 59 | 59 | |
| 60 | - if ($_iIntervalEpsilon > 30) // if epsilon > "PT30S" |
|
| 60 | + if ($_iIntervalEpsilon > 30) { |
|
| 61 | + // if epsilon > "PT30S" |
|
| 61 | 62 | { |
| 62 | 63 | $_oIso8601Entity = $this->oDatePeriodFactory->createIso8601Entity($oJobEntity->schedule); |
| 64 | + } |
|
| 63 | 65 | |
| 64 | 66 | $_oDateIntervalScheduling = new \DateInterval($_oIso8601Entity->sInterval); |
| 65 | 67 | $_iIntervalScheduling = (int) $_oDateIntervalScheduling->format('%Y%M%D%H%I%S'); |
@@ -69,8 +71,7 @@ discard block |
||
| 69 | 71 | |
| 70 | 72 | // if epsilon is less or equal than 30sec the not empty check is enough |
| 71 | 73 | return true; |
| 72 | - } |
|
| 73 | - catch (\Exception $_oException) |
|
| 74 | + } catch (\Exception $_oException) |
|
| 74 | 75 | { |
| 75 | 76 | // can't init \DateInterval instance |
| 76 | 77 | return false; |
@@ -46,7 +46,7 @@ |
||
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | /** |
| 49 | - * @param JobEntity $oJobEntity |
|
| 49 | + * @param JobEntityInterface $oJobEntity |
|
| 50 | 50 | * @return bool |
| 51 | 51 | */ |
| 52 | 52 | private function isEpsilonPropertyValid(JobEntityInterface $oJobEntity) |
@@ -62,8 +62,7 @@ |
||
| 62 | 62 | { |
| 63 | 63 | $_oDataPeriod = $this->oDatePeriodFactory->createDatePeriod($oJobEntity->schedule, $oJobEntity->scheduleTimeZone); |
| 64 | 64 | return (false !== $_oDataPeriod); |
| 65 | - } |
|
| 66 | - catch (\Exception $oException) |
|
| 65 | + } catch (\Exception $oException) |
|
| 67 | 66 | { |
| 68 | 67 | // invalid: Iso8601 is not valid and/or DatePeriodFactory is able to create a valid DatePeriod |
| 69 | 68 | } |
@@ -11,7 +11,6 @@ |
||
| 11 | 11 | |
| 12 | 12 | |
| 13 | 13 | use Chapi\Component\DatePeriod\DatePeriodFactoryInterface; |
| 14 | -use Chapi\Entity\Chronos\JobEntity; |
|
| 15 | 14 | use Chapi\Entity\JobEntityInterface; |
| 16 | 15 | use Chapi\Service\JobValidator\PropertyValidatorInterface; |
| 17 | 16 | |
@@ -46,9 +46,9 @@ |
||
| 46 | 46 | |
| 47 | 47 | |
| 48 | 48 | /** |
| 49 | - * @param JobRepositoryInterface $oJobRepositoryLocal |
|
| 49 | + * @param JobRepositoryInterface $oJobRepositoryLocalChronos |
|
| 50 | 50 | * @param JobRepositoryInterface $oJobRepositoryChronos |
| 51 | - * @param JobRepositoryInterface $oJobRepositoryMarathon |
|
| 51 | + * @param JobRepositoryInterface $oJobRepositoryLocalChronos |
|
| 52 | 52 | * @param DiffCompareInterface $oDiffCompare |
| 53 | 53 | * @param DatePeriodFactoryInterface $oDatePeriodFactory |
| 54 | 54 | * @param LoggerInterface $oLogger |
@@ -11,8 +11,8 @@ |
||
| 11 | 11 | |
| 12 | 12 | use Chapi\Component\Comparison\DiffCompareInterface; |
| 13 | 13 | use Chapi\Component\DatePeriod\DatePeriodFactoryInterface; |
| 14 | -use Chapi\Entity\Chronos\JobCollection; |
|
| 15 | 14 | use Chapi\Entity\Chronos\ChronosJobEntity; |
| 15 | +use Chapi\Entity\Chronos\JobCollection; |
|
| 16 | 16 | use Chapi\Entity\JobEntityInterface; |
| 17 | 17 | use Chapi\Service\JobRepository\JobRepositoryInterface; |
| 18 | 18 | use Psr\Log\LoggerInterface; |
@@ -85,7 +85,7 @@ |
||
| 85 | 85 | */ |
| 86 | 86 | public function getRemoteMissingJobs() |
| 87 | 87 | { |
| 88 | - $_ret = $this->getMissingJobsInCollectionA( |
|
| 88 | + $_ret = $this->getMissingJobsInCollectionA( |
|
| 89 | 89 | $this->oJobRepositoryChronos->getJobs(), |
| 90 | 90 | $this->oJobRepositoryLocalChronos->getJobs() |
| 91 | 91 | ); |
@@ -317,8 +317,7 @@ |
||
| 317 | 317 | { |
| 318 | 318 | $_oDateTime = new \DateTime(str_replace('Z', '', $_oIso8601Entity->sStartTime)); |
| 319 | 319 | $_oDateTime->setTimezone(new \DateTimeZone($sTimeZone)); |
| 320 | - } |
|
| 321 | - else |
|
| 320 | + } else |
|
| 322 | 321 | { |
| 323 | 322 | $_oDateTime = new \DateTime($_oIso8601Entity->sStartTime); |
| 324 | 323 | } |
@@ -15,8 +15,6 @@ |
||
| 15 | 15 | use Chapi\Entity\Chronos\ChronosJobEntity; |
| 16 | 16 | use Chapi\Entity\Chronos\JobCollection; |
| 17 | 17 | use Chapi\Entity\JobEntityInterface; |
| 18 | -use Chapi\Entity\Marathon\AppEntity\FetchUrl; |
|
| 19 | -use Chapi\Entity\Marathon\AppEntity\PortDefinition; |
|
| 20 | 18 | use Chapi\Entity\Marathon\MarathonAppEntity; |
| 21 | 19 | use Chapi\Service\JobRepository\JobRepositoryInterface; |
| 22 | 20 | |
@@ -82,7 +82,7 @@ discard block |
||
| 82 | 82 | $_aLocalJobs = $this->oLocalRepository->getJobs(); |
| 83 | 83 | |
| 84 | 84 | /** @var JobEntityInterface $_oLocalJob */ |
| 85 | - foreach($_aLocalJobs as $_oLocalJob) |
|
| 85 | + foreach ($_aLocalJobs as $_oLocalJob) |
|
| 86 | 86 | { |
| 87 | 87 | $_oRemoteJob = $this->oRemoteRepository->getJob($_oLocalJob->getKey()); |
| 88 | 88 | if (!$_oRemoteJob) |
@@ -138,7 +138,7 @@ discard block |
||
| 138 | 138 | $_aDifferences[$_sProperty] = $this->oDiffCompare->compare( |
| 139 | 139 | $_oRemoteJob->{$_sProperty}, |
| 140 | 140 | $_oLocalJob->{$_sProperty} |
| 141 | - ) ; |
|
| 141 | + ); |
|
| 142 | 142 | } |
| 143 | 143 | |
| 144 | 144 | return $_aDifferences; |
@@ -250,12 +250,10 @@ discard block |
||
| 250 | 250 | { |
| 251 | 251 | if (is_array($mValueA) && is_array($mValueB)) { |
| 252 | 252 | return $this->isArrayEqual($mValueA, $mValueB); |
| 253 | - } |
|
| 254 | - elseif (is_object($mValueA) && is_object($mValueB)) |
|
| 253 | + } elseif (is_object($mValueA) && is_object($mValueB)) |
|
| 255 | 254 | { |
| 256 | 255 | return $this->isArrayEqual(get_object_vars($mValueA), get_object_vars($mValueB)); |
| 257 | - } |
|
| 258 | - elseif ((is_scalar($mValueA) && is_scalar($mValueB)) || (is_null($mValueA) && is_null($mValueB))) |
|
| 256 | + } elseif ((is_scalar($mValueA) && is_scalar($mValueB)) || (is_null($mValueA) && is_null($mValueB))) |
|
| 259 | 257 | { |
| 260 | 258 | return $mValueA == $mValueB; |
| 261 | 259 | } |
@@ -288,8 +286,7 @@ discard block |
||
| 288 | 286 | { |
| 289 | 287 | return false; |
| 290 | 288 | } |
| 291 | - } |
|
| 292 | - else |
|
| 289 | + } else |
|
| 293 | 290 | { |
| 294 | 291 | foreach ($aValuesB as $_mValueB) |
| 295 | 292 | { |
@@ -150,6 +150,9 @@ discard block |
||
| 150 | 150 | return !(count($arr) == count(array_unique($arr))); |
| 151 | 151 | } |
| 152 | 152 | |
| 153 | + /** |
|
| 154 | + * @param integer $immediateChildren |
|
| 155 | + */ |
|
| 153 | 156 | private function isDependencyCircular(JobEntityInterface $oEntity, $immediateChildren, &$path=[]) |
| 154 | 157 | { |
| 155 | 158 | // Invariant: path will not have duplicates for acyclic dependency tree |
@@ -310,6 +313,9 @@ discard block |
||
| 310 | 313 | } |
| 311 | 314 | } |
| 312 | 315 | |
| 316 | + /** |
|
| 317 | + * @param boolean $bForceOverwrite |
|
| 318 | + */ |
|
| 313 | 319 | private function updateJobInLocalRepository($oAppRemote, $bForceOverwrite) |
| 314 | 320 | { |
| 315 | 321 | $_aDiff = $this->oJobComparisionBusinessCase->getJobDiff($oAppRemote->getKey()); |
@@ -89,7 +89,7 @@ discard block |
||
| 89 | 89 | $_oJobEntityLocal = $this->oJobRepositoryLocal->getJob($sAppId); |
| 90 | 90 | |
| 91 | 91 | // check if dependency is satisfied |
| 92 | - if ( $_oJobEntityLocal->isDependencyJob()) |
|
| 92 | + if ($_oJobEntityLocal->isDependencyJob()) |
|
| 93 | 93 | { |
| 94 | 94 | try { |
| 95 | 95 | $circular = $this->isDependencyCircular($_oJobEntityLocal, count($_oJobEntityLocal->dependencies)); |
@@ -101,10 +101,10 @@ discard block |
||
| 101 | 101 | return false; |
| 102 | 102 | } |
| 103 | 103 | } |
| 104 | - catch(\Exception $e) |
|
| 104 | + catch (\Exception $e) |
|
| 105 | 105 | { |
| 106 | 106 | $this->oLogger->error(sprintf( |
| 107 | - "Job %s cannot be added to remote : %s",$sAppId, $e->getMessage() |
|
| 107 | + "Job %s cannot be added to remote : %s", $sAppId, $e->getMessage() |
|
| 108 | 108 | )); |
| 109 | 109 | return false; |
| 110 | 110 | } |
@@ -150,7 +150,7 @@ discard block |
||
| 150 | 150 | return !(count($arr) == count(array_unique($arr))); |
| 151 | 151 | } |
| 152 | 152 | |
| 153 | - private function isDependencyCircular(JobEntityInterface $oEntity, $immediateChildren, &$path=[]) |
|
| 153 | + private function isDependencyCircular(JobEntityInterface $oEntity, $immediateChildren, &$path = []) |
|
| 154 | 154 | { |
| 155 | 155 | // Invariant: path will not have duplicates for acyclic dependency tree |
| 156 | 156 | if ($this->hasDuplicates($path)) |
@@ -196,7 +196,7 @@ discard block |
||
| 196 | 196 | // for B intermediate Child will be 2. |
| 197 | 197 | // when we process D, it will be reduced to 1 and with C to 0 |
| 198 | 198 | // then we will pop B to generate path [A, E] when we reach E. |
| 199 | - $immediateChildren = $immediateChildren -1; |
|
| 199 | + $immediateChildren = $immediateChildren - 1; |
|
| 200 | 200 | if ($immediateChildren == 0) |
| 201 | 201 | { |
| 202 | 202 | array_pop($path); |
@@ -100,8 +100,7 @@ discard block |
||
| 100 | 100 | )); |
| 101 | 101 | return false; |
| 102 | 102 | } |
| 103 | - } |
|
| 104 | - catch(\Exception $e) |
|
| 103 | + } catch(\Exception $e) |
|
| 105 | 104 | { |
| 106 | 105 | $this->oLogger->error(sprintf( |
| 107 | 106 | "Job %s cannot be added to remote : %s",$sAppId, $e->getMessage() |
@@ -268,8 +267,7 @@ discard block |
||
| 268 | 267 | if (empty($aJobNames)) |
| 269 | 268 | { |
| 270 | 269 | $_aApps = $this->oJobRepositoryRemote->getJobs(); |
| 271 | - } |
|
| 272 | - else |
|
| 270 | + } else |
|
| 273 | 271 | { |
| 274 | 272 | $_aApps = []; |
| 275 | 273 | foreach ($aJobNames as $_sAppName) |
@@ -282,11 +280,12 @@ discard block |
||
| 282 | 280 | foreach ($_aApps as $_oAppRemote) |
| 283 | 281 | { |
| 284 | 282 | $_oAppLocal = $this->oJobRepositoryLocal->getJob($_oAppRemote->getKey()); |
| 285 | - if (null == $_oAppLocal) // add |
|
| 283 | + if (null == $_oAppLocal) { |
|
| 284 | + // add |
|
| 286 | 285 | { |
| 287 | 286 | $this->addJobInLocalRepository($_oAppRemote); |
| 288 | 287 | } |
| 289 | - else // update |
|
| 288 | + } else // update |
|
| 290 | 289 | { |
| 291 | 290 | $this->updateJobInLocalRepository($_oAppRemote, $bForceOverwrite); |
| 292 | 291 | } |
@@ -301,8 +300,7 @@ discard block |
||
| 301 | 300 | 'App %s stored in local repository', |
| 302 | 301 | $oAppRemote->getKey() |
| 303 | 302 | )); |
| 304 | - } |
|
| 305 | - else { |
|
| 303 | + } else { |
|
| 306 | 304 | $this->oLogger->error(sprintf( |
| 307 | 305 | 'Failed to store %s in local repository', |
| 308 | 306 | $oAppRemote->getKey() |
@@ -331,8 +329,7 @@ discard block |
||
| 331 | 329 | 'App %s is updated in local repository', |
| 332 | 330 | $oAppRemote->getKey() |
| 333 | 331 | )); |
| 334 | - } |
|
| 335 | - else { |
|
| 332 | + } else { |
|
| 336 | 333 | $this->oLogger->error(sprintf( |
| 337 | 334 | 'Failed to update app %s in local repository', |
| 338 | 335 | $oAppRemote->getKey() |
@@ -16,7 +16,7 @@ |
||
| 16 | 16 | /** |
| 17 | 17 | * @param StoreJobBusinessCaseInterface $oStoreJob |
| 18 | 18 | * @return |
| 19 | - */ |
|
| 19 | + void |
|
| 20 | 20 | public function addBusinesCase(StoreJobBusinessCaseInterface $oStoreJob); |
| 21 | 21 | |
| 22 | 22 | /** |
@@ -11,8 +11,8 @@ |
||
| 11 | 11 | namespace Chapi\Component\RemoteClients; |
| 12 | 12 | |
| 13 | 13 | |
| 14 | -use Chapi\Component\RemoteClients\ApiClientInterface; |
|
| 15 | 14 | use Chapi\Component\Http\HttpClientInterface; |
| 15 | +use Chapi\Component\RemoteClients\ApiClientInterface; |
|
| 16 | 16 | use Chapi\Entity\Chronos\ChronosJobEntity; |
| 17 | 17 | use Chapi\Entity\JobEntityInterface; |
| 18 | 18 | use Chapi\Exception\ApiClientException; |
@@ -82,7 +82,7 @@ discard block |
||
| 82 | 82 | */ |
| 83 | 83 | public function removeJob($sJobName) |
| 84 | 84 | { |
| 85 | - $_oResponse = $this->oHttpClient->delete('/scheduler/job/' . $sJobName); |
|
| 85 | + $_oResponse = $this->oHttpClient->delete('/scheduler/job/'.$sJobName); |
|
| 86 | 86 | return ($_oResponse->getStatusCode() == 204); |
| 87 | 87 | } |
| 88 | 88 | |
@@ -91,7 +91,7 @@ discard block |
||
| 91 | 91 | */ |
| 92 | 92 | public function getJobStats($sJobName) |
| 93 | 93 | { |
| 94 | - return $this->sendGetJsonRequest('/scheduler/job/stat/' . $sJobName); |
|
| 94 | + return $this->sendGetJsonRequest('/scheduler/job/stat/'.$sJobName); |
|
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | /** |
@@ -9,13 +9,11 @@ |
||
| 9 | 9 | |
| 10 | 10 | namespace Chapi\Entity\Marathon; |
| 11 | 11 | |
| 12 | -use Chapi\Entity\Marathon\AppEntity; |
|
| 13 | 12 | use Chapi\Entity\Marathon\AppEntity\Container; |
| 14 | 13 | use Chapi\Entity\Marathon\AppEntity\FetchUrl; |
| 15 | 14 | use Chapi\Entity\Marathon\AppEntity\HealthCheck; |
| 16 | 15 | use Chapi\Entity\Marathon\AppEntity\PortDefinition; |
| 17 | 16 | use Chapi\Entity\Marathon\AppEntity\UpgradeStrategy; |
| 18 | -use SebastianBergmann\Comparator\ExceptionComparatorTest; |
|
| 19 | 17 | |
| 20 | 18 | class AppSubEntityFactory implements AppSubEntityFactoryInterface |
| 21 | 19 | { |
@@ -44,7 +44,7 @@ |
||
| 44 | 44 | if (is_array($mData)) |
| 45 | 45 | { |
| 46 | 46 | $ret = []; |
| 47 | - foreach($mData as $data) |
|
| 47 | + foreach ($mData as $data) |
|
| 48 | 48 | { |
| 49 | 49 | $ret[] = new self::$sSubEntityMap[$sName]($data); |
| 50 | 50 | } |
@@ -347,6 +347,9 @@ |
||
| 347 | 347 | } |
| 348 | 348 | |
| 349 | 349 | |
| 350 | + /** |
|
| 351 | + * @param string $sJobFile |
|
| 352 | + */ |
|
| 350 | 353 | private function dumpFileWithGroup($sJobFile, JobEntityInterface $oJobEntity, $bAdd = true) |
| 351 | 354 | { |
| 352 | 355 | $_sGroupConfig = file_get_contents($sJobFile); |
@@ -161,7 +161,7 @@ discard block |
||
| 161 | 161 | $_sJobPath = $oJobEntity->getKey(); |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | - return $this->sRepositoryDir . DIRECTORY_SEPARATOR . $_sJobPath . '.json'; |
|
| 164 | + return $this->sRepositoryDir.DIRECTORY_SEPARATOR.$_sJobPath.'.json'; |
|
| 165 | 165 | } |
| 166 | 166 | |
| 167 | 167 | /** |
@@ -176,7 +176,7 @@ discard block |
||
| 176 | 176 | throw new \RuntimeException(sprintf('Path "%s" is not valid', $sPath)); |
| 177 | 177 | } |
| 178 | 178 | |
| 179 | - $_aTemp = Glob::glob(rtrim($sPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . '*'); |
|
| 179 | + $_aTemp = Glob::glob(rtrim($sPath, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'*'); |
|
| 180 | 180 | |
| 181 | 181 | foreach ($_aTemp as $_sPath) |
| 182 | 182 | { |
@@ -155,8 +155,7 @@ discard block |
||
| 155 | 155 | DIRECTORY_SEPARATOR, |
| 156 | 156 | $oJobEntity->getKey() |
| 157 | 157 | ); |
| 158 | - } |
|
| 159 | - else |
|
| 158 | + } else |
|
| 160 | 159 | { |
| 161 | 160 | $_sJobPath = $oJobEntity->getKey(); |
| 162 | 161 | } |
@@ -268,15 +267,19 @@ discard block |
||
| 268 | 267 | |
| 269 | 268 | if ($_aTemp) |
| 270 | 269 | { |
| 271 | - if (property_exists($_aTemp, "name")) // chronos |
|
| 270 | + if (property_exists($_aTemp, "name")) { |
|
| 271 | + // chronos |
|
| 272 | 272 | { |
| 273 | 273 | $_aJobEntities[] = new ChronosJobEntity($_aTemp); |
| 274 | + } |
|
| 274 | 275 | |
| 275 | - } else if (property_exists($_aTemp, "id")) //marathon |
|
| 276 | + } else if (property_exists($_aTemp, "id")) { |
|
| 277 | + //marathon |
|
| 276 | 278 | { |
| 277 | 279 | foreach ($this->getMarathonEntitiesForConfig($_aTemp) as $_oApp) |
| 278 | 280 | { |
| 279 | 281 | $_aJobEntities[] = $_oApp; |
| 282 | + } |
|
| 280 | 283 | } |
| 281 | 284 | } else { |
| 282 | 285 | throw new JobLoadException( |
@@ -297,8 +300,7 @@ discard block |
||
| 297 | 300 | $_aJobs[] = $_oJobEntity; |
| 298 | 301 | } |
| 299 | 302 | |
| 300 | - } |
|
| 301 | - else |
|
| 303 | + } else |
|
| 302 | 304 | { |
| 303 | 305 | throw new JobLoadException( |
| 304 | 306 | sprintf('Unable to load json job data from "%s". Please check if the json is valid.', $_sJobFilePath), |
@@ -323,8 +325,7 @@ discard block |
||
| 323 | 325 | $this->aGroupedApps[] = $_oApp->id; |
| 324 | 326 | $_aRet[] = $_oGroupEntity; |
| 325 | 327 | } |
| 326 | - } |
|
| 327 | - else |
|
| 328 | + } else |
|
| 328 | 329 | { |
| 329 | 330 | $_aRet[] = new MarathonAppEntity($aEntityData); |
| 330 | 331 | } |