From 28fcf0eb4558dc40d763e0f8cd57ebb95b24356a Mon Sep 17 00:00:00 2001 From: Stas Date: Fri, 26 Feb 2016 13:58:38 +0200 Subject: [PATCH 1/6] 113430903-que_jobs_for_set_delete_candidate --- app/jobs/domain_set_delete_candidate_job.rb | 8 ++++++++ app/models/domain_cron.rb | 7 +++---- 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 app/jobs/domain_set_delete_candidate_job.rb diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb new file mode 100644 index 000000000..7101c237c --- /dev/null +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -0,0 +1,8 @@ +class DomainSetDeleteCandidateJob < Que::Job + + def run(domain_id) + domain = Domain.find(domain_id) + domain.statuses << DomainStatus::DELETE_CANDIDATE + domain.save(validate: false) + end +end diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 74c09740e..90ab37044 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -74,12 +74,11 @@ class DomainCron d.each do |domain| next unless domain.delete_candidateable? real += 1 - domain.statuses << DomainStatus::DELETE_CANDIDATE - STDOUT << "#{Time.zone.now.utc} DomainCron.start_delete_period: ##{domain.id} (#{domain.name}) #{domain.changes}\n" unless Rails.env.test? - domain.save(validate: false) and marked += 1 + STDOUT << "#{Time.zone.now.utc} DomainCron.start_delete_period: ##{domain.id} (#{domain.name})\n" unless Rails.env.test? + DomainSetDeleteCandidateJob.enqueue(domain.id, run_at: rand(24*60).minutes.from_now) and marked += 1 end ensure # the operator should see what was accomplished - STDOUT << "#{Time.zone.now.utc} - Finished setting delete_candidate - #{marked} out of #{real} successfully set\n" unless Rails.env.test? + STDOUT << "#{Time.zone.now.utc} - Finished setting schedule for delete_candidate - #{marked} out of #{real} successfully added to Que schedule\n" unless Rails.env.test? end marked end From 57bd1c77b6e9ae9fcdcb5cc9c1d9006fffd3c51b Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 2 Mar 2016 17:44:25 +0200 Subject: [PATCH 2/6] 113430903-new_job_added --- app/jobs/domain_delete_job.rb | 16 ++++++++++++++++ app/jobs/domain_set_delete_candidate_job.rb | 1 + app/models/domain_cron.rb | 15 +++------------ 3 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 app/jobs/domain_delete_job.rb diff --git a/app/jobs/domain_delete_job.rb b/app/jobs/domain_delete_job.rb new file mode 100644 index 000000000..5336dc466 --- /dev/null +++ b/app/jobs/domain_delete_job.rb @@ -0,0 +1,16 @@ +class DomainDeleteJob < Que::Job + + def run(domain_id) + domain = Domain.find(domain_id) + + WhoisRecord.where(domain_id: domain.id).destroy_all + + domain.destroy + bye_bye = domain.versions.last + domain.registrar.messages.create!( + body: "#{I18n.t(:domain_deleted)}: #{domain.name}", + attached_obj_id: bye_bye.id, + attached_obj_type: bye_bye.class.to_s + ) + end +end diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb index 7101c237c..cfa55cf6e 100644 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -4,5 +4,6 @@ class DomainSetDeleteCandidateJob < Que::Job domain = Domain.find(domain_id) domain.statuses << DomainStatus::DELETE_CANDIDATE domain.save(validate: false) + DomainDeleteJob.enqueue(domain.id, run_at: rand(24*60).minutes.from_now) end end diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 90ab37044..5fd4331f8 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -87,22 +87,13 @@ class DomainCron STDOUT << "#{Time.zone.now.utc} - Destroying domains\n" unless Rails.env.test? c = 0 - Domain.where("statuses @> '{deleteCandidate}'::varchar[]").each do |x| - WhoisRecord.where(domain_id: x.id).destroy_all - destroy_with_message x - STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: by deleteCandidate ##{x.id} (#{x.name})\n" unless Rails.env.test? - - c += 1 - end - Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| - WhoisRecord.where(domain_id: x.id).destroy_all - destroy_with_message x - STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? + DomainDeleteJob.enqueue(x.id, run_at: rand(24*60).minutes.from_now) + STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? c += 1 end - STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test? + STDOUT << "#{Time.zone.now.utc} - Job destroy added for #{c} domains\n" unless Rails.env.test? end # rubocop: enable Metrics/AbcSize From 519c8908ee101862557361c7da169434ce8bc4c3 Mon Sep 17 00:00:00 2001 From: Stas Date: Thu, 3 Mar 2016 20:59:28 +0200 Subject: [PATCH 3/6] 113430903-precision_for_minutes --- app/jobs/domain_set_delete_candidate_job.rb | 2 +- app/models/domain_cron.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb index cfa55cf6e..ffdf54277 100644 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -4,6 +4,6 @@ class DomainSetDeleteCandidateJob < Que::Job domain = Domain.find(domain_id) domain.statuses << DomainStatus::DELETE_CANDIDATE domain.save(validate: false) - DomainDeleteJob.enqueue(domain.id, run_at: rand(24*60).minutes.from_now) + DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) end end diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 5fd4331f8..d4e26f10a 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -75,7 +75,7 @@ class DomainCron next unless domain.delete_candidateable? real += 1 STDOUT << "#{Time.zone.now.utc} DomainCron.start_delete_period: ##{domain.id} (#{domain.name})\n" unless Rails.env.test? - DomainSetDeleteCandidateJob.enqueue(domain.id, run_at: rand(24*60).minutes.from_now) and marked += 1 + DomainSetDeleteCandidateJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) and marked += 1 end ensure # the operator should see what was accomplished STDOUT << "#{Time.zone.now.utc} - Finished setting schedule for delete_candidate - #{marked} out of #{real} successfully added to Que schedule\n" unless Rails.env.test? @@ -88,7 +88,7 @@ class DomainCron c = 0 Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| - DomainDeleteJob.enqueue(x.id, run_at: rand(24*60).minutes.from_now) + DomainDeleteJob.enqueue(x.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? c += 1 end From aa1e08942b48c785d7cdb8313be3d2480b485afd Mon Sep 17 00:00:00 2001 From: Stas Date: Fri, 4 Mar 2016 12:47:39 +0200 Subject: [PATCH 4/6] 113430903-minutes_added_for_condition --- app/jobs/domain_set_delete_candidate_job.rb | 2 +- app/models/domain_cron.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb index ffdf54277..cc6f3f255 100644 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -4,6 +4,6 @@ class DomainSetDeleteCandidateJob < Que::Job domain = Domain.find(domain_id) domain.statuses << DomainStatus::DELETE_CANDIDATE domain.save(validate: false) - DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) + DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) end end diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index d4e26f10a..24c0aac74 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -75,7 +75,7 @@ class DomainCron next unless domain.delete_candidateable? real += 1 STDOUT << "#{Time.zone.now.utc} DomainCron.start_delete_period: ##{domain.id} (#{domain.name})\n" unless Rails.env.test? - DomainSetDeleteCandidateJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) and marked += 1 + DomainSetDeleteCandidateJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) and marked += 1 end ensure # the operator should see what was accomplished STDOUT << "#{Time.zone.now.utc} - Finished setting schedule for delete_candidate - #{marked} out of #{real} successfully added to Que schedule\n" unless Rails.env.test? @@ -88,7 +88,7 @@ class DomainCron c = 0 Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| - DomainDeleteJob.enqueue(x.id, run_at: rand(((24*60) - (DateTime.now.hour * 60))).minutes.from_now) + DomainDeleteJob.enqueue(x.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? c += 1 end From de5f06fa89796e8958d7e883a2deac841ebc3602 Mon Sep 17 00:00:00 2001 From: Stas Date: Tue, 29 Mar 2016 17:03:07 +0300 Subject: [PATCH 5/6] 113430903-paper_trail_log_added --- app/jobs/domain_delete_job.rb | 1 + app/jobs/domain_set_delete_candidate_job.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/jobs/domain_delete_job.rb b/app/jobs/domain_delete_job.rb index 5336dc466..7d86e9885 100644 --- a/app/jobs/domain_delete_job.rb +++ b/app/jobs/domain_delete_job.rb @@ -3,6 +3,7 @@ class DomainDeleteJob < Que::Job def run(domain_id) domain = Domain.find(domain_id) + ::PaperTrail.whodunnit = "job - #{self.class.name}" WhoisRecord.where(domain_id: domain.id).destroy_all domain.destroy diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb index cc6f3f255..f1e489694 100644 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -3,6 +3,7 @@ class DomainSetDeleteCandidateJob < Que::Job def run(domain_id) domain = Domain.find(domain_id) domain.statuses << DomainStatus::DELETE_CANDIDATE + ::PaperTrail.whodunnit = "job - #{self.class.name}" domain.save(validate: false) DomainDeleteJob.enqueue(domain.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) end From 8c5c1dd087d2bdfc1dd8fd93d3a77f905283e27d Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 30 Mar 2016 13:51:41 +0300 Subject: [PATCH 6/6] 113430903-delete_by_status_added --- app/models/domain_cron.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 24c0aac74..390708e76 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -87,6 +87,14 @@ class DomainCron STDOUT << "#{Time.zone.now.utc} - Destroying domains\n" unless Rails.env.test? c = 0 + + Domain.where("statuses @> '{deleteCandidate}'::varchar[]").each do |x| + WhoisRecord.where(domain_id: x.id).destroy_all + DomainDeleteJob.enqueue(x.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) + STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: job added by deleteCandidate status ##{x.id} (#{x.name})\n" unless Rails.env.test? + c += 1 + end + Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| DomainDeleteJob.enqueue(x.id, run_at: rand(((24*60) - (DateTime.now.hour * 60 + DateTime.now.minute))).minutes.from_now) STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test?