From 12dbc6a07e603a428282b0a01d7a80d35d9ff736 Mon Sep 17 00:00:00 2001 From: Tiago Ilieve Date: Fri, 19 Feb 2016 19:21:28 -0200 Subject: [PATCH] oracle: add tasks to upload and verify images --- bootstrapvz/providers/oracle/tasks/api.py | 17 +++++++++ bootstrapvz/providers/oracle/tasks/image.py | 38 +++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 bootstrapvz/providers/oracle/tasks/api.py diff --git a/bootstrapvz/providers/oracle/tasks/api.py b/bootstrapvz/providers/oracle/tasks/api.py new file mode 100644 index 0000000..b1f11a5 --- /dev/null +++ b/bootstrapvz/providers/oracle/tasks/api.py @@ -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'], + ) diff --git a/bootstrapvz/providers/oracle/tasks/image.py b/bootstrapvz/providers/oracle/tasks/image.py index e7221fb..41acc4c 100644 --- a/bootstrapvz/providers/oracle/tasks/image.py +++ b/bootstrapvz/providers/oracle/tasks/image.py @@ -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)