lib/testlab/container/actions.rb in testlab-1.4.4 vs lib/testlab/container/actions.rb in testlab-1.5.0

- old
+ new

@@ -10,13 +10,14 @@ # # @return [Boolean] True if successful. def create @ui.logger.debug { "Container Create: #{self.id}" } - (self.node.state == :running) or return false - (self.state == :not_created) or return false + self.node.alive? or return false + persistent_operation_check(:create) + please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do configure self.lxc.create(*create_args) @@ -32,12 +33,11 @@ # # @return [Boolean] True if successful. def destroy @ui.logger.debug { "Container Destroy: #{self.id}" } - (self.node.state == :running) or return false - (self.state != :not_created) or return false + self.node.alive? or return false please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do self.lxc.destroy(%(-f)) self.lxc_clone.destroy(%(-f)) @@ -53,34 +53,33 @@ # # @return [Boolean] True if successful. def up @ui.logger.debug { "Container Up: #{self.id}" } - (self.node.state == :running) or return false - (self.state != :running) or return false + self.node.alive? or return false please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do configure # Remove any existing ARP entries for our container from the node. self.interfaces.each do |interface| self.node.exec(%(sudo arp --verbose --delete #{interface.ip}), :ignore_exit_status => true) end - if self.lxc_clone.exists? + if self.is_ephemeral? self.lxc_clone.start_ephemeral(clone_args) else self.lxc.start(%(--daemon)) end - (self.lxc.state != :running) and raise ContainerError, "The container failed to online!" + (self.state != :running) and raise ContainerError, "The container failed to online!" ZTK::TCPSocketCheck.new(:ui => @ui, :host => self.primary_interface.ip, :port => 22).wait # If we are not in ephemeral mode we should attempt to provision our # defined users. - if !self.lxc_clone.exists? + if self.is_persistent? self.users.each do |user| user.provision end end @@ -99,31 +98,29 @@ # # @return [Boolean] True if successful. def down @ui.logger.debug { "Container Down: #{self.id}" } - (self.node.state == :running) or return false - (self.state == :running) or return false + self.node.alive? or return false please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do self.lxc.stop # If we are in ephemeral mode... - if self.lxc_clone.exists? + if self.is_ephemeral? # IMPORTANT NOTE: # # If we are using a non-memory backed COW filesystem for the # ephemeral clones we should destroy the container. # # If we are using a memory backed COW filesystem for the ephemeral # clones then it will be released when the container is stopped. - self.persist and self.lxc.destroy(%(-f)) end - (self.lxc.state == :running) and raise ContainerError, "The container failed to offline!" + (self.state == :running) and raise ContainerError, "The container failed to offline!" do_provisioner_callbacks(self, :down, @ui) end true