Skip to content

Commit a4313b0

Browse files
committed
feat: #196 replace create/update service with a launch service task
1 parent d9e1aab commit a4313b0

File tree

7 files changed

+72
-14
lines changed

7 files changed

+72
-14
lines changed

Diff for: api-nodes/Http/Controllers/TaskController.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function complete(NodeTask $task, Request $request)
2020
}
2121

2222
$resultClass = $task->type->result();
23-
23+
var_dump($request->all());
2424
$result = $resultClass::validateAndCreate($request->all());
2525

2626
$task->complete($result);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace App\Events\NodeTasks\LaunchService;
4+
5+
use App\Events\NodeTasks\BaseTaskEvent;
6+
7+
class LaunchServiceCompleted extends BaseTaskEvent {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace App\Events\NodeTasks\LaunchService;
4+
5+
use App\Events\NodeTasks\BaseTaskEvent;
6+
7+
class LaunchServiceFailed extends BaseTaskEvent {}

Diff for: app/Models/DeploymentData/Process.php

+5-13
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
use App\Models\Node;
77
use App\Models\NodeTasks\CreateConfig\CreateConfigMeta;
88
use App\Models\NodeTasks\CreateSecret\CreateSecretMeta;
9-
use App\Models\NodeTasks\CreateService\CreateServiceMeta;
109
use App\Models\NodeTasks\DeleteService\DeleteServiceMeta;
10+
use App\Models\NodeTasks\LaunchService\LaunchServiceMeta;
1111
use App\Models\NodeTasks\PullDockerImage\PullDockerImageMeta;
12-
use App\Models\NodeTasks\UpdateService\UpdateServiceMeta;
1312
use App\Models\NodeTaskType;
1413
use App\Rules\RequiredIfArrayHas;
1514
use App\Util\ResourceId;
@@ -290,16 +289,11 @@ public function asNodeTasks(Deployment $deployment): array
290289
'value' => $internalDomain,
291290
]);
292291

293-
// FIXME: this is going to work wrong if the initial deployment is pending.
294-
// Don't allow to schedule deployments if the service has not been created yet?
295-
// This code is duplicated in the next block
296-
$actionUpdate = $deployment->service->tasks()->ofType(NodeTaskType::CreateService)->where('meta__docker_name', $this->dockerName)->completed()->exists();
297-
298292
$serviceSecretVars = $this->getSecretVars();
299293

