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.
Files changed (57) hide show
  1. {spaceforge-0.0.16 → spaceforge-0.0.18}/PKG-INFO +1 -1
  2. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/plugin.py +1 -1
  3. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/plugin.yaml +1 -1
  4. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/infracost/plugin.py +1 -1
  5. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/infracost/plugin.yaml +1 -1
  6. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/plugin.py +1 -1
  7. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/plugin.yaml +1 -1
  8. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/wiz/plugin.py +1 -1
  9. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/wiz/plugin.yaml +1 -1
  10. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/_version_scm.py +3 -3
  11. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/plugin.py +13 -8
  12. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin.py +7 -7
  13. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/PKG-INFO +1 -1
  14. {spaceforge-0.0.16 → spaceforge-0.0.18}/.github/workflows/ci.yml +0 -0
  15. {spaceforge-0.0.16 → spaceforge-0.0.18}/.github/workflows/release.yml +0 -0
  16. {spaceforge-0.0.16 → spaceforge-0.0.18}/.gitignore +0 -0
  17. {spaceforge-0.0.16 → spaceforge-0.0.18}/LICENSE +0 -0
  18. {spaceforge-0.0.16 → spaceforge-0.0.18}/MANIFEST.in +0 -0
  19. {spaceforge-0.0.16 → spaceforge-0.0.18}/README.md +0 -0
  20. {spaceforge-0.0.16 → spaceforge-0.0.18}/go.mod +0 -0
  21. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/enviroment_manager/requirements.txt +0 -0
  22. {spaceforge-0.0.16 → spaceforge-0.0.18}/plugins/sops/requirements.txt +0 -0
  23. {spaceforge-0.0.16 → spaceforge-0.0.18}/pyproject.toml +0 -0
  24. {spaceforge-0.0.16 → spaceforge-0.0.18}/setup.cfg +0 -0
  25. {spaceforge-0.0.16 → spaceforge-0.0.18}/setup.py +0 -0
  26. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/README.md +0 -0
  27. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/__init__.py +0 -0
  28. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/__main__.py +0 -0
  29. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/_version.py +0 -0
  30. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/cls.py +0 -0
  31. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/conftest.py +0 -0
  32. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/generator.py +0 -0
  33. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/runner.py +0 -0
  34. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/schema.json +0 -0
  35. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/templates/binary_install.sh.j2 +0 -0
  36. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/templates/ensure_spaceforge_and_run.sh.j2 +0 -0
  37. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_cls.py +0 -0
  38. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator.py +0 -0
  39. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_binaries.py +0 -0
  40. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_core.py +0 -0
  41. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_hooks.py +0 -0
  42. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_generator_parameters.py +0 -0
  43. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_file_operations.py +0 -0
  44. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_hooks.py +0 -0
  45. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_plugin_inheritance.py +0 -0
  46. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner.py +0 -0
  47. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_cli.py +0 -0
  48. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_core.py +0 -0
  49. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge/test_runner_execution.py +0 -0
  50. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/SOURCES.txt +0 -0
  51. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/dependency_links.txt +0 -0
  52. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/entry_points.txt +0 -0
  53. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/not-zip-safe +0 -0
  54. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/requires.txt +0 -0
  55. {spaceforge-0.0.16 → spaceforge-0.0.18}/spaceforge.egg-info/top_level.txt +0 -0
  56. {spaceforge-0.0.16 → spaceforge-0.0.18}/templates.go +0 -0
  57. {spaceforge-0.0.16 → spaceforge-0.0.18}/test.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spaceforge
3
- Version: 0.0.16
3
+ Version: 0.0.18
4
4
  Summary: A Python framework for building Spacelift plugins
5
5
  Home-page: https://github.com/spacelift-io/plugins
6
6
  Author: Spacelift
@@ -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"https://{self.spacelift_domain}/stack/{stack_id}/run/{response['data']['runTrigger']['id']}"
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"https://{self.spacelift_domain}/stack/{stack_id}/run/{response['data']['runTrigger']['id']}"
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:
@@ -1,4 +1,4 @@
1
- from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy, Binary
1
+ from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy
2
2
 
3
3
  class InfracostPlugin(SpaceforgePlugin):
4
4
  """
@@ -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, Binary
24
+ from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy
25
25
 
26
26
  class InfracostPlugin(SpaceforgePlugin):
27
27
  """
@@ -2,7 +2,7 @@ from sopsy import Sops, SopsyError
2
2
  from pathlib import Path
3
3
  import yaml
4
4
 
5
- from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy, Binary
5
+ from spaceforge import SpaceforgePlugin, Binary
6
6
 
7
7
  class SopsPlugin(SpaceforgePlugin):
8
8
  """
@@ -49,7 +49,7 @@ contexts:
49
49
  from pathlib import Path
50
50
  import yaml
51
51
 
52
- from spaceforge import SpaceforgePlugin, Parameter, Variable, Context, Policy, Binary
52
+ from spaceforge import SpaceforgePlugin, Binary
53
53
 
54
54
  class SopsPlugin(SpaceforgePlugin):
55
55
  """
@@ -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"<a href=\"{stdout_json['reportUrl']}\" rel=\"noopener noreferrer\">View Report</a>\n"
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"<a href=\"{stdout_json['reportUrl']}\" rel=\"noopener noreferrer\">View Report</a>\n"
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.16'
32
- __version_tuple__ = version_tuple = (0, 0, 16)
31
+ __version__ = version = '0.0.18'
32
+ __version_tuple__ = version_tuple = (0, 0, 18)
33
33
 
34
- __commit_id__ = commit_id = 'g11adf16b1'
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.spacelift_domain = (
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.spacelift_domain)
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.spacelift_domain and isinstance(self.spacelift_domain, str):
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.spacelift_domain.replace(
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.spacelift_domain, # type: ignore[arg-type]
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.spacelift_domain}")
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.spacelift_domain, # type: ignore[arg-type]
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.spacelift_domain}")
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.spacelift_domain is False
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.spacelift_domain == "https://test.spacelift.io"
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.spacelift_domain == "https://test.spacelift.io"
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.spacelift_domain == "test.spacelift.io"
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.spacelift_domain = "https://test.spacelift.io"
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.spacelift_domain = "https://test.spacelift.io"
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.spacelift_domain = "https://test.spacelift.io"
334
+ # plugin._api_endpoint = "https://test.spacelift.io"
335
335
  #
336
336
  # mock_response_data = {"errors": [{"message": "Test error"}]}
337
337
  # mock_response = Mock()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spaceforge
3
- Version: 0.0.16
3
+ Version: 0.0.18
4
4
  Summary: A Python framework for building Spacelift plugins
5
5
  Home-page: https://github.com/spacelift-io/plugins
6
6
  Author: Spacelift
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