Skip to content

Commit eb02008

Browse files
committed
Address review feedback
1 parent 30414d0 commit eb02008

10 files changed

Lines changed: 23 additions & 17 deletions

File tree

docs/configuration/tenant-management-keycloak.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,16 @@ Two `nicocli` flag defaults do not match a `setup.sh` deployment and have to be
202202
`--keycloak-realm` defaults to `nico-dev` and `--client-id` defaults to `nico-api`, both of
203203
which are Kustomize dev values.
204204

205+
`--keycloak-url`, `--keycloak-realm`, and `--client-id` are global flags, so they go before
206+
`login`. Only `--client-secret`, `--username`, and `--password` belong to the subcommand.
207+
Putting a global flag after `login` fails with `flag provided but not defined`.
208+
205209
```bash
206-
nicocli login \
210+
nicocli \
207211
--keycloak-url http://keycloak.nico-rest:8082 \
208212
--keycloak-realm nico \
209213
--client-id nico-rest \
214+
login \
210215
--client-secret nico-local-secret \
211216
--username tenant-admin@acme-corp.example
212217
```

docs/configuration/tenant_management.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ $ nicocli tenant current
100100
| `id` | UUID identifier for the tenant, used in all subsequent API calls |
101101
| `org` | Organization name (matches your config `api.org`) |
102102
| `orgDisplayName` | Human-readable name pulled from the IdP's org metadata |
103-
| `capabilities.targetedInstanceCreation` | **Deprecated, removal scheduled for October 1, 2026.** A read-only aggregate across the tenant's `Ready` tenant accounts, not a setting on the tenant. It is `true` only when every such account enables the capability and no site override disables it, and it is always `false` on embedded `tenantSummary` objects. A Provider Admin configures the capability per tenant account, and optionally per site. See [Granting Targeted Instance Creation](#granting-targeted-instance-creation). |
103+
| `capabilities.targetedInstanceCreation` | **Deprecated, removal scheduled for October 1, 2026.** A read-only aggregate across the tenant's `Ready` tenant accounts, not a setting on the tenant. It is `true` only when every such account enables the capability and no site override disables it, and it is absent rather than `false` when disabled: the field is omitted, and on the `tenantSummary` objects embedded in other resources `capabilities` is always `{}`. A Provider Admin configures the capability per tenant account, and optionally per site. See [Granting Targeted Instance Creation](#granting-targeted-instance-creation). |
104104

105105
### Verifying the Tenant
106106

@@ -206,7 +206,7 @@ Error: API error 400: Tenant Account status is not Invited
206206

207207
- Create an instance against a specific machine ID, or narrow placement with a machine label selector.
208208
- Set `isRepairTenant: true` when releasing an instance, which is what the repair tenant workflow requires.
209-
- Read a set of otherwise provider-only resources, including machines, machine health, SKUs, racks, trays, and expected machines, across the sites of any provider it holds a `Ready` tenant account with.
209+
- Read a set of otherwise provider-only resources, including machines, machine health, SKUs, racks, trays, and expected machines, at the sites of a provider it holds a `Ready` tenant account with, wherever the capability is effective. A site override that disables it also removes these reads at that site.
210210
- Receive alternative VPC routing profiles from `tenant/current/routing-profile`.
211211

212212
A Provider Admin configures it per tenant account with the `siteCapabilities` field. This is
@@ -262,8 +262,9 @@ nicocli tenant-account list --tenant-id <tenant-uuid>
262262
> **Do not read `capabilities.targetedInstanceCreation` from `nicocli tenant current`.** It is
263263
> a deprecated read-only aggregate, scheduled for removal on **October 1, 2026**. It reports
264264
> `true` only when every `Ready` tenant account enables the capability and no site override
265-
> disables it, and it is always `false` on the `tenantSummary` objects embedded in other
266-
> resources. Use `tenant-account list` instead.
265+
> disables it, and it is omitted rather than returned as `false` otherwise, so a client cannot
266+
> branch on a boolean here. On the `tenantSummary` objects embedded in other resources it is
267+
> always omitted, leaving `"capabilities": {}`. Use `tenant-account list` instead.
267268
268269
## Instance Types
269270

