mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-24 07:26:29 +00:00
counter tasks for CreateMountDir and MountVolume
This commit is contained in:
parent
4d86ae5bea
commit
9aae74b0fa
3 changed files with 34 additions and 6 deletions
|
@ -25,8 +25,13 @@ def tasks(tasklist, manifest):
|
||||||
|
|
||||||
def rollback_tasks(tasklist, tasks_completed, manifest):
|
def rollback_tasks(tasklist, tasks_completed, manifest):
|
||||||
completed = [type(task) for task in tasks_completed]
|
completed = [type(task) for task in tasks_completed]
|
||||||
|
|
||||||
|
def counter_task(task, counter):
|
||||||
|
if task in completed and counter not in completed:
|
||||||
|
tasklist.add(counter())
|
||||||
|
|
||||||
if manifest.volume['backing'].lower() == 'ebs':
|
if manifest.volume['backing'].lower() == 'ebs':
|
||||||
if ebs.CreateVolume in completed and ebs.DeleteVolume not in completed:
|
counter_task(ebs.CreateVolume, ebs.DeleteVolume)
|
||||||
tasklist.add(ebs.DeleteVolume())
|
counter_task(ebs.AttachVolume, ebs.DetachVolume)
|
||||||
if ebs.AttachVolume in completed and ebs.DetachVolume not in completed:
|
counter_task(filesystem.CreateMountDir, filesystem.DeleteMountDir)
|
||||||
tasklist.add(ebs.DetachVolume())
|
counter_task(filesystem.MountVolume, filesystem.UnmountVolume)
|
||||||
|
|
|
@ -2,6 +2,7 @@ from base import Task
|
||||||
from common import phases
|
from common import phases
|
||||||
from common.exceptions import TaskError
|
from common.exceptions import TaskError
|
||||||
from connection import Connect
|
from connection import Connect
|
||||||
|
from filesystem import UnmountVolume
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,7 +58,7 @@ class AttachVolume(Task):
|
||||||
|
|
||||||
class DetachVolume(Task):
|
class DetachVolume(Task):
|
||||||
phase = phases.volume_unmounting
|
phase = phases.volume_unmounting
|
||||||
after = []
|
after = [UnmountVolume]
|
||||||
|
|
||||||
description = 'Detaching the EBS volume'
|
description = 'Detaching the EBS volume'
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ class CreateMountDir(Task):
|
||||||
|
|
||||||
|
|
||||||
class MountVolume(Task):
|
class MountVolume(Task):
|
||||||
description = 'Creating mountpoint for the bootstrap volume'
|
description = 'Mounting the bootstrap volume'
|
||||||
phase = phases.volume_mounting
|
phase = phases.volume_mounting
|
||||||
after = [CreateMountDir]
|
after = [CreateMountDir]
|
||||||
|
|
||||||
|
@ -67,3 +67,25 @@ class MountVolume(Task):
|
||||||
dev_path = info.bootstrap_device['path']
|
dev_path = info.bootstrap_device['path']
|
||||||
with open(devnull, 'w') as dev_null:
|
with open(devnull, 'w') as dev_null:
|
||||||
subprocess.check_call(['mount', dev_path, info.root], stdout=dev_null, stderr=dev_null)
|
subprocess.check_call(['mount', dev_path, info.root], stdout=dev_null, stderr=dev_null)
|
||||||
|
|
||||||
|
|
||||||
|
class UnmountVolume(Task):
|
||||||
|
description = 'Unmounting the bootstrap volume'
|
||||||
|
phase = phases.volume_unmounting
|
||||||
|
|
||||||
|
def run(self, info):
|
||||||
|
import subprocess
|
||||||
|
from os import devnull
|
||||||
|
with open(devnull, 'w') as dev_null:
|
||||||
|
subprocess.check_call(['umount', info.root], stdout=dev_null, stderr=dev_null)
|
||||||
|
|
||||||
|
|
||||||
|
class DeleteMountDir(Task):
|
||||||
|
description = 'Deleting mountpoint for the bootstrap volume'
|
||||||
|
phase = phases.volume_unmounting
|
||||||
|
after = [UnmountVolume]
|
||||||
|
|
||||||
|
def run(self, info):
|
||||||
|
import os
|
||||||
|
os.rmdir(info.root)
|
||||||
|
del info.root
|
||||||
|
|
Loading…
Add table
Reference in a new issue