vagrant-command-dns 0.2.0 → 0.2.1

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: cd77fab9b2c0d0d39c8b38f2db26615e58c27c84
4
- data.tar.gz: 8cfd993bbc28ced4e07711752166157fa8bdf7b6
3
+ metadata.gz: b411197419ba64b4a43e66157cae7983eea8fa08
4
+ data.tar.gz: f4285387240a7f19431a60306937d1f80427e084
5
5
  SHA512:
6
- metadata.gz: 42520e3d9c9fc2332455695663dfafdc7b246f2df7d74b9a43765943b2c38cf5f3e93864a50ad3d841e9de45d7b7d15b9e5588d7498dfca46e528dbbf54f196c
7
- data.tar.gz: e5725a24eb19b3b81b90d90aa9598fbcedc131830d9822f7774cd0dc9d0ff452fd2b6c5768e2fe0794bafda492e87ef78565f2675d2a41e71933aef733d030c9
6
+ metadata.gz: cdc10966cde761d47c266c74f463cf352b505b5c7d82798a7a7e0b0cb02097881eeadecfbaa5ab245d586a0d0326fa0f904e922b08667f54a935b7766b160873
7
+ data.tar.gz: 41e08550046de23227dc4af2a457174078d3b04cc39141862d33fc57c1f8c38647b4a1da0eb1a47f018df99ee103d726a798d157cbb608c3b66fedfba630a599
@@ -13,35 +13,44 @@ module VagrantPlugins
13
13
  def call(env)
14
14
  if !env[:machine].config.dns.__skip
15
15
  if env[:machine].state.id != :running
16
- raise Errors::MachineStateError
16
+ raise Errors::MachineState, state: 'running'
17
17
  end
18
18
 
19
19
  ip = nil
20
+ unable = true
20
21
 
21
22
  case env[:machine].provider_name
22
23
  when :virtualbox
23
24
  env[:machine].config.vm.networks.each do |network|
24
25
  key, options = network[0], network[1]
25
26
  if key == :private_network or key == :public_network
27
+ unable = false
26
28
  if options[:dns] != 'skip'
27
- case key
28
- when :private_network
29
- cmd = "vagrant ssh -c \"ip -4 addr show \\$(ip -4 route | tail -n1 | awk '{print \\$3}') | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}'\" 2>/dev/null"
30
- when :public_network
31
- cmd = "vagrant ssh -c \"ip -4 addr show \\$(ip -4 route | head -n2 | tail -n1 | awk '{print \\$5}') | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}'\" 2>/dev/null"
32
- end
33
- begin
34
- ip = IPAddr.new(`#{cmd}`.chomp)
35
- rescue IPAddr::InvalidAddressError
36
- raise Errors::InvalidAddressError
29
+ if options[:ip] # static ip specified
30
+ ip = IPAddr.new(options[:ip])
31
+ else
32
+ case key
33
+ when :private_network
34
+ cmd = "vagrant ssh -c \"ip -4 addr show \\$(ip -4 route | tail -n1 | awk '{print \\$3}') | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}'\" 2>/dev/null"
35
+ when :public_network
36
+ cmd = "vagrant ssh -c \"ip -4 addr show \\$(ip -4 route | head -n2 | tail -n1 | awk '{print \\$5}') | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}'\" 2>/dev/null"
37
+ end
38
+ begin
39
+ ip = IPAddr.new(`#{cmd}`.chomp)
40
+ rescue IPAddr::InvalidAddressError
41
+ raise Errors::InvalidAddress
42
+ end
37
43
  end
38
44
  else
39
45
  env[:ui].info(I18n.t('vagrant_command_dns.config.network_skip'))
40
46
  end
41
47
  end
42
48
  end
49
+ if unable
50
+ raise Errors::NoNetwork
51
+ end
43
52
  else
44
- raise Errors::UnsupportedProviderError
53
+ raise Errors::UnsupportedProvider
45
54
  end
46
55
 
47
56
  unless ip.nil?
@@ -13,7 +13,7 @@ module VagrantPlugins
13
13
 
14
14
  def call(env)
15
15
  if env[:machine].state.id != :running
