Machine

Update Machine

Update a Machine

Instance Type attribute updates, maintenance attribute updates and labels updates must be specified in separate requests. They cannot be processed at the same time.

Some attributes can only be updated by Provider, while others can be updated by Provider or a privileged Tenant.

For Infrastructure Providers: Org must have an Infrastructure Provider entity and own the Site that the Machine belongs to. User must have authorization role with PROVIDER_ADMIN suffix.

For Tenants: Org must have a Tenant with TargetedInstanceCreation capability enabled and Tenant Account with Machine's Provider. User must have authorization role with TENANT_ADMIN suffix.

patch/v2/org/{org}/nico/machine/{machineId}

Request

  • Base URL
    https://nico-rest-api.nico.svc.cluster.local
  • URL
    https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/machine/{machineId}
  • Auth
    HTTP bearer

Request body

instanceTypeIdstring uuid nullable

Update the Instance Type of the Machine. Cannot be specified when clearing Instance Type. Can only be updated by Provider.

clearInstanceTypeboolean nullable

Set to true to clear the existing Instance Type. Cannot be specified if Instance Type ID is specified. Can only be set by Provider.

setMaintenanceModeboolean nullable

Set to true to enable maintenance mode and to false to disable maintenance mode. Can be set by Provider or privileged Tenant.

maintenanceMessagestring nullable

Describes the reason for moving Machine into maintenance mode. Required when setMaintenanceMode is true. Omit or set to null when setMaintenanceMode is omitted, null, or false; a non-null message is rejected in those cases. Can be updated by Provider or privileged Tenant.

labelsLabels

Label keys must not be empty or whitespace-only. Keys and values may contain at most 255 characters and must not contain the Unicode NUL character (U+0000). Empty values are allowed.

Example request

{
  "instanceTypeId": "2e016c02-2c67-48aa-b289-5d3ca6320c52"
}

Response

OK

idstring

Unique ID of Machine

infrastructureProviderIdstring uuid

ID of the Provider that owns the Machine

siteIdstring uuid

ID of the Site the Machine belongs to

instanceTypeIdstring uuid nullable

ID of the Instance Type, if assigned

instanceIdstring uuid nullable

ID of the associated Instance, or null when unassigned. The association remains during termination until Instance inventory confirms deletion. A non-null value precludes Ready status.

tenantIdstring uuid nullable

ID of the Tenant that owns the Instance if the Machine is assigned to one

controllerMachineIdstring

ID of the Machine at Site, now same as the primary ID

controllerMachineTypestring nullable

Denotes architecture (x86 vs ARM) of the Machine

hwSkuDeviceTypestring nullable

SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.

vendorstring nullable

Name of the vendor of the Machine

productNamestring nullable

Product name of the Machine

serialNumberstring nullable

Serial number of the Machine, only visible to Provider

associatedDpuMachineIdsstring[]

IDs of the DPU Machines attached to this host Machine

maintenanceMessagestring nullable

If the Machine is in maintenance mode, this message will typically describe the reason and how long it is expected to be in maintenance

scoutVersionstring nullable

Scout version reported by the Machine, if known

labelsLabels

Label keys must not be empty or whitespace-only. Keys and values may contain at most 255 characters and must not contain the Unicode NUL character (U+0000). Empty values are allowed.

status'Initializing' | 'Ready' | 'Reset' | 'Maintenance' | 'InUse' | 'Error' | 'Decommissioning' | 'Decommissioned' | 'Unknown'

Machine status combines the observed Core lifecycle with REST Instance assignment. A Ready Machine becomes InUse when REST assigns it, and remains InUse if Core reports Ready while the REST assignment still exists. Error, Maintenance, Initializing, and other non-Ready states retain precedence. When Instance deletion clears the assignment, InUse returns to Ready only if the retained Core snapshot reports Ready; otherwise fresh Machine inventory establishes the next status. Ready is not a reservation and does not guarantee that a subsequent Instance creation will succeed.

isUsableByTenantboolean

Indicates whether the machine is usable by or currently in use by a tenant. It does not indicate that a Machine is available for Instance creation.

createdstring date-time

Date/time when the Machine was created

updatedstring date-time

Date/time when the Machine was last updated

Example response

{
  "id": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  "infrastructureProviderId": "e94bcfda-f6cb-42e4-80ec-516811e5abbf",
  "siteId": "60189e9c-7d12-438c-b9ca-6998d9c364b1",
  "instanceTypeId": "2e016c02-2c67-48aa-b289-5d3ca6320c52",
  "instanceId": "59bdaaff-3998-4fd9-a140-8749beeb605e",
  "tenantId": "99819e6e-4017-4021-9edd-ea1bdf4dbd59",
  "controllerMachineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  "controllerMachineType": "x86_64",
  "hwSkuDeviceType": "cpu",
  "vendor": "Lenovo",
  "productName": "ThinkSystem SR670 V2",
  "serialNumber": "J1060ACR.D3KS2CS001G",
  "machineCapabilities": [
    {
      "type": "CPU",
      "name": "Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz",
      "frequency": "3.0GHz",
      "cores": 18,
      "threads": 36,
      "count": 2
    },
    {
      "type": "Memory",
      "name": "Corsair Vengeance LPX",
      "capacity": "32GB",
      "count": 4
    }
  ],
  "machineInterfaces": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
      "controllerInterfaceId": "ad3dac49-741d-4c1f-815c-c020127c532f",
      "controllerSegmentId": "f2207a3c-1847-42e5-bf2c-cd015f87a2bc",
      "subnetId": "1f232bf0-7b90-456e-b9b0-38d9fea4171a",
      "hostname": "example.com",
      "isPrimary": true,
      "macAddress": "00:00:5e:00:53:af",
      "ipAddresses": [
        "192.156.7.23",
        "202.88.37.112"
      ],
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z"
    }
  ],
  "maintenanceMessage": null,
  "scoutVersion": "2.6.1",
  "health": {
    "source": "aggregate-host-health",
    "observedAt": null,
    "successes": [
      {
        "id": "BgpDaemonEnabled",
        "target": null
      },
      {
        "id": "BgpStats",
        "target": null
      },
      {
        "id": "DhcpServer",
        "target": null
      },
      {
        "id": "DpuDiskUtilizationCheck",
        "target": null
      },
      {
        "id": "FanSpeed",
        "target": "System Board Fan1A"
      },
      {
        "id": "PowerSupply",
        "target": "PS1 Status"
      },
      {
        "id": "Temperature",
        "target": "CPU1 Temp"
      },
      {
        "id": "Temperature",
        "target": "System Board Exhaust Temp"
      },
      {
        "id": "Voltage",
        "target": "CPU1 1P8 PG"
      }
    ],
    "alerts": [
      {
        "id": "FailedValidationTest",
        "target": "DcgmFullShort",
        "inAlertSince": null,
        "message": "Failed validation test:\nName:DcgmFullShort\nCommand:dcgmi\nArgs:diag -r 2",
        "tenantMessage": null,
        "classifications": [
          "PreventAllocations"
        ]
      }
    ]
  },
  "labels": {
    "RackIdentifier": "GVX11F01C02",
    "ServerName": "SITE1-C03-Server-02"
  },
  "status": "Error",
  "isUsableByTenant": false,
  "statusHistory": [
    {
      "status": "Error",
      "message": "Machine has one or more health probe alerts that prevents allocation",
      "created": "2019-08-24T14:15:22Z",
      "updated": "2019-08-24T14:15:22Z"
    }
  ],
  "created": "2019-08-24T14:15:22Z",
  "updated": "2019-08-24T14:15:22Z"
}

Changes