class Dpl::Providers::ChefSupermarket
Constants
- URL
Public Instance Methods
deploy()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 57 def deploy info :upload upload end
setup()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 46 def setup Chef::Config[:client_key] = client_key chdir dir end
validate()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 51 def validate info :validate validate_file client_key uploader.validate_cookbooks end
Private Instance Methods
build_dir()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 103 def build_dir @build_dir ||= Chef::Knife::Core::CookbookSiteStreamingUploader.create_build_dir(cookbook) end
cookbook()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 91 def cookbook @cookbook ||= loader.cookbook_version end
handle_error(res)
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 115 def handle_error(res) res = JSON.parse(res) unknown_error(res) unless res['error_messages'] version_exists if res['error_messages'][0].include?('Version already exists') error (res['error_messages'][0]).to_s end
json(obj)
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 130 def json(obj) JSON.dump(obj) end
loader()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 95 def loader Chef::Cookbook::CookbookVersionLoader.new('.').tap(&:load!) end
name()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 79 def name @name ||= name_from_json || name_from_rb || error(:missing_file, 'metadata.json or metadata.rb') end
name_from_json()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 83 def name_from_json JSON.parse(read('metadata.json'))['name'] if file?('metadata.json') end
name_from_rb()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 87 def name_from_rb Chef::Cookbook::Metadata.new.from_file('metadata.rb') if file?('metadata.rb') end
params()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 69 def params { cookbook: json(category:), tarball: } end
tarball()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 73 def tarball shell "tar -czf /tmp/#{name}.tgz -C #{build_dir} ." shell "tar -tvf /tmp/#{name}.tgz" open "/tmp/#{name}.tgz" end
unknown_error(msg)
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 122 def unknown_error(msg) error :unknown_error, msg end
upload()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 64 def upload res = Chef::Knife::Core::CookbookSiteStreamingUploader.post(URL, user_id, client_key, params) handle_error(res.body) if res.code.to_i != 201 end
uploader()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 99 def uploader Chef::CookbookUploader.new(cookbook) end
url()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 111 def url URL end
validate_file(path)
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 107 def validate_file(path) error :missing_file, path unless file?(path) end
version_exists()
click to toggle source
# File lib/dpl/providers/chef_supermarket.rb, line 126 def version_exists error :version_exists end