spaceforge 0.0.4__tar.gz → 0.0.5__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.4 → spaceforge-0.0.5}/PKG-INFO +1 -1
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/wiz/plugin.py +5 -3
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/wiz/plugin.yaml +6 -4
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/_version_scm.py +3 -3
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/plugin.py +28 -23
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/PKG-INFO +1 -1
- {spaceforge-0.0.4 → spaceforge-0.0.5}/.github/workflows/ci.yml +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/.github/workflows/release.yml +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/.gitignore +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/LICENSE +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/MANIFEST.in +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/README.md +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/go.mod +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/infracost/plugin.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/infracost/plugin.yaml +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/sops/plugin.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/sops/plugin.yaml +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/plugins/sops/requirements.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/pyproject.toml +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/setup.cfg +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/setup.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/README.md +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/__init__.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/__main__.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/_version.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/cls.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/conftest.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/generator.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/runner.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/schema.json +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/templates/binary_install.sh.j2 +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/templates/ensure_spaceforge_and_run.sh.j2 +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_cls.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_generator.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_generator_binaries.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_generator_core.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_generator_hooks.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_generator_parameters.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_plugin.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_plugin_file_operations.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_plugin_hooks.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_plugin_inheritance.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_runner.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_runner_cli.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_runner_core.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge/test_runner_execution.py +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/SOURCES.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/dependency_links.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/entry_points.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/not-zip-safe +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/requires.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/spaceforge.egg-info/top_level.txt +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/templates.go +0 -0
- {spaceforge-0.0.4 → spaceforge-0.0.5}/test.sh +0 -0
|
@@ -88,9 +88,9 @@ webhook[{"endpoint_id": "wiz-alert-endpoint"}] {
|
|
|
88
88
|
input.run_updated.run.marked_unsafe == true
|
|
89
89
|
}
|
|
90
90
|
""",
|
|
91
|
-
labels=
|
|
91
|
+
labels=[
|
|
92
92
|
"wiz-plugin"
|
|
93
|
-
|
|
93
|
+
]
|
|
94
94
|
)
|
|
95
95
|
]
|
|
96
96
|
|
|
@@ -179,4 +179,6 @@ webhook[{"endpoint_id": "wiz-alert-endpoint"}] {
|
|
|
179
179
|
markdown += "\n"
|
|
180
180
|
if "reportUrl" in stdout_json:
|
|
181
181
|
markdown += f"<a href=\"{stdout_json['reportUrl']}\" rel=\"noopener noreferrer\">View Report</a>\n"
|
|
182
|
-
self.send_markdown(markdown)
|
|
182
|
+
result = self.send_markdown(markdown)
|
|
183
|
+
if not result:
|
|
184
|
+
self.logger.error("Failed to send Wiz CLI output to spacelift")
|
|
@@ -134,9 +134,9 @@ contexts:
|
|
|
134
134
|
input.run_updated.run.marked_unsafe == true
|
|
135
135
|
}
|
|
136
136
|
""",
|
|
137
|
-
labels=
|
|
137
|
+
labels=[
|
|
138
138
|
"wiz-plugin"
|
|
139
|
-
|
|
139
|
+
]
|
|
140
140
|
)
|
|
141
141
|
]
|
|
142
142
|
|
|
@@ -225,7 +225,9 @@ contexts:
|
|
|
225
225
|
markdown += "\n"
|
|
226
226
|
if "reportUrl" in stdout_json:
|
|
227
227
|
markdown += f"<a href=\"{stdout_json['reportUrl']}\" rel=\"noopener noreferrer\">View Report</a>\n"
|
|
228
|
-
self.send_markdown(markdown)
|
|
228
|
+
result = self.send_markdown(markdown)
|
|
229
|
+
if not result:
|
|
230
|
+
self.logger.error("Failed to send Wiz CLI output to spacelift")
|
|
229
231
|
sensitive: false
|
|
230
232
|
- path: /mnt/workspace/plugins/wiz/binary_install_wizcli.sh
|
|
231
233
|
content: |-
|
|
@@ -266,7 +268,7 @@ contexts:
|
|
|
266
268
|
fi
|
|
267
269
|
. venv/bin/activate
|
|
268
270
|
|
|
269
|
-
if command -v spaceforge; then
|
|
271
|
+
if ! command -v spaceforge; then
|
|
270
272
|
pip install spaceforge
|
|
271
273
|
fi
|
|
272
274
|
|
|
@@ -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.5'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 5)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gd83c2c6ce'
|
|
@@ -233,7 +233,7 @@ class SpaceforgePlugin(ABC):
|
|
|
233
233
|
data: Dict[str, Any] = json.load(f)
|
|
234
234
|
return data
|
|
235
235
|
|
|
236
|
-
def send_markdown(self, markdown: str) ->
|
|
236
|
+
def send_markdown(self, markdown: str) -> bool:
|
|
237
237
|
"""
|
|
238
238
|
Send a markdown message to the Spacelift run.
|
|
239
239
|
|
|
@@ -245,13 +245,13 @@ class SpaceforgePlugin(ABC):
|
|
|
245
245
|
"Spacelift run is local. Not uploading markdown. Below is a preview of what would be sent"
|
|
246
246
|
)
|
|
247
247
|
self.logger.info(markdown)
|
|
248
|
-
return
|
|
248
|
+
return True
|
|
249
249
|
|
|
250
250
|
if self._spacelift_markdown_endpoint is None:
|
|
251
251
|
self.logger.error(
|
|
252
252
|
'API is not enabled, please export "SPACELIFT_API_TOKEN" and "TF_VAR_spacelift_graphql_endpoint".'
|
|
253
253
|
)
|
|
254
|
-
|
|
254
|
+
return False
|
|
255
255
|
|
|
256
256
|
headers = {"Authorization": f"Bearer {self._api_token}"}
|
|
257
257
|
body = {
|
|
@@ -266,26 +266,30 @@ class SpaceforgePlugin(ABC):
|
|
|
266
266
|
method="POST",
|
|
267
267
|
)
|
|
268
268
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
269
|
+
try:
|
|
270
|
+
with urllib.request.urlopen(req) as response:
|
|
271
|
+
if response.status != 200:
|
|
272
|
+
self.logger.error(
|
|
273
|
+
f"Error getting signed URL for markdown upload: {response}"
|
|
274
|
+
)
|
|
275
|
+
return False
|
|
276
|
+
|
|
277
|
+
raw_response = response.read().decode("utf-8")
|
|
278
|
+
self.logger.debug(raw_response)
|
|
279
|
+
resp: Dict[str, Any] = json.loads(raw_response)
|
|
280
|
+
if "url" not in resp or "headers" not in resp:
|
|
281
|
+
self.logger.error(
|
|
282
|
+
"Markdown signed url response does not contain 'url' or 'headers' key."
|
|
283
|
+
)
|
|
284
|
+
return False
|
|
284
285
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
signed_url = resp["url"]
|
|
287
|
+
headers = resp["headers"]
|
|
288
|
+
headers["Content-Type"] = "text/markdown"
|
|
289
|
+
headers["Content-Length"] = str(len(markdown))
|
|
290
|
+
except urllib.request.HTTPError as e:
|
|
291
|
+
self.logger.error(f"HTTP error occurred: {e.code} - {e.reason}")
|
|
292
|
+
return False
|
|
289
293
|
|
|
290
294
|
# Now we upload the markdown content to the signed URL
|
|
291
295
|
req = urllib.request.Request(
|
|
@@ -300,8 +304,9 @@ class SpaceforgePlugin(ABC):
|
|
|
300
304
|
self.logger.error(
|
|
301
305
|
f"Error uploading markdown content: {put_response.status}"
|
|
302
306
|
)
|
|
303
|
-
return
|
|
307
|
+
return False
|
|
304
308
|
self.logger.debug("Markdown content uploaded successfully.")
|
|
309
|
+
return True
|
|
305
310
|
|
|
306
311
|
def add_to_policy_input(self, input_name: str, data: Dict[str, Any]) -> None:
|
|
307
312
|
"""
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|