Skip to main content

Protocol Documentation

alert.proto​

Alert​

FieldTypeLabelDescription
labelsAlert.LabelsEntryrepeatedLabels uniquely define the alert
annotationsAlert.AnnotationsEntryrepeatedAnnotations are extra information about the alert
statestringState of the alert
active_atdistributed_match_engine.TimestampWhen alert became active
valuedoubleAny value associated with alert
notify_idint64Id of client assigned by server (internal use only)
controllerstringConnected controller unique id

Alert.AnnotationsEntry​

FieldTypeLabelDescription
keystring
valuestring

Alert.LabelsEntry​

FieldTypeLabelDescription
keystring
valuestring

AlertApi​

Method NameRequest TypeResponse TypeDescription
ShowAlertAlertAlert streamShow alerts

Top

alldata.proto​

AllData​

AllData contains all data that may be used for declarative create/delete, or as input for e2e tests. The order of fields here is important, as objects will be created in the order they are specified here, and deleted in the opposite order. The field ID (number) doesn't matter.

FieldTypeLabelDescription
flavorsFlavorrepeated
settingsSettings
operator_codesOperatorCoderepeated
res_tag_tablesResTagTablerepeated
cloudletsCloudletrepeated
cloudlet_infosCloudletInforepeated
cloudlet_poolsCloudletPoolrepeated
auto_prov_policiesAutoProvPolicyrepeated
auto_prov_policy_cloudletsAutoProvPolicyCloudletrepeated
auto_scale_policiesAutoScalePolicyrepeated
privacy_policiesPrivacyPolicyrepeated
cluster_instsClusterInstrepeated
appsApprepeated
app_instancesAppInstrepeated
app_inst_refsAppInstRefsrepeated
vm_poolsVMPoolrepeated

Top

app.proto​

App​

Application

App belongs to developer organizations and is used to provide information about their application.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyAppKeyrequired: true Unique identifier key
image_pathstringURI of where image resides
image_typeImageTypeImage type (see ImageType)
access_portsstringComma separated list of protocol:port pairs that the App listens on. Numerical values must be decimal format. i.e. tcp:80,udp:10002,http:443
default_flavorFlavorKeyDefault flavor for the App, which may be overridden by the AppInst
auth_public_keystringpublic key used for authentication
commandstringCommand that the container runs to start service
annotationsstringAnnotations is a comma separated map of arbitrary key value pairs, for example: key1=val1,key2=val2,key3="val 3"
deploymentstringDeployment type (kubernetes, docker, or vm)
deployment_manifeststringDeployment manifest is the deployment specific manifest file/config For docker deployment, this can be a docker-compose or docker run file For kubernetes deployment, this can be a kubernetes yaml or helm chart file
deployment_generatorstringDeployment generator target to generate a basic deployment manifest
android_package_namestringAndroid package name used to match the App name from the Android package
del_optDeleteTypeOverride actions to Controller
configsConfigFilerepeatedCustomization files passed through to implementing services
scale_with_clusterboolOption to run App on all nodes of the cluster
internal_portsboolShould this app have access to outside world?
revisionstringRevision can be specified or defaults to current timestamp when app is updated
official_fqdnstringOfficial FQDN is the FQDN that the app uses to connect by default
md5sumstringMD5Sum of the VM-based app image
default_shared_volume_sizeuint64shared volume size when creating auto cluster
auto_prov_policystring(deprecated) Auto provisioning policy name
access_typeAccessTypeAccess type
default_privacy_policystringPrivacy policy when creating auto cluster
delete_prepareboolPreparing to be deleted
auto_prov_policiesstringrepeatedAuto provisioning policy names
template_delimiterstringDelimiter to be used for template parsing, defaults to "[[ ]]"
skip_hc_portsstringComma separated list of protocol:port pairs that we should not run health check on Should be configured in case app does not always listen on these ports "all" can be specified if no health check to be run for this app Numerical values must be decimal format. i.e. tcp:80,udp:10002,http:443

AppAutoProvPolicy​

FieldTypeLabelDescription
app_keyAppKeyApp key
auto_prov_policystringAuto provisioning policy name

AppKey​

Application unique key

AppKey uniquely identifies an App

FieldTypeLabelDescription
organizationstringApp developer organization
namestringApp name
versionstringApp version

ConfigFile​

ConfigFile

FieldTypeLabelDescription
kindstringkind (type) of config, i.e. envVarsYaml, helmCustomizationYaml
configstringconfig file contents or URI reference

AccessType​

NameNumberDescription
ACCESS_TYPE_DEFAULT_FOR_DEPLOYMENT0Default load balancer or direct based on deployment
ACCESS_TYPE_DIRECT1Direct access with no load balancer
ACCESS_TYPE_LOAD_BALANCER2Access via a load balancer

DeleteType​

DeleteType

DeleteType specifies if AppInst can be auto deleted or not

NameNumberDescription
NO_AUTO_DELETE0No autodelete
AUTO_DELETE1Autodelete

ImageType​

ImageType

ImageType specifies image type of an App

NameNumberDescription
IMAGE_TYPE_UNKNOWN0Unknown image type
IMAGE_TYPE_DOCKER1Docker container image type compatible either with Docker or Kubernetes
IMAGE_TYPE_QCOW2QCOW2 virtual machine image type
IMAGE_TYPE_HELM3Helm chart is a separate image type

AppApi​

Method NameRequest TypeResponse TypeDescription
CreateAppAppResultCreate Application. Creates a definition for an application instance for Cloudlet deployment.
DeleteAppAppResultDelete Application. Deletes a definition of an Application instance. Make sure no other application instances exist with that definition. If they do exist, you must delete those Application instances first.
UpdateAppAppResultUpdate Application. Updates the definition of an Application instance.
ShowAppAppApp streamShow Applications. Lists all Application definitions managed from the Edge Controller. Any fields specified will be used to filter results.
AddAppAutoProvPolicyAppAutoProvPolicyResult
RemoveAppAutoProvPolicyAppAutoProvPolicyResult

Top

appinst.proto​

AppInst​

Application Instance

AppInst is an instance of an App on a Cloudlet where it is defined by an App plus a ClusterInst key. Many of the fields here are inherited from the App definition.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyAppInstKeyrequired: true Unique identifier key
cloudlet_locdistributed_match_engine.LocCached location of the cloudlet
uristringBase FQDN (not really URI) for the App. See Service FQDN for endpoint access.
livenessLivenessLiveness of instance (see Liveness)
mapped_portsdistributed_match_engine.AppPortrepeatedFor instances accessible via a shared load balancer, defines the external ports on the shared load balancer that map to the internal ports External ports should be appended to the Uri for L4 access.
flavorFlavorKeyFlavor defining resource requirements
stateTrackedStateCurrent state of the AppInst on the Cloudlet
errorsstringrepeatedAny errors trying to create, update, or delete the AppInst on the Cloudlet
crm_overrideCRMOverrideOverride actions to CRM
runtime_infoAppInstRuntimeAppInst runtime information
created_atdistributed_match_engine.TimestampCreated at time
auto_cluster_ip_accessIpAccessIpAccess for auto-clusters. Ignored otherwise.
statusStatusInfostatus is used to reflect progress of creation or other events
revisionstringRevision changes each time the App is updated. Refreshing the App Instance will sync the revision with that of the App
force_updateboolForce Appinst refresh even if revision number matches App revision number.
update_multipleboolAllow multiple instances to be updated at once
configsConfigFilerepeatedCustomization files passed through to implementing services
shared_volume_sizeuint64shared volume size when creating auto cluster
health_checkHealthCheckHealth Check status
privacy_policystringOptional privacy policy name
power_statePowerStatePower State of the AppInst
external_volume_sizeuint64Size of external volume to be attached to nodes. This is for the root partition
availability_zonestringOptional Availability Zone if any
vm_flavorstringOS node flavor to use
opt_resstringOptional Resources required by OS flavor if any

