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 +4 -4
- data/lib/bosh/director.rb +0 -1
- data/lib/bosh/director/config.rb +0 -2
- data/lib/bosh/director/dns/dns_manager.rb +74 -37
- data/lib/bosh/director/instance_deleter.rb +0 -8
- data/lib/bosh/director/models.rb +0 -1
- data/lib/bosh/director/version.rb +1 -1
- metadata +16 -18
- data/lib/bosh/director/dns/blobstore_dns_publisher.rb +0 -35
- data/lib/bosh/director/models/local_dns_blob.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fef907f7eb794345ecc71719479d6bccce8c38cd
|
4
|
+
data.tar.gz: 4a096667cc426bde89ea2857699f5f6540a67038
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8895ccf2fb097b628415ec8800a6694e57c3e523e0d9ce05430fb2bc7098f5bf586ac6ad5278d7b552c2f4a426919583d92d994c0975a8209ff482dfad70bff2
|
7
|
+
data.tar.gz: 6f92d6c25bae4f77039889e3755715399b18bfa1fab63ac28a763c1e72dbe7d8fa551c66f012371d30f82f188e771baa395182d6fc33384ca29dd7c819f9f150
|
data/lib/bosh/director.rb
CHANGED
@@ -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'
|
data/lib/bosh/director/config.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
11
|
-
dns_provider = PowerDns.new(dns_domain_name, logger) if !!Config.dns_db
|
53
|
+
def flush_dns_cache ; end
|
12
54
|
|
13
|
-
|
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,
|
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
|
-
|
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)
|
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
|
data/lib/bosh/director/models.rb
CHANGED
@@ -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'
|
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-
|
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
|