summaryrefslogtreecommitdiff
path: root/lib/chef_zero/data_normalizer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef_zero/data_normalizer.rb')
-rw-r--r--lib/chef_zero/data_normalizer.rb205
1 files changed, 0 insertions, 205 deletions
diff --git a/lib/chef_zero/data_normalizer.rb b/lib/chef_zero/data_normalizer.rb
deleted file mode 100644
index 39cccc5..0000000
--- a/lib/chef_zero/data_normalizer.rb
+++ /dev/null
@@ -1,205 +0,0 @@
-require 'chef_zero'
-require 'chef_zero/rest_base'
-require 'chef_zero/chef_data/default_creator'
-
-module ChefZero
- class DataNormalizer
- def self.normalize_acls(acls)
- ChefData::DefaultCreator::PERMISSIONS.each do |perm|
- acls[perm] ||= {}
- acls[perm]['actors'] ||= []
- acls[perm]['groups'] ||= []
- end
- acls
- end
-
- def self.normalize_client(client, name)
- client['name'] ||= name
- client['admin'] ||= false
- client['admin'] = !!client['admin']
- client['public_key'] ||= PUBLIC_KEY
- client['validator'] ||= false
- client['validator'] = !!client['validator']
- client['json_class'] ||= "Chef::ApiClient"
- client['chef_type'] ||= "client"
- client
- end
-
- def self.normalize_container(container, name)
- container.delete('id')
- container['containername'] = name
- container['containerpath'] = name
- container
- end
-
- def self.normalize_user(user, name, identity_keys, osc_compat, method=nil)
- user[identity_keys.first] ||= name
- user['public_key'] ||= PUBLIC_KEY
- user['admin'] ||= false
- user['admin'] = !!user['admin']
- user['openid'] ||= nil
- if !osc_compat
- if method == 'GET'
- user.delete('admin')
- user.delete('password')
- user.delete('openid')
- end
- user['email'] ||= nil
- user['first_name'] ||= nil
- user['last_name'] ||= nil
- end
- user
- end
-
- def self.normalize_data_bag_item(data_bag_item, data_bag_name, id, method)
- if method == 'DELETE'
- # TODO SERIOUSLY, WHO DOES THIS MANY EXCEPTIONS IN THEIR INTERFACE
- if !(data_bag_item['json_class'] == 'Chef::DataBagItem' && data_bag_item['raw_data'])
- data_bag_item['id'] ||= id
- data_bag_item = { 'raw_data' => data_bag_item }
- data_bag_item['chef_type'] ||= 'data_bag_item'
- data_bag_item['json_class'] ||= 'Chef::DataBagItem'
- data_bag_item['data_bag'] ||= data_bag_name
- data_bag_item['name'] ||= "data_bag_item_#{data_bag_name}_#{id}"
- end
- else
- # If it's not already wrapped with raw_data, wrap it.
- if data_bag_item['json_class'] == 'Chef::DataBagItem' && data_bag_item['raw_data']
- data_bag_item = data_bag_item['raw_data']
- end
- # Argh. We don't do this on GET, but we do on PUT and POST????
- if %w(PUT POST).include?(method)
- data_bag_item['chef_type'] ||= 'data_bag_item'
- data_bag_item['data_bag'] ||= data_bag_name
- end
- data_bag_item['id'] ||= id
- end
- data_bag_item
- end
-
- def self.normalize_cookbook(endpoint, org_prefix, cookbook, name, version, base_uri, method)
- # TODO I feel dirty
- if method != 'PUT'
- cookbook.each_pair do |key, value|
- if value.is_a?(Array)
- value.each do |file|
- if file.is_a?(Hash) && file.has_key?('checksum')
- file['url'] ||= endpoint.build_uri(base_uri, org_prefix + ['file_store', 'checksums', file['checksum']])
- end
- end
- end
- end
- cookbook['name'] ||= "#{name}-#{version}"
- # TODO this feels wrong, but the real chef server doesn't expand this default
- # cookbook['version'] ||= version
- cookbook['cookbook_name'] ||= name
- cookbook['frozen?'] ||= false
- cookbook['metadata'] ||= {}
- cookbook['metadata']['version'] ||= version
- # Sad to not be expanding defaults just because Chef doesn't :(
-# cookbook['metadata']['name'] ||= name
-# cookbook['metadata']['description'] ||= "A fabulous new cookbook"
- cookbook['metadata']['long_description'] ||= ""
-# cookbook['metadata']['maintainer'] ||= "YOUR_COMPANY_NAME"
-# cookbook['metadata']['maintainer_email'] ||= "YOUR_EMAIL"
-# cookbook['metadata']['license'] ||= "none"
- cookbook['metadata']['dependencies'] ||= {}
- cookbook['metadata']['attributes'] ||= {}
- cookbook['metadata']['recipes'] ||= {}
- end
- cookbook['json_class'] ||= 'Chef::CookbookVersion'
- cookbook['chef_type'] ||= 'cookbook_version'
- if method == 'MIN'
- cookbook['metadata'].delete('attributes')
- cookbook['metadata'].delete('long_description')
- end
- cookbook
- end
-
- def self.normalize_environment(environment, name)
- environment['name'] ||= name
- environment['description'] ||= ''
- environment['cookbook_versions'] ||= {}
- environment['json_class'] ||= "Chef::Environment"
- environment['chef_type'] ||= "environment"
- environment['default_attributes'] ||= {}
- environment['override_attributes'] ||= {}
- environment
- end
-
- def self.normalize_group(group, name, orgname)
- group.delete('id')
- if group['actors'].is_a?(Hash)
- group['users'] ||= group['actors']['users']
- group['clients'] ||= group['actors']['clients']
- group['groups'] ||= group['actors']['groups']
- group['actors'] = nil
- end
- group['users'] ||= []
- group['clients'] ||= []
- group['actors'] ||= (group['clients'] + group['users'])
- group['groups'] ||= []
- group['orgname'] ||= orgname if orgname
- group['name'] ||= name
- group['groupname'] ||= name
-
- group['users'].uniq!
- group['clients'].uniq!
- group['actors'].uniq!
- group['groups'].uniq!
- group
- end
-
- def self.normalize_node(node, name)
- node['name'] ||= name
- node['json_class'] ||= 'Chef::Node'
- node['chef_type'] ||= 'node'
- node['chef_environment'] ||= '_default'
- node['override'] ||= {}
- node['normal'] ||= {}
- node['default'] ||= {}
- node['automatic'] ||= {}
- node['run_list'] ||= []
- node['run_list'] = normalize_run_list(node['run_list'])
- node
- end
-
- def self.normalize_organization(org, name)
- org['name'] ||= name
- org['full_name'] ||= name
- org['org_type'] ||= 'Business'
- org['clientname'] ||= "#{name}-validator"
- org['billing_plan'] ||= 'platform-free'
- org
- end
-
- def self.normalize_role(role, name)
- role['name'] ||= name
- role['description'] ||= ''
- role['json_class'] ||= 'Chef::Role'
- role['chef_type'] ||= 'role'
- role['default_attributes'] ||= {}
- role['override_attributes'] ||= {}
- role['run_list'] ||= []
- role['run_list'] = normalize_run_list(role['run_list'])
- role['env_run_lists'] ||= {}
- role['env_run_lists'].each_pair do |env, run_list|
- role['env_run_lists'][env] = normalize_run_list(run_list)
- end
- role
- end
-
- def self.normalize_run_list(run_list)
- run_list.map{|item|
- case item
- when /^recipe\[.*\]$/
- item # explicit recipe
- when /^role\[.*\]$/
- item # explicit role
- else
- "recipe[#{item}]"
- end
- }.uniq
- end
- end
-end