AppInstInfo​

AppInstInfo provides information from the Cloudlet Resource Manager about the state of the AppInst on the Cloudlet. Whereas the AppInst defines the intent of instantiating an App on a Cloudlet, the AppInstInfo defines the current state of trying to apply that intent on the physical resources of the Cloudlet.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyAppInstKeyUnique identifier key
notify_idint64Id of client assigned by server (internal use only)
stateTrackedStateCurrent state of the AppInst on the Cloudlet
errorsstringrepeatedAny errors trying to create, update, or delete the AppInst on the Cloudlet
runtime_infoAppInstRuntimeAppInst runtime information
statusStatusInfostatus is used to reflect progress of creation or other events
power_statePowerStatePower State of the AppInst

AppInstKey​

App Instance Unique Key

AppInstKey uniquely identifies an Application Instance (AppInst) or Application Instance state (AppInstInfo).

FieldTypeLabelDescription
app_keyAppKeyApp key
cluster_inst_keyClusterInstKeyCluster instance on which this is instantiated

AppInstLookup​

AppInstLookup is used to generate reverse lookup caches

FieldTypeLabelDescription
keyAppInstKeyunique key
policy_keyPolicyKeylookup by AutoProvPolicy

AppInstMetrics​

(TODO) AppInstMetrics provide metrics collected about the application instance on the Cloudlet. They are sent to a metrics collector for analytics. They are not stored in the persistent distributed database, but are stored as a time series in some other database or files.

FieldTypeLabelDescription
somethinguint64what goes here? Note that metrics for grpc calls can be done by a prometheus interceptor in grpc, so adding call metrics here may be redundant unless they're needed for billing.

AppInstRuntime​

AppInst Runtime Info

Runtime information of active AppInsts

FieldTypeLabelDescription
container_idsstringrepeatedList of container names

HealthCheck​

Health check status

Health check status gets set by external, or rootLB health check

NameNumberDescription
HEALTH_CHECK_UNKNOWN0Health Check is unknown
HEALTH_CHECK_FAIL_ROOTLB_OFFLINE1Health Check failure due to RootLB being offline
HEALTH_CHECK_FAIL_SERVER_FAIL2Health Check failure due to Backend server being unavailable
HEALTH_CHECK_OK3Health Check is ok

PowerState​

Power State

Power State of the AppInst

NameNumberDescription
POWER_STATE_UNKNOWN0Unknown
POWER_ON_REQUESTED1Power On Requested
POWERING_ON2Powering On
POWER_ON3Power On
POWER_OFF_REQUESTED4Power Off Requested
POWERING_OFF5Powering Off
POWER_OFF6Power Off
REBOOT_REQUESTED7Reboot Requested
REBOOTING8Rebooting
REBOOT9Reboot
POWER_STATE_ERROR10Error

AppInstApi​

Method NameRequest TypeResponse TypeDescription
CreateAppInstAppInstResult streamCreate Application Instance. Creates an instance of an App on a Cloudlet where it is defined by an App plus a ClusterInst key. Many of the fields here are inherited from the App definition.
DeleteAppInstAppInstResult streamDelete Application Instance. Deletes an instance of the App from the Cloudlet.
RefreshAppInstAppInstResult streamRefresh Application Instance. Restarts an App instance with new App settings or image.
UpdateAppInstAppInstResult streamUpdate Application Instance. Updates an Application instance and then refreshes it.
ShowAppInstAppInstAppInst streamShow Application Instances. Lists all the Application instances managed by the Edge Controller. Any fields specified will be used to filter results.

AppInstInfoApi​

Method NameRequest TypeResponse TypeDescription
ShowAppInstInfoAppInstInfoAppInstInfo streamShow application instances state.

AppInstMetricsApi​

Method NameRequest TypeResponse TypeDescription
ShowAppInstMetricsAppInstMetricsAppInstMetrics streamShow application instance metrics.

Top

appinstclient.proto​

AppInstClient​

Client is an AppInst client that called FindCloudlet DME Api

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
client_keyAppInstClientKeyUnique identifier key
locationdistributed_match_engine.LocLocation of the Client
notify_idint64Id of client assigned by server (internal use only)

AppInstClientKey​

AppKey uniquely identifies an App

FieldTypeLabelDescription
keyAppInstKeyAppInst Key
unique_idstringAppInstClient Unique Id
unique_id_typestringAppInstClient Unique Id Type

AppInstClientApi​

Method NameRequest TypeResponse TypeDescription
ShowAppInstClientAppInstClientKeyAppInstClient streamShow application instance clients.
StreamAppInstClientsLocalAppInstClientKeyAppInstClient streamThis is used unternally to forward AppInstClients to other Controllers

Top

autoprovpolicy.proto​

AutoProvCloudlet​

AutoProvCloudlet stores the potential cloudlet and location for DME lookup

FieldTypeLabelDescription
keyCloudletKeyCloudlet key
locdistributed_match_engine.LocCloudlet location

AutoProvCount​

AutoProvCount is used to send potential cloudlet and location counts from DME to Controller

FieldTypeLabelDescription
app_keyAppKeyTarget app
cloudlet_keyCloudletKeyTarget cloudlet
countuint64FindCloudlet client count
process_nowboolProcess count immediately
deploy_now_keyClusterInstKeyImmediately deploy to clusterinst

AutoProvCounts​

AutoProvCounts is used to send potential cloudlet and location counts from DME to Controller

FieldTypeLabelDescription
dme_node_namestringDME node name
timestampgoogle.protobuf.TimestampTimestamp when the metric was captured
countsAutoProvCountrepeatedList of DmeCount from DME

AutoProvInfo​

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyCloudletKeyCloudlet Key
notify_idint64Id of client assigned by server (internal use only)
maintenance_stateMaintenanceStatefailover result state
completedstringrepeatedFailover actions done if any
errorsstringrepeatedErrors if any

AutoProvPolicy​

AutoProvPolicy defines the automated provisioning policy

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyPolicyKeyUnique identifier key
deploy_client_countuint32Minimum number of clients within the auto deploy interval to trigger deployment
deploy_interval_countuint32Number of intervals to check before triggering deployment
cloudletsAutoProvCloudletrepeatedAllowed deployment locations
min_active_instancesuint32Minimum number of active instances for High-Availability
max_instancesuint32Maximum number of instances (active or not)
undeploy_client_countuint32Number of active clients for the undeploy interval below which trigers undeployment, 0 (default) disables auto undeploy
undeploy_interval_countuint32Number of intervals to check before triggering undeployment

AutoProvPolicyCloudlet​

AutoProvPolicyCloudlet is used to add and remove Cloudlets from the Auto Provisioning Policy

