fix: handle different label formats in services
This commit is contained in:
parent
608f0b7840
commit
30f8e8f232
@ -53,50 +53,83 @@ class Service extends BaseModel
|
|||||||
$image = str($application->image)->before(':')->value();
|
$image = str($application->image)->before(':')->value();
|
||||||
switch ($image) {
|
switch ($image) {
|
||||||
case str($image)->contains('minio'):
|
case str($image)->contains('minio'):
|
||||||
|
$data = collect([]);
|
||||||
$console_url = $this->environment_variables()->where('key', 'MINIO_BROWSER_REDIRECT_URL')->first();
|
$console_url = $this->environment_variables()->where('key', 'MINIO_BROWSER_REDIRECT_URL')->first();
|
||||||
$s3_api_url = $this->environment_variables()->where('key', 'MINIO_SERVER_URL')->first();
|
$s3_api_url = $this->environment_variables()->where('key', 'MINIO_SERVER_URL')->first();
|
||||||
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_MINIO')->first();
|
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_MINIO')->first();
|
||||||
|
if (is_null($admin_user)) {
|
||||||
|
$admin_user = $this->environment_variables()->where('key', 'MINIO_ROOT_USER')->first();
|
||||||
|
}
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_MINIO')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_MINIO')->first();
|
||||||
$fields->put('MinIO', [
|
if (is_null($admin_password)) {
|
||||||
'Console URL' => [
|
$admin_password = $this->environment_variables()->where('key', 'MINIO_ROOT_PASSWORD')->first();
|
||||||
'key' => data_get($console_url, 'key'),
|
}
|
||||||
'value' => data_get($console_url, 'value'),
|
|
||||||
'rules' => 'required|url',
|
if ($console_url) {
|
||||||
],
|
$data = $data->merge([
|
||||||
'S3 API URL' => [
|
'Console URL' => [
|
||||||
'key' => data_get($s3_api_url, 'key'),
|
'key' => data_get($console_url, 'key'),
|
||||||
'value' => data_get($s3_api_url, 'value'),
|
'value' => data_get($console_url, 'value'),
|
||||||
'rules' => 'required|url',
|
'rules' => 'required|url',
|
||||||
],
|
],
|
||||||
'Admin User' => [
|
]);
|
||||||
'key' => data_get($admin_user, 'key'),
|
}
|
||||||
'value' => data_get($admin_user, 'value'),
|
if ($s3_api_url) {
|
||||||
'rules' => 'required',
|
$data = $data->merge([
|
||||||
],
|
'S3 API URL' => [
|
||||||
'Admin Password' => [
|
'key' => data_get($s3_api_url, 'key'),
|
||||||
'key' => data_get($admin_password, 'key'),
|
'value' => data_get($s3_api_url, 'value'),
|
||||||
'value' => data_get($admin_password, 'value'),
|
'rules' => 'required|url',
|
||||||
'rules' => 'required',
|
],
|
||||||
'isPassword' => true,
|
]);
|
||||||
],
|
}
|
||||||
]);
|
if ($admin_user) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Admin User' => [
|
||||||
|
'key' => data_get($admin_user, 'key'),
|
||||||
|
'value' => data_get($admin_user, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($admin_password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Admin Password' => [
|
||||||
|
'key' => data_get($admin_password, 'key'),
|
||||||
|
'value' => data_get($admin_password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields->put('MinIO', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('weblate'):
|
case str($image)->contains('weblate'):
|
||||||
|
$data = collect([]);
|
||||||
$admin_email = $this->environment_variables()->where('key', 'WEBLATE_ADMIN_EMAIL')->first();
|
$admin_email = $this->environment_variables()->where('key', 'WEBLATE_ADMIN_EMAIL')->first();
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_WEBLATE')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_WEBLATE')->first();
|
||||||
$fields->put('Weblate', [
|
|
||||||
'Admin Email' => [
|
if ($admin_email) {
|
||||||
'key' => data_get($admin_email, 'key'),
|
$data = $data->merge([
|
||||||
'value' => data_get($admin_email, 'value'),
|
'Admin Email' => [
|
||||||
'rules' => 'required|email',
|
'key' => data_get($admin_email, 'key'),
|
||||||
],
|
'value' => data_get($admin_email, 'value'),
|
||||||
'Admin Password' => [
|
'rules' => 'required|email',
|
||||||
'key' => data_get($admin_password, 'key'),
|
],
|
||||||
'value' => data_get($admin_password, 'value'),
|
]);
|
||||||
'rules' => 'required',
|
}
|
||||||
'isPassword' => true,
|
if ($admin_password) {
|
||||||
],
|
$data = $data->merge([
|
||||||
]);
|
'Admin Password' => [
|
||||||
|
'key' => data_get($admin_password, 'key'),
|
||||||
|
'value' => data_get($admin_password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Weblate', $data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$databases = $this->databases()->get();
|
$databases = $this->databases()->get();
|
||||||
@ -367,6 +400,19 @@ class Service extends BaseModel
|
|||||||
$serviceNetworks = collect(data_get($service, 'networks', []));
|
$serviceNetworks = collect(data_get($service, 'networks', []));
|
||||||
$serviceVariables = collect(data_get($service, 'environment', []));
|
$serviceVariables = collect(data_get($service, 'environment', []));
|
||||||
$serviceLabels = collect(data_get($service, 'labels', []));
|
$serviceLabels = collect(data_get($service, 'labels', []));
|
||||||
|
if ($serviceLabels->count() > 0) {
|
||||||
|
$removedLabels = collect([]);
|
||||||
|
$serviceLabels = $serviceLabels->filter(function ($serviceLabel, $serviceLabelName) use ($removedLabels) {
|
||||||
|
if (!str($serviceLabel)->contains('=')) {
|
||||||
|
$removedLabels->put($serviceLabelName, $serviceLabel);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $serviceLabel;
|
||||||
|
});
|
||||||
|
foreach($removedLabels as $removedLabelName =>$removedLabel) {
|
||||||
|
$serviceLabels->push("$removedLabelName=$removedLabel");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$containerName = "$serviceName-{$this->uuid}";
|
$containerName = "$serviceName-{$this->uuid}";
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
<h3>Service Specific Configuration</h3>
|
<h3>Service Specific Configuration</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid grid-cols-2 gap-2">
|
<div class="grid grid-cols-2 gap-2">
|
||||||
@foreach ($fields as $serviceName => $fields)
|
@foreach ($fields as $serviceName => $field)
|
||||||
<x-forms.input type="{{ data_get($fields, 'isPassword') ? 'password' : 'text' }}" required
|
<x-forms.input type="{{ data_get($field, 'isPassword') ? 'password' : 'text' }}" required
|
||||||
helper="Variable name: {{ $serviceName }}"
|
helper="Variable name: {{ $serviceName }}"
|
||||||
label="{{ data_get($fields, 'serviceName') }} {{ data_get($fields, 'name') }}"
|
label="{{ data_get($field, 'serviceName') }} {{ data_get($field, 'name') }}"
|
||||||
id="fields.{{ $serviceName }}.value"></x-forms.input>
|
id="fields.{{ $serviceName }}.value"></x-forms.input>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user