universe.admin.provisioning.v1

Note

This API is available for CloudAdmin only

Proto file and generated GO client for the API can be found in universe-api repo

This API is served by universe-infra-provisioning-manager

The intent of this API is to provide a way to provision DPUs in the infrastructure cluster by creating Universe provisioning CRDs.

check Manual GRPC API usage doc before start

Here some examples using ‘grpcurl’ tool to access the API:

Note

Replace $API_GW_ADDRESS with address of iCP API GW in your environment

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"name": "tenantA"}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.CreateTenant

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"name": "settingsA"}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.DeleteSettings

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.ListSettings

Note

Update methods require the full object and not only the fields needed to be updated.

Filtering

List APIs have optional filtering options: Field Matcher, List Matcher and Map Matcher. Multiple filters can be used on the same API call.

Here some examples of filters:

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"filters":[{"field_matcher":{"field_path":".name","operation":1,"values":["tenantA"]}}]}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.ListTenant

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"filters": [{"map_matcher": {"map_path": ".labels","field_matchers":[{"field_path":"$","operation":1,"values":["blue"]}],"key_matcher": {"operation": 1,"keys": ["color"]}}}]}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.ListDPU

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"filters": [{"list_matcher": {"list_path": ".packages","field_matchers":[{"field_path":".version","operation":1,"values":["0.01"]}]}}]}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.ListSettings

Provisioning

Here some examples of DPU provisioning:

Create credential

The provisioning components need BMC’s credentials to be able to access the DPU’s BMC. In the DPU BMC, a privileged BMC user needs to be created, and also it is needed to enable permissions to execute IPMI commands remotely for users with admin permissions.

Copy
Copied!
            

cat << EOF | tee cred.json { "cred":{ "name":"dpu1-host-a-secret", "user_name": <user name of BMC>, "password": <password of BMC> } } EOF grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d "$(cat cred.json | tr -d '\n')" \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.CreateCredential

Create settings

Settings includes the information for DPU to do provisioning.

‘osImage’ is required. This is used to deploy DPU OS image.

‘bmcFirmwareImage’ is optional. This is used to update BMC firmware.

‘firmwareImage’ is optional. This is used to update MLX firmware manager.

‘staticPods’ is optional. Static Pods are managed directly by the kubelet daemon on a specific node, without the API server observing them. The kubelet on DPU will start the static Pods after DPU provisioning. It should be passed in base64 format.

‘preStageScripts’ is optional. List of custom scripts executed before kubeadm init/join. Scripts are launched in the specified order and should be passed in base64 format. Reboot operation usage is prohibited inside scripts.

‘postStageScripts’ is optional. List of custom scripts executed after kubeadm init/join. Scripts are launched in the specified order and should be passed in base64 format. Reboot operation usage is prohibited inside scripts.

The universe-infra-provisioning-bootp components integrates a http server which provides ‘osImage’, ‘bmcFirmwareImage’, ‘firmwareImage’ images and image’s md5sum download service.

Here is the sample of ‘settings’ creation request:

Copy
Copied!
            

# Static pod RULE_TEMPLATE=$(cat << EOM | base64 -w0 { "apiVersion": "v1", "kind": "Pod", "metadata": { "name": "nginx" }, "spec": { "containers": [ { "name": "nginx", "image": "nginx:1.14.2", "ports": [ { "containerPort": 80 } ] } ] } } EOM ) # Pre stage script cat << EOS | tee script_pre.sh #!/bin/bash echo It is pre stage script EOS SCRIPT_PRE_BASE64=$(base64 script_pre.sh) # Post stage script cat << EOS | tee script_post.sh #!/bin/bash echo It is post stage script EOS SCRIPT_POST_BASE64=$(base64 script_post.sh) cat << EOF | tee settings.json { "settings":{ "linkType": "LINK_TYPE_ETH", "name": dpu1-host-a-settings", "osImage": { "url": "<URL of OS image>", "checksum": "<URL of OS image's md5sum>", "checksumType": "CHECKSUM_TYPE_MD5", "diskFormat": "DISK_FORMAT_RAW" }, "bmcFirmwareImage": { "url": "<URL of BMC firmware image>", "checksum": "<URL of BMC firmware image's md5sum>", "checksumType": "CHECKSUM_TYPE_MD5" }, "firmwareImage": { "url": "<URL of MLX firmware manager image>", "checksum": "<URL of MLX firmware manager image's md5sum>", "checksumType": "CHECKSUM_TYPE_MD5" }, "staticPods": ["POD_SYMBOL"], "preStageScripts": ["${SCRIPT_PRE_BASE64}"], "postStageScripts": ["${SCRIPT_POST_BASE64}"] } } EOF sed -i "s/POD_SYMBOL/${RULE_TEMPLATE}/g" settings.json grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d "$(cat settings.json | tr -d '\n')" \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.CreateSettings

