Class: Chef::Provisioning::ChefManagedEntryStore
- Inherits:
-
ManagedEntryStore
- Object
- ManagedEntryStore
- Chef::Provisioning::ChefManagedEntryStore
- Defined in:
- lib/chef/provisioning/chef_managed_entry_store.rb
Instance Attribute Summary collapse
-
#chef_server ⇒ Object
readonly
Returns the value of attribute chef_server.
Class Method Summary collapse
-
.type_names_for_backcompat ⇒ Object
A list of the name that we used to use to store a given type before we standardized on “just use the resource name so we don’t create collisions.” Will be used to look up the old data.
Instance Method Summary collapse
- #chef_api ⇒ Object
-
#delete_data(resource_type, name, action_handler) ⇒ Boolean
Delete the given data.
-
#get_data(resource_type, name) ⇒ Hash, Array
Get the given data.
- #identifier(resource_type, name) ⇒ Object
-
#initialize(chef_server = Cheffish.default_chef_server) ⇒ ChefManagedEntryStore
constructor
A new instance of ChefManagedEntryStore.
-
#save_data(resource_type, name, data, action_handler) ⇒ Object
Save the given data.
Methods inherited from ManagedEntryStore
#delete, #get, #get!, #get_or_new, #new_entry
Constructor Details
#initialize(chef_server = Cheffish.default_chef_server) ⇒ ChefManagedEntryStore
Returns a new instance of ChefManagedEntryStore.
7 8 9 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 7 def initialize(chef_server = Cheffish.default_chef_server) @chef_server = chef_server end |
Instance Attribute Details
#chef_server ⇒ Object (readonly)
Returns the value of attribute chef_server.
11 12 13 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 11 def chef_server @chef_server end |
Class Method Details
.type_names_for_backcompat ⇒ Object
A list of the name that we used to use to store a given type before we standardized on “just use the resource name so we don’t create collisions.” Will be used to look up the old data.
123 124 125 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 123 def self.type_names_for_backcompat @@type_names_for_backcompat ||= {} end |
Instance Method Details
#chef_api ⇒ Object
13 14 15 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 13 def chef_api @chef_api ||= Cheffish.chef_server_api(chef_server) end |
#delete_data(resource_type, name, action_handler) ⇒ Boolean
Delete the given data
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 87 def delete_data(resource_type, name, action_handler) _chef_server = self.chef_server Chef::Provisioning.inline_resource(action_handler) do if resource_type == :machine chef_node name do chef_server _chef_server action :delete end else chef_data_bag_item name do chef_server _chef_server data_bag resource_type.to_s action :delete end end end backcompat_type = ChefManagedEntryStore.type_names_for_backcompat[resource_type] if backcompat_type && backcompat_type != resource_type delete_data(backcompat_type, name, action_handler) end end |
#get_data(resource_type, name) ⇒ Hash, Array
Get the given data
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 25 def get_data(resource_type, name) begin if resource_type == :machine chef_api.get("nodes/#{name}") else chef_api.get("data/#{resource_type}/#{name}") end rescue Net::HTTPServerException => e if e.response.code == '404' backcompat_type = ChefManagedEntryStore.type_names_for_backcompat[resource_type] if backcompat_type && backcompat_type != resource_type get_data(backcompat_type, name) else nil end else raise end end end |
#identifier(resource_type, name) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 110 def identifier(resource_type, name) if resource_type == :machine File.join(chef_server[:chef_server_url], "nodes", name) else File.join(chef_server[:chef_server_url], "data", resource_type.to_s, name) end end |
#save_data(resource_type, name, data, action_handler) ⇒ Object
Save the given data
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/chef/provisioning/chef_managed_entry_store.rb', line 53 def save_data(resource_type, name, data, action_handler) _chef_server = self.chef_server Chef::Provisioning.inline_resource(action_handler) do if resource_type == :machine chef_node name do chef_server _chef_server raw_json data end else chef_data_bag resource_type.to_s do chef_server _chef_server end chef_data_bag_item name do chef_server _chef_server data_bag resource_type.to_s raw_data data end end end backcompat_type = ChefManagedEntryStore.type_names_for_backcompat[resource_type] if backcompat_type && backcompat_type != resource_type delete_data(backcompat_type, name, action_handler) end end |