bosh-director 1.3262.0 → 1.3262.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 576adc0d9f6febe9f333d2f9323ae9d8c7a31f87
4
- data.tar.gz: 01311d5a771cd111a100a5866d7cd38007dde982
3
+ metadata.gz: fef907f7eb794345ecc71719479d6bccce8c38cd
4
+ data.tar.gz: 4a096667cc426bde89ea2857699f5f6540a67038
5
5
  SHA512:
6
- metadata.gz: addb243b3fe331ae2783f7799af05991645e5529b205bf968756f2bc4dd1e7d41d797c0130657706d8f98b86366d344f874156d0fdf25e38e88fb3d2f65f93b9
7
- data.tar.gz: 0f4ca4cd3d286d8a904202380647faa9e5f4e62de7b1abab550a615a69311a14ae38ca2eaa957874b794357d6b862c080140471300d55d461078a219b15ce5d3
6
+ metadata.gz: 8895ccf2fb097b628415ec8800a6694e57c3e523e0d9ce05430fb2bc7098f5bf586ac6ad5278d7b552c2f4a426919583d92d994c0975a8209ff482dfad70bff2
7
+ data.tar.gz: 6f92d6c25bae4f77039889e3755715399b18bfa1fab63ac28a763c1e72dbe7d8fa551c66f012371d30f82f188e771baa395182d6fc33384ca29dd7c819f9f150
@@ -39,7 +39,6 @@ require 'delayed_job_sequel'
39
39
  require 'common/thread_formatter'
40
40
  require 'bosh/core/encryption_handler'
41
41
  require 'bosh/director/api'
42
- require 'bosh/director/dns/blobstore_dns_publisher'
43
42
  require 'bosh/director/dns/canonicalizer'
44
43
  require 'bosh/director/dns/dns_manager'
45
44
  require 'bosh/director/dns/local_dns_repo'
@@ -40,7 +40,6 @@ module Bosh::Director
40
40
  :generate_vm_passwords,
41
41
  :remove_dev_tools,
42
42
  :enable_virtual_delete_vms,
43
- :local_dns,
44
43
  )
45
44
 
