summaryrefslogtreecommitdiff
path: root/glance-gateway.py
diff options
context:
space:
mode:
Diffstat (limited to 'glance-gateway.py')
-rwxr-xr-xglance-gateway.py91
1 files changed, 69 insertions, 22 deletions
diff --git a/glance-gateway.py b/glance-gateway.py
index 833e38d..66b1d54 100755
--- a/glance-gateway.py
+++ b/glance-gateway.py
@@ -4,6 +4,7 @@ from __future__ import print_function
from libs.environment import *
from libs.glance import *
from libs.keystone import *
+from libs.openbook_client import *
import argparse
import glob
import os
@@ -30,30 +31,60 @@ def check_image_exists_up2date(glance, manifest):
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")
+ env_src = 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,
+ "openbook_host": args.openbook_host,
+ "openbook_port": args.openbook_port,
+ "openbook_user": args.openbook_user,
+ "openbook_pass": args.openbook_pass
+ })
+ manifests = read_manifests(env_src)
+ keystone_src = Keystone(env_src)
+ glance_src = Glance(keystone_src, endpoint_type="publicURL")
for image_name, manifest in manifests.items():
- if manifest["vetted"] and not check_image_exists_up2date(glance, manifest):
+ if manifest["vetted"] and not check_image_exists_up2date(glance_src, 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"]),
- "private",
- manifest["tag"])
+ glance_src.download("%s.%s.unvetted" % (manifest["image_name"], manifest["image_type"]),
+ "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"]))
+ # get AUTH_URLs
+ ob_client = OpenbookClient(host=env.extra_envs["openbook_host"],
+ port=env.extra_envs["openbook_port"],
+ username=extra_envs["openbook_user"],
+ password=extra_envs["openbook_pass"])
+ for obj in [url for url in ob_client.get_service_managers() if url not in manifest["regions_to_exclude"]]:
+ # upload image as public
+ env_dest = Environment(obj["connectionUrl"],
+ 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,
+ "openbook_host": args.openbook_host,
+ "openbook_port": args.openbook_port,
+ "openbook_user": args.openbook_user,
+ "openbook_pass": args.openbook_pass
+ })
+ keystone_dest = Keystone(env_dest)
+ glance_dest = Glance(keystone_dest, endpoint_type="publicURL")
+ glance_dest.upload("%s.%s" % (manifest["image_name"], manifest["image_type"]),
+ manifest["image_type"],
+ "/tmp/%s.%s" % (manifest["image_name"], manifest["image_type"]),
+ "private",
+ manifest["tag"])
if __name__ == "__main__":
@@ -98,6 +129,22 @@ if __name__ == "__main__":
required=False,
default=os.environ.get("GLANCE_GATEWAY_MANIFESTS_PATH", None),
help="image-foundry environment variable: GLANCE_GATEWAY_MANIFESTS_PATH")
+ parser.add_argument("--openbook-host",
+ required=False,
+ default=os.environ.get("OPENBOOK_HOST", None),
+ help="The hostname or IP of the node where Openbook is running (or the load balancer frontend to same).")
+ parser.add_argument("--openbook-port",
+ required=False,
+ default=os.environ.get("OPENBOOK_PORT", None),
+ help="The TCP port on OPENBOOK_HOST on which the API listener is bound.")
+ parser.add_argument("--openbook-user",
+ required=False,
+ default=os.environ.get("OPENBOOK_USER", None),
+ help="The admin auth username for Openbook.")
+ parser.add_argument("--openbook-pass",
+ required=False,
+ default=os.environ.get("OPENBOOK_PASS", None),
+ help="The admin auth password for Openbook.")
args = parser.parse_args()
main(args)
sys.exit(0)