FieldTypeLabelDescription
keyPolicyKeyUnique policy identifier key
cloudlet_keyCloudletKeyCloudlet identifier key

AutoProvPolicyApi​

Method NameRequest TypeResponse TypeDescription
CreateAutoProvPolicyAutoProvPolicyResultCreate an Auto Provisioning Policy
DeleteAutoProvPolicyAutoProvPolicyResultDelete an Auto Provisioning Policy
UpdateAutoProvPolicyAutoProvPolicyResultUpdate an Auto Provisioning Policy
ShowAutoProvPolicyAutoProvPolicyAutoProvPolicy streamShow Auto Provisioning Policies. Any fields specified will be used to filter results.
AddAutoProvPolicyCloudletAutoProvPolicyCloudletResultAdd a Cloudlet to the Auto Provisioning Policy
RemoveAutoProvPolicyCloudletAutoProvPolicyCloudletResultRemove a Cloudlet from the Auto Provisioning Policy

Top

autoscalepolicy.proto​

AutoScalePolicy​

AutoScalePolicy defines when and how ClusterInsts will have their nodes scaled up or down.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyPolicyKeyUnique identifier key
min_nodesuint32Minimum number of cluster nodes
max_nodesuint32Maximum number of cluster nodes
scale_up_cpu_threshuint32Scale up cpu threshold (percentage 1 to 100)
scale_down_cpu_threshuint32Scale down cpu threshold (percentage 1 to 100)
trigger_time_secuint32Trigger time defines how long trigger threshold must be satified in seconds before acting upon it.

PolicyKey​

FieldTypeLabelDescription
organizationstringName of the organization for the cluster that this policy will apply to
namestringPolicy name

AutoScalePolicyApi​

Method NameRequest TypeResponse TypeDescription
CreateAutoScalePolicyAutoScalePolicyResultCreate an Auto Scale Policy
DeleteAutoScalePolicyAutoScalePolicyResultDelete an Auto Scale Policy
UpdateAutoScalePolicyAutoScalePolicyResultUpdate an Auto Scale Policy
ShowAutoScalePolicyAutoScalePolicyAutoScalePolicy streamShow Auto Scale Policies. Any fields specified will be used to filter results.

Top

cloudlet.proto​

Cloudlet​

Cloudlet

A Cloudlet is a set of compute resources at a particular location, provided by an Operator.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyCloudletKeyrequired: true Unique identifier key
locationdistributed_match_engine.LocLocation of the Cloudlet site
ip_supportIpSupportType of IP support provided by Cloudlet (see IpSupport)
static_ipsstringList of static IPs for static IP support
num_dynamic_ipsint32Number of dynamic IPs available for dynamic IP support
time_limitsOperationTimeLimitstime limits which override global settings if non-zero
errorsstringrepeatedAny errors trying to create, update, or delete the Cloudlet.
statusStatusInfostatus is used to reflect progress of creation or other events
stateTrackedStateCurrent state of the cloudlet
crm_overrideCRMOverrideOverride actions to CRM
deployment_localboolDeploy cloudlet services locally
platform_typePlatformTypePlatform type
notify_srv_addrstringAddress for the CRM notify listener to run on
flavorFlavorKeyMin system resource requirements for platform
physical_namestringPhysical infrastructure cloudlet name
env_varCloudlet.EnvVarEntryrepeatedSingle Key-Value pair of env var to be passed to CRM
container_versionstringCloudlet container version
configPlatformConfigPlatform Config Info
res_tag_mapCloudlet.ResTagMapEntryrepeatedOptional resource to restagtbl key map key values = [gpu, nas, nic]
access_varsCloudlet.AccessVarsEntryrepeatedVariables required to access cloudlet
vm_image_versionstringMobiledgeX baseimage version where CRM services reside
deploymentstringDeployment type to bring up CRM services (docker, kubernetes)
infra_api_accessInfraApiAccessInfra Access Type is the type of access available to Infra API Endpoint
infra_configInfraConfigInfra specific config
chef_client_keyCloudlet.ChefClientKeyEntryrepeatedChef client key
maintenance_stateMaintenanceStateState for maintenance
override_policy_container_versionboolOverride container version from policy file
vm_poolstringVM Pool

Cloudlet.AccessVarsEntry​

FieldTypeLabelDescription
keystring
valuestring

Cloudlet.ChefClientKeyEntry​

FieldTypeLabelDescription
keystring
valuestring

Cloudlet.EnvVarEntry​

FieldTypeLabelDescription
keystring
valuestring

Cloudlet.ResTagMapEntry​

FieldTypeLabelDescription
keystring
valueResTagTableKey

CloudletInfo​

CloudletInfo provides information from the Cloudlet Resource Manager about the state of the Cloudlet.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyCloudletKeyUnique identifier key
stateCloudletStateState of cloudlet
notify_idint64Id of client assigned by server (internal use only)
controllerstringConnected controller unique id
os_max_ramuint64Maximum Ram in MB on the Cloudlet
os_max_vcoresuint64Maximum number of VCPU cores on the Cloudlet
os_max_vol_gbuint64Maximum amount of disk in GB on the Cloudlet
errorsstringrepeatedAny errors encountered while making changes to the Cloudlet
flavorsFlavorInforepeatedSupported flavors by the Cloudlet
statusStatusInfostatus is used to reflect progress of creation or other events
container_versionstringCloudlet container version
availability_zonesOSAZonerepeatedAvailability Zones if any
os_imagesOSImagerepeatedLocal Images availble to cloudlet
controller_cache_receivedboolIndicates all controller data has been sent to CRM
maintenance_stateMaintenanceStateState for maintenance

CloudletKey​

Cloudlet unique key

CloudletKey uniquely identifies a Cloudlet.

FieldTypeLabelDescription
organizationstringOrganization of the cloudlet site
namestringName of the cloudlet

CloudletManifest​

FieldTypeLabelDescription
manifeststringManifest to bringup cloudlet VM and services.

CloudletMetrics​

(TODO) CloudletMetrics provide metrics collected about the Cloudlet. They are sent to a metrics collector for analytics. They are not stored in the persistent distributed database, but are stored as a time series in some other database or files.

FieldTypeLabelDescription
foouint64what goes here?

CloudletProps​

FieldTypeLabelDescription
platform_typePlatformTypePlatform type
propertiesCloudletProps.PropertiesEntryrepeatedSingle Key-Value pair of env var to be passed to CRM

CloudletProps.PropertiesEntry​

FieldTypeLabelDescription
keystring
valuePropertyInfo

CloudletResMap​

optional resource input consists of a resource specifier and clouldkey name

FieldTypeLabelDescription
keyCloudletKeyResource cloudlet key
mappingCloudletResMap.MappingEntryrepeatedResource mapping info

CloudletResMap.MappingEntry​

FieldTypeLabelDescription
keystring
valuestring

FlavorInfo​

Flavor details from the Cloudlet

FieldTypeLabelDescription
namestringName of the flavor on the Cloudlet
vcpusuint64Number of VCPU cores on the Cloudlet
ramuint64Ram in MB on the Cloudlet
diskuint64Amount of disk in GB on the Cloudlet
prop_mapFlavorInfo.PropMapEntryrepeatedOS Flavor Properties, if any

FlavorInfo.PropMapEntry​

FieldTypeLabelDescription
keystring
valuestring