16
- raise Errors::MachineStateError, state: 'running'
16
+ raise Errors::MachineState, state: 'running'
17
17
  end
18
18
 
19
19
  record_map = env[:record_map]
@@ -21,6 +21,10 @@ module VagrantPlugins
21
21
  File.open('/etc/hosts', 'r') do |file|
22
22
  file.each_line do |line|
23
23
  env[:record_map].each do |hostname, ip|
24
+ if env[:machine].config.dns.skip_aliases.include? hostname
25
+ env[:ui].info(I18n.t('vagrant_command_dns.command.common.skip_alias', hostname: hostname))
26
+ next
27
+ end
24
28
  precise_pattern = Regexp.new('^\s*' + ip + '\s+' + hostname)
25
29
  loose_pattern = Regexp.new('^\s*[0-9]{1,3}[0-9]{1,3}[0-9]{1,3}[0-9]{1,3}\s+' + hostname)
26
30
  if line.match(/#{precise_pattern}/)
@@ -14,7 +14,7 @@ module VagrantPlugins
14
14
  def call(env)
15
15
  unless env[:machine].config.dns.__skip
16
16
  if env[:machine].state.id != :running
17
- raise Errors::MachineStateError, state: 'running'
17
+ raise Errors::MachineState, state: 'running'
18
18
  end
19
19
  end
20
20
 
@@ -20,6 +20,13 @@ module VagrantPlugins
20
20
  end
21
21
 
22
22
  def call(env)
23
+ errors = []
24
+ errors << I18n.t('vagrant_command_dns.config.route53.access_key_id_required') if env[:machine].config.dns.route53_access_key_id.nil?
25
+ errors << I18n.t('vagrant_command_dns.config.route53.secret_access_key_required') if env[:machine].config.dns.route53_secret_access_key.nil?
26
+ if errors.length > 0
27
+ raise Errors::ConfigInvalid, errors: errors
28
+ end
29
+
23
30
  # Build the fog config
24
31
  fog_config = {
25
32
  :provider => :aws,
@@ -14,10 +14,14 @@ module VagrantPlugins
14
14
 
15
15
  def call(env)
16
16
  if env[:machine].state.id != :running
17
- raise Errors::MachineStateError, state: 'running'
17
+ raise Errors::MachineState, state: 'running'
18
18
  end
19
19
 
20
20
  env[:record_map].each do |hostname, ip|
21
+ if env[:machine].config.dns.skip_aliases.include? hostname
22
+ env[:ui].info(I18n.t('vagrant_command_dns.command.common.skip_alias', hostname: hostname))
23
+ next
24
+ end
21
25
  @logger.info("Checking for existing '#{hostname}' Route53 record...")
22
26
 
23
27
  record_name = hostname + '.' unless hostname.end_with?('.')
@@ -15,7 +15,7 @@ module VagrantPlugins
15
15
  def call(env)
16
16
  unless env[:machine].config.dns.__skip
17
17
  if env[:machine].state.id != :running
18
- raise Errors::MachineStateError, state: 'running'
18
+ raise Errors::MachineState, state: 'running'
19
19
  end
20
20
  end
21
21
 
@@ -7,6 +7,11 @@ module VagrantPlugins
7
7
  # @return [Array<String>]
8
8
  attr_accessor :aliases
9
9
 
10
+ # List of disallowed aliases in FQDN format
11
+ #
12
+ # @return [Array<String>]
13
+ attr_accessor :skip_aliases
14
+
10
15
  # AWS Route53 Settings
11
16
 
12
17
  # The version of the AWS api to use
@@ -35,10 +40,10 @@ module VagrantPlugins
35
40
  attr_accessor :route53_zone_id
36
41
 
37
42
  attr_accessor :__skip
38
- attr_reader :__available_providers
39
43
 
40
44
  def initialize
41
45
  @aliases = UNSET_VALUE
46
+ @skip_aliases = UNSET_VALUE
42
47
 
43
48
  @route53_version = UNSET_VALUE
44
49
  @route53_access_key_id = UNSET_VALUE
@@ -48,11 +53,11 @@ module VagrantPlugins
48
53
 
49
54
  # Internal
50
55
  @__skip = false
51
- @__available_providers = %w(local route53)
52
56
  end
53
57
 
54
58
  def finalize!
55
- @aliases = [] if @aliases == UNSET_VALUE
59
+ @aliases = [] if @aliases == UNSET_VALUE
60
+ @skip_aliases = [] if @skip_aliases == UNSET_VALUE
56
61
 
57
62
  @route53_version = nil if @route53_version == UNSET_VALUE
58
63
  @route53_zone_id = nil if @route53_zone_id == UNSET_VALUE
@@ -67,21 +72,18 @@ module VagrantPlugins
67
72
  def validate(machine)
68
73
  errors = _detected_errors
69
74
 
70
- if @route53
71
- if machine.provider_name == :aws
72
- aws_config = machine.provider_config
73
- # If these values are still not set and the AWS provider is being used, borrow it's config values
74
- @route53_version = aws_config.version if @route53_version == nil
75
- @route53_access_key_id = aws_config.access_key_id if @route53_access_key_id == nil
76
- @route53_secret_access_key = aws_config.secret_access_key if @route53_secret_access_key == nil
77
- @route53_session_token = aws_config.session_token if @route53_session_token == nil
78
- end
79
-
80
- errors << I18n.t('vagrant_command_dns.config.route53_zone_id_required') if @route53_zone_id.nil?
81
- errors << I18n.t('vagrant_command_dns.config.route53_access_key_id_required') if @route53_access_key_id.nil?
82
- errors << I18n.t('vagrant_command_dns.config.route53_secret_access_key_required') if @route53_secret_access_key.nil?
75
+ if machine.provider_name == :aws
76
+ aws_config = machine.provider_config
77
+ # If these values are still not set and the AWS provider is being used, borrow it's config values
78
+ @route53_version = aws_config.version if @route53_version == nil
79
+ @route53_access_key_id = aws_config.access_key_id if @route53_access_key_id == nil
80
+ @route53_secret_access_key = aws_config.secret_access_key if @route53_secret_access_key == nil
81
+ @route53_session_token = aws_config.session_token if @route53_session_token == nil
83
82
  end
84
83
 
84
+ errors << I18n.t('vagrant_command_dns.config.aliases_list_required') unless @aliases.kind_of? Array
85
+ errors << I18n.t('vagrant_command_dns.config.skip_aliases_list_required') unless @skip_aliases.kind_of? Array
86
+
85
87
  { 'DNS' => errors }
86
88
  end
87
89
 
@@ -6,24 +6,24 @@ module VagrantPlugins
6
6
  error_namespace('vagrant_command_dns.errors')
7
7
  end
8
8
 
9
- class MachineStateError < VagrantCommandDnsError
10
- error_key(:machine_state_error)
9
+ class ConfigInvalid < VagrantCommandDnsError
10
+ error_key(:config_invalid)
11
11
  end
12
12
 
13
- class UnsupportedProviderError < VagrantCommandDnsError
14
- error_key(:unsupported_provider_error)
13
+ class MachineState < VagrantCommandDnsError
14
+ error_key(:machine_state)
15
15
  end
16
16
 
17
- class InvalidAddressError < VagrantCommandDnsError
18
- error_key(:invalid_address_error)
17
+ class UnsupportedProvider < VagrantCommandDnsError
18
+ error_key(:unsupported_provider)
19
19
  end
20
20
 
21
- class FogError < VagrantCommandDnsError
22
- error_key(:fog_error)
21
+ class InvalidAddress < VagrantCommandDnsError
22
+ error_key(:invalid_address)
23
23
  end
24
24
 
25
- class EditLocalHostsError < VagrantCommandDnsError
26
- error_key(:edit_local_hosts_error)
25
+ class NoNetwork < VagrantCommandDnsError
26
+ error_key(:no_network)
27
27
  end
28
28
 
29
29
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module CommandDns
3
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -2,48 +2,45 @@ en:
2
2
  vagrant_command_dns:
3
3
 
4
4
  config:
5
- network_skip: |-
6
- Skip requested for network in Vagrantfile
7
- route53_zone_id_required: |-
8
- A zone ID must be specified via "route53_zone_id"
9
- route53_access_key_id_required: |-
10
- An access key ID must be specified via "route53_access_key_id"
11
- route53_secret_access_key_required: |-
12
- A secret access key is required via "route53_secret_access_key"
5
+ common:
6
+ config_invalid: |-
7
+ There are errors in the configuration of this machine. Please fix
8
+ the following errors and try again:
9
+
10
+ %{errors}
11
+ missing_field: "The following settings are missing: %{field}"
12
+ aliases_list_required: "'aliases' must be a list of FQDNs."
13
+ skip_aliases_list_required: "'skip_aliases' must be a list of FQDNs."
14
+ network_skip: "Skip requested for network in Vagrantfile."
15
+
16
+ route53:
17
+ access_key_id_required: "An access key ID must be specified via 'route53_access_key_id'"
18
+ secret_access_key_required: "A secret access key is required via 'route53_secret_access_key'"
19
+
13
20
 
14
21
  errors:
15
- machine_state_error: |-
16
- Machine must be %{state} to preform this action.
17
- unsupported_provider_error: |-
18
- Machine provider not supported. Pull requests and testers are welcome.
19
- invalid_address_error: |-
20
- invalid_address_error
22
+ machine_state: "Machine must be %{state} to preform this action."
23
+ unsupported_provider: "Machine provider not supported. Pull requests and testers are welcome."
24
+ invalid_address: "Invalid IP address detected. This could be a bug."
25
+ no_network: "Vagrantfile has no available :private_network or :public_network specified."
26
+
21
27
 
22
28
  command:
29
+ common:
30
+ skip_alias: "Desired hostname alias '%{hostname}' is a reserved namespace specified via 'skip_aliases'. Skipping...'"
31
+
23
32
  host:
24
- edit_error: |-
25
- Unable to edit /etc/hosts. Consult documentation or submit a pull request.
26
- create_success: |-
27
- /etc/hosts record created for %{ip} %{hostname}
28
- create_exists_match: |-
29
- /etc/hosts record exists for %{ip} %{hostname}
30
- create_exists_conflict: |-
31
- Potentially conflicting entries found in /etc/hosts. Please update manually...
32
- destroy_success: |-
33
- /etc/hosts record destroyed for %{hostname}
33
+ edit_error: "Unable to edit /etc/hosts. Consult documentation or submit a pull request."
34
+ create_success: "/etc/hosts record created for %{ip} %{hostname}."
35
+ create_exists_match: "/etc/hosts record exists for %{ip} %{hostname}."
36
+ create_exists_conflict: "Potentially conflicting entries found in /etc/hosts. Please update manually..."
37
+ destroy_success: "/etc/hosts record destroyed for %{hostname}."
34
38
 
35
39
  route53:
36
- fog_error: |-
37
- AWS error: %{message}
38
- create_success: |-
39
- Route53 record created for %{ip} %{hostname}.
40
- create_exists_match: |-
41
- Route53 record exists for %{ip} %{hostname}.
42
- create_exists_conflict: |-
43
- Route53 record exists for %{ip} %{hostname}. Please update manually.
44
- destroy_success: |-
45
- Route53 record destroyed for %{hostname}
46
- destroy_conflict: |-
47
- Route53 record for %{hostname} does not match. Expected %{expected} got %{got}. Please update manually...
48
- destroy_not_found: |-
49
- Route53 record for %{hostname} not found. Skipping...
40
+ fog_error: "AWS error: %{message}"
41
+ create_success: "Route53 record created for %{ip} %{hostname}."
42
+ create_exists_match: "Route53 record exists for %{ip} %{hostname}."
43
+ create_exists_conflict: "Route53 record exists for %{ip} %{hostname}. Please update manually."
44
+ destroy_success: "Route53 record destroyed for %{hostname}."
45
+ destroy_conflict: "Route53 record for %{hostname} does not match. Expected %{expected} got %{got}. Please update manually..."
46
+ destroy_not_found: "Route53 record for %{hostname} not found. Skipping..."
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-command-dns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - cornfeedhobo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-04 00:00:00.000000000 Z
11
+ date: 2016-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog