universe.admin.provisioning.v1
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:
Replace $API_GW_ADDRESS
with address of iCP API GW in your environment
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
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
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
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:
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
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
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.
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:
# 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
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
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
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
{
"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"
}
]
}
}
}
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 {}