knife-nodefu 0.8.0 → 0.9.0

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: d18ea080f20cf396c1ca2028c251c2d03e11739d
4
- data.tar.gz: 763a2918bb038fb17a6af7a400c506aee7a20cb5
3
+ metadata.gz: a3ad8e8392d71ebeb845d8e9b51f4af596afb1e1
4
+ data.tar.gz: 9a278214eb9500715e6076b9c58b24ee755229df
5
5
  SHA512:
6
- metadata.gz: 88715399c2240c35d89d03b4372e114f8eab9e274714b18d5f02cb34ee8779212b2b4d0ec92f69ddb8c8fcb8d180dec7c59933cd24fdbf733d329369442713fa
7
- data.tar.gz: 9bd9e97e0030b96b0031659c0021035800912814303b1a9f38d3cb05a27afb6ce313a3183069c91ecb6c6793cd26b1f9c37a0f2c0f4364e3956fe5a818df109d
6
+ metadata.gz: '0459c7fb7576d7def3d3a4b5c83e6b0064268274c1afede64e69e922313f8ecbdce11661b305b5ebc3aed7103565def7a373e9a70416a844badab5a39bbf6087'
7
+ data.tar.gz: 53d748a9b6f26f6e1339f7acac1925536ed8e4f4bfe82a5d42d45620417903f2cd4f3fc1afb81842dd9942cf4c689668c84aff63650051d92b4777e21b8053b6
@@ -25,7 +25,7 @@ nodefu_definitions "Path to directory"
25
25
 
26
26
  Example definitions yml file:
27
27
 
28
- default:
28
+ default:
29
29
  domain: 'gf-svc.com'
30
30
 
31
31
  vm_spec:
@@ -51,11 +51,11 @@ default:
51
51
  elastic_ip_address: ###.###.###.###
52
52
  group_ids:
53
53
  - 'sg-00000000'
54
- - 'sg-00000000'
54
+ - 'sg-00000000'
55
55
  server_connect_attribute: public_ip_address
56
56
  env:
57
57
  production:
58
- staging:
58
+ staging:
59
59
  vm_spec:
60
60
  m1.large:
61
61
  ssh_key: 'other_key'
@@ -70,7 +70,7 @@ This plugin provides the following Knife subcommands. Specific command options
70
70
 
71
71
  == knife nodefu create
72
72
 
73
- This command expects an argument in the format of <hostname><id> or <hostname>[<start_range>-<end_range>] where id is an integer. It will automatically use the hostname as the node_spec unless you specify one with the -n option
73
+ This command expects an argument in the format of <hostname>, <hostname><id> or <hostname>[<start_range>-<end_range>] where id is an integer. It will automatically use the hostname as the node_spec unless you specify one with the -n option
74
74
 
75
75
  options:
76
76
 
@@ -1,5 +1,5 @@
1
1
  module NodefuBase
2
- class ServerRangeError < StandardError; end
2
+ class ServerRangeError < StandardError; end
3
3
  class NameFormatError < StandardError; end
4
4
 
5
5
  def pretty_print_hash(hash,color=:magenta)
@@ -24,18 +24,18 @@ module NodefuBase
24
24
  end
25
25
 
26
26
  def parse_servers(servers_string)
27
- raise ArgumentError if servers_string.nil?
28
- results = /([a-zA-z\-\.^\s]*)\[(\d+)-(\d+)\]/.match(servers_string) || results = /([a-zA-z\-\.^\s]*)(\d+)/.match(servers_string)
29
- raise NameFormatError if results.nil?
27
+ raise ArgumentError if servers_string.nil?
28
+ results = /([a-zA-z\-\.^\s]*)\[(\d+)-(\d+)\]/.match(servers_string) || results = /([a-zA-z\-\.^\s]*)(\d*)/.match(servers_string)
29
+ raise NameFormatError if results.nil?
30
30
  base_name = results[1]
31
- start_range = results[2].to_i
32
- end_range = results[3].nil? ? start_range.to_i : results[3].to_i
31
+ start_range = results[2].empty? ? nil : results[2].to_i
32
+ end_range = results[3].nil? ? start_range : results[3].to_i
33
33
  raise ServerRangeError if end_range.to_i < start_range.to_i
