From 1af3ca912a084c3229e4e973f36f795f9472f0e3 Mon Sep 17 00:00:00 2001 From: Thomas Arrow Date: Wed, 22 Nov 2023 14:12:43 +0000 Subject: [PATCH] WIP: add transferbot job skeleton --- app/Jobs/TransferBotJob.php | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 app/Jobs/TransferBotJob.php 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; + } + +}