FlavorMatch​

FieldTypeLabelDescription
keyCloudletKeyCloudlet ctx
flavor_namestring
availability_zonestring

InfraConfig​

Infra specific configuration used for Cloudlet deployments

FieldTypeLabelDescription
external_network_namestringInfra specific external network name
flavor_namestringInfra specific flavor name

OSAZone​

FieldTypeLabelDescription
namestring
statusstring

OSImage​

FieldTypeLabelDescription
namestringimage name
tagsstringoptional tags present on image
propertiesstringimage properties/metadata
disk_formatstringformat qcow2, img, etc

OperationTimeLimits​

Operation time limits

Time limits for cloudlet create, update and delete operations

FieldTypeLabelDescription
create_cluster_inst_timeoutint64override default max time to create a cluster instance (duration)
update_cluster_inst_timeoutint64override default max time to update a cluster instance (duration)
delete_cluster_inst_timeoutint64override default max time to delete a cluster instance (duration)
create_app_inst_timeoutint64override default max time to create an app instance (duration)
update_app_inst_timeoutint64override default max time to update an app instance (duration)
delete_app_inst_timeoutint64override default max time to delete an app instance (duration)

PlatformConfig​

Platform specific configuration required for Cloudlet management

FieldTypeLabelDescription
container_registry_pathstringPath to Docker registry holding edge-cloud image
cloudlet_vm_image_pathstringPath to platform base image
notify_ctrl_addrsstringAddress of controller notify port (can be multiple of these)
vault_addrstringVault address
tls_cert_filestringTLS cert file
tls_key_filestringTLS key file
tls_ca_filestringTLS ca file
env_varPlatformConfig.EnvVarEntryrepeatedEnvironment variables
platform_tagstringTag of edge-cloud image
test_modeboolInternal Test flag
spanstringSpan string
cleanup_modeboolInternal cleanup flag
regionstringRegion
commercial_certsboolGet certs from vault or generate your own for the root load balancer
use_vault_certsboolUse Vault certs for internal TLS communication
use_vault_casboolUse Vault CAs to authenticate TLS communication
app_dns_rootstringApp domain name root
chef_server_pathstringPath to Chef Server
chef_client_intervalint32Chef client interval
deployment_tagstringDeployment Tag

PlatformConfig.EnvVarEntry​

FieldTypeLabelDescription
keystring
valuestring

PropertyInfo​

FieldTypeLabelDescription
namestringName of the property
descriptionstringDescription of the property
valuestringDefault value of the property
secretboolIs the property a secret value, will be hidden
mandatoryboolIs the property mandatory
internalboolIs the property internal, not to be set by Operator

CloudletState​

CloudletState is the state of the Cloudlet.

NameNumberDescription
CLOUDLET_STATE_UNKNOWN0Unknown
CLOUDLET_STATE_ERRORS1Create/Delete/Update encountered errors (see Errors field of CloudletInfo)
CLOUDLET_STATE_READY2Cloudlet is created and ready
CLOUDLET_STATE_OFFLINE3Cloudlet is offline (unreachable)
CLOUDLET_STATE_NOT_PRESENT4Cloudlet is not present
CLOUDLET_STATE_INIT5Cloudlet is initializing
CLOUDLET_STATE_UPGRADE6Cloudlet is upgrading
CLOUDLET_STATE_NEED_SYNC7Cloudlet needs data to synchronize

InfraApiAccess​

Infra API Access

InfraApiAccess is the type of access available to Infra API endpoint

NameNumberDescription
DIRECT_ACCESS0Infra API endpoint is accessible from public network
RESTRICTED_ACCESS1Infra API endpoint is not accessible from public network

PlatformType​

Platform Type

PlatformType is the supported list of cloudlet types

NameNumberDescription
PLATFORM_TYPE_FAKE0Fake Cloudlet
PLATFORM_TYPE_DIND1DIND Cloudlet
PLATFORM_TYPE_OPENSTACK2Openstack Cloudlet
PLATFORM_TYPE_AZURE3Azure Cloudlet
PLATFORM_TYPE_GCP4GCP Cloudlet
PLATFORM_TYPE_EDGEBOX5Edgebox Cloudlet
PLATFORM_TYPE_FAKEINFRA6Fake Infra Cloudlet
PLATFORM_TYPE_VSPHERE7VMWare VSphere (ESXi)
PLATFORM_TYPE_AWS8AWS Cloudlet
PLATFORM_TYPE_VM_POOL9VM Pool Cloudlet

CloudletApi​

Method NameRequest TypeResponse TypeDescription
CreateCloudletCloudletResult streamCreate Cloudlet. Sets up Cloudlet services on the Operator's compute resources, and integrated as part of MobiledgeX edge resource portfolio. These resources are managed from the Edge Controller.
DeleteCloudletCloudletResult streamDelete Cloudlet. Removes the Cloudlet services where they are no longer managed from the Edge Controller.
UpdateCloudletCloudletResult streamUpdate Cloudlet. Updates the Cloudlet configuration and manages the upgrade of Cloudlet services.
ShowCloudletCloudletCloudlet streamShow Cloudlets. Lists all the cloudlets managed from Edge Controller.
GetCloudletManifestCloudletCloudletManifestGet Cloudlet Manifest. Shows deployment manifest required to setup cloudlet
GetCloudletPropsCloudletPropsCloudletPropsGet Cloudlet Properties. Shows all the infra properties used to setup cloudlet
AddCloudletResMappingCloudletResMapResultAdd Optional Resource tag table
RemoveCloudletResMappingCloudletResMapResultAdd Optional Resource tag table
FindFlavorMatchFlavorMatchFlavorMatchDiscover if flavor produces a matching platform flavor

CloudletInfoApi​

Method NameRequest TypeResponse TypeDescription
ShowCloudletInfoCloudletInfoCloudletInfo streamShow CloudletInfos
InjectCloudletInfoCloudletInfoResultInject (create) a CloudletInfo for regression testing
EvictCloudletInfoCloudletInfoResultEvict (delete) a CloudletInfo for regression testing

CloudletMetricsApi​

Method NameRequest TypeResponse TypeDescription
ShowCloudletMetricsCloudletMetricsCloudletMetrics streamShow Cloudlet metrics

Top

cloudletpool.proto​

CloudletPool​

CloudletPool defines a pool of Cloudlets that have restricted access.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyCloudletPoolKeyCloudletPool key
cloudletsstringrepeatedCloudlets part of the pool

CloudletPoolKey​

CloudletPool unique key

CloudletPoolKey uniquely identifies a CloudletPool.

FieldTypeLabelDescription
organizationstringName of the organization this pool belongs to
namestringCloudletPool Name

CloudletPoolMember​

CloudletPoolMember is used to add and remove a Cloudlet from a CloudletPool

FieldTypeLabelDescription
keyCloudletPoolKeyCloudletPool key
cloudlet_namestringCloudlet key

CloudletPoolApi​

Method NameRequest TypeResponse TypeDescription
CreateCloudletPoolCloudletPoolResultCreate a CloudletPool
DeleteCloudletPoolCloudletPoolResultDelete a CloudletPool
UpdateCloudletPoolCloudletPoolResultUpdate a CloudletPool
ShowCloudletPoolCloudletPoolCloudletPool streamShow CloudletPools
AddCloudletPoolMemberCloudletPoolMemberResultAdd a Cloudlet to a CloudletPool
RemoveCloudletPoolMemberCloudletPoolMemberResultRemove a Cloudlet from a CloudletPool

