knife-preflight 0.1.2 → 0.1.3

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.
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: