diff --git a/Gemfile b/Gemfile index b58c5c70..5b086971 100644 --- a/Gemfile +++ b/Gemfile @@ -44,8 +44,8 @@ gem 'commonmarker' gem 'devise' gem 'devise-i18n' gem 'devise_invitable' -gem 'distributed-press-api-client', '~> 0.2.2' -gem 'njalla-api-client' +gem 'distributed-press-api-client', '~> 0.2.3' +gem 'njalla-api-client', '~> 0.2.0' gem 'email_address', git: 'https://github.com/fauno/email_address', branch: 'i18n' gem 'exception_notification' gem 'fast_blank' diff --git a/Gemfile.lock b/Gemfile.lock index ef0f87bb..2e741f0b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -344,7 +344,7 @@ GEM net-ssh (7.1.0) netaddr (2.0.6) nio4r (2.5.8-x86_64-linux-musl) - njalla-api-client (0.1.0) + njalla-api-client (0.2.0) dry-schema httparty (~> 0.18) nokogiri (1.14.2-x86_64-linux-musl) @@ -568,7 +568,7 @@ DEPENDENCIES devise devise-i18n devise_invitable - distributed-press-api-client (~> 0.2.2) + distributed-press-api-client (~> 0.2.3) dotenv-rails down ed25519 diff --git a/app/models/deploy_distributed_press.rb b/app/models/deploy_distributed_press.rb index 9f95c34f..7876b5cf 100644 --- a/app/models/deploy_distributed_press.rb +++ b/app/models/deploy_distributed_press.rb @@ -16,6 +16,7 @@ class DeployDistributedPress < Deploy store :values, accessors: %i[hostname remote_site_id remote_info], coder: JSON before_create :create_remote_site!, :create_njalla_records! + before_destroy :delete_remote_site!, :delete_njalla_records! DEPENDENCIES = %i[deploy_local] @@ -88,7 +89,7 @@ class DeployDistributedPress < Deploy # # @return [DistributedPressPublisher] def publisher - @publisher ||= DistributedPressPublisher.first + @publisher ||= DistributedPressPublisher.last end # El cliente para actualizar el sitio @@ -122,9 +123,9 @@ class DeployDistributedPress < Deploy self.remote_site_id = created_site[:id] self.remote_info = created_site.to_h + nil rescue DistributedPress::V1::Error => e ExceptionNotifier.notify_exception(e, data: { site: site.name }) - ensure nil end @@ -158,6 +159,22 @@ class DeployDistributedPress < Deploy nil end + def delete_remote_site! + site_client.destroy(publishing_site) + nil + rescue DistributedPress::V1::Error => e + ExceptionNotifier.notify_exception(e, data: { site: site.name }) + nil + end + + def delete_njalla_records! + %[a ns cname].each do |type| + next unless (id = remote_info.dig('njalla', type, 'id')) + + njalla.remove_record(id: id) + end + end + # Actualizar registros en Njalla # # @return [Njalla::V1::Domain]