Merge pull request #1558 from coollabsio/next
fix: get swarm service logs
This commit is contained in:
		| @@ -73,10 +73,18 @@ class GetLogs extends Component | ||||
|         if (!$refresh && $this->resource?->getMorphClass() === 'App\Models\Service') return; | ||||
|         if ($this->container) { | ||||
|             if ($this->showTimeStamps) { | ||||
|                 if ($this->server->isSwarm()) { | ||||
|                     $sshCommand = generateSshCommand($this->server, "docker service logs -n {$this->numberOfLines} -t {$this->container}"); | ||||
|                 } else { | ||||
|                     $sshCommand = generateSshCommand($this->server, "docker logs -n {$this->numberOfLines} -t {$this->container}"); | ||||
|                 } | ||||
|             } else { | ||||
|                 if ($this->server->isSwarm()) { | ||||
|                     $sshCommand = generateSshCommand($this->server, "docker service logs -n {$this->numberOfLines} {$this->container}"); | ||||
|                 } else { | ||||
|                     $sshCommand = generateSshCommand($this->server, "docker logs -n {$this->numberOfLines} {$this->container}"); | ||||
|                 } | ||||
|             } | ||||
|             if ($refresh) { | ||||
|                 $this->outputs = ''; | ||||
|             } | ||||
|   | ||||
| @@ -34,7 +34,15 @@ class Logs extends Component | ||||
|             $this->resource = Application::where('uuid', $this->parameters['application_uuid'])->firstOrFail(); | ||||
|             $this->status = $this->resource->status; | ||||
|             $this->server = $this->resource->destination->server; | ||||
|             if ($this->server->isSwarm()) { | ||||
|                 $containers = collect([ | ||||
|                     [ | ||||
|                         'Names' => $this->resource->uuid . '_' . $this->resource->uuid, | ||||
|                     ] | ||||
|                 ]); | ||||
|             } else { | ||||
|                 $containers = getCurrentApplicationContainerStatus($this->server, $this->resource->id, 0); | ||||
|             } | ||||
|             if ($containers->count() > 0) { | ||||
|                 $containers->each(function ($container) { | ||||
|                     $this->containers->push(str_replace('/', '', $container['Names'])); | ||||
|   | ||||
| @@ -14,6 +14,7 @@ use Visus\Cuid2\Cuid2; | ||||
| function getCurrentApplicationContainerStatus(Server $server, int $id, ?int $pullRequestId = null): Collection | ||||
| { | ||||
|     $containers = collect([]); | ||||
|     if (!$server->isSwarm()) { | ||||
|         $containers = instant_remote_process(["docker ps -a --filter='label=coolify.applicationId={$id}' --format '{{json .}}' "], $server); | ||||
|         $containers = format_docker_command_output_to_json($containers); | ||||
|         $containers = $containers->map(function ($container) use ($pullRequestId) { | ||||
| @@ -30,6 +31,8 @@ function getCurrentApplicationContainerStatus(Server $server, int $id, ?int $pul | ||||
|         $containers = $containers->filter(); | ||||
|         return $containers; | ||||
|     } | ||||
|     return $containers; | ||||
| } | ||||
| 
 | ||||
| function format_docker_command_output_to_json($rawOutput): Collection | ||||
| { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ return [ | ||||
| 
 | ||||
|     // The release version of your application
 | ||||
|     // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
 | ||||
|     'release' => '4.0.0-beta.166', | ||||
|     'release' => '4.0.0-beta.167', | ||||
|     // When left empty or `null` the Laravel environment will be used
 | ||||
|     'environment' => config('app.env'), | ||||
| 
 | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| <?php | ||||
| 
 | ||||
| return '4.0.0-beta.166'; | ||||
| return '4.0.0-beta.167'; | ||||
|   | ||||
| @@ -3,10 +3,12 @@ | ||||
|         href="{{ route('project.application.configuration', $parameters) }}"> | ||||
|         <button>Configuration</button> | ||||
|     </a> | ||||
|     @if(!$application->destination->server->isSwarm()) | ||||
|     <a wire:navigate class="{{ request()->routeIs('project.application.command') ? 'text-white' : '' }}" | ||||
|         href="{{ route('project.application.command', $parameters) }}"> | ||||
|         <button>Execute Command</button> | ||||
|     </a> | ||||
|     @endif | ||||
|     <a wire:navigate class="{{ request()->routeIs('project.application.logs') ? 'text-white' : '' }}" | ||||
|         href="{{ route('project.application.logs', $parameters) }}"> | ||||
|         <button>Logs</button> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|             "version": "3.12.36" | ||||
|         }, | ||||
|         "v4": { | ||||
|             "version": "4.0.0-beta.166" | ||||
|             "version": "4.0.0-beta.167" | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andras Bacsai
					Andras Bacsai