46
45
  attr_reader(
@@ -165,7 +164,6 @@ module Bosh::Director
165
164
  @generate_vm_passwords = config.fetch('generate_vm_passwords', false)
166
165
  @remove_dev_tools = config['remove_dev_tools']
167
166
  @record_events = config.fetch('record_events', false)
168
- @local_dns = config.fetch('local_dns', false)
169
167
 
170
168
  @enable_virtual_delete_vms = config.fetch('enable_virtual_delete_vms', false)
171
169
 
@@ -1,28 +1,76 @@
1
1
  module Bosh::Director
2
2
  class DnsManagerProvider
3
3
  def self.create
4
- dns_config = Config.dns || {}
4
+ dns_enabled = !!Config.dns_db # to be consistent with current behavior
5
+ if dns_enabled
6
+ dns_config = Config.dns || {}
7
+ logger = Config.logger
8
+ local_dns_repo = LocalDnsRepo.new(logger)
9
+ dns_domain_name = Canonicalizer.canonicalize(dns_config.fetch('domain_name', 'bosh'), :allow_dots => true)
10
+ dns_provider = PowerDns.new(dns_domain_name, logger)
11
+
12
+ EnabledDnsManager.new(dns_domain_name, dns_config, dns_provider, local_dns_repo, logger)
13
+ else
14
+ DisabledDnsManager.new
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ class DnsManager
22
+ def configure_nameserver ; end
23
+
24
+ def delete_dns_for_instance(instance_model) ; end
25
+
26
+ def dns_record_name(hostname, job_name, network_name, deployment_name) ; end
27
+
28
+ # build a list of dns servers to use
29
+ def dns_servers(network, dns_spec, add_default_dns = true)
30
+ servers = nil
31
+
32
+ if dns_spec
33
+ servers = []
34
+ dns_spec.each do |dns|
35
+ dns = NetAddr::CIDR.create(dns)
36
+ unless dns.size == 1
37
+ raise NetworkInvalidDns,
38
+ "Invalid DNS for network '#{network}': must be a single IP"
39
+ end
40
+
41
+ servers << dns.ip
42
+ end
43
+ end
44
+
45
+ return servers unless add_default_dns
46
+ add_default_dns_server(servers)
47
+ end
48
+
49
+ def find_dns_record(dns_record_name, ip_address) ; end
5
50
 
6
- logger = Config.logger
7
- dns_domain_name = Canonicalizer.canonicalize(dns_config.fetch('domain_name', 'bosh'), :allow_dots => true)
8
- local_dns_repo = LocalDnsRepo.new(logger)
51
+ def find_dns_record_names_by_instance(instance_model) ; end
9
52
 
10
- dns_publisher = BlobstoreDnsPublisher.new(App.instance.blobstores.blobstore, dns_domain_name) if Config.local_dns
11
- dns_provider = PowerDns.new(dns_domain_name, logger) if !!Config.dns_db
53
+ def flush_dns_cache ; end
12
54
 
13
- DnsManager.new(dns_domain_name, dns_config, dns_provider, dns_publisher, local_dns_repo, logger)
55
+ def migrate_legacy_records(instance_model) ; end
56
+
57
+ def update_dns_record_for_instance(instance_model, dns_names_to_ip) ; end
58
+
59
+ private
60
+
61
+ def add_default_dns_server(servers)
62
+ servers
14
63
  end
15
64
  end
16
65
 
17
66
  public
18
67
 
19
- class DnsManager
68
+ class EnabledDnsManager < DnsManager
20
69
  attr_reader :dns_domain_name
21
70
 
22
- def initialize(dns_domain_name, dns_config, dns_provider, dns_publisher, local_dns_repo, logger)
71
+ def initialize(dns_domain_name, dns_config, dns_provider, local_dns_repo, logger)
23
72
  @dns_domain_name = dns_domain_name
24
73
  @dns_provider = dns_provider
25
- @dns_publisher = dns_publisher
26
74
  @default_server = dns_config['server']
27
75
  @flush_command = dns_config['flush_command']
28
76
  @ip_address = dns_config['address']
@@ -31,21 +79,21 @@ module Bosh::Director
31
79
  end
32
80
 
33
81
  def dns_enabled?
34
- !@dns_provider.nil?
35
- end
36
-
37
- def publisher_enabled?
38
- !@dns_publisher.nil?
82
+ true
39
83
  end
40
84
 
41
85
  def configure_nameserver
42
- @dns_provider.create_or_update_nameserver(@ip_address) if dns_enabled?
86
+ @dns_provider.create_or_update_nameserver(@ip_address)
43
87
  end
44
88
 
45
89
  def find_dns_record(dns_record_name, ip_address)
46
90
  @dns_provider.find_dns_record(dns_record_name, ip_address)
47
91
  end
48
92
 
93
+ def find_dns_record_names_by_instance(instance_model)
94
+ instance_model.nil? ? [] : instance_model.dns_record_names.to_a.compact
95
+ end
96
+
49
97
  def update_dns_record_for_instance(instance_model, dns_names_to_ip)
50
98
  current_dns_records = @local_dns_repo.find(instance_model)
51
99
  new_dns_records = []
@@ -60,7 +108,6 @@ module Bosh::Director
60
108
 
61
109
  def migrate_legacy_records(instance_model)
62
110
  return if @local_dns_repo.find(instance_model).any?
63
- return unless dns_enabled?
64
111
 
65
112
  index_pattern_for_all_networks = dns_record_name(
66
113
  instance_model.index,
@@ -84,8 +131,6 @@ module Bosh::Director
84
131
  end
85
132
 
86
133
  def delete_dns_for_instance(instance_model)
87
- return if !dns_enabled?
88
-
89
134
  current_dns_records = @local_dns_repo.find(instance_model)
90
135
  if current_dns_records.empty?
91
136
  # for backwards compatibility when old instances
@@ -136,24 +181,6 @@ module Bosh::Director
136
181
  @logger.warn("Failed to flush DNS cache: #{stderr.chomp}")
137
182
  end
138
183
  end
139
- publish_dns_records
140
- end
141
-
142
- def publish_dns_records
143
- if publisher_enabled?
144
- dns_records = @dns_publisher.export_dns_records
145
- @dns_publisher.publish(dns_records)
146
- end
147
- end
148
-
149
- def cleanup_dns_records
150
- if publisher_enabled?
151
- @dns_publisher.cleanup_blobs
152
- end
153
- end
154
-
155
- def find_dns_record_names_by_instance(instance_model)
156
- instance_model.nil? ? [] : instance_model.dns_record_names.to_a.compact
157
184
  end
158
185
 
159
186
  def dns_record_name(hostname, job_name, network_name, deployment_name)
@@ -179,4 +206,14 @@ module Bosh::Director
179
206
  servers
180
207
  end
181
208
  end
209
+
210
+ class DisabledDnsManager < DnsManager
211
+ def dns_domain_name
212
+ nil
213
+ end
214
+
215
+ def dns_enabled?
216
+ false
217
+ end
218
+ end
182
219
  end
@@ -35,14 +35,6 @@ module Bosh::Director
35
35
  @dns_manager.delete_dns_for_instance(instance_model)
36
36
  end
37
37
 
38
- error_ignorer.with_force_check do
39
- @dns_manager.publish_dns_records
40
- end
41
-
42
- error_ignorer.with_force_check do
43
- @dns_manager.cleanup_dns_records
44
- end
45
-
46
38
  error_ignorer.with_force_check do
47
39
  RenderedJobTemplatesCleaner.new(instance_model, @blobstore, @logger).clean_all
48
40
  end
@@ -10,7 +10,6 @@ require 'bosh/director/models/deployment_property'
10
10
  require 'bosh/director/models/director_attribute'
11
11
  require 'bosh/director/models/instance'
12
12
  require 'bosh/director/models/ip_address'
13
- require 'bosh/director/models/local_dns_blob'
14
13
  require 'bosh/director/models/log_bundle'
15
14
  require 'bosh/director/models/orphan_disk'
16
15
  require 'bosh/director/models/orphan_snapshot'
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Director
3
- VERSION = '1.3262.0'
3
+ VERSION = '1.3262.4.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-director
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3262.0
4
+ version: 1.3262.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMware
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-23 00:00:00.000000000 Z
11
+ date: 2016-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bosh_common
@@ -16,98 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3262.0
19
+ version: 1.3262.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3262.0
26
+ version: 1.3262.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bosh_cpi
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3262.0
33
+ version: 1.3262.4.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3262.0
40
+ version: 1.3262.4.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bosh-registry
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3262.0
47
+ version: 1.3262.4.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3262.0
54
+ version: 1.3262.4.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: blobstore_client
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3262.0
61
+ version: 1.3262.4.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.3262.0
68
+ version: 1.3262.4.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bosh-core
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3262.0
75
+ version: 1.3262.4.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3262.0
82
+ version: 1.3262.4.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bosh-director-core
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.3262.0
89
+ version: 1.3262.4.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 1.3262.0
96
+ version: 1.3262.4.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bosh-template
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.3262.0
103
+ version: 1.3262.4.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.3262.0
110
+ version: 1.3262.4.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: bosh_openstack_cpi
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -810,7 +810,6 @@ files:
810
810
  - lib/bosh/director/deployment_plan/vm_extension.rb
811
811
  - lib/bosh/director/deployment_plan/vm_type.rb
812
812
  - lib/bosh/director/disk_manager.rb
813
- - lib/bosh/director/dns/blobstore_dns_publisher.rb
814
813
  - lib/bosh/director/dns/canonicalizer.rb
815
814
  - lib/bosh/director/dns/dns_manager.rb
816
815
  - lib/bosh/director/dns/local_dns_repo.rb
@@ -907,7 +906,6 @@ files:
907
906
  - lib/bosh/director/models/helpers/model_helper.rb
908
907
  - lib/bosh/director/models/instance.rb
909
908
  - lib/bosh/director/models/ip_address.rb
910
- - lib/bosh/director/models/local_dns_blob.rb
911
909
  - lib/bosh/director/models/lock.rb
912
910
  - lib/bosh/director/models/log_bundle.rb
913
911
  - lib/bosh/director/models/orphan_disk.rb
@@ -1,35 +0,0 @@
1
- module Bosh::Director
2
- class BlobstoreDnsPublisher
3
- def initialize(blobstore, domain_name)
4
- @blobstore = blobstore
5
- @domain_name = domain_name
6
- end
7
-
8
- def publish(dns_records)
9
- json_records = {:records => dns_records}.to_json
10
- blobstore_id = @blobstore.create(json_records)
11
- Models::LocalDnsBlob.create(:blobstore_id => blobstore_id, :sha1 => Digest::SHA1.hexdigest(json_records), :created_at => Time.new)
12
- blobstore_id
13
- end
14
-
15
- def export_dns_records
16
- hosts = []
17
- Models::Instance.all.map do |instance|
18
- spec = instance.spec
19
- spec['networks'].each do |network_name, network|
20
- hosts << [ network['ip'], spec['id'] + '.' + spec['name'] + '.' + network_name + '.' + spec['deployment'] + '.' + @domain_name ]
21
- end
22
- end
23
- hosts
24
- end
25
-
26
- def cleanup_blobs
27
- dns_blobs = Models::LocalDnsBlob.order(:id).all
28
- dns_blobs = dns_blobs - [ dns_blobs.last ]
29
- dns_blobs.each do |blob|
30
- Models::EphemeralBlob.create(:blobstore_id => blob.blobstore_id, :sha1 => blob.sha1, :created_at => blob.created_at)
31
- blob.delete
32
- end
33
- end
34
- end
35
- end
@@ -1,4 +0,0 @@
1
- module Bosh::Director::Models
2
- class LocalDnsBlob < Sequel::Model(Bosh::Director::Config.db)
3
- end
4
- end