feat: variabel sync and support shared vars
This commit is contained in:
@@ -159,31 +159,26 @@ class StartRedis
|
|||||||
private function generate_environment_variables()
|
private function generate_environment_variables()
|
||||||
{
|
{
|
||||||
$environment_variables = collect();
|
$environment_variables = collect();
|
||||||
$redis_password = null;
|
|
||||||
$redis_username = null;
|
|
||||||
|
|
||||||
foreach ($this->database->runtime_environment_variables as $env) {
|
foreach ($this->database->runtime_environment_variables as $env) {
|
||||||
|
if ($env->is_shared) {
|
||||||
$environment_variables->push("$env->key=$env->real_value");
|
$environment_variables->push("$env->key=$env->real_value");
|
||||||
|
|
||||||
if ($env->key === 'REDIS_PASSWORD') {
|
if ($env->key === 'REDIS_PASSWORD') {
|
||||||
$redis_password = $env->real_value;
|
$this->database->update(['redis_password' => $env->real_value]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($env->key === 'REDIS_USERNAME') {
|
if ($env->key === 'REDIS_USERNAME') {
|
||||||
$redis_username = $env->real_value;
|
$this->database->update(['redis_username' => $env->real_value]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (is_null($redis_password)) {
|
|
||||||
$environment_variables->push("REDIS_PASSWORD={$this->database->redis_password}");
|
|
||||||
} else {
|
} else {
|
||||||
$this->database->update(['redis_password' => $redis_password]);
|
if ($env->key === 'REDIS_PASSWORD') {
|
||||||
|
$env->update(['value' => $this->database->redis_password]);
|
||||||
|
} elseif ($env->key === 'REDIS_USERNAME') {
|
||||||
|
$env->update(['value' => $this->database->redis_username]);
|
||||||
|
}
|
||||||
|
$environment_variables->push("$env->key=$env->real_value");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_null($redis_username)) {
|
|
||||||
$environment_variables->push("REDIS_USERNAME={$this->database->redis_username}");
|
|
||||||
} else {
|
|
||||||
$this->database->update(['redis_username' => $redis_username]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
|
add_coolify_default_environment_variables($this->database, $environment_variables, $environment_variables);
|
||||||
|
@@ -80,14 +80,12 @@ class General extends Component
|
|||||||
|
|
||||||
$redis_version = $this->get_redis_version();
|
$redis_version = $this->get_redis_version();
|
||||||
|
|
||||||
if (version_compare($redis_version, '6.0', '>=')) {
|
if (version_compare($redis_version, '6.0', '>=') && $this->database->isDirty('redis_username')) {
|
||||||
if ($this->database->isDirty('redis_username')) {
|
$this->updateEnvironmentVariable('REDIS_USERNAME', $this->database->redis_username);
|
||||||
$this->database->redis_username = $this->database->redis_username;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->database->isDirty('redis_password')) {
|
if ($this->database->isDirty('redis_password')) {
|
||||||
$this->database->redis_password = $this->database->redis_password;
|
$this->updateEnvironmentVariable('REDIS_PASSWORD', $this->database->redis_password);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->database->save();
|
$this->database->save();
|
||||||
@@ -101,6 +99,7 @@ class General extends Component
|
|||||||
private function get_redis_version()
|
private function get_redis_version()
|
||||||
{
|
{
|
||||||
$image_parts = explode(':', $this->database->image);
|
$image_parts = explode(':', $this->database->image);
|
||||||
|
|
||||||
return $image_parts[1] ?? '0.0';
|
return $image_parts[1] ?? '0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,4 +143,23 @@ class General extends Component
|
|||||||
{
|
{
|
||||||
return view('livewire.project.database.redis.general');
|
return view('livewire.project.database.redis.general');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function updateEnvironmentVariable($key, $value)
|
||||||
|
{
|
||||||
|
$envVar = $this->database->runtime_environment_variables()
|
||||||
|
->where('key', $key)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($envVar) {
|
||||||
|
if (! $envVar->is_shared) {
|
||||||
|
$envVar->update(['value' => $value]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->database->runtime_environment_variables()->create([
|
||||||
|
'key' => $key,
|
||||||
|
'value' => $value,
|
||||||
|
'is_shared' => false,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Models\EnvironmentVariable;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\StandaloneClickhouse;
|
use App\Models\StandaloneClickhouse;
|
||||||
use App\Models\StandaloneDocker;
|
use App\Models\StandaloneDocker;
|
||||||
@@ -49,6 +50,7 @@ function create_standalone_redis($environment_id, $destination_uuid, ?array $oth
|
|||||||
$database = new StandaloneRedis;
|
$database = new StandaloneRedis;
|
||||||
$database->name = generate_database_name('redis');
|
$database->name = generate_database_name('redis');
|
||||||
$database->redis_password = \Illuminate\Support\Str::password(length: 64, symbols: false);
|
$database->redis_password = \Illuminate\Support\Str::password(length: 64, symbols: false);
|
||||||
|
$database->redis_username = 'default';
|
||||||
$database->environment_id = $environment_id;
|
$database->environment_id = $environment_id;
|
||||||
$database->destination_id = $destination->id;
|
$database->destination_id = $destination->id;
|
||||||
$database->destination_type = $destination->getMorphClass();
|
$database->destination_type = $destination->getMorphClass();
|
||||||
@@ -57,6 +59,20 @@ function create_standalone_redis($environment_id, $destination_uuid, ?array $oth
|
|||||||
}
|
}
|
||||||
$database->save();
|
$database->save();
|
||||||
|
|
||||||
|
EnvironmentVariable::create([
|
||||||
|
'key' => 'REDIS_PASSWORD',
|
||||||
|
'value' => $database->redis_password,
|
||||||
|
'standalone_redis_id' => $database->id,
|
||||||
|
'is_shared' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
EnvironmentVariable::create([
|
||||||
|
'key' => 'REDIS_USERNAME',
|
||||||
|
'value' => $database->redis_username,
|
||||||
|
'standalone_redis_id' => $database->id,
|
||||||
|
'is_shared' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
return $database;
|
return $database;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user