openstack-image-manager 0.20231212.0__py3-none-any.whl → 0.20240211.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstack_image_manager/manage.py +19 -4
- openstack_image_manager/mirror.py +29 -24
- openstack_image_manager/update.py +0 -1
- {openstack_image_manager-0.20231212.0.dist-info → openstack_image_manager-0.20240211.0.dist-info}/METADATA +5 -5
- openstack_image_manager-0.20240211.0.dist-info/RECORD +11 -0
- openstack_image_manager-0.20231212.0.dist-info/RECORD +0 -11
- {openstack_image_manager-0.20231212.0.dist-info → openstack_image_manager-0.20240211.0.dist-info}/LICENSE +0 -0
- {openstack_image_manager-0.20231212.0.dist-info → openstack_image_manager-0.20240211.0.dist-info}/WHEEL +0 -0
- {openstack_image_manager-0.20231212.0.dist-info → openstack_image_manager-0.20240211.0.dist-info}/entry_points.txt +0 -0
- {openstack_image_manager-0.20231212.0.dist-info → openstack_image_manager-0.20240211.0.dist-info}/top_level.txt +0 -0
@@ -335,9 +335,9 @@ class ImageManager:
|
|
335
335
|
versions[version["version"]]["meta"]["image_source"] = url
|
336
336
|
|
337
337
|
if "build_date" in version:
|
338
|
-
versions[version["version"]]["meta"][
|
339
|
-
"
|
340
|
-
|
338
|
+
versions[version["version"]]["meta"]["image_build_date"] = (
|
339
|
+
date.isoformat(version["build_date"])
|
340
|
+
)
|
341
341
|
|
342
342
|
if "id" in version:
|
343
343
|
versions[version["version"]]["id"] = version["id"]
|
@@ -1097,7 +1097,11 @@ class ImageManager:
|
|
1097
1097
|
logger.info("Deactivating image '%s'" % image)
|
1098
1098
|
self.conn.image.deactivate_image(cloud_image.id)
|
1099
1099
|
|
1100
|
-
if
|
1100
|
+
if (
|
1101
|
+
self.CONF.hide
|
1102
|
+
and not self.CONF.dry_run
|
1103
|
+
and cloud_image.visibility != "community"
|
1104
|
+
):
|
1101
1105
|
logger.info(
|
1102
1106
|
"Setting visibility of '%s' to 'community'" % image
|
1103
1107
|
)
|
@@ -1107,6 +1111,17 @@ class ImageManager:
|
|
1107
1111
|
except Exception as e:
|
1108
1112
|
logger.error("An Exception occurred: \n%s" % e)
|
1109
1113
|
self.exit_with_error = True
|
1114
|
+
elif counter[image_name] <= last:
|
1115
|
+
logger.info(
|
1116
|
+
f"Image '{image}' will not be deleted, {counter[image_name]} <= {last}"
|
1117
|
+
)
|
1118
|
+
if (
|
1119
|
+
self.CONF.hide
|
1120
|
+
and not self.CONF.dry_run
|
1121
|
+
and cloud_image.visibility != "community"
|
1122
|
+
):
|
1123
|
+
logger.info("Setting visibility of '%s' to 'community'" % image)
|
1124
|
+
self.conn.image.update_image(cloud_image.id, visibility="community")
|
1110
1125
|
elif (
|
1111
1126
|
counter[image_name] < last and self.CONF.hide and not self.CONF.dry_run
|
1112
1127
|
):
|
@@ -37,7 +37,6 @@ def main(
|
|
37
37
|
),
|
38
38
|
minio_bucket: str = typer.Option("openstack-images", help="Minio bucket"),
|
39
39
|
):
|
40
|
-
|
41
40
|
if debug:
|
42
41
|
level = "DEBUG"
|
43
42
|
else:
|
@@ -51,6 +50,18 @@ def main(
|
|
51
50
|
logger.remove()
|
52
51
|
logger.add(sys.stderr, format=log_fmt, level=level, colorize=True)
|
53
52
|
|
53
|
+
client = Minio(
|
54
|
+
minio_server,
|
55
|
+
access_key=minio_access_key,
|
56
|
+
secret_key=minio_secret_key,
|
57
|
+
)
|
58
|
+
|
59
|
+
result = client.bucket_exists(minio_bucket)
|
60
|
+
if not result:
|
61
|
+
logger.error(f"Create bucket '{minio_bucket}' first")
|
62
|
+
if not dry_run:
|
63
|
+
sys.exit(1)
|
64
|
+
|
54
65
|
onlyfiles = []
|
55
66
|
for f in listdir(images):
|
56
67
|
if isfile(join(images, f)):
|
@@ -58,24 +69,17 @@ def main(
|
|
58
69
|
onlyfiles.append(f)
|
59
70
|
|
60
71
|
all_images = []
|
61
|
-
for file in onlyfiles:
|
72
|
+
for file in [x for x in onlyfiles if x.endswith(".yml")]:
|
73
|
+
logger.info(f"Processing file {file}")
|
62
74
|
with open(join(images, file)) as fp:
|
63
75
|
data = yaml.load(fp, Loader=yaml.SafeLoader)
|
64
76
|
for image in data.get("images"):
|
65
77
|
logger.debug(f"Adding {image['name']} to the list of images")
|
66
78
|
all_images.append(image)
|
67
79
|
|
68
|
-
client = Minio(
|
69
|
-
minio_server,
|
70
|
-
access_key=minio_access_key,
|
71
|
-
secret_key=minio_secret_key,
|
72
|
-
)
|
73
|
-
|
74
|
-
result = client.bucket_exists(minio_bucket)
|
75
|
-
if not result:
|
76
|
-
logger.error(f"Create bucket '{minio_bucket}' first")
|
77
|
-
|
78
80
|
for image in all_images:
|
81
|
+
logger.info(f"Processing image {image['name']}")
|
82
|
+
|
79
83
|
if "versions" not in image:
|
80
84
|
continue
|
81
85
|
|
@@ -105,31 +109,32 @@ def main(
|
|
105
109
|
|
106
110
|
try:
|
107
111
|
client.stat_object(minio_bucket, os.path.join(dirname, filename))
|
108
|
-
logger.info(f"
|
112
|
+
logger.info(f"File {filename} available in bucket {dirname}")
|
109
113
|
except S3Error:
|
110
|
-
logger.info(f"
|
114
|
+
logger.info(f"File {filename} not yet available in bucket {dirname}")
|
111
115
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
116
|
+
if not isfile(os.path.basename(path.path)):
|
117
|
+
logger.info(f"Downloading {version['source']}")
|
118
|
+
response = requests.get(
|
119
|
+
version["source"], stream=True, allow_redirects=True
|
120
|
+
)
|
121
|
+
with open(os.path.basename(path.path), "wb") as fp:
|
122
|
+
shutil.copyfileobj(response.raw, fp)
|
123
|
+
del response
|
119
124
|
|
120
125
|
if fileextension in [".bz2", ".zip", ".xz", ".gz"]:
|
121
|
-
logger.info(f"Decompressing
|
126
|
+
logger.info(f"Decompressing {os.path.basename(path.path)}")
|
122
127
|
patoolib.extract_archive(os.path.basename(path.path), outdir=".")
|
123
128
|
os.remove(os.path.basename(path.path))
|
124
129
|
|
125
130
|
if not dry_run:
|
126
|
-
logger.info(f"Uploading
|
131
|
+
logger.info(f"Uploading {filename} to bucket {dirname}")
|
127
132
|
client.fput_object(
|
128
133
|
minio_bucket, os.path.join(dirname, filename), filename
|
129
134
|
)
|
130
135
|
else:
|
131
136
|
logger.info(
|
132
|
-
f"Not uploading
|
137
|
+
f"Not uploading {filename} to bucket {dirname} (dry-run enabled)"
|
133
138
|
)
|
134
139
|
|
135
140
|
os.remove(filename)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: openstack-image-manager
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20240211.0
|
4
4
|
Summary: OpenStack image manager
|
5
5
|
Author-email: OSISM community <info@osism.tech>
|
6
6
|
License: Apache License
|
@@ -223,14 +223,14 @@ Requires-Python: >=3.8
|
|
223
223
|
Description-Content-Type: text/markdown
|
224
224
|
License-File: LICENSE
|
225
225
|
Requires-Dist: loguru ==0.7.2
|
226
|
-
Requires-Dist: minio ==7.2.
|
226
|
+
Requires-Dist: minio ==7.2.3
|
227
227
|
Requires-Dist: munch ==4.0.0
|
228
228
|
Requires-Dist: natsort ==8.4.0
|
229
|
-
Requires-Dist: openstacksdk ==2.
|
230
|
-
Requires-Dist: paramiko ==3.
|
229
|
+
Requires-Dist: openstacksdk ==2.1.0
|
230
|
+
Requires-Dist: paramiko ==3.4.0
|
231
231
|
Requires-Dist: patool ==1.15.0
|
232
232
|
Requires-Dist: requests ==2.31.0
|
233
|
-
Requires-Dist: ruamel.yaml ==0.18.
|
233
|
+
Requires-Dist: ruamel.yaml ==0.18.6
|
234
234
|
Requires-Dist: tabulate ==0.9.0
|
235
235
|
Requires-Dist: typer[all] ==0.9.0
|
236
236
|
Requires-Dist: yamale ==4.0.4
|
@@ -0,0 +1,11 @@
|
|
1
|
+
openstack_image_manager/__init__.py,sha256=z6lQHDMfCV8IkUz5pM1QYfQ37O2Rdy82jYovN8N9DIU,240
|
2
|
+
openstack_image_manager/manage.py,sha256=biCPWdV5-_4rI_6DtieOWe_HXrcnWP67hs1RzwnOdts,47688
|
3
|
+
openstack_image_manager/mirror.py,sha256=_84-vAFfF1a3IuDBzluwTJWo20cyJEJaNIcxn3X87QI,4737
|
4
|
+
openstack_image_manager/table.py,sha256=cZ6Xuqp8uh2V5_uzT4KwWoiLAUdvsPZkrPjOXdxFeU4,1080
|
5
|
+
openstack_image_manager/update.py,sha256=RBH47LjWsWVKaYVwBxlDviSSZY6RxUyUQdrwtKG5bKs,10545
|
6
|
+
openstack_image_manager-0.20240211.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
7
|
+
openstack_image_manager-0.20240211.0.dist-info/METADATA,sha256=aTZ0rpPWgsWJYlhdQd8JCfIV5wKn2hMClixCSjfm49U,14876
|
8
|
+
openstack_image_manager-0.20240211.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
9
|
+
openstack_image_manager-0.20240211.0.dist-info/entry_points.txt,sha256=AEHPHHHZ3jAZfpvaI5ZzLi3DHb9vGQwL7TJcw_G_5nc,80
|
10
|
+
openstack_image_manager-0.20240211.0.dist-info/top_level.txt,sha256=iLfREddId51T97Dr9IGRQtJXKJgVy1PB6uHCaQk1j44,24
|
11
|
+
openstack_image_manager-0.20240211.0.dist-info/RECORD,,
|
@@ -1,11 +0,0 @@
|
|
1
|
-
openstack_image_manager/__init__.py,sha256=z6lQHDMfCV8IkUz5pM1QYfQ37O2Rdy82jYovN8N9DIU,240
|
2
|
-
openstack_image_manager/manage.py,sha256=MCJZH9cg9_Zx46ATjzWrPyPVGwN-lJTAh8lcLihybpw,46990
|
3
|
-
openstack_image_manager/mirror.py,sha256=rscIJO5c1ZDL5ejHKfHKJKOVSE_xTzxNBk006ytZyZk,4442
|
4
|
-
openstack_image_manager/table.py,sha256=cZ6Xuqp8uh2V5_uzT4KwWoiLAUdvsPZkrPjOXdxFeU4,1080
|
5
|
-
openstack_image_manager/update.py,sha256=QCWbubWLao0UcADZnmM7rcNlWo02PLezwQbE1Tr8j0c,10546
|
6
|
-
openstack_image_manager-0.20231212.0.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
7
|
-
openstack_image_manager-0.20231212.0.dist-info/METADATA,sha256=VBYcpHP6uF435ryY58smiOhIlEDUHBSPDOm_uTCHidU,14876
|
8
|
-
openstack_image_manager-0.20231212.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
9
|
-
openstack_image_manager-0.20231212.0.dist-info/entry_points.txt,sha256=AEHPHHHZ3jAZfpvaI5ZzLi3DHb9vGQwL7TJcw_G_5nc,80
|
10
|
-
openstack_image_manager-0.20231212.0.dist-info/top_level.txt,sha256=iLfREddId51T97Dr9IGRQtJXKJgVy1PB6uHCaQk1j44,24
|
11
|
-
openstack_image_manager-0.20231212.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|