34
34
  return [base_name,start_range,end_range]
35
35
  end
36
36
 
37
37
  def failed_nodes(servers)
38
- servers.select {|k,v| v['chef_node'].nil? || !v['failure'].nil? }
38
+ servers.select {|k,v| v['chef_node'].nil? || !v['failure'].nil? }
39
39
  end
40
40
 
41
41
  def successful_nodes(servers)
@@ -13,7 +13,7 @@ class NodefuCreate < Chef::Knife
13
13
 
14
14
  include NodefuBase
15
15
 
16
- banner "knife nodefu create <server><range> (OPTIONS)"
16
+ banner "knife nodefu create <server>[<range>] (OPTIONS)"
17
17
 
18
18
  attr_reader :servers
19
19
 
@@ -102,7 +102,15 @@ class NodefuCreate < Chef::Knife
102
102
  end
103
103
 
104
104
  # Present the user with some totally rad visuals!!!
105
- ui.msg("#{ui.color('SHAZAM!',:red)} It looks like you want to launch #{ui.color((end_range - start_range + 1).to_s,:yellow)} of these:")
105
+ number_of_instances =
106
+ case start_range
107
+ when end_range
108
+ 1
109
+ else
110
+ end_range - start_range + 1
111
+ end
112
+
113
+ ui.msg("#{ui.color('SHAZAM!',:red)} It looks like you want to launch #{ui.color((number_of_instances).to_s,:yellow)} of these:")
106
114
  ui.msg("#{ui.color('Base Name',:cyan)}: #{base_name}")
107
115
  ui.msg("#{ui.color('Node Spec',:cyan)}: #{node_spec_name}")
108
116
  ui.msg("#{ui.color('VPC Mode',:cyan)}: #{is_vpc?(node_spec)}")
@@ -110,7 +118,16 @@ class NodefuCreate < Chef::Knife
110
118
  pretty_print_hash(vm_spec)
111
119
 
112
120
  unless config[:disable_default_groups] || is_vpc?(node_spec)
113
- ui.msg("#{ui.color('Auto generated security groups',:cyan)}: #{generate_security_groups("#{base_name}#{start_range}-#{end_range}",env,domain)}")
121
+ range_formatted =
122
+ case start_range
123
+ when nil
124
+ ''
125
+ when end_range
126
+ "#{start_range}"
127
+ else
128
+ "#{start_range}-#{end_range}"
129
+ end
130
+ ui.msg("#{ui.color('Auto generated security groups',:cyan)}: #{generate_security_groups("#{base_name}#{range_formatted}",env,domain)}")
114
131
  end
115
132
 
116
133
  config[:yes] ? user_response = 'yes' : user_response = ui.ask_question("Does this seem right to you? [y/n] ").downcase
@@ -118,9 +135,10 @@ class NodefuCreate < Chef::Knife
118
135
 
119
136
  threads = []
120
137
  sema = Mutex.new
121
- for i in (start_range..end_range)
138
+ for i in (start_range.to_i..end_range.to_i)
122
139
  ec2_server_request = Ec2ServerCreate.new
123
- node_name = "#{base_name}#{i}"
140
+ node_name = start_range.nil? ? "#{base_name}" : "#{base_name}#{i}"
141
+
124
142
  full_node_name = "#{node_name}.#{env}.#{domain}"
125
143
  security_groups = if config[:disable_default_groups]
126
144
  aux_groups
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Nodefu
3
- VERSION = "0.8.0"
3
+ VERSION = "0.9.0"
4
4
  MAJOR, MINOR, TINY = VERSION.split(',')
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-nodefu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Bianco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-29 00:00:00.000000000 Z
11
+ date: 2017-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: knife-ec2
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  version: '0'
74
74
  requirements: []
75
75
  rubyforge_project:
76
- rubygems_version: 2.6.11
76
+ rubygems_version: 2.6.13
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: A knife plugin for simple node creation automation