systemlink-cli 1.4.3__tar.gz → 1.4.4__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.4.3 → systemlink_cli-1.4.4}/PKG-INFO +1 -1
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/pyproject.toml +1 -1
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/_version.py +1 -1
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-complete-workflow/README.md +1 -3
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/platform.py +4 -52
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/user_click.py +1 -1
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/LICENSE +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/dff-editor/editor.js +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/dff-editor/index.html +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/__init__.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/__main__.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/asset_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/cli_formatters.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/cli_utils.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/comment_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/completion_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/config.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/config_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/dff_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/dff_decorators.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/example_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/example_loader.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/example_provisioner.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/README.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/_schema/schema-v1.0.json +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-complete-workflow/config.yaml +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-test-plans/README.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-test-plans/config.yaml +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/feed_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/file_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/function_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/function_templates.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/main.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/mcp_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/mcp_server.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/notebook_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/policy_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/policy_utils.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/profiles.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/response_handlers.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/routine_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skill_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/slcli/SKILL.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/slcli/references/filtering.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/systemlink-webapp/SKILL.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/systemlink-webapp/references/deployment.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/systemlink-webapp/references/nimble-angular.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/systemlink-webapp/references/systemlink-services.md +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/ssl_trust.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/system_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/table_utils.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/tag_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/templates_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/testmonitor_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/universal_handlers.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/utils.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/web_editor.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/webapp_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/workflow_preview.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/workflows_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/workitem_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/workspace_click.py +0 -0
- {systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/workspace_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "systemlink-cli"
|
|
3
|
-
version = "1.4.
|
|
3
|
+
version = "1.4.4"
|
|
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" }]
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-complete-workflow/README.md
RENAMED
|
@@ -303,9 +303,7 @@ slcli result list -w <workspace>
|
|
|
303
303
|
|
|
304
304
|
## Additional Resources
|
|
305
305
|
|
|
306
|
-
- **SystemLink API Documentation**: https://
|
|
307
|
-
- **Test Monitor Specs**: https://dev-api.lifecyclesolutions.ni.com/nitestmonitor/swagger/
|
|
308
|
-
- **Work Item API**: https://dev-api.lifecyclesolutions.ni.com/niworkitem/swagger/
|
|
306
|
+
- **SystemLink API Documentation**: https://demo-api.lifecyclesolutions.ni.com/niapis/
|
|
309
307
|
- **systemlink-cli GitHub**: https://github.com/ni/systemlink-cli
|
|
310
308
|
|
|
311
309
|
## Contact & Support
|
|
@@ -87,7 +87,6 @@ def detect_platform(api_url: str, api_key: str) -> str:
|
|
|
87
87
|
Uses check_service_status to probe services and determine:
|
|
88
88
|
- Platform type (SLE vs SLS)
|
|
89
89
|
- Server reachability
|
|
90
|
-
Falls back to URL pattern matching when probe is inconclusive.
|
|
91
90
|
|
|
92
91
|
Args:
|
|
93
92
|
api_url: The SystemLink API base URL
|
|
@@ -101,45 +100,6 @@ def detect_platform(api_url: str, api_key: str) -> str:
|
|
|
101
100
|
return status["platform"]
|
|
102
101
|
|
|
103
102
|
|
|
104
|
-
def _detect_platform_from_url(api_url: str) -> str:
|
|
105
|
-
"""Detect platform from URL pattern without making network requests.
|
|
106
|
-
|
|
107
|
-
This is a lightweight detection for use when environment variables
|
|
108
|
-
are set and we need quick platform detection.
|
|
109
|
-
|
|
110
|
-
SLE (SystemLink Enterprise Cloud) URLs typically contain:
|
|
111
|
-
- api.systemlink.io (production)
|
|
112
|
-
- dev-api.lifecyclesolutions.ni.com (development)
|
|
113
|
-
- demo-api.lifecyclesolutions.ni.com (demo)
|
|
114
|
-
|
|
115
|
-
On-premises SystemLink Server (SLS) instances may use custom domains
|
|
116
|
-
or even *.systemlink.io subdomains (like base.systemlink.io).
|
|
117
|
-
|
|
118
|
-
Args:
|
|
119
|
-
api_url: The SystemLink API base URL
|
|
120
|
-
|
|
121
|
-
Returns:
|
|
122
|
-
Platform identifier: PLATFORM_SLE or PLATFORM_SLS.
|
|
123
|
-
Note: This function never returns PLATFORM_UNKNOWN - it defaults to SLS.
|
|
124
|
-
"""
|
|
125
|
-
api_url_lower = api_url.lower()
|
|
126
|
-
|
|
127
|
-
# SLE cloud service has specific URL patterns
|
|
128
|
-
sle_patterns = [
|
|
129
|
-
"api.systemlink.io", # SLE production
|
|
130
|
-
"-api.lifecyclesolutions.ni.com", # SLE dev/demo with -api suffix
|
|
131
|
-
"dev-api.lifecyclesolutions",
|
|
132
|
-
"demo-api.lifecyclesolutions",
|
|
133
|
-
]
|
|
134
|
-
for pattern in sle_patterns:
|
|
135
|
-
if pattern in api_url_lower:
|
|
136
|
-
return PLATFORM_SLE
|
|
137
|
-
|
|
138
|
-
# Default to SLS for on-premises/custom URLs
|
|
139
|
-
# This includes on-prem servers that may use *.systemlink.io subdomains
|
|
140
|
-
return PLATFORM_SLS
|
|
141
|
-
|
|
142
|
-
|
|
143
103
|
@lru_cache(maxsize=1)
|
|
144
104
|
def get_platform() -> str:
|
|
145
105
|
"""Get the current platform from stored configuration or environment.
|
|
@@ -147,8 +107,7 @@ def get_platform() -> str:
|
|
|
147
107
|
Detection priority:
|
|
148
108
|
1. SYSTEMLINK_PLATFORM environment variable (explicit, most reliable)
|
|
149
109
|
2. Stored platform from keyring config (set during login via endpoint probing)
|
|
150
|
-
3.
|
|
151
|
-
4. Return PLATFORM_UNKNOWN if all methods fail
|
|
110
|
+
3. Return PLATFORM_UNKNOWN if no explicit or stored platform is available
|
|
152
111
|
|
|
153
112
|
Note: Results are cached for performance. Use clear_platform_cache() to reset.
|
|
154
113
|
|
|
@@ -169,12 +128,6 @@ def get_platform() -> str:
|
|
|
169
128
|
if platform in (PLATFORM_SLE, PLATFORM_SLS):
|
|
170
129
|
return platform
|
|
171
130
|
|
|
172
|
-
# Priority 3: URL pattern matching (fallback, less reliable)
|
|
173
|
-
# Only used when env vars are set but no explicit platform is provided
|
|
174
|
-
env_url = os.environ.get("SYSTEMLINK_API_URL")
|
|
175
|
-
if env_url:
|
|
176
|
-
return _detect_platform_from_url(env_url)
|
|
177
|
-
|
|
178
131
|
return PLATFORM_UNKNOWN
|
|
179
132
|
|
|
180
133
|
|
|
@@ -349,8 +302,8 @@ def check_service_status(api_url: str, api_key: str) -> Dict[str, Any]:
|
|
|
349
302
|
("ok", "unauthorized", "not_found", "error", "unreachable")
|
|
350
303
|
- file_query_endpoint: selected file query endpoint, if available
|
|
351
304
|
- elasticsearch_available: bool | None - whether search-files is available
|
|
352
|
-
|
|
353
|
-
|
|
305
|
+
- platform: detected platform string (PLATFORM_SLE, PLATFORM_SLS,
|
|
306
|
+
PLATFORM_UNREACHABLE, PLATFORM_UNKNOWN)
|
|
354
307
|
"""
|
|
355
308
|
headers = {
|
|
356
309
|
"x-ni-api-key": api_key,
|
|
@@ -425,8 +378,7 @@ def check_service_status(api_url: str, api_key: str) -> Dict[str, Any]:
|
|
|
425
378
|
elif workorder_status == "not_found":
|
|
426
379
|
platform = PLATFORM_SLS
|
|
427
380
|
else:
|
|
428
|
-
|
|
429
|
-
platform = _detect_platform_from_url(api_url)
|
|
381
|
+
platform = PLATFORM_UNKNOWN
|
|
430
382
|
|
|
431
383
|
file_capability = get_file_query_capability(api_url, api_key)
|
|
432
384
|
services["File"] = file_capability["status"]
|
|
@@ -423,7 +423,7 @@ def _query_all_users(
|
|
|
423
423
|
- Uses 'status = "active"' for filtering disabled users
|
|
424
424
|
|
|
425
425
|
TODO: Follow this pattern for other API clients that support continuation tokens
|
|
426
|
-
Reference: https://
|
|
426
|
+
Reference: https://demo-api.lifecyclesolutions.ni.com/niuser/swagger/v1/niuser.yaml
|
|
427
427
|
|
|
428
428
|
Args:
|
|
429
429
|
filter_str: Filter expression for users
|
|
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
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/demo-complete-workflow/config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-7-1-test-plans/README.md
RENAMED
|
File without changes
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/exercise-7-1-test-plans/config.yaml
RENAMED
|
File without changes
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/README.md
RENAMED
|
File without changes
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/examples/spec-compliance-notebooks/config.yaml
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
|
{systemlink_cli-1.4.3 → systemlink_cli-1.4.4}/slcli/skills/slcli/references/analysis-recipes.md
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
|