docs/manuals/repair/online_repair.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ If online repair cannot fix the issue, clear online repair first and then releas
88

99
This page is intended for tenant admins and platform operators writing tenant-facing runbooks.
1010

11-
The caller must have access to the Infra Controller REST API through an API profile such as `nico-stg`. The online repair operation is allowed for provider admins and privileged tenant admins. In tenant workflows, this means the tenant must have the required privileged capability for repair operations, such as targeted instance creation access. See [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation).
11+
The caller must have access to the Infra Controller REST API through an API profile such as `nico-stg`. The online repair operation is allowed for provider admins and privileged tenant admins. In tenant workflows, this means the tenant must have the required privileged capability for repair operations, such as effective targeted instance creation at the site. See [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation) for what makes it effective.
1212

1313
## What Online Repair Does
1414

docs/manuals/repair/overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ In a multi-Tenant Site, NICo allows certain Tenants to be designated as privileg
3535
- Update the labels of a Machine to indicate repair related metadata
3636
- Create a new Instance by specifying a Machine ID
3737

38-
Tenant privileges are described in terms of Capabilities. A Tenant is privileged when its Tenant Account with the Provider is `Ready` and has the `targetedInstanceCreation` capability enabled.
38+
Tenant privileges are described in terms of Capabilities. A Tenant is privileged at a Site when its Tenant Account with that Site's Provider is `Ready` and `targetedInstanceCreation` is effective there, meaning the account default enables it and no Site override turns it off.
3939