Create host

Copy
Copied!
            

cat << EOF | tee host.json { "host":{ "name":"host-a" } } EOF grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d "$(cat host.json | tr -d '\n')" \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.CreateHost

Create DPU

Copy
Copied!
            

cat << EOF | tee dpu.json { "dpu":{ "name":"dpu1-host-a", "bmc":{ "url":"dpu://<BMC IP Address>", "credential_ref":{ "name":"dpu1-host-a-secret" } }, "boot_mac_address":"<DPU MAC Address>", "target_settings":{ "name":"dpu1-host-a-settings" }, "host_ref":{ "name": "host-a" } } } EOF grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d "$(cat dpu.json | tr -d '\n')" \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.CreateDPU

Get DPU

Copy
Copied!
            

grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \ -proto universe/admin/provisioning/v1/provisioning.proto \ -d '{"name": "dpu1-host-a"}' \ $API_GW_ADDRESS \ universe.admin.provisioning.v1.UniverseProvisioningService.GetDPU

Copy
Copied!
            

{ "dpu": { "name": "dpu1-host-a", "hostRef": { "name": "host-a", "uid": "" }, "bmc": { "url": "dpu://<BMC IP Address>", "credentialRef": { "name": "dpu1-host-a-secret", "namespace": "" } }, "bootMacAddress": "<DPU MAC Address>", "targetSettings": { "name": "dpu1-host-a-settings", "uid": "" }, "status": { "conditions": [ { "type": "Ready", "status": "STATUS_FALSE", "lastTransitionTime": "2022-11-09 12:38:23 +0000 UTC", "reason": "MachineStateProvisioning", "message": "" }, { "type": "ProvisioningStarted", "status": "STATUS_TRUE", "lastTransitionTime": "2022-11-09 12:38:23 +0000 UTC", "reason": "ProvisioningStarted", "message": "ProvisioningStarted" } ] } } }

Copy
Copied!
            

