From 614c31c2cf56aede6ebfc671e78e1c0fe140da83 Mon Sep 17 00:00:00 2001 From: Andrii Skomorokhov Date: Mon, 5 Apr 2021 10:30:23 +0300 Subject: [PATCH] PMM-7498 azure monitoring (#718) * PMM-7498 Add Discover and Add Azure Database. * PMM-7498 Add MariaDB and creds field. * Remove myself from CODEOWNERS * PMM-7557: Add bucket name field (#691) * PMM-7676 Add Azure exporter. * PMM-7676 Add agent type. * PMM-7676 Some changes in naming. * PMM-7676 Fix. * PMM-7676 Prefix renaming. * PMM-7676 Some changes in structs. * PMM-7676 Remove discovery part. * PMM-7676 Add remote to inventory. * PMM-7676 Node type. * PMM-7676 Add resource_type, renaming. * PMM-7676 Add resource type as required. * PMM-7676 Fix for required field. * PMM-7676 Fix. * PMM-7498 Clean Azure DB messages. * PMM-7498 Add node_type as SKU. * PMM-7498 Clean Azure DB messages. * PMM-7498 Clean up fields name. * PMM-7498 Add vardation to required fields. * PMM-7498 Rename Azure field. * PMM-7498 Rename Azure field. * PMM-7498 Removed MariaDB as separate MySQL type. * PMM-7767 Azure monitoring - feature flag * PMM-7498 Moved azure api to beta * PMM-7498 Fix comments. * PMM-7498 Add Discover and Add Azure Database. * PMM-7498 Add MariaDB and creds field. * PMM-7557: Add bucket name field (#691) * PMM-7676 Add agent type. * PMM-7676 Some changes in naming. * PMM-7676 Fix. * PMM-7676 Some changes in structs. * PMM-7676 Remove discovery part. * PMM-7676 Add resource_type, renaming. * PMM-7676 Add resource type as required. * PMM-7676 Fix for required field. * PMM-7498 Clean Azure DB messages. * PMM-7498 Add node_type as SKU. * PMM-7498 Clean Azure DB messages. * PMM-7498 Clean up fields name. * PMM-7498 Add vardation to required fields. * PMM-7498 Removed MariaDB as separate MySQL type. * PMM-7498 Moved azure api to beta Co-authored-by: Alexey Palazhchenko Co-authored-by: Maksym <4347218+oter@users.noreply.github.com> Co-authored-by: Jiri Ctvrtka Co-authored-by: Adivinho --- .github/CODEOWNERS | 1 - api/Makefile | 5 +- api/agentlocalpb/json/agentlocalpb.json | 6 +- .../client/agent_local/status_responses.go | 7 +- api/api.descriptor | Bin 140096 -> 155184 bytes api/inventorypb/agents.go | 1 + api/inventorypb/agents.pb.go | 3412 ++++++++++------- api/inventorypb/agents.pb.gw.go | 162 + api/inventorypb/agents.proto | 101 + api/inventorypb/agents.validator.pb.go | 58 + .../add_azure_database_exporter_parameters.go | 131 + .../add_azure_database_exporter_responses.go | 482 +++ .../agents/add_external_exporter_responses.go | 36 - .../json/client/agents/agents_client.go | 70 + ...ange_azure_database_exporter_parameters.go | 131 + ...hange_azure_database_exporter_responses.go | 494 +++ .../json/client/agents/get_agent_responses.go | 155 + .../client/agents/list_agents_responses.go | 169 +- ...d_remote_azure_database_node_parameters.go | 131 + ...dd_remote_azure_database_node_responses.go | 349 ++ .../json/client/nodes/get_node_responses.go | 75 + .../json/client/nodes/list_nodes_responses.go | 89 +- .../json/client/nodes/nodes_client.go | 35 + api/inventorypb/json/inventorypb.json | 868 ++++- api/inventorypb/nodes.go | 9 +- api/inventorypb/nodes.pb.go | 1130 ++++-- api/inventorypb/nodes.pb.gw.go | 81 + api/inventorypb/nodes.proto | 61 + api/inventorypb/nodes.validator.pb.go | 39 + api/inventorypb/types/agent_types.go | 2 + api/inventorypb/types/node_types.go | 18 +- api/managementpb/azure/azure.pb.go | 1061 +++++ api/managementpb/azure/azure.pb.gw.go | 250 ++ api/managementpb/azure/azure.proto | 191 + api/managementpb/azure/azure.validator.pb.go | 84 + api/managementpb/azure/json/azure.json | 381 ++ .../add_azure_database_parameters.go | 131 + .../add_azure_database_responses.go | 395 ++ .../azure_database/azure_database_client.go | 104 + .../discover_azure_database_parameters.go | 131 + .../discover_azure_database_responses.go | 421 ++ .../azure/json/client/pmm_d_baa_s_client.go | 112 + api/managementpb/azure/json/header.json | 11 + .../client/external/add_external_responses.go | 7 +- .../client/ha_proxy/add_ha_proxy_responses.go | 7 +- .../client/mongo_db/add_mongo_db_responses.go | 7 +- .../client/my_sql/add_my_sql_responses.go | 7 +- .../client/node/register_node_responses.go | 7 +- .../postgre_sql/add_postgre_sql_responses.go | 7 +- .../proxy_sql/add_proxy_sql_responses.go | 7 +- api/managementpb/json/managementpb.json | 21 +- .../server/change_settings_responses.go | 9 + .../client/server/get_settings_responses.go | 3 + api/serverpb/json/serverpb.json | 24 +- api/serverpb/server.pb.go | 437 ++- api/serverpb/server.proto | 12 +- api/swagger/swagger-dev.json | 1341 ++++++- api/swagger/swagger.json | 919 ++++- 58 files changed, 12217 insertions(+), 2178 deletions(-) create mode 100644 api/inventorypb/json/client/agents/add_azure_database_exporter_parameters.go create mode 100644 api/inventorypb/json/client/agents/add_azure_database_exporter_responses.go create mode 100644 api/inventorypb/json/client/agents/change_azure_database_exporter_parameters.go create mode 100644 api/inventorypb/json/client/agents/change_azure_database_exporter_responses.go create mode 100644 api/inventorypb/json/client/nodes/add_remote_azure_database_node_parameters.go create mode 100644 api/inventorypb/json/client/nodes/add_remote_azure_database_node_responses.go create mode 100644 api/managementpb/azure/azure.pb.go create mode 100644 api/managementpb/azure/azure.pb.gw.go create mode 100644 api/managementpb/azure/azure.proto create mode 100644 api/managementpb/azure/azure.validator.pb.go create mode 100644 api/managementpb/azure/json/azure.json create mode 100644 api/managementpb/azure/json/client/azure_database/add_azure_database_parameters.go create mode 100644 api/managementpb/azure/json/client/azure_database/add_azure_database_responses.go create mode 100644 api/managementpb/azure/json/client/azure_database/azure_database_client.go create mode 100644 api/managementpb/azure/json/client/azure_database/discover_azure_database_parameters.go create mode 100644 api/managementpb/azure/json/client/azure_database/discover_azure_database_responses.go create mode 100644 api/managementpb/azure/json/client/pmm_d_baa_s_client.go create mode 100644 api/managementpb/azure/json/header.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 9b085134ce..23f8b54880 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1 @@ * @atymchuk @BupycHuk - diff --git a/api/Makefile b/api/Makefile index 67b982793a..35b8018263 100644 --- a/api/Makefile +++ b/api/Makefile @@ -25,7 +25,7 @@ gen: clean ## Generate files. ./prototool all - for API in agentlocalpb serverpb inventorypb managementpb managementpb/dbaas managementpb/ia managementpb/backup qanpb ; do \ + for API in agentlocalpb serverpb inventorypb managementpb managementpb/dbaas managementpb/ia managementpb/backup managementpb/azure qanpb ; do \ set -x ; \ swagger mixin $$API/json/header.json $$API/*.swagger.json --output=$$API/json/$$(basename $$API).json --keep-spec-order; \ swagger flatten --with-flatten=expand --with-flatten=remove-unused $$API/json/$$(basename $$API).json --output=$$API/json/$$(basename $$API).json ; \ @@ -44,7 +44,7 @@ gen: clean ## Generate files. done # generate public API spec, omit agentlocalpb (always private), - # and managementpb/dbaas, managementpb/ia, managementpb/backup and qanpb (not v1 yet) + # and managementpb/dbaas, managementpb/ia, managementpb/backup , managementpb/azure and qanpb (not v1 yet) swagger mixin --output=swagger/swagger.json \ swagger/header.json \ serverpb/json/serverpb.json \ @@ -63,6 +63,7 @@ gen: clean ## Generate files. managementpb/dbaas/json/dbaas.json \ managementpb/ia/json/ia.json \ managementpb/backup/json/backup.json \ + managementpb/azure/json/azure.json \ qanpb/json/qanpb.json swagger validate swagger/swagger-dev.json diff --git a/api/agentlocalpb/json/agentlocalpb.json b/api/agentlocalpb/json/agentlocalpb.json index bdf667d4ea..f2f161ce77 100644 --- a/api/agentlocalpb/json/agentlocalpb.json +++ b/api/agentlocalpb/json/agentlocalpb.json @@ -141,7 +141,8 @@ "QAN_POSTGRESQL_PGSTATEMENTS_AGENT", "QAN_POSTGRESQL_PGSTATMONITOR_AGENT", "RDS_EXPORTER", - "EXTERNAL_EXPORTER" + "EXTERNAL_EXPORTER", + "AZURE_DATABASE_EXPORTER" ], "x-order": 1 }, @@ -326,7 +327,8 @@ "QAN_POSTGRESQL_PGSTATEMENTS_AGENT", "QAN_POSTGRESQL_PGSTATMONITOR_AGENT", "RDS_EXPORTER", - "EXTERNAL_EXPORTER" + "EXTERNAL_EXPORTER", + "AZURE_DATABASE_EXPORTER" ], "x-order": 1 }, diff --git a/api/agentlocalpb/json/client/agent_local/status_responses.go b/api/agentlocalpb/json/client/agent_local/status_responses.go index b4a8ebc9eb..9284ce3d05 100644 --- a/api/agentlocalpb/json/client/agent_local/status_responses.go +++ b/api/agentlocalpb/json/client/agent_local/status_responses.go @@ -128,7 +128,7 @@ type AgentsInfoItems0 struct { AgentID string `json:"agent_id,omitempty"` // AgentType describes supported Agent types. - // Enum: [AGENT_TYPE_INVALID PMM_AGENT VM_AGENT NODE_EXPORTER MYSQLD_EXPORTER MONGODB_EXPORTER POSTGRES_EXPORTER PROXYSQL_EXPORTER QAN_MYSQL_PERFSCHEMA_AGENT QAN_MYSQL_SLOWLOG_AGENT QAN_MONGODB_PROFILER_AGENT QAN_POSTGRESQL_PGSTATEMENTS_AGENT QAN_POSTGRESQL_PGSTATMONITOR_AGENT RDS_EXPORTER EXTERNAL_EXPORTER] + // Enum: [AGENT_TYPE_INVALID PMM_AGENT VM_AGENT NODE_EXPORTER MYSQLD_EXPORTER MONGODB_EXPORTER POSTGRES_EXPORTER PROXYSQL_EXPORTER QAN_MYSQL_PERFSCHEMA_AGENT QAN_MYSQL_SLOWLOG_AGENT QAN_MONGODB_PROFILER_AGENT QAN_POSTGRESQL_PGSTATEMENTS_AGENT QAN_POSTGRESQL_PGSTATMONITOR_AGENT RDS_EXPORTER EXTERNAL_EXPORTER AZURE_DATABASE_EXPORTER] AgentType *string `json:"agent_type,omitempty"` // AgentStatus represents actual Agent status. @@ -168,7 +168,7 @@ var agentsInfoItems0TypeAgentTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["AGENT_TYPE_INVALID","PMM_AGENT","VM_AGENT","NODE_EXPORTER","MYSQLD_EXPORTER","MONGODB_EXPORTER","POSTGRES_EXPORTER","PROXYSQL_EXPORTER","QAN_MYSQL_PERFSCHEMA_AGENT","QAN_MYSQL_SLOWLOG_AGENT","QAN_MONGODB_PROFILER_AGENT","QAN_POSTGRESQL_PGSTATEMENTS_AGENT","QAN_POSTGRESQL_PGSTATMONITOR_AGENT","RDS_EXPORTER","EXTERNAL_EXPORTER"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["AGENT_TYPE_INVALID","PMM_AGENT","VM_AGENT","NODE_EXPORTER","MYSQLD_EXPORTER","MONGODB_EXPORTER","POSTGRES_EXPORTER","PROXYSQL_EXPORTER","QAN_MYSQL_PERFSCHEMA_AGENT","QAN_MYSQL_SLOWLOG_AGENT","QAN_MONGODB_PROFILER_AGENT","QAN_POSTGRESQL_PGSTATEMENTS_AGENT","QAN_POSTGRESQL_PGSTATMONITOR_AGENT","RDS_EXPORTER","EXTERNAL_EXPORTER","AZURE_DATABASE_EXPORTER"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -222,6 +222,9 @@ const ( // AgentsInfoItems0AgentTypeEXTERNALEXPORTER captures enum value "EXTERNAL_EXPORTER" AgentsInfoItems0AgentTypeEXTERNALEXPORTER string = "EXTERNAL_EXPORTER" + + // AgentsInfoItems0AgentTypeAZUREDATABASEEXPORTER captures enum value "AZURE_DATABASE_EXPORTER" + AgentsInfoItems0AgentTypeAZUREDATABASEEXPORTER string = "AZURE_DATABASE_EXPORTER" ) // prop value enum diff --git a/api/api.descriptor b/api/api.descriptor index 5207cdc52d58013e23dd11bb17a8f6114d64dcaf..84c3f3ac1521f4852726f52d34dbedb9703858cc 100644 GIT binary patch delta 11306 zcmbt4Yj9iDnfpb?oWDQocZt)%Bt zvUe2s(%dFNd@jr+CW?;dF^z2dq!GM zYA4h2#KpJ|N%d@>2B0nx=?emJa>UeJq?|0p9mL5tok}awgj?Vn^>}CF@!5##O=w@P z6f^mG(M#-VG8s=A5@|Lhl3T<(%w|y-I+(c05MVW@+q4wCP;_0y&e1Khi=y65;dweQ zCf)%DsZ6SD!%`MVHFD-p#%FOPRmPYs0?}gCl6S0;EhMg~tc8Eeo+)kWGBbg4|9-ncq;1V>~H*G{#bycIp z9UK<-i)M_!;|Y#d%h60dSqucRsu(0gx|$GNCSWjK*9jT4cz1rgxFSE7x%Hd~t`Ca6 zI<78uw~H_7%A+Eas196=q39ptRiuV3moRkWuIET%9?8GPm_od21U1Dy;3QQEWg!w* zLeg9I#YopCl+=|=C6(WD(b+E&RNoRonHHK86n8^~a@t{)(}wDGeWqG&G(}=~8e`A8 zm=@{k&11HYeh!2__aw9~zMB~F)StGICg0Jyq&lRel^G?aYPT-TXkWR%H8V)s6*dtF z88d;@+)OH%3@6gzc#OG3JIc%{ujEiB`eXsjNJ#7_Z5AS^r1)Gis0Pvt3DsT6NwgM` zKn)>;BdAUxg!ozQj>no?`@G@UJlbkJx#0B`v3uLmjoM515^!kGCf8`4X%{%P#~;`T zM03r%7k~YLDhPk)TpT}sn@tv{NsEOW^++O~Osh$EU1tT_TW7gth7CBmsfbnWnUeFHWD@x~cJ$opks@p`v}C{OUDY;>E7aI#Q=^DHsW( ze3)7)xJ*~@;Xyu%itv(#BDjjomLIxOu}%1 z%UKso9xg%u7VVoWNcS`Ykp>Sbv02quWc;r`9M5FP>Jn2XE{ajlPL{F#PsE+}XRjQB zuPy%em1EE;t|TqK1AFD+z>sgsH{hEb4h&EGC*-MN*;Uu~h4qW+SO2O$`ZN%CIbn+3 zYzA<`{yf!e-t#&FaEU^4@c=WXz$C=;4Q%+Ba8m96yZht+aFeX-VsO_ zno$WHG&m=W{?j<#`l0vz>X01g`V0pN%bS zx_-$ty=@mBhwFYowDw;+8%k_p@q6!QuHAUHk+esZ7#0sv3@VA49&Q-=UoYlN>A0xJ z0h(9~fh`{ZX&VZsg7JAZS+t~C@OTTNl=k&+H)Sl*X?yAD#HxY3Q!f#va&+@iibua( zASjMj;x$IF$}EXiJP_v4N<}T{1A(k6xyz9lX05THDt3_Su<<)zG7@tLqcCRWNp&_H zuZ!_Y$0_TdG5XH;VLkOV3a!-sZSZ8u1xP)nmI{!aq*{&5hm-Lb)0mrwL%DEByq4H_ z%H=?z*7j}ia+P}LduPX9)RfNRwhz6qgC&J4y zr|e`SV{AaW56TG3bbDfGNxEbT${hgics4J`qsgKvd`s*!hovt$F(ws9c$Gf*0=!(i zl5lbEx>WrSBI1)-Kb!R-ulBy-i zS51-0UYeP+(&|#oJcCJdE*oQoRUWB~oi8zStg8yJN|`y9qotEGS7)XWx0DfXU!qdg z%&%E}<*?|;jD(_#RNSG&+#-izKgC+lY2&8fQ^jx->%g}yfhQXKQd zzXsA&l3#I?MWQ*Vs|zztGr75>BdI;}!{$srd>Fx_C@}Px%diCO6cCqHk>WZFUseE< zqxGfXocV%w;%qa$YYSBCwO>y$A4rz&>Ie5u?hf_8hEJTSD~(B@EPMQ9+)r%@xUCS*LOq9Ef^B8unl2LORw9E zFNPb52Nko{)(bUa4q+@=O;(s+x(n0mvl?@79Nii{{@<`k`^oR@86zN|KbsE+RW^qQ zorJKoH$1o=7Fxaf-tut)A-G4EoeY@&M89V?msmWg?Q6DT8O<643VS>Bizi^mby72F z91W+^rhv>gt29BHEaOJif-R_=xNg}1tr-(l&W)$KZzYvRBS^$%<&PYp-c)%}Du(LAh5=25O{l2}E!$YnL5g{k{4i2&jo9M)5pe#?wE_?Sb z;$+90?L8C07%sBvCNPHS+GxQ#HN@e+VgKaFppTtbq%}IRn|}y>4*_wSjHkroKvop( zR$OD1U(vK_>1z?Hl^I@6IfY>K_t%2dWLRcyu^t9Ow|U`8fi}~@wQvERrn}a`eH+E~ zqE7S5q*l;N%qxsAlcicdj--ug>BkV!zu^kv4i1RgE{*4251JLf6)z7 zAh7>h=`-u0k>0rxqiO~1-2}azZNyWGfUfGk|Fmb{-vr~rLGdvl;!;3yqg6^vVN6kV zUmTQW!dA)DW5kJ#uBsRtG8aPo$nLpDF9N1UW`Oi3rhNALtzM&q&BIJ?JSHC>mNZz*R< zI+%Bi!wkpL$pzU!5Vw+w#E~E}%kbJQco_rHeJGL;hPK+Wl8I(O>9~%JiG}HH)ggs{<;vEQTf9LB((z3cCLjIiU`KKp`3!K! zuj6ur4ECmw_jp20D%hOFyn7kmCk!ZqcN0k*WuAOC5R6A6YLHQJa4PFdOJFoUJ7_`< zw{caW&(Du}CP}rfM{Q5qeGT52%qx*O)wo)5TZraNSJuI<5q5ybkFM-U@Drg&qYS6Tz5GnP>i~|KgmW+l`|THm&3(=QeUWWMkjL_bfg%m z+NUN{*tus81J6llE|@lN28~bVXH26soKx;w+=3p2`x5scb57NLO%_Yi4=B0~4kaZ? z>uxpepBx(+$k~_~@5Sx((Ho(Ieq#r?Gw3oyGXd-zFy>637@9G-mHfn0ijI*V;0=m_ z$u7Fs*=x42Wzdmxa8iP_FpATIoUdBu&@YFvapEo@V^Fz#w))Nrgybb9er*Rv!KFJF zH(2(!6okGz4(<}D^vkUn@%qQ0GLv7Y$HX@iaqFHi5ij4L`=PLG28MQ-=eo@KKcqS)1%&1C#hoef_Xic({q) zv>hIxr~S~CeQ!HNY<1FJ(tx`$SEtX(Fp@b+8VknIfDF}llL{pg;U|mTUlz;GB$1LC z5W8Si=9Ms(xRG-HIggPC?S2qQcHd5D2jQK{?EJOx55gYt1dy6ShD6D-cHyL{Gi#77 zfT4fv1BvU0ZtaKaDua>ij($iA!p9x-v=5$v)AXhRIMvMFKJYBZNL=)f?C%F)qoYR( zkq#uRyMhQ-^=dM|E90Gok5ndx29qLpV)4Fh5L!2KY+=FA?x z8ES2v;)~chDZ7@~Lld_^$5L5u<>LjieyI&*{qfDv;OH?F!{wcQ@-}#)uHvU|LVtWW zx{fEl2sJd5fPM5o?glCQW&--{wd16Ll|}3>C#FW|>&IXK?xdUNVK<$+2YR#Vd3ee$ zoDpc(UEpQdJ0_)RLj0K5`?--~?d?pkET6j(c70~oTgNVZ2EitnI}z97nTUndBisSm z2kP){vfA~r`46&xeisA)vf1DK34FH--p@XHA3O*i7M@dc(WsJKaPwv&K9SHrSyL*z za6g=}Rs5!j(4Gu*=J$7Ev`ee8chRTrhBfrJcf4VG42M~(~1%#B`Z+l_%^{b!d1nus&Z|2<8{@e0;x3- z4BIR94(n74tjUNXv4yZGGwLG#8{7OvuY@Eo=gn+&7n8QW7`m$H#ZcGssKMI{US5@X zK6JUShrSD>0oxkMG<(j4!qedKz8dQbF{$90mtHfPFO_o7yy(}P1ZkW8$_pDUjfFJv z=;*h@W#qdy(@R`~>~14+>FR4B^#v&U0)6KNVnY%sah6o-3J_P8maTq&)uvBoN-Is0 z_?>B+)Y3EG+mpA&9<~HaX;?OsAvJ}26)n0foHOI0#Zo5IBrks&dlkAq%NNL@vSm_O z|C(r|MvPaMt zHpaTc^yJGhx{AFM$aS;jp~*mD_d5Ib%kYhz@M!kf1^B)If1o#f1Xr)b(uDON*$XA( z5-Rtd{nL-&cP`-xZ#G#g9IovC6_EPLsj0z3YVhz#46_Zae^cV8Nqq`$=|V~}6bKum z)ZZXTYh32I35+6KkyP;IlL@E4lw4E826I42@L-aqFYI-ULC{^no>Vrv%n1`%`g~RP zokjsFGU5nnNTt((Amc8Fmogr$wR%~DR!w@B@Gm3x7_o}Bw9UB9!~~XKy$0}d2s6nL zf6V5P^=lk+a+uFSh`!q*+${XTncd|UhHYi}Y2r2B|Bs(u(x`KwzaubLb~keiY|!U; z``w%pufRRv2V>iU)WVS(jmaV`dQY41q;LZ0mQ}*`o7%B;WL(JU)#HHR1{Q{mOFFDC l4~CN|qs^&1NhcrSU2v=jB8oYyciA0mfVV#HUL}0b{(l(HZ*2eo delta 763 zcmW-eX-JcC9LM?oo@a*-kDmmV}GSTrZ+m^+J-M(h@uDhGy@+2Yg<9zoC0^osW#6+cE{0YVGpD zbZVEiW^*RR=fx?83iknDxx3gL%RWubB<;RsR=zy+1PUj-Lz-sTyEdyR_8 z?hRBfEAjX%1FE|zReOAHv8--6KOaZ5y7N`C=DT3YRB!d{K#i6bJp#$vFh#rjyfsOU zzGT@ zEHX-A26gMi3NN~e)6XDByzpTG(cpNFFUJkkaYs4ogtr1SjO;vsSM<#wva9e-;!D05 zuXYkAR-+BixU(8B_4^gc;abk_6DX*w!89D=!V_@C2~?VGY-xo}G_~TI zj^2UuuOn-rIag5}?h=o~z1v+DFpX2MFuQ7r*R}$AM>VUMd$Swd-kW& zNFnq$uoY6{IE6PhV7xfmhGv5tm6WlZeFtMjuD~8}TRZYZVi;kW9wu{l2j26(1|)G) z2%|XIfC(b$0e;KK;!$15BJ*0_+l93})CGrrwlZczMKS;Af>i_~$dE*14>nGu`egBQ z05=IO;_4uZWp&xUJnAE%e#LgsOgj$_!!BIkacNQP-9J`}5MJ}cxwJr}%%j0Xip~&5 v8|~Cnjb3ajAV~ar9c`wFQ7m-QN|~*NbcIj4D1rM6$- inventory.PMMAgent.CustomLabelsEntry - 99, // 1: inventory.VMAgent.status:type_name -> inventory.AgentStatus - 73, // 2: inventory.NodeExporter.custom_labels:type_name -> inventory.NodeExporter.CustomLabelsEntry - 99, // 3: inventory.NodeExporter.status:type_name -> inventory.AgentStatus - 74, // 4: inventory.MySQLdExporter.custom_labels:type_name -> inventory.MySQLdExporter.CustomLabelsEntry - 99, // 5: inventory.MySQLdExporter.status:type_name -> inventory.AgentStatus - 75, // 6: inventory.MongoDBExporter.custom_labels:type_name -> inventory.MongoDBExporter.CustomLabelsEntry - 99, // 7: inventory.MongoDBExporter.status:type_name -> inventory.AgentStatus - 76, // 8: inventory.PostgresExporter.custom_labels:type_name -> inventory.PostgresExporter.CustomLabelsEntry - 99, // 9: inventory.PostgresExporter.status:type_name -> inventory.AgentStatus - 77, // 10: inventory.ProxySQLExporter.custom_labels:type_name -> inventory.ProxySQLExporter.CustomLabelsEntry - 99, // 11: inventory.ProxySQLExporter.status:type_name -> inventory.AgentStatus - 78, // 12: inventory.QANMySQLPerfSchemaAgent.custom_labels:type_name -> inventory.QANMySQLPerfSchemaAgent.CustomLabelsEntry - 99, // 13: inventory.QANMySQLPerfSchemaAgent.status:type_name -> inventory.AgentStatus - 79, // 14: inventory.QANMySQLSlowlogAgent.custom_labels:type_name -> inventory.QANMySQLSlowlogAgent.CustomLabelsEntry - 99, // 15: inventory.QANMySQLSlowlogAgent.status:type_name -> inventory.AgentStatus - 80, // 16: inventory.QANMongoDBProfilerAgent.custom_labels:type_name -> inventory.QANMongoDBProfilerAgent.CustomLabelsEntry - 99, // 17: inventory.QANMongoDBProfilerAgent.status:type_name -> inventory.AgentStatus - 81, // 18: inventory.QANPostgreSQLPgStatementsAgent.custom_labels:type_name -> inventory.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry - 99, // 19: inventory.QANPostgreSQLPgStatementsAgent.status:type_name -> inventory.AgentStatus - 82, // 20: inventory.QANPostgreSQLPgStatMonitorAgent.custom_labels:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry - 99, // 21: inventory.QANPostgreSQLPgStatMonitorAgent.status:type_name -> inventory.AgentStatus - 83, // 22: inventory.RDSExporter.custom_labels:type_name -> inventory.RDSExporter.CustomLabelsEntry - 99, // 23: inventory.RDSExporter.status:type_name -> inventory.AgentStatus - 84, // 24: inventory.ExternalExporter.custom_labels:type_name -> inventory.ExternalExporter.CustomLabelsEntry - 85, // 25: inventory.ChangeCommonAgentParams.custom_labels:type_name -> inventory.ChangeCommonAgentParams.CustomLabelsEntry - 0, // 26: inventory.ListAgentsRequest.agent_type:type_name -> inventory.AgentType - 1, // 27: inventory.ListAgentsResponse.pmm_agent:type_name -> inventory.PMMAgent - 2, // 28: inventory.ListAgentsResponse.vm_agent:type_name -> inventory.VMAgent - 3, // 29: inventory.ListAgentsResponse.node_exporter:type_name -> inventory.NodeExporter - 4, // 30: inventory.ListAgentsResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter - 5, // 31: inventory.ListAgentsResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter - 6, // 32: inventory.ListAgentsResponse.postgres_exporter:type_name -> inventory.PostgresExporter - 7, // 33: inventory.ListAgentsResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter - 8, // 34: inventory.ListAgentsResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent - 9, // 35: inventory.ListAgentsResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent - 10, // 36: inventory.ListAgentsResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent - 11, // 37: inventory.ListAgentsResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent - 12, // 38: inventory.ListAgentsResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent - 13, // 39: inventory.ListAgentsResponse.rds_exporter:type_name -> inventory.RDSExporter - 14, // 40: inventory.ListAgentsResponse.external_exporter:type_name -> inventory.ExternalExporter - 1, // 41: inventory.GetAgentResponse.pmm_agent:type_name -> inventory.PMMAgent - 2, // 42: inventory.GetAgentResponse.vmagent:type_name -> inventory.VMAgent - 3, // 43: inventory.GetAgentResponse.node_exporter:type_name -> inventory.NodeExporter - 4, // 44: inventory.GetAgentResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter - 5, // 45: inventory.GetAgentResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter - 6, // 46: inventory.GetAgentResponse.postgres_exporter:type_name -> inventory.PostgresExporter - 7, // 47: inventory.GetAgentResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter - 8, // 48: inventory.GetAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent - 9, // 49: inventory.GetAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent - 10, // 50: inventory.GetAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent - 11, // 51: inventory.GetAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent - 12, // 52: inventory.GetAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent - 13, // 53: inventory.GetAgentResponse.rds_exporter:type_name -> inventory.RDSExporter - 14, // 54: inventory.GetAgentResponse.external_exporter:type_name -> inventory.ExternalExporter - 86, // 55: inventory.AddPMMAgentRequest.custom_labels:type_name -> inventory.AddPMMAgentRequest.CustomLabelsEntry - 1, // 56: inventory.AddPMMAgentResponse.pmm_agent:type_name -> inventory.PMMAgent - 87, // 57: inventory.AddNodeExporterRequest.custom_labels:type_name -> inventory.AddNodeExporterRequest.CustomLabelsEntry - 3, // 58: inventory.AddNodeExporterResponse.node_exporter:type_name -> inventory.NodeExporter - 15, // 59: inventory.ChangeNodeExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 3, // 60: inventory.ChangeNodeExporterResponse.node_exporter:type_name -> inventory.NodeExporter - 88, // 61: inventory.AddMySQLdExporterRequest.custom_labels:type_name -> inventory.AddMySQLdExporterRequest.CustomLabelsEntry - 4, // 62: inventory.AddMySQLdExporterResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter - 15, // 63: inventory.ChangeMySQLdExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 4, // 64: inventory.ChangeMySQLdExporterResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter - 89, // 65: inventory.AddMongoDBExporterRequest.custom_labels:type_name -> inventory.AddMongoDBExporterRequest.CustomLabelsEntry - 5, // 66: inventory.AddMongoDBExporterResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter - 15, // 67: inventory.ChangeMongoDBExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 5, // 68: inventory.ChangeMongoDBExporterResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter - 90, // 69: inventory.AddPostgresExporterRequest.custom_labels:type_name -> inventory.AddPostgresExporterRequest.CustomLabelsEntry - 6, // 70: inventory.AddPostgresExporterResponse.postgres_exporter:type_name -> inventory.PostgresExporter - 15, // 71: inventory.ChangePostgresExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 6, // 72: inventory.ChangePostgresExporterResponse.postgres_exporter:type_name -> inventory.PostgresExporter - 91, // 73: inventory.AddProxySQLExporterRequest.custom_labels:type_name -> inventory.AddProxySQLExporterRequest.CustomLabelsEntry - 7, // 74: inventory.AddProxySQLExporterResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter - 15, // 75: inventory.ChangeProxySQLExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 7, // 76: inventory.ChangeProxySQLExporterResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter - 92, // 77: inventory.AddQANMySQLPerfSchemaAgentRequest.custom_labels:type_name -> inventory.AddQANMySQLPerfSchemaAgentRequest.CustomLabelsEntry - 8, // 78: inventory.AddQANMySQLPerfSchemaAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent - 15, // 79: inventory.ChangeQANMySQLPerfSchemaAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams - 8, // 80: inventory.ChangeQANMySQLPerfSchemaAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent - 93, // 81: inventory.AddQANMySQLSlowlogAgentRequest.custom_labels:type_name -> inventory.AddQANMySQLSlowlogAgentRequest.CustomLabelsEntry - 9, // 82: inventory.AddQANMySQLSlowlogAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent - 15, // 83: inventory.ChangeQANMySQLSlowlogAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams - 9, // 84: inventory.ChangeQANMySQLSlowlogAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent - 94, // 85: inventory.AddQANMongoDBProfilerAgentRequest.custom_labels:type_name -> inventory.AddQANMongoDBProfilerAgentRequest.CustomLabelsEntry - 10, // 86: inventory.AddQANMongoDBProfilerAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent - 15, // 87: inventory.ChangeQANMongoDBProfilerAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams - 10, // 88: inventory.ChangeQANMongoDBProfilerAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent - 95, // 89: inventory.AddQANPostgreSQLPgStatementsAgentRequest.custom_labels:type_name -> inventory.AddQANPostgreSQLPgStatementsAgentRequest.CustomLabelsEntry - 11, // 90: inventory.AddQANPostgreSQLPgStatementsAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent - 15, // 91: inventory.ChangeQANPostgreSQLPgStatementsAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams - 11, // 92: inventory.ChangeQANPostgreSQLPgStatementsAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent - 96, // 93: inventory.AddQANPostgreSQLPgStatMonitorAgentRequest.custom_labels:type_name -> inventory.AddQANPostgreSQLPgStatMonitorAgentRequest.CustomLabelsEntry - 12, // 94: inventory.AddQANPostgreSQLPgStatMonitorAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent - 15, // 95: inventory.ChangeQANPostgreSQLPgStatMonitorAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams - 12, // 96: inventory.ChangeQANPostgreSQLPgStatMonitorAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent - 97, // 97: inventory.AddRDSExporterRequest.custom_labels:type_name -> inventory.AddRDSExporterRequest.CustomLabelsEntry - 13, // 98: inventory.AddRDSExporterResponse.rds_exporter:type_name -> inventory.RDSExporter - 15, // 99: inventory.ChangeRDSExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 13, // 100: inventory.ChangeRDSExporterResponse.rds_exporter:type_name -> inventory.RDSExporter - 98, // 101: inventory.AddExternalExporterRequest.custom_labels:type_name -> inventory.AddExternalExporterRequest.CustomLabelsEntry - 14, // 102: inventory.AddExternalExporterResponse.external_exporter:type_name -> inventory.ExternalExporter - 15, // 103: inventory.ChangeExternalExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams - 14, // 104: inventory.ChangeExternalExporterResponse.external_exporter:type_name -> inventory.ExternalExporter - 16, // 105: inventory.Agents.ListAgents:input_type -> inventory.ListAgentsRequest - 18, // 106: inventory.Agents.GetAgent:input_type -> inventory.GetAgentRequest - 20, // 107: inventory.Agents.AddPMMAgent:input_type -> inventory.AddPMMAgentRequest - 22, // 108: inventory.Agents.AddNodeExporter:input_type -> inventory.AddNodeExporterRequest - 24, // 109: inventory.Agents.ChangeNodeExporter:input_type -> inventory.ChangeNodeExporterRequest - 26, // 110: inventory.Agents.AddMySQLdExporter:input_type -> inventory.AddMySQLdExporterRequest - 28, // 111: inventory.Agents.ChangeMySQLdExporter:input_type -> inventory.ChangeMySQLdExporterRequest - 30, // 112: inventory.Agents.AddMongoDBExporter:input_type -> inventory.AddMongoDBExporterRequest - 32, // 113: inventory.Agents.ChangeMongoDBExporter:input_type -> inventory.ChangeMongoDBExporterRequest - 34, // 114: inventory.Agents.AddPostgresExporter:input_type -> inventory.AddPostgresExporterRequest - 36, // 115: inventory.Agents.ChangePostgresExporter:input_type -> inventory.ChangePostgresExporterRequest - 38, // 116: inventory.Agents.AddProxySQLExporter:input_type -> inventory.AddProxySQLExporterRequest - 40, // 117: inventory.Agents.ChangeProxySQLExporter:input_type -> inventory.ChangeProxySQLExporterRequest - 42, // 118: inventory.Agents.AddQANMySQLPerfSchemaAgent:input_type -> inventory.AddQANMySQLPerfSchemaAgentRequest - 44, // 119: inventory.Agents.ChangeQANMySQLPerfSchemaAgent:input_type -> inventory.ChangeQANMySQLPerfSchemaAgentRequest - 46, // 120: inventory.Agents.AddQANMySQLSlowlogAgent:input_type -> inventory.AddQANMySQLSlowlogAgentRequest - 48, // 121: inventory.Agents.ChangeQANMySQLSlowlogAgent:input_type -> inventory.ChangeQANMySQLSlowlogAgentRequest - 50, // 122: inventory.Agents.AddQANMongoDBProfilerAgent:input_type -> inventory.AddQANMongoDBProfilerAgentRequest - 52, // 123: inventory.Agents.ChangeQANMongoDBProfilerAgent:input_type -> inventory.ChangeQANMongoDBProfilerAgentRequest - 54, // 124: inventory.Agents.AddQANPostgreSQLPgStatementsAgent:input_type -> inventory.AddQANPostgreSQLPgStatementsAgentRequest - 56, // 125: inventory.Agents.ChangeQANPostgreSQLPgStatementsAgent:input_type -> inventory.ChangeQANPostgreSQLPgStatementsAgentRequest - 58, // 126: inventory.Agents.AddQANPostgreSQLPgStatMonitorAgent:input_type -> inventory.AddQANPostgreSQLPgStatMonitorAgentRequest - 60, // 127: inventory.Agents.ChangeQANPostgreSQLPgStatMonitorAgent:input_type -> inventory.ChangeQANPostgreSQLPgStatMonitorAgentRequest - 62, // 128: inventory.Agents.AddRDSExporter:input_type -> inventory.AddRDSExporterRequest - 64, // 129: inventory.Agents.ChangeRDSExporter:input_type -> inventory.ChangeRDSExporterRequest - 66, // 130: inventory.Agents.AddExternalExporter:input_type -> inventory.AddExternalExporterRequest - 68, // 131: inventory.Agents.ChangeExternalExporter:input_type -> inventory.ChangeExternalExporterRequest - 70, // 132: inventory.Agents.RemoveAgent:input_type -> inventory.RemoveAgentRequest - 17, // 133: inventory.Agents.ListAgents:output_type -> inventory.ListAgentsResponse - 19, // 134: inventory.Agents.GetAgent:output_type -> inventory.GetAgentResponse - 21, // 135: inventory.Agents.AddPMMAgent:output_type -> inventory.AddPMMAgentResponse - 23, // 136: inventory.Agents.AddNodeExporter:output_type -> inventory.AddNodeExporterResponse - 25, // 137: inventory.Agents.ChangeNodeExporter:output_type -> inventory.ChangeNodeExporterResponse - 27, // 138: inventory.Agents.AddMySQLdExporter:output_type -> inventory.AddMySQLdExporterResponse - 29, // 139: inventory.Agents.ChangeMySQLdExporter:output_type -> inventory.ChangeMySQLdExporterResponse - 31, // 140: inventory.Agents.AddMongoDBExporter:output_type -> inventory.AddMongoDBExporterResponse - 33, // 141: inventory.Agents.ChangeMongoDBExporter:output_type -> inventory.ChangeMongoDBExporterResponse - 35, // 142: inventory.Agents.AddPostgresExporter:output_type -> inventory.AddPostgresExporterResponse - 37, // 143: inventory.Agents.ChangePostgresExporter:output_type -> inventory.ChangePostgresExporterResponse - 39, // 144: inventory.Agents.AddProxySQLExporter:output_type -> inventory.AddProxySQLExporterResponse - 41, // 145: inventory.Agents.ChangeProxySQLExporter:output_type -> inventory.ChangeProxySQLExporterResponse - 43, // 146: inventory.Agents.AddQANMySQLPerfSchemaAgent:output_type -> inventory.AddQANMySQLPerfSchemaAgentResponse - 45, // 147: inventory.Agents.ChangeQANMySQLPerfSchemaAgent:output_type -> inventory.ChangeQANMySQLPerfSchemaAgentResponse - 47, // 148: inventory.Agents.AddQANMySQLSlowlogAgent:output_type -> inventory.AddQANMySQLSlowlogAgentResponse - 49, // 149: inventory.Agents.ChangeQANMySQLSlowlogAgent:output_type -> inventory.ChangeQANMySQLSlowlogAgentResponse - 51, // 150: inventory.Agents.AddQANMongoDBProfilerAgent:output_type -> inventory.AddQANMongoDBProfilerAgentResponse - 53, // 151: inventory.Agents.ChangeQANMongoDBProfilerAgent:output_type -> inventory.ChangeQANMongoDBProfilerAgentResponse - 55, // 152: inventory.Agents.AddQANPostgreSQLPgStatementsAgent:output_type -> inventory.AddQANPostgreSQLPgStatementsAgentResponse - 57, // 153: inventory.Agents.ChangeQANPostgreSQLPgStatementsAgent:output_type -> inventory.ChangeQANPostgreSQLPgStatementsAgentResponse - 59, // 154: inventory.Agents.AddQANPostgreSQLPgStatMonitorAgent:output_type -> inventory.AddQANPostgreSQLPgStatMonitorAgentResponse - 61, // 155: inventory.Agents.ChangeQANPostgreSQLPgStatMonitorAgent:output_type -> inventory.ChangeQANPostgreSQLPgStatMonitorAgentResponse - 63, // 156: inventory.Agents.AddRDSExporter:output_type -> inventory.AddRDSExporterResponse - 65, // 157: inventory.Agents.ChangeRDSExporter:output_type -> inventory.ChangeRDSExporterResponse - 67, // 158: inventory.Agents.AddExternalExporter:output_type -> inventory.AddExternalExporterResponse - 69, // 159: inventory.Agents.ChangeExternalExporter:output_type -> inventory.ChangeExternalExporterResponse - 71, // 160: inventory.Agents.RemoveAgent:output_type -> inventory.RemoveAgentResponse - 133, // [133:161] is the sub-list for method output_type - 105, // [105:133] is the sub-list for method input_type - 105, // [105:105] is the sub-list for extension type_name - 105, // [105:105] is the sub-list for extension extendee - 0, // [0:105] is the sub-list for field type_name + 77, // 0: inventory.PMMAgent.custom_labels:type_name -> inventory.PMMAgent.CustomLabelsEntry + 106, // 1: inventory.VMAgent.status:type_name -> inventory.AgentStatus + 78, // 2: inventory.NodeExporter.custom_labels:type_name -> inventory.NodeExporter.CustomLabelsEntry + 106, // 3: inventory.NodeExporter.status:type_name -> inventory.AgentStatus + 79, // 4: inventory.MySQLdExporter.custom_labels:type_name -> inventory.MySQLdExporter.CustomLabelsEntry + 106, // 5: inventory.MySQLdExporter.status:type_name -> inventory.AgentStatus + 80, // 6: inventory.MongoDBExporter.custom_labels:type_name -> inventory.MongoDBExporter.CustomLabelsEntry + 106, // 7: inventory.MongoDBExporter.status:type_name -> inventory.AgentStatus + 81, // 8: inventory.PostgresExporter.custom_labels:type_name -> inventory.PostgresExporter.CustomLabelsEntry + 106, // 9: inventory.PostgresExporter.status:type_name -> inventory.AgentStatus + 82, // 10: inventory.ProxySQLExporter.custom_labels:type_name -> inventory.ProxySQLExporter.CustomLabelsEntry + 106, // 11: inventory.ProxySQLExporter.status:type_name -> inventory.AgentStatus + 83, // 12: inventory.QANMySQLPerfSchemaAgent.custom_labels:type_name -> inventory.QANMySQLPerfSchemaAgent.CustomLabelsEntry + 106, // 13: inventory.QANMySQLPerfSchemaAgent.status:type_name -> inventory.AgentStatus + 84, // 14: inventory.QANMySQLSlowlogAgent.custom_labels:type_name -> inventory.QANMySQLSlowlogAgent.CustomLabelsEntry + 106, // 15: inventory.QANMySQLSlowlogAgent.status:type_name -> inventory.AgentStatus + 85, // 16: inventory.QANMongoDBProfilerAgent.custom_labels:type_name -> inventory.QANMongoDBProfilerAgent.CustomLabelsEntry + 106, // 17: inventory.QANMongoDBProfilerAgent.status:type_name -> inventory.AgentStatus + 86, // 18: inventory.QANPostgreSQLPgStatementsAgent.custom_labels:type_name -> inventory.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry + 106, // 19: inventory.QANPostgreSQLPgStatementsAgent.status:type_name -> inventory.AgentStatus + 87, // 20: inventory.QANPostgreSQLPgStatMonitorAgent.custom_labels:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry + 106, // 21: inventory.QANPostgreSQLPgStatMonitorAgent.status:type_name -> inventory.AgentStatus + 88, // 22: inventory.RDSExporter.custom_labels:type_name -> inventory.RDSExporter.CustomLabelsEntry + 106, // 23: inventory.RDSExporter.status:type_name -> inventory.AgentStatus + 89, // 24: inventory.ExternalExporter.custom_labels:type_name -> inventory.ExternalExporter.CustomLabelsEntry + 90, // 25: inventory.AzureDatabaseExporter.custom_labels:type_name -> inventory.AzureDatabaseExporter.CustomLabelsEntry + 106, // 26: inventory.AzureDatabaseExporter.status:type_name -> inventory.AgentStatus + 91, // 27: inventory.ChangeCommonAgentParams.custom_labels:type_name -> inventory.ChangeCommonAgentParams.CustomLabelsEntry + 0, // 28: inventory.ListAgentsRequest.agent_type:type_name -> inventory.AgentType + 1, // 29: inventory.ListAgentsResponse.pmm_agent:type_name -> inventory.PMMAgent + 2, // 30: inventory.ListAgentsResponse.vm_agent:type_name -> inventory.VMAgent + 3, // 31: inventory.ListAgentsResponse.node_exporter:type_name -> inventory.NodeExporter + 4, // 32: inventory.ListAgentsResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter + 5, // 33: inventory.ListAgentsResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter + 6, // 34: inventory.ListAgentsResponse.postgres_exporter:type_name -> inventory.PostgresExporter + 7, // 35: inventory.ListAgentsResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter + 8, // 36: inventory.ListAgentsResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent + 9, // 37: inventory.ListAgentsResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent + 10, // 38: inventory.ListAgentsResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent + 11, // 39: inventory.ListAgentsResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent + 12, // 40: inventory.ListAgentsResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent + 13, // 41: inventory.ListAgentsResponse.rds_exporter:type_name -> inventory.RDSExporter + 14, // 42: inventory.ListAgentsResponse.external_exporter:type_name -> inventory.ExternalExporter + 15, // 43: inventory.ListAgentsResponse.azure_database_exporter:type_name -> inventory.AzureDatabaseExporter + 1, // 44: inventory.GetAgentResponse.pmm_agent:type_name -> inventory.PMMAgent + 2, // 45: inventory.GetAgentResponse.vmagent:type_name -> inventory.VMAgent + 3, // 46: inventory.GetAgentResponse.node_exporter:type_name -> inventory.NodeExporter + 4, // 47: inventory.GetAgentResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter + 5, // 48: inventory.GetAgentResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter + 6, // 49: inventory.GetAgentResponse.postgres_exporter:type_name -> inventory.PostgresExporter + 7, // 50: inventory.GetAgentResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter + 8, // 51: inventory.GetAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent + 9, // 52: inventory.GetAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent + 10, // 53: inventory.GetAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent + 11, // 54: inventory.GetAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent + 12, // 55: inventory.GetAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent + 13, // 56: inventory.GetAgentResponse.rds_exporter:type_name -> inventory.RDSExporter + 14, // 57: inventory.GetAgentResponse.external_exporter:type_name -> inventory.ExternalExporter + 15, // 58: inventory.GetAgentResponse.azure_database_exporter:type_name -> inventory.AzureDatabaseExporter + 92, // 59: inventory.AddPMMAgentRequest.custom_labels:type_name -> inventory.AddPMMAgentRequest.CustomLabelsEntry + 1, // 60: inventory.AddPMMAgentResponse.pmm_agent:type_name -> inventory.PMMAgent + 93, // 61: inventory.AddNodeExporterRequest.custom_labels:type_name -> inventory.AddNodeExporterRequest.CustomLabelsEntry + 3, // 62: inventory.AddNodeExporterResponse.node_exporter:type_name -> inventory.NodeExporter + 16, // 63: inventory.ChangeNodeExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 3, // 64: inventory.ChangeNodeExporterResponse.node_exporter:type_name -> inventory.NodeExporter + 94, // 65: inventory.AddMySQLdExporterRequest.custom_labels:type_name -> inventory.AddMySQLdExporterRequest.CustomLabelsEntry + 4, // 66: inventory.AddMySQLdExporterResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter + 16, // 67: inventory.ChangeMySQLdExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 4, // 68: inventory.ChangeMySQLdExporterResponse.mysqld_exporter:type_name -> inventory.MySQLdExporter + 95, // 69: inventory.AddMongoDBExporterRequest.custom_labels:type_name -> inventory.AddMongoDBExporterRequest.CustomLabelsEntry + 5, // 70: inventory.AddMongoDBExporterResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter + 16, // 71: inventory.ChangeMongoDBExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 5, // 72: inventory.ChangeMongoDBExporterResponse.mongodb_exporter:type_name -> inventory.MongoDBExporter + 96, // 73: inventory.AddPostgresExporterRequest.custom_labels:type_name -> inventory.AddPostgresExporterRequest.CustomLabelsEntry + 6, // 74: inventory.AddPostgresExporterResponse.postgres_exporter:type_name -> inventory.PostgresExporter + 16, // 75: inventory.ChangePostgresExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 6, // 76: inventory.ChangePostgresExporterResponse.postgres_exporter:type_name -> inventory.PostgresExporter + 97, // 77: inventory.AddProxySQLExporterRequest.custom_labels:type_name -> inventory.AddProxySQLExporterRequest.CustomLabelsEntry + 7, // 78: inventory.AddProxySQLExporterResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter + 16, // 79: inventory.ChangeProxySQLExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 7, // 80: inventory.ChangeProxySQLExporterResponse.proxysql_exporter:type_name -> inventory.ProxySQLExporter + 98, // 81: inventory.AddQANMySQLPerfSchemaAgentRequest.custom_labels:type_name -> inventory.AddQANMySQLPerfSchemaAgentRequest.CustomLabelsEntry + 8, // 82: inventory.AddQANMySQLPerfSchemaAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent + 16, // 83: inventory.ChangeQANMySQLPerfSchemaAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams + 8, // 84: inventory.ChangeQANMySQLPerfSchemaAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.QANMySQLPerfSchemaAgent + 99, // 85: inventory.AddQANMySQLSlowlogAgentRequest.custom_labels:type_name -> inventory.AddQANMySQLSlowlogAgentRequest.CustomLabelsEntry + 9, // 86: inventory.AddQANMySQLSlowlogAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent + 16, // 87: inventory.ChangeQANMySQLSlowlogAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams + 9, // 88: inventory.ChangeQANMySQLSlowlogAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.QANMySQLSlowlogAgent + 100, // 89: inventory.AddQANMongoDBProfilerAgentRequest.custom_labels:type_name -> inventory.AddQANMongoDBProfilerAgentRequest.CustomLabelsEntry + 10, // 90: inventory.AddQANMongoDBProfilerAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent + 16, // 91: inventory.ChangeQANMongoDBProfilerAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams + 10, // 92: inventory.ChangeQANMongoDBProfilerAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.QANMongoDBProfilerAgent + 101, // 93: inventory.AddQANPostgreSQLPgStatementsAgentRequest.custom_labels:type_name -> inventory.AddQANPostgreSQLPgStatementsAgentRequest.CustomLabelsEntry + 11, // 94: inventory.AddQANPostgreSQLPgStatementsAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent + 16, // 95: inventory.ChangeQANPostgreSQLPgStatementsAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams + 11, // 96: inventory.ChangeQANPostgreSQLPgStatementsAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.QANPostgreSQLPgStatementsAgent + 102, // 97: inventory.AddQANPostgreSQLPgStatMonitorAgentRequest.custom_labels:type_name -> inventory.AddQANPostgreSQLPgStatMonitorAgentRequest.CustomLabelsEntry + 12, // 98: inventory.AddQANPostgreSQLPgStatMonitorAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent + 16, // 99: inventory.ChangeQANPostgreSQLPgStatMonitorAgentRequest.common:type_name -> inventory.ChangeCommonAgentParams + 12, // 100: inventory.ChangeQANPostgreSQLPgStatMonitorAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.QANPostgreSQLPgStatMonitorAgent + 103, // 101: inventory.AddRDSExporterRequest.custom_labels:type_name -> inventory.AddRDSExporterRequest.CustomLabelsEntry + 13, // 102: inventory.AddRDSExporterResponse.rds_exporter:type_name -> inventory.RDSExporter + 16, // 103: inventory.ChangeRDSExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 13, // 104: inventory.ChangeRDSExporterResponse.rds_exporter:type_name -> inventory.RDSExporter + 104, // 105: inventory.AddExternalExporterRequest.custom_labels:type_name -> inventory.AddExternalExporterRequest.CustomLabelsEntry + 14, // 106: inventory.AddExternalExporterResponse.external_exporter:type_name -> inventory.ExternalExporter + 16, // 107: inventory.ChangeExternalExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 14, // 108: inventory.ChangeExternalExporterResponse.external_exporter:type_name -> inventory.ExternalExporter + 105, // 109: inventory.AddAzureDatabaseExporterRequest.custom_labels:type_name -> inventory.AddAzureDatabaseExporterRequest.CustomLabelsEntry + 15, // 110: inventory.AddAzureDatabaseExporterResponse.azure_database_exporter:type_name -> inventory.AzureDatabaseExporter + 16, // 111: inventory.ChangeAzureDatabaseExporterRequest.common:type_name -> inventory.ChangeCommonAgentParams + 15, // 112: inventory.ChangeAzureDatabaseExporterResponse.azure_database_exporter:type_name -> inventory.AzureDatabaseExporter + 17, // 113: inventory.Agents.ListAgents:input_type -> inventory.ListAgentsRequest + 19, // 114: inventory.Agents.GetAgent:input_type -> inventory.GetAgentRequest + 21, // 115: inventory.Agents.AddPMMAgent:input_type -> inventory.AddPMMAgentRequest + 23, // 116: inventory.Agents.AddNodeExporter:input_type -> inventory.AddNodeExporterRequest + 25, // 117: inventory.Agents.ChangeNodeExporter:input_type -> inventory.ChangeNodeExporterRequest + 27, // 118: inventory.Agents.AddMySQLdExporter:input_type -> inventory.AddMySQLdExporterRequest + 29, // 119: inventory.Agents.ChangeMySQLdExporter:input_type -> inventory.ChangeMySQLdExporterRequest + 31, // 120: inventory.Agents.AddMongoDBExporter:input_type -> inventory.AddMongoDBExporterRequest + 33, // 121: inventory.Agents.ChangeMongoDBExporter:input_type -> inventory.ChangeMongoDBExporterRequest + 35, // 122: inventory.Agents.AddPostgresExporter:input_type -> inventory.AddPostgresExporterRequest + 37, // 123: inventory.Agents.ChangePostgresExporter:input_type -> inventory.ChangePostgresExporterRequest + 39, // 124: inventory.Agents.AddProxySQLExporter:input_type -> inventory.AddProxySQLExporterRequest + 41, // 125: inventory.Agents.ChangeProxySQLExporter:input_type -> inventory.ChangeProxySQLExporterRequest + 43, // 126: inventory.Agents.AddQANMySQLPerfSchemaAgent:input_type -> inventory.AddQANMySQLPerfSchemaAgentRequest + 45, // 127: inventory.Agents.ChangeQANMySQLPerfSchemaAgent:input_type -> inventory.ChangeQANMySQLPerfSchemaAgentRequest + 47, // 128: inventory.Agents.AddQANMySQLSlowlogAgent:input_type -> inventory.AddQANMySQLSlowlogAgentRequest + 49, // 129: inventory.Agents.ChangeQANMySQLSlowlogAgent:input_type -> inventory.ChangeQANMySQLSlowlogAgentRequest + 51, // 130: inventory.Agents.AddQANMongoDBProfilerAgent:input_type -> inventory.AddQANMongoDBProfilerAgentRequest + 53, // 131: inventory.Agents.ChangeQANMongoDBProfilerAgent:input_type -> inventory.ChangeQANMongoDBProfilerAgentRequest + 55, // 132: inventory.Agents.AddQANPostgreSQLPgStatementsAgent:input_type -> inventory.AddQANPostgreSQLPgStatementsAgentRequest + 57, // 133: inventory.Agents.ChangeQANPostgreSQLPgStatementsAgent:input_type -> inventory.ChangeQANPostgreSQLPgStatementsAgentRequest + 59, // 134: inventory.Agents.AddQANPostgreSQLPgStatMonitorAgent:input_type -> inventory.AddQANPostgreSQLPgStatMonitorAgentRequest + 61, // 135: inventory.Agents.ChangeQANPostgreSQLPgStatMonitorAgent:input_type -> inventory.ChangeQANPostgreSQLPgStatMonitorAgentRequest + 63, // 136: inventory.Agents.AddRDSExporter:input_type -> inventory.AddRDSExporterRequest + 65, // 137: inventory.Agents.ChangeRDSExporter:input_type -> inventory.ChangeRDSExporterRequest + 67, // 138: inventory.Agents.AddExternalExporter:input_type -> inventory.AddExternalExporterRequest + 69, // 139: inventory.Agents.ChangeExternalExporter:input_type -> inventory.ChangeExternalExporterRequest + 71, // 140: inventory.Agents.AddAzureDatabaseExporter:input_type -> inventory.AddAzureDatabaseExporterRequest + 73, // 141: inventory.Agents.ChangeAzureDatabaseExporter:input_type -> inventory.ChangeAzureDatabaseExporterRequest + 75, // 142: inventory.Agents.RemoveAgent:input_type -> inventory.RemoveAgentRequest + 18, // 143: inventory.Agents.ListAgents:output_type -> inventory.ListAgentsResponse + 20, // 144: inventory.Agents.GetAgent:output_type -> inventory.GetAgentResponse + 22, // 145: inventory.Agents.AddPMMAgent:output_type -> inventory.AddPMMAgentResponse + 24, // 146: inventory.Agents.AddNodeExporter:output_type -> inventory.AddNodeExporterResponse + 26, // 147: inventory.Agents.ChangeNodeExporter:output_type -> inventory.ChangeNodeExporterResponse + 28, // 148: inventory.Agents.AddMySQLdExporter:output_type -> inventory.AddMySQLdExporterResponse + 30, // 149: inventory.Agents.ChangeMySQLdExporter:output_type -> inventory.ChangeMySQLdExporterResponse + 32, // 150: inventory.Agents.AddMongoDBExporter:output_type -> inventory.AddMongoDBExporterResponse + 34, // 151: inventory.Agents.ChangeMongoDBExporter:output_type -> inventory.ChangeMongoDBExporterResponse + 36, // 152: inventory.Agents.AddPostgresExporter:output_type -> inventory.AddPostgresExporterResponse + 38, // 153: inventory.Agents.ChangePostgresExporter:output_type -> inventory.ChangePostgresExporterResponse + 40, // 154: inventory.Agents.AddProxySQLExporter:output_type -> inventory.AddProxySQLExporterResponse + 42, // 155: inventory.Agents.ChangeProxySQLExporter:output_type -> inventory.ChangeProxySQLExporterResponse + 44, // 156: inventory.Agents.AddQANMySQLPerfSchemaAgent:output_type -> inventory.AddQANMySQLPerfSchemaAgentResponse + 46, // 157: inventory.Agents.ChangeQANMySQLPerfSchemaAgent:output_type -> inventory.ChangeQANMySQLPerfSchemaAgentResponse + 48, // 158: inventory.Agents.AddQANMySQLSlowlogAgent:output_type -> inventory.AddQANMySQLSlowlogAgentResponse + 50, // 159: inventory.Agents.ChangeQANMySQLSlowlogAgent:output_type -> inventory.ChangeQANMySQLSlowlogAgentResponse + 52, // 160: inventory.Agents.AddQANMongoDBProfilerAgent:output_type -> inventory.AddQANMongoDBProfilerAgentResponse + 54, // 161: inventory.Agents.ChangeQANMongoDBProfilerAgent:output_type -> inventory.ChangeQANMongoDBProfilerAgentResponse + 56, // 162: inventory.Agents.AddQANPostgreSQLPgStatementsAgent:output_type -> inventory.AddQANPostgreSQLPgStatementsAgentResponse + 58, // 163: inventory.Agents.ChangeQANPostgreSQLPgStatementsAgent:output_type -> inventory.ChangeQANPostgreSQLPgStatementsAgentResponse + 60, // 164: inventory.Agents.AddQANPostgreSQLPgStatMonitorAgent:output_type -> inventory.AddQANPostgreSQLPgStatMonitorAgentResponse + 62, // 165: inventory.Agents.ChangeQANPostgreSQLPgStatMonitorAgent:output_type -> inventory.ChangeQANPostgreSQLPgStatMonitorAgentResponse + 64, // 166: inventory.Agents.AddRDSExporter:output_type -> inventory.AddRDSExporterResponse + 66, // 167: inventory.Agents.ChangeRDSExporter:output_type -> inventory.ChangeRDSExporterResponse + 68, // 168: inventory.Agents.AddExternalExporter:output_type -> inventory.AddExternalExporterResponse + 70, // 169: inventory.Agents.ChangeExternalExporter:output_type -> inventory.ChangeExternalExporterResponse + 72, // 170: inventory.Agents.AddAzureDatabaseExporter:output_type -> inventory.AddAzureDatabaseExporterResponse + 74, // 171: inventory.Agents.ChangeAzureDatabaseExporter:output_type -> inventory.ChangeAzureDatabaseExporterResponse + 76, // 172: inventory.Agents.RemoveAgent:output_type -> inventory.RemoveAgentResponse + 143, // [143:173] is the sub-list for method output_type + 113, // [113:143] is the sub-list for method input_type + 113, // [113:113] is the sub-list for extension type_name + 113, // [113:113] is the sub-list for extension extendee + 0, // [0:113] is the sub-list for field type_name } func init() { file_inventorypb_agents_proto_init() } @@ -8082,7 +8679,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeCommonAgentParams); i { + switch v := v.(*AzureDatabaseExporter); i { case 0: return &v.state case 1: @@ -8094,7 +8691,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentsRequest); i { + switch v := v.(*ChangeCommonAgentParams); i { case 0: return &v.state case 1: @@ -8106,7 +8703,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListAgentsResponse); i { + switch v := v.(*ListAgentsRequest); i { case 0: return &v.state case 1: @@ -8118,7 +8715,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAgentRequest); i { + switch v := v.(*ListAgentsResponse); i { case 0: return &v.state case 1: @@ -8130,7 +8727,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAgentResponse); i { + switch v := v.(*GetAgentRequest); i { case 0: return &v.state case 1: @@ -8142,7 +8739,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPMMAgentRequest); i { + switch v := v.(*GetAgentResponse); i { case 0: return &v.state case 1: @@ -8154,7 +8751,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPMMAgentResponse); i { + switch v := v.(*AddPMMAgentRequest); i { case 0: return &v.state case 1: @@ -8166,7 +8763,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddNodeExporterRequest); i { + switch v := v.(*AddPMMAgentResponse); i { case 0: return &v.state case 1: @@ -8178,7 +8775,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddNodeExporterResponse); i { + switch v := v.(*AddNodeExporterRequest); i { case 0: return &v.state case 1: @@ -8190,7 +8787,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeNodeExporterRequest); i { + switch v := v.(*AddNodeExporterResponse); i { case 0: return &v.state case 1: @@ -8202,7 +8799,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeNodeExporterResponse); i { + switch v := v.(*ChangeNodeExporterRequest); i { case 0: return &v.state case 1: @@ -8214,7 +8811,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddMySQLdExporterRequest); i { + switch v := v.(*ChangeNodeExporterResponse); i { case 0: return &v.state case 1: @@ -8226,7 +8823,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddMySQLdExporterResponse); i { + switch v := v.(*AddMySQLdExporterRequest); i { case 0: return &v.state case 1: @@ -8238,7 +8835,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeMySQLdExporterRequest); i { + switch v := v.(*AddMySQLdExporterResponse); i { case 0: return &v.state case 1: @@ -8250,7 +8847,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeMySQLdExporterResponse); i { + switch v := v.(*ChangeMySQLdExporterRequest); i { case 0: return &v.state case 1: @@ -8262,7 +8859,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddMongoDBExporterRequest); i { + switch v := v.(*ChangeMySQLdExporterResponse); i { case 0: return &v.state case 1: @@ -8274,7 +8871,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddMongoDBExporterResponse); i { + switch v := v.(*AddMongoDBExporterRequest); i { case 0: return &v.state case 1: @@ -8286,7 +8883,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeMongoDBExporterRequest); i { + switch v := v.(*AddMongoDBExporterResponse); i { case 0: return &v.state case 1: @@ -8298,7 +8895,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeMongoDBExporterResponse); i { + switch v := v.(*ChangeMongoDBExporterRequest); i { case 0: return &v.state case 1: @@ -8310,7 +8907,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPostgresExporterRequest); i { + switch v := v.(*ChangeMongoDBExporterResponse); i { case 0: return &v.state case 1: @@ -8322,7 +8919,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPostgresExporterResponse); i { + switch v := v.(*AddPostgresExporterRequest); i { case 0: return &v.state case 1: @@ -8334,7 +8931,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePostgresExporterRequest); i { + switch v := v.(*AddPostgresExporterResponse); i { case 0: return &v.state case 1: @@ -8346,7 +8943,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangePostgresExporterResponse); i { + switch v := v.(*ChangePostgresExporterRequest); i { case 0: return &v.state case 1: @@ -8358,7 +8955,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProxySQLExporterRequest); i { + switch v := v.(*ChangePostgresExporterResponse); i { case 0: return &v.state case 1: @@ -8370,7 +8967,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddProxySQLExporterResponse); i { + switch v := v.(*AddProxySQLExporterRequest); i { case 0: return &v.state case 1: @@ -8382,7 +8979,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeProxySQLExporterRequest); i { + switch v := v.(*AddProxySQLExporterResponse); i { case 0: return &v.state case 1: @@ -8394,7 +8991,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeProxySQLExporterResponse); i { + switch v := v.(*ChangeProxySQLExporterRequest); i { case 0: return &v.state case 1: @@ -8406,7 +9003,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMySQLPerfSchemaAgentRequest); i { + switch v := v.(*ChangeProxySQLExporterResponse); i { case 0: return &v.state case 1: @@ -8418,7 +9015,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMySQLPerfSchemaAgentResponse); i { + switch v := v.(*AddQANMySQLPerfSchemaAgentRequest); i { case 0: return &v.state case 1: @@ -8430,7 +9027,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMySQLPerfSchemaAgentRequest); i { + switch v := v.(*AddQANMySQLPerfSchemaAgentResponse); i { case 0: return &v.state case 1: @@ -8442,7 +9039,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMySQLPerfSchemaAgentResponse); i { + switch v := v.(*ChangeQANMySQLPerfSchemaAgentRequest); i { case 0: return &v.state case 1: @@ -8454,7 +9051,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMySQLSlowlogAgentRequest); i { + switch v := v.(*ChangeQANMySQLPerfSchemaAgentResponse); i { case 0: return &v.state case 1: @@ -8466,7 +9063,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMySQLSlowlogAgentResponse); i { + switch v := v.(*AddQANMySQLSlowlogAgentRequest); i { case 0: return &v.state case 1: @@ -8478,7 +9075,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMySQLSlowlogAgentRequest); i { + switch v := v.(*AddQANMySQLSlowlogAgentResponse); i { case 0: return &v.state case 1: @@ -8490,7 +9087,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMySQLSlowlogAgentResponse); i { + switch v := v.(*ChangeQANMySQLSlowlogAgentRequest); i { case 0: return &v.state case 1: @@ -8502,7 +9099,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMongoDBProfilerAgentRequest); i { + switch v := v.(*ChangeQANMySQLSlowlogAgentResponse); i { case 0: return &v.state case 1: @@ -8514,7 +9111,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANMongoDBProfilerAgentResponse); i { + switch v := v.(*AddQANMongoDBProfilerAgentRequest); i { case 0: return &v.state case 1: @@ -8526,7 +9123,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMongoDBProfilerAgentRequest); i { + switch v := v.(*AddQANMongoDBProfilerAgentResponse); i { case 0: return &v.state case 1: @@ -8538,7 +9135,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANMongoDBProfilerAgentResponse); i { + switch v := v.(*ChangeQANMongoDBProfilerAgentRequest); i { case 0: return &v.state case 1: @@ -8550,7 +9147,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANPostgreSQLPgStatementsAgentRequest); i { + switch v := v.(*ChangeQANMongoDBProfilerAgentResponse); i { case 0: return &v.state case 1: @@ -8562,7 +9159,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANPostgreSQLPgStatementsAgentResponse); i { + switch v := v.(*AddQANPostgreSQLPgStatementsAgentRequest); i { case 0: return &v.state case 1: @@ -8574,7 +9171,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANPostgreSQLPgStatementsAgentRequest); i { + switch v := v.(*AddQANPostgreSQLPgStatementsAgentResponse); i { case 0: return &v.state case 1: @@ -8586,7 +9183,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANPostgreSQLPgStatementsAgentResponse); i { + switch v := v.(*ChangeQANPostgreSQLPgStatementsAgentRequest); i { case 0: return &v.state case 1: @@ -8598,7 +9195,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANPostgreSQLPgStatMonitorAgentRequest); i { + switch v := v.(*ChangeQANPostgreSQLPgStatementsAgentResponse); i { case 0: return &v.state case 1: @@ -8610,7 +9207,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddQANPostgreSQLPgStatMonitorAgentResponse); i { + switch v := v.(*AddQANPostgreSQLPgStatMonitorAgentRequest); i { case 0: return &v.state case 1: @@ -8622,7 +9219,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANPostgreSQLPgStatMonitorAgentRequest); i { + switch v := v.(*AddQANPostgreSQLPgStatMonitorAgentResponse); i { case 0: return &v.state case 1: @@ -8634,7 +9231,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeQANPostgreSQLPgStatMonitorAgentResponse); i { + switch v := v.(*ChangeQANPostgreSQLPgStatMonitorAgentRequest); i { case 0: return &v.state case 1: @@ -8646,7 +9243,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRDSExporterRequest); i { + switch v := v.(*ChangeQANPostgreSQLPgStatMonitorAgentResponse); i { case 0: return &v.state case 1: @@ -8658,7 +9255,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRDSExporterResponse); i { + switch v := v.(*AddRDSExporterRequest); i { case 0: return &v.state case 1: @@ -8670,7 +9267,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeRDSExporterRequest); i { + switch v := v.(*AddRDSExporterResponse); i { case 0: return &v.state case 1: @@ -8682,7 +9279,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeRDSExporterResponse); i { + switch v := v.(*ChangeRDSExporterRequest); i { case 0: return &v.state case 1: @@ -8694,7 +9291,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddExternalExporterRequest); i { + switch v := v.(*ChangeRDSExporterResponse); i { case 0: return &v.state case 1: @@ -8706,7 +9303,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddExternalExporterResponse); i { + switch v := v.(*AddExternalExporterRequest); i { case 0: return &v.state case 1: @@ -8718,7 +9315,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeExternalExporterRequest); i { + switch v := v.(*AddExternalExporterResponse); i { case 0: return &v.state case 1: @@ -8730,7 +9327,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeExternalExporterResponse); i { + switch v := v.(*ChangeExternalExporterRequest); i { case 0: return &v.state case 1: @@ -8742,7 +9339,7 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveAgentRequest); i { + switch v := v.(*ChangeExternalExporterResponse); i { case 0: return &v.state case 1: @@ -8754,6 +9351,66 @@ func file_inventorypb_agents_proto_init() { } } file_inventorypb_agents_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddAzureDatabaseExporterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_agents_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddAzureDatabaseExporterResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_agents_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangeAzureDatabaseExporterRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_agents_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChangeAzureDatabaseExporterResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_agents_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveAgentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_agents_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveAgentResponse); i { case 0: return &v.state @@ -8766,7 +9423,7 @@ func file_inventorypb_agents_proto_init() { } } } - file_inventorypb_agents_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_inventorypb_agents_proto_msgTypes[19].OneofWrappers = []interface{}{ (*GetAgentResponse_PmmAgent)(nil), (*GetAgentResponse_Vmagent)(nil), (*GetAgentResponse_NodeExporter)(nil), @@ -8781,6 +9438,7 @@ func file_inventorypb_agents_proto_init() { (*GetAgentResponse_QanPostgresqlPgstatmonitorAgent)(nil), (*GetAgentResponse_RdsExporter)(nil), (*GetAgentResponse_ExternalExporter)(nil), + (*GetAgentResponse_AzureDatabaseExporter)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -8788,7 +9446,7 @@ func file_inventorypb_agents_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_inventorypb_agents_proto_rawDesc, NumEnums: 1, - NumMessages: 98, + NumMessages: 105, NumExtensions: 0, NumServices: 1, }, @@ -8869,6 +9527,10 @@ type AgentsClient interface { AddExternalExporter(ctx context.Context, in *AddExternalExporterRequest, opts ...grpc.CallOption) (*AddExternalExporterResponse, error) // ChangeExternalExporter changes external_exporter Agent. ChangeExternalExporter(ctx context.Context, in *ChangeExternalExporterRequest, opts ...grpc.CallOption) (*ChangeExternalExporterResponse, error) + // AddAzureDatabaseExporter adds azure_database_exporter Agent. + AddAzureDatabaseExporter(ctx context.Context, in *AddAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*AddAzureDatabaseExporterResponse, error) + // ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent. + ChangeAzureDatabaseExporter(ctx context.Context, in *ChangeAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*ChangeAzureDatabaseExporterResponse, error) // RemoveAgent removes Agent. RemoveAgent(ctx context.Context, in *RemoveAgentRequest, opts ...grpc.CallOption) (*RemoveAgentResponse, error) } @@ -9124,6 +9786,24 @@ func (c *agentsClient) ChangeExternalExporter(ctx context.Context, in *ChangeExt return out, nil } +func (c *agentsClient) AddAzureDatabaseExporter(ctx context.Context, in *AddAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*AddAzureDatabaseExporterResponse, error) { + out := new(AddAzureDatabaseExporterResponse) + err := c.cc.Invoke(ctx, "/inventory.Agents/AddAzureDatabaseExporter", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *agentsClient) ChangeAzureDatabaseExporter(ctx context.Context, in *ChangeAzureDatabaseExporterRequest, opts ...grpc.CallOption) (*ChangeAzureDatabaseExporterResponse, error) { + out := new(ChangeAzureDatabaseExporterResponse) + err := c.cc.Invoke(ctx, "/inventory.Agents/ChangeAzureDatabaseExporter", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *agentsClient) RemoveAgent(ctx context.Context, in *RemoveAgentRequest, opts ...grpc.CallOption) (*RemoveAgentResponse, error) { out := new(RemoveAgentResponse) err := c.cc.Invoke(ctx, "/inventory.Agents/RemoveAgent", in, out, opts...) @@ -9189,6 +9869,10 @@ type AgentsServer interface { AddExternalExporter(context.Context, *AddExternalExporterRequest) (*AddExternalExporterResponse, error) // ChangeExternalExporter changes external_exporter Agent. ChangeExternalExporter(context.Context, *ChangeExternalExporterRequest) (*ChangeExternalExporterResponse, error) + // AddAzureDatabaseExporter adds azure_database_exporter Agent. + AddAzureDatabaseExporter(context.Context, *AddAzureDatabaseExporterRequest) (*AddAzureDatabaseExporterResponse, error) + // ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent. + ChangeAzureDatabaseExporter(context.Context, *ChangeAzureDatabaseExporterRequest) (*ChangeAzureDatabaseExporterResponse, error) // RemoveAgent removes Agent. RemoveAgent(context.Context, *RemoveAgentRequest) (*RemoveAgentResponse, error) } @@ -9278,6 +9962,12 @@ func (*UnimplementedAgentsServer) AddExternalExporter(context.Context, *AddExter func (*UnimplementedAgentsServer) ChangeExternalExporter(context.Context, *ChangeExternalExporterRequest) (*ChangeExternalExporterResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ChangeExternalExporter not implemented") } +func (*UnimplementedAgentsServer) AddAzureDatabaseExporter(context.Context, *AddAzureDatabaseExporterRequest) (*AddAzureDatabaseExporterResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddAzureDatabaseExporter not implemented") +} +func (*UnimplementedAgentsServer) ChangeAzureDatabaseExporter(context.Context, *ChangeAzureDatabaseExporterRequest) (*ChangeAzureDatabaseExporterResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ChangeAzureDatabaseExporter not implemented") +} func (*UnimplementedAgentsServer) RemoveAgent(context.Context, *RemoveAgentRequest) (*RemoveAgentResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveAgent not implemented") } @@ -9772,6 +10462,42 @@ func _Agents_ChangeExternalExporter_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _Agents_AddAzureDatabaseExporter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddAzureDatabaseExporterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentsServer).AddAzureDatabaseExporter(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Agents/AddAzureDatabaseExporter", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentsServer).AddAzureDatabaseExporter(ctx, req.(*AddAzureDatabaseExporterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Agents_ChangeAzureDatabaseExporter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ChangeAzureDatabaseExporterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentsServer).ChangeAzureDatabaseExporter(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Agents/ChangeAzureDatabaseExporter", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentsServer).ChangeAzureDatabaseExporter(ctx, req.(*ChangeAzureDatabaseExporterRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Agents_RemoveAgent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveAgentRequest) if err := dec(in); err != nil { @@ -9902,6 +10628,14 @@ var _Agents_serviceDesc = grpc.ServiceDesc{ MethodName: "ChangeExternalExporter", Handler: _Agents_ChangeExternalExporter_Handler, }, + { + MethodName: "AddAzureDatabaseExporter", + Handler: _Agents_AddAzureDatabaseExporter_Handler, + }, + { + MethodName: "ChangeAzureDatabaseExporter", + Handler: _Agents_ChangeAzureDatabaseExporter_Handler, + }, { MethodName: "RemoveAgent", Handler: _Agents_RemoveAgent_Handler, diff --git a/api/inventorypb/agents.pb.gw.go b/api/inventorypb/agents.pb.gw.go index f3430e7aa2..20abd4bc98 100644 --- a/api/inventorypb/agents.pb.gw.go +++ b/api/inventorypb/agents.pb.gw.go @@ -951,6 +951,74 @@ func local_request_Agents_ChangeExternalExporter_0(ctx context.Context, marshale } +func request_Agents_AddAzureDatabaseExporter_0(ctx context.Context, marshaler runtime.Marshaler, client AgentsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddAzureDatabaseExporterRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AddAzureDatabaseExporter(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Agents_AddAzureDatabaseExporter_0(ctx context.Context, marshaler runtime.Marshaler, server AgentsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddAzureDatabaseExporterRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AddAzureDatabaseExporter(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Agents_ChangeAzureDatabaseExporter_0(ctx context.Context, marshaler runtime.Marshaler, client AgentsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ChangeAzureDatabaseExporterRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ChangeAzureDatabaseExporter(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Agents_ChangeAzureDatabaseExporter_0(ctx context.Context, marshaler runtime.Marshaler, server AgentsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ChangeAzureDatabaseExporterRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ChangeAzureDatabaseExporter(ctx, &protoReq) + return msg, metadata, err + +} + func request_Agents_RemoveAgent_0(ctx context.Context, marshaler runtime.Marshaler, client AgentsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq RemoveAgentRequest var metadata runtime.ServerMetadata @@ -1612,6 +1680,52 @@ func RegisterAgentsHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser }) + mux.Handle("POST", pattern_Agents_AddAzureDatabaseExporter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Agents_AddAzureDatabaseExporter_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Agents_AddAzureDatabaseExporter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Agents_ChangeAzureDatabaseExporter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Agents_ChangeAzureDatabaseExporter_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Agents_ChangeAzureDatabaseExporter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Agents_RemoveAgent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2216,6 +2330,46 @@ func RegisterAgentsHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli }) + mux.Handle("POST", pattern_Agents_AddAzureDatabaseExporter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Agents_AddAzureDatabaseExporter_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Agents_AddAzureDatabaseExporter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Agents_ChangeAzureDatabaseExporter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Agents_ChangeAzureDatabaseExporter_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Agents_ChangeAzureDatabaseExporter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Agents_RemoveAgent_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -2294,6 +2448,10 @@ var ( pattern_Agents_ChangeExternalExporter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Agents", "ChangeExternalExporter"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Agents_AddAzureDatabaseExporter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Agents", "AddAzureDatabaseExporter"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Agents_ChangeAzureDatabaseExporter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Agents", "ChangeAzureDatabaseExporter"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Agents_RemoveAgent_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Agents", "Remove"}, "", runtime.AssumeColonVerbOpt(true))) ) @@ -2352,5 +2510,9 @@ var ( forward_Agents_ChangeExternalExporter_0 = runtime.ForwardResponseMessage + forward_Agents_AddAzureDatabaseExporter_0 = runtime.ForwardResponseMessage + + forward_Agents_ChangeAzureDatabaseExporter_0 = runtime.ForwardResponseMessage + forward_Agents_RemoveAgent_0 = runtime.ForwardResponseMessage ) diff --git a/api/inventorypb/agents.proto b/api/inventorypb/agents.proto index aafa254d27..dc3b57e8de 100644 --- a/api/inventorypb/agents.proto +++ b/api/inventorypb/agents.proto @@ -25,6 +25,7 @@ enum AgentType { QAN_POSTGRESQL_PGSTATMONITOR_AGENT = 13; RDS_EXPORTER = 11; EXTERNAL_EXPORTER = 12; + AZURE_DATABASE_EXPORTER = 15; } // PMMAgent runs on Generic or Container Node. @@ -416,6 +417,34 @@ message ExternalExporter { bool push_metrics_enabled = 11; } +// AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics. +message AzureDatabaseExporter { + // Unique randomly generated instance identifier. + string agent_id = 1; + // The pmm-agent identifier which runs this instance. + string pmm_agent_id = 2; + // Desired Agent status: enabled (false) or disabled (true). + bool disabled = 3; + // Node identifier. + string node_id = 4; + // Azure database subscription ID. + string azure_database_subscription_id = 5; + // Azure database resource type (mysql, maria, postgres) + string azure_database_resource_type = 6; + // Custom user-assigned labels. + map custom_labels = 7; + // + // Status fields below. + // + + // Actual Agent status (the same for several configurations). + AgentStatus status = 8; + // Listen port for scraping metrics (the same for several configurations). + uint32 listen_port = 9; + // True if the exporter operates in push metrics mode. + bool push_metrics_enabled = 10; +} + // ChangeCommonAgentParams contains parameters that can be changed for all Agents. message ChangeCommonAgentParams { // Enable this Agent. Can't be used with disabled. @@ -465,6 +494,7 @@ message ListAgentsResponse { repeated QANPostgreSQLPgStatMonitorAgent qan_postgresql_pgstatmonitor_agent = 13; repeated RDSExporter rds_exporter = 11; repeated ExternalExporter external_exporter = 12; + repeated AzureDatabaseExporter azure_database_exporter = 15; } // Get @@ -494,6 +524,7 @@ message GetAgentResponse { QANPostgreSQLPgStatMonitorAgent qan_postgresql_pgstatmonitor_agent = 13; RDSExporter rds_exporter = 11; ExternalExporter external_exporter = 12; + AzureDatabaseExporter azure_database_exporter = 15; } } @@ -1136,6 +1167,62 @@ message ChangeExternalExporterResponse { ExternalExporter external_exporter = 1; } +// Add/Change AzureDatabaseExporter + +message AddAzureDatabaseExporterRequest { + // The pmm-agent identifier which runs this instance. + string pmm_agent_id = 1 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Node identifier. + string node_id = 2 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure client ID + string azure_client_id = 3; + // Azure client secret + string azure_client_secret = 4; + // Azure tanant ID + string azure_tenant_id = 5; + // Azure subscription ID + string azure_subscription_id = 6; + // Azure resource group. + string azure_resource_group = 11; + // Azure resource type (mysql, maria, postgres) + string azure_database_resource_type = 7 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Custom user-assigned labels. + map custom_labels = 8; + // Skip connection check. + bool skip_connection_check = 9; + // Enables push metrics mode for exporter. + bool push_metrics = 10; +} + +message AddAzureDatabaseExporterResponse { + AzureDatabaseExporter azure_database_exporter = 1; +} + +message ChangeAzureDatabaseExporterRequest { + string agent_id = 1 [ + (validator.field) = { + string_not_empty: true + } + ]; + ChangeCommonAgentParams common = 2; +} + +message ChangeAzureDatabaseExporterResponse { + AzureDatabaseExporter azure_database_exporter = 1; +} + // Remove message RemoveAgentRequest { @@ -1341,6 +1428,20 @@ service Agents { body: "*" }; } + // AddAzureDatabaseExporter adds azure_database_exporter Agent. + rpc AddAzureDatabaseExporter(AddAzureDatabaseExporterRequest) returns (AddAzureDatabaseExporterResponse) { + option (google.api.http) = { + post: "/v1/inventory/Agents/AddAzureDatabaseExporter" + body: "*" + }; + } + // ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent. + rpc ChangeAzureDatabaseExporter(ChangeAzureDatabaseExporterRequest) returns (ChangeAzureDatabaseExporterResponse) { + option (google.api.http) = { + post: "/v1/inventory/Agents/ChangeAzureDatabaseExporter" + body: "*" + }; + } // RemoveAgent removes Agent. rpc RemoveAgent(RemoveAgentRequest) returns (RemoveAgentResponse) { option (google.api.http) = { diff --git a/api/inventorypb/agents.validator.pb.go b/api/inventorypb/agents.validator.pb.go index 0b7167274e..b78e89ce1a 100644 --- a/api/inventorypb/agents.validator.pb.go +++ b/api/inventorypb/agents.validator.pb.go @@ -72,6 +72,10 @@ func (this *ExternalExporter) Validate() error { // Validation of proto3 map<> fields is unsupported. return nil } +func (this *AzureDatabaseExporter) Validate() error { + // Validation of proto3 map<> fields is unsupported. + return nil +} func (this *ChangeCommonAgentParams) Validate() error { // Validation of proto3 map<> fields is unsupported. return nil @@ -178,6 +182,13 @@ func (this *ListAgentsResponse) Validate() error { } } } + for _, item := range this.AzureDatabaseExporter { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseExporter", err) + } + } + } return nil } func (this *GetAgentRequest) Validate() error { @@ -285,6 +296,13 @@ func (this *GetAgentResponse) Validate() error { } } } + if oneOfNester, ok := this.GetAgent().(*GetAgentResponse_AzureDatabaseExporter); ok { + if oneOfNester.AzureDatabaseExporter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.AzureDatabaseExporter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseExporter", err) + } + } + } return nil } func (this *AddPMMAgentRequest) Validate() error { @@ -767,6 +785,46 @@ func (this *ChangeExternalExporterResponse) Validate() error { } return nil } +func (this *AddAzureDatabaseExporterRequest) Validate() error { + if this.PmmAgentId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("PmmAgentId", fmt.Errorf(`value '%v' must not be an empty string`, this.PmmAgentId)) + } + if this.NodeId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("NodeId", fmt.Errorf(`value '%v' must not be an empty string`, this.NodeId)) + } + if this.AzureDatabaseResourceType == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseResourceType", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureDatabaseResourceType)) + } + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *AddAzureDatabaseExporterResponse) Validate() error { + if this.AzureDatabaseExporter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.AzureDatabaseExporter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseExporter", err) + } + } + return nil +} +func (this *ChangeAzureDatabaseExporterRequest) Validate() error { + if this.AgentId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AgentId", fmt.Errorf(`value '%v' must not be an empty string`, this.AgentId)) + } + if this.Common != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Common); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Common", err) + } + } + return nil +} +func (this *ChangeAzureDatabaseExporterResponse) Validate() error { + if this.AzureDatabaseExporter != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.AzureDatabaseExporter); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseExporter", err) + } + } + return nil +} func (this *RemoveAgentRequest) Validate() error { if this.AgentId == "" { return github_com_mwitkow_go_proto_validators.FieldError("AgentId", fmt.Errorf(`value '%v' must not be an empty string`, this.AgentId)) diff --git a/api/inventorypb/json/client/agents/add_azure_database_exporter_parameters.go b/api/inventorypb/json/client/agents/add_azure_database_exporter_parameters.go new file mode 100644 index 0000000000..216e7276fe --- /dev/null +++ b/api/inventorypb/json/client/agents/add_azure_database_exporter_parameters.go @@ -0,0 +1,131 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package agents + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewAddAzureDatabaseExporterParams creates a new AddAzureDatabaseExporterParams object +// with the default values initialized. +func NewAddAzureDatabaseExporterParams() *AddAzureDatabaseExporterParams { + var () + return &AddAzureDatabaseExporterParams{ + + timeout: cr.DefaultTimeout, + } +} + +// NewAddAzureDatabaseExporterParamsWithTimeout creates a new AddAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a timeout on a request +func NewAddAzureDatabaseExporterParamsWithTimeout(timeout time.Duration) *AddAzureDatabaseExporterParams { + var () + return &AddAzureDatabaseExporterParams{ + + timeout: timeout, + } +} + +// NewAddAzureDatabaseExporterParamsWithContext creates a new AddAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a context for a request +func NewAddAzureDatabaseExporterParamsWithContext(ctx context.Context) *AddAzureDatabaseExporterParams { + var () + return &AddAzureDatabaseExporterParams{ + + Context: ctx, + } +} + +// NewAddAzureDatabaseExporterParamsWithHTTPClient creates a new AddAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a custom HTTPClient for a request +func NewAddAzureDatabaseExporterParamsWithHTTPClient(client *http.Client) *AddAzureDatabaseExporterParams { + var () + return &AddAzureDatabaseExporterParams{ + HTTPClient: client, + } +} + +/*AddAzureDatabaseExporterParams contains all the parameters to send to the API endpoint +for the add azure database exporter operation typically these are written to a http.Request +*/ +type AddAzureDatabaseExporterParams struct { + + /*Body*/ + Body AddAzureDatabaseExporterBody + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithTimeout adds the timeout to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) WithTimeout(timeout time.Duration) *AddAzureDatabaseExporterParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) WithContext(ctx context.Context) *AddAzureDatabaseExporterParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) WithHTTPClient(client *http.Client) *AddAzureDatabaseExporterParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) WithBody(body AddAzureDatabaseExporterBody) *AddAzureDatabaseExporterParams { + o.SetBody(body) + return o +} + +// SetBody adds the body to the add azure database exporter params +func (o *AddAzureDatabaseExporterParams) SetBody(body AddAzureDatabaseExporterBody) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *AddAzureDatabaseExporterParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/inventorypb/json/client/agents/add_azure_database_exporter_responses.go b/api/inventorypb/json/client/agents/add_azure_database_exporter_responses.go new file mode 100644 index 0000000000..7e783621b2 --- /dev/null +++ b/api/inventorypb/json/client/agents/add_azure_database_exporter_responses.go @@ -0,0 +1,482 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package agents + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// AddAzureDatabaseExporterReader is a Reader for the AddAzureDatabaseExporter structure. +type AddAzureDatabaseExporterReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *AddAzureDatabaseExporterReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewAddAzureDatabaseExporterOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewAddAzureDatabaseExporterDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewAddAzureDatabaseExporterOK creates a AddAzureDatabaseExporterOK with default headers values +func NewAddAzureDatabaseExporterOK() *AddAzureDatabaseExporterOK { + return &AddAzureDatabaseExporterOK{} +} + +/*AddAzureDatabaseExporterOK handles this case with default header values. + +A successful response. +*/ +type AddAzureDatabaseExporterOK struct { + Payload *AddAzureDatabaseExporterOKBody +} + +func (o *AddAzureDatabaseExporterOK) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Agents/AddAzureDatabaseExporter][%d] addAzureDatabaseExporterOk %+v", 200, o.Payload) +} + +func (o *AddAzureDatabaseExporterOK) GetPayload() *AddAzureDatabaseExporterOKBody { + return o.Payload +} + +func (o *AddAzureDatabaseExporterOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(AddAzureDatabaseExporterOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewAddAzureDatabaseExporterDefault creates a AddAzureDatabaseExporterDefault with default headers values +func NewAddAzureDatabaseExporterDefault(code int) *AddAzureDatabaseExporterDefault { + return &AddAzureDatabaseExporterDefault{ + _statusCode: code, + } +} + +/*AddAzureDatabaseExporterDefault handles this case with default header values. + +An unexpected error response. +*/ +type AddAzureDatabaseExporterDefault struct { + _statusCode int + + Payload *AddAzureDatabaseExporterDefaultBody +} + +// Code gets the status code for the add azure database exporter default response +func (o *AddAzureDatabaseExporterDefault) Code() int { + return o._statusCode +} + +func (o *AddAzureDatabaseExporterDefault) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Agents/AddAzureDatabaseExporter][%d] AddAzureDatabaseExporter default %+v", o._statusCode, o.Payload) +} + +func (o *AddAzureDatabaseExporterDefault) GetPayload() *AddAzureDatabaseExporterDefaultBody { + return o.Payload +} + +func (o *AddAzureDatabaseExporterDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(AddAzureDatabaseExporterDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/*AddAzureDatabaseExporterBody add azure database exporter body +swagger:model AddAzureDatabaseExporterBody +*/ +type AddAzureDatabaseExporterBody struct { + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Node identifier. + NodeID string `json:"node_id,omitempty"` + + // Azure client ID + AzureClientID string `json:"azure_client_id,omitempty"` + + // Azure client secret + AzureClientSecret string `json:"azure_client_secret,omitempty"` + + // Azure tanant ID + AzureTenantID string `json:"azure_tenant_id,omitempty"` + + // Azure subscription ID + AzureSubscriptionID string `json:"azure_subscription_id,omitempty"` + + // Azure resource group. + AzureResourceGroup string `json:"azure_resource_group,omitempty"` + + // Azure resource type (mysql, maria, postgres) + AzureDatabaseResourceType string `json:"azure_database_resource_type,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // Skip connection check. + SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + + // Enables push metrics mode for exporter. + PushMetrics bool `json:"push_metrics,omitempty"` +} + +// Validate validates this add azure database exporter body +func (o *AddAzureDatabaseExporterBody) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseExporterBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseExporterBody) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseExporterBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddAzureDatabaseExporterDefaultBody add azure database exporter default body +swagger:model AddAzureDatabaseExporterDefaultBody +*/ +type AddAzureDatabaseExporterDefaultBody struct { + + // error + Error string `json:"error,omitempty"` + + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*DetailsItems0 `json:"details"` +} + +// Validate validates this add azure database exporter default body +func (o *AddAzureDatabaseExporterDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *AddAzureDatabaseExporterDefaultBody) validateDetails(formats strfmt.Registry) error { + + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("AddAzureDatabaseExporter default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseExporterDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseExporterDefaultBody) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseExporterDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddAzureDatabaseExporterOKBody add azure database exporter OK body +swagger:model AddAzureDatabaseExporterOKBody +*/ +type AddAzureDatabaseExporterOKBody struct { + + // azure database exporter + AzureDatabaseExporter *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter `json:"azure_database_exporter,omitempty"` +} + +// Validate validates this add azure database exporter OK body +func (o *AddAzureDatabaseExporterOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateAzureDatabaseExporter(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *AddAzureDatabaseExporterOKBody) validateAzureDatabaseExporter(formats strfmt.Registry) error { + + if swag.IsZero(o.AzureDatabaseExporter) { // not required + return nil + } + + if o.AzureDatabaseExporter != nil { + if err := o.AzureDatabaseExporter.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("addAzureDatabaseExporterOk" + "." + "azure_database_exporter") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseExporterOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseExporterOKBody) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseExporterOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddAzureDatabaseExporterOKBodyAzureDatabaseExporter AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics. +swagger:model AddAzureDatabaseExporterOKBodyAzureDatabaseExporter +*/ +type AddAzureDatabaseExporterOKBodyAzureDatabaseExporter struct { + + // Unique randomly generated instance identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Node identifier. + NodeID string `json:"node_id,omitempty"` + + // Azure database subscription ID. + AzureDatabaseSubscriptionID string `json:"azure_database_subscription_id,omitempty"` + + // Azure database resource type (mysql, maria, postgres) + AzureDatabaseResourceType string `json:"azure_database_resource_type,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - STARTING: Agent is starting. + // - RUNNING: Agent is running. + // - WAITING: Agent encountered error and will be restarted automatically soon. + // - STOPPING: Agent is stopping. + // - DONE: Agent finished. + // Enum: [AGENT_STATUS_INVALID STARTING RUNNING WAITING STOPPING DONE] + Status *string `json:"status,omitempty"` + + // Listen port for scraping metrics (the same for several configurations). + ListenPort int64 `json:"listen_port,omitempty"` + + // True if the exporter operates in push metrics mode. + PushMetricsEnabled bool `json:"push_metrics_enabled,omitempty"` +} + +// Validate validates this add azure database exporter OK body azure database exporter +func (o *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var addAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_INVALID","STARTING","RUNNING","WAITING","STOPPING","DONE"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + addAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum = append(addAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum, v) + } +} + +const ( + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID captures enum value "AGENT_STATUS_INVALID" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID string = "AGENT_STATUS_INVALID" + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTARTING captures enum value "STARTING" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTARTING string = "STARTING" + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusRUNNING captures enum value "RUNNING" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusRUNNING string = "RUNNING" + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusWAITING captures enum value "WAITING" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusWAITING string = "WAITING" + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTOPPING captures enum value "STOPPING" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTOPPING string = "STOPPING" + + // AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusDONE captures enum value "DONE" + AddAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusDONE string = "DONE" +) + +// prop value enum +func (o *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, addAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter) validateStatus(formats strfmt.Registry) error { + + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("addAzureDatabaseExporterOk"+"."+"azure_database_exporter"+"."+"status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseExporterOKBodyAzureDatabaseExporter) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseExporterOKBodyAzureDatabaseExporter + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*DetailsItems0 details items0 +swagger:model DetailsItems0 +*/ +type DetailsItems0 struct { + + // type url + TypeURL string `json:"type_url,omitempty"` + + // value + // Format: byte + Value strfmt.Base64 `json:"value,omitempty"` +} + +// Validate validates this details items0 +func (o *DetailsItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *DetailsItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *DetailsItems0) UnmarshalBinary(b []byte) error { + var res DetailsItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/inventorypb/json/client/agents/add_external_exporter_responses.go b/api/inventorypb/json/client/agents/add_external_exporter_responses.go index f2ce3410c1..e3ef91bb32 100644 --- a/api/inventorypb/json/client/agents/add_external_exporter_responses.go +++ b/api/inventorypb/json/client/agents/add_external_exporter_responses.go @@ -365,39 +365,3 @@ func (o *AddExternalExporterOKBodyExternalExporter) UnmarshalBinary(b []byte) er *o = res return nil } - -/*DetailsItems0 details items0 -swagger:model DetailsItems0 -*/ -type DetailsItems0 struct { - - // type url - TypeURL string `json:"type_url,omitempty"` - - // value - // Format: byte - Value strfmt.Base64 `json:"value,omitempty"` -} - -// Validate validates this details items0 -func (o *DetailsItems0) Validate(formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *DetailsItems0) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *DetailsItems0) UnmarshalBinary(b []byte) error { - var res DetailsItems0 - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/api/inventorypb/json/client/agents/agents_client.go b/api/inventorypb/json/client/agents/agents_client.go index 38ee099ab1..73f227b551 100644 --- a/api/inventorypb/json/client/agents/agents_client.go +++ b/api/inventorypb/json/client/agents/agents_client.go @@ -25,6 +25,8 @@ type Client struct { // ClientService is the interface for Client methods type ClientService interface { + AddAzureDatabaseExporter(params *AddAzureDatabaseExporterParams) (*AddAzureDatabaseExporterOK, error) + AddExternalExporter(params *AddExternalExporterParams) (*AddExternalExporterOK, error) AddMongoDBExporter(params *AddMongoDBExporterParams) (*AddMongoDBExporterOK, error) @@ -51,6 +53,8 @@ type ClientService interface { AddRDSExporter(params *AddRDSExporterParams) (*AddRDSExporterOK, error) + ChangeAzureDatabaseExporter(params *ChangeAzureDatabaseExporterParams) (*ChangeAzureDatabaseExporterOK, error) + ChangeExternalExporter(params *ChangeExternalExporterParams) (*ChangeExternalExporterOK, error) ChangeMongoDBExporter(params *ChangeMongoDBExporterParams) (*ChangeMongoDBExporterOK, error) @@ -84,6 +88,39 @@ type ClientService interface { SetTransport(transport runtime.ClientTransport) } +/* + AddAzureDatabaseExporter adds azure database exporter adds azure database exporter agent +*/ +func (a *Client) AddAzureDatabaseExporter(params *AddAzureDatabaseExporterParams) (*AddAzureDatabaseExporterOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewAddAzureDatabaseExporterParams() + } + + result, err := a.transport.Submit(&runtime.ClientOperation{ + ID: "AddAzureDatabaseExporter", + Method: "POST", + PathPattern: "/v1/inventory/Agents/AddAzureDatabaseExporter", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &AddAzureDatabaseExporterReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + }) + if err != nil { + return nil, err + } + success, ok := result.(*AddAzureDatabaseExporterOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*AddAzureDatabaseExporterDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + /* AddExternalExporter adds external exporter adds external exporter agent */ @@ -513,6 +550,39 @@ func (a *Client) AddRDSExporter(params *AddRDSExporterParams) (*AddRDSExporterOK return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) } +/* + ChangeAzureDatabaseExporter changes azure database exporter changes database azure database exporter agent +*/ +func (a *Client) ChangeAzureDatabaseExporter(params *ChangeAzureDatabaseExporterParams) (*ChangeAzureDatabaseExporterOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewChangeAzureDatabaseExporterParams() + } + + result, err := a.transport.Submit(&runtime.ClientOperation{ + ID: "ChangeAzureDatabaseExporter", + Method: "POST", + PathPattern: "/v1/inventory/Agents/ChangeAzureDatabaseExporter", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &ChangeAzureDatabaseExporterReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + }) + if err != nil { + return nil, err + } + success, ok := result.(*ChangeAzureDatabaseExporterOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ChangeAzureDatabaseExporterDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + /* ChangeExternalExporter changes external exporter changes external exporter agent */ diff --git a/api/inventorypb/json/client/agents/change_azure_database_exporter_parameters.go b/api/inventorypb/json/client/agents/change_azure_database_exporter_parameters.go new file mode 100644 index 0000000000..0a14a58b8d --- /dev/null +++ b/api/inventorypb/json/client/agents/change_azure_database_exporter_parameters.go @@ -0,0 +1,131 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package agents + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewChangeAzureDatabaseExporterParams creates a new ChangeAzureDatabaseExporterParams object +// with the default values initialized. +func NewChangeAzureDatabaseExporterParams() *ChangeAzureDatabaseExporterParams { + var () + return &ChangeAzureDatabaseExporterParams{ + + timeout: cr.DefaultTimeout, + } +} + +// NewChangeAzureDatabaseExporterParamsWithTimeout creates a new ChangeAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a timeout on a request +func NewChangeAzureDatabaseExporterParamsWithTimeout(timeout time.Duration) *ChangeAzureDatabaseExporterParams { + var () + return &ChangeAzureDatabaseExporterParams{ + + timeout: timeout, + } +} + +// NewChangeAzureDatabaseExporterParamsWithContext creates a new ChangeAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a context for a request +func NewChangeAzureDatabaseExporterParamsWithContext(ctx context.Context) *ChangeAzureDatabaseExporterParams { + var () + return &ChangeAzureDatabaseExporterParams{ + + Context: ctx, + } +} + +// NewChangeAzureDatabaseExporterParamsWithHTTPClient creates a new ChangeAzureDatabaseExporterParams object +// with the default values initialized, and the ability to set a custom HTTPClient for a request +func NewChangeAzureDatabaseExporterParamsWithHTTPClient(client *http.Client) *ChangeAzureDatabaseExporterParams { + var () + return &ChangeAzureDatabaseExporterParams{ + HTTPClient: client, + } +} + +/*ChangeAzureDatabaseExporterParams contains all the parameters to send to the API endpoint +for the change azure database exporter operation typically these are written to a http.Request +*/ +type ChangeAzureDatabaseExporterParams struct { + + /*Body*/ + Body ChangeAzureDatabaseExporterBody + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithTimeout adds the timeout to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) WithTimeout(timeout time.Duration) *ChangeAzureDatabaseExporterParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) WithContext(ctx context.Context) *ChangeAzureDatabaseExporterParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) WithHTTPClient(client *http.Client) *ChangeAzureDatabaseExporterParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) WithBody(body ChangeAzureDatabaseExporterBody) *ChangeAzureDatabaseExporterParams { + o.SetBody(body) + return o +} + +// SetBody adds the body to the change azure database exporter params +func (o *ChangeAzureDatabaseExporterParams) SetBody(body ChangeAzureDatabaseExporterBody) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *ChangeAzureDatabaseExporterParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/inventorypb/json/client/agents/change_azure_database_exporter_responses.go b/api/inventorypb/json/client/agents/change_azure_database_exporter_responses.go new file mode 100644 index 0000000000..58687f5992 --- /dev/null +++ b/api/inventorypb/json/client/agents/change_azure_database_exporter_responses.go @@ -0,0 +1,494 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package agents + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// ChangeAzureDatabaseExporterReader is a Reader for the ChangeAzureDatabaseExporter structure. +type ChangeAzureDatabaseExporterReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ChangeAzureDatabaseExporterReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewChangeAzureDatabaseExporterOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewChangeAzureDatabaseExporterDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewChangeAzureDatabaseExporterOK creates a ChangeAzureDatabaseExporterOK with default headers values +func NewChangeAzureDatabaseExporterOK() *ChangeAzureDatabaseExporterOK { + return &ChangeAzureDatabaseExporterOK{} +} + +/*ChangeAzureDatabaseExporterOK handles this case with default header values. + +A successful response. +*/ +type ChangeAzureDatabaseExporterOK struct { + Payload *ChangeAzureDatabaseExporterOKBody +} + +func (o *ChangeAzureDatabaseExporterOK) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Agents/ChangeAzureDatabaseExporter][%d] changeAzureDatabaseExporterOk %+v", 200, o.Payload) +} + +func (o *ChangeAzureDatabaseExporterOK) GetPayload() *ChangeAzureDatabaseExporterOKBody { + return o.Payload +} + +func (o *ChangeAzureDatabaseExporterOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(ChangeAzureDatabaseExporterOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewChangeAzureDatabaseExporterDefault creates a ChangeAzureDatabaseExporterDefault with default headers values +func NewChangeAzureDatabaseExporterDefault(code int) *ChangeAzureDatabaseExporterDefault { + return &ChangeAzureDatabaseExporterDefault{ + _statusCode: code, + } +} + +/*ChangeAzureDatabaseExporterDefault handles this case with default header values. + +An unexpected error response. +*/ +type ChangeAzureDatabaseExporterDefault struct { + _statusCode int + + Payload *ChangeAzureDatabaseExporterDefaultBody +} + +// Code gets the status code for the change azure database exporter default response +func (o *ChangeAzureDatabaseExporterDefault) Code() int { + return o._statusCode +} + +func (o *ChangeAzureDatabaseExporterDefault) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Agents/ChangeAzureDatabaseExporter][%d] ChangeAzureDatabaseExporter default %+v", o._statusCode, o.Payload) +} + +func (o *ChangeAzureDatabaseExporterDefault) GetPayload() *ChangeAzureDatabaseExporterDefaultBody { + return o.Payload +} + +func (o *ChangeAzureDatabaseExporterDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(ChangeAzureDatabaseExporterDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/*ChangeAzureDatabaseExporterBody change azure database exporter body +swagger:model ChangeAzureDatabaseExporterBody +*/ +type ChangeAzureDatabaseExporterBody struct { + + // agent id + AgentID string `json:"agent_id,omitempty"` + + // common + Common *ChangeAzureDatabaseExporterParamsBodyCommon `json:"common,omitempty"` +} + +// Validate validates this change azure database exporter body +func (o *ChangeAzureDatabaseExporterBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateCommon(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeAzureDatabaseExporterBody) validateCommon(formats strfmt.Registry) error { + + if swag.IsZero(o.Common) { // not required + return nil + } + + if o.Common != nil { + if err := o.Common.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "common") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterBody) UnmarshalBinary(b []byte) error { + var res ChangeAzureDatabaseExporterBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*ChangeAzureDatabaseExporterDefaultBody change azure database exporter default body +swagger:model ChangeAzureDatabaseExporterDefaultBody +*/ +type ChangeAzureDatabaseExporterDefaultBody struct { + + // error + Error string `json:"error,omitempty"` + + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*DetailsItems0 `json:"details"` +} + +// Validate validates this change azure database exporter default body +func (o *ChangeAzureDatabaseExporterDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeAzureDatabaseExporterDefaultBody) validateDetails(formats strfmt.Registry) error { + + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("ChangeAzureDatabaseExporter default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterDefaultBody) UnmarshalBinary(b []byte) error { + var res ChangeAzureDatabaseExporterDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*ChangeAzureDatabaseExporterOKBody change azure database exporter OK body +swagger:model ChangeAzureDatabaseExporterOKBody +*/ +type ChangeAzureDatabaseExporterOKBody struct { + + // azure database exporter + AzureDatabaseExporter *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter `json:"azure_database_exporter,omitempty"` +} + +// Validate validates this change azure database exporter OK body +func (o *ChangeAzureDatabaseExporterOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateAzureDatabaseExporter(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeAzureDatabaseExporterOKBody) validateAzureDatabaseExporter(formats strfmt.Registry) error { + + if swag.IsZero(o.AzureDatabaseExporter) { // not required + return nil + } + + if o.AzureDatabaseExporter != nil { + if err := o.AzureDatabaseExporter.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeAzureDatabaseExporterOk" + "." + "azure_database_exporter") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterOKBody) UnmarshalBinary(b []byte) error { + var res ChangeAzureDatabaseExporterOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics. +swagger:model ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter +*/ +type ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter struct { + + // Unique randomly generated instance identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Node identifier. + NodeID string `json:"node_id,omitempty"` + + // Azure database subscription ID. + AzureDatabaseSubscriptionID string `json:"azure_database_subscription_id,omitempty"` + + // Azure database resource type (mysql, maria, postgres) + AzureDatabaseResourceType string `json:"azure_database_resource_type,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - STARTING: Agent is starting. + // - RUNNING: Agent is running. + // - WAITING: Agent encountered error and will be restarted automatically soon. + // - STOPPING: Agent is stopping. + // - DONE: Agent finished. + // Enum: [AGENT_STATUS_INVALID STARTING RUNNING WAITING STOPPING DONE] + Status *string `json:"status,omitempty"` + + // Listen port for scraping metrics (the same for several configurations). + ListenPort int64 `json:"listen_port,omitempty"` + + // True if the exporter operates in push metrics mode. + PushMetricsEnabled bool `json:"push_metrics_enabled,omitempty"` +} + +// Validate validates this change azure database exporter OK body azure database exporter +func (o *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var changeAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_INVALID","STARTING","RUNNING","WAITING","STOPPING","DONE"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + changeAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum = append(changeAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum, v) + } +} + +const ( + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID captures enum value "AGENT_STATUS_INVALID" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID string = "AGENT_STATUS_INVALID" + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTARTING captures enum value "STARTING" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTARTING string = "STARTING" + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusRUNNING captures enum value "RUNNING" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusRUNNING string = "RUNNING" + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusWAITING captures enum value "WAITING" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusWAITING string = "WAITING" + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTOPPING captures enum value "STOPPING" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusSTOPPING string = "STOPPING" + + // ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusDONE captures enum value "DONE" + ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporterStatusDONE string = "DONE" +) + +// prop value enum +func (o *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, changeAzureDatabaseExporterOkBodyAzureDatabaseExporterTypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter) validateStatus(formats strfmt.Registry) error { + + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("changeAzureDatabaseExporterOk"+"."+"azure_database_exporter"+"."+"status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter) UnmarshalBinary(b []byte) error { + var res ChangeAzureDatabaseExporterOKBodyAzureDatabaseExporter + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*ChangeAzureDatabaseExporterParamsBodyCommon ChangeCommonAgentParams contains parameters that can be changed for all Agents. +swagger:model ChangeAzureDatabaseExporterParamsBodyCommon +*/ +type ChangeAzureDatabaseExporterParamsBodyCommon struct { + + // Enable this Agent. Can't be used with disabled. + Enable bool `json:"enable,omitempty"` + + // Disable this Agent. Can't be used with enabled. + Disable bool `json:"disable,omitempty"` + + // Replace all custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // Remove all custom user-assigned labels. + RemoveCustomLabels bool `json:"remove_custom_labels,omitempty"` + + // Enables push metrics with vmagent, can't be used with disable_push_metrics. + // Can't be used with agent version lower then 2.12 and unsupported agents. + EnablePushMetrics bool `json:"enable_push_metrics,omitempty"` + + // Disables push metrics, pmm-server starts to pull it, can't be used with enable_push_metrics. + DisablePushMetrics bool `json:"disable_push_metrics,omitempty"` +} + +// Validate validates this change azure database exporter params body common +func (o *ChangeAzureDatabaseExporterParamsBodyCommon) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterParamsBodyCommon) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeAzureDatabaseExporterParamsBodyCommon) UnmarshalBinary(b []byte) error { + var res ChangeAzureDatabaseExporterParamsBodyCommon + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/inventorypb/json/client/agents/get_agent_responses.go b/api/inventorypb/json/client/agents/get_agent_responses.go index cfa3a08ce1..97f34e55a8 100644 --- a/api/inventorypb/json/client/agents/get_agent_responses.go +++ b/api/inventorypb/json/client/agents/get_agent_responses.go @@ -231,6 +231,9 @@ swagger:model GetAgentOKBody */ type GetAgentOKBody struct { + // azure database exporter + AzureDatabaseExporter *GetAgentOKBodyAzureDatabaseExporter `json:"azure_database_exporter,omitempty"` + // external exporter ExternalExporter *GetAgentOKBodyExternalExporter `json:"external_exporter,omitempty"` @@ -278,6 +281,10 @@ type GetAgentOKBody struct { func (o *GetAgentOKBody) Validate(formats strfmt.Registry) error { var res []error + if err := o.validateAzureDatabaseExporter(formats); err != nil { + res = append(res, err) + } + if err := o.validateExternalExporter(formats); err != nil { res = append(res, err) } @@ -340,6 +347,24 @@ func (o *GetAgentOKBody) Validate(formats strfmt.Registry) error { return nil } +func (o *GetAgentOKBody) validateAzureDatabaseExporter(formats strfmt.Registry) error { + + if swag.IsZero(o.AzureDatabaseExporter) { // not required + return nil + } + + if o.AzureDatabaseExporter != nil { + if err := o.AzureDatabaseExporter.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("getAgentOk" + "." + "azure_database_exporter") + } + return err + } + } + + return nil +} + func (o *GetAgentOKBody) validateExternalExporter(formats strfmt.Registry) error { if swag.IsZero(o.ExternalExporter) { // not required @@ -610,6 +635,136 @@ func (o *GetAgentOKBody) UnmarshalBinary(b []byte) error { return nil } +/*GetAgentOKBodyAzureDatabaseExporter AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics. +swagger:model GetAgentOKBodyAzureDatabaseExporter +*/ +type GetAgentOKBodyAzureDatabaseExporter struct { + + // Unique randomly generated instance identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Node identifier. + NodeID string `json:"node_id,omitempty"` + + // Azure database subscription ID. + AzureDatabaseSubscriptionID string `json:"azure_database_subscription_id,omitempty"` + + // Azure database resource type (mysql, maria, postgres) + AzureDatabaseResourceType string `json:"azure_database_resource_type,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - STARTING: Agent is starting. + // - RUNNING: Agent is running. + // - WAITING: Agent encountered error and will be restarted automatically soon. + // - STOPPING: Agent is stopping. + // - DONE: Agent finished. + // Enum: [AGENT_STATUS_INVALID STARTING RUNNING WAITING STOPPING DONE] + Status *string `json:"status,omitempty"` + + // Listen port for scraping metrics (the same for several configurations). + ListenPort int64 `json:"listen_port,omitempty"` + + // True if the exporter operates in push metrics mode. + PushMetricsEnabled bool `json:"push_metrics_enabled,omitempty"` +} + +// Validate validates this get agent OK body azure database exporter +func (o *GetAgentOKBodyAzureDatabaseExporter) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var getAgentOkBodyAzureDatabaseExporterTypeStatusPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_INVALID","STARTING","RUNNING","WAITING","STOPPING","DONE"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + getAgentOkBodyAzureDatabaseExporterTypeStatusPropEnum = append(getAgentOkBodyAzureDatabaseExporterTypeStatusPropEnum, v) + } +} + +const ( + + // GetAgentOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID captures enum value "AGENT_STATUS_INVALID" + GetAgentOKBodyAzureDatabaseExporterStatusAGENTSTATUSINVALID string = "AGENT_STATUS_INVALID" + + // GetAgentOKBodyAzureDatabaseExporterStatusSTARTING captures enum value "STARTING" + GetAgentOKBodyAzureDatabaseExporterStatusSTARTING string = "STARTING" + + // GetAgentOKBodyAzureDatabaseExporterStatusRUNNING captures enum value "RUNNING" + GetAgentOKBodyAzureDatabaseExporterStatusRUNNING string = "RUNNING" + + // GetAgentOKBodyAzureDatabaseExporterStatusWAITING captures enum value "WAITING" + GetAgentOKBodyAzureDatabaseExporterStatusWAITING string = "WAITING" + + // GetAgentOKBodyAzureDatabaseExporterStatusSTOPPING captures enum value "STOPPING" + GetAgentOKBodyAzureDatabaseExporterStatusSTOPPING string = "STOPPING" + + // GetAgentOKBodyAzureDatabaseExporterStatusDONE captures enum value "DONE" + GetAgentOKBodyAzureDatabaseExporterStatusDONE string = "DONE" +) + +// prop value enum +func (o *GetAgentOKBodyAzureDatabaseExporter) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, getAgentOkBodyAzureDatabaseExporterTypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *GetAgentOKBodyAzureDatabaseExporter) validateStatus(formats strfmt.Registry) error { + + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("getAgentOk"+"."+"azure_database_exporter"+"."+"status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *GetAgentOKBodyAzureDatabaseExporter) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *GetAgentOKBodyAzureDatabaseExporter) UnmarshalBinary(b []byte) error { + var res GetAgentOKBodyAzureDatabaseExporter + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /*GetAgentOKBodyExternalExporter ExternalExporter runs on any Node type, including Remote Node. swagger:model GetAgentOKBodyExternalExporter */ diff --git a/api/inventorypb/json/client/agents/list_agents_responses.go b/api/inventorypb/json/client/agents/list_agents_responses.go index 0cc276935a..e5845a10c0 100644 --- a/api/inventorypb/json/client/agents/list_agents_responses.go +++ b/api/inventorypb/json/client/agents/list_agents_responses.go @@ -119,6 +119,136 @@ func (o *ListAgentsDefault) readResponse(response runtime.ClientResponse, consum return nil } +/*AzureDatabaseExporterItems0 AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics. +swagger:model AzureDatabaseExporterItems0 +*/ +type AzureDatabaseExporterItems0 struct { + + // Unique randomly generated instance identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Node identifier. + NodeID string `json:"node_id,omitempty"` + + // Azure database subscription ID. + AzureDatabaseSubscriptionID string `json:"azure_database_subscription_id,omitempty"` + + // Azure database resource type (mysql, maria, postgres) + AzureDatabaseResourceType string `json:"azure_database_resource_type,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - STARTING: Agent is starting. + // - RUNNING: Agent is running. + // - WAITING: Agent encountered error and will be restarted automatically soon. + // - STOPPING: Agent is stopping. + // - DONE: Agent finished. + // Enum: [AGENT_STATUS_INVALID STARTING RUNNING WAITING STOPPING DONE] + Status *string `json:"status,omitempty"` + + // Listen port for scraping metrics (the same for several configurations). + ListenPort int64 `json:"listen_port,omitempty"` + + // True if the exporter operates in push metrics mode. + PushMetricsEnabled bool `json:"push_metrics_enabled,omitempty"` +} + +// Validate validates this azure database exporter items0 +func (o *AzureDatabaseExporterItems0) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var azureDatabaseExporterItems0TypeStatusPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_INVALID","STARTING","RUNNING","WAITING","STOPPING","DONE"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + azureDatabaseExporterItems0TypeStatusPropEnum = append(azureDatabaseExporterItems0TypeStatusPropEnum, v) + } +} + +const ( + + // AzureDatabaseExporterItems0StatusAGENTSTATUSINVALID captures enum value "AGENT_STATUS_INVALID" + AzureDatabaseExporterItems0StatusAGENTSTATUSINVALID string = "AGENT_STATUS_INVALID" + + // AzureDatabaseExporterItems0StatusSTARTING captures enum value "STARTING" + AzureDatabaseExporterItems0StatusSTARTING string = "STARTING" + + // AzureDatabaseExporterItems0StatusRUNNING captures enum value "RUNNING" + AzureDatabaseExporterItems0StatusRUNNING string = "RUNNING" + + // AzureDatabaseExporterItems0StatusWAITING captures enum value "WAITING" + AzureDatabaseExporterItems0StatusWAITING string = "WAITING" + + // AzureDatabaseExporterItems0StatusSTOPPING captures enum value "STOPPING" + AzureDatabaseExporterItems0StatusSTOPPING string = "STOPPING" + + // AzureDatabaseExporterItems0StatusDONE captures enum value "DONE" + AzureDatabaseExporterItems0StatusDONE string = "DONE" +) + +// prop value enum +func (o *AzureDatabaseExporterItems0) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, azureDatabaseExporterItems0TypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *AzureDatabaseExporterItems0) validateStatus(formats strfmt.Registry) error { + + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AzureDatabaseExporterItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AzureDatabaseExporterItems0) UnmarshalBinary(b []byte) error { + var res AzureDatabaseExporterItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /*ExternalExporterItems0 ExternalExporter runs on any Node type, including Remote Node. swagger:model ExternalExporterItems0 */ @@ -196,7 +326,7 @@ type ListAgentsBody struct { ServiceID string `json:"service_id,omitempty"` // AgentType describes supported Agent types. - // Enum: [AGENT_TYPE_INVALID PMM_AGENT VM_AGENT NODE_EXPORTER MYSQLD_EXPORTER MONGODB_EXPORTER POSTGRES_EXPORTER PROXYSQL_EXPORTER QAN_MYSQL_PERFSCHEMA_AGENT QAN_MYSQL_SLOWLOG_AGENT QAN_MONGODB_PROFILER_AGENT QAN_POSTGRESQL_PGSTATEMENTS_AGENT QAN_POSTGRESQL_PGSTATMONITOR_AGENT RDS_EXPORTER EXTERNAL_EXPORTER] + // Enum: [AGENT_TYPE_INVALID PMM_AGENT VM_AGENT NODE_EXPORTER MYSQLD_EXPORTER MONGODB_EXPORTER POSTGRES_EXPORTER PROXYSQL_EXPORTER QAN_MYSQL_PERFSCHEMA_AGENT QAN_MYSQL_SLOWLOG_AGENT QAN_MONGODB_PROFILER_AGENT QAN_POSTGRESQL_PGSTATEMENTS_AGENT QAN_POSTGRESQL_PGSTATMONITOR_AGENT RDS_EXPORTER EXTERNAL_EXPORTER AZURE_DATABASE_EXPORTER] AgentType *string `json:"agent_type,omitempty"` } @@ -218,7 +348,7 @@ var listAgentsBodyTypeAgentTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["AGENT_TYPE_INVALID","PMM_AGENT","VM_AGENT","NODE_EXPORTER","MYSQLD_EXPORTER","MONGODB_EXPORTER","POSTGRES_EXPORTER","PROXYSQL_EXPORTER","QAN_MYSQL_PERFSCHEMA_AGENT","QAN_MYSQL_SLOWLOG_AGENT","QAN_MONGODB_PROFILER_AGENT","QAN_POSTGRESQL_PGSTATEMENTS_AGENT","QAN_POSTGRESQL_PGSTATMONITOR_AGENT","RDS_EXPORTER","EXTERNAL_EXPORTER"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["AGENT_TYPE_INVALID","PMM_AGENT","VM_AGENT","NODE_EXPORTER","MYSQLD_EXPORTER","MONGODB_EXPORTER","POSTGRES_EXPORTER","PROXYSQL_EXPORTER","QAN_MYSQL_PERFSCHEMA_AGENT","QAN_MYSQL_SLOWLOG_AGENT","QAN_MONGODB_PROFILER_AGENT","QAN_POSTGRESQL_PGSTATEMENTS_AGENT","QAN_POSTGRESQL_PGSTATMONITOR_AGENT","RDS_EXPORTER","EXTERNAL_EXPORTER","AZURE_DATABASE_EXPORTER"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -272,6 +402,9 @@ const ( // ListAgentsBodyAgentTypeEXTERNALEXPORTER captures enum value "EXTERNAL_EXPORTER" ListAgentsBodyAgentTypeEXTERNALEXPORTER string = "EXTERNAL_EXPORTER" + + // ListAgentsBodyAgentTypeAZUREDATABASEEXPORTER captures enum value "AZURE_DATABASE_EXPORTER" + ListAgentsBodyAgentTypeAZUREDATABASEEXPORTER string = "AZURE_DATABASE_EXPORTER" ) // prop value enum @@ -435,6 +568,9 @@ type ListAgentsOKBody struct { // external exporter ExternalExporter []*ExternalExporterItems0 `json:"external_exporter"` + + // azure database exporter + AzureDatabaseExporter []*AzureDatabaseExporterItems0 `json:"azure_database_exporter"` } // Validate validates this list agents OK body @@ -497,6 +633,10 @@ func (o *ListAgentsOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateAzureDatabaseExporter(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -853,6 +993,31 @@ func (o *ListAgentsOKBody) validateExternalExporter(formats strfmt.Registry) err return nil } +func (o *ListAgentsOKBody) validateAzureDatabaseExporter(formats strfmt.Registry) error { + + if swag.IsZero(o.AzureDatabaseExporter) { // not required + return nil + } + + for i := 0; i < len(o.AzureDatabaseExporter); i++ { + if swag.IsZero(o.AzureDatabaseExporter[i]) { // not required + continue + } + + if o.AzureDatabaseExporter[i] != nil { + if err := o.AzureDatabaseExporter[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("listAgentsOk" + "." + "azure_database_exporter" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + // MarshalBinary interface implementation func (o *ListAgentsOKBody) MarshalBinary() ([]byte, error) { if o == nil { diff --git a/api/inventorypb/json/client/nodes/add_remote_azure_database_node_parameters.go b/api/inventorypb/json/client/nodes/add_remote_azure_database_node_parameters.go new file mode 100644 index 0000000000..4cd3901836 --- /dev/null +++ b/api/inventorypb/json/client/nodes/add_remote_azure_database_node_parameters.go @@ -0,0 +1,131 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package nodes + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewAddRemoteAzureDatabaseNodeParams creates a new AddRemoteAzureDatabaseNodeParams object +// with the default values initialized. +func NewAddRemoteAzureDatabaseNodeParams() *AddRemoteAzureDatabaseNodeParams { + var () + return &AddRemoteAzureDatabaseNodeParams{ + + timeout: cr.DefaultTimeout, + } +} + +// NewAddRemoteAzureDatabaseNodeParamsWithTimeout creates a new AddRemoteAzureDatabaseNodeParams object +// with the default values initialized, and the ability to set a timeout on a request +func NewAddRemoteAzureDatabaseNodeParamsWithTimeout(timeout time.Duration) *AddRemoteAzureDatabaseNodeParams { + var () + return &AddRemoteAzureDatabaseNodeParams{ + + timeout: timeout, + } +} + +// NewAddRemoteAzureDatabaseNodeParamsWithContext creates a new AddRemoteAzureDatabaseNodeParams object +// with the default values initialized, and the ability to set a context for a request +func NewAddRemoteAzureDatabaseNodeParamsWithContext(ctx context.Context) *AddRemoteAzureDatabaseNodeParams { + var () + return &AddRemoteAzureDatabaseNodeParams{ + + Context: ctx, + } +} + +// NewAddRemoteAzureDatabaseNodeParamsWithHTTPClient creates a new AddRemoteAzureDatabaseNodeParams object +// with the default values initialized, and the ability to set a custom HTTPClient for a request +func NewAddRemoteAzureDatabaseNodeParamsWithHTTPClient(client *http.Client) *AddRemoteAzureDatabaseNodeParams { + var () + return &AddRemoteAzureDatabaseNodeParams{ + HTTPClient: client, + } +} + +/*AddRemoteAzureDatabaseNodeParams contains all the parameters to send to the API endpoint +for the add remote azure database node operation typically these are written to a http.Request +*/ +type AddRemoteAzureDatabaseNodeParams struct { + + /*Body*/ + Body AddRemoteAzureDatabaseNodeBody + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithTimeout adds the timeout to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) WithTimeout(timeout time.Duration) *AddRemoteAzureDatabaseNodeParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) WithContext(ctx context.Context) *AddRemoteAzureDatabaseNodeParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) WithHTTPClient(client *http.Client) *AddRemoteAzureDatabaseNodeParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) WithBody(body AddRemoteAzureDatabaseNodeBody) *AddRemoteAzureDatabaseNodeParams { + o.SetBody(body) + return o +} + +// SetBody adds the body to the add remote azure database node params +func (o *AddRemoteAzureDatabaseNodeParams) SetBody(body AddRemoteAzureDatabaseNodeBody) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *AddRemoteAzureDatabaseNodeParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/inventorypb/json/client/nodes/add_remote_azure_database_node_responses.go b/api/inventorypb/json/client/nodes/add_remote_azure_database_node_responses.go new file mode 100644 index 0000000000..c06db776a2 --- /dev/null +++ b/api/inventorypb/json/client/nodes/add_remote_azure_database_node_responses.go @@ -0,0 +1,349 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package nodes + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// AddRemoteAzureDatabaseNodeReader is a Reader for the AddRemoteAzureDatabaseNode structure. +type AddRemoteAzureDatabaseNodeReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *AddRemoteAzureDatabaseNodeReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewAddRemoteAzureDatabaseNodeOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewAddRemoteAzureDatabaseNodeDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewAddRemoteAzureDatabaseNodeOK creates a AddRemoteAzureDatabaseNodeOK with default headers values +func NewAddRemoteAzureDatabaseNodeOK() *AddRemoteAzureDatabaseNodeOK { + return &AddRemoteAzureDatabaseNodeOK{} +} + +/*AddRemoteAzureDatabaseNodeOK handles this case with default header values. + +A successful response. +*/ +type AddRemoteAzureDatabaseNodeOK struct { + Payload *AddRemoteAzureDatabaseNodeOKBody +} + +func (o *AddRemoteAzureDatabaseNodeOK) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Nodes/AddRemoteAzureDatabase][%d] addRemoteAzureDatabaseNodeOk %+v", 200, o.Payload) +} + +func (o *AddRemoteAzureDatabaseNodeOK) GetPayload() *AddRemoteAzureDatabaseNodeOKBody { + return o.Payload +} + +func (o *AddRemoteAzureDatabaseNodeOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(AddRemoteAzureDatabaseNodeOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewAddRemoteAzureDatabaseNodeDefault creates a AddRemoteAzureDatabaseNodeDefault with default headers values +func NewAddRemoteAzureDatabaseNodeDefault(code int) *AddRemoteAzureDatabaseNodeDefault { + return &AddRemoteAzureDatabaseNodeDefault{ + _statusCode: code, + } +} + +/*AddRemoteAzureDatabaseNodeDefault handles this case with default header values. + +An unexpected error response. +*/ +type AddRemoteAzureDatabaseNodeDefault struct { + _statusCode int + + Payload *AddRemoteAzureDatabaseNodeDefaultBody +} + +// Code gets the status code for the add remote azure database node default response +func (o *AddRemoteAzureDatabaseNodeDefault) Code() int { + return o._statusCode +} + +func (o *AddRemoteAzureDatabaseNodeDefault) Error() string { + return fmt.Sprintf("[POST /v1/inventory/Nodes/AddRemoteAzureDatabase][%d] AddRemoteAzureDatabaseNode default %+v", o._statusCode, o.Payload) +} + +func (o *AddRemoteAzureDatabaseNodeDefault) GetPayload() *AddRemoteAzureDatabaseNodeDefaultBody { + return o.Payload +} + +func (o *AddRemoteAzureDatabaseNodeDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(AddRemoteAzureDatabaseNodeDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/*AddRemoteAzureDatabaseNodeBody add remote azure database node body +swagger:model AddRemoteAzureDatabaseNodeBody +*/ +type AddRemoteAzureDatabaseNodeBody struct { + + // Unique across all Nodes user-defined name. + NodeName string `json:"node_name,omitempty"` + + // DB instance identifier. + Address string `json:"address,omitempty"` + + // Node model. + NodeModel string `json:"node_model,omitempty"` + + // Node region. + Region string `json:"region,omitempty"` + + // Node availability zone. + Az string `json:"az,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` +} + +// Validate validates this add remote azure database node body +func (o *AddRemoteAzureDatabaseNodeBody) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeBody) UnmarshalBinary(b []byte) error { + var res AddRemoteAzureDatabaseNodeBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddRemoteAzureDatabaseNodeDefaultBody add remote azure database node default body +swagger:model AddRemoteAzureDatabaseNodeDefaultBody +*/ +type AddRemoteAzureDatabaseNodeDefaultBody struct { + + // error + Error string `json:"error,omitempty"` + + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*DetailsItems0 `json:"details"` +} + +// Validate validates this add remote azure database node default body +func (o *AddRemoteAzureDatabaseNodeDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *AddRemoteAzureDatabaseNodeDefaultBody) validateDetails(formats strfmt.Registry) error { + + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("AddRemoteAzureDatabaseNode default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeDefaultBody) UnmarshalBinary(b []byte) error { + var res AddRemoteAzureDatabaseNodeDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddRemoteAzureDatabaseNodeOKBody add remote azure database node OK body +swagger:model AddRemoteAzureDatabaseNodeOKBody +*/ +type AddRemoteAzureDatabaseNodeOKBody struct { + + // remote azure database + RemoteAzureDatabase *AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase `json:"remote_azure_database,omitempty"` +} + +// Validate validates this add remote azure database node OK body +func (o *AddRemoteAzureDatabaseNodeOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateRemoteAzureDatabase(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *AddRemoteAzureDatabaseNodeOKBody) validateRemoteAzureDatabase(formats strfmt.Registry) error { + + if swag.IsZero(o.RemoteAzureDatabase) { // not required + return nil + } + + if o.RemoteAzureDatabase != nil { + if err := o.RemoteAzureDatabase.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("addRemoteAzureDatabaseNodeOk" + "." + "remote_azure_database") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeOKBody) UnmarshalBinary(b []byte) error { + var res AddRemoteAzureDatabaseNodeOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes. +swagger:model AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase +*/ +type AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase struct { + + // Unique randomly generated instance identifier. + NodeID string `json:"node_id,omitempty"` + + // Unique across all Nodes user-defined name. + NodeName string `json:"node_name,omitempty"` + + // DB instance identifier. + Address string `json:"address,omitempty"` + + // Node model. + NodeModel string `json:"node_model,omitempty"` + + // Node region. + Region string `json:"region,omitempty"` + + // Node availability zone. + Az string `json:"az,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` +} + +// Validate validates this add remote azure database node OK body remote azure database +func (o *AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase) UnmarshalBinary(b []byte) error { + var res AddRemoteAzureDatabaseNodeOKBodyRemoteAzureDatabase + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/inventorypb/json/client/nodes/get_node_responses.go b/api/inventorypb/json/client/nodes/get_node_responses.go index 8c898ff8df..1241f352f1 100644 --- a/api/inventorypb/json/client/nodes/get_node_responses.go +++ b/api/inventorypb/json/client/nodes/get_node_responses.go @@ -238,6 +238,9 @@ type GetNodeOKBody struct { // remote Remote *GetNodeOKBodyRemote `json:"remote,omitempty"` + // remote azure database + RemoteAzureDatabase *GetNodeOKBodyRemoteAzureDatabase `json:"remote_azure_database,omitempty"` + // remote rds RemoteRDS *GetNodeOKBodyRemoteRDS `json:"remote_rds,omitempty"` } @@ -258,6 +261,10 @@ func (o *GetNodeOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateRemoteAzureDatabase(formats); err != nil { + res = append(res, err) + } + if err := o.validateRemoteRDS(formats); err != nil { res = append(res, err) } @@ -322,6 +329,24 @@ func (o *GetNodeOKBody) validateRemote(formats strfmt.Registry) error { return nil } +func (o *GetNodeOKBody) validateRemoteAzureDatabase(formats strfmt.Registry) error { + + if swag.IsZero(o.RemoteAzureDatabase) { // not required + return nil + } + + if o.RemoteAzureDatabase != nil { + if err := o.RemoteAzureDatabase.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("getNodeOk" + "." + "remote_azure_database") + } + return err + } + } + + return nil +} + func (o *GetNodeOKBody) validateRemoteRDS(formats strfmt.Registry) error { if swag.IsZero(o.RemoteRDS) { // not required @@ -523,6 +548,56 @@ func (o *GetNodeOKBodyRemote) UnmarshalBinary(b []byte) error { return nil } +/*GetNodeOKBodyRemoteAzureDatabase RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes. +swagger:model GetNodeOKBodyRemoteAzureDatabase +*/ +type GetNodeOKBodyRemoteAzureDatabase struct { + + // Unique randomly generated instance identifier. + NodeID string `json:"node_id,omitempty"` + + // Unique across all Nodes user-defined name. + NodeName string `json:"node_name,omitempty"` + + // DB instance identifier. + Address string `json:"address,omitempty"` + + // Node model. + NodeModel string `json:"node_model,omitempty"` + + // Node region. + Region string `json:"region,omitempty"` + + // Node availability zone. + Az string `json:"az,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` +} + +// Validate validates this get node OK body remote azure database +func (o *GetNodeOKBodyRemoteAzureDatabase) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *GetNodeOKBodyRemoteAzureDatabase) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *GetNodeOKBodyRemoteAzureDatabase) UnmarshalBinary(b []byte) error { + var res GetNodeOKBodyRemoteAzureDatabase + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /*GetNodeOKBodyRemoteRDS RemoteRDSNode represents remote RDS Node. Agents can't run on Remote RDS Nodes. swagger:model GetNodeOKBodyRemoteRDS */ diff --git a/api/inventorypb/json/client/nodes/list_nodes_responses.go b/api/inventorypb/json/client/nodes/list_nodes_responses.go index f21d4a626e..50e62a1a9c 100644 --- a/api/inventorypb/json/client/nodes/list_nodes_responses.go +++ b/api/inventorypb/json/client/nodes/list_nodes_responses.go @@ -240,7 +240,7 @@ swagger:model ListNodesBody type ListNodesBody struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` } @@ -262,7 +262,7 @@ var listNodesBodyTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -286,6 +286,9 @@ const ( // ListNodesBodyNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" ListNodesBodyNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // ListNodesBodyNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + ListNodesBodyNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum @@ -419,6 +422,9 @@ type ListNodesOKBody struct { // remote rds RemoteRDS []*RemoteRDSItems0 `json:"remote_rds"` + + // remote azure database + RemoteAzureDatabase []*RemoteAzureDatabaseItems0 `json:"remote_azure_database"` } // Validate validates this list nodes OK body @@ -441,6 +447,10 @@ func (o *ListNodesOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateRemoteAzureDatabase(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -547,6 +557,31 @@ func (o *ListNodesOKBody) validateRemoteRDS(formats strfmt.Registry) error { return nil } +func (o *ListNodesOKBody) validateRemoteAzureDatabase(formats strfmt.Registry) error { + + if swag.IsZero(o.RemoteAzureDatabase) { // not required + return nil + } + + for i := 0; i < len(o.RemoteAzureDatabase); i++ { + if swag.IsZero(o.RemoteAzureDatabase[i]) { // not required + continue + } + + if o.RemoteAzureDatabase[i] != nil { + if err := o.RemoteAzureDatabase[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("listNodesOk" + "." + "remote_azure_database" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + // MarshalBinary interface implementation func (o *ListNodesOKBody) MarshalBinary() ([]byte, error) { if o == nil { @@ -565,6 +600,56 @@ func (o *ListNodesOKBody) UnmarshalBinary(b []byte) error { return nil } +/*RemoteAzureDatabaseItems0 RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes. +swagger:model RemoteAzureDatabaseItems0 +*/ +type RemoteAzureDatabaseItems0 struct { + + // Unique randomly generated instance identifier. + NodeID string `json:"node_id,omitempty"` + + // Unique across all Nodes user-defined name. + NodeName string `json:"node_name,omitempty"` + + // DB instance identifier. + Address string `json:"address,omitempty"` + + // Node model. + NodeModel string `json:"node_model,omitempty"` + + // Node region. + Region string `json:"region,omitempty"` + + // Node availability zone. + Az string `json:"az,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` +} + +// Validate validates this remote azure database items0 +func (o *RemoteAzureDatabaseItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *RemoteAzureDatabaseItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *RemoteAzureDatabaseItems0) UnmarshalBinary(b []byte) error { + var res RemoteAzureDatabaseItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /*RemoteItems0 RemoteNode represents generic remote Node. It's a node where we don't run pmm-agents. Only external exporters can run on Remote Nodes. swagger:model RemoteItems0 */ diff --git a/api/inventorypb/json/client/nodes/nodes_client.go b/api/inventorypb/json/client/nodes/nodes_client.go index 07f8161bd5..63528d3deb 100644 --- a/api/inventorypb/json/client/nodes/nodes_client.go +++ b/api/inventorypb/json/client/nodes/nodes_client.go @@ -29,6 +29,8 @@ type ClientService interface { AddGenericNode(params *AddGenericNodeParams) (*AddGenericNodeOK, error) + AddRemoteAzureDatabaseNode(params *AddRemoteAzureDatabaseNodeParams) (*AddRemoteAzureDatabaseNodeOK, error) + AddRemoteNode(params *AddRemoteNodeParams) (*AddRemoteNodeOK, error) AddRemoteRDSNode(params *AddRemoteRDSNodeParams) (*AddRemoteRDSNodeOK, error) @@ -108,6 +110,39 @@ func (a *Client) AddGenericNode(params *AddGenericNodeParams) (*AddGenericNodeOK return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) } +/* + AddRemoteAzureDatabaseNode adds remote azure database node adds remote azure database node +*/ +func (a *Client) AddRemoteAzureDatabaseNode(params *AddRemoteAzureDatabaseNodeParams) (*AddRemoteAzureDatabaseNodeOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewAddRemoteAzureDatabaseNodeParams() + } + + result, err := a.transport.Submit(&runtime.ClientOperation{ + ID: "AddRemoteAzureDatabaseNode", + Method: "POST", + PathPattern: "/v1/inventory/Nodes/AddRemoteAzureDatabase", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &AddRemoteAzureDatabaseNodeReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + }) + if err != nil { + return nil, err + } + success, ok := result.(*AddRemoteAzureDatabaseNodeOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*AddRemoteAzureDatabaseNodeDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + /* AddRemoteNode adds remote node adds remote node */ diff --git a/api/inventorypb/json/inventorypb.json b/api/inventorypb/json/inventorypb.json index c6879c5f65..9e691ab942 100644 --- a/api/inventorypb/json/inventorypb.json +++ b/api/inventorypb/json/inventorypb.json @@ -15,6 +15,204 @@ "version": "v1" }, "paths": { + "/v1/inventory/Agents/AddAzureDatabaseExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "AddAzureDatabaseExporter adds azure_database_exporter Agent.", + "operationId": "AddAzureDatabaseExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "azure_client_id": { + "type": "string", + "title": "Azure client ID", + "x-order": 2 + }, + "azure_client_secret": { + "type": "string", + "title": "Azure client secret", + "x-order": 3 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure resource type (mysql, maria, postgres)", + "x-order": 7 + }, + "azure_resource_group": { + "description": "Azure resource group.", + "type": "string", + "x-order": 6 + }, + "azure_subscription_id": { + "type": "string", + "title": "Azure subscription ID", + "x-order": 5 + }, + "azure_tenant_id": { + "type": "string", + "title": "Azure tanant ID", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 8 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 1 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 0 + }, + "push_metrics": { + "description": "Enables push metrics mode for exporter.", + "type": "boolean", + "x-order": 10 + }, + "skip_connection_check": { + "description": "Skip connection check.", + "type": "boolean", + "x-order": 9 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + }, + "error": { + "type": "string", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 2 + } + } + } + } + } + } + }, "/v1/inventory/Agents/AddExternalExporter": { "post": { "tags": [ @@ -2476,13 +2674,13 @@ } } }, - "/v1/inventory/Agents/ChangeExternalExporter": { + "/v1/inventory/Agents/ChangeAzureDatabaseExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeExternalExporter changes external_exporter Agent.", - "operationId": "ChangeExternalExporter", + "summary": "ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent.", + "operationId": "ChangeAzureDatabaseExporter", "parameters": [ { "name": "body", @@ -2545,8 +2743,8 @@ "schema": { "type": "object", "properties": { - "external_exporter": { - "description": "ExternalExporter runs on any Node type, including Remote Node.", + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", "type": "object", "properties": { "agent_id": { @@ -2554,54 +2752,63 @@ "type": "string", "x-order": 0 }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, "custom_labels": { "description": "Custom user-assigned labels.", "type": "object", "additionalProperties": { "type": "string" }, - "x-order": 7 + "x-order": 6 }, "disabled": { - "description": "If disabled, metrics from this exporter will not be collected.", + "description": "Desired Agent status: enabled (false) or disabled (true).", "type": "boolean", "x-order": 2 }, "listen_port": { - "description": "Listen port for scraping metrics.", + "description": "Listen port for scraping metrics (the same for several configurations).", "type": "integer", "format": "int64", "x-order": 8 }, - "metrics_path": { - "description": "Path under which metrics are exposed, used to generate URI.", + "node_id": { + "description": "Node identifier.", "type": "string", - "x-order": 6 - }, - "push_metrics_enabled": { - "description": "True if exporter uses push metrics mode.", - "type": "boolean", - "x-order": 9 + "x-order": 3 }, - "runs_on_node_id": { - "description": "Node identifier where this instance runs.", + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", "type": "string", "x-order": 1 }, - "scheme": { - "description": "Scheme to generate URI to exporter metrics endpoints.", - "type": "string", - "x-order": 5 - }, - "service_id": { - "description": "Service identifier.", - "type": "string", - "x-order": 3 + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 }, - "username": { - "description": "HTTP basic auth username for collecting metrics.", + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", "type": "string", - "x-order": 4 + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 } }, "x-order": 0 @@ -2651,13 +2858,13 @@ } } }, - "/v1/inventory/Agents/ChangeMongoDBExporter": { + "/v1/inventory/Agents/ChangeExternalExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", - "operationId": "ChangeMongoDBExporter", + "summary": "ChangeExternalExporter changes external_exporter Agent.", + "operationId": "ChangeExternalExporter", "parameters": [ { "name": "body", @@ -2720,8 +2927,8 @@ "schema": { "type": "object", "properties": { - "mongodb_exporter": { - "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "external_exporter": { + "description": "ExternalExporter runs on any Node type, including Remote Node.", "type": "object", "properties": { "agent_id": { @@ -2738,23 +2945,198 @@ "x-order": 7 }, "disabled": { - "description": "Desired Agent status: enabled (false) or disabled (true).", + "description": "If disabled, metrics from this exporter will not be collected.", "type": "boolean", "x-order": 2 }, - "disabled_collectors": { - "description": "List of disabled collector names.", - "type": "array", - "items": { - "type": "string" - }, - "x-order": 9 - }, "listen_port": { "description": "Listen port for scraping metrics.", "type": "integer", "format": "int64", - "x-order": 11 + "x-order": 8 + }, + "metrics_path": { + "description": "Path under which metrics are exposed, used to generate URI.", + "type": "string", + "x-order": 6 + }, + "push_metrics_enabled": { + "description": "True if exporter uses push metrics mode.", + "type": "boolean", + "x-order": 9 + }, + "runs_on_node_id": { + "description": "Node identifier where this instance runs.", + "type": "string", + "x-order": 1 + }, + "scheme": { + "description": "Scheme to generate URI to exporter metrics endpoints.", + "type": "string", + "x-order": 5 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "HTTP basic auth username for collecting metrics.", + "type": "string", + "x-order": 4 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + }, + "error": { + "type": "string", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 2 + } + } + } + } + } + } + }, + "/v1/inventory/Agents/ChangeMongoDBExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", + "operationId": "ChangeMongoDBExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "agent_id": { + "type": "string", + "x-order": 0 + }, + "common": { + "description": "ChangeCommonAgentParams contains parameters that can be changed for all Agents.", + "type": "object", + "properties": { + "custom_labels": { + "description": "Replace all custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 2 + }, + "disable": { + "description": "Disable this Agent. Can't be used with enabled.", + "type": "boolean", + "x-order": 1 + }, + "disable_push_metrics": { + "description": "Disables push metrics, pmm-server starts to pull it, can't be used with enable_push_metrics.", + "type": "boolean", + "x-order": 5 + }, + "enable": { + "description": "Enable this Agent. Can't be used with disabled.", + "type": "boolean", + "x-order": 0 + }, + "enable_push_metrics": { + "description": "Enables push metrics with vmagent, can't be used with disable_push_metrics.\nCan't be used with agent version lower then 2.12 and unsupported agents.", + "type": "boolean", + "x-order": 4 + }, + "remove_custom_labels": { + "description": "Remove all custom user-assigned labels.", + "type": "boolean", + "x-order": 3 + } + }, + "x-order": 1 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "mongodb_exporter": { + "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "disabled_collectors": { + "description": "List of disabled collector names.", + "type": "array", + "items": { + "type": "string" + }, + "x-order": 9 + }, + "listen_port": { + "description": "Listen port for scraping metrics.", + "type": "integer", + "format": "int64", + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -4757,6 +5139,76 @@ "schema": { "type": "object", "properties": { + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + } + }, + "x-order": 14 + }, "external_exporter": { "description": "ExternalExporter runs on any Node type, including Remote Node.", "type": "object", @@ -5780,7 +6232,8 @@ "QAN_POSTGRESQL_PGSTATEMENTS_AGENT", "QAN_POSTGRESQL_PGSTATMONITOR_AGENT", "RDS_EXPORTER", - "EXTERNAL_EXPORTER" + "EXTERNAL_EXPORTER", + "AZURE_DATABASE_EXPORTER" ], "x-order": 3 }, @@ -5809,10 +6262,10 @@ "schema": { "type": "object", "properties": { - "external_exporter": { + "azure_database_exporter": { "type": "array", "items": { - "description": "ExternalExporter runs on any Node type, including Remote Node.", + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", "type": "object", "properties": { "agent_id": { @@ -5820,13 +6273,86 @@ "type": "string", "x-order": 0 }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, "custom_labels": { "description": "Custom user-assigned labels.", "type": "object", "additionalProperties": { "type": "string" }, - "x-order": 7 + "x-order": 6 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + } + } + }, + "x-order": 14 + }, + "external_exporter": { + "type": "array", + "items": { + "description": "ExternalExporter runs on any Node type, including Remote Node.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 }, "disabled": { "description": "If disabled, metrics from this exporter will not be collected.", @@ -7411,6 +7937,154 @@ } } }, + "/v1/inventory/Nodes/AddRemoteAzureDatabase": { + "post": { + "tags": [ + "Nodes" + ], + "summary": "AddRemoteAzureDatabaseNode adds remote Azure database Node.", + "operationId": "AddRemoteAzureDatabaseNode", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 1 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 5 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 2 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 0 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 3 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + }, + "error": { + "type": "string", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 2 + } + } + } + } + } + } + }, "/v1/inventory/Nodes/AddRemoteRDS": { "post": { "tags": [ @@ -7749,6 +8423,51 @@ }, "x-order": 2 }, + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + } + }, + "x-order": 4 + }, "remote_rds": { "description": "RemoteRDSNode represents remote RDS Node. Agents can't run on Remote RDS Nodes.", "type": "object", @@ -7863,7 +8582,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 } @@ -8046,6 +8766,54 @@ }, "x-order": 2 }, + "remote_azure_database": { + "type": "array", + "items": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + } + } + }, + "x-order": 4 + }, "remote_rds": { "type": "array", "items": { diff --git a/api/inventorypb/nodes.go b/api/inventorypb/nodes.go index 43dc8a3e6c..695c6a964f 100644 --- a/api/inventorypb/nodes.go +++ b/api/inventorypb/nodes.go @@ -9,7 +9,8 @@ type Node interface { // in order of NodeType enum -func (*GenericNode) sealedNode() {} -func (*ContainerNode) sealedNode() {} -func (*RemoteNode) sealedNode() {} -func (*RemoteRDSNode) sealedNode() {} +func (*GenericNode) sealedNode() {} +func (*ContainerNode) sealedNode() {} +func (*RemoteNode) sealedNode() {} +func (*RemoteRDSNode) sealedNode() {} +func (*RemoteAzureDatabaseNode) sealedNode() {} diff --git a/api/inventorypb/nodes.pb.go b/api/inventorypb/nodes.pb.go index d7e6fe1f67..8d12e569e3 100644 --- a/api/inventorypb/nodes.pb.go +++ b/api/inventorypb/nodes.pb.go @@ -35,11 +35,12 @@ const _ = proto.ProtoPackageIsVersion4 type NodeType int32 const ( - NodeType_NODE_TYPE_INVALID NodeType = 0 - NodeType_GENERIC_NODE NodeType = 1 - NodeType_CONTAINER_NODE NodeType = 2 - NodeType_REMOTE_NODE NodeType = 3 - NodeType_REMOTE_RDS_NODE NodeType = 4 + NodeType_NODE_TYPE_INVALID NodeType = 0 + NodeType_GENERIC_NODE NodeType = 1 + NodeType_CONTAINER_NODE NodeType = 2 + NodeType_REMOTE_NODE NodeType = 3 + NodeType_REMOTE_RDS_NODE NodeType = 4 + NodeType_REMOTE_AZURE_DATABASE_NODE NodeType = 5 ) // Enum value maps for NodeType. @@ -50,13 +51,15 @@ var ( 2: "CONTAINER_NODE", 3: "REMOTE_NODE", 4: "REMOTE_RDS_NODE", + 5: "REMOTE_AZURE_DATABASE_NODE", } NodeType_value = map[string]int32{ - "NODE_TYPE_INVALID": 0, - "GENERIC_NODE": 1, - "CONTAINER_NODE": 2, - "REMOTE_NODE": 3, - "REMOTE_RDS_NODE": 4, + "NODE_TYPE_INVALID": 0, + "GENERIC_NODE": 1, + "CONTAINER_NODE": 2, + "REMOTE_NODE": 3, + "REMOTE_RDS_NODE": 4, + "REMOTE_AZURE_DATABASE_NODE": 5, } ) @@ -544,6 +547,109 @@ func (x *RemoteRDSNode) GetCustomLabels() map[string]string { return nil } +// RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes. +type RemoteAzureDatabaseNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unique randomly generated instance identifier. + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + // Unique across all Nodes user-defined name. + NodeName string `protobuf:"bytes,2,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` + // DB instance identifier. + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + // Node model. + NodeModel string `protobuf:"bytes,4,opt,name=node_model,json=nodeModel,proto3" json:"node_model,omitempty"` + // Node region. + Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` + // Node availability zone. + Az string `protobuf:"bytes,6,opt,name=az,proto3" json:"az,omitempty"` + // Custom user-assigned labels. + CustomLabels map[string]string `protobuf:"bytes,7,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *RemoteAzureDatabaseNode) Reset() { + *x = RemoteAzureDatabaseNode{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_nodes_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoteAzureDatabaseNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoteAzureDatabaseNode) ProtoMessage() {} + +func (x *RemoteAzureDatabaseNode) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_nodes_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoteAzureDatabaseNode.ProtoReflect.Descriptor instead. +func (*RemoteAzureDatabaseNode) Descriptor() ([]byte, []int) { + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{4} +} + +func (x *RemoteAzureDatabaseNode) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetNodeName() string { + if x != nil { + return x.NodeName + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetNodeModel() string { + if x != nil { + return x.NodeModel + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetAz() string { + if x != nil { + return x.Az + } + return "" +} + +func (x *RemoteAzureDatabaseNode) GetCustomLabels() map[string]string { + if x != nil { + return x.CustomLabels + } + return nil +} + type ListNodesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -557,7 +663,7 @@ type ListNodesRequest struct { func (x *ListNodesRequest) Reset() { *x = ListNodesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[4] + mi := &file_inventorypb_nodes_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -570,7 +676,7 @@ func (x *ListNodesRequest) String() string { func (*ListNodesRequest) ProtoMessage() {} func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[4] + mi := &file_inventorypb_nodes_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -583,7 +689,7 @@ func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. func (*ListNodesRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{4} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{5} } func (x *ListNodesRequest) GetNodeType() NodeType { @@ -598,16 +704,17 @@ type ListNodesResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Generic []*GenericNode `protobuf:"bytes,1,rep,name=generic,proto3" json:"generic,omitempty"` - Container []*ContainerNode `protobuf:"bytes,2,rep,name=container,proto3" json:"container,omitempty"` - Remote []*RemoteNode `protobuf:"bytes,3,rep,name=remote,proto3" json:"remote,omitempty"` - RemoteRds []*RemoteRDSNode `protobuf:"bytes,4,rep,name=remote_rds,json=remoteRds,proto3" json:"remote_rds,omitempty"` + Generic []*GenericNode `protobuf:"bytes,1,rep,name=generic,proto3" json:"generic,omitempty"` + Container []*ContainerNode `protobuf:"bytes,2,rep,name=container,proto3" json:"container,omitempty"` + Remote []*RemoteNode `protobuf:"bytes,3,rep,name=remote,proto3" json:"remote,omitempty"` + RemoteRds []*RemoteRDSNode `protobuf:"bytes,4,rep,name=remote_rds,json=remoteRds,proto3" json:"remote_rds,omitempty"` + RemoteAzureDatabase []*RemoteAzureDatabaseNode `protobuf:"bytes,5,rep,name=remote_azure_database,json=remoteAzureDatabase,proto3" json:"remote_azure_database,omitempty"` } func (x *ListNodesResponse) Reset() { *x = ListNodesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[5] + mi := &file_inventorypb_nodes_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -620,7 +727,7 @@ func (x *ListNodesResponse) String() string { func (*ListNodesResponse) ProtoMessage() {} func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[5] + mi := &file_inventorypb_nodes_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -633,7 +740,7 @@ func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. func (*ListNodesResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{5} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{6} } func (x *ListNodesResponse) GetGeneric() []*GenericNode { @@ -664,6 +771,13 @@ func (x *ListNodesResponse) GetRemoteRds() []*RemoteRDSNode { return nil } +func (x *ListNodesResponse) GetRemoteAzureDatabase() []*RemoteAzureDatabaseNode { + if x != nil { + return x.RemoteAzureDatabase + } + return nil +} + type GetNodeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -676,7 +790,7 @@ type GetNodeRequest struct { func (x *GetNodeRequest) Reset() { *x = GetNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[6] + mi := &file_inventorypb_nodes_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -689,7 +803,7 @@ func (x *GetNodeRequest) String() string { func (*GetNodeRequest) ProtoMessage() {} func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[6] + mi := &file_inventorypb_nodes_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -702,7 +816,7 @@ func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. func (*GetNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{6} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{7} } func (x *GetNodeRequest) GetNodeId() string { @@ -722,13 +836,14 @@ type GetNodeResponse struct { // *GetNodeResponse_Container // *GetNodeResponse_Remote // *GetNodeResponse_RemoteRds + // *GetNodeResponse_RemoteAzureDatabase Node isGetNodeResponse_Node `protobuf_oneof:"node"` } func (x *GetNodeResponse) Reset() { *x = GetNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[7] + mi := &file_inventorypb_nodes_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -741,7 +856,7 @@ func (x *GetNodeResponse) String() string { func (*GetNodeResponse) ProtoMessage() {} func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[7] + mi := &file_inventorypb_nodes_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -754,7 +869,7 @@ func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. func (*GetNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{7} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{8} } func (m *GetNodeResponse) GetNode() isGetNodeResponse_Node { @@ -792,6 +907,13 @@ func (x *GetNodeResponse) GetRemoteRds() *RemoteRDSNode { return nil } +func (x *GetNodeResponse) GetRemoteAzureDatabase() *RemoteAzureDatabaseNode { + if x, ok := x.GetNode().(*GetNodeResponse_RemoteAzureDatabase); ok { + return x.RemoteAzureDatabase + } + return nil +} + type isGetNodeResponse_Node interface { isGetNodeResponse_Node() } @@ -812,6 +934,10 @@ type GetNodeResponse_RemoteRds struct { RemoteRds *RemoteRDSNode `protobuf:"bytes,4,opt,name=remote_rds,json=remoteRds,proto3,oneof"` } +type GetNodeResponse_RemoteAzureDatabase struct { + RemoteAzureDatabase *RemoteAzureDatabaseNode `protobuf:"bytes,5,opt,name=remote_azure_database,json=remoteAzureDatabase,proto3,oneof"` +} + func (*GetNodeResponse_Generic) isGetNodeResponse_Node() {} func (*GetNodeResponse_Container) isGetNodeResponse_Node() {} @@ -820,6 +946,8 @@ func (*GetNodeResponse_Remote) isGetNodeResponse_Node() {} func (*GetNodeResponse_RemoteRds) isGetNodeResponse_Node() {} +func (*GetNodeResponse_RemoteAzureDatabase) isGetNodeResponse_Node() {} + type AddGenericNodeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -846,7 +974,7 @@ type AddGenericNodeRequest struct { func (x *AddGenericNodeRequest) Reset() { *x = AddGenericNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[8] + mi := &file_inventorypb_nodes_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -859,7 +987,7 @@ func (x *AddGenericNodeRequest) String() string { func (*AddGenericNodeRequest) ProtoMessage() {} func (x *AddGenericNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[8] + mi := &file_inventorypb_nodes_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -872,7 +1000,7 @@ func (x *AddGenericNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGenericNodeRequest.ProtoReflect.Descriptor instead. func (*AddGenericNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{8} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{9} } func (x *AddGenericNodeRequest) GetNodeName() string { @@ -942,7 +1070,7 @@ type AddGenericNodeResponse struct { func (x *AddGenericNodeResponse) Reset() { *x = AddGenericNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[9] + mi := &file_inventorypb_nodes_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -955,7 +1083,7 @@ func (x *AddGenericNodeResponse) String() string { func (*AddGenericNodeResponse) ProtoMessage() {} func (x *AddGenericNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[9] + mi := &file_inventorypb_nodes_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -968,7 +1096,7 @@ func (x *AddGenericNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGenericNodeResponse.ProtoReflect.Descriptor instead. func (*AddGenericNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{9} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{10} } func (x *AddGenericNodeResponse) GetGeneric() *GenericNode { @@ -1006,7 +1134,7 @@ type AddContainerNodeRequest struct { func (x *AddContainerNodeRequest) Reset() { *x = AddContainerNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[10] + mi := &file_inventorypb_nodes_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1019,7 +1147,7 @@ func (x *AddContainerNodeRequest) String() string { func (*AddContainerNodeRequest) ProtoMessage() {} func (x *AddContainerNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[10] + mi := &file_inventorypb_nodes_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1032,7 +1160,7 @@ func (x *AddContainerNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddContainerNodeRequest.ProtoReflect.Descriptor instead. func (*AddContainerNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{10} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{11} } func (x *AddContainerNodeRequest) GetNodeName() string { @@ -1109,7 +1237,7 @@ type AddContainerNodeResponse struct { func (x *AddContainerNodeResponse) Reset() { *x = AddContainerNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[11] + mi := &file_inventorypb_nodes_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1122,7 +1250,7 @@ func (x *AddContainerNodeResponse) String() string { func (*AddContainerNodeResponse) ProtoMessage() {} func (x *AddContainerNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[11] + mi := &file_inventorypb_nodes_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1135,7 +1263,7 @@ func (x *AddContainerNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddContainerNodeResponse.ProtoReflect.Descriptor instead. func (*AddContainerNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{11} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{12} } func (x *AddContainerNodeResponse) GetContainer() *ContainerNode { @@ -1167,7 +1295,7 @@ type AddRemoteNodeRequest struct { func (x *AddRemoteNodeRequest) Reset() { *x = AddRemoteNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[12] + mi := &file_inventorypb_nodes_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1180,7 +1308,7 @@ func (x *AddRemoteNodeRequest) String() string { func (*AddRemoteNodeRequest) ProtoMessage() {} func (x *AddRemoteNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[12] + mi := &file_inventorypb_nodes_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1193,7 +1321,7 @@ func (x *AddRemoteNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRemoteNodeRequest.ProtoReflect.Descriptor instead. func (*AddRemoteNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{12} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{13} } func (x *AddRemoteNodeRequest) GetNodeName() string { @@ -1249,7 +1377,7 @@ type AddRemoteNodeResponse struct { func (x *AddRemoteNodeResponse) Reset() { *x = AddRemoteNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[13] + mi := &file_inventorypb_nodes_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1262,7 +1390,7 @@ func (x *AddRemoteNodeResponse) String() string { func (*AddRemoteNodeResponse) ProtoMessage() {} func (x *AddRemoteNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[13] + mi := &file_inventorypb_nodes_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1275,7 +1403,7 @@ func (x *AddRemoteNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRemoteNodeResponse.ProtoReflect.Descriptor instead. func (*AddRemoteNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{13} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{14} } func (x *AddRemoteNodeResponse) GetRemote() *RemoteNode { @@ -1307,7 +1435,7 @@ type AddRemoteRDSNodeRequest struct { func (x *AddRemoteRDSNodeRequest) Reset() { *x = AddRemoteRDSNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[14] + mi := &file_inventorypb_nodes_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1320,7 +1448,7 @@ func (x *AddRemoteRDSNodeRequest) String() string { func (*AddRemoteRDSNodeRequest) ProtoMessage() {} func (x *AddRemoteRDSNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[14] + mi := &file_inventorypb_nodes_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1333,7 +1461,7 @@ func (x *AddRemoteRDSNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRemoteRDSNodeRequest.ProtoReflect.Descriptor instead. func (*AddRemoteRDSNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{14} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{15} } func (x *AddRemoteRDSNodeRequest) GetNodeName() string { @@ -1389,7 +1517,7 @@ type AddRemoteRDSNodeResponse struct { func (x *AddRemoteRDSNodeResponse) Reset() { *x = AddRemoteRDSNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[15] + mi := &file_inventorypb_nodes_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1402,7 +1530,7 @@ func (x *AddRemoteRDSNodeResponse) String() string { func (*AddRemoteRDSNodeResponse) ProtoMessage() {} func (x *AddRemoteRDSNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[15] + mi := &file_inventorypb_nodes_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1415,7 +1543,7 @@ func (x *AddRemoteRDSNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRemoteRDSNodeResponse.ProtoReflect.Descriptor instead. func (*AddRemoteRDSNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{15} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{16} } func (x *AddRemoteRDSNodeResponse) GetRemoteRds() *RemoteRDSNode { @@ -1425,6 +1553,146 @@ func (x *AddRemoteRDSNodeResponse) GetRemoteRds() *RemoteRDSNode { return nil } +type AddRemoteAzureDatabaseNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unique across all Nodes user-defined name. + NodeName string `protobuf:"bytes,1,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` + // DB instance identifier. + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Node model. + NodeModel string `protobuf:"bytes,3,opt,name=node_model,json=nodeModel,proto3" json:"node_model,omitempty"` + // Node region. + Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` + // Node availability zone. + Az string `protobuf:"bytes,5,opt,name=az,proto3" json:"az,omitempty"` + // Custom user-assigned labels. + CustomLabels map[string]string `protobuf:"bytes,6,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *AddRemoteAzureDatabaseNodeRequest) Reset() { + *x = AddRemoteAzureDatabaseNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_nodes_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddRemoteAzureDatabaseNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddRemoteAzureDatabaseNodeRequest) ProtoMessage() {} + +func (x *AddRemoteAzureDatabaseNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_nodes_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddRemoteAzureDatabaseNodeRequest.ProtoReflect.Descriptor instead. +func (*AddRemoteAzureDatabaseNodeRequest) Descriptor() ([]byte, []int) { + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{17} +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetNodeName() string { + if x != nil { + return x.NodeName + } + return "" +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetNodeModel() string { + if x != nil { + return x.NodeModel + } + return "" +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetAz() string { + if x != nil { + return x.Az + } + return "" +} + +func (x *AddRemoteAzureDatabaseNodeRequest) GetCustomLabels() map[string]string { + if x != nil { + return x.CustomLabels + } + return nil +} + +type AddRemoteAzureDatabaseNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RemoteAzureDatabase *RemoteAzureDatabaseNode `protobuf:"bytes,1,opt,name=remote_azure_database,json=remoteAzureDatabase,proto3" json:"remote_azure_database,omitempty"` +} + +func (x *AddRemoteAzureDatabaseNodeResponse) Reset() { + *x = AddRemoteAzureDatabaseNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_nodes_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddRemoteAzureDatabaseNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddRemoteAzureDatabaseNodeResponse) ProtoMessage() {} + +func (x *AddRemoteAzureDatabaseNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_nodes_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddRemoteAzureDatabaseNodeResponse.ProtoReflect.Descriptor instead. +func (*AddRemoteAzureDatabaseNodeResponse) Descriptor() ([]byte, []int) { + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{18} +} + +func (x *AddRemoteAzureDatabaseNodeResponse) GetRemoteAzureDatabase() *RemoteAzureDatabaseNode { + if x != nil { + return x.RemoteAzureDatabase + } + return nil +} + type RemoveNodeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1439,7 +1707,7 @@ type RemoveNodeRequest struct { func (x *RemoveNodeRequest) Reset() { *x = RemoveNodeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[16] + mi := &file_inventorypb_nodes_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1452,7 +1720,7 @@ func (x *RemoveNodeRequest) String() string { func (*RemoveNodeRequest) ProtoMessage() {} func (x *RemoveNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[16] + mi := &file_inventorypb_nodes_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1465,7 +1733,7 @@ func (x *RemoveNodeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveNodeRequest.ProtoReflect.Descriptor instead. func (*RemoveNodeRequest) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{16} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{19} } func (x *RemoveNodeRequest) GetNodeId() string { @@ -1491,7 +1759,7 @@ type RemoveNodeResponse struct { func (x *RemoveNodeResponse) Reset() { *x = RemoveNodeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_inventorypb_nodes_proto_msgTypes[17] + mi := &file_inventorypb_nodes_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1504,7 +1772,7 @@ func (x *RemoveNodeResponse) String() string { func (*RemoveNodeResponse) ProtoMessage() {} func (x *RemoveNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventorypb_nodes_proto_msgTypes[17] + mi := &file_inventorypb_nodes_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1517,7 +1785,7 @@ func (x *RemoveNodeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveNodeResponse.ProtoReflect.Descriptor instead. func (*RemoveNodeResponse) Descriptor() ([]byte, []int) { - return file_inventorypb_nodes_proto_rawDescGZIP(), []int{17} + return file_inventorypb_nodes_proto_rawDescGZIP(), []int{20} } var File_inventorypb_nodes_proto protoreflect.FileDescriptor @@ -1618,226 +1886,301 @@ var file_inventorypb_nodes_proto_rawDesc = []byte{ 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x44, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x30, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcc, 0x02, 0x0a, + 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, + 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x7a, 0x12, + 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x44, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x30, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xbd, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x64, 0x73, 0x12, 0x56, 0x0a, 0x15, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x13, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x22, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x22, 0xcd, 0x02, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0xf3, 0x01, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, - 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, - 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, - 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x64, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, - 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x61, 0x7a, 0x12, 0x57, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x09, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, + 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, + 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, + 0x64, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x42, 0x06, 0x0a, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, + 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x73, 0x74, 0x72, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x61, 0x7a, 0x12, 0x57, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, + 0x16, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x22, 0xac, 0x03, 0x0a, 0x17, 0x41, 0x64, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, + 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x61, 0x7a, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x7a, 0x12, 0x59, 0x0a, 0x0d, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0xbd, 0x02, 0x0a, + 0x14, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x61, 0x7a, 0x12, 0x56, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x16, - 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x22, 0xac, 0x03, 0x0a, 0x17, 0x41, 0x64, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, - 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, - 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, - 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, - 0x7a, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x7a, 0x12, 0x59, 0x0a, 0x0d, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, - 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x22, 0xbd, 0x02, 0x0a, 0x14, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, - 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, - 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x61, 0x7a, 0x12, 0x56, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x15, 0x41, - 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x61, 0x7a, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x15, + 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x53, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, - 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, - 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x52, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, - 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, - 0x63, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x6d, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x47, - 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, - 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, - 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x52, 0x44, 0x53, - 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x32, 0xe3, 0x06, 0x0a, 0x05, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x12, 0x6b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x64, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x47, 0x65, - 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, 0x76, 0x65, + 0x12, 0x23, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x6e, 0x6f, 0x64, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x61, 0x7a, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x53, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, + 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, + 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x64, 0x73, 0x22, 0xdf, 0x02, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, + 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x61, 0x7a, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7c, 0x0a, 0x22, 0x41, 0x64, 0x64, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x56, 0x0a, 0x15, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x13, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x07, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x8d, 0x01, 0x0a, 0x08, 0x4e, 0x6f, + 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, + 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, + 0x45, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4e, 0x4f, + 0x44, 0x45, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x52, + 0x44, 0x53, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, + 0x53, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x32, 0x96, 0x08, 0x0a, 0x05, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, + 0x12, 0x64, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, + 0x47, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x3a, 0x01, 0x2a, 0x12, 0x88, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, - 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x3a, - 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3a, 0x01, 0x2a, - 0x12, 0x88, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, - 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, - 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x3a, 0x01, 0x2a, 0x12, 0x70, 0x0a, 0x0a, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x2f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0x1d, 0x5a, - 0x1b, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, - 0x3b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, + 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x3a, 0x01, 0x2a, 0x12, 0x88, 0x01, 0x0a, 0x10, 0x41, 0x64, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, + 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, + 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x7c, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x3a, + 0x01, 0x2a, 0x12, 0x88, 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, + 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x3a, 0x01, 0x2a, 0x12, 0xb0, 0x01, + 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x41, 0x64, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x70, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x3a, + 0x01, 0x2a, 0x42, 0x1d, 0x5a, 0x1b, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1853,77 +2196,89 @@ func file_inventorypb_nodes_proto_rawDescGZIP() []byte { } var file_inventorypb_nodes_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_inventorypb_nodes_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_inventorypb_nodes_proto_msgTypes = make([]protoimpl.MessageInfo, 31) var file_inventorypb_nodes_proto_goTypes = []interface{}{ - (NodeType)(0), // 0: inventory.NodeType - (*GenericNode)(nil), // 1: inventory.GenericNode - (*ContainerNode)(nil), // 2: inventory.ContainerNode - (*RemoteNode)(nil), // 3: inventory.RemoteNode - (*RemoteRDSNode)(nil), // 4: inventory.RemoteRDSNode - (*ListNodesRequest)(nil), // 5: inventory.ListNodesRequest - (*ListNodesResponse)(nil), // 6: inventory.ListNodesResponse - (*GetNodeRequest)(nil), // 7: inventory.GetNodeRequest - (*GetNodeResponse)(nil), // 8: inventory.GetNodeResponse - (*AddGenericNodeRequest)(nil), // 9: inventory.AddGenericNodeRequest - (*AddGenericNodeResponse)(nil), // 10: inventory.AddGenericNodeResponse - (*AddContainerNodeRequest)(nil), // 11: inventory.AddContainerNodeRequest - (*AddContainerNodeResponse)(nil), // 12: inventory.AddContainerNodeResponse - (*AddRemoteNodeRequest)(nil), // 13: inventory.AddRemoteNodeRequest - (*AddRemoteNodeResponse)(nil), // 14: inventory.AddRemoteNodeResponse - (*AddRemoteRDSNodeRequest)(nil), // 15: inventory.AddRemoteRDSNodeRequest - (*AddRemoteRDSNodeResponse)(nil), // 16: inventory.AddRemoteRDSNodeResponse - (*RemoveNodeRequest)(nil), // 17: inventory.RemoveNodeRequest - (*RemoveNodeResponse)(nil), // 18: inventory.RemoveNodeResponse - nil, // 19: inventory.GenericNode.CustomLabelsEntry - nil, // 20: inventory.ContainerNode.CustomLabelsEntry - nil, // 21: inventory.RemoteNode.CustomLabelsEntry - nil, // 22: inventory.RemoteRDSNode.CustomLabelsEntry - nil, // 23: inventory.AddGenericNodeRequest.CustomLabelsEntry - nil, // 24: inventory.AddContainerNodeRequest.CustomLabelsEntry - nil, // 25: inventory.AddRemoteNodeRequest.CustomLabelsEntry - nil, // 26: inventory.AddRemoteRDSNodeRequest.CustomLabelsEntry + (NodeType)(0), // 0: inventory.NodeType + (*GenericNode)(nil), // 1: inventory.GenericNode + (*ContainerNode)(nil), // 2: inventory.ContainerNode + (*RemoteNode)(nil), // 3: inventory.RemoteNode + (*RemoteRDSNode)(nil), // 4: inventory.RemoteRDSNode + (*RemoteAzureDatabaseNode)(nil), // 5: inventory.RemoteAzureDatabaseNode + (*ListNodesRequest)(nil), // 6: inventory.ListNodesRequest + (*ListNodesResponse)(nil), // 7: inventory.ListNodesResponse + (*GetNodeRequest)(nil), // 8: inventory.GetNodeRequest + (*GetNodeResponse)(nil), // 9: inventory.GetNodeResponse + (*AddGenericNodeRequest)(nil), // 10: inventory.AddGenericNodeRequest + (*AddGenericNodeResponse)(nil), // 11: inventory.AddGenericNodeResponse + (*AddContainerNodeRequest)(nil), // 12: inventory.AddContainerNodeRequest + (*AddContainerNodeResponse)(nil), // 13: inventory.AddContainerNodeResponse + (*AddRemoteNodeRequest)(nil), // 14: inventory.AddRemoteNodeRequest + (*AddRemoteNodeResponse)(nil), // 15: inventory.AddRemoteNodeResponse + (*AddRemoteRDSNodeRequest)(nil), // 16: inventory.AddRemoteRDSNodeRequest + (*AddRemoteRDSNodeResponse)(nil), // 17: inventory.AddRemoteRDSNodeResponse + (*AddRemoteAzureDatabaseNodeRequest)(nil), // 18: inventory.AddRemoteAzureDatabaseNodeRequest + (*AddRemoteAzureDatabaseNodeResponse)(nil), // 19: inventory.AddRemoteAzureDatabaseNodeResponse + (*RemoveNodeRequest)(nil), // 20: inventory.RemoveNodeRequest + (*RemoveNodeResponse)(nil), // 21: inventory.RemoveNodeResponse + nil, // 22: inventory.GenericNode.CustomLabelsEntry + nil, // 23: inventory.ContainerNode.CustomLabelsEntry + nil, // 24: inventory.RemoteNode.CustomLabelsEntry + nil, // 25: inventory.RemoteRDSNode.CustomLabelsEntry + nil, // 26: inventory.RemoteAzureDatabaseNode.CustomLabelsEntry + nil, // 27: inventory.AddGenericNodeRequest.CustomLabelsEntry + nil, // 28: inventory.AddContainerNodeRequest.CustomLabelsEntry + nil, // 29: inventory.AddRemoteNodeRequest.CustomLabelsEntry + nil, // 30: inventory.AddRemoteRDSNodeRequest.CustomLabelsEntry + nil, // 31: inventory.AddRemoteAzureDatabaseNodeRequest.CustomLabelsEntry } var file_inventorypb_nodes_proto_depIdxs = []int32{ - 19, // 0: inventory.GenericNode.custom_labels:type_name -> inventory.GenericNode.CustomLabelsEntry - 20, // 1: inventory.ContainerNode.custom_labels:type_name -> inventory.ContainerNode.CustomLabelsEntry - 21, // 2: inventory.RemoteNode.custom_labels:type_name -> inventory.RemoteNode.CustomLabelsEntry - 22, // 3: inventory.RemoteRDSNode.custom_labels:type_name -> inventory.RemoteRDSNode.CustomLabelsEntry - 0, // 4: inventory.ListNodesRequest.node_type:type_name -> inventory.NodeType - 1, // 5: inventory.ListNodesResponse.generic:type_name -> inventory.GenericNode - 2, // 6: inventory.ListNodesResponse.container:type_name -> inventory.ContainerNode - 3, // 7: inventory.ListNodesResponse.remote:type_name -> inventory.RemoteNode - 4, // 8: inventory.ListNodesResponse.remote_rds:type_name -> inventory.RemoteRDSNode - 1, // 9: inventory.GetNodeResponse.generic:type_name -> inventory.GenericNode - 2, // 10: inventory.GetNodeResponse.container:type_name -> inventory.ContainerNode - 3, // 11: inventory.GetNodeResponse.remote:type_name -> inventory.RemoteNode - 4, // 12: inventory.GetNodeResponse.remote_rds:type_name -> inventory.RemoteRDSNode - 23, // 13: inventory.AddGenericNodeRequest.custom_labels:type_name -> inventory.AddGenericNodeRequest.CustomLabelsEntry - 1, // 14: inventory.AddGenericNodeResponse.generic:type_name -> inventory.GenericNode - 24, // 15: inventory.AddContainerNodeRequest.custom_labels:type_name -> inventory.AddContainerNodeRequest.CustomLabelsEntry - 2, // 16: inventory.AddContainerNodeResponse.container:type_name -> inventory.ContainerNode - 25, // 17: inventory.AddRemoteNodeRequest.custom_labels:type_name -> inventory.AddRemoteNodeRequest.CustomLabelsEntry - 3, // 18: inventory.AddRemoteNodeResponse.remote:type_name -> inventory.RemoteNode - 26, // 19: inventory.AddRemoteRDSNodeRequest.custom_labels:type_name -> inventory.AddRemoteRDSNodeRequest.CustomLabelsEntry - 4, // 20: inventory.AddRemoteRDSNodeResponse.remote_rds:type_name -> inventory.RemoteRDSNode - 5, // 21: inventory.Nodes.ListNodes:input_type -> inventory.ListNodesRequest - 7, // 22: inventory.Nodes.GetNode:input_type -> inventory.GetNodeRequest - 9, // 23: inventory.Nodes.AddGenericNode:input_type -> inventory.AddGenericNodeRequest - 11, // 24: inventory.Nodes.AddContainerNode:input_type -> inventory.AddContainerNodeRequest - 13, // 25: inventory.Nodes.AddRemoteNode:input_type -> inventory.AddRemoteNodeRequest - 15, // 26: inventory.Nodes.AddRemoteRDSNode:input_type -> inventory.AddRemoteRDSNodeRequest - 17, // 27: inventory.Nodes.RemoveNode:input_type -> inventory.RemoveNodeRequest - 6, // 28: inventory.Nodes.ListNodes:output_type -> inventory.ListNodesResponse - 8, // 29: inventory.Nodes.GetNode:output_type -> inventory.GetNodeResponse - 10, // 30: inventory.Nodes.AddGenericNode:output_type -> inventory.AddGenericNodeResponse - 12, // 31: inventory.Nodes.AddContainerNode:output_type -> inventory.AddContainerNodeResponse - 14, // 32: inventory.Nodes.AddRemoteNode:output_type -> inventory.AddRemoteNodeResponse - 16, // 33: inventory.Nodes.AddRemoteRDSNode:output_type -> inventory.AddRemoteRDSNodeResponse - 18, // 34: inventory.Nodes.RemoveNode:output_type -> inventory.RemoveNodeResponse - 28, // [28:35] is the sub-list for method output_type - 21, // [21:28] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 22, // 0: inventory.GenericNode.custom_labels:type_name -> inventory.GenericNode.CustomLabelsEntry + 23, // 1: inventory.ContainerNode.custom_labels:type_name -> inventory.ContainerNode.CustomLabelsEntry + 24, // 2: inventory.RemoteNode.custom_labels:type_name -> inventory.RemoteNode.CustomLabelsEntry + 25, // 3: inventory.RemoteRDSNode.custom_labels:type_name -> inventory.RemoteRDSNode.CustomLabelsEntry + 26, // 4: inventory.RemoteAzureDatabaseNode.custom_labels:type_name -> inventory.RemoteAzureDatabaseNode.CustomLabelsEntry + 0, // 5: inventory.ListNodesRequest.node_type:type_name -> inventory.NodeType + 1, // 6: inventory.ListNodesResponse.generic:type_name -> inventory.GenericNode + 2, // 7: inventory.ListNodesResponse.container:type_name -> inventory.ContainerNode + 3, // 8: inventory.ListNodesResponse.remote:type_name -> inventory.RemoteNode + 4, // 9: inventory.ListNodesResponse.remote_rds:type_name -> inventory.RemoteRDSNode + 5, // 10: inventory.ListNodesResponse.remote_azure_database:type_name -> inventory.RemoteAzureDatabaseNode + 1, // 11: inventory.GetNodeResponse.generic:type_name -> inventory.GenericNode + 2, // 12: inventory.GetNodeResponse.container:type_name -> inventory.ContainerNode + 3, // 13: inventory.GetNodeResponse.remote:type_name -> inventory.RemoteNode + 4, // 14: inventory.GetNodeResponse.remote_rds:type_name -> inventory.RemoteRDSNode + 5, // 15: inventory.GetNodeResponse.remote_azure_database:type_name -> inventory.RemoteAzureDatabaseNode + 27, // 16: inventory.AddGenericNodeRequest.custom_labels:type_name -> inventory.AddGenericNodeRequest.CustomLabelsEntry + 1, // 17: inventory.AddGenericNodeResponse.generic:type_name -> inventory.GenericNode + 28, // 18: inventory.AddContainerNodeRequest.custom_labels:type_name -> inventory.AddContainerNodeRequest.CustomLabelsEntry + 2, // 19: inventory.AddContainerNodeResponse.container:type_name -> inventory.ContainerNode + 29, // 20: inventory.AddRemoteNodeRequest.custom_labels:type_name -> inventory.AddRemoteNodeRequest.CustomLabelsEntry + 3, // 21: inventory.AddRemoteNodeResponse.remote:type_name -> inventory.RemoteNode + 30, // 22: inventory.AddRemoteRDSNodeRequest.custom_labels:type_name -> inventory.AddRemoteRDSNodeRequest.CustomLabelsEntry + 4, // 23: inventory.AddRemoteRDSNodeResponse.remote_rds:type_name -> inventory.RemoteRDSNode + 31, // 24: inventory.AddRemoteAzureDatabaseNodeRequest.custom_labels:type_name -> inventory.AddRemoteAzureDatabaseNodeRequest.CustomLabelsEntry + 5, // 25: inventory.AddRemoteAzureDatabaseNodeResponse.remote_azure_database:type_name -> inventory.RemoteAzureDatabaseNode + 6, // 26: inventory.Nodes.ListNodes:input_type -> inventory.ListNodesRequest + 8, // 27: inventory.Nodes.GetNode:input_type -> inventory.GetNodeRequest + 10, // 28: inventory.Nodes.AddGenericNode:input_type -> inventory.AddGenericNodeRequest + 12, // 29: inventory.Nodes.AddContainerNode:input_type -> inventory.AddContainerNodeRequest + 14, // 30: inventory.Nodes.AddRemoteNode:input_type -> inventory.AddRemoteNodeRequest + 16, // 31: inventory.Nodes.AddRemoteRDSNode:input_type -> inventory.AddRemoteRDSNodeRequest + 18, // 32: inventory.Nodes.AddRemoteAzureDatabaseNode:input_type -> inventory.AddRemoteAzureDatabaseNodeRequest + 20, // 33: inventory.Nodes.RemoveNode:input_type -> inventory.RemoveNodeRequest + 7, // 34: inventory.Nodes.ListNodes:output_type -> inventory.ListNodesResponse + 9, // 35: inventory.Nodes.GetNode:output_type -> inventory.GetNodeResponse + 11, // 36: inventory.Nodes.AddGenericNode:output_type -> inventory.AddGenericNodeResponse + 13, // 37: inventory.Nodes.AddContainerNode:output_type -> inventory.AddContainerNodeResponse + 15, // 38: inventory.Nodes.AddRemoteNode:output_type -> inventory.AddRemoteNodeResponse + 17, // 39: inventory.Nodes.AddRemoteRDSNode:output_type -> inventory.AddRemoteRDSNodeResponse + 19, // 40: inventory.Nodes.AddRemoteAzureDatabaseNode:output_type -> inventory.AddRemoteAzureDatabaseNodeResponse + 21, // 41: inventory.Nodes.RemoveNode:output_type -> inventory.RemoveNodeResponse + 34, // [34:42] is the sub-list for method output_type + 26, // [26:34] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_inventorypb_nodes_proto_init() } @@ -1981,7 +2336,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodesRequest); i { + switch v := v.(*RemoteAzureDatabaseNode); i { case 0: return &v.state case 1: @@ -1993,7 +2348,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodesResponse); i { + switch v := v.(*ListNodesRequest); i { case 0: return &v.state case 1: @@ -2005,7 +2360,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodeRequest); i { + switch v := v.(*ListNodesResponse); i { case 0: return &v.state case 1: @@ -2017,7 +2372,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodeResponse); i { + switch v := v.(*GetNodeRequest); i { case 0: return &v.state case 1: @@ -2029,7 +2384,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGenericNodeRequest); i { + switch v := v.(*GetNodeResponse); i { case 0: return &v.state case 1: @@ -2041,7 +2396,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddGenericNodeResponse); i { + switch v := v.(*AddGenericNodeRequest); i { case 0: return &v.state case 1: @@ -2053,7 +2408,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddContainerNodeRequest); i { + switch v := v.(*AddGenericNodeResponse); i { case 0: return &v.state case 1: @@ -2065,7 +2420,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddContainerNodeResponse); i { + switch v := v.(*AddContainerNodeRequest); i { case 0: return &v.state case 1: @@ -2077,7 +2432,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRemoteNodeRequest); i { + switch v := v.(*AddContainerNodeResponse); i { case 0: return &v.state case 1: @@ -2089,7 +2444,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRemoteNodeResponse); i { + switch v := v.(*AddRemoteNodeRequest); i { case 0: return &v.state case 1: @@ -2101,7 +2456,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRemoteRDSNodeRequest); i { + switch v := v.(*AddRemoteNodeResponse); i { case 0: return &v.state case 1: @@ -2113,7 +2468,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRemoteRDSNodeResponse); i { + switch v := v.(*AddRemoteRDSNodeRequest); i { case 0: return &v.state case 1: @@ -2125,7 +2480,7 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveNodeRequest); i { + switch v := v.(*AddRemoteRDSNodeResponse); i { case 0: return &v.state case 1: @@ -2137,6 +2492,42 @@ func file_inventorypb_nodes_proto_init() { } } file_inventorypb_nodes_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddRemoteAzureDatabaseNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_nodes_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddRemoteAzureDatabaseNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_nodes_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_nodes_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveNodeResponse); i { case 0: return &v.state @@ -2149,11 +2540,12 @@ func file_inventorypb_nodes_proto_init() { } } } - file_inventorypb_nodes_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_inventorypb_nodes_proto_msgTypes[8].OneofWrappers = []interface{}{ (*GetNodeResponse_Generic)(nil), (*GetNodeResponse_Container)(nil), (*GetNodeResponse_Remote)(nil), (*GetNodeResponse_RemoteRds)(nil), + (*GetNodeResponse_RemoteAzureDatabase)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -2161,7 +2553,7 @@ func file_inventorypb_nodes_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_inventorypb_nodes_proto_rawDesc, NumEnums: 1, - NumMessages: 26, + NumMessages: 31, NumExtensions: 0, NumServices: 1, }, @@ -2200,6 +2592,8 @@ type NodesClient interface { AddRemoteNode(ctx context.Context, in *AddRemoteNodeRequest, opts ...grpc.CallOption) (*AddRemoteNodeResponse, error) // AddRemoteRDSNode adds remote RDS Node. AddRemoteRDSNode(ctx context.Context, in *AddRemoteRDSNodeRequest, opts ...grpc.CallOption) (*AddRemoteRDSNodeResponse, error) + // AddRemoteAzureDatabaseNode adds remote Azure database Node. + AddRemoteAzureDatabaseNode(ctx context.Context, in *AddRemoteAzureDatabaseNodeRequest, opts ...grpc.CallOption) (*AddRemoteAzureDatabaseNodeResponse, error) // RemoveNode removes Node. RemoveNode(ctx context.Context, in *RemoveNodeRequest, opts ...grpc.CallOption) (*RemoveNodeResponse, error) } @@ -2266,6 +2660,15 @@ func (c *nodesClient) AddRemoteRDSNode(ctx context.Context, in *AddRemoteRDSNode return out, nil } +func (c *nodesClient) AddRemoteAzureDatabaseNode(ctx context.Context, in *AddRemoteAzureDatabaseNodeRequest, opts ...grpc.CallOption) (*AddRemoteAzureDatabaseNodeResponse, error) { + out := new(AddRemoteAzureDatabaseNodeResponse) + err := c.cc.Invoke(ctx, "/inventory.Nodes/AddRemoteAzureDatabaseNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *nodesClient) RemoveNode(ctx context.Context, in *RemoveNodeRequest, opts ...grpc.CallOption) (*RemoveNodeResponse, error) { out := new(RemoveNodeResponse) err := c.cc.Invoke(ctx, "/inventory.Nodes/RemoveNode", in, out, opts...) @@ -2289,6 +2692,8 @@ type NodesServer interface { AddRemoteNode(context.Context, *AddRemoteNodeRequest) (*AddRemoteNodeResponse, error) // AddRemoteRDSNode adds remote RDS Node. AddRemoteRDSNode(context.Context, *AddRemoteRDSNodeRequest) (*AddRemoteRDSNodeResponse, error) + // AddRemoteAzureDatabaseNode adds remote Azure database Node. + AddRemoteAzureDatabaseNode(context.Context, *AddRemoteAzureDatabaseNodeRequest) (*AddRemoteAzureDatabaseNodeResponse, error) // RemoveNode removes Node. RemoveNode(context.Context, *RemoveNodeRequest) (*RemoveNodeResponse, error) } @@ -2315,6 +2720,9 @@ func (*UnimplementedNodesServer) AddRemoteNode(context.Context, *AddRemoteNodeRe func (*UnimplementedNodesServer) AddRemoteRDSNode(context.Context, *AddRemoteRDSNodeRequest) (*AddRemoteRDSNodeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddRemoteRDSNode not implemented") } +func (*UnimplementedNodesServer) AddRemoteAzureDatabaseNode(context.Context, *AddRemoteAzureDatabaseNodeRequest) (*AddRemoteAzureDatabaseNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddRemoteAzureDatabaseNode not implemented") +} func (*UnimplementedNodesServer) RemoveNode(context.Context, *RemoveNodeRequest) (*RemoveNodeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveNode not implemented") } @@ -2431,6 +2839,24 @@ func _Nodes_AddRemoteRDSNode_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Nodes_AddRemoteAzureDatabaseNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddRemoteAzureDatabaseNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodesServer).AddRemoteAzureDatabaseNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Nodes/AddRemoteAzureDatabaseNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodesServer).AddRemoteAzureDatabaseNode(ctx, req.(*AddRemoteAzureDatabaseNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Nodes_RemoveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RemoveNodeRequest) if err := dec(in); err != nil { @@ -2477,6 +2903,10 @@ var _Nodes_serviceDesc = grpc.ServiceDesc{ MethodName: "AddRemoteRDSNode", Handler: _Nodes_AddRemoteRDSNode_Handler, }, + { + MethodName: "AddRemoteAzureDatabaseNode", + Handler: _Nodes_AddRemoteAzureDatabaseNode_Handler, + }, { MethodName: "RemoveNode", Handler: _Nodes_RemoveNode_Handler, diff --git a/api/inventorypb/nodes.pb.gw.go b/api/inventorypb/nodes.pb.gw.go index 5520196a25..afb95af634 100644 --- a/api/inventorypb/nodes.pb.gw.go +++ b/api/inventorypb/nodes.pb.gw.go @@ -237,6 +237,40 @@ func local_request_Nodes_AddRemoteRDSNode_0(ctx context.Context, marshaler runti } +func request_Nodes_AddRemoteAzureDatabaseNode_0(ctx context.Context, marshaler runtime.Marshaler, client NodesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddRemoteAzureDatabaseNodeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AddRemoteAzureDatabaseNode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Nodes_AddRemoteAzureDatabaseNode_0(ctx context.Context, marshaler runtime.Marshaler, server NodesServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddRemoteAzureDatabaseNodeRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AddRemoteAzureDatabaseNode(ctx, &protoReq) + return msg, metadata, err + +} + func request_Nodes_RemoveNode_0(ctx context.Context, marshaler runtime.Marshaler, client NodesClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq RemoveNodeRequest var metadata runtime.ServerMetadata @@ -415,6 +449,29 @@ func RegisterNodesHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("POST", pattern_Nodes_AddRemoteAzureDatabaseNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Nodes_AddRemoteAzureDatabaseNode_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Nodes_AddRemoteAzureDatabaseNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Nodes_RemoveNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -599,6 +656,26 @@ func RegisterNodesHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("POST", pattern_Nodes_AddRemoteAzureDatabaseNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Nodes_AddRemoteAzureDatabaseNode_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Nodes_AddRemoteAzureDatabaseNode_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_Nodes_RemoveNode_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -635,6 +712,8 @@ var ( pattern_Nodes_AddRemoteRDSNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Nodes", "AddRemoteRDS"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Nodes_AddRemoteAzureDatabaseNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Nodes", "AddRemoteAzureDatabase"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Nodes_RemoveNode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Nodes", "Remove"}, "", runtime.AssumeColonVerbOpt(true))) ) @@ -651,5 +730,7 @@ var ( forward_Nodes_AddRemoteRDSNode_0 = runtime.ForwardResponseMessage + forward_Nodes_AddRemoteAzureDatabaseNode_0 = runtime.ForwardResponseMessage + forward_Nodes_RemoveNode_0 = runtime.ForwardResponseMessage ) diff --git a/api/inventorypb/nodes.proto b/api/inventorypb/nodes.proto index b69a8dea3f..8161624e74 100644 --- a/api/inventorypb/nodes.proto +++ b/api/inventorypb/nodes.proto @@ -14,6 +14,7 @@ enum NodeType { CONTAINER_NODE = 2; REMOTE_NODE = 3; REMOTE_RDS_NODE = 4; + REMOTE_AZURE_DATABASE_NODE = 5; } // GenericNode represents a bare metal server or virtual machine. @@ -102,6 +103,24 @@ message RemoteRDSNode { } +// RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes. +message RemoteAzureDatabaseNode { + // Unique randomly generated instance identifier. + string node_id = 1; + // Unique across all Nodes user-defined name. + string node_name = 2; + // DB instance identifier. + string address = 3; + // Node model. + string node_model = 4; + // Node region. + string region = 5; + // Node availability zone. + string az = 6; + // Custom user-assigned labels. + map custom_labels = 7; +} + // List message ListNodesRequest { @@ -115,6 +134,7 @@ message ListNodesResponse { repeated ContainerNode container = 2; repeated RemoteNode remote = 3; repeated RemoteRDSNode remote_rds = 4; + repeated RemoteAzureDatabaseNode remote_azure_database = 5; } // Get @@ -134,6 +154,7 @@ message GetNodeResponse { ContainerNode container = 2; RemoteNode remote = 3; RemoteRDSNode remote_rds = 4; + RemoteAzureDatabaseNode remote_azure_database = 5; } } @@ -267,6 +288,39 @@ message AddRemoteRDSNodeResponse { RemoteRDSNode remote_rds = 1; } +// Add Remote Azure database + +message AddRemoteAzureDatabaseNodeRequest { + // Unique across all Nodes user-defined name. + string node_name = 1 [ + (validator.field) = { + string_not_empty: true + } + ]; + // DB instance identifier. + string address = 2 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Node model. + string node_model = 3; + // Node region. + string region = 4 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Node availability zone. + string az = 5; + // Custom user-assigned labels. + map custom_labels = 6; +} + +message AddRemoteAzureDatabaseNodeResponse { + RemoteAzureDatabaseNode remote_azure_database = 1; +} + // Remove message RemoveNodeRequest { @@ -326,6 +380,13 @@ service Nodes { body: "*" }; } + // AddRemoteAzureDatabaseNode adds remote Azure database Node. + rpc AddRemoteAzureDatabaseNode(AddRemoteAzureDatabaseNodeRequest) returns (AddRemoteAzureDatabaseNodeResponse) { + option (google.api.http) = { + post: "/v1/inventory/Nodes/AddRemoteAzureDatabase" + body: "*" + }; + } // RemoveNode removes Node. rpc RemoveNode(RemoveNodeRequest) returns (RemoveNodeResponse) { option (google.api.http) = { diff --git a/api/inventorypb/nodes.validator.pb.go b/api/inventorypb/nodes.validator.pb.go index 43469628c1..b6ea5bb263 100644 --- a/api/inventorypb/nodes.validator.pb.go +++ b/api/inventorypb/nodes.validator.pb.go @@ -33,6 +33,10 @@ func (this *RemoteRDSNode) Validate() error { // Validation of proto3 map<> fields is unsupported. return nil } +func (this *RemoteAzureDatabaseNode) Validate() error { + // Validation of proto3 map<> fields is unsupported. + return nil +} func (this *ListNodesRequest) Validate() error { return nil } @@ -65,6 +69,13 @@ func (this *ListNodesResponse) Validate() error { } } } + for _, item := range this.RemoteAzureDatabase { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("RemoteAzureDatabase", err) + } + } + } return nil } func (this *GetNodeRequest) Validate() error { @@ -102,6 +113,13 @@ func (this *GetNodeResponse) Validate() error { } } } + if oneOfNester, ok := this.GetNode().(*GetNodeResponse_RemoteAzureDatabase); ok { + if oneOfNester.RemoteAzureDatabase != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.RemoteAzureDatabase); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("RemoteAzureDatabase", err) + } + } + } return nil } func (this *AddGenericNodeRequest) Validate() error { @@ -179,6 +197,27 @@ func (this *AddRemoteRDSNodeResponse) Validate() error { } return nil } +func (this *AddRemoteAzureDatabaseNodeRequest) Validate() error { + if this.NodeName == "" { + return github_com_mwitkow_go_proto_validators.FieldError("NodeName", fmt.Errorf(`value '%v' must not be an empty string`, this.NodeName)) + } + if this.Address == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Address", fmt.Errorf(`value '%v' must not be an empty string`, this.Address)) + } + if this.Region == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Region", fmt.Errorf(`value '%v' must not be an empty string`, this.Region)) + } + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *AddRemoteAzureDatabaseNodeResponse) Validate() error { + if this.RemoteAzureDatabase != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.RemoteAzureDatabase); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("RemoteAzureDatabase", err) + } + } + return nil +} func (this *RemoveNodeRequest) Validate() error { if this.NodeId == "" { return github_com_mwitkow_go_proto_validators.FieldError("NodeId", fmt.Errorf(`value '%v' must not be an empty string`, this.NodeId)) diff --git a/api/inventorypb/types/agent_types.go b/api/inventorypb/types/agent_types.go index a5d6410d57..22a5470871 100644 --- a/api/inventorypb/types/agent_types.go +++ b/api/inventorypb/types/agent_types.go @@ -18,6 +18,7 @@ const ( AgentTypeQANPostgreSQLPgStatMonitorAgent = "QAN_POSTGRESQL_PGSTATMONITOR_AGENT" AgentTypeRDSExporter = "RDS_EXPORTER" AgentTypeExternalExporter = "EXTERNAL_EXPORTER" + AgentTypeAzureDatabaseExporter = "AZURE_DATABASE_EXPORTER" ) var agentTypeNames = map[string]string{ @@ -36,6 +37,7 @@ var agentTypeNames = map[string]string{ AgentTypeQANPostgreSQLPgStatMonitorAgent: "postgresql_pgstatmonitor_agent", AgentTypeRDSExporter: "rds_exporter", AgentTypeExternalExporter: "external-exporter", + AgentTypeAzureDatabaseExporter: "azure_database_exporter", } // AgentTypeName returns human friendly agent type to be used in reports diff --git a/api/inventorypb/types/node_types.go b/api/inventorypb/types/node_types.go index ca93e5e105..9f25ca2def 100644 --- a/api/inventorypb/types/node_types.go +++ b/api/inventorypb/types/node_types.go @@ -4,18 +4,20 @@ import "fmt" // this list should be in sync with inventorypb/nodes.pb.go const ( - NodeTypeGenericNode = "GENERIC_NODE" - NodeTypeContainerNode = "CONTAINER_NODE" - NodeTypeRemoteNode = "REMOTE_NODE" - NodeTypeRemoteRDSNode = "REMOTE_RDS_NODE" + NodeTypeGenericNode = "GENERIC_NODE" + NodeTypeContainerNode = "CONTAINER_NODE" + NodeTypeRemoteNode = "REMOTE_NODE" + NodeTypeRemoteRDSNode = "REMOTE_RDS_NODE" + NodeTypeRemoteAzureDatabaseNode = "REMOTE_AZURE_DATABASE_NODE" ) var nodeTypeNames = map[string]string{ // no invalid - NodeTypeGenericNode: "Generic", - NodeTypeContainerNode: "Container", - NodeTypeRemoteNode: "Remote", - NodeTypeRemoteRDSNode: "Remote RDS", + NodeTypeGenericNode: "Generic", + NodeTypeContainerNode: "Container", + NodeTypeRemoteNode: "Remote", + NodeTypeRemoteRDSNode: "Remote RDS", + NodeTypeRemoteAzureDatabaseNode: "Remote Azure database", } // NodeTypeName returns human friendly node type to be used in reports diff --git a/api/managementpb/azure/azure.pb.go b/api/managementpb/azure/azure.pb.go new file mode 100644 index 0000000000..5f2b604640 --- /dev/null +++ b/api/managementpb/azure/azure.pb.go @@ -0,0 +1,1061 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.13.0 +// source: managementpb/azure/azure.proto + +package azurev1beta1 + +import ( + context "context" + proto "github.com/golang/protobuf/proto" + _ "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// DiscoverAzureDatabaseType describes supported Azure Database instance engines. +type DiscoverAzureDatabaseType int32 + +const ( + DiscoverAzureDatabaseType_DISCOVER_AZURE_DATABASE_TYPE_INVALID DiscoverAzureDatabaseType = 0 + // MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb + DiscoverAzureDatabaseType_DISCOVER_AZURE_DATABASE_TYPE_MYSQL DiscoverAzureDatabaseType = 1 + // PostgreSQL type: microsoft.dbformysql + DiscoverAzureDatabaseType_DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL DiscoverAzureDatabaseType = 2 +) + +// Enum value maps for DiscoverAzureDatabaseType. +var ( + DiscoverAzureDatabaseType_name = map[int32]string{ + 0: "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + 1: "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", + 2: "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL", + } + DiscoverAzureDatabaseType_value = map[string]int32{ + "DISCOVER_AZURE_DATABASE_TYPE_INVALID": 0, + "DISCOVER_AZURE_DATABASE_TYPE_MYSQL": 1, + "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL": 2, + } +) + +func (x DiscoverAzureDatabaseType) Enum() *DiscoverAzureDatabaseType { + p := new(DiscoverAzureDatabaseType) + *p = x + return p +} + +func (x DiscoverAzureDatabaseType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DiscoverAzureDatabaseType) Descriptor() protoreflect.EnumDescriptor { + return file_managementpb_azure_azure_proto_enumTypes[0].Descriptor() +} + +func (DiscoverAzureDatabaseType) Type() protoreflect.EnumType { + return &file_managementpb_azure_azure_proto_enumTypes[0] +} + +func (x DiscoverAzureDatabaseType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DiscoverAzureDatabaseType.Descriptor instead. +func (DiscoverAzureDatabaseType) EnumDescriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{0} +} + +// DiscoverAzureDatabaseRequest discover azure databases request. +type DiscoverAzureDatabaseRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Azure client ID. + AzureClientId string `protobuf:"bytes,1,opt,name=azure_client_id,json=azureClientId,proto3" json:"azure_client_id,omitempty"` + // Azure client secret. + AzureClientSecret string `protobuf:"bytes,2,opt,name=azure_client_secret,json=azureClientSecret,proto3" json:"azure_client_secret,omitempty"` + // Azure tanant ID. + AzureTenantId string `protobuf:"bytes,3,opt,name=azure_tenant_id,json=azureTenantId,proto3" json:"azure_tenant_id,omitempty"` + // Azure subscription ID. + AzureSubscriptionId string `protobuf:"bytes,4,opt,name=azure_subscription_id,json=azureSubscriptionId,proto3" json:"azure_subscription_id,omitempty"` +} + +func (x *DiscoverAzureDatabaseRequest) Reset() { + *x = DiscoverAzureDatabaseRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_managementpb_azure_azure_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoverAzureDatabaseRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoverAzureDatabaseRequest) ProtoMessage() {} + +func (x *DiscoverAzureDatabaseRequest) ProtoReflect() protoreflect.Message { + mi := &file_managementpb_azure_azure_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscoverAzureDatabaseRequest.ProtoReflect.Descriptor instead. +func (*DiscoverAzureDatabaseRequest) Descriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{0} +} + +func (x *DiscoverAzureDatabaseRequest) GetAzureClientId() string { + if x != nil { + return x.AzureClientId + } + return "" +} + +func (x *DiscoverAzureDatabaseRequest) GetAzureClientSecret() string { + if x != nil { + return x.AzureClientSecret + } + return "" +} + +func (x *DiscoverAzureDatabaseRequest) GetAzureTenantId() string { + if x != nil { + return x.AzureTenantId + } + return "" +} + +func (x *DiscoverAzureDatabaseRequest) GetAzureSubscriptionId() string { + if x != nil { + return x.AzureSubscriptionId + } + return "" +} + +// DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery. +type DiscoverAzureDatabaseInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Azure database instance ID. + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + // Azure database location. + Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` + // Azure database server name. + ServiceName string `protobuf:"bytes,3,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + // Database username. + Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"` + // Address used to connect to it. + Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"` + // Azure Resource group. + AzureResourceGroup string `protobuf:"bytes,6,opt,name=azure_resource_group,json=azureResourceGroup,proto3" json:"azure_resource_group,omitempty"` + // Environment tag. + Environment string `protobuf:"bytes,7,opt,name=environment,proto3" json:"environment,omitempty"` + // Database type. + Type DiscoverAzureDatabaseType `protobuf:"varint,8,opt,name=type,proto3,enum=azure.v1beta1.DiscoverAzureDatabaseType" json:"type,omitempty"` + // Azure database availability zone. + Az string `protobuf:"bytes,9,opt,name=az,proto3" json:"az,omitempty"` + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + NodeModel string `protobuf:"bytes,10,opt,name=node_model,json=nodeModel,proto3" json:"node_model,omitempty"` +} + +func (x *DiscoverAzureDatabaseInstance) Reset() { + *x = DiscoverAzureDatabaseInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_managementpb_azure_azure_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoverAzureDatabaseInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoverAzureDatabaseInstance) ProtoMessage() {} + +func (x *DiscoverAzureDatabaseInstance) ProtoReflect() protoreflect.Message { + mi := &file_managementpb_azure_azure_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscoverAzureDatabaseInstance.ProtoReflect.Descriptor instead. +func (*DiscoverAzureDatabaseInstance) Descriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{1} +} + +func (x *DiscoverAzureDatabaseInstance) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetAzureResourceGroup() string { + if x != nil { + return x.AzureResourceGroup + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetEnvironment() string { + if x != nil { + return x.Environment + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetType() DiscoverAzureDatabaseType { + if x != nil { + return x.Type + } + return DiscoverAzureDatabaseType_DISCOVER_AZURE_DATABASE_TYPE_INVALID +} + +func (x *DiscoverAzureDatabaseInstance) GetAz() string { + if x != nil { + return x.Az + } + return "" +} + +func (x *DiscoverAzureDatabaseInstance) GetNodeModel() string { + if x != nil { + return x.NodeModel + } + return "" +} + +// DiscoverAzureDatabaseResponse discover azure databases response. +type DiscoverAzureDatabaseResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AzureDatabaseInstance []*DiscoverAzureDatabaseInstance `protobuf:"bytes,1,rep,name=azure_database_instance,json=azureDatabaseInstance,proto3" json:"azure_database_instance,omitempty"` +} + +func (x *DiscoverAzureDatabaseResponse) Reset() { + *x = DiscoverAzureDatabaseResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_managementpb_azure_azure_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoverAzureDatabaseResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoverAzureDatabaseResponse) ProtoMessage() {} + +func (x *DiscoverAzureDatabaseResponse) ProtoReflect() protoreflect.Message { + mi := &file_managementpb_azure_azure_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscoverAzureDatabaseResponse.ProtoReflect.Descriptor instead. +func (*DiscoverAzureDatabaseResponse) Descriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{2} +} + +func (x *DiscoverAzureDatabaseResponse) GetAzureDatabaseInstance() []*DiscoverAzureDatabaseInstance { + if x != nil { + return x.AzureDatabaseInstance + } + return nil +} + +type AddAzureDatabaseRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Azure database location. + Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` + // Azure database availability zone. + Az string `protobuf:"bytes,2,opt,name=az,proto3" json:"az,omitempty"` + // Azure database instance ID. + InstanceId string `protobuf:"bytes,3,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + NodeModel string `protobuf:"bytes,4,opt,name=node_model,json=nodeModel,proto3" json:"node_model,omitempty"` + // Address used to connect to it. + Address string `protobuf:"bytes,5,opt,name=address,proto3" json:"address,omitempty"` + // Access port. + Port uint32 `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"` + // Unique across all Nodes user-defined name. Defaults to Azure Database instance ID. + NodeName string `protobuf:"bytes,7,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` + // Unique across all Services user-defined name. Defaults to Azure Database instance ID. + ServiceName string `protobuf:"bytes,8,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` + // Environment name. + Environment string `protobuf:"bytes,9,opt,name=environment,proto3" json:"environment,omitempty"` + // Username for scraping metrics. + Username string `protobuf:"bytes,10,opt,name=username,proto3" json:"username,omitempty"` + // Password for scraping metrics. + Password string `protobuf:"bytes,11,opt,name=password,proto3" json:"password,omitempty"` + // Azure client ID. + AzureClientId string `protobuf:"bytes,12,opt,name=azure_client_id,json=azureClientId,proto3" json:"azure_client_id,omitempty"` + // Azure client secret. + AzureClientSecret string `protobuf:"bytes,13,opt,name=azure_client_secret,json=azureClientSecret,proto3" json:"azure_client_secret,omitempty"` + // Azure tanant ID. + AzureTenantId string `protobuf:"bytes,14,opt,name=azure_tenant_id,json=azureTenantId,proto3" json:"azure_tenant_id,omitempty"` + // Azure subscription ID. + AzureSubscriptionId string `protobuf:"bytes,15,opt,name=azure_subscription_id,json=azureSubscriptionId,proto3" json:"azure_subscription_id,omitempty"` + // Azure resource group. + AzureResourceGroup string `protobuf:"bytes,16,opt,name=azure_resource_group,json=azureResourceGroup,proto3" json:"azure_resource_group,omitempty"` + // If true, adds azure_database_exporter. + AzureDatabaseExporter bool `protobuf:"varint,17,opt,name=azure_database_exporter,json=azureDatabaseExporter,proto3" json:"azure_database_exporter,omitempty"` + // If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent. + Qan bool `protobuf:"varint,18,opt,name=qan,proto3" json:"qan,omitempty"` + // Custom user-assigned labels for Node and Service. + CustomLabels map[string]string `protobuf:"bytes,19,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Skip connection check. + SkipConnectionCheck bool `protobuf:"varint,20,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Use TLS for database connections. + Tls bool `protobuf:"varint,21,opt,name=tls,proto3" json:"tls,omitempty"` + // Skip TLS certificate and hostname validation. + TlsSkipVerify bool `protobuf:"varint,22,opt,name=tls_skip_verify,json=tlsSkipVerify,proto3" json:"tls_skip_verify,omitempty"` + // Disable query examples. + DisableQueryExamples bool `protobuf:"varint,23,opt,name=disable_query_examples,json=disableQueryExamples,proto3" json:"disable_query_examples,omitempty"` + // Tablestats group collectors will be disabled if there are more than that number of tables. + // If zero, server's default value is used. + // Use negative value to disable them. + TablestatsGroupTableLimit int32 `protobuf:"varint,24,opt,name=tablestats_group_table_limit,json=tablestatsGroupTableLimit,proto3" json:"tablestats_group_table_limit,omitempty"` + // Azure database resource type (mysql, maria, postgres) + Type DiscoverAzureDatabaseType `protobuf:"varint,25,opt,name=type,proto3,enum=azure.v1beta1.DiscoverAzureDatabaseType" json:"type,omitempty"` +} + +func (x *AddAzureDatabaseRequest) Reset() { + *x = AddAzureDatabaseRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_managementpb_azure_azure_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddAzureDatabaseRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddAzureDatabaseRequest) ProtoMessage() {} + +func (x *AddAzureDatabaseRequest) ProtoReflect() protoreflect.Message { + mi := &file_managementpb_azure_azure_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddAzureDatabaseRequest.ProtoReflect.Descriptor instead. +func (*AddAzureDatabaseRequest) Descriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{3} +} + +func (x *AddAzureDatabaseRequest) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAz() string { + if x != nil { + return x.Az + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetNodeModel() string { + if x != nil { + return x.NodeModel + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetPort() uint32 { + if x != nil { + return x.Port + } + return 0 +} + +func (x *AddAzureDatabaseRequest) GetNodeName() string { + if x != nil { + return x.NodeName + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetServiceName() string { + if x != nil { + return x.ServiceName + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetEnvironment() string { + if x != nil { + return x.Environment + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureClientId() string { + if x != nil { + return x.AzureClientId + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureClientSecret() string { + if x != nil { + return x.AzureClientSecret + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureTenantId() string { + if x != nil { + return x.AzureTenantId + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureSubscriptionId() string { + if x != nil { + return x.AzureSubscriptionId + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureResourceGroup() string { + if x != nil { + return x.AzureResourceGroup + } + return "" +} + +func (x *AddAzureDatabaseRequest) GetAzureDatabaseExporter() bool { + if x != nil { + return x.AzureDatabaseExporter + } + return false +} + +func (x *AddAzureDatabaseRequest) GetQan() bool { + if x != nil { + return x.Qan + } + return false +} + +func (x *AddAzureDatabaseRequest) GetCustomLabels() map[string]string { + if x != nil { + return x.CustomLabels + } + return nil +} + +func (x *AddAzureDatabaseRequest) GetSkipConnectionCheck() bool { + if x != nil { + return x.SkipConnectionCheck + } + return false +} + +func (x *AddAzureDatabaseRequest) GetTls() bool { + if x != nil { + return x.Tls + } + return false +} + +func (x *AddAzureDatabaseRequest) GetTlsSkipVerify() bool { + if x != nil { + return x.TlsSkipVerify + } + return false +} + +func (x *AddAzureDatabaseRequest) GetDisableQueryExamples() bool { + if x != nil { + return x.DisableQueryExamples + } + return false +} + +func (x *AddAzureDatabaseRequest) GetTablestatsGroupTableLimit() int32 { + if x != nil { + return x.TablestatsGroupTableLimit + } + return 0 +} + +func (x *AddAzureDatabaseRequest) GetType() DiscoverAzureDatabaseType { + if x != nil { + return x.Type + } + return DiscoverAzureDatabaseType_DISCOVER_AZURE_DATABASE_TYPE_INVALID +} + +type AddAzureDatabaseResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AddAzureDatabaseResponse) Reset() { + *x = AddAzureDatabaseResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_managementpb_azure_azure_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddAzureDatabaseResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddAzureDatabaseResponse) ProtoMessage() {} + +func (x *AddAzureDatabaseResponse) ProtoReflect() protoreflect.Message { + mi := &file_managementpb_azure_azure_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddAzureDatabaseResponse.ProtoReflect.Descriptor instead. +func (*AddAzureDatabaseResponse) Descriptor() ([]byte, []int) { + return file_managementpb_azure_azure_proto_rawDescGZIP(), []int{4} +} + +var File_managementpb_azure_azure_proto protoreflect.FileDescriptor + +var file_managementpb_azure_azure_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x0d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, + 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x77, 0x69, 0x74, + 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf2, 0x01, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x0d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x13, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x11, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2e, + 0x0a, 0x0f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, + 0x0d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, + 0x0a, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x13, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xf2, 0x02, 0x0a, 0x1d, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, + 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, + 0x0a, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x28, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x61, 0x7a, + 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, + 0x85, 0x01, 0x0a, 0x1d, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x64, 0x0a, 0x17, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8c, 0x09, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x61, 0x7a, 0x12, 0x27, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x10, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, + 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x76, + 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2e, 0x0a, 0x0f, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x0d, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x13, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, + 0x52, 0x11, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x0f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x0d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x13, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x12, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x61, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, + 0x71, 0x61, 0x6e, 0x12, 0x5d, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2a, 0x9a, 0x01, 0x0a, 0x19, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x28, 0x0a, 0x24, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x5a, 0x55, + 0x52, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x49, + 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, + 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x41, + 0x5a, 0x55, 0x52, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x32, + 0xd5, 0x02, 0x0a, 0x0d, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x12, 0xaa, 0x01, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2b, 0x2e, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2b, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x96, + 0x01, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x12, 0x26, 0x2e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x22, 0x26, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x2f, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2f, 0x41, 0x64, 0x64, 0x3a, 0x01, 0x2a, 0x42, 0x25, 0x5a, 0x23, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x3b, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_managementpb_azure_azure_proto_rawDescOnce sync.Once + file_managementpb_azure_azure_proto_rawDescData = file_managementpb_azure_azure_proto_rawDesc +) + +func file_managementpb_azure_azure_proto_rawDescGZIP() []byte { + file_managementpb_azure_azure_proto_rawDescOnce.Do(func() { + file_managementpb_azure_azure_proto_rawDescData = protoimpl.X.CompressGZIP(file_managementpb_azure_azure_proto_rawDescData) + }) + return file_managementpb_azure_azure_proto_rawDescData +} + +var file_managementpb_azure_azure_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_managementpb_azure_azure_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_managementpb_azure_azure_proto_goTypes = []interface{}{ + (DiscoverAzureDatabaseType)(0), // 0: azure.v1beta1.DiscoverAzureDatabaseType + (*DiscoverAzureDatabaseRequest)(nil), // 1: azure.v1beta1.DiscoverAzureDatabaseRequest + (*DiscoverAzureDatabaseInstance)(nil), // 2: azure.v1beta1.DiscoverAzureDatabaseInstance + (*DiscoverAzureDatabaseResponse)(nil), // 3: azure.v1beta1.DiscoverAzureDatabaseResponse + (*AddAzureDatabaseRequest)(nil), // 4: azure.v1beta1.AddAzureDatabaseRequest + (*AddAzureDatabaseResponse)(nil), // 5: azure.v1beta1.AddAzureDatabaseResponse + nil, // 6: azure.v1beta1.AddAzureDatabaseRequest.CustomLabelsEntry +} +var file_managementpb_azure_azure_proto_depIdxs = []int32{ + 0, // 0: azure.v1beta1.DiscoverAzureDatabaseInstance.type:type_name -> azure.v1beta1.DiscoverAzureDatabaseType + 2, // 1: azure.v1beta1.DiscoverAzureDatabaseResponse.azure_database_instance:type_name -> azure.v1beta1.DiscoverAzureDatabaseInstance + 6, // 2: azure.v1beta1.AddAzureDatabaseRequest.custom_labels:type_name -> azure.v1beta1.AddAzureDatabaseRequest.CustomLabelsEntry + 0, // 3: azure.v1beta1.AddAzureDatabaseRequest.type:type_name -> azure.v1beta1.DiscoverAzureDatabaseType + 1, // 4: azure.v1beta1.AzureDatabase.DiscoverAzureDatabase:input_type -> azure.v1beta1.DiscoverAzureDatabaseRequest + 4, // 5: azure.v1beta1.AzureDatabase.AddAzureDatabase:input_type -> azure.v1beta1.AddAzureDatabaseRequest + 3, // 6: azure.v1beta1.AzureDatabase.DiscoverAzureDatabase:output_type -> azure.v1beta1.DiscoverAzureDatabaseResponse + 5, // 7: azure.v1beta1.AzureDatabase.AddAzureDatabase:output_type -> azure.v1beta1.AddAzureDatabaseResponse + 6, // [6:8] is the sub-list for method output_type + 4, // [4:6] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_managementpb_azure_azure_proto_init() } +func file_managementpb_azure_azure_proto_init() { + if File_managementpb_azure_azure_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_managementpb_azure_azure_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverAzureDatabaseRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_managementpb_azure_azure_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverAzureDatabaseInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_managementpb_azure_azure_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DiscoverAzureDatabaseResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_managementpb_azure_azure_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddAzureDatabaseRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_managementpb_azure_azure_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddAzureDatabaseResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_managementpb_azure_azure_proto_rawDesc, + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_managementpb_azure_azure_proto_goTypes, + DependencyIndexes: file_managementpb_azure_azure_proto_depIdxs, + EnumInfos: file_managementpb_azure_azure_proto_enumTypes, + MessageInfos: file_managementpb_azure_azure_proto_msgTypes, + }.Build() + File_managementpb_azure_azure_proto = out.File + file_managementpb_azure_azure_proto_rawDesc = nil + file_managementpb_azure_azure_proto_goTypes = nil + file_managementpb_azure_azure_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// AzureDatabaseClient is the client API for AzureDatabase service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type AzureDatabaseClient interface { + // DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances. + DiscoverAzureDatabase(ctx context.Context, in *DiscoverAzureDatabaseRequest, opts ...grpc.CallOption) (*DiscoverAzureDatabaseResponse, error) + // AddAzureDatabase adds Azure Database instance. + AddAzureDatabase(ctx context.Context, in *AddAzureDatabaseRequest, opts ...grpc.CallOption) (*AddAzureDatabaseResponse, error) +} + +type azureDatabaseClient struct { + cc grpc.ClientConnInterface +} + +func NewAzureDatabaseClient(cc grpc.ClientConnInterface) AzureDatabaseClient { + return &azureDatabaseClient{cc} +} + +func (c *azureDatabaseClient) DiscoverAzureDatabase(ctx context.Context, in *DiscoverAzureDatabaseRequest, opts ...grpc.CallOption) (*DiscoverAzureDatabaseResponse, error) { + out := new(DiscoverAzureDatabaseResponse) + err := c.cc.Invoke(ctx, "/azure.v1beta1.AzureDatabase/DiscoverAzureDatabase", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *azureDatabaseClient) AddAzureDatabase(ctx context.Context, in *AddAzureDatabaseRequest, opts ...grpc.CallOption) (*AddAzureDatabaseResponse, error) { + out := new(AddAzureDatabaseResponse) + err := c.cc.Invoke(ctx, "/azure.v1beta1.AzureDatabase/AddAzureDatabase", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AzureDatabaseServer is the server API for AzureDatabase service. +type AzureDatabaseServer interface { + // DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances. + DiscoverAzureDatabase(context.Context, *DiscoverAzureDatabaseRequest) (*DiscoverAzureDatabaseResponse, error) + // AddAzureDatabase adds Azure Database instance. + AddAzureDatabase(context.Context, *AddAzureDatabaseRequest) (*AddAzureDatabaseResponse, error) +} + +// UnimplementedAzureDatabaseServer can be embedded to have forward compatible implementations. +type UnimplementedAzureDatabaseServer struct { +} + +func (*UnimplementedAzureDatabaseServer) DiscoverAzureDatabase(context.Context, *DiscoverAzureDatabaseRequest) (*DiscoverAzureDatabaseResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DiscoverAzureDatabase not implemented") +} +func (*UnimplementedAzureDatabaseServer) AddAzureDatabase(context.Context, *AddAzureDatabaseRequest) (*AddAzureDatabaseResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddAzureDatabase not implemented") +} + +func RegisterAzureDatabaseServer(s *grpc.Server, srv AzureDatabaseServer) { + s.RegisterService(&_AzureDatabase_serviceDesc, srv) +} + +func _AzureDatabase_DiscoverAzureDatabase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DiscoverAzureDatabaseRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AzureDatabaseServer).DiscoverAzureDatabase(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/azure.v1beta1.AzureDatabase/DiscoverAzureDatabase", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AzureDatabaseServer).DiscoverAzureDatabase(ctx, req.(*DiscoverAzureDatabaseRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AzureDatabase_AddAzureDatabase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddAzureDatabaseRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AzureDatabaseServer).AddAzureDatabase(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/azure.v1beta1.AzureDatabase/AddAzureDatabase", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AzureDatabaseServer).AddAzureDatabase(ctx, req.(*AddAzureDatabaseRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _AzureDatabase_serviceDesc = grpc.ServiceDesc{ + ServiceName: "azure.v1beta1.AzureDatabase", + HandlerType: (*AzureDatabaseServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "DiscoverAzureDatabase", + Handler: _AzureDatabase_DiscoverAzureDatabase_Handler, + }, + { + MethodName: "AddAzureDatabase", + Handler: _AzureDatabase_AddAzureDatabase_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "managementpb/azure/azure.proto", +} diff --git a/api/managementpb/azure/azure.pb.gw.go b/api/managementpb/azure/azure.pb.gw.go new file mode 100644 index 0000000000..50a54ed1ee --- /dev/null +++ b/api/managementpb/azure/azure.pb.gw.go @@ -0,0 +1,250 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: managementpb/azure/azure.proto + +/* +Package azurev1beta1 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package azurev1beta1 + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_AzureDatabase_DiscoverAzureDatabase_0(ctx context.Context, marshaler runtime.Marshaler, client AzureDatabaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DiscoverAzureDatabaseRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DiscoverAzureDatabase(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AzureDatabase_DiscoverAzureDatabase_0(ctx context.Context, marshaler runtime.Marshaler, server AzureDatabaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DiscoverAzureDatabaseRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DiscoverAzureDatabase(ctx, &protoReq) + return msg, metadata, err + +} + +func request_AzureDatabase_AddAzureDatabase_0(ctx context.Context, marshaler runtime.Marshaler, client AzureDatabaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddAzureDatabaseRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AddAzureDatabase(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_AzureDatabase_AddAzureDatabase_0(ctx context.Context, marshaler runtime.Marshaler, server AzureDatabaseServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddAzureDatabaseRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AddAzureDatabase(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterAzureDatabaseHandlerServer registers the http handlers for service AzureDatabase to "mux". +// UnaryRPC :call AzureDatabaseServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterAzureDatabaseHandlerFromEndpoint instead. +func RegisterAzureDatabaseHandlerServer(ctx context.Context, mux *runtime.ServeMux, server AzureDatabaseServer) error { + + mux.Handle("POST", pattern_AzureDatabase_DiscoverAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AzureDatabase_DiscoverAzureDatabase_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AzureDatabase_DiscoverAzureDatabase_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AzureDatabase_AddAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_AzureDatabase_AddAzureDatabase_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AzureDatabase_AddAzureDatabase_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterAzureDatabaseHandlerFromEndpoint is same as RegisterAzureDatabaseHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterAzureDatabaseHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterAzureDatabaseHandler(ctx, mux, conn) +} + +// RegisterAzureDatabaseHandler registers the http handlers for service AzureDatabase to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterAzureDatabaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterAzureDatabaseHandlerClient(ctx, mux, NewAzureDatabaseClient(conn)) +} + +// RegisterAzureDatabaseHandlerClient registers the http handlers for service AzureDatabase +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "AzureDatabaseClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AzureDatabaseClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "AzureDatabaseClient" to call the correct interceptors. +func RegisterAzureDatabaseHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AzureDatabaseClient) error { + + mux.Handle("POST", pattern_AzureDatabase_DiscoverAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AzureDatabase_DiscoverAzureDatabase_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AzureDatabase_DiscoverAzureDatabase_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_AzureDatabase_AddAzureDatabase_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AzureDatabase_AddAzureDatabase_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AzureDatabase_AddAzureDatabase_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_AzureDatabase_DiscoverAzureDatabase_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "management", "azure", "AzureDatabase", "Discover"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_AzureDatabase_AddAzureDatabase_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"v1", "management", "azure", "AzureDatabase", "Add"}, "", runtime.AssumeColonVerbOpt(true))) +) + +var ( + forward_AzureDatabase_DiscoverAzureDatabase_0 = runtime.ForwardResponseMessage + + forward_AzureDatabase_AddAzureDatabase_0 = runtime.ForwardResponseMessage +) diff --git a/api/managementpb/azure/azure.proto b/api/managementpb/azure/azure.proto new file mode 100644 index 0000000000..f7ea206c58 --- /dev/null +++ b/api/managementpb/azure/azure.proto @@ -0,0 +1,191 @@ +syntax = "proto3"; + +package azure.v1beta1; + +option go_package = "api/managementpb/azure;azurev1beta1"; + +import "github.com/mwitkow/go-proto-validators/validator.proto"; +import "google/api/annotations.proto"; + +// DiscoverAzureDatabaseRequest discover azure databases request. +message DiscoverAzureDatabaseRequest { + // Azure client ID. + string azure_client_id = 1 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure client secret. + string azure_client_secret = 2 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure tanant ID. + string azure_tenant_id = 3 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure subscription ID. + string azure_subscription_id = 4 [ + (validator.field) = { + string_not_empty: true + } + ]; +} + +// DiscoverAzureDatabaseType describes supported Azure Database instance engines. +enum DiscoverAzureDatabaseType { + DISCOVER_AZURE_DATABASE_TYPE_INVALID = 0; + // MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb + DISCOVER_AZURE_DATABASE_TYPE_MYSQL = 1; + // PostgreSQL type: microsoft.dbformysql + DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL = 2; +} + +// DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery. +message DiscoverAzureDatabaseInstance { + // Azure database instance ID. + string instance_id = 1; + // Azure database location. + string region = 2; + // Azure database server name. + string service_name = 3; + // Database username. + string username = 4; + // Address used to connect to it. + string address = 5; + // Azure Resource group. + string azure_resource_group = 6; + // Environment tag. + string environment = 7; + // Database type. + DiscoverAzureDatabaseType type = 8; + // Azure database availability zone. + string az = 9; + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + string node_model = 10; +} + +// DiscoverAzureDatabaseResponse discover azure databases response. +message DiscoverAzureDatabaseResponse { + repeated DiscoverAzureDatabaseInstance azure_database_instance = 1; +} + +message AddAzureDatabaseRequest { + // Azure database location. + string region = 1 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure database availability zone. + string az = 2; + // Azure database instance ID. + string instance_id = 3 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + string node_model = 4; + // Address used to connect to it. + string address = 5 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Access port. + uint32 port = 6 [ + (validator.field) = { + int_gt: 0 + } + ]; + // Unique across all Nodes user-defined name. Defaults to Azure Database instance ID. + string node_name = 7; + // Unique across all Services user-defined name. Defaults to Azure Database instance ID. + string service_name = 8; + // Environment name. + string environment = 9; + // Username for scraping metrics. + string username = 10 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Password for scraping metrics. + string password = 11; + // Azure client ID. + string azure_client_id = 12 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure client secret. + string azure_client_secret = 13 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure tanant ID. + string azure_tenant_id = 14 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure subscription ID. + string azure_subscription_id = 15 [ + (validator.field) = { + string_not_empty: true + } + ]; + // Azure resource group. + string azure_resource_group = 16 [ + (validator.field) = { + string_not_empty: true + } + ]; + // If true, adds azure_database_exporter. + bool azure_database_exporter = 17; + // If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent. + bool qan = 18; + // Custom user-assigned labels for Node and Service. + map custom_labels = 19; + // Skip connection check. + bool skip_connection_check = 20; + // Use TLS for database connections. + bool tls = 21; + // Skip TLS certificate and hostname validation. + bool tls_skip_verify = 22; + // Disable query examples. + bool disable_query_examples = 23; + // Tablestats group collectors will be disabled if there are more than that number of tables. + // If zero, server's default value is used. + // Use negative value to disable them. + int32 tablestats_group_table_limit = 24; + // Azure database resource type (mysql, maria, postgres) + DiscoverAzureDatabaseType type = 25; +} + +message AddAzureDatabaseResponse {} + +// AzureDatabase service provides Service Discovery APIs. +service AzureDatabase { + // DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances. + rpc DiscoverAzureDatabase(DiscoverAzureDatabaseRequest) returns (DiscoverAzureDatabaseResponse) { + option (google.api.http) = { + post: "/v1/management/azure/AzureDatabase/Discover" + body: "*" + }; + } + // AddAzureDatabase adds Azure Database instance. + rpc AddAzureDatabase(AddAzureDatabaseRequest) returns (AddAzureDatabaseResponse) { + option (google.api.http) = { + post: "/v1/management/azure/AzureDatabase/Add" + body: "*" + }; + } +} diff --git a/api/managementpb/azure/azure.validator.pb.go b/api/managementpb/azure/azure.validator.pb.go new file mode 100644 index 0000000000..36489474f7 --- /dev/null +++ b/api/managementpb/azure/azure.validator.pb.go @@ -0,0 +1,84 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: managementpb/azure/azure.proto + +package azurev1beta1 + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + _ "github.com/mwitkow/go-proto-validators" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/genproto/googleapis/api/annotations" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *DiscoverAzureDatabaseRequest) Validate() error { + if this.AzureClientId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureClientId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureClientId)) + } + if this.AzureClientSecret == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureClientSecret", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureClientSecret)) + } + if this.AzureTenantId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureTenantId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureTenantId)) + } + if this.AzureSubscriptionId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureSubscriptionId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureSubscriptionId)) + } + return nil +} +func (this *DiscoverAzureDatabaseInstance) Validate() error { + return nil +} +func (this *DiscoverAzureDatabaseResponse) Validate() error { + for _, item := range this.AzureDatabaseInstance { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("AzureDatabaseInstance", err) + } + } + } + return nil +} +func (this *AddAzureDatabaseRequest) Validate() error { + if this.Region == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Region", fmt.Errorf(`value '%v' must not be an empty string`, this.Region)) + } + if this.InstanceId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("InstanceId", fmt.Errorf(`value '%v' must not be an empty string`, this.InstanceId)) + } + if this.Address == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Address", fmt.Errorf(`value '%v' must not be an empty string`, this.Address)) + } + if !(this.Port > 0) { + return github_com_mwitkow_go_proto_validators.FieldError("Port", fmt.Errorf(`value '%v' must be greater than '0'`, this.Port)) + } + if this.Username == "" { + return github_com_mwitkow_go_proto_validators.FieldError("Username", fmt.Errorf(`value '%v' must not be an empty string`, this.Username)) + } + if this.AzureClientId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureClientId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureClientId)) + } + if this.AzureClientSecret == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureClientSecret", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureClientSecret)) + } + if this.AzureTenantId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureTenantId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureTenantId)) + } + if this.AzureSubscriptionId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureSubscriptionId", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureSubscriptionId)) + } + if this.AzureResourceGroup == "" { + return github_com_mwitkow_go_proto_validators.FieldError("AzureResourceGroup", fmt.Errorf(`value '%v' must not be an empty string`, this.AzureResourceGroup)) + } + // Validation of proto3 map<> fields is unsupported. + return nil +} +func (this *AddAzureDatabaseResponse) Validate() error { + return nil +} diff --git a/api/managementpb/azure/json/azure.json b/api/managementpb/azure/json/azure.json new file mode 100644 index 0000000000..d86fbb583c --- /dev/null +++ b/api/managementpb/azure/json/azure.json @@ -0,0 +1,381 @@ +{ + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "schemes": [ + "https", + "http" + ], + "swagger": "2.0", + "info": { + "title": "PMM DBaaS API", + "version": "v1beta1" + }, + "paths": { + "/v1/management/azure/AzureDatabase/Add": { + "post": { + "tags": [ + "AzureDatabase" + ], + "summary": "AddAzureDatabase adds Azure Database instance.", + "operationId": "AddAzureDatabase", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "address": { + "description": "Address used to connect to it.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Azure database availability zone.", + "type": "string", + "x-order": 1 + }, + "azure_client_id": { + "description": "Azure client ID.", + "type": "string", + "x-order": 11 + }, + "azure_client_secret": { + "description": "Azure client secret.", + "type": "string", + "x-order": 12 + }, + "azure_database_exporter": { + "description": "If true, adds azure_database_exporter.", + "type": "boolean", + "x-order": 16 + }, + "azure_resource_group": { + "description": "Azure resource group.", + "type": "string", + "x-order": 15 + }, + "azure_subscription_id": { + "description": "Azure subscription ID.", + "type": "string", + "x-order": 14 + }, + "azure_tenant_id": { + "description": "Azure tanant ID.", + "type": "string", + "x-order": 13 + }, + "custom_labels": { + "description": "Custom user-assigned labels for Node and Service.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 18 + }, + "disable_query_examples": { + "description": "Disable query examples.", + "type": "boolean", + "x-order": 22 + }, + "environment": { + "description": "Environment name.", + "type": "string", + "x-order": 8 + }, + "instance_id": { + "description": "Azure database instance ID.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", + "type": "string", + "x-order": 3 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name. Defaults to Azure Database instance ID.", + "type": "string", + "x-order": 6 + }, + "password": { + "description": "Password for scraping metrics.", + "type": "string", + "x-order": 10 + }, + "port": { + "description": "Access port.", + "type": "integer", + "format": "int64", + "x-order": 5 + }, + "qan": { + "description": "If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent.", + "type": "boolean", + "x-order": 17 + }, + "region": { + "description": "Azure database location.", + "type": "string", + "x-order": 0 + }, + "service_name": { + "description": "Unique across all Services user-defined name. Defaults to Azure Database instance ID.", + "type": "string", + "x-order": 7 + }, + "skip_connection_check": { + "description": "Skip connection check.", + "type": "boolean", + "x-order": 19 + }, + "tablestats_group_table_limit": { + "description": "Tablestats group collectors will be disabled if there are more than that number of tables.\nIf zero, server's default value is used.\nUse negative value to disable them.", + "type": "integer", + "format": "int32", + "x-order": 23 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 20 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 21 + }, + "type": { + "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", + "type": "string", + "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "enum": [ + "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", + "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + ], + "x-order": 24 + }, + "username": { + "description": "Username for scraping metrics.", + "type": "string", + "x-order": 9 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + }, + "error": { + "type": "string", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 2 + } + } + } + } + } + } + }, + "/v1/management/azure/AzureDatabase/Discover": { + "post": { + "tags": [ + "AzureDatabase" + ], + "summary": "DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances.", + "operationId": "DiscoverAzureDatabase", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "description": "DiscoverAzureDatabaseRequest discover azure databases request.", + "type": "object", + "properties": { + "azure_client_id": { + "description": "Azure client ID.", + "type": "string", + "x-order": 0 + }, + "azure_client_secret": { + "description": "Azure client secret.", + "type": "string", + "x-order": 1 + }, + "azure_subscription_id": { + "description": "Azure subscription ID.", + "type": "string", + "x-order": 3 + }, + "azure_tenant_id": { + "description": "Azure tanant ID.", + "type": "string", + "x-order": 2 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "description": "DiscoverAzureDatabaseResponse discover azure databases response.", + "type": "object", + "properties": { + "azure_database_instance": { + "type": "array", + "items": { + "description": "DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery.", + "type": "object", + "properties": { + "address": { + "description": "Address used to connect to it.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Azure database availability zone.", + "type": "string", + "x-order": 8 + }, + "azure_resource_group": { + "description": "Azure Resource group.", + "type": "string", + "x-order": 5 + }, + "environment": { + "description": "Environment tag.", + "type": "string", + "x-order": 6 + }, + "instance_id": { + "description": "Azure database instance ID.", + "type": "string", + "x-order": 0 + }, + "node_model": { + "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", + "type": "string", + "x-order": 9 + }, + "region": { + "description": "Azure database location.", + "type": "string", + "x-order": 1 + }, + "service_name": { + "description": "Azure database server name.", + "type": "string", + "x-order": 2 + }, + "type": { + "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", + "type": "string", + "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "enum": [ + "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", + "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + ], + "x-order": 7 + }, + "username": { + "description": "Database username.", + "type": "string", + "x-order": 3 + } + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + }, + "error": { + "type": "string", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 2 + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/api/managementpb/azure/json/client/azure_database/add_azure_database_parameters.go b/api/managementpb/azure/json/client/azure_database/add_azure_database_parameters.go new file mode 100644 index 0000000000..2ed061b214 --- /dev/null +++ b/api/managementpb/azure/json/client/azure_database/add_azure_database_parameters.go @@ -0,0 +1,131 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package azure_database + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewAddAzureDatabaseParams creates a new AddAzureDatabaseParams object +// with the default values initialized. +func NewAddAzureDatabaseParams() *AddAzureDatabaseParams { + var () + return &AddAzureDatabaseParams{ + + timeout: cr.DefaultTimeout, + } +} + +// NewAddAzureDatabaseParamsWithTimeout creates a new AddAzureDatabaseParams object +// with the default values initialized, and the ability to set a timeout on a request +func NewAddAzureDatabaseParamsWithTimeout(timeout time.Duration) *AddAzureDatabaseParams { + var () + return &AddAzureDatabaseParams{ + + timeout: timeout, + } +} + +// NewAddAzureDatabaseParamsWithContext creates a new AddAzureDatabaseParams object +// with the default values initialized, and the ability to set a context for a request +func NewAddAzureDatabaseParamsWithContext(ctx context.Context) *AddAzureDatabaseParams { + var () + return &AddAzureDatabaseParams{ + + Context: ctx, + } +} + +// NewAddAzureDatabaseParamsWithHTTPClient creates a new AddAzureDatabaseParams object +// with the default values initialized, and the ability to set a custom HTTPClient for a request +func NewAddAzureDatabaseParamsWithHTTPClient(client *http.Client) *AddAzureDatabaseParams { + var () + return &AddAzureDatabaseParams{ + HTTPClient: client, + } +} + +/*AddAzureDatabaseParams contains all the parameters to send to the API endpoint +for the add azure database operation typically these are written to a http.Request +*/ +type AddAzureDatabaseParams struct { + + /*Body*/ + Body AddAzureDatabaseBody + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithTimeout adds the timeout to the add azure database params +func (o *AddAzureDatabaseParams) WithTimeout(timeout time.Duration) *AddAzureDatabaseParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the add azure database params +func (o *AddAzureDatabaseParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the add azure database params +func (o *AddAzureDatabaseParams) WithContext(ctx context.Context) *AddAzureDatabaseParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the add azure database params +func (o *AddAzureDatabaseParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the add azure database params +func (o *AddAzureDatabaseParams) WithHTTPClient(client *http.Client) *AddAzureDatabaseParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the add azure database params +func (o *AddAzureDatabaseParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the add azure database params +func (o *AddAzureDatabaseParams) WithBody(body AddAzureDatabaseBody) *AddAzureDatabaseParams { + o.SetBody(body) + return o +} + +// SetBody adds the body to the add azure database params +func (o *AddAzureDatabaseParams) SetBody(body AddAzureDatabaseBody) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *AddAzureDatabaseParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/managementpb/azure/json/client/azure_database/add_azure_database_responses.go b/api/managementpb/azure/json/client/azure_database/add_azure_database_responses.go new file mode 100644 index 0000000000..5991850490 --- /dev/null +++ b/api/managementpb/azure/json/client/azure_database/add_azure_database_responses.go @@ -0,0 +1,395 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package azure_database + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// AddAzureDatabaseReader is a Reader for the AddAzureDatabase structure. +type AddAzureDatabaseReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *AddAzureDatabaseReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewAddAzureDatabaseOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewAddAzureDatabaseDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewAddAzureDatabaseOK creates a AddAzureDatabaseOK with default headers values +func NewAddAzureDatabaseOK() *AddAzureDatabaseOK { + return &AddAzureDatabaseOK{} +} + +/*AddAzureDatabaseOK handles this case with default header values. + +A successful response. +*/ +type AddAzureDatabaseOK struct { + Payload interface{} +} + +func (o *AddAzureDatabaseOK) Error() string { + return fmt.Sprintf("[POST /v1/management/azure/AzureDatabase/Add][%d] addAzureDatabaseOk %+v", 200, o.Payload) +} + +func (o *AddAzureDatabaseOK) GetPayload() interface{} { + return o.Payload +} + +func (o *AddAzureDatabaseOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + // response payload + if err := consumer.Consume(response.Body(), &o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewAddAzureDatabaseDefault creates a AddAzureDatabaseDefault with default headers values +func NewAddAzureDatabaseDefault(code int) *AddAzureDatabaseDefault { + return &AddAzureDatabaseDefault{ + _statusCode: code, + } +} + +/*AddAzureDatabaseDefault handles this case with default header values. + +An unexpected error response. +*/ +type AddAzureDatabaseDefault struct { + _statusCode int + + Payload *AddAzureDatabaseDefaultBody +} + +// Code gets the status code for the add azure database default response +func (o *AddAzureDatabaseDefault) Code() int { + return o._statusCode +} + +func (o *AddAzureDatabaseDefault) Error() string { + return fmt.Sprintf("[POST /v1/management/azure/AzureDatabase/Add][%d] AddAzureDatabase default %+v", o._statusCode, o.Payload) +} + +func (o *AddAzureDatabaseDefault) GetPayload() *AddAzureDatabaseDefaultBody { + return o.Payload +} + +func (o *AddAzureDatabaseDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(AddAzureDatabaseDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/*AddAzureDatabaseBody add azure database body +swagger:model AddAzureDatabaseBody +*/ +type AddAzureDatabaseBody struct { + + // Azure database location. + Region string `json:"region,omitempty"` + + // Azure database availability zone. + Az string `json:"az,omitempty"` + + // Azure database instance ID. + InstanceID string `json:"instance_id,omitempty"` + + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + NodeModel string `json:"node_model,omitempty"` + + // Address used to connect to it. + Address string `json:"address,omitempty"` + + // Access port. + Port int64 `json:"port,omitempty"` + + // Unique across all Nodes user-defined name. Defaults to Azure Database instance ID. + NodeName string `json:"node_name,omitempty"` + + // Unique across all Services user-defined name. Defaults to Azure Database instance ID. + ServiceName string `json:"service_name,omitempty"` + + // Environment name. + Environment string `json:"environment,omitempty"` + + // Username for scraping metrics. + Username string `json:"username,omitempty"` + + // Password for scraping metrics. + Password string `json:"password,omitempty"` + + // Azure client ID. + AzureClientID string `json:"azure_client_id,omitempty"` + + // Azure client secret. + AzureClientSecret string `json:"azure_client_secret,omitempty"` + + // Azure tanant ID. + AzureTenantID string `json:"azure_tenant_id,omitempty"` + + // Azure subscription ID. + AzureSubscriptionID string `json:"azure_subscription_id,omitempty"` + + // Azure resource group. + AzureResourceGroup string `json:"azure_resource_group,omitempty"` + + // If true, adds azure_database_exporter. + AzureDatabaseExporter bool `json:"azure_database_exporter,omitempty"` + + // If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent. + QAN bool `json:"qan,omitempty"` + + // Custom user-assigned labels for Node and Service. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // Skip connection check. + SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + + // Use TLS for database connections. + TLS bool `json:"tls,omitempty"` + + // Skip TLS certificate and hostname validation. + TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + + // Disable query examples. + DisableQueryExamples bool `json:"disable_query_examples,omitempty"` + + // Tablestats group collectors will be disabled if there are more than that number of tables. + // If zero, server's default value is used. + // Use negative value to disable them. + TablestatsGroupTableLimit int32 `json:"tablestats_group_table_limit,omitempty"` + + // DiscoverAzureDatabaseType describes supported Azure Database instance engines. + // + // - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb + // - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql + // Enum: [DISCOVER_AZURE_DATABASE_TYPE_INVALID DISCOVER_AZURE_DATABASE_TYPE_MYSQL DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL] + Type *string `json:"type,omitempty"` +} + +// Validate validates this add azure database body +func (o *AddAzureDatabaseBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateType(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var addAzureDatabaseBodyTypeTypePropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["DISCOVER_AZURE_DATABASE_TYPE_INVALID","DISCOVER_AZURE_DATABASE_TYPE_MYSQL","DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + addAzureDatabaseBodyTypeTypePropEnum = append(addAzureDatabaseBodyTypeTypePropEnum, v) + } +} + +const ( + + // AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEINVALID captures enum value "DISCOVER_AZURE_DATABASE_TYPE_INVALID" + AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEINVALID string = "DISCOVER_AZURE_DATABASE_TYPE_INVALID" + + // AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEMYSQL captures enum value "DISCOVER_AZURE_DATABASE_TYPE_MYSQL" + AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEMYSQL string = "DISCOVER_AZURE_DATABASE_TYPE_MYSQL" + + // AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEPOSTGRESQL captures enum value "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + AddAzureDatabaseBodyTypeDISCOVERAZUREDATABASETYPEPOSTGRESQL string = "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" +) + +// prop value enum +func (o *AddAzureDatabaseBody) validateTypeEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, addAzureDatabaseBodyTypeTypePropEnum, true); err != nil { + return err + } + return nil +} + +func (o *AddAzureDatabaseBody) validateType(formats strfmt.Registry) error { + + if swag.IsZero(o.Type) { // not required + return nil + } + + // value enum + if err := o.validateTypeEnum("body"+"."+"type", "body", *o.Type); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseBody) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*AddAzureDatabaseDefaultBody add azure database default body +swagger:model AddAzureDatabaseDefaultBody +*/ +type AddAzureDatabaseDefaultBody struct { + + // error + Error string `json:"error,omitempty"` + + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*DetailsItems0 `json:"details"` +} + +// Validate validates this add azure database default body +func (o *AddAzureDatabaseDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *AddAzureDatabaseDefaultBody) validateDetails(formats strfmt.Registry) error { + + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("AddAzureDatabase default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AddAzureDatabaseDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AddAzureDatabaseDefaultBody) UnmarshalBinary(b []byte) error { + var res AddAzureDatabaseDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*DetailsItems0 details items0 +swagger:model DetailsItems0 +*/ +type DetailsItems0 struct { + + // type url + TypeURL string `json:"type_url,omitempty"` + + // value + // Format: byte + Value strfmt.Base64 `json:"value,omitempty"` +} + +// Validate validates this details items0 +func (o *DetailsItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *DetailsItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *DetailsItems0) UnmarshalBinary(b []byte) error { + var res DetailsItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/managementpb/azure/json/client/azure_database/azure_database_client.go b/api/managementpb/azure/json/client/azure_database/azure_database_client.go new file mode 100644 index 0000000000..3da42197b7 --- /dev/null +++ b/api/managementpb/azure/json/client/azure_database/azure_database_client.go @@ -0,0 +1,104 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package azure_database + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" +) + +// New creates a new azure database API client. +func New(transport runtime.ClientTransport, formats strfmt.Registry) ClientService { + return &Client{transport: transport, formats: formats} +} + +/* +Client for azure database API +*/ +type Client struct { + transport runtime.ClientTransport + formats strfmt.Registry +} + +// ClientService is the interface for Client methods +type ClientService interface { + AddAzureDatabase(params *AddAzureDatabaseParams) (*AddAzureDatabaseOK, error) + + DiscoverAzureDatabase(params *DiscoverAzureDatabaseParams) (*DiscoverAzureDatabaseOK, error) + + SetTransport(transport runtime.ClientTransport) +} + +/* + AddAzureDatabase adds azure database adds azure database instance +*/ +func (a *Client) AddAzureDatabase(params *AddAzureDatabaseParams) (*AddAzureDatabaseOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewAddAzureDatabaseParams() + } + + result, err := a.transport.Submit(&runtime.ClientOperation{ + ID: "AddAzureDatabase", + Method: "POST", + PathPattern: "/v1/management/azure/AzureDatabase/Add", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &AddAzureDatabaseReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + }) + if err != nil { + return nil, err + } + success, ok := result.(*AddAzureDatabaseOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*AddAzureDatabaseDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +/* + DiscoverAzureDatabase discovers azure database discovers azure database for my SQL maria DB and postgre SQL server instances +*/ +func (a *Client) DiscoverAzureDatabase(params *DiscoverAzureDatabaseParams) (*DiscoverAzureDatabaseOK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewDiscoverAzureDatabaseParams() + } + + result, err := a.transport.Submit(&runtime.ClientOperation{ + ID: "DiscoverAzureDatabase", + Method: "POST", + PathPattern: "/v1/management/azure/AzureDatabase/Discover", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &DiscoverAzureDatabaseReader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + }) + if err != nil { + return nil, err + } + success, ok := result.(*DiscoverAzureDatabaseOK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*DiscoverAzureDatabaseDefault) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + +// SetTransport changes the transport on the client +func (a *Client) SetTransport(transport runtime.ClientTransport) { + a.transport = transport +} diff --git a/api/managementpb/azure/json/client/azure_database/discover_azure_database_parameters.go b/api/managementpb/azure/json/client/azure_database/discover_azure_database_parameters.go new file mode 100644 index 0000000000..1895c2316f --- /dev/null +++ b/api/managementpb/azure/json/client/azure_database/discover_azure_database_parameters.go @@ -0,0 +1,131 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package azure_database + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewDiscoverAzureDatabaseParams creates a new DiscoverAzureDatabaseParams object +// with the default values initialized. +func NewDiscoverAzureDatabaseParams() *DiscoverAzureDatabaseParams { + var () + return &DiscoverAzureDatabaseParams{ + + timeout: cr.DefaultTimeout, + } +} + +// NewDiscoverAzureDatabaseParamsWithTimeout creates a new DiscoverAzureDatabaseParams object +// with the default values initialized, and the ability to set a timeout on a request +func NewDiscoverAzureDatabaseParamsWithTimeout(timeout time.Duration) *DiscoverAzureDatabaseParams { + var () + return &DiscoverAzureDatabaseParams{ + + timeout: timeout, + } +} + +// NewDiscoverAzureDatabaseParamsWithContext creates a new DiscoverAzureDatabaseParams object +// with the default values initialized, and the ability to set a context for a request +func NewDiscoverAzureDatabaseParamsWithContext(ctx context.Context) *DiscoverAzureDatabaseParams { + var () + return &DiscoverAzureDatabaseParams{ + + Context: ctx, + } +} + +// NewDiscoverAzureDatabaseParamsWithHTTPClient creates a new DiscoverAzureDatabaseParams object +// with the default values initialized, and the ability to set a custom HTTPClient for a request +func NewDiscoverAzureDatabaseParamsWithHTTPClient(client *http.Client) *DiscoverAzureDatabaseParams { + var () + return &DiscoverAzureDatabaseParams{ + HTTPClient: client, + } +} + +/*DiscoverAzureDatabaseParams contains all the parameters to send to the API endpoint +for the discover azure database operation typically these are written to a http.Request +*/ +type DiscoverAzureDatabaseParams struct { + + /*Body*/ + Body DiscoverAzureDatabaseBody + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithTimeout adds the timeout to the discover azure database params +func (o *DiscoverAzureDatabaseParams) WithTimeout(timeout time.Duration) *DiscoverAzureDatabaseParams { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the discover azure database params +func (o *DiscoverAzureDatabaseParams) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the discover azure database params +func (o *DiscoverAzureDatabaseParams) WithContext(ctx context.Context) *DiscoverAzureDatabaseParams { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the discover azure database params +func (o *DiscoverAzureDatabaseParams) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the discover azure database params +func (o *DiscoverAzureDatabaseParams) WithHTTPClient(client *http.Client) *DiscoverAzureDatabaseParams { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the discover azure database params +func (o *DiscoverAzureDatabaseParams) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the discover azure database params +func (o *DiscoverAzureDatabaseParams) WithBody(body DiscoverAzureDatabaseBody) *DiscoverAzureDatabaseParams { + o.SetBody(body) + return o +} + +// SetBody adds the body to the discover azure database params +func (o *DiscoverAzureDatabaseParams) SetBody(body DiscoverAzureDatabaseBody) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *DiscoverAzureDatabaseParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/managementpb/azure/json/client/azure_database/discover_azure_database_responses.go b/api/managementpb/azure/json/client/azure_database/discover_azure_database_responses.go new file mode 100644 index 0000000000..f57b41f60a --- /dev/null +++ b/api/managementpb/azure/json/client/azure_database/discover_azure_database_responses.go @@ -0,0 +1,421 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package azure_database + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "encoding/json" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// DiscoverAzureDatabaseReader is a Reader for the DiscoverAzureDatabase structure. +type DiscoverAzureDatabaseReader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *DiscoverAzureDatabaseReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewDiscoverAzureDatabaseOK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewDiscoverAzureDatabaseDefault(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewDiscoverAzureDatabaseOK creates a DiscoverAzureDatabaseOK with default headers values +func NewDiscoverAzureDatabaseOK() *DiscoverAzureDatabaseOK { + return &DiscoverAzureDatabaseOK{} +} + +/*DiscoverAzureDatabaseOK handles this case with default header values. + +A successful response. +*/ +type DiscoverAzureDatabaseOK struct { + Payload *DiscoverAzureDatabaseOKBody +} + +func (o *DiscoverAzureDatabaseOK) Error() string { + return fmt.Sprintf("[POST /v1/management/azure/AzureDatabase/Discover][%d] discoverAzureDatabaseOk %+v", 200, o.Payload) +} + +func (o *DiscoverAzureDatabaseOK) GetPayload() *DiscoverAzureDatabaseOKBody { + return o.Payload +} + +func (o *DiscoverAzureDatabaseOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(DiscoverAzureDatabaseOKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewDiscoverAzureDatabaseDefault creates a DiscoverAzureDatabaseDefault with default headers values +func NewDiscoverAzureDatabaseDefault(code int) *DiscoverAzureDatabaseDefault { + return &DiscoverAzureDatabaseDefault{ + _statusCode: code, + } +} + +/*DiscoverAzureDatabaseDefault handles this case with default header values. + +An unexpected error response. +*/ +type DiscoverAzureDatabaseDefault struct { + _statusCode int + + Payload *DiscoverAzureDatabaseDefaultBody +} + +// Code gets the status code for the discover azure database default response +func (o *DiscoverAzureDatabaseDefault) Code() int { + return o._statusCode +} + +func (o *DiscoverAzureDatabaseDefault) Error() string { + return fmt.Sprintf("[POST /v1/management/azure/AzureDatabase/Discover][%d] DiscoverAzureDatabase default %+v", o._statusCode, o.Payload) +} + +func (o *DiscoverAzureDatabaseDefault) GetPayload() *DiscoverAzureDatabaseDefaultBody { + return o.Payload +} + +func (o *DiscoverAzureDatabaseDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + + o.Payload = new(DiscoverAzureDatabaseDefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/*AzureDatabaseInstanceItems0 DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery. +swagger:model AzureDatabaseInstanceItems0 +*/ +type AzureDatabaseInstanceItems0 struct { + + // Azure database instance ID. + InstanceID string `json:"instance_id,omitempty"` + + // Azure database location. + Region string `json:"region,omitempty"` + + // Azure database server name. + ServiceName string `json:"service_name,omitempty"` + + // Database username. + Username string `json:"username,omitempty"` + + // Address used to connect to it. + Address string `json:"address,omitempty"` + + // Azure Resource group. + AzureResourceGroup string `json:"azure_resource_group,omitempty"` + + // Environment tag. + Environment string `json:"environment,omitempty"` + + // DiscoverAzureDatabaseType describes supported Azure Database instance engines. + // + // - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb + // - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql + // Enum: [DISCOVER_AZURE_DATABASE_TYPE_INVALID DISCOVER_AZURE_DATABASE_TYPE_MYSQL DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL] + Type *string `json:"type,omitempty"` + + // Azure database availability zone. + Az string `json:"az,omitempty"` + + // Represents a purchasable Stock Keeping Unit (SKU) under a product. + // https://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku. + NodeModel string `json:"node_model,omitempty"` +} + +// Validate validates this azure database instance items0 +func (o *AzureDatabaseInstanceItems0) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateType(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var azureDatabaseInstanceItems0TypeTypePropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["DISCOVER_AZURE_DATABASE_TYPE_INVALID","DISCOVER_AZURE_DATABASE_TYPE_MYSQL","DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + azureDatabaseInstanceItems0TypeTypePropEnum = append(azureDatabaseInstanceItems0TypeTypePropEnum, v) + } +} + +const ( + + // AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEINVALID captures enum value "DISCOVER_AZURE_DATABASE_TYPE_INVALID" + AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEINVALID string = "DISCOVER_AZURE_DATABASE_TYPE_INVALID" + + // AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEMYSQL captures enum value "DISCOVER_AZURE_DATABASE_TYPE_MYSQL" + AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEMYSQL string = "DISCOVER_AZURE_DATABASE_TYPE_MYSQL" + + // AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEPOSTGRESQL captures enum value "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + AzureDatabaseInstanceItems0TypeDISCOVERAZUREDATABASETYPEPOSTGRESQL string = "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" +) + +// prop value enum +func (o *AzureDatabaseInstanceItems0) validateTypeEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, azureDatabaseInstanceItems0TypeTypePropEnum, true); err != nil { + return err + } + return nil +} + +func (o *AzureDatabaseInstanceItems0) validateType(formats strfmt.Registry) error { + + if swag.IsZero(o.Type) { // not required + return nil + } + + // value enum + if err := o.validateTypeEnum("type", "body", *o.Type); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *AzureDatabaseInstanceItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *AzureDatabaseInstanceItems0) UnmarshalBinary(b []byte) error { + var res AzureDatabaseInstanceItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*DiscoverAzureDatabaseBody DiscoverAzureDatabaseRequest discover azure databases request. +swagger:model DiscoverAzureDatabaseBody +*/ +type DiscoverAzureDatabaseBody struct { + + // Azure client ID. + AzureClientID string `json:"azure_client_id,omitempty"` + + // Azure client secret. + AzureClientSecret string `json:"azure_client_secret,omitempty"` + + // Azure tanant ID. + AzureTenantID string `json:"azure_tenant_id,omitempty"` + + // Azure subscription ID. + AzureSubscriptionID string `json:"azure_subscription_id,omitempty"` +} + +// Validate validates this discover azure database body +func (o *DiscoverAzureDatabaseBody) Validate(formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *DiscoverAzureDatabaseBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *DiscoverAzureDatabaseBody) UnmarshalBinary(b []byte) error { + var res DiscoverAzureDatabaseBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*DiscoverAzureDatabaseDefaultBody discover azure database default body +swagger:model DiscoverAzureDatabaseDefaultBody +*/ +type DiscoverAzureDatabaseDefaultBody struct { + + // error + Error string `json:"error,omitempty"` + + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*DetailsItems0 `json:"details"` +} + +// Validate validates this discover azure database default body +func (o *DiscoverAzureDatabaseDefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *DiscoverAzureDatabaseDefaultBody) validateDetails(formats strfmt.Registry) error { + + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("DiscoverAzureDatabase default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *DiscoverAzureDatabaseDefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *DiscoverAzureDatabaseDefaultBody) UnmarshalBinary(b []byte) error { + var res DiscoverAzureDatabaseDefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/*DiscoverAzureDatabaseOKBody DiscoverAzureDatabaseResponse discover azure databases response. +swagger:model DiscoverAzureDatabaseOKBody +*/ +type DiscoverAzureDatabaseOKBody struct { + + // azure database instance + AzureDatabaseInstance []*AzureDatabaseInstanceItems0 `json:"azure_database_instance"` +} + +// Validate validates this discover azure database OK body +func (o *DiscoverAzureDatabaseOKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateAzureDatabaseInstance(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *DiscoverAzureDatabaseOKBody) validateAzureDatabaseInstance(formats strfmt.Registry) error { + + if swag.IsZero(o.AzureDatabaseInstance) { // not required + return nil + } + + for i := 0; i < len(o.AzureDatabaseInstance); i++ { + if swag.IsZero(o.AzureDatabaseInstance[i]) { // not required + continue + } + + if o.AzureDatabaseInstance[i] != nil { + if err := o.AzureDatabaseInstance[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("discoverAzureDatabaseOk" + "." + "azure_database_instance" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// MarshalBinary interface implementation +func (o *DiscoverAzureDatabaseOKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *DiscoverAzureDatabaseOKBody) UnmarshalBinary(b []byte) error { + var res DiscoverAzureDatabaseOKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/managementpb/azure/json/client/pmm_d_baa_s_client.go b/api/managementpb/azure/json/client/pmm_d_baa_s_client.go new file mode 100644 index 0000000000..7e04305e46 --- /dev/null +++ b/api/managementpb/azure/json/client/pmm_d_baa_s_client.go @@ -0,0 +1,112 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package client + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "github.com/go-openapi/runtime" + httptransport "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" + + "github.com/percona/pmm/api/managementpb/azure/json/client/azure_database" +) + +// Default PMM d baa s HTTP client. +var Default = NewHTTPClient(nil) + +const ( + // DefaultHost is the default Host + // found in Meta (info) section of spec file + DefaultHost string = "localhost" + // DefaultBasePath is the default BasePath + // found in Meta (info) section of spec file + DefaultBasePath string = "/" +) + +// DefaultSchemes are the default schemes found in Meta (info) section of spec file +var DefaultSchemes = []string{"http", "https"} + +// NewHTTPClient creates a new PMM d baa s HTTP client. +func NewHTTPClient(formats strfmt.Registry) *PMMDBaaS { + return NewHTTPClientWithConfig(formats, nil) +} + +// NewHTTPClientWithConfig creates a new PMM d baa s HTTP client, +// using a customizable transport config. +func NewHTTPClientWithConfig(formats strfmt.Registry, cfg *TransportConfig) *PMMDBaaS { + // ensure nullable parameters have default + if cfg == nil { + cfg = DefaultTransportConfig() + } + + // create transport and client + transport := httptransport.New(cfg.Host, cfg.BasePath, cfg.Schemes) + return New(transport, formats) +} + +// New creates a new PMM d baa s client +func New(transport runtime.ClientTransport, formats strfmt.Registry) *PMMDBaaS { + // ensure nullable parameters have default + if formats == nil { + formats = strfmt.Default + } + + cli := new(PMMDBaaS) + cli.Transport = transport + cli.AzureDatabase = azure_database.New(transport, formats) + return cli +} + +// DefaultTransportConfig creates a TransportConfig with the +// default settings taken from the meta section of the spec file. +func DefaultTransportConfig() *TransportConfig { + return &TransportConfig{ + Host: DefaultHost, + BasePath: DefaultBasePath, + Schemes: DefaultSchemes, + } +} + +// TransportConfig contains the transport related info, +// found in the meta section of the spec file. +type TransportConfig struct { + Host string + BasePath string + Schemes []string +} + +// WithHost overrides the default host, +// provided by the meta section of the spec file. +func (cfg *TransportConfig) WithHost(host string) *TransportConfig { + cfg.Host = host + return cfg +} + +// WithBasePath overrides the default basePath, +// provided by the meta section of the spec file. +func (cfg *TransportConfig) WithBasePath(basePath string) *TransportConfig { + cfg.BasePath = basePath + return cfg +} + +// WithSchemes overrides the default schemes, +// provided by the meta section of the spec file. +func (cfg *TransportConfig) WithSchemes(schemes []string) *TransportConfig { + cfg.Schemes = schemes + return cfg +} + +// PMMDBaaS is a client for PMM d baa s +type PMMDBaaS struct { + AzureDatabase azure_database.ClientService + + Transport runtime.ClientTransport +} + +// SetTransport changes the transport on the client and all its subresources +func (c *PMMDBaaS) SetTransport(transport runtime.ClientTransport) { + c.Transport = transport + c.AzureDatabase.SetTransport(transport) +} diff --git a/api/managementpb/azure/json/header.json b/api/managementpb/azure/json/header.json new file mode 100644 index 0000000000..38cb8b73ce --- /dev/null +++ b/api/managementpb/azure/json/header.json @@ -0,0 +1,11 @@ +{ + "swagger": "2.0", + "info": { + "title": "PMM DBaaS API", + "version": "v1beta1" + }, + "schemes": [ + "https", + "http" + ] +} diff --git a/api/managementpb/json/client/external/add_external_responses.go b/api/managementpb/json/client/external/add_external_responses.go index f7ddceba69..df9cf6c965 100644 --- a/api/managementpb/json/client/external/add_external_responses.go +++ b/api/managementpb/json/client/external/add_external_responses.go @@ -563,7 +563,7 @@ swagger:model AddExternalParamsBodyAddNode type AddExternalParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -612,7 +612,7 @@ var addExternalParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -636,6 +636,9 @@ const ( // AddExternalParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddExternalParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddExternalParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddExternalParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/ha_proxy/add_ha_proxy_responses.go b/api/managementpb/json/client/ha_proxy/add_ha_proxy_responses.go index 8c0469af2b..1b96224497 100644 --- a/api/managementpb/json/client/ha_proxy/add_ha_proxy_responses.go +++ b/api/managementpb/json/client/ha_proxy/add_ha_proxy_responses.go @@ -552,7 +552,7 @@ swagger:model AddHAProxyParamsBodyAddNode type AddHAProxyParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -601,7 +601,7 @@ var addHaProxyParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -625,6 +625,9 @@ const ( // AddHAProxyParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddHAProxyParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddHAProxyParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddHAProxyParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/mongo_db/add_mongo_db_responses.go b/api/managementpb/json/client/mongo_db/add_mongo_db_responses.go index c19ab2233f..5110847381 100644 --- a/api/managementpb/json/client/mongo_db/add_mongo_db_responses.go +++ b/api/managementpb/json/client/mongo_db/add_mongo_db_responses.go @@ -816,7 +816,7 @@ swagger:model AddMongoDBParamsBodyAddNode type AddMongoDBParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -865,7 +865,7 @@ var addMongoDbParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -889,6 +889,9 @@ const ( // AddMongoDBParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddMongoDBParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddMongoDBParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddMongoDBParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/my_sql/add_my_sql_responses.go b/api/managementpb/json/client/my_sql/add_my_sql_responses.go index adfa7daf78..097dd11293 100644 --- a/api/managementpb/json/client/my_sql/add_my_sql_responses.go +++ b/api/managementpb/json/client/my_sql/add_my_sql_responses.go @@ -995,7 +995,7 @@ swagger:model AddMySQLParamsBodyAddNode type AddMySQLParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -1044,7 +1044,7 @@ var addMySqlParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -1068,6 +1068,9 @@ const ( // AddMySQLParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddMySQLParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddMySQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddMySQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/node/register_node_responses.go b/api/managementpb/json/client/node/register_node_responses.go index 84c3f8baab..0527048e7b 100644 --- a/api/managementpb/json/client/node/register_node_responses.go +++ b/api/managementpb/json/client/node/register_node_responses.go @@ -265,7 +265,7 @@ swagger:model RegisterNodeBody type RegisterNodeBody struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -332,7 +332,7 @@ var registerNodeBodyTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -356,6 +356,9 @@ const ( // RegisterNodeBodyNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" RegisterNodeBodyNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // RegisterNodeBodyNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + RegisterNodeBodyNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go b/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go index 1f1fd0b187..3d757ba883 100644 --- a/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go +++ b/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go @@ -968,7 +968,7 @@ swagger:model AddPostgreSQLParamsBodyAddNode type AddPostgreSQLParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -1017,7 +1017,7 @@ var addPostgreSqlParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -1041,6 +1041,9 @@ const ( // AddPostgreSQLParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddPostgreSQLParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddPostgreSQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddPostgreSQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/client/proxy_sql/add_proxy_sql_responses.go b/api/managementpb/json/client/proxy_sql/add_proxy_sql_responses.go index c4c1bde7bc..9ea3e4eb1d 100644 --- a/api/managementpb/json/client/proxy_sql/add_proxy_sql_responses.go +++ b/api/managementpb/json/client/proxy_sql/add_proxy_sql_responses.go @@ -652,7 +652,7 @@ swagger:model AddProxySQLParamsBodyAddNode type AddProxySQLParamsBodyAddNode struct { // NodeType describes supported Node types. - // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE] + // Enum: [NODE_TYPE_INVALID GENERIC_NODE CONTAINER_NODE REMOTE_NODE REMOTE_RDS_NODE REMOTE_AZURE_DATABASE_NODE] NodeType *string `json:"node_type,omitempty"` // Unique across all Nodes user-defined name. @@ -701,7 +701,7 @@ var addProxySqlParamsBodyAddNodeTypeNodeTypePropEnum []interface{} func init() { var res []string - if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE"]`), &res); err != nil { + if err := json.Unmarshal([]byte(`["NODE_TYPE_INVALID","GENERIC_NODE","CONTAINER_NODE","REMOTE_NODE","REMOTE_RDS_NODE","REMOTE_AZURE_DATABASE_NODE"]`), &res); err != nil { panic(err) } for _, v := range res { @@ -725,6 +725,9 @@ const ( // AddProxySQLParamsBodyAddNodeNodeTypeREMOTERDSNODE captures enum value "REMOTE_RDS_NODE" AddProxySQLParamsBodyAddNodeNodeTypeREMOTERDSNODE string = "REMOTE_RDS_NODE" + + // AddProxySQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE captures enum value "REMOTE_AZURE_DATABASE_NODE" + AddProxySQLParamsBodyAddNodeNodeTypeREMOTEAZUREDATABASENODE string = "REMOTE_AZURE_DATABASE_NODE" ) // prop value enum diff --git a/api/managementpb/json/managementpb.json b/api/managementpb/json/managementpb.json index 42419b0562..60365134a1 100644 --- a/api/managementpb/json/managementpb.json +++ b/api/managementpb/json/managementpb.json @@ -1663,7 +1663,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -2010,7 +2011,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -2342,7 +2344,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -2814,7 +2817,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -3410,7 +3414,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -3698,7 +3703,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -4234,7 +4240,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, diff --git a/api/serverpb/json/client/server/change_settings_responses.go b/api/serverpb/json/client/server/change_settings_responses.go index db2bf8e0a4..a65d8eae53 100644 --- a/api/serverpb/json/client/server/change_settings_responses.go +++ b/api/serverpb/json/client/server/change_settings_responses.go @@ -173,6 +173,12 @@ type ChangeSettingsBody struct { // remove pmm public address RemovePMMPublicAddress bool `json:"remove_pmm_public_address,omitempty"` + // Enable Azure Discover. + EnableAzurediscover bool `json:"enable_azurediscover,omitempty"` + + // Disable Azure Discover. + DisableAzurediscover bool `json:"disable_azurediscover,omitempty"` + // Enable Backup Management. EnableBackupManagement bool `json:"enable_backup_management,omitempty"` @@ -486,6 +492,9 @@ type ChangeSettingsOKBodySettings struct { // True if Backup Management is enabled. BackupManagementEnabled bool `json:"backup_management_enabled,omitempty"` + // True if Azure Discover is enabled. + AzurediscoverEnabled bool `json:"azurediscover_enabled,omitempty"` + // email alerting settings EmailAlertingSettings *ChangeSettingsOKBodySettingsEmailAlertingSettings `json:"email_alerting_settings,omitempty"` diff --git a/api/serverpb/json/client/server/get_settings_responses.go b/api/serverpb/json/client/server/get_settings_responses.go index 7fa3955ff1..35587efca9 100644 --- a/api/serverpb/json/client/server/get_settings_responses.go +++ b/api/serverpb/json/client/server/get_settings_responses.go @@ -295,6 +295,9 @@ type GetSettingsOKBodySettings struct { // True if Backup Management is enabled. BackupManagementEnabled bool `json:"backup_management_enabled,omitempty"` + // True if Azure Discover is enabled. + AzurediscoverEnabled bool `json:"azurediscover_enabled,omitempty"` + // email alerting settings EmailAlertingSettings *GetSettingsOKBodySettingsEmailAlertingSettings `json:"email_alerting_settings,omitempty"` diff --git a/api/serverpb/json/serverpb.json b/api/serverpb/json/serverpb.json index 4f85da277a..a70e93834e 100644 --- a/api/serverpb/json/serverpb.json +++ b/api/serverpb/json/serverpb.json @@ -401,10 +401,15 @@ "type": "boolean", "x-order": 13 }, + "disable_azurediscover": { + "description": "Disable Azure Discover.", + "type": "boolean", + "x-order": 22 + }, "disable_backup_management": { "description": "Disable Backup Management.", "type": "boolean", - "x-order": 22 + "x-order": 24 }, "disable_stt": { "description": "Disable Security Threat Tool.", @@ -462,10 +467,15 @@ "type": "boolean", "x-order": 12 }, + "enable_azurediscover": { + "description": "Enable Azure Discover.", + "type": "boolean", + "x-order": 21 + }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 21 + "x-order": 23 }, "enable_stt": { "description": "Enable Security Threat Tool.", @@ -601,6 +611,11 @@ }, "x-order": 5 }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 + }, "backup_management_enabled": { "description": "True if Backup Management is enabled.", "type": "boolean", @@ -839,6 +854,11 @@ }, "x-order": 5 }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 + }, "backup_management_enabled": { "description": "True if Backup Management is enabled.", "type": "boolean", diff --git a/api/serverpb/server.pb.go b/api/serverpb/server.pb.go index ffe8594310..ee5c816c20 100644 --- a/api/serverpb/server.pb.go +++ b/api/serverpb/server.pb.go @@ -1023,7 +1023,9 @@ type Settings struct { // Intervals between STT check runs. SttCheckIntervals *STTCheckIntervals `protobuf:"bytes,16,opt,name=stt_check_intervals,json=sttCheckIntervals,proto3" json:"stt_check_intervals,omitempty"` // True if Backup Management is enabled. - BackupManagementEnabled bool `protobuf:"varint,17,opt,name=backup_management_enabled,json=backupManagementEnabled,proto3" json:"backup_management_enabled,omitempty"` + BackupManagementEnabled bool `protobuf:"varint,18,opt,name=backup_management_enabled,json=backupManagementEnabled,proto3" json:"backup_management_enabled,omitempty"` + // True if Azure Discover is enabled. + AzurediscoverEnabled bool `protobuf:"varint,17,opt,name=azurediscover_enabled,json=azurediscoverEnabled,proto3" json:"azurediscover_enabled,omitempty"` } func (x *Settings) Reset() { @@ -1177,6 +1179,13 @@ func (x *Settings) GetBackupManagementEnabled() bool { return false } +func (x *Settings) GetAzurediscoverEnabled() bool { + if x != nil { + return x.AzurediscoverEnabled + } + return false +} + type GetSettingsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1303,10 +1312,14 @@ type ChangeSettingsRequest struct { RemovePmmPublicAddress bool `protobuf:"varint,20,opt,name=remove_pmm_public_address,json=removePmmPublicAddress,proto3" json:"remove_pmm_public_address,omitempty"` // Intervals between STT check runs. SttCheckIntervals *STTCheckIntervals `protobuf:"bytes,21,opt,name=stt_check_intervals,json=sttCheckIntervals,proto3" json:"stt_check_intervals,omitempty"` + // Enable Azure Discover. + EnableAzurediscover bool `protobuf:"varint,22,opt,name=enable_azurediscover,json=enableAzurediscover,proto3" json:"enable_azurediscover,omitempty"` + // Disable Azure Discover. + DisableAzurediscover bool `protobuf:"varint,23,opt,name=disable_azurediscover,json=disableAzurediscover,proto3" json:"disable_azurediscover,omitempty"` // Enable Backup Management. - EnableBackupManagement bool `protobuf:"varint,22,opt,name=enable_backup_management,json=enableBackupManagement,proto3" json:"enable_backup_management,omitempty"` + EnableBackupManagement bool `protobuf:"varint,24,opt,name=enable_backup_management,json=enableBackupManagement,proto3" json:"enable_backup_management,omitempty"` // Disable Backup Management. - DisableBackupManagement bool `protobuf:"varint,23,opt,name=disable_backup_management,json=disableBackupManagement,proto3" json:"disable_backup_management,omitempty"` + DisableBackupManagement bool `protobuf:"varint,25,opt,name=disable_backup_management,json=disableBackupManagement,proto3" json:"disable_backup_management,omitempty"` } func (x *ChangeSettingsRequest) Reset() { @@ -1488,6 +1501,20 @@ func (x *ChangeSettingsRequest) GetSttCheckIntervals() *STTCheckIntervals { return nil } +func (x *ChangeSettingsRequest) GetEnableAzurediscover() bool { + if x != nil { + return x.EnableAzurediscover + } + return false +} + +func (x *ChangeSettingsRequest) GetDisableAzurediscover() bool { + if x != nil { + return x.DisableAzurediscover + } + return false +} + func (x *ChangeSettingsRequest) GetEnableBackupManagement() bool { if x != nil { return x.EnableBackupManagement @@ -2042,7 +2069,7 @@ var file_serverpb_server_proto_rawDesc = []byte{ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x22, 0x88, 0x07, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, + 0x22, 0xbd, 0x07, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x65, 0x6c, 0x65, @@ -2096,207 +2123,217 @@ var file_serverpb_server_proto_rawDesc = []byte{ 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x86, 0x0a, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x4b, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, - 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, - 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, - 0x55, 0x72, 0x6c, 0x12, 0x37, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x13, - 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x72, 0x75, - 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, - 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x55, 0x0a, - 0x17, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x15, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x17, 0x73, 0x6c, 0x61, - 0x63, 0x6b, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x15, 0x73, 0x6c, 0x61, 0x63, 0x6b, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x6c, 0x61, 0x63, 0x6b, - 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xee, 0x0a, 0x0a, 0x15, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, + 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x4b, 0x0a, + 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, + 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x37, 0x0a, 0x18, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x55, 0x72, + 0x6c, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x65, + 0x72, 0x74, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x12, 0x55, 0x0a, 0x17, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x61, + 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x15, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x1b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x55, + 0x0a, 0x17, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x6c, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x15, + 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, + 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6d, - 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, - 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x46, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, - 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x31, + 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x46, 0x0a, 0x16, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, - 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, - 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, 0x0a, 0x17, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x53, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, - 0x1b, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, - 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x56, - 0x46, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x32, 0x8d, 0x09, 0x0a, - 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, - 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0x67, - 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1b, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x61, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x51, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, + 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, + 0x58, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x18, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, + 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x53, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, + 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, + 0x44, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x56, 0x46, 0x10, 0x02, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x32, 0x8d, 0x09, 0x0a, 0x06, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, + 0x73, 0x73, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, + 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0x67, 0x0a, 0x0c, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x68, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x64, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x68, 0x0a, 0x0c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, - 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, - 0x10, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x57, 0x53, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, - 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, - 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x69, 0x67, - 0x6e, 0x55, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, - 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x69, - 0x67, 0x6e, 0x49, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, - 0x4f, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, - 0x4f, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2f, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x3a, 0x01, 0x2a, 0x42, 0x17, 0x5a, 0x15, - 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, + 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x10, 0x41, 0x57, + 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, + 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x3a, + 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, + 0x67, 0x6e, 0x55, 0x70, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, 0x31, + 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x69, 0x67, 0x6e, 0x55, 0x70, + 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, + 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, + 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x69, 0x67, 0x6e, 0x49, + 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, + 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, + 0x69, 0x67, 0x6e, 0x4f, 0x75, 0x74, 0x3a, 0x01, 0x2a, 0x42, 0x17, 0x5a, 0x15, 0x61, 0x70, 0x69, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/serverpb/server.proto b/api/serverpb/server.proto index ac70d6139a..2c6a62e2dd 100644 --- a/api/serverpb/server.proto +++ b/api/serverpb/server.proto @@ -185,7 +185,9 @@ message Settings { // Intervals between STT check runs. STTCheckIntervals stt_check_intervals = 16; // True if Backup Management is enabled. - bool backup_management_enabled = 17; + bool backup_management_enabled = 18; + // True if Azure Discover is enabled. + bool azurediscover_enabled = 17; } message GetSettingsRequest {} @@ -234,10 +236,14 @@ message ChangeSettingsRequest { bool remove_pmm_public_address = 20; // Intervals between STT check runs. STTCheckIntervals stt_check_intervals = 21; + // Enable Azure Discover. + bool enable_azurediscover = 22; + // Disable Azure Discover. + bool disable_azurediscover = 23; // Enable Backup Management. - bool enable_backup_management = 22; + bool enable_backup_management = 24; // Disable Backup Management. - bool disable_backup_management = 23; + bool disable_backup_management = 25; } message ChangeSettingsResponse { diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index f21a512249..a59b45ce6d 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -2248,15 +2248,25 @@ }, "x-order": 20 }, + "enable_azurediscover": { + "description": "Enable Azure Discover.", + "type": "boolean", + "x-order": 21 + }, + "disable_azurediscover": { + "description": "Disable Azure Discover.", + "type": "boolean", + "x-order": 22 + }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 21 + "x-order": 23 }, "disable_backup_management": { "description": "Disable Backup Management.", "type": "boolean", - "x-order": 22 + "x-order": 24 } } } @@ -2434,6 +2444,11 @@ "description": "True if Backup Management is enabled.", "type": "boolean", "x-order": 16 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 } }, "x-order": 0 @@ -2672,6 +2687,11 @@ "description": "True if Backup Management is enabled.", "type": "boolean", "x-order": 16 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 } }, "x-order": 0 @@ -3037,6 +3057,204 @@ } } }, + "/v1/inventory/Agents/AddAzureDatabaseExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "AddAzureDatabaseExporter adds azure_database_exporter Agent.", + "operationId": "AddAzureDatabaseExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 0 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 1 + }, + "azure_client_id": { + "type": "string", + "title": "Azure client ID", + "x-order": 2 + }, + "azure_client_secret": { + "type": "string", + "title": "Azure client secret", + "x-order": 3 + }, + "azure_tenant_id": { + "type": "string", + "title": "Azure tanant ID", + "x-order": 4 + }, + "azure_subscription_id": { + "type": "string", + "title": "Azure subscription ID", + "x-order": 5 + }, + "azure_resource_group": { + "description": "Azure resource group.", + "type": "string", + "x-order": 6 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure resource type (mysql, maria, postgres)", + "x-order": 7 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 8 + }, + "skip_connection_check": { + "description": "Skip connection check.", + "type": "boolean", + "x-order": 9 + }, + "push_metrics": { + "description": "Enables push metrics mode for exporter.", + "type": "boolean", + "x-order": 10 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, "/v1/inventory/Agents/AddExternalExporter": { "post": { "tags": [ @@ -5498,13 +5716,13 @@ } } }, - "/v1/inventory/Agents/ChangeExternalExporter": { + "/v1/inventory/Agents/ChangeAzureDatabaseExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeExternalExporter changes external_exporter Agent.", - "operationId": "ChangeExternalExporter", + "summary": "ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent.", + "operationId": "ChangeAzureDatabaseExporter", "parameters": [ { "name": "body", @@ -5567,8 +5785,8 @@ "schema": { "type": "object", "properties": { - "external_exporter": { - "description": "ExternalExporter runs on any Node type, including Remote Node.", + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", "type": "object", "properties": { "agent_id": { @@ -5576,52 +5794,61 @@ "type": "string", "x-order": 0 }, - "runs_on_node_id": { - "description": "Node identifier where this instance runs.", + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", "type": "string", "x-order": 1 }, "disabled": { - "description": "If disabled, metrics from this exporter will not be collected.", + "description": "Desired Agent status: enabled (false) or disabled (true).", "type": "boolean", "x-order": 2 }, - "service_id": { - "description": "Service identifier.", + "node_id": { + "description": "Node identifier.", "type": "string", "x-order": 3 }, - "username": { - "description": "HTTP basic auth username for collecting metrics.", + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", "type": "string", "x-order": 4 }, - "scheme": { - "description": "Scheme to generate URI to exporter metrics endpoints.", + "azure_database_resource_type": { "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", "x-order": 5 }, - "metrics_path": { - "description": "Path under which metrics are exposed, used to generate URI.", - "type": "string", - "x-order": 6 - }, "custom_labels": { "description": "Custom user-assigned labels.", "type": "object", "additionalProperties": { "type": "string" }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], "x-order": 7 }, "listen_port": { - "description": "Listen port for scraping metrics.", + "description": "Listen port for scraping metrics (the same for several configurations).", "type": "integer", "format": "int64", "x-order": 8 }, "push_metrics_enabled": { - "description": "True if exporter uses push metrics mode.", + "description": "True if the exporter operates in push metrics mode.", "type": "boolean", "x-order": 9 } @@ -5673,13 +5900,13 @@ } } }, - "/v1/inventory/Agents/ChangeMongoDBExporter": { + "/v1/inventory/Agents/ChangeExternalExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", - "operationId": "ChangeMongoDBExporter", + "summary": "ChangeExternalExporter changes external_exporter Agent.", + "operationId": "ChangeExternalExporter", "parameters": [ { "name": "body", @@ -5742,8 +5969,8 @@ "schema": { "type": "object", "properties": { - "mongodb_exporter": { - "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "external_exporter": { + "description": "ExternalExporter runs on any Node type, including Remote Node.", "type": "object", "properties": { "agent_id": { @@ -5751,13 +5978,13 @@ "type": "string", "x-order": 0 }, - "pmm_agent_id": { - "description": "The pmm-agent identifier which runs this instance.", + "runs_on_node_id": { + "description": "Node identifier where this instance runs.", "type": "string", "x-order": 1 }, "disabled": { - "description": "Desired Agent status: enabled (false) or disabled (true).", + "description": "If disabled, metrics from this exporter will not be collected.", "type": "boolean", "x-order": 2 }, @@ -5767,16 +5994,191 @@ "x-order": 3 }, "username": { - "description": "MongoDB username for scraping metrics.", + "description": "HTTP basic auth username for collecting metrics.", "type": "string", "x-order": 4 }, - "tls": { - "description": "Use TLS for database connections.", - "type": "boolean", + "scheme": { + "description": "Scheme to generate URI to exporter metrics endpoints.", + "type": "string", "x-order": 5 }, - "tls_skip_verify": { + "metrics_path": { + "description": "Path under which metrics are exposed, used to generate URI.", + "type": "string", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics.", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if exporter uses push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, + "/v1/inventory/Agents/ChangeMongoDBExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", + "operationId": "ChangeMongoDBExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "agent_id": { + "type": "string", + "x-order": 0 + }, + "common": { + "description": "ChangeCommonAgentParams contains parameters that can be changed for all Agents.", + "type": "object", + "properties": { + "enable": { + "description": "Enable this Agent. Can't be used with disabled.", + "type": "boolean", + "x-order": 0 + }, + "disable": { + "description": "Disable this Agent. Can't be used with enabled.", + "type": "boolean", + "x-order": 1 + }, + "custom_labels": { + "description": "Replace all custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 2 + }, + "remove_custom_labels": { + "description": "Remove all custom user-assigned labels.", + "type": "boolean", + "x-order": 3 + }, + "enable_push_metrics": { + "description": "Enables push metrics with vmagent, can't be used with disable_push_metrics.\nCan't be used with agent version lower then 2.12 and unsupported agents.", + "type": "boolean", + "x-order": 4 + }, + "disable_push_metrics": { + "description": "Disables push metrics, pmm-server starts to pull it, can't be used with enable_push_metrics.", + "type": "boolean", + "x-order": 5 + } + }, + "x-order": 1 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "mongodb_exporter": { + "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MongoDB username for scraping metrics.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", "x-order": 6 @@ -8722,6 +9124,76 @@ } }, "x-order": 13 + }, + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 14 } } } @@ -8817,7 +9289,8 @@ "QAN_POSTGRESQL_PGSTATEMENTS_AGENT", "QAN_POSTGRESQL_PGSTATMONITOR_AGENT", "RDS_EXPORTER", - "EXTERNAL_EXPORTER" + "EXTERNAL_EXPORTER", + "AZURE_DATABASE_EXPORTER" ], "x-order": 3 } @@ -9816,23 +10289,96 @@ } }, "x-order": 13 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string", - "x-order": 0 - }, - "code": { - "type": "integer", - "format": "int32", - "x-order": 1 + }, + "azure_database_exporter": { + "type": "array", + "items": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + } + }, + "x-order": 14 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 }, "message": { "type": "string", @@ -10433,6 +10979,154 @@ } } }, + "/v1/inventory/Nodes/AddRemoteAzureDatabase": { + "post": { + "tags": [ + "Nodes" + ], + "summary": "AddRemoteAzureDatabaseNode adds remote Azure database Node.", + "operationId": "AddRemoteAzureDatabaseNode", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 0 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 1 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 2 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 3 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 5 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, "/v1/inventory/Nodes/AddRemoteRDS": { "post": { "tags": [ @@ -10815,37 +11509,82 @@ } }, "x-order": 3 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string", - "x-order": 0 - }, - "code": { - "type": "integer", - "format": "int32", - "x-order": 1 - }, - "message": { - "type": "string", - "x-order": 2 }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type_url": { - "type": "string", - "x-order": 0 - }, + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + }, + "x-order": 4 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, "value": { "type": "string", "format": "byte", @@ -10885,7 +11624,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 } @@ -11115,6 +11855,54 @@ } }, "x-order": 3 + }, + "remote_azure_database": { + "type": "array", + "items": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + } + }, + "x-order": 4 } } } @@ -17966,7 +18754,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -18313,7 +19102,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -18645,7 +19435,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -19117,7 +19908,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -19679,7 +20471,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -20001,7 +20794,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -20537,7 +21331,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -22304,6 +23099,368 @@ } } }, + "/v1/management/azure/AzureDatabase/Add": { + "post": { + "tags": [ + "AzureDatabase" + ], + "summary": "AddAzureDatabase adds Azure Database instance.", + "operationId": "AddAzureDatabase", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "region": { + "description": "Azure database location.", + "type": "string", + "x-order": 0 + }, + "az": { + "description": "Azure database availability zone.", + "type": "string", + "x-order": 1 + }, + "instance_id": { + "description": "Azure database instance ID.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", + "type": "string", + "x-order": 3 + }, + "address": { + "description": "Address used to connect to it.", + "type": "string", + "x-order": 4 + }, + "port": { + "description": "Access port.", + "type": "integer", + "format": "int64", + "x-order": 5 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name. Defaults to Azure Database instance ID.", + "type": "string", + "x-order": 6 + }, + "service_name": { + "description": "Unique across all Services user-defined name. Defaults to Azure Database instance ID.", + "type": "string", + "x-order": 7 + }, + "environment": { + "description": "Environment name.", + "type": "string", + "x-order": 8 + }, + "username": { + "description": "Username for scraping metrics.", + "type": "string", + "x-order": 9 + }, + "password": { + "description": "Password for scraping metrics.", + "type": "string", + "x-order": 10 + }, + "azure_client_id": { + "description": "Azure client ID.", + "type": "string", + "x-order": 11 + }, + "azure_client_secret": { + "description": "Azure client secret.", + "type": "string", + "x-order": 12 + }, + "azure_tenant_id": { + "description": "Azure tanant ID.", + "type": "string", + "x-order": 13 + }, + "azure_subscription_id": { + "description": "Azure subscription ID.", + "type": "string", + "x-order": 14 + }, + "azure_resource_group": { + "description": "Azure resource group.", + "type": "string", + "x-order": 15 + }, + "azure_database_exporter": { + "description": "If true, adds azure_database_exporter.", + "type": "boolean", + "x-order": 16 + }, + "qan": { + "description": "If true, adds qan-mysql-perfschema-agent or qan-postgresql-pgstatements-agent.", + "type": "boolean", + "x-order": 17 + }, + "custom_labels": { + "description": "Custom user-assigned labels for Node and Service.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 18 + }, + "skip_connection_check": { + "description": "Skip connection check.", + "type": "boolean", + "x-order": 19 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 20 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 21 + }, + "disable_query_examples": { + "description": "Disable query examples.", + "type": "boolean", + "x-order": 22 + }, + "tablestats_group_table_limit": { + "description": "Tablestats group collectors will be disabled if there are more than that number of tables.\nIf zero, server's default value is used.\nUse negative value to disable them.", + "type": "integer", + "format": "int32", + "x-order": 23 + }, + "type": { + "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", + "type": "string", + "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "enum": [ + "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", + "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + ], + "x-order": 24 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, + "/v1/management/azure/AzureDatabase/Discover": { + "post": { + "tags": [ + "AzureDatabase" + ], + "summary": "DiscoverAzureDatabase discovers Azure Database for MySQL, MariaDB and PostgreSQL Server instances.", + "operationId": "DiscoverAzureDatabase", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "description": "DiscoverAzureDatabaseRequest discover azure databases request.", + "type": "object", + "properties": { + "azure_client_id": { + "description": "Azure client ID.", + "type": "string", + "x-order": 0 + }, + "azure_client_secret": { + "description": "Azure client secret.", + "type": "string", + "x-order": 1 + }, + "azure_tenant_id": { + "description": "Azure tanant ID.", + "type": "string", + "x-order": 2 + }, + "azure_subscription_id": { + "description": "Azure subscription ID.", + "type": "string", + "x-order": 3 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "description": "DiscoverAzureDatabaseResponse discover azure databases response.", + "type": "object", + "properties": { + "azure_database_instance": { + "type": "array", + "items": { + "description": "DiscoverAzureDatabaseInstance models an unique Azure Database instance for the list of instances returned by Discovery.", + "type": "object", + "properties": { + "instance_id": { + "description": "Azure database instance ID.", + "type": "string", + "x-order": 0 + }, + "region": { + "description": "Azure database location.", + "type": "string", + "x-order": 1 + }, + "service_name": { + "description": "Azure database server name.", + "type": "string", + "x-order": 2 + }, + "username": { + "description": "Database username.", + "type": "string", + "x-order": 3 + }, + "address": { + "description": "Address used to connect to it.", + "type": "string", + "x-order": 4 + }, + "azure_resource_group": { + "description": "Azure Resource group.", + "type": "string", + "x-order": 5 + }, + "environment": { + "description": "Environment tag.", + "type": "string", + "x-order": 6 + }, + "type": { + "description": "DiscoverAzureDatabaseType describes supported Azure Database instance engines.\n\n - DISCOVER_AZURE_DATABASE_TYPE_MYSQL: MySQL type: microsoft.dbformysql or MariaDB type: microsoft.dbformariadb\n - DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL: PostgreSQL type: microsoft.dbformysql", + "type": "string", + "default": "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "enum": [ + "DISCOVER_AZURE_DATABASE_TYPE_INVALID", + "DISCOVER_AZURE_DATABASE_TYPE_MYSQL", + "DISCOVER_AZURE_DATABASE_TYPE_POSTGRESQL" + ], + "x-order": 7 + }, + "az": { + "description": "Azure database availability zone.", + "type": "string", + "x-order": 8 + }, + "node_model": { + "description": "Represents a purchasable Stock Keeping Unit (SKU) under a product.\nhttps://docs.microsoft.com/en-us/partner-center/develop/product-resources#sku.", + "type": "string", + "x-order": 9 + } + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, "/v1/management/backup/Artifacts/List": { "post": { "tags": [ diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index bc665bfe7c..61473ce915 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -555,15 +555,25 @@ }, "x-order": 20 }, + "enable_azurediscover": { + "description": "Enable Azure Discover.", + "type": "boolean", + "x-order": 21 + }, + "disable_azurediscover": { + "description": "Disable Azure Discover.", + "type": "boolean", + "x-order": 22 + }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 21 + "x-order": 23 }, "disable_backup_management": { "description": "Disable Backup Management.", "type": "boolean", - "x-order": 22 + "x-order": 24 } } } @@ -741,6 +751,11 @@ "description": "True if Backup Management is enabled.", "type": "boolean", "x-order": 16 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 } }, "x-order": 0 @@ -979,6 +994,11 @@ "description": "True if Backup Management is enabled.", "type": "boolean", "x-order": 16 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 17 } }, "x-order": 0 @@ -1344,6 +1364,204 @@ } } }, + "/v1/inventory/Agents/AddAzureDatabaseExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "AddAzureDatabaseExporter adds azure_database_exporter Agent.", + "operationId": "AddAzureDatabaseExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 0 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 1 + }, + "azure_client_id": { + "type": "string", + "title": "Azure client ID", + "x-order": 2 + }, + "azure_client_secret": { + "type": "string", + "title": "Azure client secret", + "x-order": 3 + }, + "azure_tenant_id": { + "type": "string", + "title": "Azure tanant ID", + "x-order": 4 + }, + "azure_subscription_id": { + "type": "string", + "title": "Azure subscription ID", + "x-order": 5 + }, + "azure_resource_group": { + "description": "Azure resource group.", + "type": "string", + "x-order": 6 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure resource type (mysql, maria, postgres)", + "x-order": 7 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 8 + }, + "skip_connection_check": { + "description": "Skip connection check.", + "type": "boolean", + "x-order": 9 + }, + "push_metrics": { + "description": "Enables push metrics mode for exporter.", + "type": "boolean", + "x-order": 10 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, "/v1/inventory/Agents/AddExternalExporter": { "post": { "tags": [ @@ -3805,13 +4023,13 @@ } } }, - "/v1/inventory/Agents/ChangeExternalExporter": { + "/v1/inventory/Agents/ChangeAzureDatabaseExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeExternalExporter changes external_exporter Agent.", - "operationId": "ChangeExternalExporter", + "summary": "ChangeAzureDatabaseExporter changes_database azure_database_exporter Agent.", + "operationId": "ChangeAzureDatabaseExporter", "parameters": [ { "name": "body", @@ -3874,8 +4092,8 @@ "schema": { "type": "object", "properties": { - "external_exporter": { - "description": "ExternalExporter runs on any Node type, including Remote Node.", + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", "type": "object", "properties": { "agent_id": { @@ -3883,52 +4101,61 @@ "type": "string", "x-order": 0 }, - "runs_on_node_id": { - "description": "Node identifier where this instance runs.", + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", "type": "string", "x-order": 1 }, "disabled": { - "description": "If disabled, metrics from this exporter will not be collected.", + "description": "Desired Agent status: enabled (false) or disabled (true).", "type": "boolean", "x-order": 2 }, - "service_id": { - "description": "Service identifier.", + "node_id": { + "description": "Node identifier.", "type": "string", "x-order": 3 }, - "username": { - "description": "HTTP basic auth username for collecting metrics.", + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", "type": "string", "x-order": 4 }, - "scheme": { - "description": "Scheme to generate URI to exporter metrics endpoints.", + "azure_database_resource_type": { "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", "x-order": 5 }, - "metrics_path": { - "description": "Path under which metrics are exposed, used to generate URI.", - "type": "string", - "x-order": 6 - }, "custom_labels": { "description": "Custom user-assigned labels.", "type": "object", "additionalProperties": { "type": "string" }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], "x-order": 7 }, "listen_port": { - "description": "Listen port for scraping metrics.", + "description": "Listen port for scraping metrics (the same for several configurations).", "type": "integer", "format": "int64", "x-order": 8 }, "push_metrics_enabled": { - "description": "True if exporter uses push metrics mode.", + "description": "True if the exporter operates in push metrics mode.", "type": "boolean", "x-order": 9 } @@ -3980,13 +4207,13 @@ } } }, - "/v1/inventory/Agents/ChangeMongoDBExporter": { + "/v1/inventory/Agents/ChangeExternalExporter": { "post": { "tags": [ "Agents" ], - "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", - "operationId": "ChangeMongoDBExporter", + "summary": "ChangeExternalExporter changes external_exporter Agent.", + "operationId": "ChangeExternalExporter", "parameters": [ { "name": "body", @@ -4049,8 +4276,8 @@ "schema": { "type": "object", "properties": { - "mongodb_exporter": { - "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "external_exporter": { + "description": "ExternalExporter runs on any Node type, including Remote Node.", "type": "object", "properties": { "agent_id": { @@ -4058,13 +4285,13 @@ "type": "string", "x-order": 0 }, - "pmm_agent_id": { - "description": "The pmm-agent identifier which runs this instance.", + "runs_on_node_id": { + "description": "Node identifier where this instance runs.", "type": "string", "x-order": 1 }, "disabled": { - "description": "Desired Agent status: enabled (false) or disabled (true).", + "description": "If disabled, metrics from this exporter will not be collected.", "type": "boolean", "x-order": 2 }, @@ -4074,16 +4301,191 @@ "x-order": 3 }, "username": { - "description": "MongoDB username for scraping metrics.", + "description": "HTTP basic auth username for collecting metrics.", "type": "string", "x-order": 4 }, - "tls": { - "description": "Use TLS for database connections.", - "type": "boolean", + "scheme": { + "description": "Scheme to generate URI to exporter metrics endpoints.", + "type": "string", "x-order": 5 }, - "tls_skip_verify": { + "metrics_path": { + "description": "Path under which metrics are exposed, used to generate URI.", + "type": "string", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics.", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if exporter uses push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, + "/v1/inventory/Agents/ChangeMongoDBExporter": { + "post": { + "tags": [ + "Agents" + ], + "summary": "ChangeMongoDBExporter changes mongodb_exporter Agent.", + "operationId": "ChangeMongoDBExporter", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "agent_id": { + "type": "string", + "x-order": 0 + }, + "common": { + "description": "ChangeCommonAgentParams contains parameters that can be changed for all Agents.", + "type": "object", + "properties": { + "enable": { + "description": "Enable this Agent. Can't be used with disabled.", + "type": "boolean", + "x-order": 0 + }, + "disable": { + "description": "Disable this Agent. Can't be used with enabled.", + "type": "boolean", + "x-order": 1 + }, + "custom_labels": { + "description": "Replace all custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 2 + }, + "remove_custom_labels": { + "description": "Remove all custom user-assigned labels.", + "type": "boolean", + "x-order": 3 + }, + "enable_push_metrics": { + "description": "Enables push metrics with vmagent, can't be used with disable_push_metrics.\nCan't be used with agent version lower then 2.12 and unsupported agents.", + "type": "boolean", + "x-order": 4 + }, + "disable_push_metrics": { + "description": "Disables push metrics, pmm-server starts to pull it, can't be used with enable_push_metrics.", + "type": "boolean", + "x-order": 5 + } + }, + "x-order": 1 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "mongodb_exporter": { + "description": "MongoDBExporter runs on Generic or Container Node and exposes MongoDB Service metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MongoDB username for scraping metrics.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", "x-order": 6 @@ -7029,6 +7431,76 @@ } }, "x-order": 13 + }, + "azure_database_exporter": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + }, + "x-order": 14 } } } @@ -7124,7 +7596,8 @@ "QAN_POSTGRESQL_PGSTATEMENTS_AGENT", "QAN_POSTGRESQL_PGSTATMONITOR_AGENT", "RDS_EXPORTER", - "EXTERNAL_EXPORTER" + "EXTERNAL_EXPORTER", + "AZURE_DATABASE_EXPORTER" ], "x-order": 3 } @@ -8123,23 +8596,96 @@ } }, "x-order": 13 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "error": { - "type": "string", - "x-order": 0 - }, - "code": { - "type": "integer", - "format": "int32", - "x-order": 1 + }, + "azure_database_exporter": { + "type": "array", + "items": { + "description": "AzureDatabaseExporter runs on Generic or Container Node and exposes RemoteAzure Node metrics.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "node_id": { + "description": "Node identifier.", + "type": "string", + "x-order": 3 + }, + "azure_database_subscription_id": { + "description": "Azure database subscription ID.", + "type": "string", + "x-order": 4 + }, + "azure_database_resource_type": { + "type": "string", + "title": "Azure database resource type (mysql, maria, postgres)", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.", + "type": "string", + "default": "AGENT_STATUS_INVALID", + "enum": [ + "AGENT_STATUS_INVALID", + "STARTING", + "RUNNING", + "WAITING", + "STOPPING", + "DONE" + ], + "x-order": 7 + }, + "listen_port": { + "description": "Listen port for scraping metrics (the same for several configurations).", + "type": "integer", + "format": "int64", + "x-order": 8 + }, + "push_metrics_enabled": { + "description": "True if the exporter operates in push metrics mode.", + "type": "boolean", + "x-order": 9 + } + } + }, + "x-order": 14 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 }, "message": { "type": "string", @@ -8740,6 +9286,154 @@ } } }, + "/v1/inventory/Nodes/AddRemoteAzureDatabase": { + "post": { + "tags": [ + "Nodes" + ], + "summary": "AddRemoteAzureDatabaseNode adds remote Azure database Node.", + "operationId": "AddRemoteAzureDatabaseNode", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 0 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 1 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 2 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 3 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 4 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 5 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string", + "x-order": 0 + }, + "code": { + "type": "integer", + "format": "int32", + "x-order": 1 + }, + "message": { + "type": "string", + "x-order": 2 + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type_url": { + "type": "string", + "x-order": 0 + }, + "value": { + "type": "string", + "format": "byte", + "x-order": 1 + } + } + }, + "x-order": 3 + } + } + } + } + } + } + }, "/v1/inventory/Nodes/AddRemoteRDS": { "post": { "tags": [ @@ -9122,6 +9816,51 @@ } }, "x-order": 3 + }, + "remote_azure_database": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + }, + "x-order": 4 } } } @@ -9192,7 +9931,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 } @@ -9422,6 +10162,54 @@ } }, "x-order": 3 + }, + "remote_azure_database": { + "type": "array", + "items": { + "description": "RemoteAzureDatabaseNode represents remote AzureDatabase Node. Agents can't run on Remote AzureDatabase Nodes.", + "type": "object", + "properties": { + "node_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "node_name": { + "description": "Unique across all Nodes user-defined name.", + "type": "string", + "x-order": 1 + }, + "address": { + "description": "DB instance identifier.", + "type": "string", + "x-order": 2 + }, + "node_model": { + "description": "Node model.", + "type": "string", + "x-order": 3 + }, + "region": { + "description": "Node region.", + "type": "string", + "x-order": 4 + }, + "az": { + "description": "Node availability zone.", + "type": "string", + "x-order": 5 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 6 + } + } + }, + "x-order": 4 } } } @@ -13131,7 +13919,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -13478,7 +14267,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -13810,7 +14600,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -14282,7 +15073,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -14844,7 +15636,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -15166,7 +15959,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 }, @@ -15702,7 +16496,8 @@ "GENERIC_NODE", "CONTAINER_NODE", "REMOTE_NODE", - "REMOTE_RDS_NODE" + "REMOTE_RDS_NODE", + "REMOTE_AZURE_DATABASE_NODE" ], "x-order": 0 },