diff options
| author | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-11-07 16:00:14 -0700 |
|---|---|---|
| committer | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-11-07 16:00:14 -0700 |
| commit | 31dfd95a2d97086d3e56d524c53f4a5a2cf0eb45 (patch) | |
| tree | 902116226857de989852fa05c64acfce670ba4f2 /glance-gateway.py | |
| parent | 3429744c92cf794383c2ddb5a33328e189304917 (diff) | |
adding glance gateway
Diffstat (limited to 'glance-gateway.py')
| -rwxr-xr-x | glance-gateway.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/glance-gateway.py b/glance-gateway.py new file mode 100755 index 0000000..9350421 --- /dev/null +++ b/glance-gateway.py @@ -0,0 +1,103 @@ +#!/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 read_manifests(env): + manifests = {} + manifests_glob = "%s/*.yaml" % env.extra_envs["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_exists_up2date(glance, manifest): + image = glance.find("%s.%s" % (manifest["image_name"], manifest["image_type"])) + return image and str(manifest["tag"]) in image.tags + + +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, + {"manifests_path": args.glance_gateway_manifests_path}) + manifests = read_manifests(env) + keystone = Keystone(env) + glance = Glance(keystone, endpoint_type="publicURL") + for image_name, manifest in manifests.items(): + if manifest["vetted"] and not check_image_exists_up2date(glance, manifest): + # download private image to /tmp + glance.download("%s.%s.unvetted" % (manifest["image_name"], manifest["image_type"]), + "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"])) + # upload image as public + glance.upload("%s.%s" % (manifest["image_name"], manifest["image_type"]), + manifest["image_type"], + "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"]), + "public", + manifest["tag"]) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Glance Gateway 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("--glance-gateway-manifests-path", + required=False, + default=os.environ.get("GLANCE_GATEWAY_MANIFESTS_PATH", None), + help="image-foundry environment variable: GLANCE_GATEWAY_MANIFESTS_PATH") + args = parser.parse_args() + main(args) + sys.exit(0) |
