module PagerDuty::ChefServer::SyncHelper
Public Instance Methods
chef_repo_dir()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 34 def chef_repo_dir File.expand_path('..', cookbook_dir) end
converge_by(msg) { || ... }
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 26 def converge_by(msg) if why_run ui.info(ui.color("Would ", :cyan)+ msg) else yield end end
create_databag(data_bag_name)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 130 def create_databag(data_bag_name) converge_by "Create data bag #{data_bag_name}" do knife Chef::Knife::DataBagCreate, data_bag_name end end
data_bag_from_file(name, path)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 51 def data_bag_from_file(name, path) converge_by "Create data bag #{name} from #{path}" do knife Chef::Knife::DataBagFromFile, name, path end end
data_bag_from_hash(databag_name, data)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 136 def data_bag_from_hash(databag_name, data) tmp = Tempfile.new(['restorechef', '.json']) begin tmp.write(JSON.dump(data)) tmp.close converge_by "create data bag #{databag_name}" do data_bag_from_file(databag_name, tmp.path) end ensure tmp.unlink end end
databag_dir()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 42 def databag_dir File.join(chef_repo_dir, 'data_bags') end
delete_cookbook(cb)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 101 def delete_cookbook(cb) converge_by "Delete cookbook #{cb}" do knife Chef::Knife::CookbookDelete, cb do |config| config[:yes] = true config[:all] = true end end end
environment_dir()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 46 def environment_dir File.join(chef_repo_dir, 'environments') end
ignore_file()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 157 def ignore_file File.join(chef_repo_dir, '.pd-ignore') end
ignored?(path)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 22 def ignored?(path) ignore_patterns && ignore_patterns.any?{|pattern| File.fnmatch?(pattern, path)} end
knife(klass, *name_args) { |config| ... }
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 149 def knife(klass, *name_args) klass.load_deps plugin = klass.new yield plugin.config if Kernel.block_given? plugin.name_args = name_args plugin.run end
role_dir()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 38 def role_dir File.join(chef_repo_dir, 'roles') end
upload_all_cookbooks()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 73 def upload_all_cookbooks converge_by 'Upload all cookbooks' do knife(Chef::Knife::CookbookUpload) do |config| config[:all] = true config[:cookbook_path] = cookbook_dir end end end
upload_cookbook(cb)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 82 def upload_cookbook(cb) converge_by "Upload cookbook #{cb}" do knife(Chef::Knife::CookbookUpload, cb) do |config| config[:cookbook_path] = cookbook_dir config[:depends] = false end end end
upload_cookbooks(cbcb)
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 91 def upload_cookbooks(cbcb) sorted_cookbooks = cbcb.sort # definite order + nice printout for why_run converge_by "Upload cookbooks #{sorted_cookbooks.join(', ')}" do knife Chef::Knife::CookbookUpload, *sorted_cookbooks do |config| config[:cookbook_path] = cookbook_dir config[:depends] = false end end end
upload_databags()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 110 def upload_databags ui.info(ui.color('updating data bags in batch mode', :yellow)) existing_databags = Chef::DataBag.list.keys Dir[databag_dir+'/*'].each do |db_path| if ignored?(db_path) ui.info(ui.color("Ignored:", :magenta) + db_path) next end db_name = File.basename(db_path) unless existing_databags.include?(db_name) create_databag(db_name) end Dir[db_path+'/*'].each do |path| unless ignored?(path) data_bag_from_file(File.basename(db_path), path) end end end end
upload_environments()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 57 def upload_environments Dir[environment_dir+'/*'].reject{|f| File.directory?(f)}.each do |path| converge_by "Create environment from #{path}" do knife Chef::Knife::EnvironmentFromFile, path end end end
upload_roles()
click to toggle source
# File lib/pagerduty/chef_server/sync_helper.rb, line 65 def upload_roles Dir[role_dir+'/*'].each do |path| converge_by "Create role from #{path}" do knife Chef::Knife::RoleFromFile, path end end end