syntax = "proto3"; package universe.admin.provisioning.v1; // UniverseProvisioningService is a service used to perform CRUD operations on Universe Infra Provisioning Objects service UniverseProvisioningService { // create a new tenant, return error if tenant already exists rpc CreateTenant(CreateTenantRequest) returns (CreateTenantResponse) {} // delete existing tenant, return error if tenant does not exist rpc DeleteTenant(DeleteTenantRequest) returns (DeleteTenantResponse) {} // get specific instance of tenant, return error if tenant does not exist rpc GetTenant(GetTenantRequest) returns (GetTenantResponse) {} // list all tenants rpc ListTenant(ListTenantRequest) returns (ListTenantResponse) {} // create a new host, return error if host already exists rpc CreateHost(CreateHostRequest) returns (CreateHostResponse) {} // delete existing host, return error if host does not exist rpc DeleteHost(DeleteHostRequest) returns (DeleteHostResponse) {} // update existing host, return error if host does not exist rpc UpdateHost(UpdateHostRequest) returns (UpdateHostResponse) {} // get specific instance of host, return error if host does not exist rpc GetHost(GetHostRequest) returns (GetHostResponse) {} // list all hosts rpc ListHost(ListHostRequest) returns (ListHostResponse) {} // inform that the host admin required action was done // Notice, make sure that the required actions has been performed correctly, DCM will not validate that. rpc HostAdminActionDone(HostAdminActionDoneRequest) returns (HostAdminActionDoneResponse) {} rpc CreateCredential(CreateCredentialRequest) returns (CreateCredentialResponse) {} rpc DeleteCredential(DeleteCredentialRequest) returns (DeleteCredentialResponse) {} // create a new hostConfiguration, return error if hostConfigurationalready exists rpc CreateHostConfig(CreateHostConfigRequest) returns (CreateHostConfigResponse) {} // delete existing hostConfiguration, return error if hostConfigurationdoes not exist rpc DeleteHostConfig(DeleteHostConfigRequest) returns (DeleteHostConfigResponse) {} // get specific instance of hostConfiguration, return error if hostConfigurationdoes not exist rpc GetHostConfig(GetHostConfigRequest) returns (GetHostConfigResponse) {} // list all hostConfigurations rpc ListHostConfig(ListHostConfigRequest) returns (ListHostConfigResponse) {} // create a new DPU, return error if DPU already exists rpc CreateDPU(CreateDPURequest) returns (CreateDPUResponse) {} // delete existing DPU, return error if DPU does not exist rpc DeleteDPU(DeleteDPURequest) returns (DeleteDPUResponse) {} // update existing DPU, return error if DPU does not exist rpc UpdateDPU(UpdateDPURequest) returns (UpdateDPUResponse) {} // get specific instance of DPU, return error if DPU does not exist rpc GetDPU(GetDPURequest) returns (GetDPUResponse) {} // list all DPUs rpc ListDPU(ListDPURequest) returns (ListDPUResponse) {} // create a new rollout, return error if rollout already exists rpc CreateRollout(CreateRolloutRequest) returns (CreateRolloutResponse) {} // delete existing rollout, return error if rollout does not exist rpc DeleteRollout(DeleteRolloutRequest) returns (DeleteRolloutResponse) {} // update existing rollout, return error if rollout does not exist rpc UpdateRollout(UpdateRolloutRequest) returns (UpdateRolloutResponse) {} // get specific instance of rollout, return error if rollout does not exist rpc GetRollout(GetRolloutRequest) returns (GetRolloutResponse) {} // list all rollouts rpc ListRollout(ListRolloutRequest) returns (ListRolloutResponse) {} // create new settings, return error if settings already exist rpc CreateSettings(CreateSettingsRequest) returns (CreateSettingsResponse) {} // delete existing settings, return error if settings do not exist rpc DeleteSettings(DeleteSettingsRequest) returns (DeleteSettingsResponse) {} // get specific instance of settings, return error if settings do not exist rpc GetSettings(GetSettingsRequest) returns (GetSettingsResponse) {} // list all settings rpc ListSettings(ListSettingsRequest) returns (ListSettingsResponse) {} } // Tenant is a message that contains a Tenant object and its fields message Tenant { // unique name for tenant string name = 1; } // Host is a message that contains a Host object and its fields message Host { // Host.Status is a message that contains a Host status message Status { // conditions reflecting the current state of the host repeated Condition conditions = 1; } // unique name for Host string name = 1; //uuid of Host optional string uid = 2; // map of labels map<string, string> labels = 3; // status of the host optional Status status = 4; } // Host is a message that contains a BMC object and its fields message BMC { // URL for accessing the BMC controller on the network string url = 1; ObjectRef credential_ref = 2; } message ObjectRef { string name = 1; optional string namespace = 2; } // HostConfig is a message that contains a HostConfig object and its fields message HostConfig { // HostConfig.Status is a message that contains a HostConfiguration status message Status { // conditions reflecting the current state of the HostConfiguration repeated Condition conditions = 1; } // unique name for hostConfig string name = 1; // name of the host that this hostConfig points to string host_name = 2; // name of the tenant that this hostConfig points to string tenant_name = 3; // status of the hostConfig optional Status status = 4; } // DPU is a message that contains a DPU object and its fields message DPU { // DPU.ProvisioningStatus is a message that contains the current state of the DPU provisioning message ProvisioningStatus { // Image parameters for downloading firmware FirmwareImage firmware_image = 1; // Image parameters for downloading BMC firmware BMCImage bmc_firmware_image = 2; // Image parameters for downloading OS image OSImage os_image = 3; // List of packages installed repeated PackageSpec packages = 4; // List of configurations set repeated Flag flags = 5; // List of static pods running in JSON format converted to bytes repeated bytes static_pods = 7; // Link type configuration, can be ethernet or infiniband LinkType link_type = 8; // List of custom scripts executed before kubeadm init/join repeated bytes pre_stage_scripts = 9; // List of custom scripts executed after kubeadm init/join repeated bytes post_stage_scripts = 10; } // DPU.NIC describes one network interface on the DPU. message NIC { // The name of the network interface, e.g. "en0" string name = 1; // The vendor and product IDs of the NIC, e.g. "0x8086 0x1572" optional string model = 2; // The device MAC address optional string mac = 3; // The device GUID optional string guid = 4; // The IP address of the interface. This will be an IPv4 or IPv6 address // if one is present. If both IPv4 and IPv6 addresses are present in a // dual-stack environment, two nics will be output, one with each IP. optional string ip = 5; } // DPU.InventoryInformation is a message that contains hardware information of the DPU message InventoryInformation { // Serial Number of the DPU string serial_number = 1; // Product Name of the DPU string product_name = 2; // List of NICs in the DPU repeated NIC nics = 3; } // DPU.Status is a message that contains a DPU status message Status { // Current packages/images running on DPU ProvisioningStatus provisioning = 1; // conditions reflecting the current state of the DPU repeated Condition conditions = 2; // Hardware inventory InventoryInformation inventory_information = 3; } // unique name for DPU string name = 1; // reference to the host that this DPU points to Ref host_ref = 2; // map of labels map<string, string> labels = 3; // BMC configuration optional BMC bmc = 4; // boot MAC address of the DPU optional string boot_mac_address = 5; // the immediate reconciliation Settings target optional Ref settings = 6; // the ultimate reconciliation Settings target optional Ref target_settings = 7; // status of the DPU optional Status status = 8; } // Ref is a message that contains a reference to another object message Ref { // name of the referenced object string name = 1; // UUID of the referenced object optional string uid = 2; } message Credential { string name = 1; string user_name = 3; string password = 4; } // Settings is a message that contains a Settings object and its fields message Settings { // Settings.Status is a message that contains the success count of DPU provisioned with this Settings message Status { // number of successful provisioning of DPUs with this settings int32 successes = 1; // number of failed provisioning of DPUs with this settings int32 failures = 2; } // unique name for settings string name = 1; // Image parameters for downloading firmware FirmwareImage firmware_image = 2; // Image parameters for downloading BMC firmware BMCImage bmc_firmware_image = 3; // Image parameters for downloading OS image OSImage os_image = 4; // List of packages to be installed repeated PackageSpec packages = 5; // List of configurations to set repeated Flag flags = 6; // List of static pods to run in JSON format converted to bytes repeated bytes static_pods = 7; // status of the Settings optional Status status = 8; // Link type configuration, can be ethernet or infiniband LinkType link_type = 9; // List of custom scripts executed before kubeadm init/join repeated bytes pre_stage_scripts = 10; // List of custom scripts executed after kubeadm init/join repeated bytes post_stage_scripts = 11; } // LinkType represent the mode the DPU link is configured enum LinkType { // invalid value LINK_TYPE_UNSPECIFIED = 0; // ethernet type LINK_TYPE_ETH = 1; // infiniband type LINK_TYPE_IB = 2; } // Rollout is a message that contains a Rollout object and its fields message Rollout { // Strategy is an enum for the possible provisioning strategies enum Strategy { // invalid value STRATEGY_UNSPECIFIED = 0; // provisioning is performed incrementally STRATEGY_ROLLING_UPDATE = 1; // provisioning is triggered externally STRATEGY_EXT_SCHEDULED = 2; } // Rollout.Status is a message that contains the count of DPU/host in process by this Rollout message Status { // number of provisioned Hosts int32 completed_hosts = 1; // number of provisioned DPUs int32 completed_dpus = 2; // number of pending DPUs to be provisioned int32 pending_hosts = 3; // number of pending Hosts to be provisioned int32 pending_dpus = 4; } // unique name for rollout string name = 1; // strategy for DPU provisioning Strategy strategy = 2; // in case of ROLLING_UPDATE strategy, max number of DPUs allowed to be unavailable // can be a number or a percentage optional string max_unavailable = 3; // settings used for the DPU rollout provisioning Ref target_settings = 4; // map of labels used to select the DPUs that will be affected by this Rollout map<string, string> dpu_selector = 5; // status of the Rollout optional Status status = 6; } // Label is a message that contains a Label object and its fields message Label { // name of label string name = 1; // value of label string value = 2; } // Condition is a message that contains a Condition object and its fields message Condition { // Status is an enum status of the condition, one of True, False, Unknown. enum Status { // invalid value STATUS_UNSPECIFIED = 0; // condition is True STATUS_TRUE = 1; // condition is False STATUS_FALSE = 2; // condition is Unknown STATUS_UNKNOWN = 3; } // type of condition string type = 1; // status of condition Status status = 2; // time of last transition of status string last_transition_time = 3; // reason of condition status string reason = 4; // message describing the status optional string message = 5; } // PackageSpec is a message that contains a PackageSpec object and its fields message PackageSpec { // name of package string name = 1; // version of package string version = 2; } // OSImage is a message that contains a OSImage object and its fields message OSImage { // location of an image to deploy string url = 1; // checksum for the image string checksum = 2; // checksum_type for the image ChecksumType checksum_type = 3; // disk_format contains the format of the image (raw, qcow2, ...). optional DiskFormat disk_format = 4; } // FirmwareImage is a message that contains a FirmwareImage object and its fields message FirmwareImage { // location of an image to deploy string url = 1; // checksum for the image string checksum = 2; // checksum_type for the image ChecksumType checksum_type = 3; // force_update indicates an image will always be updated even if the version of image is lower or equal to the current version, // it will make the process longer but makes sure new FW is always installed. Default value is false optional bool force_update = 5; } // BMCImage is a message that contains a BMCImage object and its fields message BMCImage { // location of an image to deploy string url = 1; // checksum for the image string checksum = 2; // checksum_type for the image ChecksumType checksum_type = 3; } enum ChecksumType { // invalid request CHECKSUM_TYPE_UNSPECIFIED = 0; CHECKSUM_TYPE_MD5 = 1; CHECKSUM_TYPE_SHA256 = 2; CHECKSUM_TYPE_SHA512 = 3; } enum DiskFormat { // invalid request DISK_FORMAT_UNSPECIFIED = 0; DISK_FORMAT_RAW = 1; DISK_FORMAT_QCOW2 = 2; DISK_FORMAT_VDI = 3; DISK_FORMAT_VDMK = 4; DISK_FORMAT_LIVE_ISO = 5; } // Flag is a message that contains a Flag object and its fields message Flag { // name of the flag string name = 1; // value of the flag string value = 2; } message Filter { oneof matcher { // Matcher for specific field FieldMatcher field_matcher = 1; // Matcher for list ListMatcher list_matcher = 2; // Matcher for map MapMatcher map_matcher = 3; } } enum MatchOperation { // invalid request MATCH_OPERATION_UNSPECIFIED = 0; // value from message field // should be in matcher values list MATCH_OPERATION_IN = 1; // value from message field // should not be in matcher values list MATCH_OPERATION_NOT_IN = 2; } message FieldMatcher { // name of the message field in JSONPath format string field_path = 1; // operation to use for key examination MatchOperation operation = 2; // values to use for examination repeated string values = 3; } message ListMatcher { // name of the message list in JSONPath format string list_path = 1; // FieldMatcher to match value repeated FieldMatcher field_matchers = 2; } message KeysMatcher { // operation to use for keys examination MatchOperation operation = 1; // keys to use for examination repeated string keys = 2; } message MapMatcher { // name of the message map in JSONPath format string map_path = 1; // KeysMatcher to match key KeysMatcher key_matcher = 2; // FieldMatcher to match value repeated FieldMatcher field_matchers = 3; } // ---------- // TENANT // ---------- // CreateTenantRequest is used to create a Tenant in the infrastructure cluster message CreateTenantRequest { // Name of the tenant to create string name = 1; } // Keep empty for now, later on rpc may be extended message CreateTenantResponse {} // DeleteTenantRequest is used to delete already existing Tenant in the infrastructure cluster message DeleteTenantRequest { // Name of the tenant to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteTenantResponse {} // GetTenantRequest is used to get an existing Tenant in the infrastructure cluster message GetTenantRequest { // Name of the tenant to retrieve string name = 1; } // GetTenantResponse is a message containing the required Tenant object message GetTenantResponse { // contains a single tenant Tenant tenant = 1; } // ListTenantRequest is used to list existing Tenant objects message ListTenantRequest { repeated Filter filters = 1; } // ListTenantResponse contains the list of Tenants requested with ListTenantRequest message ListTenantResponse { // list of tenants repeated Tenant tenants = 1; } // ---------- // HOST // ---------- // CreateHostRequest is used to create a Host in the infrastructure cluster message CreateHostRequest { // full host object Host host = 1; } // Keep empty for now, later on rpc may be extended message CreateHostResponse {} // DeleteHostRequest is used to delete already existing Host in the infrastructure cluster message DeleteHostRequest { // Name of the host to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteHostResponse {} // GetHostRequest is used to get an existing Host in the infrastructure cluster message GetHostRequest { // name of the host to retrieve string name = 1; } // GetHostResponse is a message containing the required Host object message GetHostResponse { // contains a single host Host host = 1; } // ListHostRequest is used to list existing Hosts objects message ListHostRequest { repeated Filter filters = 1; } // ListHostResponse contains the list of Hosts requested with ListHostRequest message ListHostResponse { // list of hosts repeated Host hosts = 1; } // UpdateHostRequest is used to update an existing Host in the infrastructure cluster message UpdateHostRequest { // host object with fields to update Host host = 1; } // Keep empty for now, later on rpc may be extended message UpdateHostResponse {} // The action host admin was required to perform enum HostAdminAction { // invalid request HOST_ADMIN_ACTION_UNSPECIFIED = 0; // reboot the host HOST_ADMIN_ACTION_REBOOT = 1; } // HostAdminActionDoneRequest informs that the host admin required action was done message HostAdminActionDoneRequest { // The name of the host action was performed on string host_name = 1; // The action host admin was required to perform HostAdminAction action = 2; } // Keep empty for now, later on rpc may be extended message HostAdminActionDoneResponse {} // ---------- // CREDENTIAL // ---------- // CreateCredentialRequest is used to create a Credential in the infrastructure cluster message CreateCredentialRequest { Credential cred = 1; } // Keep empty for now, later on rpc may be extended message CreateCredentialResponse {} // DeleteCredentialRequest is used to delete a Credential in the infrastructure cluster message DeleteCredentialRequest { string credential_name = 1; } // Keep empty for now, later on rpc may be extended message DeleteCredentialResponse {} // ---------- // HOSTCONFIGURATION // ---------- // CreateHostConfigRequest is used to create a HostConfiguration in the infrastructure cluster message CreateHostConfigRequest { HostConfig host_config = 1; } // Keep empty for now, later on rpc may be extended message CreateHostConfigResponse {} // DeleteHostConfigRequest is used to delete already existing HostConfiguration in the infrastructure cluster message DeleteHostConfigRequest { // Name of the HostConfiguration to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteHostConfigResponse {} // GetHostConfigRequest is used to get an existing HostConfiguration in the infrastructure cluster message GetHostConfigRequest { // name of the hostConfiguration to retrieve string name = 1; } // GetHostConfigResponse is a message containing the required HostConfiguration object message GetHostConfigResponse { // contains a single hostConfig HostConfig host_config = 1; } // ListHostConfigRequest is used to list existing HostConfiguration objects message ListHostConfigRequest { repeated Filter filters = 1; } // ListHostConfigResponse contains the list of HostConfiguration requested with ListHostConfigRequest message ListHostConfigResponse { // list of hostConfigurations repeated HostConfig host_configs = 1; } // ---------- // DPU // ---------- // CreateDPURequest is used to create a DPU in the infrastructure cluster message CreateDPURequest { // full DPU object DPU dpu = 1; } // Keep empty for now, later on rpc may be extended message CreateDPUResponse {} // DeleteDPURequest is used to delete already existing DPU in the infrastructure cluster message DeleteDPURequest { // Name of the DPU to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteDPUResponse {} // GetDPURequest is used to get an existing DPU in the infrastructure cluster message GetDPURequest { // name of the DPU to retrieve string name = 1; } // GetDPUResponse is a message containing the required DPU object message GetDPUResponse { // contains a single DPU DPU dpu = 1; } // ListDPURequest is used to list existing DPU objects message ListDPURequest { repeated Filter filters = 1; } // ListDPUResponse contains the list of DPUs requested with ListDPURequest message ListDPUResponse { // list of DPUs repeated DPU dpus = 1; } // UpdateDPURequest is used to update an existing DPU in the infrastructure cluster message UpdateDPURequest { // dpu object with fields to update DPU dpu = 1; } // Keep empty for now, later on rpc may be extended message UpdateDPUResponse {} // ---------- // Settings // ---------- // CreateSettingsRequest is used to create a Settings in the infrastructure cluster message CreateSettingsRequest { // full settings object Settings settings = 1; } // Keep empty for now, later on rpc may be extended message CreateSettingsResponse {} // DeleteSettingsRequest is used to delete already existing Settings in the infrastructure cluster message DeleteSettingsRequest { // Name of the settings to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteSettingsResponse {} // GetSettingsRequest is used to get an existing Settings in the infrastructure cluster message GetSettingsRequest { // name of the settings to retrieve string name = 1; } // GetSettingsResponse is a message containing the required Settings object message GetSettingsResponse { // contains a single settings Settings settings = 1; } // ListSettingsRequest is used to list existing Settings objects message ListSettingsRequest { repeated Filter filters = 1; } // ListSettingsResponse contains the list of Settings requested with ListSettingsRequest message ListSettingsResponse { // list of settings repeated Settings settings = 1; } // ---------- // Rollout // ---------- // CreateRolloutRequest is used to create a Rollout in the infrastructure cluster message CreateRolloutRequest { // full rollout object Rollout rollout = 1; } // Keep empty for now, later on rpc may be extended message CreateRolloutResponse {} // DeleteRolloutRequest is used to delete already existing Rollout in the infrastructure cluster message DeleteRolloutRequest { // Name of the rollout to delete string name = 1; } // Keep empty for now, later on rpc may be extended message DeleteRolloutResponse {} // GetRolloutRequest is used to get an existing Rollout in the infrastructure cluster message GetRolloutRequest { // name of the rollout to retrieve string name = 1; } // GetRolloutResponse is a message containing the required Rollout object message GetRolloutResponse { // contains a single rollout Rollout rollout = 1; } // ListRolloutRequest is used to list existing Rollout objects message ListRolloutRequest { repeated Filter filters = 1; } // ListRolloutResponse contains the list of Rollout requested with ListRolloutRequest message ListRolloutResponse { // list of rollouts repeated Rollout rollout = 1; } // UpdateRolloutRequest is used to update an existing Rollout in the infrastructure cluster message UpdateRolloutRequest { // rollout object with fields to update Rollout rollout = 1; } // Keep empty for now, later on rpc may be extended message UpdateRolloutResponse {}

Previous universe.resource.v1
Next universe.workload.v1
© Copyright 2023, NVIDIA. Last updated on Feb 7, 2024.