mirror of
https://github.com/internetee/registry.git
synced 2025-07-24 19:48:28 +02:00
Support "force delete" procedure when releasing a domain
- `DomainCron.destroy_delete_candidates` runner is removed from `config/schedule.rb` with `domains:release` rake task as a replacement Closes #1119
This commit is contained in:
parent
5107d2d3a9
commit
6d40e9ec6a
5 changed files with 25 additions and 20 deletions
|
@ -15,13 +15,17 @@ module Concerns
|
|||
|
||||
def releasable_domains
|
||||
if release_to_auction
|
||||
where('delete_at < ? AND ? != ALL(coalesce(statuses, array[]::varchar[]))',
|
||||
where('(delete_at < ? OR force_delete_date <= ?)' \
|
||||
' AND ? != ALL(coalesce(statuses, array[]::varchar[]))',
|
||||
Time.zone.now,
|
||||
Time.zone.today,
|
||||
DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||
else
|
||||
where('delete_at < ? AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \
|
||||
where('(delete_at < ? OR force_delete_date <= ?)' \
|
||||
' AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \
|
||||
' ? != ALL(COALESCE(statuses, array[]::varchar[]))',
|
||||
Time.zone.now,
|
||||
Time.zone.today,
|
||||
DomainStatus::SERVER_DELETE_PROHIBITED,
|
||||
DomainStatus::DELETE_CANDIDATE)
|
||||
end
|
||||
|
|
|
@ -78,18 +78,4 @@ class DomainCron
|
|||
STDOUT << "#{Time.zone.now.utc} - Successfully set server_hold to #{marked} of #{real} domains\n" unless Rails.env.test?
|
||||
marked
|
||||
end
|
||||
|
||||
def self.destroy_delete_candidates
|
||||
STDOUT << "#{Time.zone.now.utc} - Destroying domains\n" unless Rails.env.test?
|
||||
|
||||
c = 0
|
||||
|
||||
Domain.where('force_delete_date <= ?', Time.zone.now.end_of_day.utc).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?
|
||||
c += 1
|
||||
end
|
||||
|
||||
STDOUT << "#{Time.zone.now.utc} - Job destroy added for #{c} domains\n" unless Rails.env.test?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -38,10 +38,6 @@ if @cron_group == 'registry'
|
|||
runner 'Certificate.update_crl'
|
||||
end
|
||||
|
||||
every 42.minutes do
|
||||
runner 'DomainCron.destroy_delete_candidates'
|
||||
end
|
||||
|
||||
every 45.minutes do
|
||||
runner 'DomainCron.start_expire_period'
|
||||
end
|
||||
|
|
|
@ -40,6 +40,15 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase
|
|||
assert_not @domain.domain_name.at_auction?
|
||||
end
|
||||
|
||||
def test_sells_domains_with_scheduled_force_delete_procedure_at_auction
|
||||
@domain.update!(force_delete_date: '2010-07-05')
|
||||
travel_to Time.zone.parse('2010-07-05')
|
||||
|
||||
Domain.release_domains
|
||||
|
||||
assert @domain.domain_name.at_auction?
|
||||
end
|
||||
|
||||
def test_deletes_registered_domain
|
||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
||||
|
|
|
@ -15,6 +15,16 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
|||
assert @domain.discarded?
|
||||
end
|
||||
|
||||
def test_discards_domains_with_scheduled_force_delete_procedure
|
||||
@domain.update!(force_delete_date: '2010-07-05')
|
||||
travel_to Time.zone.parse('2010-07-05')
|
||||
|
||||
Domain.release_domains
|
||||
@domain.reload
|
||||
|
||||
assert @domain.discarded?
|
||||
end
|
||||
|
||||
def test_ignores_domains_with_delete_at_in_the_future_or_now
|
||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00'))
|
||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue