knife-preflight 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/chef/knife/preflight.rb +37 -70
  2. metadata +30 -49
@@ -58,86 +58,53 @@ module KnifePreflight
58
58
  exit 1
59
59
  end
60
60
 
61
- q_nodes = Chef::Search::Query.new
61
+ result_count_nodes = perform_query(raw_query, 'node')
62
62
 
63
- escaped_query = raw_query.sub( "::", "\\:\\:")
64
-
65
- if !raw_query.include? "::"
66
- node_query = "recipes:*#{escaped_query} OR recipes:*#{escaped_query}\\:\\:default"
67
- ui.msg("Searching for nodes containing #{raw_query} OR #{raw_query}::default in their expanded run_list...\n")
68
- elsif raw_query.include? "::default"
69
- node_query = "recipes:*#{escaped_query} OR recipes:*#{escaped_query.gsub( "\\:\\:default","")}"
70
- ui.msg("Searching for nodes containing #{raw_query} OR #{raw_query.gsub( "::default","")} in their expanded run_list...\n")
71
- else
72
- node_query = "recipes:*#{escaped_query}"
73
- ui.msg("Searching for nodes containing #{raw_query} in their expanded run_list...\n")
74
- end
75
- query_nodes = URI.escape(node_query,
76
- Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
77
-
78
- result_items_nodes = []
79
- result_count_nodes = 0
80
-
81
- rows = config[:rows]
82
- start = config[:start]
83
- begin
84
- q_nodes.search('node', query_nodes, config[:sort], start, rows) do |node_item|
85
- formatted_item_node = format_for_display(node_item)
86
- if formatted_item_node.respond_to?(:has_key?) && !formatted_item_node.has_key?('id')
87
- formatted_item_node['id'] = node_item.has_key?('id') ? node_item['id'] : node_item.name
88
- end
89
- result_items_nodes << formatted_item_node
90
- result_count_nodes += 1
91
- end
92
- rescue Net::HTTPServerException => e
93
- msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
94
- ui.error("knife preflight failed: #{msg}")
95
- exit 1
96
- end
63
+ result_count_roles = perform_query(raw_query, 'role')
97
64
 
98
- if ui.interchange?
99
- output({:results => result_count_nodes, :rows => result_items_nodes})
100
- else
101
- ui.msg "#{result_count_nodes} Nodes found"
102
- ui.msg("\n")
103
- result_items_nodes.each do |item|
104
- output(item.name)
105
- end
106
- end
65
+ ui.msg("Found #{result_count_nodes} nodes and #{result_count_roles} roles using the specified search criteria")
66
+ end
107
67
 
108
- ui.msg("\n")
109
- ui.msg("\n")
68
+ def perform_query(raw_query, type='node')
69
+ q = Chef::Search::Query.new
110
70
 
71
+ # strip default if it exists to simplify logic
72
+ raw_query = raw_query.sub("::default", "")
73
+ escaped_query = raw_query.sub( "::", "\\:\\:")
111
74
 
112
- q_roles = Chef::Search::Query.new
113
-
114
75
  if !raw_query.include? "::"
115
- role_query = "run_list:recipe\\[#{escaped_query}\\] OR run_list:recipe\\[#{escaped_query}\\:\\:default\\]"
116
- ui.msg("Searching for roles containing #{raw_query} OR #{raw_query}::default in their expanded run_list...\n")
117
- elsif raw_query.include? "::default"
118
- role_query = "run_list:recipe\\[#{escaped_query}\\] OR run_list:recipe\\[#{escaped_query.gsub( "\\:\\:default","")}\\]"
119
- ui.msg("Searching for roles containing #{raw_query} OR #{raw_query.gsub( "::default","")} in their expanded run_list...\n")
76
+ if type == 'node'
77
+ search_query = "recipes:*#{escaped_query} OR recipes:*#{escaped_query}\\:\\:default"
78
+ search_query += " OR " + search_query.gsub("recipes", "last_seen_recipes")
79
+ else
80
+ search_query = "run_list:recipe\\[#{escaped_query}\\] OR run_list:recipe\\[#{escaped_query}\\:\\:default\\]"
81
+ end
82
+ ui.msg("Searching for #{type}s containing #{raw_query} OR #{raw_query}::default in their expanded run_list...\n")
120
83
  else
121
- role_query = "run_list:recipe\\[#{escaped_query}\\]"
122
- ui.msg("Searching for roles containing #{raw_query} in their expanded run_list...\n")
84
+ if type == 'node'
85
+ search_query = "recipes:*#{escaped_query}"
86
+ search_query += " OR " + search_query.gsub("recipes", "last_seen_recipes")
87
+ else
88
+ search_query = "run_list:recipe\\[#{escaped_query}\\]"
89
+ end
90
+ ui.msg("Searching for #{type}s containing #{raw_query} in their expanded run_list...\n")
123
91
  end
124
92
 
125
- query_roles = URI.escape(role_query,
126
- Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
93
+ query = URI.escape(search_query, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
127
94
 
128
- result_items_roles = []
129
- result_count_roles = 0
95
+ result_items = []
96
+ result_count = 0
130
97
 
131
98
  rows = config[:rows]
132
99
  start = config[:start]
133
100
  begin
134
- q_roles.search('role', query_roles, config[:sort], start, rows) do |role_item|
135
- formatted_item_role = format_for_display(role_item)
136
- if formatted_item_role.respond_to?(:has_key?) && !formatted_item_role.has_key?('id')
137
- formatted_item_role['id'] = role_item.has_key?('id') ? role_item['id'] : role_item.name
101
+ q.search(type, query, config[:sort], start, rows) do |item|
102
+ formatted_item = format_for_display(item)
103
+ if formatted_item.respond_to?(:has_key?) && !formatted_item.has_key?('id')
104
+ formatted_item['id'] = item.has_key?('id') ? item['id'] : item.name
138
105
  end
139
- result_items_roles << formatted_item_role
140
- result_count_roles += 1
106
+ result_items << formatted_item
107
+ result_count += 1
141
108
  end
142
109
  rescue Net::HTTPServerException => e
143
110
  msg = Chef::JSONCompat.from_json(e.response.body)["error"].first
@@ -146,18 +113,18 @@ module KnifePreflight
146
113
  end
147
114
 
148
115
  if ui.interchange?
149
- output({:results => result_count_roles, :rows => result_items_roles})
116
+ output({:results => result_count, :rows => result_items})
150
117
  else
151
- ui.msg "#{result_count_roles} Roles found"
118
+ ui.msg "#{result_count} #{type.capitalize}s found"
152
119
  ui.msg("\n")
153
- result_items_roles.each do |role_item|
154
- output(role_item.name)
120
+ result_items.each do |item|
121
+ output(item.name)
155
122
  end
156
123
  end
157
124
 
158
125
  ui.msg("\n")
159
126
  ui.msg("\n")
160
- ui.msg("Found #{result_count_nodes} nodes and #{result_count_roles} roles using the specified search criteria")
127
+ return result_count
161
128
  end
162
129
  end
163
130
  end
metadata CHANGED
@@ -1,79 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: knife-preflight
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 2
9
- version: 0.1.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Jon Cowie
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-02-02 00:00:00 +00:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-06-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: chef
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70103950761040 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 10
31
- - 4
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
32
21
  version: 0.10.4
33
22
  type: :runtime
34
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *70103950761040
35
25
  description: Knife plugin for checking what your cookbook changes will affect
36
26
  email: jonlives@gmail.com
37
27
  executables: []
38
-
39
28
  extensions: []
40
-
41
- extra_rdoc_files:
29
+ extra_rdoc_files:
42
30
  - README.md
43
- files:
31
+ files:
44
32
  - README.md
45
33
  - lib/chef/knife/preflight.rb
46
- has_rdoc: true
47
34
  homepage: https://github.com/jonlives/knife-preflight
48
35
  licenses: []
49
-
50
36
  post_install_message:
51
- rdoc_options:
37
+ rdoc_options:
52
38
  - --charset=UTF-8
53
- require_paths:
39
+ require_paths:
54
40
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
41
+ required_ruby_version: !ruby/object:Gem::Requirement
56
42
  none: false
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- segments:
61
- - 0
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
48
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 0
70
- version: "0"
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
71
53
  requirements: []
72
-
73
54
  rubyforge_project: knife-preflight
74
- rubygems_version: 1.3.7
55
+ rubygems_version: 1.8.10
75
56
  signing_key:
76
57
  specification_version: 2
77
58
  summary: Knife plugin for checking what your cookbook changes will affect
78
59
  test_files: []
79
-
60
+ has_rdoc: