From 888d38486f90cddb246fcc940446d63e4f121f6c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 3 Mar 2015 17:21:29 +0200 Subject: [PATCH] Import nameservers with domains --- app/models/legacy/domain.rb | 2 + app/models/legacy/dsrecord.rb | 5 +++ app/models/legacy/host.rb | 7 ++++ app/models/legacy/host_ipaddr_map.rb | 5 +++ app/models/legacy/keyset.rb | 7 ++++ app/models/legacy/nsset.rb | 7 ++++ ...302161712_add_legacy_columns_for_domain.rb | 2 +- db/schema.rb | 2 +- lib/tasks/import.rake | 40 ++++++++++++++++++- 9 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 app/models/legacy/dsrecord.rb create mode 100644 app/models/legacy/host.rb create mode 100644 app/models/legacy/host_ipaddr_map.rb create mode 100644 app/models/legacy/keyset.rb create mode 100644 app/models/legacy/nsset.rb diff --git a/app/models/legacy/domain.rb b/app/models/legacy/domain.rb index a28999e0e..d100fe235 100644 --- a/app/models/legacy/domain.rb +++ b/app/models/legacy/domain.rb @@ -5,6 +5,8 @@ module Legacy belongs_to :object_registry, foreign_key: :id belongs_to :object, foreign_key: :id belongs_to :object_state, foreign_key: :id, primary_key: :object_id + belongs_to :nsset, foreign_key: :nsset + belongs_to :keyset, foreign_key: :keyset belongs_to :registrant, foreign_key: :registrant, primary_key: :legacy_id, class_name: '::Contact' end end diff --git a/app/models/legacy/dsrecord.rb b/app/models/legacy/dsrecord.rb new file mode 100644 index 000000000..4630a7549 --- /dev/null +++ b/app/models/legacy/dsrecord.rb @@ -0,0 +1,5 @@ +module Legacy + class Dsrecord < Db + self.table_name = :dsrecord + end +end diff --git a/app/models/legacy/host.rb b/app/models/legacy/host.rb new file mode 100644 index 000000000..4c4eeab09 --- /dev/null +++ b/app/models/legacy/host.rb @@ -0,0 +1,7 @@ +module Legacy + class Host < Db + self.table_name = :host + + has_many :host_ipaddr_maps, foreign_key: :hostid + end +end diff --git a/app/models/legacy/host_ipaddr_map.rb b/app/models/legacy/host_ipaddr_map.rb new file mode 100644 index 000000000..a4dc2f14e --- /dev/null +++ b/app/models/legacy/host_ipaddr_map.rb @@ -0,0 +1,5 @@ +module Legacy + class HostIpaddrMap < Db + self.table_name = :host_ipaddr_map + end +end diff --git a/app/models/legacy/keyset.rb b/app/models/legacy/keyset.rb new file mode 100644 index 000000000..a0a3e1d87 --- /dev/null +++ b/app/models/legacy/keyset.rb @@ -0,0 +1,7 @@ +module Legacy + class Keyset < Db + self.table_name = :keyset + + has_many :dsrecords, foreign_key: :keysetid + end +end diff --git a/app/models/legacy/nsset.rb b/app/models/legacy/nsset.rb new file mode 100644 index 000000000..9b8a84469 --- /dev/null +++ b/app/models/legacy/nsset.rb @@ -0,0 +1,7 @@ +module Legacy + class Nsset < Db + self.table_name = :nsset + + has_many :hosts, foreign_key: :nssetid + end +end diff --git a/db/migrate/20150302161712_add_legacy_columns_for_domain.rb b/db/migrate/20150302161712_add_legacy_columns_for_domain.rb index 688ae9a8e..3e3daf988 100644 --- a/db/migrate/20150302161712_add_legacy_columns_for_domain.rb +++ b/db/migrate/20150302161712_add_legacy_columns_for_domain.rb @@ -1,6 +1,6 @@ class AddLegacyColumnsForDomain < ActiveRecord::Migration def change add_column :domains, :legacy_id, :integer - add_column :nameservers, :legacy_id, :integer + add_column :nameservers, :legacy_domain_id, :integer end end diff --git a/db/schema.rb b/db/schema.rb index ec477ebd7..ab33f9e23 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -570,7 +570,7 @@ ActiveRecord::Schema.define(version: 20150330083700) do t.integer "domain_id" t.string "creator_str" t.string "updator_str" - t.integer "legacy_id" + t.integer "legacy_domain_id" end create_table "registrars", force: :cascade do |t| diff --git a/lib/tasks/import.rake b/lib/tasks/import.rake index 5e7154df4..e512f2f8b 100644 --- a/lib/tasks/import.rake +++ b/lib/tasks/import.rake @@ -184,12 +184,21 @@ namespace :import do "legacy_id" ] + nameserver_columns = [ + "hostname", + "ipv4", + "ipv6", + "creator_str", + "updator_str", + "legacy_domain_id" + ] + domains, nameservers = [], [] existing_domain_ids = Domain.pluck(:legacy_id) user = "rake-#{`whoami`.strip} #{ARGV.join ' '}" count = 0 - Legacy::Domain.includes(:object_registry, :object, :registrant, :object_state, :object_registry => :registrar, :object_state => :enum_object_state).find_each(batch_size: 10000).with_index do |x, index| + Legacy::Domain.includes(:object_registry, :object, :registrant, :nsset, :object_state, :object_registry => :registrar, :object_state => :enum_object_state).find_each(batch_size: 10000).with_index do |x, index| next if existing_domain_ids.include?(x.id) count += 1 @@ -213,9 +222,35 @@ namespace :import do x.id ] + # nameservers + x.nsset.hosts.includes(:host_ipaddr_maps).each do |host| + ip_maps = host.host_ipaddr_maps + ips = {} + ip_maps.each do |ip_map| + next unless ip_map.ipaddr + ips[:ipv4] = ip_map.ipaddr.to_s if ip_map.ipaddr.ipv4? + ips[:ipv6] = ip_map.ipaddr.to_s if ip_map.ipaddr.ipv6? + end if ip_maps.any? + + nameservers << [ + host.fqdn.try(:strip), + ips[:ipv4].try(:strip), + ips[:ipv6].try(:strip), + user, + user, + x.id + ] + end + + # dnskeys + # x.keyset.includes(:dsrecords).each do |ds| + + # end + if domains.size % 10000 == 0 + puts 'importing' Domain.import domain_columns, domains, validate: false - # Address.import address_columns, addresses, validate: false + Nameserver.import nameserver_columns, nameservers, validate: false domains, nameservers = [], [] end rescue => e @@ -224,6 +259,7 @@ namespace :import do end Domain.import domain_columns, domains, validate: false + Nameserver.import nameserver_columns, nameservers, validate: false puts "-----> Imported #{count} new domains in #{(Time.now.to_f - start).round(2)} seconds" end