diff --git a/app/Jobs/TransferBotJob.php b/app/Jobs/TransferBotJob.php new file mode 100644 index 000000000..090ec677c --- /dev/null +++ b/app/Jobs/TransferBotJob.php @@ -0,0 +1,62 @@ +targetWikiDomain = $targetWikiDomain; + $this->sourcewikiDomain = $sourceWikiDomain; + $this->pages = $pages; + + $this->jobsKubernetesNamespace = env('TRANSFERBOT_JOB_NAMESPACE', 'api-jobs'); + } + + public function uniqueId(): string + { + return $this->targetWikiDomain; + } + + public function handle (Client $kubernetesClient): void + { + $kubernetesClient->setNamespace($this->jobsKubernetesNamespace); + $jobSpec = new KubernetesJob([ + + ]); + + $job = $kubernetesClient->jobs()->create($jobSpec); + $jobName = data_get($job, 'metadata.name'); + if (!$jobName) { + // The k8s client does not fail reliably on 4xx responses, so checking the name + // currently serves as poor man's error handling. + $this->fail( + new \RuntimeException('Job creation for wiki "'.$this->targetWikiDomain.'" failed.') + ); + return; + } + Log::info( + 'TransferBot Job for wiki "'.$this->targetWikiDomain.'" exists or was created with name "'.$jobName.'".' + ); + + return; + } + +}