diff --git a/src/Core/Job/AbstractJob.php b/src/Core/Job/AbstractJob.php index e300dc5..24e2204 100644 --- a/src/Core/Job/AbstractJob.php +++ b/src/Core/Job/AbstractJob.php @@ -5,6 +5,7 @@ use Dealroadshow\K8S\API\Batch\Job; use Dealroadshow\K8S\Data\Collection\StringMap; use Dealroadshow\K8S\Data\PodSpec; +use Dealroadshow\K8S\Framework\Core\LabelSelector\LabelSelectorConfigurator; use Dealroadshow\K8S\Framework\Core\MetadataConfigurator; use Dealroadshow\K8S\Framework\Core\Pod\Affinity\AffinityConfigurator; use Dealroadshow\K8S\Framework\Core\Pod\Containers\PodContainers; @@ -14,6 +15,10 @@ abstract class AbstractJob implements JobInterface { + public function labelSelector(LabelSelectorConfigurator $selector): void + { + } + public function backoffLimit(): ?int { return null; diff --git a/src/Core/Job/JobInterface.php b/src/Core/Job/JobInterface.php index daf60bb..1bb0267 100644 --- a/src/Core/Job/JobInterface.php +++ b/src/Core/Job/JobInterface.php @@ -3,11 +3,13 @@ namespace Dealroadshow\K8S\Framework\Core\Job; use Dealroadshow\K8S\API\Batch\Job; +use Dealroadshow\K8S\Framework\Core\LabelSelector\LabelSelectorConfigurator; use Dealroadshow\K8S\Framework\Core\ManifestInterface; use Dealroadshow\K8S\Framework\Core\Pod\PodTemplateSpecInterface; interface JobInterface extends PodTemplateSpecInterface, ManifestInterface { + public function labelSelector(LabelSelectorConfigurator $selector): void; public function backoffLimit(): ?int; public function activeDeadlineSeconds(): ?int; public function ttlSecondsAfterFinished(): ?int; diff --git a/src/ResourceMaker/JobMaker.php b/src/ResourceMaker/JobMaker.php index 98fbe7b..7221fde 100644 --- a/src/ResourceMaker/JobMaker.php +++ b/src/ResourceMaker/JobMaker.php @@ -5,6 +5,7 @@ use Dealroadshow\K8S\API\Batch\Job; use Dealroadshow\K8S\Framework\App\AppInterface; use Dealroadshow\K8S\Framework\Core\Job\JobInterface; +use Dealroadshow\K8S\Framework\Core\LabelSelector\LabelSelectorConfigurator; use Dealroadshow\K8S\Framework\Core\ManifestInterface; use Dealroadshow\K8S\Framework\Core\Pod\PodTemplateSpecProcessor; @@ -27,6 +28,9 @@ protected function makeResource(ManifestInterface $manifest, AppInterface $app): { $job = new Job(); + $labelSelector = new LabelSelectorConfigurator($job->spec()->selector()); + $manifest->labelSelector($labelSelector); + $app->metadataHelper()->configureMeta($manifest, $job); $this->specProcessor->process($manifest, $job->spec()->template(), $app);