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