Class: VagrantPlugins::DataBags::DataBagsContainer
- Inherits:
-
Object
- Object
- VagrantPlugins::DataBags::DataBagsContainer
- Includes:
- Singleton, FileUtil
- Defined in:
- lib/vagrant-databags/data_bags.rb
Instance Attribute Summary collapse
- #machine_data_bags ⇒ Hash<Symbol, Hash<Symbol, MachineDataBags>>
- #temp_folders ⇒ Array<String> readonly
Instance Method Summary collapse
- #clean(machine, provisioner_type) ⇒ Object
- #destroy(machine) ⇒ Object
- #get_abs_temp_folder(machine, provisioner_type = nil) ⇒ String
- #get_machine_data_bags(machine, provisioner_type) ⇒ MachineDataBags
- #get_rel_temp_folder(machine, provisioner_type = nil) ⇒ String
- #init_machine_data_bag_folder(machine, provisioner_type) ⇒ Array
- #init_machine_data_bags(machine, provisioner_type, data_bags_path) ⇒ MachineDataBags
-
#initialize ⇒ DataBagsContainer
constructor
A new instance of DataBagsContainer.
- #persist_machine_data_bags(machine, provisioner_type) ⇒ Array
Methods included from FileUtil
#escape_glob_dir, #find_all_object_dirs, #find_all_objects, #object_from_json_file
Constructor Details
#initialize ⇒ DataBagsContainer
Returns a new instance of DataBagsContainer.
18 19 20 |
# File 'lib/vagrant-databags/data_bags.rb', line 18 def initialize @machine_data_bags_map = {} end |
Instance Attribute Details
#machine_data_bags ⇒ Hash<Symbol, Hash<Symbol, MachineDataBags>>
13 14 15 |
# File 'lib/vagrant-databags/data_bags.rb', line 13 def machine_data_bags @machine_data_bags end |
#temp_folders ⇒ Array<String> (readonly)
16 17 18 |
# File 'lib/vagrant-databags/data_bags.rb', line 16 def temp_folders @temp_folders end |
Instance Method Details
#clean(machine, provisioner_type) ⇒ Object
104 105 106 107 108 109 |
# File 'lib/vagrant-databags/data_bags.rb', line 104 def clean(machine, provisioner_type) abs_temp_folder = get_abs_temp_folder(machine, provisioner_type) Dir[::File.join(abs_temp_folder, "*")].each do |f| ::FileUtils.rm_r f, :force => true end end |
#destroy(machine) ⇒ Object
98 99 100 |
# File 'lib/vagrant-databags/data_bags.rb', line 98 def destroy(machine) ::FileUtils.rm_r get_abs_temp_folder(machine), :force => true end |
#get_abs_temp_folder(machine, provisioner_type = nil) ⇒ String
114 115 116 |
# File 'lib/vagrant-databags/data_bags.rb', line 114 def get_abs_temp_folder(machine, provisioner_type = nil) ::File.join(machine.env.root_path, get_rel_temp_folder(machine, provisioner_type)) end |
#get_machine_data_bags(machine, provisioner_type) ⇒ MachineDataBags
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/vagrant-databags/data_bags.rb', line 46 def get_machine_data_bags(machine, provisioner_type) unless @machine_data_bags_map.key?(machine.name.to_sym) @machine_data_bags_map[machine.name.to_sym] = {} end unless @machine_data_bags_map[machine.name.to_sym].key?(provisioner_type.to_sym) @machine_data_bags_map[machine.name.to_sym][provisioner_type.to_sym] = MachineDataBags.new end @machine_data_bags_map[machine.name.to_sym][provisioner_type.to_sym] end |
#get_rel_temp_folder(machine, provisioner_type = nil) ⇒ String
121 122 123 124 125 126 127 |
# File 'lib/vagrant-databags/data_bags.rb', line 121 def get_rel_temp_folder(machine, provisioner_type = nil) if provisioner_type.nil? ::File.join(".vagrant", "machines", machine.name.to_s, "databags") else ::File.join(".vagrant", "machines", machine.name.to_s, "databags", provisioner_type.to_s) end end |
#init_machine_data_bag_folder(machine, provisioner_type) ⇒ Array
60 61 62 63 64 |
# File 'lib/vagrant-databags/data_bags.rb', line 60 def init_machine_data_bag_folder(machine, provisioner_type) rel_temp_folder = get_rel_temp_folder(machine, provisioner_type) ::FileUtils.mkdir_p ::File.join(machine.env.root_path, rel_temp_folder) [:host, rel_temp_folder] end |
#init_machine_data_bags(machine, provisioner_type, data_bags_path) ⇒ MachineDataBags
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/vagrant-databags/data_bags.rb', line 26 def init_machine_data_bags(machine, provisioner_type, data_bags_path) machine_data_bags = get_machine_data_bags(machine, provisioner_type) data_bags_path.each do |data_bag_path| if data_bag_path[0] == :host data_bags_root_path = ::File.join(machine.env.root_path, data_bag_path[1]) find_all_object_dirs(data_bags_root_path).each do |data_bag_name| find_all_objects(::File.join(data_bags_root_path, data_bag_name)).each do |item_file_name| item = object_from_json_file(::File.join(data_bags_root_path, data_bag_name, item_file_name)) machine_data_bags.add_data_bag_item(data_bag_name, item['id'], item) end end end end @machine_data_bags_map[machine.name.to_sym][provisioner_type.to_sym] = machine_data_bags machine_data_bags end |
#persist_machine_data_bags(machine, provisioner_type) ⇒ Array
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/vagrant-databags/data_bags.rb', line 69 def persist_machine_data_bags(machine, provisioner_type) machine_data_bags = get_machine_data_bags(machine, provisioner_type) rel_temp_folder = get_rel_temp_folder(machine, provisioner_type) temp_folder = ::File.join(machine.env.root_path, rel_temp_folder) machine_data_bags.data_bags.each do |data_bag_name, data_bag| data_bag_folder = ::File.join(temp_folder, data_bag_name) ::FileUtils.mkdir_p data_bag_folder data_bag.items.each do |item_id, item| open(File.join(data_bag_folder, "#{item_id}.json"), 'w') {|f| f << ::JSON.pretty_generate(item)} end find_all_objects(data_bag_folder).each do |file_name| item_id = ::File.basename(file_name, ".*") unless data_bag.items.key?(item_id) || data_bag.items.key?(item_id.to_sym) ::FileUtils.rm_r ::File.join(data_bag_folder, file_name), :force => true end end end find_all_object_dirs(temp_folder).each do |folder_name| unless machine_data_bags.data_bags.key?(folder_name) ::FileUtils.rm_r ::File.join(temp_folder, folder_name), :force => true end end [:host, rel_temp_folder] end |