Class: Promote::Uploader
- Inherits:
-
Object
- Object
- Promote::Uploader
- Includes:
- ChefServer
- Defined in:
- lib/promote/uploader.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
Instance Method Summary collapse
-
#initialize(config) ⇒ Uploader
constructor
A new instance of Uploader.
- #upload_cookbook(cookbook_name) ⇒ Object
- #upload_cookbook_directory(directory, ui = nil) ⇒ Object
- #upload_cookbooks(environment = nil) ⇒ Object
- #upload_data_bags ⇒ Object
- #upload_environment(environment_name, ui = nil) ⇒ Object
- #upload_environments ⇒ Object
- #upload_roles ⇒ Object
Methods included from ChefServer
Constructor Details
#initialize(config) ⇒ Uploader
Returns a new instance of Uploader.
19 20 21 22 |
# File 'lib/promote/uploader.rb', line 19 def initialize(config) @config = config validate_config end |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
99 100 101 |
# File 'lib/promote/uploader.rb', line 99 def config @config end |
Instance Method Details
#upload_cookbook(cookbook_name) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/promote/uploader.rb', line 24 def upload_cookbook(cookbook_name) vendor_path='/tmp/promote_vendor' FileUtils.rm_rf(vendor_path) if Dir.exist?(vendor_path) berksfile_path = File.join(config.cookbook_directory, cookbook_name, "Berksfile") Berkshelf.set_format :null berksfile = Berkshelf::Berksfile.from_file(berksfile_path) berksfile.vendor(vendor_path) upload_filtered_cookbooks(Dir.glob(File.join(vendor_path,'*')) .select{|f| File.directory?(f)}) end |
#upload_cookbook_directory(directory, ui = nil) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/promote/uploader.rb', line 44 def upload_cookbook_directory(directory, ui = nil) if !Dir.glob(File.join(directory, "*")).empty? if ui ui.info "Uploading cookbooks from #{directory} to #{config.chef_server_url}" end with_chef_server(@config) do knife = Chef::Knife::CookbookUpload.new() knife.config[:all] = true knife.config[:freeze] = true knife.config[:cookbook_path] = directory knife.run end elsif ui ui.info "No cookbooks found in #{directory}" end end |
#upload_cookbooks(environment = nil) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/promote/uploader.rb', line 37 def upload_cookbooks(environment = nil) dirs = (Dir.glob(File.("~/.berkshelf/cookbooks/*")) << Dir.glob(File.join(config.cookbook_directory, "*"))).flatten! upload_filtered_cookbooks(dirs, environment) end |
#upload_data_bags ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/promote/uploader.rb', line 74 def upload_data_bags data_bag_directory = File.join(config.temp_directory, "data_bags") chef_fs_directory = nil with_chef_server(config) do chef_fs_directory = Chef::ChefFS::FileSystem::ChefRepositoryFileSystemRootDir.new( { 'data_bags' => [data_bag_directory] } ) end config.reset_temp_dir Dir.glob(File.join(config.data_bag_directory,'**/*.json')). reject{ |file| file.end_with?("_keys.json")}.each do |file| new_path = file.sub(config.repo_root, config.temp_directory) new_dir = File.dirname(new_path) FileUtils.mkdir_p(new_dir) unless Dir.exist?(new_dir) FileUtils.cp(file, new_path) end upload_file("/data_bags/**/*.json", chef_fs_directory) end |
#upload_environment(environment_name, ui = nil) ⇒ Object
62 63 64 |
# File 'lib/promote/uploader.rb', line 62 def upload_environment(environment_name, ui = nil) upload_file("/environments/#{environment_name}.json", nil, ui) end |
#upload_environments ⇒ Object
66 67 68 |
# File 'lib/promote/uploader.rb', line 66 def upload_environments upload_file("/environments/*.json") end |
#upload_roles ⇒ Object
70 71 72 |
# File 'lib/promote/uploader.rb', line 70 def upload_roles upload_file("/roles/*.json") end |