fdai-deployment-cli 0.1.2__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.
- fdai_deployment_cli-0.1.2/PKG-INFO +112 -0
- fdai_deployment_cli-0.1.2/README.md +102 -0
- fdai_deployment_cli-0.1.2/pyproject.toml +50 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/__about__.py +3 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/__init__.py +5 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/__main__.py +5 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/acr_publish.py +585 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_catalog_review.py +137 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_historical_reconciliation.py +732 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_job_environment.py +59 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_job_execution.py +794 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_kubernetes_defaults.py +66 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_preflight.py +422 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_readiness.py +220 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_service_update.py +180 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/aks_workload_jobs.py +281 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/application_state_adoption.py +347 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/azure_actor.py +61 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/azure_naming.py +252 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/azure_retail_prices.py +173 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_approval.py +99 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_channel.py +321 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_executor.py +311 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_plan.py +237 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_reconcile.py +402 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_support.py +138 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bootstrap_worker.py +448 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/bundle.py +352 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/capacity.py +143 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/catalog_review_profile.py +306 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/cli.py +798 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/cli_help.py +214 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/cli_parser.py +791 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/cli_plan.py +450 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/compiler.py +99 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/console_artifact.py +218 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/console_config.py +214 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/console_update.py +832 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/contracts.py +307 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/control_package.py +140 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deadline_transport.py +70 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deployment_cost.py +131 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deployment_deadline.py +28 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deployment_kit.py +790 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deployment_kit_cache.py +191 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/deployment_progress.py +648 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/development_authority_cli.py +56 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/development_authority_profile.py +319 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/doctor.py +136 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entitlement_preflight.py +68 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entitlement_transport.py +49 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entra_bootstrap.py +579 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entra_control_profile.py +214 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entra_graph.py +349 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entra_profiles.py +215 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/entra_source.py +244 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/execution_bundle.py +478 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/execution_copies.py +63 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_adoption.py +438 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_adoption_evidence.py +245 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_adoption_host.py +157 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_adoption_transport.py +51 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_failure.py +72 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_image.py +168 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_input.py +235 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_output.py +154 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_plan.py +381 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_process.py +64 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/foundation_progress.py +231 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_actions.py +171 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_apply_artifact.py +259 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_artifact_io.py +48 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_dispatch.py +248 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_plan_artifact.py +181 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_provider_artifact.py +170 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_transport.py +46 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/github_workflow_values.py +312 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_image_deploy.py +354 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_image_stage.py +162 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_image_trust.py +281 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_ownership.py +161 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_workload_handoff.py +264 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/hub_workload_handoff_inputs.py +227 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/identity_profile.py +227 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/image_targets.py +197 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/installation_scope.py +280 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/license.py +311 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/license_issue.py +239 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_authorization.py +252 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_commands.py +173 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration.py +722 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_artifact.py +45 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_cli.py +324 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_document.py +74 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_entities.py +146 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_package.py +492 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_publication.py +277 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_publication_cli.py +191 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_configuration_sealing.py +127 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_enrollment.py +45 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_infrastructure_agent.py +174 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_installation_binding.py +65 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_native.py +247 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_native_reconciliation.py +568 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_native_transition.py +339 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_ownership_exclusion.py +78 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_plan.py +800 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_promotion.py +185 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_release.py +308 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_self_upgrade.py +202 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/lifecycle_upgrade_bundle.py +176 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/notification_recipients_input.py +222 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/observer_artifact.py +106 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/oci_archive.py +353 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/offline_kit.py +797 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/offline_prepare.py +135 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/operational_evidence_verifier_input.py +575 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/plan_input.py +101 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/private_output.py +192 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/profile.py +70 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/progress.py +183 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/readiness.py +286 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/run_command_receiver.py +418 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/runtime_build.py +386 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/runtime_profile.py +287 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/runtime_release.py +745 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/runtime_stage.py +82 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/runtime_support_installation.py +215 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/simulation.py +80 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_application_inputs.py +397 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_azure.py +586 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_change_cli.py +107 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_change_parser.py +75 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_change_plan.py +181 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_changed_update.py +196 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_deploy.py +170 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_foundation.py +174 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_host_tools.py +163 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_image_stage.py +400 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_input.py +173 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_projection.py +164 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_receiver.py +76 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_recovery.py +264 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_runtime.py +81 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_runtime_support.py +368 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_service_update.py +726 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_service_update_cli.py +47 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_snapshot.py +178 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_teardown.py +574 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_terraform.py +85 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/source_transport.py +399 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_aks_inventory.py +558 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_aks_job_execution.py +769 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_aks_nodepool_guard.py +141 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_application.py +977 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_application_completion.py +151 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_application_input_recovery.py +107 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_application_recovery.py +116 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_approval_input.py +24 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_catalog_checkpoint.py +122 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_catalog_review.py +251 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_checkpoint_failure.py +127 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_console_publish.py +174 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_database_principals.py +41 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_deploy.py +638 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_development_authority.py +166 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_foundation_adoption.py +87 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_foundation_transition.py +767 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_host.py +4608 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_host_rebind.py +226 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_host_residual.py +104 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_host_state.py +145 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_host_values.py +563 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_kubernetes_tools.py +100 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_license_installation.py +177 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_management_egress.py +83 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_migration_evidence.py +38 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_operational_evidence.py +356 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_planned_outputs.py +147 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_private_access_probe.py +100 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_product_profile.py +110 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_remote_prepare.py +442 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_residual_apply.py +540 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_residual_successor.py +431 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_review.py +266 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_service_update_finalization.py +116 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_service_update_recovery.py +277 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_stage_targets.py +325 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_status.py +67 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_terraform_environment.py +237 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_transfer_cleanup.py +237 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/standalone_trial_activation.py +193 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/state.py +434 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/state_handoff.py +253 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/status_projection.py +97 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/support_install.py +257 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/target.py +46 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/trust/capabilities.json +62 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/trust/deployment-bundle-root.pub +3 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/trust/deployment-release-root.pub +3 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/trust/upstream-signing-key.pub +3 -0
- fdai_deployment_cli-0.1.2/src/fdai_deployment_cli/trust_roots.py +50 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: fdai-deployment-cli
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Installable FDAI deployment and subscription genesis CLI
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Requires-Dist: cryptography<51,>=45
|
|
7
|
+
Requires-Dist: fdai-service-contracts==0.1.0
|
|
8
|
+
Requires-Dist: rich<15,>=14
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
|
|
11
|
+
# FDAI Deployment CLI
|
|
12
|
+
|
|
13
|
+
`fdai-deployment-cli` installs the `fdaictl` command. You can install it from a connected package
|
|
14
|
+
source or from a small signed offline wheelhouse. Package installation does not authenticate to
|
|
15
|
+
Azure or grant deployment authority.
|
|
16
|
+
|
|
17
|
+
## Install from a signed offline package
|
|
18
|
+
|
|
19
|
+
The offline package contains the CLI wheel, its dependency wheels, one requirements file, one
|
|
20
|
+
checksum list, and one detached Ed25519 signature.
|
|
21
|
+
|
|
22
|
+
Verify and install it with standard tools:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
tar -xzf fdai-deployment-cli-0.1.1-offline.tar.gz
|
|
26
|
+
cd package
|
|
27
|
+
openssl pkeyutl -verify -pubin \
|
|
28
|
+
-inkey /private/trusted-package-signer.pub \
|
|
29
|
+
-rawin -in SHA256SUMS -sigfile SHA256SUMS.sig
|
|
30
|
+
sha256sum -c SHA256SUMS
|
|
31
|
+
python -m pip install --no-index --find-links wheels -r requirements.txt
|
|
32
|
+
fdaictl --version
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The trusted public key should come from the operator, not from the package being verified. Pip
|
|
36
|
+
handles interpreter, ABI, platform, dependency, and installation compatibility.
|
|
37
|
+
|
|
38
|
+
## Build the offline package
|
|
39
|
+
|
|
40
|
+
Use one operator-held Ed25519 private key:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
scripts/deployment/release/build-signed-python-package.sh \
|
|
44
|
+
--out /private/fdai-python-package \
|
|
45
|
+
--signing-key /private/deployment-signing-key.pem
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The private key must be an owner-only mode-`0600` file. The builder produces:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
fdai-python-package/
|
|
52
|
+
fdai-deployment-cli-0.1.1-offline.tar.gz
|
|
53
|
+
signer.pub
|
|
54
|
+
package/
|
|
55
|
+
INSTALL.txt
|
|
56
|
+
requirements.txt
|
|
57
|
+
SHA256SUMS
|
|
58
|
+
SHA256SUMS.sig
|
|
59
|
+
wheels/
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
No TUF root, nested bundle signature, artifact profile, SBOM, provenance document, deployment
|
|
63
|
+
appliance, runtime image, or Azure receipt is required to complete the Python package.
|
|
64
|
+
|
|
65
|
+
## Install from a clone
|
|
66
|
+
|
|
67
|
+
For connected development, use the locked repository environment:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv tool install --from ./packages/deployment-cli fdai-deployment-cli
|
|
71
|
+
fdaictl --version
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
See the
|
|
75
|
+
[deployment quickstart](../../docs/user-guide/deploy-quickstart.md#install-the-command-once)
|
|
76
|
+
for PATH setup, updates, and editable development.
|
|
77
|
+
|
|
78
|
+
## Use the command
|
|
79
|
+
|
|
80
|
+
Run `fdaictl --help` for the current command tree. Common entry points include:
|
|
81
|
+
|
|
82
|
+
| Command | Purpose |
|
|
83
|
+
|---------|---------|
|
|
84
|
+
| `fdaictl version` | Show the installed CLI version. |
|
|
85
|
+
| `fdaictl doctor` | Check local tools and Azure authentication. |
|
|
86
|
+
| `fdaictl provision inspect` | Inspect a target without changing it. |
|
|
87
|
+
| `fdaictl provision azure` | Start the guarded Azure deployment coordinator. |
|
|
88
|
+
| `fdaictl onboard guided --simulate` | Rehearse the finite stage graph without Azure changes. |
|
|
89
|
+
|
|
90
|
+
Package verification and Azure deployment are separate operations. Azure plans, approvals, Managed
|
|
91
|
+
Identity, recovery, migrations, service health, and cleanup remain deployment-owner controls after
|
|
92
|
+
the CLI is installed.
|
|
93
|
+
|
|
94
|
+
## Progress output
|
|
95
|
+
|
|
96
|
+
Interactive text mode shows the current deployment phase and elapsed time. Use `--progress plain`
|
|
97
|
+
for line-oriented logs, `--progress off` to hide progress, or `--output json` for machine output.
|
|
98
|
+
Progress is not readiness evidence; the final deployment receipts remain authoritative.
|
|
99
|
+
|
|
100
|
+
## Test
|
|
101
|
+
|
|
102
|
+
Run the package tests with:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
uv run --project packages/deployment-cli pytest -q --no-cov packages/deployment-cli/tests
|
|
106
|
+
uv run pytest -q --no-cov tests/integration/scripts/test_package_assurance.py \
|
|
107
|
+
tests/integration/scripts/test_signed_python_package.py
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
See [Package Assurance](../../docs/roadmap/architecture/package-assurance.md) for the minimal signing
|
|
111
|
+
contract and [Installable Deployment CLI](../../docs/roadmap/deployment/installable-deployment-cli.md)
|
|
112
|
+
for Azure deployment behavior.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# FDAI Deployment CLI
|
|
2
|
+
|
|
3
|
+
`fdai-deployment-cli` installs the `fdaictl` command. You can install it from a connected package
|
|
4
|
+
source or from a small signed offline wheelhouse. Package installation does not authenticate to
|
|
5
|
+
Azure or grant deployment authority.
|
|
6
|
+
|
|
7
|
+
## Install from a signed offline package
|
|
8
|
+
|
|
9
|
+
The offline package contains the CLI wheel, its dependency wheels, one requirements file, one
|
|
10
|
+
checksum list, and one detached Ed25519 signature.
|
|
11
|
+
|
|
12
|
+
Verify and install it with standard tools:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
tar -xzf fdai-deployment-cli-0.1.1-offline.tar.gz
|
|
16
|
+
cd package
|
|
17
|
+
openssl pkeyutl -verify -pubin \
|
|
18
|
+
-inkey /private/trusted-package-signer.pub \
|
|
19
|
+
-rawin -in SHA256SUMS -sigfile SHA256SUMS.sig
|
|
20
|
+
sha256sum -c SHA256SUMS
|
|
21
|
+
python -m pip install --no-index --find-links wheels -r requirements.txt
|
|
22
|
+
fdaictl --version
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The trusted public key should come from the operator, not from the package being verified. Pip
|
|
26
|
+
handles interpreter, ABI, platform, dependency, and installation compatibility.
|
|
27
|
+
|
|
28
|
+
## Build the offline package
|
|
29
|
+
|
|
30
|
+
Use one operator-held Ed25519 private key:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
scripts/deployment/release/build-signed-python-package.sh \
|
|
34
|
+
--out /private/fdai-python-package \
|
|
35
|
+
--signing-key /private/deployment-signing-key.pem
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The private key must be an owner-only mode-`0600` file. The builder produces:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
fdai-python-package/
|
|
42
|
+
fdai-deployment-cli-0.1.1-offline.tar.gz
|
|
43
|
+
signer.pub
|
|
44
|
+
package/
|
|
45
|
+
INSTALL.txt
|
|
46
|
+
requirements.txt
|
|
47
|
+
SHA256SUMS
|
|
48
|
+
SHA256SUMS.sig
|
|
49
|
+
wheels/
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
No TUF root, nested bundle signature, artifact profile, SBOM, provenance document, deployment
|
|
53
|
+
appliance, runtime image, or Azure receipt is required to complete the Python package.
|
|
54
|
+
|
|
55
|
+
## Install from a clone
|
|
56
|
+
|
|
57
|
+
For connected development, use the locked repository environment:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
uv tool install --from ./packages/deployment-cli fdai-deployment-cli
|
|
61
|
+
fdaictl --version
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
See the
|
|
65
|
+
[deployment quickstart](../../docs/user-guide/deploy-quickstart.md#install-the-command-once)
|
|
66
|
+
for PATH setup, updates, and editable development.
|
|
67
|
+
|
|
68
|
+
## Use the command
|
|
69
|
+
|
|
70
|
+
Run `fdaictl --help` for the current command tree. Common entry points include:
|
|
71
|
+
|
|
72
|
+
| Command | Purpose |
|
|
73
|
+
|---------|---------|
|
|
74
|
+
| `fdaictl version` | Show the installed CLI version. |
|
|
75
|
+
| `fdaictl doctor` | Check local tools and Azure authentication. |
|
|
76
|
+
| `fdaictl provision inspect` | Inspect a target without changing it. |
|
|
77
|
+
| `fdaictl provision azure` | Start the guarded Azure deployment coordinator. |
|
|
78
|
+
| `fdaictl onboard guided --simulate` | Rehearse the finite stage graph without Azure changes. |
|
|
79
|
+
|
|
80
|
+
Package verification and Azure deployment are separate operations. Azure plans, approvals, Managed
|
|
81
|
+
Identity, recovery, migrations, service health, and cleanup remain deployment-owner controls after
|
|
82
|
+
the CLI is installed.
|
|
83
|
+
|
|
84
|
+
## Progress output
|
|
85
|
+
|
|
86
|
+
Interactive text mode shows the current deployment phase and elapsed time. Use `--progress plain`
|
|
87
|
+
for line-oriented logs, `--progress off` to hide progress, or `--output json` for machine output.
|
|
88
|
+
Progress is not readiness evidence; the final deployment receipts remain authoritative.
|
|
89
|
+
|
|
90
|
+
## Test
|
|
91
|
+
|
|
92
|
+
Run the package tests with:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uv run --project packages/deployment-cli pytest -q --no-cov packages/deployment-cli/tests
|
|
96
|
+
uv run pytest -q --no-cov tests/integration/scripts/test_package_assurance.py \
|
|
97
|
+
tests/integration/scripts/test_signed_python_package.py
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
See [Package Assurance](../../docs/roadmap/architecture/package-assurance.md) for the minimal signing
|
|
101
|
+
contract and [Installable Deployment CLI](../../docs/roadmap/deployment/installable-deployment-cli.md)
|
|
102
|
+
for Azure deployment behavior.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "fdai-deployment-cli"
|
|
3
|
+
version = "0.1.2"
|
|
4
|
+
description = "Installable FDAI deployment and subscription genesis CLI"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12"
|
|
7
|
+
dependencies = [
|
|
8
|
+
"cryptography>=45,<51",
|
|
9
|
+
"fdai-service-contracts==0.1.0",
|
|
10
|
+
"rich>=14,<15",
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
[dependency-groups]
|
|
14
|
+
dev = [
|
|
15
|
+
"mypy>=1.13,<2",
|
|
16
|
+
"pyte>=0.8,<0.9",
|
|
17
|
+
"pytest>=9.0.3,<10",
|
|
18
|
+
"pytest-cov>=5,<7",
|
|
19
|
+
"ruff>=0.7,<1",
|
|
20
|
+
]
|
|
21
|
+
release = ["pip==26.2.1"]
|
|
22
|
+
|
|
23
|
+
[project.scripts]
|
|
24
|
+
fdaictl = "fdai_deployment_cli.cli:main"
|
|
25
|
+
|
|
26
|
+
[build-system]
|
|
27
|
+
requires = ["hatchling==1.31.0"]
|
|
28
|
+
build-backend = "hatchling.build"
|
|
29
|
+
|
|
30
|
+
[tool.hatch.build.targets.wheel]
|
|
31
|
+
packages = ["src/fdai_deployment_cli"]
|
|
32
|
+
|
|
33
|
+
[tool.hatch.build.targets.sdist]
|
|
34
|
+
include = ["src/fdai_deployment_cli", "pyproject.toml", "README.md"]
|
|
35
|
+
|
|
36
|
+
[tool.ruff]
|
|
37
|
+
line-length = 100
|
|
38
|
+
target-version = "py312"
|
|
39
|
+
|
|
40
|
+
[tool.mypy]
|
|
41
|
+
python_version = "3.12"
|
|
42
|
+
strict = true
|
|
43
|
+
files = ["src/fdai_deployment_cli"]
|
|
44
|
+
|
|
45
|
+
[tool.pytest.ini_options]
|
|
46
|
+
addopts = ["-ra", "--strict-markers", "--strict-config"]
|
|
47
|
+
testpaths = ["tests"]
|
|
48
|
+
|
|
49
|
+
[tool.uv.sources]
|
|
50
|
+
fdai-service-contracts = { path = "../service-contracts", editable = true }
|