openstack-image-manager 0.20240723.0__tar.gz → 0.20240828.0__tar.gz
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-0.20240723.0/openstack_image_manager.egg-info → openstack_image_manager-0.20240828.0}/PKG-INFO +5 -5
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/gardenlinux.yml +15 -10
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/schema.yaml +1 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager/main.py +38 -18
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0/openstack_image_manager.egg-info}/PKG-INFO +5 -5
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager.egg-info/requires.txt +4 -4
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/requirements.txt +4 -4
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/LICENSE +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/MANIFEST.in +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/README.md +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/almalinux.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/centos.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/cirros.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/clearlinux.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/debian.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/fedora.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/flatcar.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/kubernetes.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/opensuse.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/opnsense.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/osism.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/rockylinux.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/talos.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/ubuntu.yml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager/__init__.py +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager.egg-info/SOURCES.txt +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager.egg-info/dependency_links.txt +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager.egg-info/entry_points.txt +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/openstack_image_manager.egg-info/top_level.txt +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/pyproject.toml +0 -0
- {openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: openstack-image-manager
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20240828.0
|
4
4
|
Summary: OpenStack image manager
|
5
5
|
Author-email: OSISM community <info@osism.tech>
|
6
6
|
License: Apache License
|
@@ -223,16 +223,16 @@ 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.8
|
227
227
|
Requires-Dist: munch==4.0.0
|
228
228
|
Requires-Dist: natsort==8.4.0
|
229
229
|
Requires-Dist: openstacksdk==3.3.0
|
230
|
-
Requires-Dist: paramiko==3.4.
|
231
|
-
Requires-Dist: patool==2.
|
230
|
+
Requires-Dist: paramiko==3.4.1
|
231
|
+
Requires-Dist: patool==2.4.0
|
232
232
|
Requires-Dist: requests==2.32.3
|
233
233
|
Requires-Dist: ruamel.yaml==0.18.6
|
234
234
|
Requires-Dist: tabulate==0.9.0
|
235
|
-
Requires-Dist: typer[all]==0.12.
|
235
|
+
Requires-Dist: typer[all]==0.12.5
|
236
236
|
Requires-Dist: yamale==5.2.1
|
237
237
|
|
238
238
|
# openstack-image-manager
|
@@ -23,18 +23,23 @@ images:
|
|
23
23
|
provided_until: none
|
24
24
|
tags: []
|
25
25
|
versions:
|
26
|
-
- version: '1443.2'
|
27
|
-
url: https://github.com/gardenlinux/gardenlinux/releases/download/1443.2/openstack-gardener_prod-amd64-1443.2-7c14ae22.tar.xz
|
28
|
-
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1443.2/openstack-gardener_prod-amd64-1443.2-7c14ae22.qcow2
|
29
|
-
checksum: "sha256:09e43e9847797786e4ef642c5b2de52b3ccab3dd3c74fc6acc4c060642a74982"
|
30
|
-
build_date: 2024-04-02
|
31
|
-
- version: '1443.3'
|
32
|
-
url: https://github.com/gardenlinux/gardenlinux/releases/download/1443.3/openstack-gardener_prod-amd64-1443.3-c261f887.tar.xz
|
33
|
-
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1443.3/openstack-gardener_prod-amd64-1443.3-c261f887.qcow2
|
34
|
-
checksum: "sha256:cb0f9b8027f7f5aca4b30e51e6c5e32f5c19b1c46f8501ca90bc5cac4e66f9ec"
|
35
|
-
build_date: 2024-04-11
|
36
26
|
- version: '1443.7'
|
37
27
|
url: https://github.com/gardenlinux/gardenlinux/releases/download/1443.7/openstack-gardener_prod-amd64-1443.7-34b02385.tar.xz
|
38
28
|
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1443.7/openstack-gardener_prod-amd64-1443.7-34b02385.qcow2
|
39
29
|
checksum: "sha256:28bd709693e58cbcee41791b9446041eaaa36020a549a18390980b298c7ae5bd"
|
40
30
|
build_date: 2024-06-19
|
31
|
+
- version: '1443.10'
|
32
|
+
url: https://github.com/gardenlinux/gardenlinux/releases/download/1443.10/openstack-gardener_prod-amd64-1443.10-8d098305.tar.xz
|
33
|
+
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1443.10/openstack-gardener_prod-amd64-1443.10-8d098305.qcow2
|
34
|
+
checksum: "sha256:fb85ca67608638167b876df2988f927815c00c4a4b3e6d11d20565aa55b0f268"
|
35
|
+
build_date: 2024-07-23
|
36
|
+
- version: '1592.0'
|
37
|
+
url: https://github.com/gardenlinux/gardenlinux/releases/download/1592.0/openstack-gardener_prod-amd64-1592.0-0cc2b85d.tar.xz
|
38
|
+
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1592.0/openstack-gardener_prod-amd64-1592.0-0cc2b85d.qcow2
|
39
|
+
checksum: "sha256:43fbd3af61b6c531bb32fb4b74a09371c538839e3afab6ca7fe023e854c40e67"
|
40
|
+
build_date: 2024-08-12
|
41
|
+
- version: '1592.1'
|
42
|
+
url: https://github.com/gardenlinux/gardenlinux/releases/download/1592.1/openstack-gardener_prod-amd64-1592.1-ec945aa9.tar.xz
|
43
|
+
mirror_url: https://swift.services.a.regiocloud.tech/swift/v1/AUTH_b182637428444b9aa302bb8d5a5a418c/openstack-images/gardenlinux/1592.1/openstack-gardener_prod-amd64-1592.1-ec945aa9.qcow2
|
44
|
+
checksum: "sha256:990f4843f4bb08dd5972710fb8909d4b3d34d53d1adecbec477f8c2e6bbc0db4"
|
45
|
+
build_date: 2024-08-22
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/schema.yaml
RENAMED
@@ -17,6 +17,7 @@ image:
|
|
17
17
|
password: str(required=False)
|
18
18
|
shortname: str(required=False)
|
19
19
|
status: enum('active', 'deactivated')
|
20
|
+
separator: str(required=False)
|
20
21
|
tags: list(str())
|
21
22
|
versions: list(include('versions'))
|
22
23
|
visibility: enum('public', 'private', 'community', 'shared')
|
@@ -92,9 +92,14 @@ class ImageManager:
|
|
92
92
|
"project", "--share-type", help="Share - Type: 'project' or 'domain'"
|
93
93
|
),
|
94
94
|
check: bool = typer.Option(
|
95
|
+
True,
|
96
|
+
"--check/--no-check",
|
97
|
+
help="Check the local image definitions against the SCS Image Metadata Standard (and process the images)",
|
98
|
+
),
|
99
|
+
check_only: bool = typer.Option(
|
95
100
|
False,
|
96
|
-
"--check",
|
97
|
-
help="
|
101
|
+
"--check-only",
|
102
|
+
help="Quit after checking the image definitions against the SCS Image Metadata Standard",
|
98
103
|
),
|
99
104
|
):
|
100
105
|
self.CONF = Munch.fromDict(locals())
|
@@ -209,11 +214,14 @@ class ImageManager:
|
|
209
214
|
)
|
210
215
|
|
211
216
|
# check local image definitions with yamale
|
212
|
-
if self.CONF.check:
|
217
|
+
if self.CONF.check or self.CONF.check_only:
|
213
218
|
self.validate_yaml_schema()
|
214
219
|
|
220
|
+
if self.CONF.check_only:
|
221
|
+
return
|
222
|
+
|
215
223
|
# share image (previously share.py)
|
216
|
-
|
224
|
+
if self.CONF.share_image:
|
217
225
|
self.create_connection()
|
218
226
|
image = self.conn.get_image(self.CONF.share_image)
|
219
227
|
|
@@ -355,6 +363,9 @@ class ImageManager:
|
|
355
363
|
if "image_description" not in image["meta"]:
|
356
364
|
image["meta"]["image_description"] = image["name"]
|
357
365
|
|
366
|
+
if "image_name" not in image["meta"]:
|
367
|
+
image["meta"]["image_name"] = image["name"]
|
368
|
+
|
358
369
|
existing_images, imported_image, previous_image = self.process_image(
|
359
370
|
image, versions, sorted_versions, image["meta"].copy()
|
360
371
|
)
|
@@ -362,7 +373,7 @@ class ImageManager:
|
|
362
373
|
|
363
374
|
if imported_image and image["multi"]:
|
364
375
|
self.rename_images(
|
365
|
-
image
|
376
|
+
image, sorted_versions, imported_image, previous_image
|
366
377
|
)
|
367
378
|
|
368
379
|
return managed_images
|
@@ -511,11 +522,14 @@ class ImageManager:
|
|
511
522
|
previous_image = None
|
512
523
|
upstream_checksum = ""
|
513
524
|
|
525
|
+
separator = image.get("separator", " ")
|
526
|
+
image_name = image["name"]
|
527
|
+
|
514
528
|
for version in sorted_versions:
|
515
529
|
if image["multi"]:
|
516
|
-
name = f"{
|
530
|
+
name = f"{image_name}{separator}({version})"
|
517
531
|
else:
|
518
|
-
name = f"{
|
532
|
+
name = f"{image_name}{separator}{version}"
|
519
533
|
|
520
534
|
logger.info(f"Processing image '{name}'")
|
521
535
|
logger.debug(f"Checking existence of '{name}'")
|
@@ -550,7 +564,7 @@ class ImageManager:
|
|
550
564
|
and version == sorted_versions[-1]
|
551
565
|
and not existence
|
552
566
|
):
|
553
|
-
previous = f"{image['name']}
|
567
|
+
previous = f"{image['name']}{separator}({sorted_versions[-2]})"
|
554
568
|
existence = previous in cloud_images and image["name"] in cloud_images
|
555
569
|
|
556
570
|
elif (
|
@@ -825,7 +839,7 @@ class ImageManager:
|
|
825
839
|
|
826
840
|
def rename_images(
|
827
841
|
self,
|
828
|
-
|
842
|
+
image: dict,
|
829
843
|
sorted_versions: list,
|
830
844
|
imported_image: Image,
|
831
845
|
previous_image: Image,
|
@@ -834,16 +848,18 @@ class ImageManager:
|
|
834
848
|
Rename outdated images in Glance (only applies to images of type multi)
|
835
849
|
|
836
850
|
Params:
|
837
|
-
|
851
|
+
image: image dict from images.yml
|
838
852
|
sorted_versions: list with all sorted image versions
|
839
853
|
imported_image: the newly imported image
|
840
854
|
previous_image: the previous latest image
|
841
855
|
"""
|
856
|
+
name = image["name"]
|
857
|
+
separator = image.get("separator", " ")
|
842
858
|
cloud_images = self.get_images()
|
843
859
|
|
844
860
|
if len(sorted_versions) > 1:
|
845
|
-
latest = f"{name}
|
846
|
-
previous_latest = f"{name}
|
861
|
+
latest = f"{name}{separator}({sorted_versions[-1]})"
|
862
|
+
previous_latest = f"{name}{separator}({sorted_versions[-2]})"
|
847
863
|
|
848
864
|
if name in cloud_images and previous_latest not in cloud_images:
|
849
865
|
logger.info(f"Renaming {name} to {previous_latest}")
|
@@ -865,7 +881,7 @@ class ImageManager:
|
|
865
881
|
)
|
866
882
|
create_date = create_date.replace("-", "")
|
867
883
|
|
868
|
-
previous_latest = f"{name}
|
884
|
+
previous_latest = f"{name}{separator}({create_date})"
|
869
885
|
|
870
886
|
logger.info(
|
871
887
|
f"Setting internal_version: {create_date} for {previous_latest}"
|
@@ -874,9 +890,7 @@ class ImageManager:
|
|
874
890
|
previous_image.id, **{"internal_version": create_date}
|
875
891
|
)
|
876
892
|
else:
|
877
|
-
previous_latest = (
|
878
|
-
f"{name} ({previous_image['properties']['internal_version']})"
|
879
|
-
)
|
893
|
+
previous_latest = f"{name}{separator}({previous_image['properties']['internal_version']})"
|
880
894
|
|
881
895
|
logger.info(f"Renaming old latest '{name}' to '{previous_latest}'")
|
882
896
|
self.conn.image.update_image(previous_image.id, name=previous_latest)
|
@@ -885,7 +899,7 @@ class ImageManager:
|
|
885
899
|
self.conn.image.update_image(imported_image.id, name=name)
|
886
900
|
|
887
901
|
elif len(sorted_versions) == 1:
|
888
|
-
latest = f"{name}
|
902
|
+
latest = f"{name}{separator}({sorted_versions[-1]})"
|
889
903
|
|
890
904
|
if latest in cloud_images:
|
891
905
|
logger.info(f"Renaming {latest} to {name}")
|
@@ -1102,23 +1116,29 @@ class ImageManager:
|
|
1102
1116
|
"""Validate all image.yaml files against the SCS Metadata spec"""
|
1103
1117
|
schema = yamale.make_schema("etc/schema.yaml")
|
1104
1118
|
try:
|
1119
|
+
validation_error_log = []
|
1105
1120
|
for file in os.listdir(self.CONF.images):
|
1106
1121
|
try:
|
1107
1122
|
data = yamale.make_data(self.CONF.images + file)
|
1108
1123
|
yamale.validate(schema, data)
|
1109
1124
|
except YamaleError as e:
|
1110
|
-
self.exit_with_error = True
|
1111
1125
|
for result in e.results:
|
1112
1126
|
logger.error(
|
1113
1127
|
f"Error validating data '{result.data}' with '{result.schema}'"
|
1114
1128
|
)
|
1115
1129
|
for error in result.errors:
|
1116
1130
|
logger.error(f"\t{error}")
|
1131
|
+
validation_error_log.append((file, error))
|
1117
1132
|
else:
|
1118
1133
|
logger.debug(f"Image file {file} is valid")
|
1119
1134
|
except FileNotFoundError:
|
1120
1135
|
logger.error(f"Invalid path '{self.CONF.images}'")
|
1121
1136
|
|
1137
|
+
if len(validation_error_log) > 0:
|
1138
|
+
sys.exit(
|
1139
|
+
f"Image definition validation failed with these error(s): {validation_error_log}"
|
1140
|
+
)
|
1141
|
+
|
1122
1142
|
def share_image_with_project(self, image, project):
|
1123
1143
|
member = self.conn.image.find_member(project.id, image.id)
|
1124
1144
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: openstack-image-manager
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20240828.0
|
4
4
|
Summary: OpenStack image manager
|
5
5
|
Author-email: OSISM community <info@osism.tech>
|
6
6
|
License: Apache License
|
@@ -223,16 +223,16 @@ 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.8
|
227
227
|
Requires-Dist: munch==4.0.0
|
228
228
|
Requires-Dist: natsort==8.4.0
|
229
229
|
Requires-Dist: openstacksdk==3.3.0
|
230
|
-
Requires-Dist: paramiko==3.4.
|
231
|
-
Requires-Dist: patool==2.
|
230
|
+
Requires-Dist: paramiko==3.4.1
|
231
|
+
Requires-Dist: patool==2.4.0
|
232
232
|
Requires-Dist: requests==2.32.3
|
233
233
|
Requires-Dist: ruamel.yaml==0.18.6
|
234
234
|
Requires-Dist: tabulate==0.9.0
|
235
|
-
Requires-Dist: typer[all]==0.12.
|
235
|
+
Requires-Dist: typer[all]==0.12.5
|
236
236
|
Requires-Dist: yamale==5.2.1
|
237
237
|
|
238
238
|
# openstack-image-manager
|
@@ -1,12 +1,12 @@
|
|
1
1
|
loguru==0.7.2
|
2
|
-
minio==7.2.
|
2
|
+
minio==7.2.8
|
3
3
|
munch==4.0.0
|
4
4
|
natsort==8.4.0
|
5
5
|
openstacksdk==3.3.0
|
6
|
-
paramiko==3.4.
|
7
|
-
patool==2.
|
6
|
+
paramiko==3.4.1
|
7
|
+
patool==2.4.0
|
8
8
|
requests==2.32.3
|
9
9
|
ruamel.yaml==0.18.6
|
10
10
|
tabulate==0.9.0
|
11
|
-
typer[all]==0.12.
|
11
|
+
typer[all]==0.12.5
|
12
12
|
yamale==5.2.1
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/requirements.txt
RENAMED
@@ -1,12 +1,12 @@
|
|
1
1
|
loguru==0.7.2
|
2
|
-
minio==7.2.
|
2
|
+
minio==7.2.8
|
3
3
|
munch==4.0.0
|
4
4
|
natsort==8.4.0
|
5
5
|
openstacksdk==3.3.0
|
6
|
-
paramiko==3.4.
|
7
|
-
patool==2.
|
6
|
+
paramiko==3.4.1
|
7
|
+
patool==2.4.0
|
8
8
|
requests==2.32.3
|
9
9
|
ruamel.yaml==0.18.6
|
10
10
|
tabulate==0.9.0
|
11
|
-
typer[all]==0.12.
|
11
|
+
typer[all]==0.12.5
|
12
12
|
yamale==5.2.1
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/centos.yml
RENAMED
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/cirros.yml
RENAMED
File without changes
|
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/debian.yml
RENAMED
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/fedora.yml
RENAMED
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/flatcar.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/osism.yml
RENAMED
File without changes
|
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/talos.yml
RENAMED
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/etc/images/ubuntu.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{openstack_image_manager-0.20240723.0 → openstack_image_manager-0.20240828.0}/pyproject.toml
RENAMED
File without changes
|
File without changes
|