Top

cluster.proto​

ClusterKey​

ClusterKey uniquely identifies a Cluster.

FieldTypeLabelDescription
namestringCluster name

Top

clusterinst.proto​

ClusterInst​

Cluster Instance

ClusterInst is an instance of a Cluster on a Cloudlet. It is defined by a Cluster, Cloudlet, and Developer key.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyClusterInstKeyrequired: true Unique key
flavorFlavorKeyFlavor of the k8s node
livenessLivenessLiveness of instance (see Liveness)
autoboolAuto is set to true when automatically created by back-end (internal use only)
stateTrackedStateState of the cluster instance
errorsstringrepeatedAny errors trying to create, update, or delete the ClusterInst on the Cloudlet.
crm_overrideCRMOverrideOverride actions to CRM
ip_accessIpAccessIP access type (RootLB Type)
allocated_ipstringAllocated IP for dedicated access
node_flavorstringCloudlet specific node flavor
deploymentstringDeployment type (kubernetes or docker)
num_mastersuint32Number of k8s masters (In case of docker deployment, this field is not required)
num_nodesuint32Number of k8s nodes (In case of docker deployment, this field is not required)
statusStatusInfostatus is used to reflect progress of creation or other events
external_volume_sizeuint64Size of external volume to be attached to nodes. This is for the root partition
auto_scale_policystringAuto scale policy name
availability_zonestringOptional Resource AZ if any
image_namestringOptional resource specific image to launch
reservableboolIf ClusterInst is reservable
reserved_bystringFor reservable MobiledgeX ClusterInsts, the current developer tenant
shared_volume_sizeuint64Size of an optional shared volume to be mounted on the master
privacy_policystringOptional privacy policy name
master_node_flavorstringGeneric flavor for k8s master VM when worker nodes > 0
skip_crm_cleanup_on_failureboolPrevents cleanup of resources on failure within CRM, used for diagnostic purposes
opt_resstringOptional Resources required by OS flavor if any

ClusterInstInfo​

ClusterInstInfo provides information from the Cloudlet Resource Manager about the state of the ClusterInst on the Cloudlet. Whereas the ClusterInst defines the intent of instantiating a Cluster on a Cloudlet, the ClusterInstInfo defines the current state of trying to apply that intent on the physical resources of the Cloudlet.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyClusterInstKeyUnique identifier key
notify_idint64Id of client assigned by server (internal use only)
stateTrackedStateState of the cluster instance
errorsstringrepeatedAny errors trying to create, update, or delete the ClusterInst on the Cloudlet.
statusStatusInfostatus is used to reflect progress of creation or other events

ClusterInstKey​

Cluster Instance unique key

ClusterInstKey uniquely identifies a Cluster Instance (ClusterInst) or Cluster Instance state (ClusterInstInfo).

FieldTypeLabelDescription
cluster_keyClusterKeyName of Cluster
cloudlet_keyCloudletKeyName of Cloudlet on which the Cluster is instantiated
organizationstringName of Developer organization that this cluster belongs to

ClusterInstApi​

Method NameRequest TypeResponse TypeDescription
CreateClusterInstClusterInstResult streamCreate Cluster Instance. Creates an instance of a Cluster on a Cloudlet, defined by a Cluster Key and a Cloudlet Key. ClusterInst is a collection of compute resources on a Cloudlet on which AppInsts are deployed.
DeleteClusterInstClusterInstResult streamDelete Cluster Instance. Deletes an instance of a Cluster deployed on a Cloudlet.
UpdateClusterInstClusterInstResult streamUpdate Cluster Instance. Updates an instance of a Cluster deployed on a Cloudlet.
ShowClusterInstClusterInstClusterInst streamShow Cluster Instances. Lists all the cluster instances managed by Edge Controller.

ClusterInstInfoApi​

Method NameRequest TypeResponse TypeDescription
ShowClusterInstInfoClusterInstInfoClusterInstInfo streamShow Cluster instances state.

Top

common.proto​

StatusInfo​

Status Information

Used to track status of create/delete/update for resources that are being modified by the controller via the CRM. Tasks are the high level jobs that are to be completed. Steps are work items within a task. Within the clusterinst and appinst objects this is converted to a string

FieldTypeLabelDescription
task_numberuint32
max_tasksuint32
task_namestring
step_namestring

CRMOverride​

Overrides default CRM behaviour

CRMOverride can be applied to commands that issue requests to the CRM. It should only be used by administrators when bugs have caused the Controller and CRM to get out of sync. It allows commands from the Controller to ignore errors from the CRM, or ignore the CRM completely (messages will not be sent to CRM).

NameNumberDescription
NO_OVERRIDE0No override
IGNORE_CRM_ERRORS1Ignore errors from CRM
IGNORE_CRM2Ignore CRM completely (does not inform CRM of operation)
IGNORE_TRANSIENT_STATE3Ignore Transient State (only admin should use if CRM crashed)
IGNORE_CRM_AND_TRANSIENT_STATE4Ignore CRM and Transient State

IpAccess​

IpAccess Options

IpAccess indicates the type of RootLB that Developer requires for their App

NameNumberDescription
IP_ACCESS_UNKNOWN0Unknown IP access
IP_ACCESS_DEDICATED1Dedicated RootLB
IP_ACCESS_SHARED3Shared RootLB

IpSupport​

Type of public IP support

Static IP support indicates a set of static public IPs are available for use, and managed by the Controller. Dynamic indicates the Cloudlet uses a DHCP server to provide public IP addresses, and the controller has no control over which IPs are assigned.

NameNumberDescription
IP_SUPPORT_UNKNOWN0Unknown IP support
IP_SUPPORT_STATIC1Static IP addresses are provided to and managed by Controller
IP_SUPPORT_DYNAMIC2IP addresses are dynamically provided by an Operator's DHCP server

Liveness​

Liveness Options

Liveness indicates if an object was created statically via an external API call, or dynamically via an internal algorithm.

NameNumberDescription
LIVENESS_UNKNOWN0Unknown liveness
LIVENESS_STATIC1Object managed by external entity
LIVENESS_DYNAMIC2Object managed internally
LIVENESS_AUTOPROV3Object created by Auto Provisioning, treated like Static except when deleting App

MaintenanceState​

Cloudlet Maintenance States

Maintenance allows for planned downtimes of Cloudlets. These states involve message exchanges between the Controller, the AutoProv service, and the CRM. Certain states are only set by certain actors.

NameNumberDescription
NORMAL_OPERATION0Normal operational state
MAINTENANCE_START1Request start of maintenance
FAILOVER_REQUESTED2Trigger failover for any HA AppInsts
FAILOVER_DONE3Failover done
FAILOVER_ERROR4Some errors encountered during maintenance failover
MAINTENANCE_START_NO_FAILOVER5Request start of maintenance without AutoProv failover
CRM_REQUESTED6Request CRM to transition to maintenance
CRM_UNDER_MAINTENANCE7CRM request done and under maintenance
CRM_ERROR8CRM failed to go into maintenance
UNDER_MAINTENANCE31Under maintenance

TrackedState​

Tracked States

