14285: Export stats as prometheus metrics.
[arvados.git] / sdk / go / arvados / config.go
index 6edd18418bb8015087f8b486acf6ee21d2d26db4..e2e9907d5d115ebb61a53ae873249511b3732a50 100644 (file)
@@ -50,6 +50,11 @@ func (sc *Config) GetCluster(clusterID string) (*Cluster, error) {
        }
 }
 
+type RequestLimits struct {
+       MaxItemsPerResponse            int
+       MultiClusterRequestConcurrency int
+}
+
 type Cluster struct {
        ClusterID          string `json:"-"`
        ManagementToken    string
@@ -58,6 +63,7 @@ type Cluster struct {
        HTTPRequestTimeout Duration
        RemoteClusters     map[string]RemoteCluster
        PostgreSQL         PostgreSQL
+       RequestLimits      RequestLimits
 }
 
 type PostgreSQL struct {
@@ -155,6 +161,7 @@ func (cc *Cluster) GetNodeProfile(node string) (*NodeProfile, error) {
 type NodeProfile struct {
        Controller  SystemServiceInstance `json:"arvados-controller"`
        Health      SystemServiceInstance `json:"arvados-health"`
+       Keepbalance SystemServiceInstance `json:"keep-balance"`
        Keepproxy   SystemServiceInstance `json:"keepproxy"`
        Keepstore   SystemServiceInstance `json:"keepstore"`
        Keepweb     SystemServiceInstance `json:"keep-web"`
@@ -172,6 +179,7 @@ const (
        ServiceNameNodemanager ServiceName = "arvados-node-manager"
        ServiceNameWorkbench   ServiceName = "arvados-workbench"
        ServiceNameWebsocket   ServiceName = "arvados-ws"
+       ServiceNameKeepbalance ServiceName = "keep-balance"
        ServiceNameKeepweb     ServiceName = "keep-web"
        ServiceNameKeepproxy   ServiceName = "keepproxy"
        ServiceNameKeepstore   ServiceName = "keepstore"
@@ -186,12 +194,27 @@ func (np *NodeProfile) ServicePorts() map[ServiceName]string {
                ServiceNameNodemanager: np.Nodemanager.Listen,
                ServiceNameWorkbench:   np.Workbench.Listen,
                ServiceNameWebsocket:   np.Websocket.Listen,
+               ServiceNameKeepbalance: np.Keepbalance.Listen,
                ServiceNameKeepweb:     np.Keepweb.Listen,
                ServiceNameKeepproxy:   np.Keepproxy.Listen,
                ServiceNameKeepstore:   np.Keepstore.Listen,
        }
 }
 
+func (h RequestLimits) GetMultiClusterRequestConcurrency() int {
+       if h.MultiClusterRequestConcurrency == 0 {
+               return 4
+       }
+       return h.MultiClusterRequestConcurrency
+}
+
+func (h RequestLimits) GetMaxItemsPerResponse() int {
+       if h.MaxItemsPerResponse == 0 {
+               return 1000
+       }
+       return h.MaxItemsPerResponse
+}
+
 type SystemServiceInstance struct {
        Listen   string
        TLS      bool