Skip to content

Commit

Permalink
feat: make experimental flag for contexts
Browse files Browse the repository at this point in the history
  • Loading branch information
Apollorion committed Aug 6, 2024
1 parent 02735ff commit 5292b5e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 14 deletions.
4 changes: 4 additions & 0 deletions config.yml.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ exporter:
include:
workspaces: ^example-.*$

# # If you want to support variable sets, set this to `true`. This feature is experimental.
# # Default: false
# experimental_support_variable_sets: false

generator:

# # If you use a custom app in github with spacelift, set this to `true`.
Expand Down
10 changes: 5 additions & 5 deletions spacemk/commands/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@
)
@pass_meta_key("config")
def generate(config):
def default(value, _default):
def set_default(value, _default):
return value if value is not None else _default

generation_config = {
"spacelift": {
"manage_state": default(config.get("generator.spacelift.manage_state"), True)
"manage_state": set_default(config.get("generator.spacelift.manage_state"), True)
}, "github": {
"custom_app": default(config.get("generator.github.custom_app"), False)
"custom_app": set_default(config.get("generator.github.custom_app"), False)
},
"custom_runner_image": default(config.get("generator.custom_runner_image"),
"custom_runner_image": set_default(config.get("generator.custom_runner_image"),
"SPACELIFT_DEFAULT_INVALID"),
"modules": {
"default_branch": default(config.get("generator.modules.default_branch"), ""),
"default_branch": set_default(config.get("generator.modules.default_branch"), ""),
}
}

Expand Down
26 changes: 17 additions & 9 deletions spacemk/exporters/terraform.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ def __init__(self, config: dict):
}

self.is_gitlab = False
self.experimental_support_variable_sets = self._config.get("experimental_support_variable_sets", False)
if self.experimental_support_variable_sets:
logging.warning("Experimental support for variable sets is enabled")

def _build_stack_slug(self, workspace: dict) -> str:
return slugify(workspace.get("attributes.name"))
Expand Down Expand Up @@ -745,7 +748,8 @@ def _enrich_data(self, data: dict) -> dict:

self._download_state_files(data)
data = self._enrich_workspace_variable_data(data)
data = self._enrich_variable_set_data(data)
if self.experimental_support_variable_sets:
data = self._enrich_variable_set_data(data)

logging.info("Stop enriching data")

Expand Down Expand Up @@ -832,11 +836,14 @@ def _extract_data(self) -> list[dict]:
data["providers"].extend(self._extract_providers_data(organization))
data["tasks"].extend(self._extract_tasks_data(organization))
data["teams"].extend(self._extract_teams_data(organization))
data["variable_sets"].extend(self._extract_variable_sets_data(organization))
data["workspaces"].extend(self._extract_workspaces_data(organization))

for variable_set in data.variable_sets:
data["variable_set_variables"].extend(self._extract_variable_set_variables_data(variable_set))
if self.experimental_support_variable_sets:
data["variable_sets"].extend(self._extract_variable_sets_data(organization))

if self.experimental_support_variable_sets:
for variable_set in data.variable_sets:
data["variable_set_variables"].extend(self._extract_variable_set_variables_data(variable_set))

for workspace in data.workspaces:
data["workspace_variables"].extend(self._extract_workspace_variables_data(workspace))
Expand Down Expand Up @@ -1631,18 +1638,19 @@ def _map_data(self, src_data: dict) -> dict:
data = benedict(
{
"spaces": self._map_spaces_data(src_data), # Must be first due to dependency
"contexts": self._map_contexts_data(src_data),
"context_variables": self._map_context_variables_data(
src_data
), # Must be after contexts due to dependency

"contexts": [],
"context_variables": [], # Must be after contexts due to dependency
# Stacks must be before modules so we can determine is_gitlab so we set VCS properly
"stacks": self._map_stacks_data(src_data),
"modules": self._map_modules_data(src_data),
"stack_variables": self._map_stack_variables_data(src_data), # Must be after stacks due to dependency
}
)

if self.experimental_support_variable_sets:
data["contexts"] = self._map_contexts_data(src_data)
data["context_variables"] = self._map_context_variables_data(src_data)

data = self._mark_spaces_for_terraform_custom_workflow(data)
data = self._expand_relationships(data)

Expand Down

0 comments on commit 5292b5e

Please sign in to comment.