knife-essentials 1.0.0.beta2 → 1.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,6 +18,16 @@ module ChefFS
18
18
  })
19
19
  end
20
20
 
21
+ def normalize_for_put(data_bag_item, entry)
22
+ {
23
+ "name" => "data_bag_item_#{entry.parent.name}_#{entry.name}",
24
+ "json_class" => "Chef::DataBagItem",
25
+ "chef_type" => "data_bag_item",
26
+ "data_bag" => entry.parent.name,
27
+ "raw_data" => normalize(data_bag_item)
28
+ }
29
+ end
30
+
21
31
  def preserve_key(key)
22
32
  return key == 'id'
23
33
  end
@@ -19,6 +19,7 @@
19
19
  require 'chef_fs/file_system/acls_dir'
20
20
  require 'chef_fs/file_system/base_fs_dir'
21
21
  require 'chef_fs/file_system/rest_list_dir'
22
+ require 'chef_fs/file_system/containers_dir'
22
23
  require 'chef_fs/file_system/cookbooks_dir'
23
24
  require 'chef_fs/file_system/data_bags_dir'
24
25
  require 'chef_fs/file_system/nodes_dir'
@@ -85,7 +86,7 @@ module ChefFS
85
86
  result += [
86
87
  AclsDir.new(self),
87
88
  RestListDir.new("clients", self, nil, ChefFS::DataHandler::ClientDataHandler.new),
88
- RestListDir.new("containers", self, nil, ChefFS::DataHandler::ContainerDataHandler.new),
89
+ ContainersDir.new(self),
89
90
  RestListDir.new("groups", self, nil, ChefFS::DataHandler::GroupDataHandler.new),
90
91
  NodesDir.new(self)
91
92
  ]
@@ -0,0 +1,33 @@
1
+ #
2
+ # Author:: John Keiser (<jkeiser@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef_fs/file_system/rest_list_entry'
20
+
21
+ module ChefFS
22
+ module FileSystem
23
+ class ContainersDir < RestListDir
24
+ def initialize(parent)
25
+ super("containers", parent, nil, ChefFS::DataHandler::ContainerDataHandler.new)
26
+ end
27
+
28
+ def identity_key
29
+ 'containername'
30
+ end
31
+ end
32
+ end
33
+ end
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require 'chef_fs/file_system/rest_list_dir'
20
- require 'chef_fs/file_system/data_bag_item'
21
20
  require 'chef_fs/file_system/not_found_error'
22
21
  require 'chef_fs/file_system/must_delete_recursively_error'
23
22
  require 'chef_fs/data_handler/data_bag_item_data_handler'
@@ -50,10 +49,6 @@ module ChefFS
50
49
  'id'
51
50
  end
52
51
 
53
- def _make_child_entry(name, exists = nil)
54
- DataBagItem.new(name, self, exists)
55
- end
56
-
57
52
  def delete(recurse)
58
53
  if !recurse
59
54
  raise NotFoundError.new(self) if !exists?
@@ -141,6 +141,10 @@ module ChefFS
141
141
  parent.rest
142
142
  end
143
143
 
144
+ def identity_key
145
+ parent.identity_key
146
+ end
147
+
144
148
  def write(file_contents)
145
149
  begin
146
150
  #object = Chef::JSONCompat.from_json(file_contents).to_hash
@@ -153,8 +157,8 @@ module ChefFS
153
157
  object = data_handler.normalize_for_put(object, self)
154
158
  end
155
159
 
156
- base_name = name[0,name.length-5]
157
- if object['name'] != base_name
160
+ base_name = name[0,name.length-5] # Strip ".json"
161
+ if object[identity_key] != base_name
158
162
  raise ChefFS::FileSystem::OperationFailedError.new(:write, self), "Name in #{path_for_printing}/#{name} must be '#{base_name}' (is '#{object['name']}')"
159
163
  end
160
164
 
data/lib/chef_fs/knife.rb CHANGED
@@ -73,7 +73,7 @@ module ChefFS
73
73
 
