canonical-ubuntu-qa team mailing list archive
-
canonical-ubuntu-qa team
-
Mailing list archive
-
Message #03946
[Merge] ~andersson123/autopkgtest-cloud:proposed-package-images into autopkgtest-cloud:master
Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:proposed-package-images into autopkgtest-cloud:master.
Requested reviews:
Canonical's Ubuntu QA (canonical-ubuntu-qa)
For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/465334
--
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:proposed-package-images into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/tools/create-nova-image-with-proposed-package b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/tools/create-nova-image-with-proposed-package
index e48f3f4..f344a04 100755
--- a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/tools/create-nova-image-with-proposed-package
+++ b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/tools/create-nova-image-with-proposed-package
@@ -27,18 +27,30 @@ from glanceclient.common import utils
def get_glance():
"""Return glance client object"""
-
+ # i think this is all good
loader = keystoneauth1.loading.get_plugin_loader("password")
- auth = loader.load_from_options(
- auth_url=os.environ["OS_AUTH_URL"],
- username=os.environ["OS_USERNAME"],
- password=os.environ["OS_PASSWORD"],
- tenant_name=os.environ["OS_TENANT_NAME"],
- )
+ if os.environ.get("OS_IDENTITY_API_VERSION") == "3":
+ auth = loader.load_from_options(
+ auth_url=os.environ["OS_AUTH_URL"],
+ username=os.environ["OS_USERNAME"],
+ password=os.environ["OS_PASSWORD"],
+ tenant_name=os.environ["OS_TENANT_NAME"],
+ project_name=os.environ["OS_PROJECT_NAME"],
+ user_domain_name=os.environ["OS_USER_DOMAIN_NAME"],
+ project_domain_name=os.environ["OS_PROJECT_DOMAIN_NAME"],
+ )
+ else:
+ auth = loader.load_from_options(
+ auth_url=os.environ["OS_AUTH_URL"],
+ username=os.environ["OS_USERNAME"],
+ password=os.environ["OS_PASSWORD"],
+ tenant_name=os.environ["OS_TENANT_NAME"],
+ )
session = keystoneauth1.session.Session(auth=auth)
- return glanceclient.Client(
- "2", session=session, region_name=os.environ["NOVA_REGION"]
+ os_region = os.environ.get(
+ "NOVA_REGION", os.environ.get("OS_REGION_NAME", "")
)
+ return glanceclient.Client("2", session=session, region_name=os_region)
def find_latest_image(img_re):
@@ -67,13 +79,15 @@ def setup_image(image_path, source):
image_path,
"chroot",
"_MOUNTPOINT_",
- "/bin/sh",
+ "/bin/bash",
],
stdin=subprocess.PIPE,
)
# find and install proposed binaries for source
# pylint: disable=line-too-long
+
+ # this all needs modification
img_shell.stdin.write(
(
"""
@@ -82,6 +96,7 @@ echo '* Creating policy-rc.d'
printf '#!/bin/sh\\nexit 101\\n' > /usr/sbin/policy-rc.d
chmod 755 /usr/sbin/policy-rc.d
echo '* Generating apt sources for -proposed:'
+while ! [ -e /etc/apt/sources.list ]; do sleep 5; done
sed -rn 's/^(deb|deb-src) +(\[.*\] *)?([^ ]*(ubuntu.com|debian.org|ftpmaster)[^ ]*) +([^ -]+) +(.*)$/\\1 \\2\\3 \\5-proposed \\6/p' /etc/apt/sources.list `ls /etc/apt/sources.list.d/*.list 2>/dev/null|| true` > /etc/apt/sources.list.d/proposed.list
cat /etc/apt/sources.list.d/proposed.list
@@ -129,8 +144,9 @@ workdir = tempfile.TemporaryDirectory(
img = os.path.join(workdir.name, "image")
utils.save_image(glance.images.data(latest.id), img)
+print("* Image %s has been downloaded - now setting up")
setup_image(img, source)
-
+print("* Image has been set up! Creating image via glance API")
newimg_name = "proposed-%s/%s" % (source, os.path.basename(latest.name))
newimg = glance.images.create(
name=newimg_name,
@@ -140,3 +156,4 @@ newimg = glance.images.create(
print("* Uploading new image %s (UUID: %s)..." % (newimg.name, newimg.id))
with open(img, "rb") as f:
glance.images.upload(newimg.id, f)
+print("* Image uploaded! All done.")
References