lib/testlab/container/actions.rb in testlab-0.2.1 vs lib/testlab/container/actions.rb in testlab-0.3.0

- old
+ new

@@ -2,10 +2,15 @@ class Container module Actions # Create the container + # + # Builds the configuration for the container and sends a request to the + # LXC sub-system to create the container. + # + # @return [Boolean] True if successful. def create @ui.logger.debug { "Container Create: #{self.id} " } please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do self.domain ||= self.node.labfile.config[:domain] @@ -20,36 +25,66 @@ self.lxc.config.networks = build_lxc_network_conf(self.interfaces) self.lxc.config.save self.lxc.create(*create_args) end + + true end # Destroy the container + # + # Sends a request to the LXC sub-system to destroy the container. + # + # @return [Boolean] True if successful. def destroy @ui.logger.debug { "Container Destroy: #{self.id} " } please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do self.lxc.destroy end + + true end # Start the container + # + # Sends a request to the LXC sub-system to bring the container online. + # + # @return [Boolean] True if successful. def up @ui.logger.debug { "Container Up: #{self.id} " } + (self.lxc.state == :not_created) and raise ContainerError, "We can not online a non-existant container!" + please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do self.lxc.start + self.lxc.wait(:running) + + (self.lxc.state != :running) and raise ContainerError, "The container failed to online!" end + + true end # Stop the container + # + # Sends a request to the LXC sub-system to take the container offline. + # + # @return [Boolean] True if successful. def down @ui.logger.debug { "Container Down: #{self.id} " } + (self.lxc.state == :not_created) and raise ContainerError, "We can not offline a non-existant container!" + please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do self.lxc.stop + self.lxc.wait(:stopped) + + (self.lxc.state != :stopped) and raise ContainerError, "The container failed to offline!" end + + true end end end