TrackedState is used to track the state of an object on a remote node, i.e. track the state of a ClusterInst object on the CRM (Cloudlet).

NameNumberDescription
TRACKED_STATE_UNKNOWN0Unknown state
NOT_PRESENT1Not present (does not exist)
CREATE_REQUESTED2Create requested
CREATING3Creating
CREATE_ERROR4Create error
READY5Ready
UPDATE_REQUESTED6Update requested
UPDATING7Updating
UPDATE_ERROR8Update error
DELETE_REQUESTED9Delete requested
DELETING10Deleting
DELETE_ERROR11Delete error
DELETE_PREPARE12Delete prepare (extra state used by controller to block other changes)
CRM_INITOK13CRM INIT OK
CREATING_DEPENDENCIES14Creating dependencies (state used to tracked dependent object change progress)

Top

controller.proto​

Controller​

A Controller is a service that manages the edge-cloud data and controls other edge-cloud micro-services.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyControllerKeyUnique identifier key
build_masterstringBuild Master Version
build_headstringBuild Head Version
build_authorstringBuild Author
hostnamestringHostname

ControllerKey​

ControllerKey uniquely defines a Controller

FieldTypeLabelDescription
addrstringexternal API address

ControllerApi​

Method NameRequest TypeResponse TypeDescription
ShowControllerControllerController streamShow Controllers

Top

debug.proto​

DebugData​

FieldTypeLabelDescription
requestsDebugRequestrepeated

DebugReply​

FieldTypeLabelDescription
nodeNodeKeyService node identifier (see NodeShow)
outputstringDebug output, if any
iduint64Id used internally

DebugRequest​

DebugRequest. Keep everything in one struct to make it easy to send commands without having to change the code.

FieldTypeLabelDescription
nodeNodeKeyService node identifier (see NodeShow)
levelsstringComma separated list of debug level names: etcd,api,notify,dmereq,locapi,infra,metrics,upgrade,info,sampled
cmdstringDebug command (use "help" to see available commands)
prettyboolif possible, make output pretty
iduint64Id used internally
argsstringAdditional arguments for cmd
timeoutint64custom timeout (duration, defaults to 10s)

DebugApi​

Method NameRequest TypeResponse TypeDescription
EnableDebugLevelsDebugRequestDebugReply stream
DisableDebugLevelsDebugRequestDebugReply stream
ShowDebugLevelsDebugRequestDebugReply stream
RunDebugDebugRequestDebugReply stream

Top

device.proto​

Device​

Device represents a device on the MobiledgeX platform We record when this device first showed up on our platform

FieldTypeLabelDescription
fieldsstringrepeated
keyDeviceKeyKey
first_seengoogle.protobuf.TimestampTimestamp when the device was registered
last_seengoogle.protobuf.TimestampTimestamp when the device was last seen(Future use)
notify_idint64Id of client assigned by server (internal use only)

DeviceData​

FieldTypeLabelDescription
devicesDevicerepeated

DeviceKey​

DeviceKey is an identifier for a given device on the MobiledgeX platform It is defined by a unique id and unique id type And example of such a device is a MEL device that hosts several applications

FieldTypeLabelDescription
unique_id_typestringType of unique ID provided by the client
unique_idstringUnique identification of the client device or user. May be overridden by the server.

DeviceReport​

DeviceReport is a reporting message. It takes a begining and end time for the report

FieldTypeLabelDescription
keyDeviceKeyDevice Key
begingoogle.protobuf.TimestampTimestamp of the beginning of the report
endgoogle.protobuf.TimestampTimestamp of the beginning of the report

DeviceApi​

Method NameRequest TypeResponse TypeDescription
InjectDeviceDeviceResult
ShowDeviceDeviceDevice stream
EvictDeviceDeviceResult
ShowDeviceReportDeviceReportDevice streamDevice Reports API.

Top

exec.proto​

CloudletMgmtNode​

FieldTypeLabelDescription
typestringType of Cloudlet Mgmt Node
namestringName of Cloudlet Mgmt Node

ExecRequest​

ExecRequest is a common struct for enabling a connection to execute some work on a container.

FieldTypeLabelDescription
app_inst_keyAppInstKeyTarget AppInst
container_idstringContainerId is the name or ID of the target container, if applicable
offerstringOffer
answerstringAnswer
errstringAny error message
cmdRunCmdCommand to run (one of)
logShowLogShow log (one of)
consoleRunVMConsoleConsole (one of)
timeoutint64Timeout
access_urlstringAccess URL
edge_turn_addrstringEdgeTurn Server Address

RunCmd​

FieldTypeLabelDescription
commandstringCommand or Shell
cloudlet_mgmt_nodeCloudletMgmtNodeCloudlet Mgmt Node

RunVMConsole​

FieldTypeLabelDescription
urlstringVM Console URL

ShowLog​

FieldTypeLabelDescription
sincestringShow logs since either a duration ago (5s, 2m, 3h) or a timestamp (RFC3339)
tailint32Show only a recent number of lines
timestampsboolShow timestamps
followboolStream data

ExecApi​

Method NameRequest TypeResponse TypeDescription
RunCommandExecRequestExecRequestRun a Command or Shell on a container
RunConsoleExecRequestExecRequestRun console on a VM
ShowLogsExecRequestExecRequestView logs for AppInst
AccessCloudletExecRequestExecRequestAccess Cloudlet VM
SendLocalRequestExecRequestExecRequestThis is used internally to forward requests to other Controllers.e

Top

flavor.proto​

Flavor​

Flavors define the compute, memory, and storage capacity of computing instances. To put it simply, a flavor is an available hardware configuration for a server. It defines the size of a virtual server that can be launched.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyFlavorKeyUnique key for the new flavor.
ramuint64RAM in megabytes
vcpusuint64Number of virtual CPUs
diskuint64Amount of disk space in gigabytes
opt_res_mapFlavor.OptResMapEntryrepeatedOptional Resources request, key = [gpu, nas, nic] gpu kinds: [gpu, vgpu, pci] form: $resource=$kind:[$alias]$count ex: optresmap=gpu=vgpus:nvidia-63:1

Flavor.OptResMapEntry​

FieldTypeLabelDescription
keystring
valuestring

FlavorKey​

Flavor

FlavorKey uniquely identifies a Flavor.

FieldTypeLabelDescription
namestringFlavor name

FlavorApi​

Method NameRequest TypeResponse TypeDescription
CreateFlavorFlavorResultCreate a Flavor
DeleteFlavorFlavorResultDelete a Flavor
UpdateFlavorFlavorResultUpdate a Flavor
ShowFlavorFlavorFlavor streamShow Flavors
AddFlavorResFlavorResultAdd Optional Resource
RemoveFlavorResFlavorResultRemove Optional Resource

Top

metric.proto​

Metric​

Metric is an entry/point in a time series of values for Analytics/Billing.

FieldTypeLabelDescription
namestringMetric name
timestampgoogle.protobuf.TimestampTimestamp when the metric was captured
tagsMetricTagrepeatedTags associated with the metric for searching/filtering
valsMetricValrepeatedValues associated with the metric

MetricTag​

MetricTag is used as a tag or label to look up the metric, beyond just the name of the metric.

FieldTypeLabelDescription
namestringMetric tag name
valstringMetric tag value

MetricVal​

MetricVal is a value associated with the metric.

