Skip to content

Commit

Permalink
fix: live event
Browse files Browse the repository at this point in the history
  • Loading branch information
andrasbacsai committed Dec 8, 2023
1 parent 828fec9 commit a249ee1
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 21 deletions.
2 changes: 1 addition & 1 deletion app/Actions/Service/StartService.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public function handle(Service $service)
$commands[] = "echo 'Pulling images.'";
$commands[] = "docker compose pull";
$commands[] = "echo 'Starting containers.'";
$commands[] = "docker compose up -d --remove-orphans --force-recreate --build";
$commands[] = "docker compose up --wait --remove-orphans --force-recreate --build";
$commands[] = "docker network connect $service->uuid coolify-proxy >/dev/null 2>&1 || true";
$compose = data_get($service, 'docker_compose', []);
$serviceNames = data_get(Yaml::parse($compose), 'services', []);
Expand Down
25 changes: 12 additions & 13 deletions app/Livewire/ActivityMonitor.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class ActivityMonitor extends Component
{
public string|null $header = null;
public ?string $header = null;
public $activityId;
public $isPollingActive = false;

Expand All @@ -26,31 +26,30 @@ public function newMonitorActivity($activityId)

public function hydrateActivity()
{
$this->activity = Activity::query()
->find($this->activityId);
$this->activity = Activity::find($this->activityId);
}

public function polling()
{
$this->hydrateActivity();
$this->setStatus(ProcessStatus::IN_PROGRESS);
// $this->setStatus(ProcessStatus::IN_PROGRESS);
$exit_code = data_get($this->activity, 'properties.exitCode');
if ($exit_code !== null) {
if ($exit_code === 0) {
$this->setStatus(ProcessStatus::FINISHED);
// $this->setStatus(ProcessStatus::FINISHED);
} else {
$this->setStatus(ProcessStatus::ERROR);
// $this->setStatus(ProcessStatus::ERROR);
}
$this->isPollingActive = false;
$this->dispatch('activityFinished');
}
}

protected function setStatus($status)
{
$this->activity->properties = $this->activity->properties->merge([
'status' => $status,
]);
$this->activity->save();
}
// protected function setStatus($status)
// {
// $this->activity->properties = $this->activity->properties->merge([
// 'status' => $status,
// ]);
// $this->activity->save();
// }
}
1 change: 1 addition & 0 deletions app/Livewire/Project/Service/Index.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public function checkStatus()
{
dispatch_sync(new ContainerStatusJob($this->service->server));
$this->refreshStacks();
$this->dispatch('serviceStatusChanged');
}
public function refreshStacks()
{
Expand Down
3 changes: 1 addition & 2 deletions app/Livewire/Project/Service/Navbar.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ public function checkDeployments()
}
public function getListeners()
{
$userId = auth()->user()->id;
return [
"echo-private:custom.{$userId},ServiceStatusChanged" => 'serviceStatusChanged',
"serviceStatusChanged"
];
}
public function serviceStatusChanged()
Expand Down
24 changes: 20 additions & 4 deletions app/Livewire/Project/Shared/ExecuteContainerCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use App\Models\StandaloneMysql;
use App\Models\StandalonePostgresql;
use App\Models\StandaloneRedis;
use Illuminate\Support\Sleep;
use Livewire\Component;

class ExecuteContainerCommand extends Component
Expand All @@ -23,7 +24,16 @@ class ExecuteContainerCommand extends Component
public string $workDir = '';
public Server $server;
public $servers = [];

public function getListeners()
{
return [
"serviceStatusChanged",
];
}
public function serviceStatusChanged()
{
$this->getContainers();
}
protected $rules = [
'server' => 'required',
'container' => 'required',
Expand All @@ -33,8 +43,12 @@ class ExecuteContainerCommand extends Component

public function mount()
{
$this->containers = collect();
$this->parameters = get_route_parameters();
$this->getContainers();
}
public function getContainers()
{
$this->containers = collect();
if (data_get($this->parameters, 'application_uuid')) {
$this->type = 'application';
$this->resource = Application::where('uuid', $this->parameters['application_uuid'])->firstOrFail();
Expand Down Expand Up @@ -92,10 +106,12 @@ public function runCommand()
{
$this->validate();
try {
// Wrap command to prevent escaped execution in the host.
$cmd = 'sh -c "' . str_replace('"', '\"', $this->command) . '"';
if (!empty($this->workDir)) {
$exec = "docker exec -w {$this->workDir} {$this->container} {$this->command}";
$exec = "docker exec -w {$this->workDir} {$this->container} {$cmd}";
} else {
$exec = "docker exec {$this->container} {$this->command}";
$exec = "docker exec {$this->container} {$cmd}";
}
$activity = remote_process([$exec], $this->server, ignore_errors: true);
$this->dispatch('newMonitorActivity', $activity->id);
Expand Down
2 changes: 1 addition & 1 deletion resources/views/livewire/project/service/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class="hover:text-warning">Logs</span></a>
<livewire:project.shared.webhooks :resource="$service" />
</div>
<div x-cloak x-show="activeTab === 'execute-command'">
<livewire:project.shared.execute-container-command :resource="$service" />
<livewire:project.shared.execute-container-command :resource="$service" />
</div>
<div x-cloak x-show="activeTab === 'environment-variables'">
<div x-cloak x-show="activeTab === 'environment-variables'">
Expand Down

0 comments on commit a249ee1

Please sign in to comment.