Class: CavalerieWeb::VagrantManager
- Inherits:
-
Object
- Object
- CavalerieWeb::VagrantManager
- Defined in:
- lib/cavalerie_web/managers/vagrant_manager.rb
Class Method Summary collapse
- .destroy_containers ⇒ Object
- .ensure_containers_are_running ⇒ Object
- .get_all_containers_info ⇒ Object
- .get_container_info(container_name) ⇒ Object
- .get_container_other_info(container_name) ⇒ Object
- .get_container_status(container_name) ⇒ Object
- .get_containers_names ⇒ Object
- .restart_container(container_name) ⇒ Object
- .start_containers ⇒ Object
- .start_or_restart_containers ⇒ Object
Class Method Details
.destroy_containers ⇒ Object
68 69 70 71 72 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 68 def self.destroy_containers VagrantManager.get_containers_names.each do |container_name| VagrantHelper.destroy_container container_name unless get_container_status(container_name) == "not created" end end |
.ensure_containers_are_running ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 35 def self.ensure_containers_are_running begin VagrantManager.get_containers_names.each do |container_name| container_status = get_container_status container_name timer = 0 max_timer = 30 while container_status == "preparing" && timer < max_timer puts Message.notice "\"#{container_name}\" container is preparing. Waiting 2 seconds. (Current time: #{timer}s)" sleep 2 timer += 2 container_status = get_container_status container_name end raise ContainerNotRunningError, { container_name: container_name, container_status: container_status } unless container_status == "running" end rescue ContainerNotRunningError => error error_params = eval error. abort Message.error "Container \"#{error_params[:container_name]}\" isn't running.\n\n\t\"#{error_params[:container_name]}\" container status: #{error_params[:container_status]}\n\nAre you sure you have already run the command \"cavalerie up\"?\nIf the problem persists, this often means there is already another Vagrant virtual machine running in VirtualBox.\nPlease find and delete any virtual machine named \"Vagrant-Dockerhost\" in VirtualBox, and run \"cavalerie up\" again." end end |
.get_all_containers_info ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 95 def self.get_all_containers_info all_containers_info = {} Config.get_docker_configs["containers_names"].each do |container_name| all_containers_info[container_name] = VagrantManager.get_container_info container_name end all_containers_info end |
.get_container_info(container_name) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 83 def self.get_container_info container_name docker_configs = Config.get_docker_configs container_info = { ip: docker_configs["#{container_name}_container_ip"], os: docker_configs["#{container_name}_os"], version: docker_configs["#{container_name}_version"], status: get_container_status(container_name), others: get_container_other_info(container_name) } end |
.get_container_other_info(container_name) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 103 def self.get_container_other_info container_name docker_configs = Config.get_docker_configs others = {} docker_configs.each do |docker_config_key, docker_config_value| if docker_config_key.to_s.include? container_name already_registered_config = ["#{container_name}_container_ip", "#{container_name}_os", "#{container_name}_version"] is_an_other_key = already_registered_config.none? { |config| docker_config_key == config } others[docker_config_key] = docker_config_value if is_an_other_key end end others end |
.get_container_status(container_name) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 7 def self.get_container_status container_name status = VagrantHelper.status(container_name) begin case status when /not created \(docker\)/ "not created" when /running \(docker\)/ "running" when /saved \(docker\)/ "saved" when /preparing \(docker\)/ "preparing" when /poweroff \(docker\)/ "poweroff" when /stopped \(docker\)/ "stopped" when /host state unknown \(docker\)/ "host state unknown" else raise UnknownDockerContainerStatusError, status end rescue UnknownDockerContainerStatusError => error abort Message.error "The container #{container_name} is in an unknown state.\n\nVagrant status command output:\n\n#{error.}" end end |
.get_containers_names ⇒ Object
79 80 81 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 79 def self.get_containers_names Config.get_docker_configs["containers_names"] end |
.restart_container(container_name) ⇒ Object
74 75 76 77 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 74 def self.restart_container container_name VagrantHelper.destroy_container container_name VagrantHelper.start_container container_name end |
.start_containers ⇒ Object
62 63 64 65 66 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 62 def self.start_containers VagrantManager.get_containers_names.each do |container_name| VagrantHelper.start_container container_name end end |
.start_or_restart_containers ⇒ Object
57 58 59 60 |
# File 'lib/cavalerie_web/managers/vagrant_manager.rb', line 57 def self.start_or_restart_containers destroy_containers start_containers end |