oracle: add tasks to upload and verify images

This commit is contained in:
Tiago Ilieve 2016-02-19 19:21:28 -02:00
parent 94559e1d8e
commit 12dbc6a07e
2 changed files with 55 additions and 0 deletions

View file

@ -0,0 +1,17 @@
from bootstrapvz.base import Task
from bootstrapvz.common import phases
from bootstrapvz.providers.oracle.apiclient import OracleStorageAPIClient
class InstantiateAPIClient(Task):
description = 'Instantiating Oracle Storage Cloud API client'
phase = phases.preparation
@classmethod
def run(cls, info):
info._oracle['client'] = OracleStorageAPIClient(
username=info.manifest.provider['credentials']['username'],
password=info.manifest.provider['credentials']['password'],
identity_domain=info.manifest.provider['credentials']['identity-domain'],
container=info.manifest.provider['container'],
)

View file

@ -17,5 +17,43 @@ class CreateImageTarball(Task):
tarball_name = image_name + '.tar.gz'
tarball_path = os.path.join(info.manifest.bootstrapper['workspace'], tarball_name)
info._oracle['tarball_path'] = tarball_path
log_check_call(['tar', '--sparse', '-C', info.manifest.bootstrapper['workspace'],
'-caf', tarball_path, filename])
class UploadImageTarball(Task):
description = 'Uploading image tarball'
phase = phases.image_registration
predecessors = [CreateImageTarball]
@classmethod
def run(cls, info):
info._oracle['client'].file_path = info._oracle['tarball_path']
info._oracle['client'].upload_file()
class DownloadImageTarball(Task):
description = 'Downloading image tarball for integrity verification'
phase = phases.image_registration
predecessors = [UploadImageTarball]
@classmethod
def run(cls, info):
tmp_tarball_path = '{tarball_path}-{pid}.tmp'.format(
tarball_path=info._oracle['tarball_path'],
pid=os.getpid(),
)
info._oracle['client'].target_file_path = tmp_tarball_path
info._oracle['client'].download_file()
class CompareImageTarballs(Task):
description = 'Comparing uploaded and downloaded image tarballs hashes'
phase = phases.image_registration
predecessors = [DownloadImageTarball]
@classmethod
def run(cls, info):
info._oracle['client'].compare_files()
os.remove(info._oracle['client'].target_file_path)