4040
A Provider Admin grants the capability by setting `siteCapabilities` on the Tenant Account, through [`PATCH /v2/org/{org}/nico/tenant/account/{accountId}`](https://docs.nvidia.com/infra-controller/rest-api-reference/api-reference/tenant-account/update-tenant-account). This works for regular Tenants as well as Service Account orgs, and the capability can be set as an account-wide default or overridden per Site. For the payload rules, the per-Site override behavior, and how the effective value resolves, see [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation).
4141

docs/manuals/repair/release_instance_for_repair.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ Normal tenants should omit `isRepairTenant` or set it to `false`.
167167
}
168168
```
169169

170-
`isRepairTenant: true` is for repair tenants that are releasing a machine after investigation or repair. It requires the tenant to have the targeted instance creation capability, which a Provider Admin grants on the tenant account; see [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation). Do not set this flag for the original tenant's release-for-repair request.
170+
`isRepairTenant: true` is for repair tenants that are releasing a machine after investigation or repair. It requires effective targeted instance creation for the tenant, which a Provider Admin grants on the tenant account; see [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation) for what makes it effective. Do not set this flag for the original tenant's release-for-repair request.
171171

172172
## After Release
173173

docs/manuals/repair/repair_integration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Repair tenants or repair automation use targeted provisioning to claim machines
7272
- The original tenant releases the instance with `machineHealthIssue`.
7373
- The repair tenant releases the repair instance after investigation or repair.
7474
- Repair tenant releases should set `isRepairTenant: true`.
75-
- `isRepairTenant: true` requires the tenant to have the targeted instance creation capability, granted by a Provider Admin on the tenant account. See [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation).
75+
- `isRepairTenant: true` requires effective targeted instance creation for the tenant, granted by a Provider Admin on the tenant account. See [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation) for what makes it effective.
7676
- The repair tenant should set the machine label `repair_status: InProgress` after claiming the machine, then set the final `repair_status` before releasing the repair instance. This prevents stale completion labels from older repair attempts.
7777
- A final `repair_status: Completed` with no new issue returns the machine toward the ready pool; failed, incomplete, missing, or unknown status keeps the machine blocked for repair-failed or manual handling.
7878

docs/manuals/repair/repair_tenant_workflow.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ For the original tenant release path, see [Release Instance for Full Repair](rel
66

77
## Audience and Access
88

9-
The caller needs tenant admin access for the dedicated repair tenant, and the repair tenant must have targeted instance creation enabled. A Provider Admin grants that on the repair tenant's tenant account; see [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation). The repair tenant also needs access to the site, VPC, operating system, and network resources used for repair instances.
9+
The caller needs tenant admin access for the dedicated repair tenant, and the repair tenant must have effective targeted instance creation at the site being repaired. A Provider Admin grants that on the repair tenant's tenant account; see [Granting Targeted Instance Creation](../../configuration/tenant_management.md#granting-targeted-instance-creation) for what makes it effective. The repair tenant also needs access to the site, VPC, operating system, and network resources used for repair instances.
1010

1111
The repair tenant release path uses `isRepairTenant: true`. The REST API only accepts this flag from tenants with targeted instance creation capability.
1212

@@ -314,7 +314,7 @@ Provider tooling can also inspect the lower-level health overrides described in
314314

315315
| Error | Meaning | Action |
316316
|---|---|---|
317-
| `Tenant does not have capability to create Instances using specific Machine ID` | The repair tenant is missing targeted instance creation, its tenant account is not `Ready`, or a site override disables it. | Have a Provider Admin [grant the capability](../../configuration/tenant_management.md#granting-targeted-instance-creation) on the repair tenant's account, or use the correct repair tenant. |
317+
| `Tenant does not have capability to create Instances using specific Machine ID` | Targeted instance creation is not effective for the repair tenant at this site: the capability is unset, the tenant account is not `Ready`, or a site override disables it. | Have a Provider Admin [grant the capability](../../configuration/tenant_management.md#granting-targeted-instance-creation) on the repair tenant's account, or use the correct repair tenant. |
318318
| `Machine is not in Ready state, but it can be provisioned by setting allowUnhealthyMachine to true` | The machine can be targeted for repair but the create request omitted `allowUnhealthyMachine`. | Add `allowUnhealthyMachine: true` and retry. |
319319
| `Machine is assigned to an Instance` | The machine is still assigned elsewhere. | Confirm the original tenant release completed before claiming the machine. |
320320
| `Tenant does not have capability to set IsRepairTenant` | The release caller is not a targeted-instance-capable tenant. | Release from the repair tenant or use a properly privileged tenant. |

docs/provisioning/ingesting-hosts-rest-api.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Make sure the following are in place before you begin:
88

99
1. NICo is deployed and the REST API service is reachable at a known URL.
1010
1. You have `nicocli` installed (`make nico-cli` from the infra-controller repo) and a working config under `~/.nico/`. For setup, authentication, and config conventions, see the [Quick Start Guide](../getting-started/quick-start.md) and the nicocli reference guide.
11-
1. You hold the `PROVIDER_ADMIN` role in the org you are operating in. Tenant Admins whose tenant account has [targeted instance creation](../configuration/tenant_management.md#granting-targeted-instance-creation) enabled for the site can also register Expected Machines, but the canonical path is provider-side.
11+
1. You hold the `PROVIDER_ADMIN` role in the org you are operating in. Tenant Admins with [effective targeted instance creation](../configuration/tenant_management.md#granting-targeted-instance-creation) at the site can also register Expected Machines, but the canonical path is provider-side.
1212
1. DHCP requests from all managed host BMC networks have been forwarded to the NICo DHCP service.
1313
1. For every host you plan to register, you have:
1414
- The MAC address of the host BMC
@@ -28,7 +28,7 @@ nicocli user get
2828

2929
An Expected Machine pre-registers a physical machine so NICo can authenticate to it on discovery and accept it for ingestion. Each Expected Machine carries the factory default BMC credentials NICo uses for first contact, plus identifying information (chassis serial, optional rack/SKU metadata).
3030

31-
The Expected Machine endpoints are scoped per-org per-site. All requests require `PROVIDER_ADMIN`, or `TENANT_ADMIN` with [targeted instance creation](../configuration/tenant_management.md#granting-targeted-instance-creation) in force at that site.
31+
The Expected Machine endpoints are scoped per-org per-site. All requests require `PROVIDER_ADMIN`, or `TENANT_ADMIN` with [effective targeted instance creation](../configuration/tenant_management.md#granting-targeted-instance-creation) at that site.
3232

3333
### Single Machine
3434

0 commit comments

Comments
 (0)