FieldTypeLabelDescription
namestringName of the value
dvaldouble
ivaluint64
bvalbool
svalstring

Top

node.proto​

Node​

Node defines a DME (distributed matching engine) or CRM (cloudlet resource manager) instance.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyNodeKeyUnique identifier key
notify_idint64Id of client assigned by server (internal use only)
build_masterstringBuild Master Version
build_headstringBuild Head Version
build_authorstringBuild Author
hostnamestringHostname
container_versionstringDocker edge-cloud container version which node instance use
internal_pkistringInternal PKI Config

NodeData​

FieldTypeLabelDescription
nodesNoderepeated

NodeKey​

NodeKey uniquely identifies a DME or CRM node

FieldTypeLabelDescription
namestringName or hostname of node
typestringNode type
cloudlet_keyCloudletKeyCloudlet on which node is running, or is associated with
regionstringRegion the node is in

NodeApi​

Method NameRequest TypeResponse TypeDescription
ShowNodeNodeNode streamShow all Nodes connected to all Controllers

Top

notice.proto​

Notice is the message used by the notify protocol to communicate and coordinate internally between different Mobiledgex services. For details on the notify protocol, see the "MEX Cloud Service Interactions" confluence article. In general, the protocol is used to synchronize state from one service to another. The protocol is fairly symmetric, with different state being synchronized both from server to client and client to server.

Notice​

FieldTypeLabelDescription
actionNoticeActionAction to perform
versionuint32Protocol version supported by sender
anygoogle.protobuf.AnyData
want_objsstringrepeatedWanted Objects
filter_cloudlet_keyboolFilter by cloudlet key
spanstringOpentracing span
mod_revint64Database revision for which object was last modified
tagsNotice.TagsEntryrepeatedExtra tags

Notice.TagsEntry​

FieldTypeLabelDescription
keystring
valuestring

NoticeAction​

NoticeAction denotes what kind of action this notification is for.

NameNumberDescription
NONE0No action
UPDATE1Update the object
DELETE2Delete the object
VERSION3Version exchange negotitation message
SENDALL_END4Initial send all finished message

NotifyApi​

Method NameRequest TypeResponse TypeDescription
StreamNoticeNotice streamNotice streamBidrectional stream for exchanging data between controller and DME/CRM

Top

operatorcode.proto​

OperatorCode​

OperatorCode maps a carrier code to an Operator organization name

FieldTypeLabelDescription
codestringMCC plus MNC code, or custom carrier code designation.
organizationstringOperator Organization name

OperatorCodeApi​

Method NameRequest TypeResponse TypeDescription
CreateOperatorCodeOperatorCodeResultCreate Operator Code. Create a code for an Operator.
DeleteOperatorCodeOperatorCodeResultDelete Operator Code. Delete a code for an Operator.
ShowOperatorCodeOperatorCodeOperatorCode streamShow Operator Code. Show Codes for an Operator.

Top

org.proto​

Organization​

FieldTypeLabelDescription
namestringOrganization name

OrganizationData​

FieldTypeLabelDescription
orgsOrganizationrepeated

OrganizationApi​

Method NameRequest TypeResponse TypeDescription
OrganizationInUseOrganizationResultCheck if an Organization is in use.

Top

privacypolicy.proto​

OutboundSecurityRule​

FieldTypeLabelDescription
protocolstringtcp, udp, icmp
port_range_minuint32TCP or UDP port range start
port_range_maxuint32TCP or UDP port range end
remote_cidrstringremote CIDR X.X.X.X/X

PrivacyPolicy​

PrivacyPolicy defines security restrictions for cluster instances nodes scaled up or down.

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyPolicyKeyUnique identifier key
outbound_security_rulesOutboundSecurityRulerepeatedlist of outbound security rules for whitelisting traffic

PrivacyPolicyApi​

Method NameRequest TypeResponse TypeDescription
CreatePrivacyPolicyPrivacyPolicyResultCreate a Privacy Policy
DeletePrivacyPolicyPrivacyPolicyResultDelete a Privacy policy
UpdatePrivacyPolicyPrivacyPolicyResultUpdate a Privacy policy
ShowPrivacyPolicyPrivacyPolicyPrivacyPolicy streamShow Privacy Policies. Any fields specified will be used to filter results.

Top

refs.proto​

AppInstRefs​

FieldTypeLabelDescription
keyAppKeyApp key
instsAppInstRefs.InstsEntryrepeatedAppInsts for App (key is JSON of AppInst Key)

AppInstRefs.InstsEntry​

FieldTypeLabelDescription
keystring
valueuint32

CloudletRefs​

CloudletRefs track used resources and Clusters instantiated on a Cloudlet. Used resources are compared against max resources for a Cloudlet to determine if resources are available for a new Cluster to be instantiated on the Cloudlet.

FieldTypeLabelDescription
keyCloudletKeyCloudlet key
clustersClusterKeyrepeatedClusters instantiated on the Cloudlet
used_ramuint64Used RAM in MB
used_vcoresuint64Used VCPU cores
used_diskuint64Used disk in GB
root_lb_portsCloudletRefs.RootLbPortsEntryrepeatedUsed ports on root load balancer. Map key is public port, value is a bitmap for the protocol bitmap: bit 0: tcp, bit 1: udp
used_dynamic_ipsint32Used dynamic IPs
used_static_ipsstringUsed static IPs
opt_res_used_mapCloudletRefs.OptResUsedMapEntryrepeatedUsed Optional Resources

CloudletRefs.OptResUsedMapEntry​

FieldTypeLabelDescription
keystring
valueuint32

CloudletRefs.RootLbPortsEntry​

FieldTypeLabelDescription
keyint32
valueint32

ClusterRefs​

ClusterRefs track used resources within a ClusterInst. Each AppInst specifies a set of required resources (Flavor), so tracking resources used by Apps within a Cluster is necessary to determine if enough resources are available for another AppInst to be instantiated on a ClusterInst.

FieldTypeLabelDescription
keyClusterInstKeyCluster Instance key
appsAppKeyrepeatedApps instances in the Cluster Instance
used_ramuint64Used RAM in MB
used_vcoresuint64Used VCPU cores
used_diskuint64Used disk in GB

AppInstRefsApi​

Method NameRequest TypeResponse TypeDescription
ShowAppInstRefsAppInstRefsAppInstRefs streamShow AppInstRefs (debug only)

CloudletRefsApi​

This API should be admin-only

Method NameRequest TypeResponse TypeDescription
ShowCloudletRefsCloudletRefsCloudletRefs streamShow CloudletRefs (debug only)

ClusterRefsApi​

Method NameRequest TypeResponse TypeDescription
ShowClusterRefsClusterRefsClusterRefs streamShow ClusterRefs (debug only)

Top

restagtable.proto​

ResTagTable​

FieldTypeLabelDescription
fieldsstringrepeated
keyResTagTableKey
tagsResTagTable.TagsEntryrepeatedone or more string tags
azonestringavailability zone(s) of resource if required

ResTagTable.TagsEntry​

FieldTypeLabelDescription
keystring
valuestring

ResTagTableKey​

FieldTypeLabelDescription
namestringResource Table Name
organizationstringOperator organization of the cloudlet site.

OptResNames​

NameNumberDescription
GPU0
NAS1
NIC2

ResTagTableApi​

This API should be admin-only

