genesis-devtools 0.2.3__tar.gz → 0.2.4__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.
- genesis_devtools-0.2.4/ChangeLog +7 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/PKG-INFO +1 -1
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/builder/base.py +4 -1
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/builder/builder.py +53 -12
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/builder/packer.py +5 -7
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/cmd/cli.py +2 -4
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/PKG-INFO +1 -1
- genesis_devtools-0.2.4/genesis_devtools.egg-info/pbr.json +1 -0
- genesis_devtools-0.2.3/ChangeLog +0 -7
- genesis_devtools-0.2.3/genesis_devtools.egg-info/pbr.json +0 -1
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/.github/workflows/publish-to-pypi.yml +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/.github/workflows/tests.yml +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/AUTHORS +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/LICENSE +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/README.md +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/data/stands/stand-small.yaml +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/genesis.yaml +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/bootstrap.sh +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/genesis-bootstrap.service +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/genesis-root-autoresize.service +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/install_genesis_base.sh +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/root_autoresize.sh +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/backup.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/builder/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/builder/dependency.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/cmd/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/constants.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/driver/base.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/driver/libvirt.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/libvirt/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/libvirt/constants.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/libvirt/libvirt.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/logger.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/debian_12/debian-12.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/debian_12/plugins.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_base/genesis-base.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_base/plugins.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_core/genesis-core.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_core/plugins.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_custom/genesis-custom.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/genesis_custom/plugins.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/ubuntu_24/plugins.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/ubuntu_24/ubuntu-24.pkr.hcl +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/stand/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/stand/models.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/__init__.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/conftest.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_basic.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_builder.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_dependency.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_packer.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/utils.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/SOURCES.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/dependency_links.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/entry_points.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/not-zip-safe +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/requires.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/top_level.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/requirements.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/setup.cfg +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/setup.py +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/test-requirements.txt +0 -0
- {genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/tox.ini +0 -0
|
@@ -131,6 +131,7 @@ class AbstractImageBuilder(abc.ABC):
|
|
|
131
131
|
image: Image,
|
|
132
132
|
deps: tp.List[AbstractDependency],
|
|
133
133
|
developer_keys: tp.Optional[str] = None,
|
|
134
|
+
output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
134
135
|
) -> None:
|
|
135
136
|
"""Actions to prepare the environment for building the image."""
|
|
136
137
|
|
|
@@ -157,9 +158,10 @@ class AbstractImageBuilder(abc.ABC):
|
|
|
157
158
|
image: Image,
|
|
158
159
|
deps: tp.List[AbstractDependency],
|
|
159
160
|
developer_keys: tp.Optional[str] = None,
|
|
161
|
+
output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
160
162
|
) -> None:
|
|
161
163
|
"""Run the image builder."""
|
|
162
|
-
self.pre_build(image_dir, image, deps, developer_keys)
|
|
164
|
+
self.pre_build(image_dir, image, deps, developer_keys, output_dir)
|
|
163
165
|
self.build(image_dir, image, developer_keys)
|
|
164
166
|
self.post_build(image_dir, image)
|
|
165
167
|
|
|
@@ -176,6 +178,7 @@ class DummyImageBuilder(AbstractImageBuilder):
|
|
|
176
178
|
image: Image,
|
|
177
179
|
deps: tp.List[AbstractDependency],
|
|
178
180
|
developer_keys: tp.Optional[str] = None,
|
|
181
|
+
output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
179
182
|
) -> None:
|
|
180
183
|
"""Actions to prepare the environment for building the image."""
|
|
181
184
|
return None
|
|
@@ -17,9 +17,12 @@ from __future__ import annotations
|
|
|
17
17
|
|
|
18
18
|
import typing as tp
|
|
19
19
|
import tempfile
|
|
20
|
+
import shutil
|
|
21
|
+
import os
|
|
20
22
|
|
|
21
23
|
from genesis_devtools.builder import base
|
|
22
24
|
from genesis_devtools.logger import AbstractLogger, DummyLogger
|
|
25
|
+
from genesis_devtools import constants as c
|
|
23
26
|
|
|
24
27
|
|
|
25
28
|
class SimpleBuilder:
|
|
@@ -35,6 +38,7 @@ class SimpleBuilder:
|
|
|
35
38
|
elements: tp.List[base.Element],
|
|
36
39
|
image_builder: base.AbstractImageBuilder,
|
|
37
40
|
logger: tp.Optional[AbstractLogger] = None,
|
|
41
|
+
images_output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
38
42
|
) -> None:
|
|
39
43
|
super().__init__()
|
|
40
44
|
self._deps = deps
|
|
@@ -42,6 +46,44 @@ class SimpleBuilder:
|
|
|
42
46
|
self._image_builder = image_builder
|
|
43
47
|
self._work_dir = work_dir
|
|
44
48
|
self._logger = logger or DummyLogger()
|
|
49
|
+
self._images_output_dir = images_output_dir
|
|
50
|
+
|
|
51
|
+
def _build_image(
|
|
52
|
+
self,
|
|
53
|
+
img: base.Image,
|
|
54
|
+
build_dir: str | None,
|
|
55
|
+
output_dir: str,
|
|
56
|
+
developer_keys: str,
|
|
57
|
+
) -> None:
|
|
58
|
+
# The build_dir is used only for debugging purposes to observe
|
|
59
|
+
# the content of the image. In production, the image is built
|
|
60
|
+
# in a temporary directory.
|
|
61
|
+
if build_dir is not None:
|
|
62
|
+
self._image_builder.run(
|
|
63
|
+
build_dir,
|
|
64
|
+
img,
|
|
65
|
+
self._deps,
|
|
66
|
+
developer_keys,
|
|
67
|
+
output_dir,
|
|
68
|
+
)
|
|
69
|
+
else:
|
|
70
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
71
|
+
self._image_builder.run(
|
|
72
|
+
temp_dir,
|
|
73
|
+
img,
|
|
74
|
+
self._deps,
|
|
75
|
+
developer_keys,
|
|
76
|
+
output_dir,
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Move the image to the final location
|
|
80
|
+
if not os.path.exists(self._images_output_dir):
|
|
81
|
+
os.makedirs(self._images_output_dir)
|
|
82
|
+
|
|
83
|
+
shutil.move(
|
|
84
|
+
os.path.join(output_dir, f"{img.name}.{img.format}"),
|
|
85
|
+
self._images_output_dir,
|
|
86
|
+
)
|
|
45
87
|
|
|
46
88
|
def fetch_dependency(self, deps_dir: str) -> None:
|
|
47
89
|
"""Fetch common dependencies for elements."""
|
|
@@ -63,19 +105,15 @@ class SimpleBuilder:
|
|
|
63
105
|
for img in e.images:
|
|
64
106
|
if build_suffix:
|
|
65
107
|
img.name = f"{img.name}.{build_suffix}"
|
|
108
|
+
tmp_img_output = f"_tmp_{img.name}-output"
|
|
66
109
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if build_dir is not None:
|
|
71
|
-
self._image_builder.run(
|
|
72
|
-
build_dir, img, self._deps, developer_keys
|
|
110
|
+
try:
|
|
111
|
+
self._build_image(
|
|
112
|
+
img, build_dir, tmp_img_output, developer_keys
|
|
73
113
|
)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
temp_dir, img, self._deps, developer_keys
|
|
78
|
-
)
|
|
114
|
+
finally:
|
|
115
|
+
if os.path.exists(tmp_img_output):
|
|
116
|
+
shutil.rmtree(tmp_img_output)
|
|
79
117
|
|
|
80
118
|
@classmethod
|
|
81
119
|
def from_config(
|
|
@@ -84,6 +122,7 @@ class SimpleBuilder:
|
|
|
84
122
|
build_config: tp.Dict[str, tp.Any],
|
|
85
123
|
image_builder: base.AbstractImageBuilder,
|
|
86
124
|
logger: tp.Optional[AbstractLogger] = None,
|
|
125
|
+
images_output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
87
126
|
) -> "SimpleBuilder":
|
|
88
127
|
"""Create a builder from configuration."""
|
|
89
128
|
# Prepare dependencies entries but do not fetch them
|
|
@@ -107,4 +146,6 @@ class SimpleBuilder:
|
|
|
107
146
|
if not elements:
|
|
108
147
|
raise ValueError("No elements found in configuration")
|
|
109
148
|
|
|
110
|
-
return cls(
|
|
149
|
+
return cls(
|
|
150
|
+
work_dir, deps, elements, image_builder, logger, images_output_dir
|
|
151
|
+
)
|
|
@@ -90,7 +90,7 @@ class PackerVariable(tp.NamedTuple):
|
|
|
90
90
|
return self.var_tmpl.format(**data)
|
|
91
91
|
|
|
92
92
|
@classmethod
|
|
93
|
-
def variable_file_content(cls, overrides:
|
|
93
|
+
def variable_file_content(cls, overrides: dict[str, tp.Any]) -> str:
|
|
94
94
|
if not overrides:
|
|
95
95
|
return ""
|
|
96
96
|
|
|
@@ -116,12 +116,9 @@ class PackerBuilder(base.DummyImageBuilder):
|
|
|
116
116
|
Packer image builder that uses Packer tools to build images.
|
|
117
117
|
"""
|
|
118
118
|
|
|
119
|
-
def __init__(
|
|
120
|
-
self, output_dir: str, logger: AbstractLogger | None = None
|
|
121
|
-
) -> None:
|
|
119
|
+
def __init__(self, logger: AbstractLogger | None = None) -> None:
|
|
122
120
|
super().__init__()
|
|
123
121
|
self._logger = logger or DummyLogger()
|
|
124
|
-
self._output_dir = output_dir
|
|
125
122
|
|
|
126
123
|
def _resolve_envs(self, envs: list[str]) -> str:
|
|
127
124
|
if len(envs) == 0:
|
|
@@ -144,8 +141,9 @@ class PackerBuilder(base.DummyImageBuilder):
|
|
|
144
141
|
self,
|
|
145
142
|
image_dir: str,
|
|
146
143
|
image: base.Image,
|
|
147
|
-
deps:
|
|
144
|
+
deps: list[base.AbstractDependency],
|
|
148
145
|
developer_keys: str | None = None,
|
|
146
|
+
output_dir: str = c.DEF_GEN_OUTPUT_DIR_NAME,
|
|
149
147
|
) -> None:
|
|
150
148
|
"""Actions to prepare the environment for building the image."""
|
|
151
149
|
|
|
@@ -195,7 +193,7 @@ class PackerBuilder(base.DummyImageBuilder):
|
|
|
195
193
|
file_provisioners="\n".join(provisioners),
|
|
196
194
|
script=image.script,
|
|
197
195
|
developer_keys=developer_keys_prov,
|
|
198
|
-
output_directory=
|
|
196
|
+
output_directory=output_dir,
|
|
199
197
|
envs=envs,
|
|
200
198
|
)
|
|
201
199
|
|
|
@@ -133,7 +133,7 @@ def build_cmd(
|
|
|
133
133
|
return
|
|
134
134
|
|
|
135
135
|
logger = ClickLogger()
|
|
136
|
-
packer_image_builder = PackerBuilder(
|
|
136
|
+
packer_image_builder = PackerBuilder(logger)
|
|
137
137
|
|
|
138
138
|
# Path where genesis.yaml configuration file is located
|
|
139
139
|
work_dir = os.path.abspath(
|
|
@@ -147,7 +147,7 @@ def build_cmd(
|
|
|
147
147
|
|
|
148
148
|
for _, build in builds.items():
|
|
149
149
|
builder = SimpleBuilder.from_config(
|
|
150
|
-
work_dir, build, packer_image_builder, logger
|
|
150
|
+
work_dir, build, packer_image_builder, logger, output_dir
|
|
151
151
|
)
|
|
152
152
|
with tempfile.TemporaryDirectory() as temp_dir:
|
|
153
153
|
builder.fetch_dependency(deps_dir or temp_dir)
|
|
@@ -210,8 +210,6 @@ def build_cmd(
|
|
|
210
210
|
@click.option(
|
|
211
211
|
"-f",
|
|
212
212
|
"--force",
|
|
213
|
-
default=False,
|
|
214
|
-
type=bool,
|
|
215
213
|
show_default=True,
|
|
216
214
|
is_flag=True,
|
|
217
215
|
help="Rebuild if the output already exists",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "5308a95", "is_release": false}
|
genesis_devtools-0.2.3/ChangeLog
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "5ae17c1", "is_release": false}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis/images/genesis_base/root_autoresize.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/libvirt/__init__.py
RENAMED
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/infra/libvirt/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/debian_12/plugins.pkr.hcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/packer/ubuntu_24/plugins.pkr.hcl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_builder.py
RENAMED
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_dependency.py
RENAMED
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools/tests/unit/test_packer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{genesis_devtools-0.2.3 → genesis_devtools-0.2.4}/genesis_devtools.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|