knife-essentials 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chef_fs/command_line.rb +0 -2
- data/lib/chef_fs/file_system/data_bag_dir.rb +7 -2
- data/lib/chef_fs/file_system/data_bag_item.rb +39 -0
- data/lib/chef_fs/file_system/data_bags_dir.rb +11 -1
- data/lib/chef_fs/file_system/rest_list_dir.rb +11 -3
- data/lib/chef_fs/file_system/rest_list_entry.rb +1 -3
- data/lib/chef_fs/version.rb +1 -1
- metadata +3 -2
data/lib/chef_fs/command_line.rb
CHANGED
@@ -124,8 +124,6 @@ module ChefFS
|
|
124
124
|
|
125
125
|
def self.canonicalize_json(json_text)
|
126
126
|
parsed_json = JSON.parse(json_text, :create_additions => false)
|
127
|
-
parsed_json.delete('requesting_actor_type')
|
128
|
-
parsed_json.delete('requesting_user')
|
129
127
|
sorted_json = sort_keys(parsed_json)
|
130
128
|
JSON.pretty_generate(sorted_json)
|
131
129
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require 'chef_fs/file_system/
|
2
|
-
require 'chef_fs/file_system/
|
1
|
+
require 'chef_fs/file_system/rest_list_dir'
|
2
|
+
require 'chef_fs/file_system/data_bag_item'
|
3
3
|
require 'chef_fs/file_system/not_found_error'
|
4
4
|
|
5
5
|
module ChefFS
|
@@ -25,6 +25,11 @@ module ChefFS
|
|
25
25
|
end
|
26
26
|
@exists
|
27
27
|
end
|
28
|
+
|
29
|
+
def _make_child_entry(name, exists = nil)
|
30
|
+
DataBagItem.new(name, self, exists)
|
31
|
+
end
|
32
|
+
|
28
33
|
end
|
29
34
|
end
|
30
35
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'chef_fs/file_system/rest_list_entry'
|
2
|
+
|
3
|
+
module ChefFS
|
4
|
+
module FileSystem
|
5
|
+
class DataBagItem < RestListEntry
|
6
|
+
def initialize(name, parent, exists = nil)
|
7
|
+
super(name, parent, exists)
|
8
|
+
end
|
9
|
+
|
10
|
+
def write(file_contents)
|
11
|
+
# Write is just a little tiny bit different for data bags:
|
12
|
+
# you set raw_data in the JSON instead of putting the items
|
13
|
+
# in the top level.
|
14
|
+
json = Chef::JSONCompat.from_json(file_contents).to_hash
|
15
|
+
id = name[0,name.length-5] # Strip off the .json from the end
|
16
|
+
if json['id'] != id
|
17
|
+
raise "Id in #{path_for_printing}/#{name} must be '#{id}' (is '#{json['id']}')"
|
18
|
+
end
|
19
|
+
begin
|
20
|
+
data_bag = parent.name
|
21
|
+
json = {
|
22
|
+
"name" => "data_bag_item_#{data_bag}_#{id}",
|
23
|
+
"json_class" => "Chef::DataBagItem",
|
24
|
+
"chef_type" => "data_bag_item",
|
25
|
+
"data_bag" => data_bag,
|
26
|
+
"raw_data" => json
|
27
|
+
}
|
28
|
+
rest.put_rest(api_path, json)
|
29
|
+
rescue Net::HTTPServerException
|
30
|
+
if $!.response.code == "404"
|
31
|
+
raise ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
|
32
|
+
else
|
33
|
+
raise
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -14,7 +14,17 @@ module ChefFS
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def children
|
17
|
-
|
17
|
+
begin
|
18
|
+
@children ||= rest.get_rest(api_path).keys.map do |entry|
|
19
|
+
DataBagDir.new(entry, self, true)
|
20
|
+
end
|
21
|
+
rescue Net::HTTPServerException
|
22
|
+
if $!.response.code == "404"
|
23
|
+
raise ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
|
24
|
+
else
|
25
|
+
raise
|
26
|
+
end
|
27
|
+
end
|
18
28
|
end
|
19
29
|
|
20
30
|
def can_have_child?(name, is_dir)
|
@@ -14,7 +14,8 @@ module ChefFS
|
|
14
14
|
|
15
15
|
def child(name)
|
16
16
|
result = @children.select { |child| child.name == name }.first if @children
|
17
|
-
result ||= can_have_child?(name, false) ?
|
17
|
+
result ||= can_have_child?(name, false) ?
|
18
|
+
_make_child_entry(name) : NonexistentFSObject.new(name, self)
|
18
19
|
end
|
19
20
|
|
20
21
|
def can_have_child?(name, is_dir)
|
@@ -23,7 +24,9 @@ module ChefFS
|
|
23
24
|
|
24
25
|
def children
|
25
26
|
begin
|
26
|
-
@children ||= rest.get_rest(api_path).keys.map
|
27
|
+
@children ||= rest.get_rest(api_path).keys.map do |key|
|
28
|
+
_make_child_entry("#{key}.json", true)
|
29
|
+
end
|
27
30
|
rescue Net::HTTPServerException
|
28
31
|
if $!.response.code == "404"
|
29
32
|
raise ChefFS::FileSystem::NotFoundError.new($!), "#{path_for_printing} not found"
|
@@ -42,7 +45,7 @@ module ChefFS
|
|
42
45
|
raise "Name in #{path_for_printing}/#{name} must be '#{base_name}' (is '#{json['id']}')"
|
43
46
|
end
|
44
47
|
rest.post_rest(api_path, json)
|
45
|
-
|
48
|
+
_make_child_entry(name, true)
|
46
49
|
end
|
47
50
|
|
48
51
|
def environment
|
@@ -52,6 +55,11 @@ module ChefFS
|
|
52
55
|
def rest
|
53
56
|
parent.rest
|
54
57
|
end
|
58
|
+
|
59
|
+
def _make_child_entry(name, exists = nil)
|
60
|
+
RestListEntry.new(name, self, exists)
|
61
|
+
end
|
62
|
+
|
55
63
|
end
|
56
64
|
end
|
57
65
|
end
|
@@ -65,10 +65,8 @@ module ChefFS
|
|
65
65
|
def write(file_contents)
|
66
66
|
json = Chef::JSONCompat.from_json(file_contents).to_hash
|
67
67
|
base_name = name[0,name.length-5]
|
68
|
-
if json
|
68
|
+
if json['name'] != base_name
|
69
69
|
raise "Name in #{path_for_printing}/#{name} must be '#{base_name}' (is '#{json['name']}')"
|
70
|
-
elsif json.include?('id') && json['id'] != base_name
|
71
|
-
raise "Name in #{path_for_printing}/#{name} must be '#{base_name}' (is '#{json['id']}')"
|
72
70
|
end
|
73
71
|
begin
|
74
72
|
rest.put_rest(api_path, json)
|
data/lib/chef_fs/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-essentials
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-18 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Universal knife verbs that work with your Chef repository
|
15
15
|
email: jkeiser@opscode.com
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/chef_fs/file_system/cookbook_subdir.rb
|
42
42
|
- lib/chef_fs/file_system/cookbooks_dir.rb
|
43
43
|
- lib/chef_fs/file_system/data_bag_dir.rb
|
44
|
+
- lib/chef_fs/file_system/data_bag_item.rb
|
44
45
|
- lib/chef_fs/file_system/data_bags_dir.rb
|
45
46
|
- lib/chef_fs/file_system/file_system_entry.rb
|
46
47
|
- lib/chef_fs/file_system/file_system_root_dir.rb
|