Method NameRequest TypeResponse TypeDescription
CreateResTagTableResTagTableResultCreate TagTable
DeleteResTagTableResTagTableResultDelete TagTable
UpdateResTagTableResTagTableResult
ShowResTagTableResTagTableResTagTable streamshow TagTable
AddResTagResTagTableResultadd new tag(s) to TagTable
RemoveResTagResTagTableResultremove existing tag(s) from TagTable
GetResTagTableResTagTableKeyResTagTableFetch a copy of the TagTable

Top

result.proto​

Result​

Result is a generic object for returning the result of an API call. In general, result is not used. The error value returned by the GRPC API call is used instead.

FieldTypeLabelDescription
messagestringMessage, may be success or failure message
codeint32Error code, 0 indicates success, non-zero indicates failure (not implemented)

Top

settings.proto​

Settings​

Global settings

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
shepherd_metrics_collection_intervalint64Shepherd metrics collection interval for k8s and docker appInstances (duration)
shepherd_alert_evaluation_intervalint64Shepherd alert evaluation interval for k8s and docker appInstances (duration)
shepherd_health_check_retriesint32Number of times Shepherd Health Check fails before we mark appInst down
shepherd_health_check_intervalint64Health Checking probing frequency (duration)
auto_deploy_interval_secdoubleAuto Provisioning Stats push and analysis interval (seconds)
auto_deploy_offset_secdoubleAuto Provisioning analysis offset from interval (seconds)
auto_deploy_max_intervalsuint32Auto Provisioning Policy max allowed intervals
create_app_inst_timeoutint64Create AppInst timeout (duration)
update_app_inst_timeoutint64Update AppInst timeout (duration)
delete_app_inst_timeoutint64Delete AppInst timeout (duration)
create_cluster_inst_timeoutint64Create ClusterInst timeout (duration)
update_cluster_inst_timeoutint64Update ClusterInst timeout (duration)
delete_cluster_inst_timeoutint64Delete ClusterInst timeout (duration)
master_node_flavorstringDefault flavor for k8s master VM and > 0 workers
load_balancer_max_port_rangeint32Max IP Port range when using a load balancer
max_tracked_dme_clientsint32Max DME clients to be tracked at the same time.
chef_client_intervalint32Default chef client interval (duration)
influx_db_metrics_retentionint64Default influxDB metrics retention policy (duration)
cloudlet_maintenance_timeoutint32Default Cloudlet Maintenance timeout (used twice for AutoProv and Cloudlet)
update_vm_pool_timeoutint64Update VM pool timeout (duration)

SettingsApi​

Method NameRequest TypeResponse TypeDescription
UpdateSettingsSettingsResultUpdate settings
ResetSettingsSettingsResultReset all settings to their defaults
ShowSettingsSettingsSettingsShow settings

Top

version.proto​

VersionHash​

Below enum lists hashes as well as corresponding versions

NameNumberDescription
HASH_d41d8cd98f00b204e9800998ecf8427e0
HASH_d4ca5418a77d22d968ce7a2afc549dfe9interim versions deleted
HASH_7848d42e3a2eaf36e53bbd3af581b13a10
HASH_f31b7a9d7e06f72107e0ab13c708704e11
HASH_03fad51f0343d41f617329151f474d2b12
HASH_7d32a983fafc3da768e045b1dc4d5f5013
HASH_747c14bdfe2043f09d251568e4a722c614
HASH_c7fb20f545a5bc9869b00bb770753c3115
HASH_83cd5c44b5c7387ebf7d055e7345ab4216
HASH_d8a4e697d0d693479cfd9c1c523d7e0617
HASH_e8360aa30f234ecefdfdb9fb2dc79c2018
HASH_c53c7840d242efc7209549a36fcf9e0419
HASH_1a57396698c4ade15f0579c9f5714cd620

Top

vmpool.proto​

VM​

FieldTypeLabelDescription
namestringVM Name
net_infoVMNetInfoVM IP
group_namestringVM Group Name
stateVMStateVM State
updated_atgoogle.protobuf.TimestampLast updated time
internal_namestringVM Internal Name
flavorFlavorInfoVM Flavor

VMNetInfo​

FieldTypeLabelDescription
external_ipstringExternal IP
internal_ipstringInternal IP

VMPool​

VMPool defines a pool of VMs to be part of a Cloudlet

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyVMPoolKeyVMPool Key
vmsVMrepeatedlist of VMs to be part of VM pool
stateTrackedStateCurrent state of the VM pool
errorsstringrepeatedAny errors trying to add/remove VM to/from VM Pool
statusStatusInfostatus is used to reflect progress of creation or other events
crm_overrideCRMOverrideOverride actions to CRM

VMPoolInfo​

VMPoolInfo is used to manage VM pool from Cloudlet

FieldTypeLabelDescription
fieldsstringrepeatedFields are used for the Update API to specify which fields to apply
keyVMPoolKeyUnique identifier key
notify_idint64Id of client assigned by server (internal use only)
vmsVMrepeatedlist of VMs
stateTrackedStateCurrent state of the VM pool on the Cloudlet
errorsstringrepeatedAny errors trying to add/remove VM to/from VM Pool
statusStatusInfostatus is used to reflect progress of creation or other events

VMPoolKey​

VMPool unique key

VMPoolKey uniquely identifies a VMPool.

FieldTypeLabelDescription
organizationstringOrganization of the vmpool
namestringName of the vmpool

VMPoolMember​

VMPoolMember is used to add and remove VM from VM Pool

FieldTypeLabelDescription
keyVMPoolKeyVMPool key
vmVMVM part of VM Pool
crm_overrideCRMOverrideOverride actions to CRM

VMSpec​

VMSpec defines the specification of VM required by CRM

FieldTypeLabelDescription
internal_namestringVM internal name
external_networkboolVM has external network defined or not
internal_networkboolVM has internal network defined or not
flavorFlavorVM flavor

VMAction​

VM Action

VMAction is the action to be performed on VM Pool

NameNumberDescription
VM_ACTION_DONE0Done performing action
VM_ACTION_ALLOCATE1Allocate VMs from VM Pool
VM_ACTION_RELEASE2Release VMs from VM Pool

VMState​

VM State

VMState is the state of the VM

NameNumberDescription
VM_FREE0VM is free to use
VM_IN_PROGRESS1VM is in progress
VM_IN_USE2VM is in use
VM_ADD3Add VM
VM_REMOVE4Remove VM
VM_UPDATE5Update VM
VM_FORCE_FREE6Forcefully free a VM, to be used at user's discretion

VMPoolApi​

Method NameRequest TypeResponse TypeDescription
CreateVMPoolVMPoolResultCreate VMPool. Creates VM pool which will have VMs defined.
DeleteVMPoolVMPoolResultDelete VMPool. Deletes VM pool given that none of VMs part of this pool is used.
UpdateVMPoolVMPoolResultUpdate VMPool. Updates a VM pool's VMs.
ShowVMPoolVMPoolVMPool streamShow VMPools. Lists all the VMs part of the VM pool.
AddVMPoolMemberVMPoolMemberResultAdd VMPoolMember. Adds a VM to existing VM Pool.
RemoveVMPoolMemberVMPoolMemberResultRemove VMPoolMember. Removes a VM from existing VM Pool.

Scalar Value Types​

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)