74
74
  # Default to getting *everything* from the server.
75
75
  if !Chef::Config[:repo_mode]
76
- if Chef::Config[:chef_server_url] =~ /^[^\/]+\/+organizations\//
76
+ if Chef::Config[:chef_server_url] =~ /\/+organizations\/.+/
77
77
  Chef::Config[:repo_mode] = 'hosted_everything'
78
78
  else
79
79
  Chef::Config[:repo_mode] = 'everything'
@@ -93,7 +93,7 @@ module ChefFS
93
93
  begin
94
94
  @outputs[index] = @block.call(input)
95
95
  @status[index] = :finished
96
- rescue
96
+ rescue Exception
97
97
  @outputs[index] = $!
98
98
  @status[index] = :exception
99
99
  end
@@ -1,3 +1,3 @@
1
1
  module ChefFS
2
- VERSION = "1.0.0.beta2"
2
+ VERSION = "1.0.0.beta3"
3
3
  end
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: 1.0.0.beta2
4
+ version: 1.0.0.beta3
5
5
  prerelease: 6
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: 2013-05-07 00:00:00.000000000 Z
12
+ date: 2013-05-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chef-zero
@@ -87,13 +87,13 @@ files:
87
87
  - lib/chef_fs/file_system/chef_repository_file_system_entry.rb
88
88
  - lib/chef_fs/file_system/chef_repository_file_system_root_dir.rb
89
89
  - lib/chef_fs/file_system/chef_server_root_dir.rb
90
+ - lib/chef_fs/file_system/containers_dir.rb
90
91
  - lib/chef_fs/file_system/cookbook_dir.rb
91
92
  - lib/chef_fs/file_system/cookbook_file.rb
92
93
  - lib/chef_fs/file_system/cookbook_subdir.rb
93
94
  - lib/chef_fs/file_system/cookbooks_acl_dir.rb
94
95
  - lib/chef_fs/file_system/cookbooks_dir.rb
95
96
  - lib/chef_fs/file_system/data_bag_dir.rb
96
- - lib/chef_fs/file_system/data_bag_item.rb
97
97
  - lib/chef_fs/file_system/data_bags_dir.rb
98
98
  - lib/chef_fs/file_system/default_environment_cannot_be_modified_error.rb
99
99
  - lib/chef_fs/file_system/environments_dir.rb
@@ -1,63 +0,0 @@
1
- #
2
- # Author:: John Keiser (<jkeiser@opscode.com>)
3
- # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require 'chef_fs/file_system/rest_list_entry'
20
-
21
- module ChefFS
22
- module FileSystem
23
- class DataBagItem < RestListEntry
24
- def initialize(name, parent, exists = nil)
25
- super(name, parent, exists)
26
- end
27
-
28
- def write(file_contents)
29
- # Write is just a little tiny bit different for data bags:
30
- # you set raw_data in the JSON instead of putting the items
31
- # in the top level.
32
- json = Chef::JSONCompat.from_json(file_contents).to_hash
33
- id = name[0,name.length-5] # Strip off the .json from the end
34
- if json['id'] != id
35
- raise "Id in #{path_for_printing}/#{name} must be '#{id}' (is '#{json['id']}')"
36
- end
37
- begin
38
- data_bag = parent.name
39
- json = {
40
- "name" => "data_bag_item_#{data_bag}_#{id}",
41
- "json_class" => "Chef::DataBagItem",
42
- "chef_type" => "data_bag_item",
43
- "data_bag" => data_bag,
44
- "raw_data" => json
45
- }
46
- rest.put_rest(api_path, json)
47
- rescue Net::HTTPServerException
48
- if $!.response.code == "404"
49
- raise ChefFS::FileSystem::NotFoundError.new(self, $!)
50
- else
51
- raise
52
- end
53
- end
54
- end
55
-
56
- def normalize_value(value)
57
- data_handler.minimize(
58
- data_handler.normalize(value, parent.name, api_child_name),
59
- parent.name, api_child_name)
60
- end
61
- end
62
- end
63
- end