spaceforge 0.0.16__tar.gz → 0.0.18__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.
- {spaceforge-0.0.16 → spaceforge-0.0.18}/PKG-INFO +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/plugin.py +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/plugin.yaml +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/infracost/plugin.py +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/infracost/plugin.yaml +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/plugin.py +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/plugin.yaml +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/wiz/plugin.py +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/wiz/plugin.yaml +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/_version_scm.py +3 -3
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/plugin.py +13 -8
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin.py +7 -7
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/PKG-INFO +1 -1
- {spaceforge-0.0.16 → spaceforge-0.0.18}/.github/workflows/ci.yml +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/.github/workflows/release.yml +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/.gitignore +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/LICENSE +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/MANIFEST.in +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/README.md +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/go.mod +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/requirements.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/requirements.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/pyproject.toml +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/setup.cfg +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/setup.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/README.md +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/__init__.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/__main__.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/_version.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/cls.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/conftest.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/generator.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/runner.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/schema.json +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/templates/binary_install.sh.j2 +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/templates/ensure_spaceforge_and_run.sh.j2 +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_cls.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_binaries.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_core.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_hooks.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_parameters.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_file_operations.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_hooks.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_inheritance.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_cli.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_core.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_execution.py +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/SOURCES.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/dependency_links.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/entry_points.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/not-zip-safe +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/requires.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/top_level.txt +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/templates.go +0 -0
- {spaceforge-0.0.16 → spaceforge-0.0.18}/test.sh +0 -0
|
@@ -255,7 +255,7 @@ resource "spacelift_environment_variable" "__this" {
|
|
|
255
255
|
if "errors" in response:
|
|
256
256
|
self.logger.error(f"Error triggering stack preview for {stack_id}:", response["errors"])
|
|
257
257
|
else:
|
|
258
|
-
url = f"
|
|
258
|
+
url = f"{self.spacelift_domain}/stack/{stack_id}/run/{response['data']['runTrigger']['id']}"
|
|
259
259
|
markdown.append(f"- Triggered [stack preview]({url}) for {stack_id} with commit {tracked_commit}.")
|
|
260
260
|
|
|
261
261
|
if len(markdown) > 0:
|
|
@@ -409,7 +409,7 @@ contexts:
|
|
|
409
409
|
if "errors" in response:
|
|
410
410
|
self.logger.error(f"Error triggering stack preview for {stack_id}:", response["errors"])
|
|
411
411
|
else:
|
|
412
|
-
url = f"
|
|
412
|
+
url = f"{self.spacelift_domain}/stack/{stack_id}/run/{response['data']['runTrigger']['id']}"
|
|
413
413
|
markdown.append(f"- Triggered [stack preview]({url}) for {stack_id} with commit {tracked_commit}.")
|
|
414
414
|
|
|
415
415
|
if len(markdown) > 0:
|
|
@@ -21,7 +21,7 @@ contexts:
|
|
|
21
21
|
mounted_files:
|
|
22
22
|
- path: /mnt/workspace/plugins/infracost/plugin.py
|
|
23
23
|
content: |-
|
|
24
|
-
from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy
|
|
24
|
+
from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy
|
|
25
25
|
|
|
26
26
|
class InfracostPlugin(SpaceforgePlugin):
|
|
27
27
|
"""
|
|
@@ -198,7 +198,7 @@ deny[sprintf("Too many low vulnerabilities (%d)", [num])] {
|
|
|
198
198
|
markdown += f"- File: {match['fileName']}, Line: {match['lineNumber']}\n"
|
|
199
199
|
markdown += "\n"
|
|
200
200
|
if "reportUrl" in stdout_json:
|
|
201
|
-
markdown += f"
|
|
201
|
+
markdown += f"[View Report]({stdout_json['reportUrl']})\n"
|
|
202
202
|
result = self.send_markdown(markdown)
|
|
203
203
|
if not result:
|
|
204
204
|
self.logger.error("Failed to send Wiz CLI output to spacelift")
|
|
@@ -244,7 +244,7 @@ contexts:
|
|
|
244
244
|
markdown += f"- File: {match['fileName']}, Line: {match['lineNumber']}\n"
|
|
245
245
|
markdown += "\n"
|
|
246
246
|
if "reportUrl" in stdout_json:
|
|
247
|
-
markdown += f"
|
|
247
|
+
markdown += f"[View Report]({stdout_json['reportUrl']})\n"
|
|
248
248
|
result = self.send_markdown(markdown)
|
|
249
249
|
if not result:
|
|
250
250
|
self.logger.error("Failed to send Wiz CLI output to spacelift")
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 0,
|
|
31
|
+
__version__ = version = '0.0.18'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 18)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g5e881fc47'
|
|
@@ -35,19 +35,22 @@ class SpaceforgePlugin(ABC):
|
|
|
35
35
|
self._run_id = os.environ.get("TF_VAR_spacelift_run_id", "local")
|
|
36
36
|
self._is_local = self._run_id == "local"
|
|
37
37
|
self.logger = self._setup_logger()
|
|
38
|
+
self.spacelift_domain = os.environ.get(
|
|
39
|
+
"TF_VAR_spacelift_graphql_endpoint", ""
|
|
40
|
+
).replace("/graphql", "")
|
|
38
41
|
|
|
39
42
|
self._api_token = os.environ.get("SPACELIFT_API_TOKEN") or False
|
|
40
|
-
self.
|
|
43
|
+
self._api_endpoint = (
|
|
41
44
|
os.environ.get("TF_VAR_spacelift_graphql_endpoint") or False
|
|
42
45
|
)
|
|
43
|
-
self._api_enabled = bool(self._api_token and self.
|
|
46
|
+
self._api_enabled = bool(self._api_token and self._api_endpoint)
|
|
44
47
|
self._workspace_root = os.getcwd()
|
|
45
48
|
self._spacelift_markdown_endpoint = None
|
|
46
49
|
self._markdown_endpoint_token = os.environ.get("SPACELIFT_API_TOKEN") or False
|
|
47
50
|
|
|
48
51
|
# This should be the last thing we do in the constructor
|
|
49
52
|
# because we set api_enabled to false if the domain is set up incorrectly.
|
|
50
|
-
if self.
|
|
53
|
+
if self._api_endpoint and isinstance(self._api_endpoint, str):
|
|
51
54
|
# this must occur after we check if spacelift domain is false
|
|
52
55
|
# because the domain could be set but not start with https://
|
|
53
56
|
# if self.spacelift_domain.startswith("https://"):
|
|
@@ -60,7 +63,7 @@ class SpaceforgePlugin(ABC):
|
|
|
60
63
|
# self._api_enabled = False
|
|
61
64
|
|
|
62
65
|
if self._api_enabled:
|
|
63
|
-
self._spacelift_markdown_endpoint = self.
|
|
66
|
+
self._spacelift_markdown_endpoint = self._api_endpoint.replace(
|
|
64
67
|
"/graphql", "/worker/plugin_logs_url"
|
|
65
68
|
)
|
|
66
69
|
|
|
@@ -127,12 +130,12 @@ class SpaceforgePlugin(ABC):
|
|
|
127
130
|
}
|
|
128
131
|
|
|
129
132
|
req = urllib.request.Request(
|
|
130
|
-
self.
|
|
133
|
+
self._api_endpoint, # type: ignore[arg-type]
|
|
131
134
|
json.dumps(data).encode("utf-8"),
|
|
132
135
|
headers,
|
|
133
136
|
)
|
|
134
137
|
|
|
135
|
-
self.logger.debug(f"Sending request to url: {self.
|
|
138
|
+
self.logger.debug(f"Sending request to url: {self._api_endpoint}")
|
|
136
139
|
try:
|
|
137
140
|
with urllib.request.urlopen(req) as response:
|
|
138
141
|
resp: Dict[str, Any] = json.loads(response.read().decode("utf-8"))
|
|
@@ -249,12 +252,12 @@ class SpaceforgePlugin(ABC):
|
|
|
249
252
|
data["variables"] = variables
|
|
250
253
|
|
|
251
254
|
req = urllib.request.Request(
|
|
252
|
-
self.
|
|
255
|
+
self._api_endpoint, # type: ignore[arg-type]
|
|
253
256
|
json.dumps(data).encode("utf-8"),
|
|
254
257
|
headers,
|
|
255
258
|
)
|
|
256
259
|
|
|
257
|
-
self.logger.debug(f"Sending request to url: {self.
|
|
260
|
+
self.logger.debug(f"Sending request to url: {self._api_endpoint}")
|
|
258
261
|
try:
|
|
259
262
|
with urllib.request.urlopen(req) as response:
|
|
260
263
|
resp: Dict[str, Any] = json.loads(response.read().decode("utf-8"))
|
|
@@ -356,6 +359,8 @@ class SpaceforgePlugin(ABC):
|
|
|
356
359
|
self.logger.error(f"HTTP error occurred: ({e.code}) {e.reason} {e.msg}")
|
|
357
360
|
return False
|
|
358
361
|
|
|
362
|
+
self.logger.debug("Markdown to send" + markdown)
|
|
363
|
+
|
|
359
364
|
# Now we upload the markdown content to the signed URL
|
|
360
365
|
req = urllib.request.Request(
|
|
361
366
|
signed_url,
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
#
|
|
22
22
|
# # Assert
|
|
23
23
|
# assert plugin._api_token is False
|
|
24
|
-
# assert plugin.
|
|
24
|
+
# assert plugin._api_endpoint is False
|
|
25
25
|
# assert plugin._api_enabled is False
|
|
26
26
|
# assert plugin._workspace_root == os.getcwd()
|
|
27
27
|
# assert isinstance(plugin.logger, logging.Logger)
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
#
|
|
37
37
|
# # Assert
|
|
38
38
|
# assert plugin._api_token == "test_token"
|
|
39
|
-
# assert plugin.
|
|
39
|
+
# assert plugin._api_endpoint == "https://test.spacelift.io"
|
|
40
40
|
# assert plugin._api_enabled is True
|
|
41
41
|
# assert plugin._workspace_root == os.getcwd()
|
|
42
42
|
#
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
# plugin = SpaceforgePlugin()
|
|
54
54
|
#
|
|
55
55
|
# # Assert
|
|
56
|
-
# assert plugin.
|
|
56
|
+
# assert plugin._api_endpoint == "https://test.spacelift.io"
|
|
57
57
|
# assert plugin._api_enabled is True
|
|
58
58
|
#
|
|
59
59
|
# def test_should_disable_api_when_domain_has_no_https_prefix(self) -> None:
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
# plugin = SpaceforgePlugin()
|
|
70
70
|
#
|
|
71
71
|
# # Assert
|
|
72
|
-
# assert plugin.
|
|
72
|
+
# assert plugin._api_endpoint == "test.spacelift.io"
|
|
73
73
|
# assert plugin._api_enabled is False
|
|
74
74
|
#
|
|
75
75
|
# def test_should_disable_api_when_only_token_provided(self) -> None:
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
# plugin = SpaceforgePlugin()
|
|
272
272
|
# plugin._api_enabled = True
|
|
273
273
|
# plugin._api_token = "test_token"
|
|
274
|
-
# plugin.
|
|
274
|
+
# plugin._api_endpoint = "https://test.spacelift.io"
|
|
275
275
|
#
|
|
276
276
|
# expected_data = {"data": {"test": "result"}}
|
|
277
277
|
# mock_api_response.read.return_value = json.dumps(expected_data).encode("utf-8")
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
# plugin = SpaceforgePlugin()
|
|
306
306
|
# plugin._api_enabled = True
|
|
307
307
|
# plugin._api_token = "test_token"
|
|
308
|
-
# plugin.
|
|
308
|
+
# plugin._api_endpoint = "https://test.spacelift.io"
|
|
309
309
|
#
|
|
310
310
|
# mock_response_data = {"data": {"test": "result"}}
|
|
311
311
|
# mock_response = Mock()
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
# plugin = SpaceforgePlugin()
|
|
332
332
|
# plugin._api_enabled = True
|
|
333
333
|
# plugin._api_token = "test_token"
|
|
334
|
-
# plugin.
|
|
334
|
+
# plugin._api_endpoint = "https://test.spacelift.io"
|
|
335
335
|
#
|
|
336
336
|
# mock_response_data = {"errors": [{"message": "Test error"}]}
|
|
337
337
|
# mock_response = Mock()
|
|
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
|
|
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
|
{spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/templates/ensure_spaceforge_and_run.sh.j2
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
|
|
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
|
|
File without changes
|
|
File without changes
|