knife-nodefu 0.8.0 → 0.9.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: 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