systemlink-cli 1.20.0__tar.gz → 1.21.0__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.
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/PKG-INFO +1 -1
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/pyproject.toml +1 -1
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/_version.py +1 -1
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/example_click.py +77 -9
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/example_loader.py +5 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/example_provisioner.py +1193 -159
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/README.md +41 -8
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/_schema/schema-v1.0.json +7 -1
- {systemlink_cli-1.20.0/slcli/examples/demo-complete-workflow → systemlink_cli-1.21.0/slcli/examples/demo-data-1}/README.md +9 -9
- {systemlink_cli-1.20.0/slcli/examples/demo-complete-workflow → systemlink_cli-1.21.0/slcli/examples/demo-data-1}/config.yaml +27 -27
- {systemlink_cli-1.20.0/slcli/examples/demo-test-plans → systemlink_cli-1.21.0/slcli/examples/demo-data-2}/README.md +7 -7
- {systemlink_cli-1.20.0/slcli/examples/demo-test-plans → systemlink_cli-1.21.0/slcli/examples/demo-data-2}/config.yaml +1 -1
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/config.yaml +870 -0
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/leakage-current-results.json +28 -0
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/overvoltage-results.json +29 -0
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/product-xyz-compliance-report.json +46 -0
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/product-xyz-specification.csv +6 -0
- systemlink_cli-1.21.0/slcli/examples/demo-data-3/thermal-response-results.json +27 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/utils.py +1 -1
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/LICENSE +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/dff-editor/editor.js +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/dff-editor/index.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/__init__.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/__main__.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/alarm_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/asset_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/cli_formatters.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/cli_utils.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/comment_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/completion_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/config.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/config_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/dataframe_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/dff_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/dff_decorators.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/feed_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/file_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/function_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/function_templates.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/main.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/mcp_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/mcp_reachability.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/mcp_server.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/notebook_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/platform.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/policy_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/policy_utils.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/profiles.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/response_handlers.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/rich_output.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/routine_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skill_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/SKILL.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/commands.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/filtering.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/import-specs.min.json +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/job-debugging/overview.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/nipkg/overview.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/notebook/interfaces.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/notebook/notebook-patterns.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/notebook/overview.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/python-test/overview.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/routine-examples.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/troubleshooting.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/angular-ui-packages.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/deployment.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/layout-patterns.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/nimble-angular.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/overview.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/systemlink-services.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/references/webapp/troubleshooting.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/skills/slcli/scripts/spec_import_helper.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/spec_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/ssl_trust.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/state_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/system_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/system_query_utils.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/table_utils.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/tag_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/templates_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/testmonitor_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/universal_handlers.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/user_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/web_editor.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_bootstrap.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/.gitignore +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/README.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/angular.json +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/package.json +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/app-routing.module.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/app.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/app.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/app.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/app.module.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/state/app-view-state.service.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/systemlink-context.service.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/theme-sync.service.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/webapp-home-data.service.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/app/shared/states/view-state.model.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/assets/README.md +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/index.html +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/main.ts +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/src/styles.scss +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/tsconfig.app.json +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/webapp_templates/angular/blank/tsconfig.json +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/workflow_preview.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/workflows_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/workitem_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/workspace_click.py +0 -0
- {systemlink_cli-1.20.0 → systemlink_cli-1.21.0}/slcli/workspace_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "systemlink-cli"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.21.0"
|
|
4
4
|
description = "SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates."
|
|
5
5
|
authors = ["Fred Visser <fred.visser@emerson.com>"]
|
|
6
6
|
packages = [{ include = "slcli" }]
|
|
@@ -57,11 +57,60 @@ def _serialize_results(results: List[ProvisioningResult]) -> List[Dict[str, Any]
|
|
|
57
57
|
"action": action_value,
|
|
58
58
|
"server_id": res.server_id,
|
|
59
59
|
"error": res.error,
|
|
60
|
+
"details": res.details,
|
|
60
61
|
}
|
|
61
62
|
)
|
|
62
63
|
return serialized
|
|
63
64
|
|
|
64
65
|
|
|
66
|
+
def _build_install_manifest(
|
|
67
|
+
config: Dict[str, Any],
|
|
68
|
+
workspace_id: Optional[str],
|
|
69
|
+
results: List[Dict[str, Any]],
|
|
70
|
+
logical_ids: Dict[str, str],
|
|
71
|
+
) -> Dict[str, Any]:
|
|
72
|
+
"""Build the opt-in manifest contract for data-heavy fixtures."""
|
|
73
|
+
resource_actions: Dict[str, List[Dict[str, Any]]] = {
|
|
74
|
+
"created": [],
|
|
75
|
+
"updated": [],
|
|
76
|
+
"skipped": [],
|
|
77
|
+
"failed": [],
|
|
78
|
+
}
|
|
79
|
+
for result in results:
|
|
80
|
+
action = result.get("action")
|
|
81
|
+
if action in resource_actions:
|
|
82
|
+
resource_actions[action].append(result)
|
|
83
|
+
|
|
84
|
+
validation = config.get("validation", {})
|
|
85
|
+
if not isinstance(validation, dict):
|
|
86
|
+
validation = {}
|
|
87
|
+
unsupported = validation.get("unsupported", [])
|
|
88
|
+
if not isinstance(unsupported, list):
|
|
89
|
+
unsupported = [str(unsupported)]
|
|
90
|
+
required_relationships = validation.get("required_relationships", [])
|
|
91
|
+
if not isinstance(required_relationships, list):
|
|
92
|
+
required_relationships = [str(required_relationships)]
|
|
93
|
+
|
|
94
|
+
failed_relationships = validation.get("failed_relationships", [])
|
|
95
|
+
if not isinstance(failed_relationships, list):
|
|
96
|
+
failed_relationships = [str(failed_relationships)]
|
|
97
|
+
|
|
98
|
+
incomplete = bool(resource_actions["failed"] or unsupported or failed_relationships)
|
|
99
|
+
return {
|
|
100
|
+
"example": config.get("name", ""),
|
|
101
|
+
"version": config.get("example_version", "1.0.0"),
|
|
102
|
+
"workspace": {"name": config.get("workspace_name", ""), "id": workspace_id},
|
|
103
|
+
"resources": resource_actions,
|
|
104
|
+
"logical_ids": logical_ids,
|
|
105
|
+
"validation": {
|
|
106
|
+
"required_relationships": required_relationships,
|
|
107
|
+
"failed_relationships": failed_relationships,
|
|
108
|
+
"unsupported": unsupported,
|
|
109
|
+
"complete": not incomplete,
|
|
110
|
+
},
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
65
114
|
def _result_row_formatter(item: Dict[str, Any]) -> List[str]:
|
|
66
115
|
"""Formatter for table rows in provisioning output."""
|
|
67
116
|
return [
|
|
@@ -101,9 +150,7 @@ def _output_results(results: List[Dict[str, Any]], format_output: str) -> None:
|
|
|
101
150
|
)
|
|
102
151
|
|
|
103
152
|
|
|
104
|
-
def _write_audit_log(
|
|
105
|
-
results: List[Dict[str, Any]], audit_log: Optional[str], quiet: bool = False
|
|
106
|
-
) -> None:
|
|
153
|
+
def _write_audit_log(results: Any, audit_log: Optional[str], quiet: bool = False) -> None:
|
|
107
154
|
"""Persist results to an audit log file if requested."""
|
|
108
155
|
if not audit_log:
|
|
109
156
|
return
|
|
@@ -189,7 +236,7 @@ def register_example_commands(cli: Any) -> None:
|
|
|
189
236
|
estimated setup time.
|
|
190
237
|
|
|
191
238
|
Example:
|
|
192
|
-
slcli example info demo-
|
|
239
|
+
slcli example info demo-data-2
|
|
193
240
|
"""
|
|
194
241
|
try:
|
|
195
242
|
loader = ExampleLoader()
|
|
@@ -278,12 +325,33 @@ def register_example_commands(cli: Any) -> None:
|
|
|
278
325
|
handle_api_error(err)
|
|
279
326
|
|
|
280
327
|
serialized = _serialize_results(results)
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
328
|
+
manifest_mode = bool(config.get("install_manifest"))
|
|
329
|
+
manifest = _build_install_manifest(
|
|
330
|
+
config,
|
|
331
|
+
workspace_id,
|
|
332
|
+
serialized,
|
|
333
|
+
getattr(provisioner, "id_map", {}),
|
|
334
|
+
)
|
|
284
335
|
failed = any(r.get("action") == ProvisioningAction.FAILED.value for r in serialized)
|
|
285
|
-
|
|
286
|
-
|
|
336
|
+
incomplete = manifest["validation"]["complete"] is False
|
|
337
|
+
|
|
338
|
+
if manifest_mode and format == "json":
|
|
339
|
+
_write_audit_log(manifest, audit_log, quiet=True)
|
|
340
|
+
click.echo(json.dumps(manifest, indent=2))
|
|
341
|
+
else:
|
|
342
|
+
_write_audit_log(serialized, audit_log, quiet=format == "json")
|
|
343
|
+
_output_results(serialized, format)
|
|
344
|
+
|
|
345
|
+
if failed or (manifest_mode and incomplete):
|
|
346
|
+
if manifest_mode and incomplete and manifest["validation"]["unsupported"]:
|
|
347
|
+
click.echo(
|
|
348
|
+
"✗ Example install is incomplete: required capabilities are unsupported.",
|
|
349
|
+
err=True,
|
|
350
|
+
)
|
|
351
|
+
elif failed:
|
|
352
|
+
click.echo("✗ One or more resources failed to provision.", err=True)
|
|
353
|
+
else:
|
|
354
|
+
click.echo("✗ Example install is incomplete.", err=True)
|
|
287
355
|
sys.exit(ExitCodes.GENERAL_ERROR)
|
|
288
356
|
|
|
289
357
|
if format == "json":
|