From 3429744c92cf794383c2ddb5a33328e189304917 Mon Sep 17 00:00:00 2001 From: Carlos Konstanski Date: Thu, 2 Nov 2017 12:51:30 -0600 Subject: renaming image foundry scripts to make room for glance gateway --- ci-script.py | 118 ------------------------------------------------------- ci-script.sh | 27 ------------- image-foundry.py | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ image-foundry.sh | 27 +++++++++++++ 4 files changed, 145 insertions(+), 145 deletions(-) delete mode 100755 ci-script.py delete mode 100755 ci-script.sh create mode 100755 image-foundry.py create mode 100755 image-foundry.sh diff --git a/ci-script.py b/ci-script.py deleted file mode 100755 index 678f3b6..0000000 --- a/ci-script.py +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env python2 - -from __future__ import print_function -from libs.environment import * -from libs.glance import * -from libs.keystone import * -import argparse -import glob -import os -import subprocess -import sys -import yaml - - -def run_shell_command(cmd): - return subprocess.check_output(cmd, shell=True) - - -def read_manifests(env): - manifests = {} - manifests_glob = "%s/*.yaml" % env.manifests_path - for manifest_file in glob.glob(manifests_glob): - with open(manifest_file, "r") as myfile: - manifest = yaml.load(myfile.read()) - if manifest["image_name"] in manifests: - raise Exception("Duplicate image name in manifests: %s" % manifest["image_name"]) - manifests[manifest["image_name"]] = manifest - return manifests - - -def check_image_tag_current(glance, manifest): - image = glance.find("%s.%s" % (manifest["image_name"], manifest["image_type"])) - return image and str(manifest["tag"]) in image.tags - - -def create_image(env, manifest): - cmd = "disk-image-create %s -t %s -o /tmp/%s.%s 2>&1" % (manifest["elements"], manifest["image_type"], manifest["image_name"], manifest["image_type"]) - environ = manifest["extra_envs"] if "extra_envs" in manifest else {} - environ["ELEMENTS_PATH"] = env.elements_path - p = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=environ) - out, err = p.communicate() - if p.returncode != 0: - raise Exception("Error running diskimage-builder:\n%s\n%s" % (out, err)) - - -def main(args): - env = Environment(args.os_auth_url, - args.os_project_name, - args.os_region, - args.os_username, - args.os_password, - args.os_project_domain_name, - args.os_user_domain_name, - args.os_identity_api_version, - args.os_image_api_version, - args.elements_path, - args.manifests_path) - manifests = read_manifests(env) - keystone = Keystone(env) - glance = Glance(keystone, endpoint_type="publicURL") - for image_name, manifest in manifests.items(): - if not check_image_tag_current(glance, manifest): - create_image(env, manifest) - glance.upload("%s.%s" % (manifest["image_name"], manifest["image_type"]), - manifest["image_type"], - "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"]), - manifest["tag"]) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Image Foundry CI Process") - parser.add_argument("--os-auth-url", - required=False, - default=os.environ.get("OS_AUTH_URL", None), - help="OpenStack openrc environment variable: OS_AUTH_URL") - parser.add_argument("--os-project-name", - required=False, - default=os.environ.get("OS_PROJECT_NAME", None), - help="OpenStack openrc environment variable: OS_PROJECT_NAME") - parser.add_argument("--os-region", - required=False, - default=os.environ.get("OS_REGION", None), - help="OpenStack openrc environment variable: OS_REGION") - parser.add_argument("--os-username", - required=False, - default=os.environ.get("OS_USERNAME", None), - help="OpenStack openrc environment variable: OS_USERNAME") - parser.add_argument("--os-password", - required=False, - default=os.environ.get("OS_PASSWORD", None), - help="OpenStack openrc environment variable: OS_PASSWORD") - parser.add_argument("--os-project-domain-name", - required=False, - default=os.environ.get("OS_PROJECT_DOMAIN_NAME", None), - help="OpenStack openrc environment variable: OS_PROJECT_DOMAIN_NAME") - parser.add_argument("--os-user-domain-name", - required=False, - default=os.environ.get("OS_USER_DOMAIN_NAME", None), - help="OpenStack openrc environment variable: OS_USER_DOMAIN_NAME") - parser.add_argument("--os-identity-api-version", - required=False, - default=os.environ.get("OS_IDENTITY_API_VERSION", None), - help="OpenStack openrc environment variable: OS_IDENTITY_API_VERSION") - parser.add_argument("--os-image-api-version", - required=False, - default=os.environ.get("OS_IMAGE_API_VERSION", None), - help="OpenStack openrc environment variable: OS_IMAGE_API_VERSION") - parser.add_argument("--elements-path", - required=False, - default=os.environ.get("ELEMENTS_PATH", None), - help="diskimage-builder environment variable: ELEMENTS_PATH") - parser.add_argument("--manifests-path", - required=False, - default=os.environ.get("MANIFESTS_PATH", None), - help="image-foundry environment variable: MANIFESTS_PATH") - args = parser.parse_args() - main(args) - sys.exit(0) diff --git a/ci-script.sh b/ci-script.sh deleted file mode 100755 index c7c1a3f..0000000 --- a/ci-script.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -. /var/lib/jenkins/openrc-imagefoundry.sh -export os_username="${OS_USERNAME}" -export os_password="${OS_PASSWORD}" -export os_project_name="${OS_PROJECT_NAME}" -export os_user_domain_name="${OS_USER_DOMAIN_NAME}" -export os_project_domain_name="${OS_PROJECT_DOMAIN_NAME}" -export os_region="${OS_REGION}" -export os_auth_url="${OS_AUTH_URL}" -export os_identity_api_version="${OS_IDENTITY_API_VERSION}" -export os_image_api_version="${OS_IMAGE_API_VERSION}" -export elements_path="${ELEMENTS_PATH}" -export manifests_path="${MANIFESTS_PATH}" - -sudo OS_USERNAME="${os_username}" \ - OS_PASSWORD="${os_password}" \ - OS_PROJECT_NAME="${os_project_name}" \ - OS_USER_DOMAIN_NAME="${os_user_domain_name}" \ - OS_PROJECT_DOMAIN_NAME="${os_project_domain_name}" \ - OS_REGION="${os_region}" \ - OS_AUTH_URL="${os_auth_url}" \ - OS_IDENTITY_API_VERSION="${os_identity_api_version}" \ - OS_IMAGE_API_VERSION="${os_image_api_version}" \ - ELEMENTS_PATH="${elements_path}" \ - MANIFESTS_PATH="${manifests_path}" \ - ./ci-script.py diff --git a/image-foundry.py b/image-foundry.py new file mode 100755 index 0000000..678f3b6 --- /dev/null +++ b/image-foundry.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python2 + +from __future__ import print_function +from libs.environment import * +from libs.glance import * +from libs.keystone import * +import argparse +import glob +import os +import subprocess +import sys +import yaml + + +def run_shell_command(cmd): + return subprocess.check_output(cmd, shell=True) + + +def read_manifests(env): + manifests = {} + manifests_glob = "%s/*.yaml" % env.manifests_path + for manifest_file in glob.glob(manifests_glob): + with open(manifest_file, "r") as myfile: + manifest = yaml.load(myfile.read()) + if manifest["image_name"] in manifests: + raise Exception("Duplicate image name in manifests: %s" % manifest["image_name"]) + manifests[manifest["image_name"]] = manifest + return manifests + + +def check_image_tag_current(glance, manifest): + image = glance.find("%s.%s" % (manifest["image_name"], manifest["image_type"])) + return image and str(manifest["tag"]) in image.tags + + +def create_image(env, manifest): + cmd = "disk-image-create %s -t %s -o /tmp/%s.%s 2>&1" % (manifest["elements"], manifest["image_type"], manifest["image_name"], manifest["image_type"]) + environ = manifest["extra_envs"] if "extra_envs" in manifest else {} + environ["ELEMENTS_PATH"] = env.elements_path + p = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=environ) + out, err = p.communicate() + if p.returncode != 0: + raise Exception("Error running diskimage-builder:\n%s\n%s" % (out, err)) + + +def main(args): + env = Environment(args.os_auth_url, + args.os_project_name, + args.os_region, + args.os_username, + args.os_password, + args.os_project_domain_name, + args.os_user_domain_name, + args.os_identity_api_version, + args.os_image_api_version, + args.elements_path, + args.manifests_path) + manifests = read_manifests(env) + keystone = Keystone(env) + glance = Glance(keystone, endpoint_type="publicURL") + for image_name, manifest in manifests.items(): + if not check_image_tag_current(glance, manifest): + create_image(env, manifest) + glance.upload("%s.%s" % (manifest["image_name"], manifest["image_type"]), + manifest["image_type"], + "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"]), + manifest["tag"]) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Image Foundry CI Process") + parser.add_argument("--os-auth-url", + required=False, + default=os.environ.get("OS_AUTH_URL", None), + help="OpenStack openrc environment variable: OS_AUTH_URL") + parser.add_argument("--os-project-name", + required=False, + default=os.environ.get("OS_PROJECT_NAME", None), + help="OpenStack openrc environment variable: OS_PROJECT_NAME") + parser.add_argument("--os-region", + required=False, + default=os.environ.get("OS_REGION", None), + help="OpenStack openrc environment variable: OS_REGION") + parser.add_argument("--os-username", + required=False, + default=os.environ.get("OS_USERNAME", None), + help="OpenStack openrc environment variable: OS_USERNAME") + parser.add_argument("--os-password", + required=False, + default=os.environ.get("OS_PASSWORD", None), + help="OpenStack openrc environment variable: OS_PASSWORD") + parser.add_argument("--os-project-domain-name", + required=False, + default=os.environ.get("OS_PROJECT_DOMAIN_NAME", None), + help="OpenStack openrc environment variable: OS_PROJECT_DOMAIN_NAME") + parser.add_argument("--os-user-domain-name", + required=False, + default=os.environ.get("OS_USER_DOMAIN_NAME", None), + help="OpenStack openrc environment variable: OS_USER_DOMAIN_NAME") + parser.add_argument("--os-identity-api-version", + required=False, + default=os.environ.get("OS_IDENTITY_API_VERSION", None), + help="OpenStack openrc environment variable: OS_IDENTITY_API_VERSION") + parser.add_argument("--os-image-api-version", + required=False, + default=os.environ.get("OS_IMAGE_API_VERSION", None), + help="OpenStack openrc environment variable: OS_IMAGE_API_VERSION") + parser.add_argument("--elements-path", + required=False, + default=os.environ.get("ELEMENTS_PATH", None), + help="diskimage-builder environment variable: ELEMENTS_PATH") + parser.add_argument("--manifests-path", + required=False, + default=os.environ.get("MANIFESTS_PATH", None), + help="image-foundry environment variable: MANIFESTS_PATH") + args = parser.parse_args() + main(args) + sys.exit(0) diff --git a/image-foundry.sh b/image-foundry.sh new file mode 100755 index 0000000..527f346 --- /dev/null +++ b/image-foundry.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +. /var/lib/jenkins/openrc-imagefoundry.sh +export os_username="${OS_USERNAME}" +export os_password="${OS_PASSWORD}" +export os_project_name="${OS_PROJECT_NAME}" +export os_user_domain_name="${OS_USER_DOMAIN_NAME}" +export os_project_domain_name="${OS_PROJECT_DOMAIN_NAME}" +export os_region="${OS_REGION}" +export os_auth_url="${OS_AUTH_URL}" +export os_identity_api_version="${OS_IDENTITY_API_VERSION}" +export os_image_api_version="${OS_IMAGE_API_VERSION}" +export elements_path="${ELEMENTS_PATH}" +export manifests_path="${MANIFESTS_PATH}" + +sudo OS_USERNAME="${os_username}" \ + OS_PASSWORD="${os_password}" \ + OS_PROJECT_NAME="${os_project_name}" \ + OS_USER_DOMAIN_NAME="${os_user_domain_name}" \ + OS_PROJECT_DOMAIN_NAME="${os_project_domain_name}" \ + OS_REGION="${os_region}" \ + OS_AUTH_URL="${os_auth_url}" \ + OS_IDENTITY_API_VERSION="${os_identity_api_version}" \ + OS_IMAGE_API_VERSION="${os_image_api_version}" \ + ELEMENTS_PATH="${elements_path}" \ + MANIFESTS_PATH="${manifests_path}" \ + ./image-foundry.py -- cgit v1.3