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