vagrant-command-dns 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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