300294
$tasks[] = [
301-
'type' => $actionUpdate ? NodeTaskType::UpdateService : NodeTaskType::CreateService,
302-
'meta' => $actionUpdate ? UpdateServiceMeta::from($serviceTaskMeta) : CreateServiceMeta::from($serviceTaskMeta),
295+
'type' => NodeTaskType::LaunchService,
296+
'meta' => LaunchServiceMeta::from($serviceTaskMeta),
303297
'payload' => [
304298
'AuthConfigName' => $authConfigName,
305299
'ReleaseCommand' => $this->getReleaseCommandPayload($deployment, $labels),
@@ -378,16 +372,14 @@ public function asNodeTasks(Deployment $deployment): array
378372
];
379373

380374
foreach ($this->workers as $worker) {
381-
$actionUpdate = $deployment->service->tasks()->ofType(NodeTaskType::CreateService)->where('meta__docker_name', $worker->dockerName)->completed()->exists();
382-
383375
$workerTaskMeta = [
384376
...$serviceTaskMeta,
385377
'dockerName' => $worker->dockerName,
386378
];
387379

388380
$tasks[] = [
389-
'type' => $actionUpdate ? NodeTaskType::UpdateService : NodeTaskType::CreateService,
390-
'meta' => $actionUpdate ? UpdateServiceMeta::from($workerTaskMeta) : CreateServiceMeta::from($workerTaskMeta),
381+
'type' => NodeTaskType::LaunchService,
382+
'meta' => LaunchServiceMeta::from($workerTaskMeta),
391383
'payload' => [
392384
'AuthConfigName' => $authConfigName,
393385
'ReleaseCommand' => (object) [],

Diff for: app/Models/NodeTaskType.php

+9
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
use App\Events\NodeTasks\InitSwarm\InitSwarmFailed;
2929
use App\Events\NodeTasks\JoinSwarm\JoinSwarmCompleted;
3030
use App\Events\NodeTasks\JoinSwarm\JoinSwarmFailed;
31+
use App\Events\NodeTasks\LaunchService\LaunchServiceCompleted;
32+
use App\Events\NodeTasks\LaunchService\LaunchServiceFailed;
3133
use App\Events\NodeTasks\PullDockerImage\PullDockerImageCompleted;
3234
use App\Events\NodeTasks\PullDockerImage\PullDockerImageFailed;
3335
use App\Events\NodeTasks\RebuildCaddyConfig\ApplyCaddyConfigCompleted;
@@ -72,6 +74,8 @@
7274
use App\Models\NodeTasks\InitSwarm\InitSwarmResult;
7375
use App\Models\NodeTasks\JoinSwarm\JoinSwarmMeta;
7476
use App\Models\NodeTasks\JoinSwarm\JoinSwarmResult;
77+
use App\Models\NodeTasks\LaunchService\LaunchServiceMeta;
78+
use App\Models\NodeTasks\LaunchService\LaunchServiceResult;
7579
use App\Models\NodeTasks\PullDockerImage\PullDockerImageMeta;
7680
use App\Models\NodeTasks\PullDockerImage\PullDockerImageResult;
7781
use App\Models\NodeTasks\ServiceExec\ServiceExecMeta;
@@ -111,6 +115,7 @@ enum NodeTaskType: int
111115
case UploadS3File = 18;
112116
case JoinSwarm = 19;
113117
case UpdateDirdConfig = 20;
118+
case LaunchService = 21;
114119

115120
public function meta(): string
116121
{
@@ -136,6 +141,7 @@ public function meta(): string
136141
self::UploadS3File => UploadS3FileMeta::class,
137142
self::JoinSwarm => JoinSwarmMeta::class,
138143
self::UpdateDirdConfig => UpdateDirdConfigMeta::class,
144+
self::LaunchService => LaunchServiceMeta::class,
139145
};
140146
}
141147

@@ -163,6 +169,7 @@ public function result(): string
163169
self::UploadS3File => UploadS3FileResult::class,
164170
self::JoinSwarm => JoinSwarmResult::class,
165171
self::UpdateDirdConfig => UpdateDirdConfigResult::class,
172+
self::LaunchService => LaunchServiceResult::class,
166173
};
167174
}
168175

@@ -190,6 +197,7 @@ public function completed(): string
190197
self::UploadS3File => UploadS3FileCompleted::class,
191198
self::JoinSwarm => JoinSwarmCompleted::class,
192199
self::UpdateDirdConfig => UpdateDirdConfigCompleted::class,
200+
self::LaunchService => LaunchServiceCompleted::class,
193201
};
194202
}
195203

@@ -217,6 +225,7 @@ public function failed(): string
217225
self::UploadS3File => UploadS3FileFailed::class,
218226
self::JoinSwarm => JoinSwarmFailed::class,
219227
self::UpdateDirdConfig => UpdateDirdConfigFailed::class,
228+
self::LaunchService => LaunchServiceFailed::class,
220229
};
221230
}
222231
}
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace App\Models\NodeTasks\LaunchService;
4+
5+
use App\Models\NodeTasks\AbstractTaskMeta;
6+
7+
class LaunchServiceMeta extends AbstractTaskMeta
8+
{
9+
public function __construct(
10+
public int $deploymentId,
11+
public int $serviceId,
12+
public string $serviceName,
13+
public string $dockerName
14+
) {
15+
//
16+
}
17+
18+
public function formattedHtml(): string
19+
{
20+
return "Launch Docker Service <code>{$this->dockerName}</code> of <code>{$this->serviceName}</code>";
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace App\Models\NodeTasks\LaunchService;
4+
5+
use App\Models\NodeTasks\AbstractTaskResult;
6+
use App\Models\NodeTasks\DockerId;
7+
8+
class LaunchServiceResult extends AbstractTaskResult
9+
{
10+
public function __construct(
11+
public DockerId $docker,
12+
public string $action,
13+
) {
14+
//
15+
}
16+
17+
public function formattedHtml(): string
18+
{
19+
return "Service {$this->action} successfully. ID: <code>{$this->docker->id}</code>";
20+
}
21+
}

0 commit comments

Comments
 (0)