From 11efa9515a6c06c1fadab20c4047094121fed14f Mon Sep 17 00:00:00 2001 From: Alex Hong <9397363+hongalex@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:57:22 -0800 Subject: [PATCH] feat(hypercomputecluster): add new client PiperOrigin-RevId: 823382075 --- .librarian/state.yaml | 23 + go.work | 1 + go.work.sum | 14 +- hypercomputecluster/CHANGES.md | 1 + hypercomputecluster/README.md | 55 + .../apiv1beta/.repo-metadata.json | 10 + hypercomputecluster/apiv1beta/auxiliary.go | 351 ++ .../apiv1beta/auxiliary_go123.go | 46 + hypercomputecluster/apiv1beta/doc.go | 88 + .../apiv1beta/gapic_metadata.json | 133 + hypercomputecluster/apiv1beta/helpers.go | 105 + .../apiv1beta/hypercompute_cluster_client.go | 1485 ++++++ ...mpute_cluster_client_example_go123_test.go | 106 + ...ypercompute_cluster_client_example_test.go | 381 ++ .../hypercompute_cluster.pb.go | 4448 +++++++++++++++++ .../hypercompute_cluster_grpc.pb.go | 281 ++ .../operation_metadata.pb.go | 243 + hypercomputecluster/apiv1beta/version.go | 23 + hypercomputecluster/go.mod | 39 + hypercomputecluster/go.sum | 90 + hypercomputecluster/internal/version.go | 20 + internal/generated/snippets/go.mod | 2 + .../apiv1beta/Client/CancelOperation/main.go | 51 + .../apiv1beta/Client/CreateCluster/main.go | 58 + .../apiv1beta/Client/DeleteCluster/main.go | 56 + .../apiv1beta/Client/DeleteOperation/main.go | 51 + .../apiv1beta/Client/GetCluster/main.go | 53 + .../apiv1beta/Client/GetLocation/main.go | 53 + .../apiv1beta/Client/GetOperation/main.go | 53 + .../apiv1beta/Client/ListClusters/main.go | 66 + .../apiv1beta/Client/ListLocations/main.go | 66 + .../apiv1beta/Client/ListOperations/main.go | 66 + .../apiv1beta/Client/UpdateCluster/main.go | 58 + ...ogle.cloud.hypercomputecluster.v1beta.json | 519 ++ 34 files changed, 9094 insertions(+), 1 deletion(-) create mode 100644 hypercomputecluster/CHANGES.md create mode 100644 hypercomputecluster/README.md create mode 100644 hypercomputecluster/apiv1beta/.repo-metadata.json create mode 100644 hypercomputecluster/apiv1beta/auxiliary.go create mode 100644 hypercomputecluster/apiv1beta/auxiliary_go123.go create mode 100644 hypercomputecluster/apiv1beta/doc.go create mode 100644 hypercomputecluster/apiv1beta/gapic_metadata.json create mode 100644 hypercomputecluster/apiv1beta/helpers.go create mode 100644 hypercomputecluster/apiv1beta/hypercompute_cluster_client.go create mode 100644 hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_go123_test.go create mode 100644 hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_test.go create mode 100644 hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster.pb.go create mode 100644 hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster_grpc.pb.go create mode 100644 hypercomputecluster/apiv1beta/hypercomputeclusterpb/operation_metadata.pb.go create mode 100644 hypercomputecluster/apiv1beta/version.go create mode 100644 hypercomputecluster/go.mod create mode 100644 hypercomputecluster/go.sum create mode 100644 hypercomputecluster/internal/version.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CancelOperation/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CreateCluster/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteCluster/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteOperation/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetCluster/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetLocation/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetOperation/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListClusters/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListLocations/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListOperations/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/Client/UpdateCluster/main.go create mode 100644 internal/generated/snippets/hypercomputecluster/apiv1beta/snippet_metadata.google.cloud.hypercomputecluster.v1beta.json diff --git a/.librarian/state.yaml b/.librarian/state.yaml index 7b5de66a3e19..81a8531ca8f5 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -2894,6 +2894,29 @@ libraries: release_exclude_paths: - internal/generated/snippets/gsuiteaddons/ tag_format: '{id}/v{version}' + - id: hypercomputecluster + version: 0.0.0 + last_generated_commit: 53af3b727f84acc34e31c23f3b6e7b8aa4b7e837 + apis: + - path: google/cloud/hypercomputecluster/v1beta + service_config: hypercomputecluster_v1beta.yaml + source_roots: + - hypercomputecluster + - internal/generated/snippets/hypercomputecluster + preserve_regex: [] + remove_regex: + - ^internal/generated/snippets/hypercomputecluster/ + - ^hypercomputecluster/apiv1beta/[^/]*_client\.go$ + - ^hypercomputecluster/apiv1beta/[^/]*_client_example_go123_test\.go$ + - ^hypercomputecluster/apiv1beta/[^/]*_client_example_test\.go$ + - ^hypercomputecluster/apiv1beta/auxiliary\.go$ + - ^hypercomputecluster/apiv1beta/auxiliary_go123\.go$ + - ^hypercomputecluster/apiv1beta/doc\.go$ + - ^hypercomputecluster/apiv1beta/gapic_metadata\.json$ + - ^hypercomputecluster/apiv1beta/helpers\.go$ + - ^hypercomputecluster/apiv1beta/\.repo-metadata\.json$ + - ^hypercomputecluster/apiv1beta/hypercomputeclusterpb/.*$ + tag_format: '{id}/v{version}' - id: iam version: 1.5.3 last_generated_commit: c288189b43c016dd3cf1ec73ce3cadee8b732f07 diff --git a/go.work b/go.work index 3f988ec2a56a..1197f0c5e8cb 100644 --- a/go.work +++ b/go.work @@ -88,6 +88,7 @@ use ( ./gkerecommender ./grafeas ./gsuiteaddons + ./hypercomputecluster ./iam ./iap ./identitytoolkit diff --git a/go.work.sum b/go.work.sum index 45069cc6fa69..0ab201bed96d 100644 --- a/go.work.sum +++ b/go.work.sum @@ -12,6 +12,7 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOC github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.18.0 h1:ugYJK/neZQtQeh2jc5xNoDFiMQojlAkoqJMRb7vTu1U= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.18.0/go.mod h1:Xx0VKh7GJ4si3rmElbh19Mejxz68ibWg/J30ZOMrqzU= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.23.0/go.mod h1:p2puVVSKjQ84Qb1gzw2XHLs34WQyHTYFZLaVxypAFYs= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -76,6 +77,7 @@ github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nC github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329/go.mod h1:Alz8LEClvR7xKsrq3qzoc4N0guvVNSS8KmSChGYr9hs= github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= @@ -87,6 +89,7 @@ github.com/go-fonts/latin-modern v0.2.0 h1:5/Tv1Ek/QCr20C6ZOz15vw3g7GELYL98KWr8H github.com/go-fonts/liberation v0.2.0 h1:jAkAWJP4S+OsrPLZM4/eC9iW7CtHy+HBXrEwZXWo5VM= github.com/go-fonts/stix v0.1.0 h1:UlZlgrvvmT/58o573ot7NFw0vZasZ5I6bcIft/oMdgg= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81 h1:6zl3BbBhdnMkpSj2YY30qV3gDcVBGtFgVsV3+/i+mKQ= github.com/go-pdf/fpdf v0.6.0 h1:MlgtGIfsdMEEQJr2le6b/HNr1ZlQwxyWr77r2aj2U/8= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= @@ -139,6 +142,7 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= @@ -172,6 +176,7 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgc github.com/pkg/sftp v1.13.1 h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= @@ -185,6 +190,7 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1 github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spiffe/go-spiffe/v2 v2.6.0/go.mod h1:gm2SeUoMZEtpnzPNs2Csc0D/gX33k1xIx7lEzqblHEs= github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= @@ -196,6 +202,7 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= go.opentelemetry.io/contrib/detectors/gcp v1.27.0/go.mod h1:amd+4uZxqJAUx7zI1JvygUtAc2EVWtQeyz8D+3161SQ= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA= go.opentelemetry.io/otel/bridge/opencensus v0.40.0 h1:pqDiayRhBgoqy1vwnscik+TizcImJ58l053NScJyZso= go.opentelemetry.io/otel/bridge/opencensus v0.40.0/go.mod h1:1NvVHb6tLTe5A9qCYz+eErW0t8iPn4ZfR6tDKcqlGTM= @@ -209,6 +216,7 @@ go.opentelemetry.io/otel/sdk v1.27.0/go.mod h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwP go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw= go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/image v0.0.0-20220302094943-723b81ca9867 h1:TcHcE0vrmgzNH1v3ppjcMGbhG5+9fMuvOmUYwNEF4q4= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= @@ -217,11 +225,11 @@ golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457 h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk= golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= @@ -237,8 +245,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240515191416-fc5f0ca64291/go. google.golang.org/genproto/googleapis/api v0.0.0-20240930140551-af27646dc61f/go.mod h1:CLGoBuH1VHxAUXVPP8FfPwPEVJB6lz3URE5mY2SuayE= google.golang.org/genproto/googleapis/api v0.0.0-20250227231956-55c901821b1e h1:nsxey/MfoGzYNduN0NN/+hqP9iiCIYsrVbXb/8hjFM8= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= +google.golang.org/genproto/googleapis/api v0.0.0-20250728155136-f173205681a0/go.mod h1:8ytArBbtOy2xfht+y2fqKd5DRDJRUQhqbyEnQ4bDChs= google.golang.org/genproto/googleapis/api v0.0.0-20250826171959-ef028d996bc1/go.mod h1:xUjFWUnWDpZ/C0Gu0qloASKFb6f8/QXiiXhSPFsD668= google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090/go.mod h1:U8EXRNSd8sUYyDfs/It7KVWodQr+Hf9xtxyxWudSwEw= +google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= google.golang.org/genproto/googleapis/api v0.0.0-20251103181224-f26f9409b101/go.mod h1:E17fc4PDhkr22dE3RgnH2hEubUaky6ZwW4VhANxyspg= google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f/go.mod h1:iIgEblxoG4klcXsG0d9cpoxJ4xndv6+1FkDROCHhPRI= @@ -256,10 +266,12 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= google.golang.org/genproto/googleapis/rpc v0.0.0-20250826171959-ef028d996bc1/go.mod h1:GmFNa4BdJZ2a8G+wCe9Bg3wwThLrJun751XstdJt5Og= google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= google.golang.org/grpc/examples v0.0.0-20230224211313-3775f633ce20 h1:MLBCGN1O7GzIx+cBiwfYPwtmZ41U3Mn/cotLJciaArI= +google.golang.org/grpc/examples v0.0.0-20250407062114-b368379ef8f6/go.mod h1:6ytKWczdvnpnO+m+JiG9NjEDzR1FJfsnmJdG7B8QVZ8= google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= honnef.co/go/tools v0.1.3 h1:qTakTkI6ni6LFD5sBwwsdSO+AQqbSIxOauHTTQKZ/7o= diff --git a/hypercomputecluster/CHANGES.md b/hypercomputecluster/CHANGES.md new file mode 100644 index 000000000000..b671f0bbcdd2 --- /dev/null +++ b/hypercomputecluster/CHANGES.md @@ -0,0 +1 @@ +# Changes diff --git a/hypercomputecluster/README.md b/hypercomputecluster/README.md new file mode 100644 index 000000000000..74836853d807 --- /dev/null +++ b/hypercomputecluster/README.md @@ -0,0 +1,55 @@ +# Cluster Director API + +[![Go Reference](https://pkg.go.dev/badge/cloud.google.com/go/hypercomputecluster.svg)](https://pkg.go.dev/cloud.google.com/go/hypercomputecluster) + +Go Client Library for Cluster Director API. + +## Install + +```bash +go get cloud.google.com/go/hypercomputecluster +``` + +## Stability + +The stability of this module is indicated by SemVer. + +However, a `v1+` module may have breaking changes in two scenarios: + +* Packages with `alpha` or `beta` in the import path +* The GoDoc has an explicit stability disclaimer (for example, for an experimental feature). + +### Which package to use? + +Generated client library surfaces can be found in packages who's import path +ends in `.../apivXXX`. The `XXX` could be something like `1` or `2` in the case +of a stable service backend or may be like `1beta2` or `2beta` in the case of a +more experimental service backend. Because of this fact, a given module can have +multiple clients for different service backends. In these cases it is generally +recommend to use clients with stable service backends, with import suffixes like +`apiv1`, unless you need to use features that are only present in a beta backend +or there is not yet a stable backend available. + +## Google Cloud Samples + +To browse ready to use code samples check [Google Cloud Samples](https://cloud.google.com/docs/samples?l=go). + +## Go Version Support + +See the [Go Versions Supported](https://github.com/googleapis/google-cloud-go#go-versions-supported) +section in the root directory's README. + +## Authorization + +See the [Authorization](https://github.com/googleapis/google-cloud-go#authorization) +section in the root directory's README. + +## Contributing + +Contributions are welcome. Please, see the [CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md) +document for details. + +Please note that this project is released with a Contributor Code of Conduct. +By participating in this project you agree to abide by its terms. See +[Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md#contributor-code-of-conduct) +for more information. diff --git a/hypercomputecluster/apiv1beta/.repo-metadata.json b/hypercomputecluster/apiv1beta/.repo-metadata.json new file mode 100644 index 000000000000..4dff42d8af03 --- /dev/null +++ b/hypercomputecluster/apiv1beta/.repo-metadata.json @@ -0,0 +1,10 @@ +{ + "api_shortname": "hypercomputecluster", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/hypercomputecluster/latest/apiv1beta", + "client_library_type": "generated", + "description": "Cluster Director API", + "distribution_name": "cloud.google.com/go/hypercomputecluster/apiv1beta", + "language": "go", + "library_type": "GAPIC_AUTO", + "release_level": "preview" +} diff --git a/hypercomputecluster/apiv1beta/auxiliary.go b/hypercomputecluster/apiv1beta/auxiliary.go new file mode 100644 index 000000000000..792c7c0228db --- /dev/null +++ b/hypercomputecluster/apiv1beta/auxiliary.go @@ -0,0 +1,351 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package hypercomputecluster + +import ( + "context" + "time" + + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + "cloud.google.com/go/longrunning" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// CreateClusterOperation manages a long-running operation from CreateCluster. +type CreateClusterOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateClusterOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp hypercomputeclusterpb.Cluster + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateClusterOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp hypercomputeclusterpb.Cluster + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateClusterOperation) Metadata() (*hypercomputeclusterpb.OperationMetadata, error) { + var meta hypercomputeclusterpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateClusterOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateClusterOperation) Name() string { + return op.lro.Name() +} + +// DeleteClusterOperation manages a long-running operation from DeleteCluster. +type DeleteClusterOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeleteClusterOperation) Wait(ctx context.Context, opts ...gax.CallOption) error { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + return op.lro.WaitWithInterval(ctx, nil, time.Minute, opts...) +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeleteClusterOperation) Poll(ctx context.Context, opts ...gax.CallOption) error { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + return op.lro.Poll(ctx, nil, opts...) +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeleteClusterOperation) Metadata() (*hypercomputeclusterpb.OperationMetadata, error) { + var meta hypercomputeclusterpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeleteClusterOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeleteClusterOperation) Name() string { + return op.lro.Name() +} + +// UpdateClusterOperation manages a long-running operation from UpdateCluster. +type UpdateClusterOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdateClusterOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp hypercomputeclusterpb.Cluster + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdateClusterOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp hypercomputeclusterpb.Cluster + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdateClusterOperation) Metadata() (*hypercomputeclusterpb.OperationMetadata, error) { + var meta hypercomputeclusterpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdateClusterOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdateClusterOperation) Name() string { + return op.lro.Name() +} + +// ClusterIterator manages a stream of *hypercomputeclusterpb.Cluster. +type ClusterIterator struct { + items []*hypercomputeclusterpb.Cluster + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*hypercomputeclusterpb.Cluster, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *ClusterIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *ClusterIterator) Next() (*hypercomputeclusterpb.Cluster, error) { + var item *hypercomputeclusterpb.Cluster + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *ClusterIterator) bufLen() int { + return len(it.items) +} + +func (it *ClusterIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// LocationIterator manages a stream of *locationpb.Location. +type LocationIterator struct { + items []*locationpb.Location + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*locationpb.Location, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *LocationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *LocationIterator) Next() (*locationpb.Location, error) { + var item *locationpb.Location + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *LocationIterator) bufLen() int { + return len(it.items) +} + +func (it *LocationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// OperationIterator manages a stream of *longrunningpb.Operation. +type OperationIterator struct { + items []*longrunningpb.Operation + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*longrunningpb.Operation, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *OperationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *OperationIterator) Next() (*longrunningpb.Operation, error) { + var item *longrunningpb.Operation + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *OperationIterator) bufLen() int { + return len(it.items) +} + +func (it *OperationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/hypercomputecluster/apiv1beta/auxiliary_go123.go b/hypercomputecluster/apiv1beta/auxiliary_go123.go new file mode 100644 index 000000000000..d3e95c2b7f87 --- /dev/null +++ b/hypercomputecluster/apiv1beta/auxiliary_go123.go @@ -0,0 +1,46 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package hypercomputecluster + +import ( + "iter" + + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "github.com/googleapis/gax-go/v2/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *ClusterIterator) All() iter.Seq2[*hypercomputeclusterpb.Cluster, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *LocationIterator) All() iter.Seq2[*locationpb.Location, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *OperationIterator) All() iter.Seq2[*longrunningpb.Operation, error] { + return iterator.RangeAdapter(it.Next) +} diff --git a/hypercomputecluster/apiv1beta/doc.go b/hypercomputecluster/apiv1beta/doc.go new file mode 100644 index 000000000000..64d9c858a1c4 --- /dev/null +++ b/hypercomputecluster/apiv1beta/doc.go @@ -0,0 +1,88 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// Package hypercomputecluster is an auto-generated package for the +// Cluster Director API. +// +// NOTE: This package is in beta. It is not stable, and may be subject to changes. +// +// # General documentation +// +// For information that is relevant for all client libraries please reference +// https://pkg.go.dev/cloud.google.com/go#pkg-overview. Some information on this +// page includes: +// +// - [Authentication and Authorization] +// - [Timeouts and Cancellation] +// - [Testing against Client Libraries] +// - [Debugging Client Libraries] +// - [Inspecting errors] +// +// # Example usage +// +// To get started with this package, create a client. +// +// // go get cloud.google.com/go/hypercomputecluster/apiv1beta@latest +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := hypercomputecluster.NewClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// The client will use your default application credentials. Clients should be reused instead of created as needed. +// The methods of Client are safe for concurrent use by multiple goroutines. +// The returned client must be Closed when it is done being used. +// +// # Using the Client +// +// The following is an example of making an API call with the newly created client, mentioned above. +// +// req := &hypercomputeclusterpb.CreateClusterRequest{ +// // TODO: Fill request struct fields. +// // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#CreateClusterRequest. +// } +// op, err := c.CreateCluster(ctx, req) +// if err != nil { +// // TODO: Handle error. +// } +// +// resp, err := op.Wait(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// // TODO: Use resp. +// _ = resp +// +// # Use of Context +// +// The ctx passed to NewClient is used for authentication requests and +// for creating the underlying connection, but is not used for subsequent calls. +// Individual methods on the client use the ctx given to them. +// +// To close the open connection, use the Close() method. +// +// [Authentication and Authorization]: https://pkg.go.dev/cloud.google.com/go#hdr-Authentication_and_Authorization +// [Timeouts and Cancellation]: https://pkg.go.dev/cloud.google.com/go#hdr-Timeouts_and_Cancellation +// [Testing against Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Testing +// [Debugging Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Debugging +// [Inspecting errors]: https://pkg.go.dev/cloud.google.com/go#hdr-Inspecting_errors +package hypercomputecluster // import "cloud.google.com/go/hypercomputecluster/apiv1beta" diff --git a/hypercomputecluster/apiv1beta/gapic_metadata.json b/hypercomputecluster/apiv1beta/gapic_metadata.json new file mode 100644 index 000000000000..b104d11278ee --- /dev/null +++ b/hypercomputecluster/apiv1beta/gapic_metadata.json @@ -0,0 +1,133 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods.", + "language": "go", + "protoPackage": "google.cloud.hypercomputecluster.v1beta", + "libraryPackage": "cloud.google.com/go/hypercomputecluster/apiv1beta", + "services": { + "HypercomputeCluster": { + "clients": { + "grpc": { + "libraryClient": "Client", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateCluster": { + "methods": [ + "CreateCluster" + ] + }, + "DeleteCluster": { + "methods": [ + "DeleteCluster" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCluster": { + "methods": [ + "GetCluster" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListClusters": { + "methods": [ + "ListClusters" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCluster": { + "methods": [ + "UpdateCluster" + ] + } + } + }, + "rest": { + "libraryClient": "Client", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateCluster": { + "methods": [ + "CreateCluster" + ] + }, + "DeleteCluster": { + "methods": [ + "DeleteCluster" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCluster": { + "methods": [ + "GetCluster" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListClusters": { + "methods": [ + "ListClusters" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCluster": { + "methods": [ + "UpdateCluster" + ] + } + } + } + } + } + } +} diff --git a/hypercomputecluster/apiv1beta/helpers.go b/hypercomputecluster/apiv1beta/helpers.go new file mode 100644 index 000000000000..4b99ec6aaa23 --- /dev/null +++ b/hypercomputecluster/apiv1beta/helpers.go @@ -0,0 +1,105 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package hypercomputecluster + +import ( + "context" + "fmt" + "io" + "log/slog" + "net/http" + + "github.com/googleapis/gax-go/v2/internallog" + "github.com/googleapis/gax-go/v2/internallog/grpclog" + "google.golang.org/api/googleapi" + "google.golang.org/api/option" + "google.golang.org/grpc" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/runtime/protoimpl" +) + +const serviceName = "hypercomputecluster.googleapis.com" + +var protoVersion = fmt.Sprintf("1.%d", protoimpl.MaxVersion) + +// For more information on implementing a client constructor hook, see +// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. +type clientHookParams struct{} +type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) + +var versionClient string + +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" + } + return versionClient +} + +// DefaultAuthScopes reports the default set of authentication scopes to use with this package. +func DefaultAuthScopes() []string { + return []string{ + "https://www.googleapis.com/auth/cloud-platform", + } +} + +func executeHTTPRequestWithResponse(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, *http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, nil, err + } + defer resp.Body.Close() + buf, err := io.ReadAll(resp.Body) + if err != nil { + return nil, nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf)) + if err = googleapi.CheckResponseWithBody(resp, buf); err != nil { + return nil, nil, err + } + return buf, resp, nil +} + +func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) { + buf, _, err := executeHTTPRequestWithResponse(ctx, client, req, logger, body, rpc) + return buf, err +} + +func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil)) + if err = googleapi.CheckResponse(resp); err != nil { + return nil, err + } + return resp, nil +} + +func executeRPC[I proto.Message, O proto.Message](ctx context.Context, fn func(context.Context, I, ...grpc.CallOption) (O, error), req I, opts []grpc.CallOption, logger *slog.Logger, rpc string) (O, error) { + var zero O + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req)) + resp, err := fn(ctx, req, opts...) + if err != nil { + return zero, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp)) + return resp, err +} diff --git a/hypercomputecluster/apiv1beta/hypercompute_cluster_client.go b/hypercomputecluster/apiv1beta/hypercompute_cluster_client.go new file mode 100644 index 000000000000..8428313e208f --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercompute_cluster_client.go @@ -0,0 +1,1485 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package hypercomputecluster + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + "cloud.google.com/go/longrunning" + lroauto "cloud.google.com/go/longrunning/autogen" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newClientHook clientHook + +// CallOptions contains the retry settings for each method of Client. +type CallOptions struct { + ListClusters []gax.CallOption + GetCluster []gax.CallOption + CreateCluster []gax.CallOption + UpdateCluster []gax.CallOption + DeleteCluster []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("hypercomputecluster.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("hypercomputecluster.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("hypercomputecluster.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://hypercomputecluster.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultCallOptions() *CallOptions { + return &CallOptions{ + ListClusters: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetCluster: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CreateCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + UpdateCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + DeleteCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultRESTCallOptions() *CallOptions { + return &CallOptions{ + ListClusters: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetCluster: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + UpdateCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + DeleteCluster: []gax.CallOption{ + gax.WithTimeout(3600000 * time.Millisecond), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalClient is an interface that defines the methods available from Cluster Director API. +type internalClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + ListClusters(context.Context, *hypercomputeclusterpb.ListClustersRequest, ...gax.CallOption) *ClusterIterator + GetCluster(context.Context, *hypercomputeclusterpb.GetClusterRequest, ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) + CreateCluster(context.Context, *hypercomputeclusterpb.CreateClusterRequest, ...gax.CallOption) (*CreateClusterOperation, error) + CreateClusterOperation(name string) *CreateClusterOperation + UpdateCluster(context.Context, *hypercomputeclusterpb.UpdateClusterRequest, ...gax.CallOption) (*UpdateClusterOperation, error) + UpdateClusterOperation(name string) *UpdateClusterOperation + DeleteCluster(context.Context, *hypercomputeclusterpb.DeleteClusterRequest, ...gax.CallOption) (*DeleteClusterOperation, error) + DeleteClusterOperation(name string) *DeleteClusterOperation + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// Client is a client for interacting with Cluster Director API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Service describing handlers for resources +type Client struct { + // The internal transport-dependent client. + internalClient internalClient + + // The call options for this service. + CallOptions *CallOptions + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient *lroauto.OperationsClient +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *Client) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *Client) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *Client) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// ListClusters lists Clusters in a given project and location. +func (c *Client) ListClusters(ctx context.Context, req *hypercomputeclusterpb.ListClustersRequest, opts ...gax.CallOption) *ClusterIterator { + return c.internalClient.ListClusters(ctx, req, opts...) +} + +// GetCluster gets details of a single Cluster. +func (c *Client) GetCluster(ctx context.Context, req *hypercomputeclusterpb.GetClusterRequest, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + return c.internalClient.GetCluster(ctx, req, opts...) +} + +// CreateCluster creates a new Cluster in a given project and location. +func (c *Client) CreateCluster(ctx context.Context, req *hypercomputeclusterpb.CreateClusterRequest, opts ...gax.CallOption) (*CreateClusterOperation, error) { + return c.internalClient.CreateCluster(ctx, req, opts...) +} + +// CreateClusterOperation returns a new CreateClusterOperation from a given name. +// The name must be that of a previously created CreateClusterOperation, possibly from a different process. +func (c *Client) CreateClusterOperation(name string) *CreateClusterOperation { + return c.internalClient.CreateClusterOperation(name) +} + +// UpdateCluster updates the parameters of a single Cluster. +func (c *Client) UpdateCluster(ctx context.Context, req *hypercomputeclusterpb.UpdateClusterRequest, opts ...gax.CallOption) (*UpdateClusterOperation, error) { + return c.internalClient.UpdateCluster(ctx, req, opts...) +} + +// UpdateClusterOperation returns a new UpdateClusterOperation from a given name. +// The name must be that of a previously created UpdateClusterOperation, possibly from a different process. +func (c *Client) UpdateClusterOperation(name string) *UpdateClusterOperation { + return c.internalClient.UpdateClusterOperation(name) +} + +// DeleteCluster deletes a single Cluster. +func (c *Client) DeleteCluster(ctx context.Context, req *hypercomputeclusterpb.DeleteClusterRequest, opts ...gax.CallOption) (*DeleteClusterOperation, error) { + return c.internalClient.DeleteCluster(ctx, req, opts...) +} + +// DeleteClusterOperation returns a new DeleteClusterOperation from a given name. +// The name must be that of a previously created DeleteClusterOperation, possibly from a different process. +func (c *Client) DeleteClusterOperation(name string) *DeleteClusterOperation { + return c.internalClient.DeleteClusterOperation(name) +} + +// GetLocation gets information about a location. +func (c *Client) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *Client) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *Client) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *Client) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *Client) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *Client) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// gRPCClient is a client for interacting with Cluster Director API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type gRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing Client + CallOptions **CallOptions + + // The gRPC API client. + client hypercomputeclusterpb.HypercomputeClusterClient + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewClient creates a new hypercompute cluster client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Service describing handlers for resources +func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { + clientOpts := defaultGRPCClientOptions() + if newClientHook != nil { + hookOpts, err := newClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := Client{CallOptions: defaultCallOptions()} + + c := &gRPCClient{ + connPool: connPool, + client: hypercomputeclusterpb.NewHypercomputeClusterClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + if err != nil { + // This error "should not happen", since we are just reusing old connection pool + // and never actually need to dial. + // If this does happen, we could leak connp. However, we cannot close conn: + // If the user invoked the constructor with option.WithGRPCConn, + // we would close a connection that's still in use. + // TODO: investigate error conditions. + return nil, err + } + c.LROClient = &client.LROClient + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *gRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *gRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type restClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing Client + CallOptions **CallOptions + + logger *slog.Logger +} + +// NewRESTClient creates a new hypercompute cluster rest client. +// +// Service describing handlers for resources +func NewRESTClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { + clientOpts := append(defaultRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultRESTCallOptions() + c := &restClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + lroOpts := []option.ClientOption{ + option.WithHTTPClient(httpClient), + option.WithEndpoint(endpoint), + } + opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) + if err != nil { + return nil, err + } + c.LROClient = &opClient + + return &Client{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://hypercomputecluster.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://hypercomputecluster.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://hypercomputecluster.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://hypercomputecluster.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *restClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *restClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *restClient) Connection() *grpc.ClientConn { + return nil +} +func (c *gRPCClient) ListClusters(ctx context.Context, req *hypercomputeclusterpb.ListClustersRequest, opts ...gax.CallOption) *ClusterIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListClusters[0:len((*c.CallOptions).ListClusters):len((*c.CallOptions).ListClusters)], opts...) + it := &ClusterIterator{} + req = proto.Clone(req).(*hypercomputeclusterpb.ListClustersRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*hypercomputeclusterpb.Cluster, string, error) { + resp := &hypercomputeclusterpb.ListClustersResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.ListClusters, req, settings.GRPC, c.logger, "ListClusters") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetClusters(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) GetCluster(ctx context.Context, req *hypercomputeclusterpb.GetClusterRequest, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetCluster[0:len((*c.CallOptions).GetCluster):len((*c.CallOptions).GetCluster)], opts...) + var resp *hypercomputeclusterpb.Cluster + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.GetCluster, req, settings.GRPC, c.logger, "GetCluster") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) CreateCluster(ctx context.Context, req *hypercomputeclusterpb.CreateClusterRequest, opts ...gax.CallOption) (*CreateClusterOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateCluster[0:len((*c.CallOptions).CreateCluster):len((*c.CallOptions).CreateCluster)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.CreateCluster, req, settings.GRPC, c.logger, "CreateCluster") + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UpdateCluster(ctx context.Context, req *hypercomputeclusterpb.UpdateClusterRequest, opts ...gax.CallOption) (*UpdateClusterOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cluster.name", url.QueryEscape(req.GetCluster().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateCluster[0:len((*c.CallOptions).UpdateCluster):len((*c.CallOptions).UpdateCluster)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.UpdateCluster, req, settings.GRPC, c.logger, "UpdateCluster") + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeleteCluster(ctx context.Context, req *hypercomputeclusterpb.DeleteClusterRequest, opts ...gax.CallOption) (*DeleteClusterOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteCluster[0:len((*c.CallOptions).DeleteCluster):len((*c.CallOptions).DeleteCluster)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.client.DeleteCluster, req, settings.GRPC, c.logger, "DeleteCluster") + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *gRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *gRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// ListClusters lists Clusters in a given project and location. +func (c *restClient) ListClusters(ctx context.Context, req *hypercomputeclusterpb.ListClustersRequest, opts ...gax.CallOption) *ClusterIterator { + it := &ClusterIterator{} + req = proto.Clone(req).(*hypercomputeclusterpb.ListClustersRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*hypercomputeclusterpb.Cluster, string, error) { + resp := &hypercomputeclusterpb.ListClustersResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v/clusters", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetOrderBy() != "" { + params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListClusters") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetClusters(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetCluster gets details of a single Cluster. +func (c *restClient) GetCluster(ctx context.Context, req *hypercomputeclusterpb.GetClusterRequest, opts ...gax.CallOption) (*hypercomputeclusterpb.Cluster, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetCluster[0:len((*c.CallOptions).GetCluster):len((*c.CallOptions).GetCluster)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &hypercomputeclusterpb.Cluster{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetCluster") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// CreateCluster creates a new Cluster in a given project and location. +func (c *restClient) CreateCluster(ctx context.Context, req *hypercomputeclusterpb.CreateClusterRequest, opts ...gax.CallOption) (*CreateClusterOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetCluster() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v/clusters", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + params.Add("clusterId", fmt.Sprintf("%v", req.GetClusterId())) + if req.GetRequestId() != "" { + params.Add("requestId", fmt.Sprintf("%v", req.GetRequestId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CreateCluster") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1beta/%s", resp.GetName()) + return &CreateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// UpdateCluster updates the parameters of a single Cluster. +func (c *restClient) UpdateCluster(ctx context.Context, req *hypercomputeclusterpb.UpdateClusterRequest, opts ...gax.CallOption) (*UpdateClusterOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetCluster() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetCluster().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetRequestId() != "" { + params.Add("requestId", fmt.Sprintf("%v", req.GetRequestId())) + } + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cluster.name", url.QueryEscape(req.GetCluster().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "UpdateCluster") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1beta/%s", resp.GetName()) + return &UpdateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// DeleteCluster deletes a single Cluster. +func (c *restClient) DeleteCluster(ctx context.Context, req *hypercomputeclusterpb.DeleteClusterRequest, opts ...gax.CallOption) (*DeleteClusterOperation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetRequestId() != "" { + params.Add("requestId", fmt.Sprintf("%v", req.GetRequestId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteCluster") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1beta/%s", resp.GetName()) + return &DeleteClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// GetLocation gets information about a location. +func (c *restClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *restClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *restClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *restClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *restClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *restClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1beta/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CreateClusterOperation returns a new CreateClusterOperation from a given name. +// The name must be that of a previously created CreateClusterOperation, possibly from a different process. +func (c *gRPCClient) CreateClusterOperation(name string) *CreateClusterOperation { + return &CreateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// CreateClusterOperation returns a new CreateClusterOperation from a given name. +// The name must be that of a previously created CreateClusterOperation, possibly from a different process. +func (c *restClient) CreateClusterOperation(name string) *CreateClusterOperation { + override := fmt.Sprintf("/v1beta/%s", name) + return &CreateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// DeleteClusterOperation returns a new DeleteClusterOperation from a given name. +// The name must be that of a previously created DeleteClusterOperation, possibly from a different process. +func (c *gRPCClient) DeleteClusterOperation(name string) *DeleteClusterOperation { + return &DeleteClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// DeleteClusterOperation returns a new DeleteClusterOperation from a given name. +// The name must be that of a previously created DeleteClusterOperation, possibly from a different process. +func (c *restClient) DeleteClusterOperation(name string) *DeleteClusterOperation { + override := fmt.Sprintf("/v1beta/%s", name) + return &DeleteClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// UpdateClusterOperation returns a new UpdateClusterOperation from a given name. +// The name must be that of a previously created UpdateClusterOperation, possibly from a different process. +func (c *gRPCClient) UpdateClusterOperation(name string) *UpdateClusterOperation { + return &UpdateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// UpdateClusterOperation returns a new UpdateClusterOperation from a given name. +// The name must be that of a previously created UpdateClusterOperation, possibly from a different process. +func (c *restClient) UpdateClusterOperation(name string) *UpdateClusterOperation { + override := fmt.Sprintf("/v1beta/%s", name) + return &UpdateClusterOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} diff --git a/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_go123_test.go b/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_go123_test.go new file mode 100644 index 000000000000..cdb30d297e83 --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_go123_test.go @@ -0,0 +1,106 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package hypercomputecluster_test + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleClient_ListClusters_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.ListClustersRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#ListClustersRequest. + } + for resp, err := range c.ListClusters(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_test.go b/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_test.go new file mode 100644 index 000000000000..f68fff129bcc --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercompute_cluster_client_example_test.go @@ -0,0 +1,381 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package hypercomputecluster_test + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleClient_CreateCluster() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.CreateClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#CreateClusterRequest. + } + op, err := c.CreateCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_DeleteCluster() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.DeleteClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#DeleteClusterRequest. + } + op, err := c.DeleteCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleClient_GetCluster() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.GetClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#GetClusterRequest. + } + resp, err := c.GetCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListClusters() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.ListClustersRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#ListClustersRequest. + } + it := c.ListClusters(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*hypercomputeclusterpb.ListClustersResponse) + } +} + +func ExampleClient_UpdateCluster() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.UpdateClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#UpdateClusterRequest. + } + op, err := c.UpdateCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster.pb.go b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster.pb.go new file mode 100644 index 000000000000..a08ecac5640c --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster.pb.go @@ -0,0 +1,4448 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/hypercomputecluster/v1beta/hypercompute_cluster.proto + +package hypercomputeclusterpb + +import ( + reflect "reflect" + sync "sync" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" + _ "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +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) +) + +// Available [service +// tiers](https://cloud.google.com/filestore/docs/service-tiers) for Filestore +// instances. +type NewFilestoreConfig_Tier int32 + +const ( + // Not set. + NewFilestoreConfig_TIER_UNSPECIFIED NewFilestoreConfig_Tier = 0 + // Offers expanded capacity and performance scaling capabilities suitable + // for high-performance computing application requirements. + NewFilestoreConfig_ZONAL NewFilestoreConfig_Tier = 4 + // Offers features and availability needed for mission-critical, + // high-performance computing workloads. + NewFilestoreConfig_REGIONAL NewFilestoreConfig_Tier = 6 +) + +// Enum value maps for NewFilestoreConfig_Tier. +var ( + NewFilestoreConfig_Tier_name = map[int32]string{ + 0: "TIER_UNSPECIFIED", + 4: "ZONAL", + 6: "REGIONAL", + } + NewFilestoreConfig_Tier_value = map[string]int32{ + "TIER_UNSPECIFIED": 0, + "ZONAL": 4, + "REGIONAL": 6, + } +) + +func (x NewFilestoreConfig_Tier) Enum() *NewFilestoreConfig_Tier { + p := new(NewFilestoreConfig_Tier) + *p = x + return p +} + +func (x NewFilestoreConfig_Tier) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NewFilestoreConfig_Tier) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[0].Descriptor() +} + +func (NewFilestoreConfig_Tier) Type() protoreflect.EnumType { + return &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[0] +} + +func (x NewFilestoreConfig_Tier) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NewFilestoreConfig_Tier.Descriptor instead. +func (NewFilestoreConfig_Tier) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{17, 0} +} + +// File access protocol for Filestore instances. +type NewFilestoreConfig_Protocol int32 + +const ( + // Not set. + NewFilestoreConfig_PROTOCOL_UNSPECIFIED NewFilestoreConfig_Protocol = 0 + // NFS 3.0. + NewFilestoreConfig_NFSV3 NewFilestoreConfig_Protocol = 1 + // NFS 4.1. + NewFilestoreConfig_NFSV41 NewFilestoreConfig_Protocol = 2 +) + +// Enum value maps for NewFilestoreConfig_Protocol. +var ( + NewFilestoreConfig_Protocol_name = map[int32]string{ + 0: "PROTOCOL_UNSPECIFIED", + 1: "NFSV3", + 2: "NFSV41", + } + NewFilestoreConfig_Protocol_value = map[string]int32{ + "PROTOCOL_UNSPECIFIED": 0, + "NFSV3": 1, + "NFSV41": 2, + } +) + +func (x NewFilestoreConfig_Protocol) Enum() *NewFilestoreConfig_Protocol { + p := new(NewFilestoreConfig_Protocol) + *p = x + return p +} + +func (x NewFilestoreConfig_Protocol) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NewFilestoreConfig_Protocol) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[1].Descriptor() +} + +func (NewFilestoreConfig_Protocol) Type() protoreflect.EnumType { + return &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[1] +} + +func (x NewFilestoreConfig_Protocol) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NewFilestoreConfig_Protocol.Descriptor instead. +func (NewFilestoreConfig_Protocol) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{17, 1} +} + +// [Storage class](https://cloud.google.com/storage/docs/storage-classes) for +// a Cloud Storage bucket. +type NewBucketConfig_StorageClass int32 + +const ( + // Not set. + NewBucketConfig_STORAGE_CLASS_UNSPECIFIED NewBucketConfig_StorageClass = 0 + // Best for data that is frequently accessed. + NewBucketConfig_STANDARD NewBucketConfig_StorageClass = 1 + // Low-cost storage for data that is accessed less frequently. + NewBucketConfig_NEARLINE NewBucketConfig_StorageClass = 2 + // Very low-cost storage for infrequently accessed data. + NewBucketConfig_COLDLINE NewBucketConfig_StorageClass = 3 + // Lowest-cost storage for data archiving, online backup, and disaster + // recovery. + NewBucketConfig_ARCHIVE NewBucketConfig_StorageClass = 4 +) + +// Enum value maps for NewBucketConfig_StorageClass. +var ( + NewBucketConfig_StorageClass_name = map[int32]string{ + 0: "STORAGE_CLASS_UNSPECIFIED", + 1: "STANDARD", + 2: "NEARLINE", + 3: "COLDLINE", + 4: "ARCHIVE", + } + NewBucketConfig_StorageClass_value = map[string]int32{ + "STORAGE_CLASS_UNSPECIFIED": 0, + "STANDARD": 1, + "NEARLINE": 2, + "COLDLINE": 3, + "ARCHIVE": 4, + } +) + +func (x NewBucketConfig_StorageClass) Enum() *NewBucketConfig_StorageClass { + p := new(NewBucketConfig_StorageClass) + *p = x + return p +} + +func (x NewBucketConfig_StorageClass) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NewBucketConfig_StorageClass) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[2].Descriptor() +} + +func (NewBucketConfig_StorageClass) Type() protoreflect.EnumType { + return &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[2] +} + +func (x NewBucketConfig_StorageClass) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NewBucketConfig_StorageClass.Descriptor instead. +func (NewBucketConfig_StorageClass) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{20, 0} +} + +// Terminal storage class types of the autoclass bucket +type GcsAutoclassConfig_TerminalStorageClass int32 + +const ( + // Unspecified terminal storage class + GcsAutoclassConfig_TERMINAL_STORAGE_CLASS_UNSPECIFIED GcsAutoclassConfig_TerminalStorageClass = 0 +) + +// Enum value maps for GcsAutoclassConfig_TerminalStorageClass. +var ( + GcsAutoclassConfig_TerminalStorageClass_name = map[int32]string{ + 0: "TERMINAL_STORAGE_CLASS_UNSPECIFIED", + } + GcsAutoclassConfig_TerminalStorageClass_value = map[string]int32{ + "TERMINAL_STORAGE_CLASS_UNSPECIFIED": 0, + } +) + +func (x GcsAutoclassConfig_TerminalStorageClass) Enum() *GcsAutoclassConfig_TerminalStorageClass { + p := new(GcsAutoclassConfig_TerminalStorageClass) + *p = x + return p +} + +func (x GcsAutoclassConfig_TerminalStorageClass) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GcsAutoclassConfig_TerminalStorageClass) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[3].Descriptor() +} + +func (GcsAutoclassConfig_TerminalStorageClass) Type() protoreflect.EnumType { + return &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes[3] +} + +func (x GcsAutoclassConfig_TerminalStorageClass) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GcsAutoclassConfig_TerminalStorageClass.Descriptor instead. +func (GcsAutoclassConfig_TerminalStorageClass) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{21, 0} +} + +// A collection of virtual machines and connected resources forming a +// high-performance computing cluster capable of running large-scale, tightly +// coupled workloads. A cluster combines a set a compute resources that perform +// computations, storage resources that contain inputs and store outputs, an +// orchestrator that is responsible for assigning jobs to compute resources, and +// network resources that connect everything together. +type Cluster struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. [Relative resource name](https://google.aip.dev/122) of the + // cluster, in the format + // `projects/{project}/locations/{location}/clusters/{cluster}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. User-provided description of the cluster. + Description string `protobuf:"bytes,9,opt,name=description,proto3" json:"description,omitempty"` + // Optional. + // [Labels](https://cloud.google.com/compute/docs/labeling-resources) applied + // to the cluster. Labels can be used to organize clusters and to filter them + // in queries. + Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Output only. Time that the cluster was originally created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. Time that the cluster was most recently updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Output only. Indicates whether changes to the cluster are currently in + // flight. If this is `true`, then the current state might not match the + // cluster's intended state. + Reconciling bool `protobuf:"varint,10,opt,name=reconciling,proto3" json:"reconciling,omitempty"` + // Optional. Network resources available to the cluster. Must contain at most + // one value. Keys specify the ID of the network resource by which it can be + // referenced elsewhere, and must conform to + // [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, + // alphanumeric, and at most 63 characters). + NetworkResources map[string]*NetworkResource `protobuf:"bytes,11,rep,name=network_resources,json=networkResources,proto3" json:"network_resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. Storage resources available to the cluster. Keys specify the ID + // of the storage resource by which it can be referenced elsewhere, and must + // conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) + // (lower-case, alphanumeric, and at most 63 characters). + StorageResources map[string]*StorageResource `protobuf:"bytes,12,rep,name=storage_resources,json=storageResources,proto3" json:"storage_resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. Compute resources available to the cluster. Keys specify the ID + // of the compute resource by which it can be referenced elsewhere, and must + // conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) + // (lower-case, alphanumeric, and at most 63 characters). + ComputeResources map[string]*ComputeResource `protobuf:"bytes,13,rep,name=compute_resources,json=computeResources,proto3" json:"compute_resources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. Orchestrator that is responsible for scheduling and running jobs + // on the cluster. + Orchestrator *Orchestrator `protobuf:"bytes,8,opt,name=orchestrator,proto3" json:"orchestrator,omitempty"` +} + +func (x *Cluster) Reset() { + *x = Cluster{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Cluster) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cluster) ProtoMessage() {} + +func (x *Cluster) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Cluster.ProtoReflect.Descriptor instead. +func (*Cluster) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{0} +} + +func (x *Cluster) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Cluster) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Cluster) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Cluster) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *Cluster) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *Cluster) GetReconciling() bool { + if x != nil { + return x.Reconciling + } + return false +} + +func (x *Cluster) GetNetworkResources() map[string]*NetworkResource { + if x != nil { + return x.NetworkResources + } + return nil +} + +func (x *Cluster) GetStorageResources() map[string]*StorageResource { + if x != nil { + return x.StorageResources + } + return nil +} + +func (x *Cluster) GetComputeResources() map[string]*ComputeResource { + if x != nil { + return x.ComputeResources + } + return nil +} + +func (x *Cluster) GetOrchestrator() *Orchestrator { + if x != nil { + return x.Orchestrator + } + return nil +} + +// Request message for +// [ListClusters][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.ListClusters]. +type ListClustersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Parent location of the clusters to list, in the format + // `projects/{project}/locations/{location}`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. Maximum number of clusters to return. The service may return + // fewer than this value. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A page token received from a previous `ListClusters` call. + // Provide this to retrieve the subsequent page. When paginating, all other + // parameters provided to `ListClusters` must match the call that provided the + // page token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. [Filter](https://google.aip.dev/160) to apply to the returned + // results. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. How to order the resulting clusters. Must be one of the following + // strings: + // + // * `name` + // * `name desc` + // * `create_time` + // * `create_time desc` + // + // If not specified, clusters will be returned in an arbitrary order. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *ListClustersRequest) Reset() { + *x = ListClustersRequest{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListClustersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListClustersRequest) ProtoMessage() {} + +func (x *ListClustersRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListClustersRequest.ProtoReflect.Descriptor instead. +func (*ListClustersRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{1} +} + +func (x *ListClustersRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListClustersRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListClustersRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListClustersRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListClustersRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +// Response message for +// [ListClusters][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.ListClusters]. +type ListClustersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Clusters in the specified location. + Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` + // A token that can be sent as `page_token` to retrieve the next page. If this + // field is absent, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Locations that could not be reached. + Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"` +} + +func (x *ListClustersResponse) Reset() { + *x = ListClustersResponse{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListClustersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListClustersResponse) ProtoMessage() {} + +func (x *ListClustersResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListClustersResponse.ProtoReflect.Descriptor instead. +func (*ListClustersResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{2} +} + +func (x *ListClustersResponse) GetClusters() []*Cluster { + if x != nil { + return x.Clusters + } + return nil +} + +func (x *ListClustersResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListClustersResponse) GetUnreachable() []string { + if x != nil { + return x.Unreachable + } + return nil +} + +// Request message for +// [GetCluster][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.GetCluster]. +type GetClusterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Name of the cluster to retrieve, in the format + // `projects/{project}/locations/{location}/clusters/{cluster}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetClusterRequest) Reset() { + *x = GetClusterRequest{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetClusterRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetClusterRequest) ProtoMessage() {} + +func (x *GetClusterRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetClusterRequest.ProtoReflect.Descriptor instead. +func (*GetClusterRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{3} +} + +func (x *GetClusterRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request message for +// [CreateCluster][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.CreateCluster]. +type CreateClusterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Parent location in which the cluster should be created, in the + // format `projects/{project}/locations/{location}`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. ID of the cluster to create. Must conform to + // [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, + // alphanumeric, and at most 63 characters). + ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + // Required. Cluster to create. + Cluster *Cluster `protobuf:"bytes,3,opt,name=cluster,proto3" json:"cluster,omitempty"` + // Optional. A unique identifier for this request. A random UUID is + // recommended. This request is idempotent if and only if `request_id` is + // provided. + RequestId string `protobuf:"bytes,4,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` +} + +func (x *CreateClusterRequest) Reset() { + *x = CreateClusterRequest{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateClusterRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateClusterRequest) ProtoMessage() {} + +func (x *CreateClusterRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateClusterRequest.ProtoReflect.Descriptor instead. +func (*CreateClusterRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{4} +} + +func (x *CreateClusterRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateClusterRequest) GetClusterId() string { + if x != nil { + return x.ClusterId + } + return "" +} + +func (x *CreateClusterRequest) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *CreateClusterRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +// Request message for +// [UpdateCluster][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.UpdateCluster]. +type UpdateClusterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Cluster to update. + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + // Optional. Mask specifying which fields in the cluster to update. All paths + // must be specified explicitly - wildcards are not supported. At least one + // path must be provided. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // Optional. A unique identifier for this request. A random UUID is + // recommended. This request is idempotent if and only if `request_id` is + // provided. + RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` +} + +func (x *UpdateClusterRequest) Reset() { + *x = UpdateClusterRequest{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateClusterRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateClusterRequest) ProtoMessage() {} + +func (x *UpdateClusterRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateClusterRequest.ProtoReflect.Descriptor instead. +func (*UpdateClusterRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{5} +} + +func (x *UpdateClusterRequest) GetCluster() *Cluster { + if x != nil { + return x.Cluster + } + return nil +} + +func (x *UpdateClusterRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +func (x *UpdateClusterRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +// Request message for +// [DeleteCluster][google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.DeleteCluster]. +type DeleteClusterRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Name of the cluster to delete, in the format + // `projects/{project}/locations/{location}/clusters/{cluster}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. A unique identifier for this request. A random UUID is + // recommended. This request is idempotent if and only if `request_id` is + // provided. + RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` +} + +func (x *DeleteClusterRequest) Reset() { + *x = DeleteClusterRequest{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteClusterRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteClusterRequest) ProtoMessage() {} + +func (x *DeleteClusterRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteClusterRequest.ProtoReflect.Descriptor instead. +func (*DeleteClusterRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteClusterRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteClusterRequest) GetRequestId() string { + if x != nil { + return x.RequestId + } + return "" +} + +// A resource representing a network that connects the various components of a +// cluster together. +type NetworkResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Reference to the network resource in Google Cloud. Exactly one of these + // fields will be populated based on the configured type of network resource. + // + // Types that are assignable to Reference: + // + // *NetworkResource_Network + Reference isNetworkResource_Reference `protobuf_oneof:"reference"` + // Immutable. Configuration for this network resource, which describes how it + // should be created or imported. This field only controls how the network + // resource is initially created or imported. Subsequent changes to the + // network resource should be made via the resource's API and will not be + // reflected in the configuration. + Config *NetworkResourceConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *NetworkResource) Reset() { + *x = NetworkResource{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkResource) ProtoMessage() {} + +func (x *NetworkResource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkResource.ProtoReflect.Descriptor instead. +func (*NetworkResource) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{7} +} + +func (m *NetworkResource) GetReference() isNetworkResource_Reference { + if m != nil { + return m.Reference + } + return nil +} + +func (x *NetworkResource) GetNetwork() *NetworkReference { + if x, ok := x.GetReference().(*NetworkResource_Network); ok { + return x.Network + } + return nil +} + +func (x *NetworkResource) GetConfig() *NetworkResourceConfig { + if x != nil { + return x.Config + } + return nil +} + +type isNetworkResource_Reference interface { + isNetworkResource_Reference() +} + +type NetworkResource_Network struct { + // Reference to a network in Google Compute Engine. + Network *NetworkReference `protobuf:"bytes,3,opt,name=network,proto3,oneof"` +} + +func (*NetworkResource_Network) isNetworkResource_Reference() {} + +// A reference to a [VPC network](https://cloud.google.com/vpc/docs/vpc) in +// Google Compute Engine. +type NetworkReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Name of the network, in the format + // `projects/{project}/global/networks/{network}`. + Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` + // Output only. Name of the particular subnetwork being used by the cluster, + // in the format + // `projects/{project}/regions/{region}/subnetworks/{subnetwork}`. + Subnetwork string `protobuf:"bytes,2,opt,name=subnetwork,proto3" json:"subnetwork,omitempty"` +} + +func (x *NetworkReference) Reset() { + *x = NetworkReference{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkReference) ProtoMessage() {} + +func (x *NetworkReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkReference.ProtoReflect.Descriptor instead. +func (*NetworkReference) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{8} +} + +func (x *NetworkReference) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *NetworkReference) GetSubnetwork() string { + if x != nil { + return x.Subnetwork + } + return "" +} + +// Describes how a network resource should be initialized. Each network resource +// can either be imported from an existing Google Cloud resource or initialized +// when the cluster is created. +type NetworkResourceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Particular type of configuration for this network resource. + // + // Types that are assignable to Config: + // + // *NetworkResourceConfig_NewNetwork + // *NetworkResourceConfig_ExistingNetwork + Config isNetworkResourceConfig_Config `protobuf_oneof:"config"` +} + +func (x *NetworkResourceConfig) Reset() { + *x = NetworkResourceConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NetworkResourceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkResourceConfig) ProtoMessage() {} + +func (x *NetworkResourceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkResourceConfig.ProtoReflect.Descriptor instead. +func (*NetworkResourceConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{9} +} + +func (m *NetworkResourceConfig) GetConfig() isNetworkResourceConfig_Config { + if m != nil { + return m.Config + } + return nil +} + +func (x *NetworkResourceConfig) GetNewNetwork() *NewNetworkConfig { + if x, ok := x.GetConfig().(*NetworkResourceConfig_NewNetwork); ok { + return x.NewNetwork + } + return nil +} + +func (x *NetworkResourceConfig) GetExistingNetwork() *ExistingNetworkConfig { + if x, ok := x.GetConfig().(*NetworkResourceConfig_ExistingNetwork); ok { + return x.ExistingNetwork + } + return nil +} + +type isNetworkResourceConfig_Config interface { + isNetworkResourceConfig_Config() +} + +type NetworkResourceConfig_NewNetwork struct { + // Optional. Immutable. If set, indicates that a new network should be + // created. + NewNetwork *NewNetworkConfig `protobuf:"bytes,3,opt,name=new_network,json=newNetwork,proto3,oneof"` +} + +type NetworkResourceConfig_ExistingNetwork struct { + // Optional. Immutable. If set, indicates that an existing network should be + // imported. + ExistingNetwork *ExistingNetworkConfig `protobuf:"bytes,4,opt,name=existing_network,json=existingNetwork,proto3,oneof"` +} + +func (*NetworkResourceConfig_NewNetwork) isNetworkResourceConfig_Config() {} + +func (*NetworkResourceConfig_ExistingNetwork) isNetworkResourceConfig_Config() {} + +// When set in a +// [NetworkResourceConfig][google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig], +// indicates that a new network should be created. +type NewNetworkConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the network to create, in the format + // `projects/{project}/global/networks/{network}`. + Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` + // Optional. Immutable. Description of the network. Maximum of 2048 + // characters. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *NewNetworkConfig) Reset() { + *x = NewNetworkConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewNetworkConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewNetworkConfig) ProtoMessage() {} + +func (x *NewNetworkConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewNetworkConfig.ProtoReflect.Descriptor instead. +func (*NewNetworkConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{10} +} + +func (x *NewNetworkConfig) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *NewNetworkConfig) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +// When set in a +// [NetworkResourceConfig][google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig], +// indicates that an existing network should be imported. +type ExistingNetworkConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the network to import, in the format + // `projects/{project}/global/networks/{network}`. + Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"` + // Required. Immutable. Particular subnetwork to use, in the format + // `projects/{project}/regions/{region}/subnetworks/{subnetwork}`. + Subnetwork string `protobuf:"bytes,2,opt,name=subnetwork,proto3" json:"subnetwork,omitempty"` +} + +func (x *ExistingNetworkConfig) Reset() { + *x = ExistingNetworkConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExistingNetworkConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExistingNetworkConfig) ProtoMessage() {} + +func (x *ExistingNetworkConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExistingNetworkConfig.ProtoReflect.Descriptor instead. +func (*ExistingNetworkConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{11} +} + +func (x *ExistingNetworkConfig) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ExistingNetworkConfig) GetSubnetwork() string { + if x != nil { + return x.Subnetwork + } + return "" +} + +// A resource representing a form of persistent storage that is accessible to +// compute resources in the cluster. +type StorageResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Reference to the storage resource in Google Cloud. Exactly one of these + // fields will be populated based on the configured type of storage resource. + // + // Types that are assignable to Reference: + // + // *StorageResource_Filestore + // *StorageResource_Bucket + // *StorageResource_Lustre + Reference isStorageResource_Reference `protobuf_oneof:"reference"` + // Required. Immutable. Configuration for this storage resource, which + // describes how it should be created or imported. This field only controls + // how the storage resource is initially created or imported. Subsequent + // changes to the storage resource should be made via the resource's API and + // will not be reflected in the configuration. + Config *StorageResourceConfig `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *StorageResource) Reset() { + *x = StorageResource{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StorageResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StorageResource) ProtoMessage() {} + +func (x *StorageResource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StorageResource.ProtoReflect.Descriptor instead. +func (*StorageResource) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{12} +} + +func (m *StorageResource) GetReference() isStorageResource_Reference { + if m != nil { + return m.Reference + } + return nil +} + +func (x *StorageResource) GetFilestore() *FilestoreReference { + if x, ok := x.GetReference().(*StorageResource_Filestore); ok { + return x.Filestore + } + return nil +} + +func (x *StorageResource) GetBucket() *BucketReference { + if x, ok := x.GetReference().(*StorageResource_Bucket); ok { + return x.Bucket + } + return nil +} + +func (x *StorageResource) GetLustre() *LustreReference { + if x, ok := x.GetReference().(*StorageResource_Lustre); ok { + return x.Lustre + } + return nil +} + +func (x *StorageResource) GetConfig() *StorageResourceConfig { + if x != nil { + return x.Config + } + return nil +} + +type isStorageResource_Reference interface { + isStorageResource_Reference() +} + +type StorageResource_Filestore struct { + // Reference to a Filestore instance. Populated if and only if the storage + // resource was configured to use Filestore. + Filestore *FilestoreReference `protobuf:"bytes,1,opt,name=filestore,proto3,oneof"` +} + +type StorageResource_Bucket struct { + // Reference to a Google Cloud Storage bucket. Populated if and only if the + // storage resource was configured to use Google Cloud Storage. + Bucket *BucketReference `protobuf:"bytes,2,opt,name=bucket,proto3,oneof"` +} + +type StorageResource_Lustre struct { + // Reference to a Managed Lustre instance. Populated if and only if the + // storage resource was configured to use Managed Lustre. + Lustre *LustreReference `protobuf:"bytes,3,opt,name=lustre,proto3,oneof"` +} + +func (*StorageResource_Filestore) isStorageResource_Reference() {} + +func (*StorageResource_Bucket) isStorageResource_Reference() {} + +func (*StorageResource_Lustre) isStorageResource_Reference() {} + +// A reference to a [Filestore](https://cloud.google.com/filestore) instance. +type FilestoreReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Name of the Filestore instance, in the format + // `projects/{project}/locations/{location}/instances/{instance}` + Filestore string `protobuf:"bytes,1,opt,name=filestore,proto3" json:"filestore,omitempty"` +} + +func (x *FilestoreReference) Reset() { + *x = FilestoreReference{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FilestoreReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FilestoreReference) ProtoMessage() {} + +func (x *FilestoreReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FilestoreReference.ProtoReflect.Descriptor instead. +func (*FilestoreReference) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{13} +} + +func (x *FilestoreReference) GetFilestore() string { + if x != nil { + return x.Filestore + } + return "" +} + +// A reference to a [Google Cloud Storage](https://cloud.google.com/storage) +// bucket. +type BucketReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Name of the bucket. + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` +} + +func (x *BucketReference) Reset() { + *x = BucketReference{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BucketReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BucketReference) ProtoMessage() {} + +func (x *BucketReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BucketReference.ProtoReflect.Descriptor instead. +func (*BucketReference) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{14} +} + +func (x *BucketReference) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +// A reference to a [Managed +// Lustre](https://cloud.google.com/products/managed-lustre) instance. +type LustreReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Name of the Managed Lustre instance, in the format + // `projects/{project}/locations/{location}/instances/{instance}` + Lustre string `protobuf:"bytes,1,opt,name=lustre,proto3" json:"lustre,omitempty"` +} + +func (x *LustreReference) Reset() { + *x = LustreReference{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LustreReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LustreReference) ProtoMessage() {} + +func (x *LustreReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LustreReference.ProtoReflect.Descriptor instead. +func (*LustreReference) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{15} +} + +func (x *LustreReference) GetLustre() string { + if x != nil { + return x.Lustre + } + return "" +} + +// Describes how a storage resource should be initialized. Each storage resource +// can either be imported from an existing Google Cloud resource or initialized +// when the cluster is created. +type StorageResourceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Particular type of configuration for this storage resource. + // + // Types that are assignable to Config: + // + // *StorageResourceConfig_NewFilestore + // *StorageResourceConfig_ExistingFilestore + // *StorageResourceConfig_NewBucket + // *StorageResourceConfig_ExistingBucket + // *StorageResourceConfig_NewLustre + // *StorageResourceConfig_ExistingLustre + Config isStorageResourceConfig_Config `protobuf_oneof:"config"` +} + +func (x *StorageResourceConfig) Reset() { + *x = StorageResourceConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StorageResourceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StorageResourceConfig) ProtoMessage() {} + +func (x *StorageResourceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StorageResourceConfig.ProtoReflect.Descriptor instead. +func (*StorageResourceConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{16} +} + +func (m *StorageResourceConfig) GetConfig() isStorageResourceConfig_Config { + if m != nil { + return m.Config + } + return nil +} + +func (x *StorageResourceConfig) GetNewFilestore() *NewFilestoreConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_NewFilestore); ok { + return x.NewFilestore + } + return nil +} + +func (x *StorageResourceConfig) GetExistingFilestore() *ExistingFilestoreConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_ExistingFilestore); ok { + return x.ExistingFilestore + } + return nil +} + +func (x *StorageResourceConfig) GetNewBucket() *NewBucketConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_NewBucket); ok { + return x.NewBucket + } + return nil +} + +func (x *StorageResourceConfig) GetExistingBucket() *ExistingBucketConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_ExistingBucket); ok { + return x.ExistingBucket + } + return nil +} + +func (x *StorageResourceConfig) GetNewLustre() *NewLustreConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_NewLustre); ok { + return x.NewLustre + } + return nil +} + +func (x *StorageResourceConfig) GetExistingLustre() *ExistingLustreConfig { + if x, ok := x.GetConfig().(*StorageResourceConfig_ExistingLustre); ok { + return x.ExistingLustre + } + return nil +} + +type isStorageResourceConfig_Config interface { + isStorageResourceConfig_Config() +} + +type StorageResourceConfig_NewFilestore struct { + // Optional. Immutable. If set, indicates that a new Filestore instance + // should be created. + NewFilestore *NewFilestoreConfig `protobuf:"bytes,1,opt,name=new_filestore,json=newFilestore,proto3,oneof"` +} + +type StorageResourceConfig_ExistingFilestore struct { + // Optional. Immutable. If set, indicates that an existing Filestore + // instance should be imported. + ExistingFilestore *ExistingFilestoreConfig `protobuf:"bytes,2,opt,name=existing_filestore,json=existingFilestore,proto3,oneof"` +} + +type StorageResourceConfig_NewBucket struct { + // Optional. Immutable. If set, indicates that a new Cloud Storage bucket + // should be created. + NewBucket *NewBucketConfig `protobuf:"bytes,3,opt,name=new_bucket,json=newBucket,proto3,oneof"` +} + +type StorageResourceConfig_ExistingBucket struct { + // Optional. Immutable. If set, indicates that an existing Cloud Storage + // bucket should be imported. + ExistingBucket *ExistingBucketConfig `protobuf:"bytes,4,opt,name=existing_bucket,json=existingBucket,proto3,oneof"` +} + +type StorageResourceConfig_NewLustre struct { + // Optional. Immutable. If set, indicates that a new Managed Lustre instance + // should be created. + NewLustre *NewLustreConfig `protobuf:"bytes,5,opt,name=new_lustre,json=newLustre,proto3,oneof"` +} + +type StorageResourceConfig_ExistingLustre struct { + // Optional. Immutable. If set, indicates that an existing Managed Lustre + // instance should be imported. + ExistingLustre *ExistingLustreConfig `protobuf:"bytes,6,opt,name=existing_lustre,json=existingLustre,proto3,oneof"` +} + +func (*StorageResourceConfig_NewFilestore) isStorageResourceConfig_Config() {} + +func (*StorageResourceConfig_ExistingFilestore) isStorageResourceConfig_Config() {} + +func (*StorageResourceConfig_NewBucket) isStorageResourceConfig_Config() {} + +func (*StorageResourceConfig_ExistingBucket) isStorageResourceConfig_Config() {} + +func (*StorageResourceConfig_NewLustre) isStorageResourceConfig_Config() {} + +func (*StorageResourceConfig_ExistingLustre) isStorageResourceConfig_Config() {} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that a new [Filestore](https://cloud.google.com/filestore) instance +// should be created. +type NewFilestoreConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the Filestore instance to create, in the + // format `projects/{project}/locations/{location}/instances/{instance}` + Filestore string `protobuf:"bytes,1,opt,name=filestore,proto3" json:"filestore,omitempty"` + // Optional. Immutable. Description of the instance. Maximum of 2048 + // characters. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // Required. Immutable. File system shares on the instance. Exactly one file + // share must be specified. + FileShares []*FileShareConfig `protobuf:"bytes,2,rep,name=file_shares,json=fileShares,proto3" json:"file_shares,omitempty"` + // Required. Immutable. Service tier to use for the instance. + Tier NewFilestoreConfig_Tier `protobuf:"varint,3,opt,name=tier,proto3,enum=google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig_Tier" json:"tier,omitempty"` + // Optional. Immutable. Access protocol to use for all file shares in the + // instance. Defaults to NFS V3 if not set. + Protocol NewFilestoreConfig_Protocol `protobuf:"varint,5,opt,name=protocol,proto3,enum=google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig_Protocol" json:"protocol,omitempty"` +} + +func (x *NewFilestoreConfig) Reset() { + *x = NewFilestoreConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewFilestoreConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewFilestoreConfig) ProtoMessage() {} + +func (x *NewFilestoreConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewFilestoreConfig.ProtoReflect.Descriptor instead. +func (*NewFilestoreConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{17} +} + +func (x *NewFilestoreConfig) GetFilestore() string { + if x != nil { + return x.Filestore + } + return "" +} + +func (x *NewFilestoreConfig) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *NewFilestoreConfig) GetFileShares() []*FileShareConfig { + if x != nil { + return x.FileShares + } + return nil +} + +func (x *NewFilestoreConfig) GetTier() NewFilestoreConfig_Tier { + if x != nil { + return x.Tier + } + return NewFilestoreConfig_TIER_UNSPECIFIED +} + +func (x *NewFilestoreConfig) GetProtocol() NewFilestoreConfig_Protocol { + if x != nil { + return x.Protocol + } + return NewFilestoreConfig_PROTOCOL_UNSPECIFIED +} + +// Message describing filestore configuration +type FileShareConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Size of the filestore in GB. Must be between 1024 and 102400, and + // must meet scalability requirements described at + // https://cloud.google.com/filestore/docs/service-tiers. + CapacityGb int64 `protobuf:"varint,1,opt,name=capacity_gb,json=capacityGb,proto3" json:"capacity_gb,omitempty"` + // Required. Filestore share location + FileShare string `protobuf:"bytes,2,opt,name=file_share,json=fileShare,proto3" json:"file_share,omitempty"` +} + +func (x *FileShareConfig) Reset() { + *x = FileShareConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FileShareConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileShareConfig) ProtoMessage() {} + +func (x *FileShareConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileShareConfig.ProtoReflect.Descriptor instead. +func (*FileShareConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{18} +} + +func (x *FileShareConfig) GetCapacityGb() int64 { + if x != nil { + return x.CapacityGb + } + return 0 +} + +func (x *FileShareConfig) GetFileShare() string { + if x != nil { + return x.FileShare + } + return "" +} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that an existing [Filestore](https://cloud.google.com/filestore) +// instance should be imported. +type ExistingFilestoreConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the Filestore instance to import, in the + // format `projects/{project}/locations/{location}/instances/{instance}` + Filestore string `protobuf:"bytes,1,opt,name=filestore,proto3" json:"filestore,omitempty"` +} + +func (x *ExistingFilestoreConfig) Reset() { + *x = ExistingFilestoreConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExistingFilestoreConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExistingFilestoreConfig) ProtoMessage() {} + +func (x *ExistingFilestoreConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExistingFilestoreConfig.ProtoReflect.Descriptor instead. +func (*ExistingFilestoreConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{19} +} + +func (x *ExistingFilestoreConfig) GetFilestore() string { + if x != nil { + return x.Filestore + } + return "" +} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that a new [Google Cloud Storage](https://cloud.google.com/storage) +// bucket should be created. +type NewBucketConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Storage class of the bucket, which can be set automatically or explicitly. + // + // Types that are assignable to Option: + // + // *NewBucketConfig_Autoclass + // *NewBucketConfig_StorageClass_ + Option isNewBucketConfig_Option `protobuf_oneof:"option"` + // Required. Immutable. Name of the Cloud Storage bucket to create. + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + // Optional. Immutable. If set, indicates that the bucket should use + // [hierarchical + // namespaces](https://cloud.google.com/storage/docs/hns-overview). + HierarchicalNamespace *GcsHierarchicalNamespaceConfig `protobuf:"bytes,4,opt,name=hierarchical_namespace,json=hierarchicalNamespace,proto3" json:"hierarchical_namespace,omitempty"` +} + +func (x *NewBucketConfig) Reset() { + *x = NewBucketConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewBucketConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewBucketConfig) ProtoMessage() {} + +func (x *NewBucketConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewBucketConfig.ProtoReflect.Descriptor instead. +func (*NewBucketConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{20} +} + +func (m *NewBucketConfig) GetOption() isNewBucketConfig_Option { + if m != nil { + return m.Option + } + return nil +} + +func (x *NewBucketConfig) GetAutoclass() *GcsAutoclassConfig { + if x, ok := x.GetOption().(*NewBucketConfig_Autoclass); ok { + return x.Autoclass + } + return nil +} + +func (x *NewBucketConfig) GetStorageClass() NewBucketConfig_StorageClass { + if x, ok := x.GetOption().(*NewBucketConfig_StorageClass_); ok { + return x.StorageClass + } + return NewBucketConfig_STORAGE_CLASS_UNSPECIFIED +} + +func (x *NewBucketConfig) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +func (x *NewBucketConfig) GetHierarchicalNamespace() *GcsHierarchicalNamespaceConfig { + if x != nil { + return x.HierarchicalNamespace + } + return nil +} + +type isNewBucketConfig_Option interface { + isNewBucketConfig_Option() +} + +type NewBucketConfig_Autoclass struct { + // Optional. Immutable. If set, indicates that the bucket should use + // [Autoclass](https://cloud.google.com/storage/docs/autoclass). + Autoclass *GcsAutoclassConfig `protobuf:"bytes,2,opt,name=autoclass,proto3,oneof"` +} + +type NewBucketConfig_StorageClass_ struct { + // Optional. Immutable. If set, uses the provided storage class as the + // bucket's default storage class. + StorageClass NewBucketConfig_StorageClass `protobuf:"varint,3,opt,name=storage_class,json=storageClass,proto3,enum=google.cloud.hypercomputecluster.v1beta.NewBucketConfig_StorageClass,oneof"` +} + +func (*NewBucketConfig_Autoclass) isNewBucketConfig_Option() {} + +func (*NewBucketConfig_StorageClass_) isNewBucketConfig_Option() {} + +// Message describing Google Cloud Storage autoclass configuration +type GcsAutoclassConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Enables Auto-class feature. + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Optional. Terminal storage class of the autoclass bucket + TerminalStorageClass GcsAutoclassConfig_TerminalStorageClass `protobuf:"varint,2,opt,name=terminal_storage_class,json=terminalStorageClass,proto3,enum=google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig_TerminalStorageClass" json:"terminal_storage_class,omitempty"` +} + +func (x *GcsAutoclassConfig) Reset() { + *x = GcsAutoclassConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GcsAutoclassConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GcsAutoclassConfig) ProtoMessage() {} + +func (x *GcsAutoclassConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GcsAutoclassConfig.ProtoReflect.Descriptor instead. +func (*GcsAutoclassConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{21} +} + +func (x *GcsAutoclassConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *GcsAutoclassConfig) GetTerminalStorageClass() GcsAutoclassConfig_TerminalStorageClass { + if x != nil { + return x.TerminalStorageClass + } + return GcsAutoclassConfig_TERMINAL_STORAGE_CLASS_UNSPECIFIED +} + +// Message describing Google Cloud Storage hierarchical namespace configuration +type GcsHierarchicalNamespaceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Enables hierarchical namespace setup for the bucket. + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` +} + +func (x *GcsHierarchicalNamespaceConfig) Reset() { + *x = GcsHierarchicalNamespaceConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GcsHierarchicalNamespaceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GcsHierarchicalNamespaceConfig) ProtoMessage() {} + +func (x *GcsHierarchicalNamespaceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GcsHierarchicalNamespaceConfig.ProtoReflect.Descriptor instead. +func (*GcsHierarchicalNamespaceConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{22} +} + +func (x *GcsHierarchicalNamespaceConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that an existing [Google Cloud +// Storage](https://cloud.google.com/storage) bucket should be imported. +type ExistingBucketConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the Cloud Storage bucket to import. + Bucket string `protobuf:"bytes,1,opt,name=bucket,proto3" json:"bucket,omitempty"` +} + +func (x *ExistingBucketConfig) Reset() { + *x = ExistingBucketConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExistingBucketConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExistingBucketConfig) ProtoMessage() {} + +func (x *ExistingBucketConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExistingBucketConfig.ProtoReflect.Descriptor instead. +func (*ExistingBucketConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{23} +} + +func (x *ExistingBucketConfig) GetBucket() string { + if x != nil { + return x.Bucket + } + return "" +} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that a new [Managed +// Lustre](https://cloud.google.com/products/managed-lustre) instance should be +// created. +type NewLustreConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the Managed Lustre instance to create, in the + // format `projects/{project}/locations/{location}/instances/{instance}` + Lustre string `protobuf:"bytes,1,opt,name=lustre,proto3" json:"lustre,omitempty"` + // Optional. Immutable. Description of the Managed Lustre instance. Maximum of + // 2048 characters. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // Required. Immutable. Filesystem name for this instance. This name is used + // by client-side tools, including when mounting the instance. Must be 8 + // characters or less and can only contain letters and numbers. + Filesystem string `protobuf:"bytes,3,opt,name=filesystem,proto3" json:"filesystem,omitempty"` + // Required. Immutable. Storage capacity of the instance in gibibytes (GiB). + // Allowed values are between 18000 and 7632000. + CapacityGb int64 `protobuf:"varint,4,opt,name=capacity_gb,json=capacityGb,proto3" json:"capacity_gb,omitempty"` +} + +func (x *NewLustreConfig) Reset() { + *x = NewLustreConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewLustreConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewLustreConfig) ProtoMessage() {} + +func (x *NewLustreConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewLustreConfig.ProtoReflect.Descriptor instead. +func (*NewLustreConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{24} +} + +func (x *NewLustreConfig) GetLustre() string { + if x != nil { + return x.Lustre + } + return "" +} + +func (x *NewLustreConfig) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *NewLustreConfig) GetFilesystem() string { + if x != nil { + return x.Filesystem + } + return "" +} + +func (x *NewLustreConfig) GetCapacityGb() int64 { + if x != nil { + return x.CapacityGb + } + return 0 +} + +// When set in a +// [StorageResourceConfig][google.cloud.hypercomputecluster.v1beta.StorageResourceConfig], +// indicates that an existing [Managed +// Lustre](https://cloud.google.com/products/managed-lustre) instance should be +// imported. +type ExistingLustreConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the Managed Lustre instance to import, in the + // format `projects/{project}/locations/{location}/instances/{instance}` + Lustre string `protobuf:"bytes,1,opt,name=lustre,proto3" json:"lustre,omitempty"` +} + +func (x *ExistingLustreConfig) Reset() { + *x = ExistingLustreConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExistingLustreConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExistingLustreConfig) ProtoMessage() {} + +func (x *ExistingLustreConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExistingLustreConfig.ProtoReflect.Descriptor instead. +func (*ExistingLustreConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{25} +} + +func (x *ExistingLustreConfig) GetLustre() string { + if x != nil { + return x.Lustre + } + return "" +} + +// A resource defining how virtual machines and accelerators should be +// provisioned for the cluster. +type ComputeResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Configuration for this compute resource, which + // describes how it should be created at runtime. + Config *ComputeResourceConfig `protobuf:"bytes,6,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *ComputeResource) Reset() { + *x = ComputeResource{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ComputeResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputeResource) ProtoMessage() {} + +func (x *ComputeResource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputeResource.ProtoReflect.Descriptor instead. +func (*ComputeResource) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{26} +} + +func (x *ComputeResource) GetConfig() *ComputeResourceConfig { + if x != nil { + return x.Config + } + return nil +} + +// Describes how a compute resource should be created at runtime. +type ComputeResourceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Particular type of configuration for this compute resource. + // + // Types that are assignable to Config: + // + // *ComputeResourceConfig_NewOnDemandInstances + // *ComputeResourceConfig_NewSpotInstances + // *ComputeResourceConfig_NewReservedInstances + // *ComputeResourceConfig_NewFlexStartInstances + Config isComputeResourceConfig_Config `protobuf_oneof:"config"` +} + +func (x *ComputeResourceConfig) Reset() { + *x = ComputeResourceConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ComputeResourceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputeResourceConfig) ProtoMessage() {} + +func (x *ComputeResourceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputeResourceConfig.ProtoReflect.Descriptor instead. +func (*ComputeResourceConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{27} +} + +func (m *ComputeResourceConfig) GetConfig() isComputeResourceConfig_Config { + if m != nil { + return m.Config + } + return nil +} + +func (x *ComputeResourceConfig) GetNewOnDemandInstances() *NewOnDemandInstancesConfig { + if x, ok := x.GetConfig().(*ComputeResourceConfig_NewOnDemandInstances); ok { + return x.NewOnDemandInstances + } + return nil +} + +func (x *ComputeResourceConfig) GetNewSpotInstances() *NewSpotInstancesConfig { + if x, ok := x.GetConfig().(*ComputeResourceConfig_NewSpotInstances); ok { + return x.NewSpotInstances + } + return nil +} + +func (x *ComputeResourceConfig) GetNewReservedInstances() *NewReservedInstancesConfig { + if x, ok := x.GetConfig().(*ComputeResourceConfig_NewReservedInstances); ok { + return x.NewReservedInstances + } + return nil +} + +func (x *ComputeResourceConfig) GetNewFlexStartInstances() *NewFlexStartInstancesConfig { + if x, ok := x.GetConfig().(*ComputeResourceConfig_NewFlexStartInstances); ok { + return x.NewFlexStartInstances + } + return nil +} + +type isComputeResourceConfig_Config interface { + isComputeResourceConfig_Config() +} + +type ComputeResourceConfig_NewOnDemandInstances struct { + // Optional. Immutable. If set, indicates that this resource should use + // on-demand VMs. + NewOnDemandInstances *NewOnDemandInstancesConfig `protobuf:"bytes,1,opt,name=new_on_demand_instances,json=newOnDemandInstances,proto3,oneof"` +} + +type ComputeResourceConfig_NewSpotInstances struct { + // Optional. Immutable. If set, indicates that this resource should use spot + // VMs. + NewSpotInstances *NewSpotInstancesConfig `protobuf:"bytes,2,opt,name=new_spot_instances,json=newSpotInstances,proto3,oneof"` +} + +type ComputeResourceConfig_NewReservedInstances struct { + // Optional. Immutable. If set, indicates that this resource should use + // reserved VMs. + NewReservedInstances *NewReservedInstancesConfig `protobuf:"bytes,3,opt,name=new_reserved_instances,json=newReservedInstances,proto3,oneof"` +} + +type ComputeResourceConfig_NewFlexStartInstances struct { + // Optional. Immutable. If set, indicates that this resource should use + // flex-start VMs. + NewFlexStartInstances *NewFlexStartInstancesConfig `protobuf:"bytes,5,opt,name=new_flex_start_instances,json=newFlexStartInstances,proto3,oneof"` +} + +func (*ComputeResourceConfig_NewOnDemandInstances) isComputeResourceConfig_Config() {} + +func (*ComputeResourceConfig_NewSpotInstances) isComputeResourceConfig_Config() {} + +func (*ComputeResourceConfig_NewReservedInstances) isComputeResourceConfig_Config() {} + +func (*ComputeResourceConfig_NewFlexStartInstances) isComputeResourceConfig_Config() {} + +// When set in a +// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig], +// indicates that on-demand (i.e., using the standard provisioning model) VM +// instances should be created. +type NewOnDemandInstancesConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the zone in which VM instances should run, + // e.g., `us-central1-a`. Must be in the same region as the cluster, and must + // match the zone of any other resources specified in the cluster. + Zone string `protobuf:"bytes,1,opt,name=zone,proto3" json:"zone,omitempty"` + // Required. Immutable. Name of the Compute Engine [machine + // type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g. + // `n2-standard-2`. + MachineType string `protobuf:"bytes,2,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` +} + +func (x *NewOnDemandInstancesConfig) Reset() { + *x = NewOnDemandInstancesConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewOnDemandInstancesConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewOnDemandInstancesConfig) ProtoMessage() {} + +func (x *NewOnDemandInstancesConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewOnDemandInstancesConfig.ProtoReflect.Descriptor instead. +func (*NewOnDemandInstancesConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{28} +} + +func (x *NewOnDemandInstancesConfig) GetZone() string { + if x != nil { + return x.Zone + } + return "" +} + +func (x *NewOnDemandInstancesConfig) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +// When set in a +// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig], +// indicates that [spot +// VM](https://cloud.google.com/compute/docs/instances/spot) instances should be +// created. +type NewSpotInstancesConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the zone in which VM instances should run, + // e.g., `us-central1-a`. Must be in the same region as the cluster, and must + // match the zone of any other resources specified in the cluster. + Zone string `protobuf:"bytes,1,opt,name=zone,proto3" json:"zone,omitempty"` + // Required. Immutable. Name of the Compute Engine [machine + // type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g. + // `n2-standard-2`. + MachineType string `protobuf:"bytes,2,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` +} + +func (x *NewSpotInstancesConfig) Reset() { + *x = NewSpotInstancesConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewSpotInstancesConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewSpotInstancesConfig) ProtoMessage() {} + +func (x *NewSpotInstancesConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[29] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewSpotInstancesConfig.ProtoReflect.Descriptor instead. +func (*NewSpotInstancesConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{29} +} + +func (x *NewSpotInstancesConfig) GetZone() string { + if x != nil { + return x.Zone + } + return "" +} + +func (x *NewSpotInstancesConfig) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +// When set in a +// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig], +// indicates that VM instances should be created from a +// [reservation](https://cloud.google.com/compute/docs/instances/reservations-overview). +type NewReservedInstancesConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Source of the reservation + // + // Types that are assignable to Source: + // + // *NewReservedInstancesConfig_Reservation + Source isNewReservedInstancesConfig_Source `protobuf_oneof:"source"` +} + +func (x *NewReservedInstancesConfig) Reset() { + *x = NewReservedInstancesConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewReservedInstancesConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewReservedInstancesConfig) ProtoMessage() {} + +func (x *NewReservedInstancesConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[30] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewReservedInstancesConfig.ProtoReflect.Descriptor instead. +func (*NewReservedInstancesConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{30} +} + +func (m *NewReservedInstancesConfig) GetSource() isNewReservedInstancesConfig_Source { + if m != nil { + return m.Source + } + return nil +} + +func (x *NewReservedInstancesConfig) GetReservation() string { + if x, ok := x.GetSource().(*NewReservedInstancesConfig_Reservation); ok { + return x.Reservation + } + return "" +} + +type isNewReservedInstancesConfig_Source interface { + isNewReservedInstancesConfig_Source() +} + +type NewReservedInstancesConfig_Reservation struct { + // Optional. Immutable. Name of the reservation from which VM instances + // should be created, in the format + // `projects/{project}/zones/{zone}/reservations/{reservation}`. + Reservation string `protobuf:"bytes,1,opt,name=reservation,proto3,oneof"` +} + +func (*NewReservedInstancesConfig_Reservation) isNewReservedInstancesConfig_Source() {} + +// When set in a +// [ComputeResourceConfig][google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig], +// indicates that VM instances should be created using [Flex +// Start](https://cloud.google.com/compute/docs/instances/provisioning-models). +type NewFlexStartInstancesConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. Name of the zone in which VM instances should run, + // e.g., `us-central1-a`. Must be in the same region as the cluster, and must + // match the zone of any other resources specified in the cluster. + Zone string `protobuf:"bytes,1,opt,name=zone,proto3" json:"zone,omitempty"` + // Required. Immutable. Name of the Compute Engine [machine + // type](https://cloud.google.com/compute/docs/machine-resource) to use, e.g. + // `n2-standard-2`. + MachineType string `protobuf:"bytes,2,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` + // Required. Immutable. Specifies the time limit for created instances. + // Instances will be terminated at the end of this duration. + MaxDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=max_duration,json=maxDuration,proto3" json:"max_duration,omitempty"` +} + +func (x *NewFlexStartInstancesConfig) Reset() { + *x = NewFlexStartInstancesConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NewFlexStartInstancesConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewFlexStartInstancesConfig) ProtoMessage() {} + +func (x *NewFlexStartInstancesConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[31] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NewFlexStartInstancesConfig.ProtoReflect.Descriptor instead. +func (*NewFlexStartInstancesConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{31} +} + +func (x *NewFlexStartInstancesConfig) GetZone() string { + if x != nil { + return x.Zone + } + return "" +} + +func (x *NewFlexStartInstancesConfig) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +func (x *NewFlexStartInstancesConfig) GetMaxDuration() *durationpb.Duration { + if x != nil { + return x.MaxDuration + } + return nil +} + +// A [Persistent disk](https://cloud.google.com/compute/docs/disks) used as the +// boot disk for a Compute Engine VM instance. +type BootDisk struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Immutable. [Persistent disk + // type](https://cloud.google.com/compute/docs/disks#disk-types), in the + // format `projects/{project}/zones/{zone}/diskTypes/{disk_type}`. + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // Required. Immutable. Size of the disk in gigabytes. Must be at least 10GB. + SizeGb int64 `protobuf:"varint,2,opt,name=size_gb,json=sizeGb,proto3" json:"size_gb,omitempty"` +} + +func (x *BootDisk) Reset() { + *x = BootDisk{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BootDisk) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BootDisk) ProtoMessage() {} + +func (x *BootDisk) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[32] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BootDisk.ProtoReflect.Descriptor instead. +func (*BootDisk) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{32} +} + +func (x *BootDisk) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *BootDisk) GetSizeGb() int64 { + if x != nil { + return x.SizeGb + } + return 0 +} + +// The component responsible for scheduling and running workloads on the +// cluster as well as providing the user interface for interacting with the +// cluster at runtime. +type Orchestrator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Particular type of orchestrator to use in this cluster. + // + // Types that are assignable to Option: + // + // *Orchestrator_Slurm + Option isOrchestrator_Option `protobuf_oneof:"option"` +} + +func (x *Orchestrator) Reset() { + *x = Orchestrator{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Orchestrator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Orchestrator) ProtoMessage() {} + +func (x *Orchestrator) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Orchestrator.ProtoReflect.Descriptor instead. +func (*Orchestrator) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{33} +} + +func (m *Orchestrator) GetOption() isOrchestrator_Option { + if m != nil { + return m.Option + } + return nil +} + +func (x *Orchestrator) GetSlurm() *SlurmOrchestrator { + if x, ok := x.GetOption().(*Orchestrator_Slurm); ok { + return x.Slurm + } + return nil +} + +type isOrchestrator_Option interface { + isOrchestrator_Option() +} + +type Orchestrator_Slurm struct { + // Optional. If set, indicates that the cluster should use Slurm as the + // orchestrator. + Slurm *SlurmOrchestrator `protobuf:"bytes,1,opt,name=slurm,proto3,oneof"` +} + +func (*Orchestrator_Slurm) isOrchestrator_Option() {} + +// When set in +// [Orchestrator][google.cloud.hypercomputecluster.v1beta.Orchestrator], +// indicates that the cluster should use [Slurm](https://slurm.schedmd.com/) as +// the orchestrator. +type SlurmOrchestrator struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Configuration for login nodes, which allow users to access the + // cluster over SSH. + LoginNodes *SlurmLoginNodes `protobuf:"bytes,6,opt,name=login_nodes,json=loginNodes,proto3" json:"login_nodes,omitempty"` + // Required. Configuration of Slurm nodesets, which define groups of compute + // resources that can be used by Slurm. At least one compute node is required. + NodeSets []*SlurmNodeSet `protobuf:"bytes,1,rep,name=node_sets,json=nodeSets,proto3" json:"node_sets,omitempty"` + // Required. Configuration of Slurm partitions, which group one or more + // nodesets. Acts as a queue against which jobs can be submitted. At least one + // partition is required. + Partitions []*SlurmPartition `protobuf:"bytes,2,rep,name=partitions,proto3" json:"partitions,omitempty"` + // Optional. Default partition to use for submitted jobs that do not + // explicitly specify a partition. Required if and only if there is more than + // one partition, in which case it must match the id of one of the partitions. + DefaultPartition string `protobuf:"bytes,3,opt,name=default_partition,json=defaultPartition,proto3" json:"default_partition,omitempty"` + // Optional. Slurm [prolog + // scripts](https://slurm.schedmd.com/prolog_epilog.html), which will be + // executed by compute nodes before a node begins running a new job. Values + // must not be empty. + PrologBashScripts []string `protobuf:"bytes,4,rep,name=prolog_bash_scripts,json=prologBashScripts,proto3" json:"prolog_bash_scripts,omitempty"` + // Optional. Slurm [epilog + // scripts](https://slurm.schedmd.com/prolog_epilog.html), which will be + // executed by compute nodes whenever a node finishes running a job. Values + // must not be empty. + EpilogBashScripts []string `protobuf:"bytes,5,rep,name=epilog_bash_scripts,json=epilogBashScripts,proto3" json:"epilog_bash_scripts,omitempty"` +} + +func (x *SlurmOrchestrator) Reset() { + *x = SlurmOrchestrator{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SlurmOrchestrator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlurmOrchestrator) ProtoMessage() {} + +func (x *SlurmOrchestrator) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[34] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlurmOrchestrator.ProtoReflect.Descriptor instead. +func (*SlurmOrchestrator) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{34} +} + +func (x *SlurmOrchestrator) GetLoginNodes() *SlurmLoginNodes { + if x != nil { + return x.LoginNodes + } + return nil +} + +func (x *SlurmOrchestrator) GetNodeSets() []*SlurmNodeSet { + if x != nil { + return x.NodeSets + } + return nil +} + +func (x *SlurmOrchestrator) GetPartitions() []*SlurmPartition { + if x != nil { + return x.Partitions + } + return nil +} + +func (x *SlurmOrchestrator) GetDefaultPartition() string { + if x != nil { + return x.DefaultPartition + } + return "" +} + +func (x *SlurmOrchestrator) GetPrologBashScripts() []string { + if x != nil { + return x.PrologBashScripts + } + return nil +} + +func (x *SlurmOrchestrator) GetEpilogBashScripts() []string { + if x != nil { + return x.EpilogBashScripts + } + return nil +} + +// Configuration for Slurm nodesets in the cluster. Nodesets are groups of +// compute nodes used by Slurm that are responsible for running workloads +// submitted to the cluster. +type SlurmNodeSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Additional configuration for the nodeset. If not set, the nodeset will + // use + // [ComputeInstanceSlurmNodeSet][google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet] + // with default values. + // + // Types that are assignable to Type: + // + // *SlurmNodeSet_ComputeInstance + Type isSlurmNodeSet_Type `protobuf_oneof:"type"` + // Required. Identifier for the nodeset, which allows it to be referenced by + // partitions. Must conform to + // [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) (lower-case, + // alphanumeric, and at most 63 characters). + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Optional. ID of the compute resource on which this nodeset will run. Must + // match a key in the cluster's + // [compute_resources](Cluster.compute_resources). + ComputeId string `protobuf:"bytes,16,opt,name=compute_id,json=computeId,proto3" json:"compute_id,omitempty"` + // Optional. How [storage + // resources][google.cloud.hypercomputecluster.v1beta.StorageResource] should + // be mounted on each compute node. + StorageConfigs []*StorageConfig `protobuf:"bytes,3,rep,name=storage_configs,json=storageConfigs,proto3" json:"storage_configs,omitempty"` + // Optional. Number of nodes to be statically created for this nodeset. The + // cluster will attempt to ensure that at least this many nodes exist at all + // times. + StaticNodeCount int64 `protobuf:"varint,4,opt,name=static_node_count,json=staticNodeCount,proto3" json:"static_node_count,omitempty"` + // Optional. Controls how many additional nodes a cluster can bring online to + // handle workloads. Set this value to enable dynamic node creation and limit + // the number of additional nodes the cluster can bring online. Leave empty if + // you do not want the cluster to create nodes dynamically, and instead rely + // only on static nodes. + MaxDynamicNodeCount int64 `protobuf:"varint,5,opt,name=max_dynamic_node_count,json=maxDynamicNodeCount,proto3" json:"max_dynamic_node_count,omitempty"` +} + +func (x *SlurmNodeSet) Reset() { + *x = SlurmNodeSet{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SlurmNodeSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlurmNodeSet) ProtoMessage() {} + +func (x *SlurmNodeSet) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[35] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlurmNodeSet.ProtoReflect.Descriptor instead. +func (*SlurmNodeSet) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{35} +} + +func (m *SlurmNodeSet) GetType() isSlurmNodeSet_Type { + if m != nil { + return m.Type + } + return nil +} + +func (x *SlurmNodeSet) GetComputeInstance() *ComputeInstanceSlurmNodeSet { + if x, ok := x.GetType().(*SlurmNodeSet_ComputeInstance); ok { + return x.ComputeInstance + } + return nil +} + +func (x *SlurmNodeSet) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SlurmNodeSet) GetComputeId() string { + if x != nil { + return x.ComputeId + } + return "" +} + +func (x *SlurmNodeSet) GetStorageConfigs() []*StorageConfig { + if x != nil { + return x.StorageConfigs + } + return nil +} + +func (x *SlurmNodeSet) GetStaticNodeCount() int64 { + if x != nil { + return x.StaticNodeCount + } + return 0 +} + +func (x *SlurmNodeSet) GetMaxDynamicNodeCount() int64 { + if x != nil { + return x.MaxDynamicNodeCount + } + return 0 +} + +type isSlurmNodeSet_Type interface { + isSlurmNodeSet_Type() +} + +type SlurmNodeSet_ComputeInstance struct { + // Optional. If set, indicates that the nodeset should be backed by Compute + // Engine instances. + ComputeInstance *ComputeInstanceSlurmNodeSet `protobuf:"bytes,17,opt,name=compute_instance,json=computeInstance,proto3,oneof"` +} + +func (*SlurmNodeSet_ComputeInstance) isSlurmNodeSet_Type() {} + +// When set in a +// [SlurmNodeSet][google.cloud.hypercomputecluster.v1beta.SlurmNodeSet], +// indicates that the nodeset should be backed by Compute Engine VM instances. +type ComputeInstanceSlurmNodeSet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. [Startup + // script](https://cloud.google.com/compute/docs/instances/startup-scripts/linux) + // to be run on each VM instance in the nodeset. Max 256KB. + StartupScript string `protobuf:"bytes,1,opt,name=startup_script,json=startupScript,proto3" json:"startup_script,omitempty"` + // Optional. + // [Labels](https://cloud.google.com/compute/docs/labeling-resources) that + // should be applied to each VM instance in the nodeset. + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. Boot disk for the compute instance + BootDisk *BootDisk `protobuf:"bytes,3,opt,name=boot_disk,json=bootDisk,proto3" json:"boot_disk,omitempty"` +} + +func (x *ComputeInstanceSlurmNodeSet) Reset() { + *x = ComputeInstanceSlurmNodeSet{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ComputeInstanceSlurmNodeSet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputeInstanceSlurmNodeSet) ProtoMessage() {} + +func (x *ComputeInstanceSlurmNodeSet) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[36] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputeInstanceSlurmNodeSet.ProtoReflect.Descriptor instead. +func (*ComputeInstanceSlurmNodeSet) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{36} +} + +func (x *ComputeInstanceSlurmNodeSet) GetStartupScript() string { + if x != nil { + return x.StartupScript + } + return "" +} + +func (x *ComputeInstanceSlurmNodeSet) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *ComputeInstanceSlurmNodeSet) GetBootDisk() *BootDisk { + if x != nil { + return x.BootDisk + } + return nil +} + +// Configuration for Slurm partitions in the cluster. Partitions are groups of +// nodesets, and are how clients specify where their workloads should be run. +type SlurmPartition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. ID of the partition, which is how users will identify it. Must + // conform to [RFC-1034](https://datatracker.ietf.org/doc/html/rfc1034) + // (lower-case, alphanumeric, and at most 63 characters). + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Required. IDs of the nodesets that make up this partition. Values must + // match + // [SlurmNodeSet.id][google.cloud.hypercomputecluster.v1beta.SlurmNodeSet.id]. + NodeSetIds []string `protobuf:"bytes,2,rep,name=node_set_ids,json=nodeSetIds,proto3" json:"node_set_ids,omitempty"` +} + +func (x *SlurmPartition) Reset() { + *x = SlurmPartition{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SlurmPartition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlurmPartition) ProtoMessage() {} + +func (x *SlurmPartition) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[37] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlurmPartition.ProtoReflect.Descriptor instead. +func (*SlurmPartition) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{37} +} + +func (x *SlurmPartition) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SlurmPartition) GetNodeSetIds() []string { + if x != nil { + return x.NodeSetIds + } + return nil +} + +// Configuration for Slurm [login +// nodes](https://slurm.schedmd.com/quickstart_admin.html#login) in the cluster. +// Login nodes are Compute Engine VM instances that allow users to access the +// cluster over SSH. +type SlurmLoginNodes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Number of login node instances to create. + Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` + // Required. Name of the zone in which login nodes should run, e.g., + // `us-central1-a`. Must be in the same region as the cluster, and must match + // the zone of any other resources specified in the cluster. + Zone string `protobuf:"bytes,2,opt,name=zone,proto3" json:"zone,omitempty"` + // Required. Name of the Compute Engine [machine + // type](https://cloud.google.com/compute/docs/machine-resource) to use for + // login nodes, e.g. `n2-standard-2`. + MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"` + // Optional. [Startup + // script](https://cloud.google.com/compute/docs/instances/startup-scripts/linux) + // to be run on each login node instance. Max 256KB. + StartupScript string `protobuf:"bytes,5,opt,name=startup_script,json=startupScript,proto3" json:"startup_script,omitempty"` + // Optional. Whether [OS Login](https://cloud.google.com/compute/docs/oslogin) + // should be enabled on login node instances. + EnableOsLogin bool `protobuf:"varint,6,opt,name=enable_os_login,json=enableOsLogin,proto3" json:"enable_os_login,omitempty"` + // Optional. Whether login node instances should be assigned [external IP + // addresses](https://cloud.google.com/compute/docs/ip-addresses#externaladdresses). + EnablePublicIps bool `protobuf:"varint,7,opt,name=enable_public_ips,json=enablePublicIps,proto3" json:"enable_public_ips,omitempty"` + // Optional. + // [Labels](https://cloud.google.com/compute/docs/labeling-resources) that + // should be applied to each login node instance. + Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Optional. How [storage + // resources][google.cloud.hypercomputecluster.v1beta.StorageResource] should + // be mounted on each login node. + StorageConfigs []*StorageConfig `protobuf:"bytes,12,rep,name=storage_configs,json=storageConfigs,proto3" json:"storage_configs,omitempty"` + // Output only. Information about the login node instances that were created + // in Compute Engine. + Instances []*ComputeInstance `protobuf:"bytes,10,rep,name=instances,proto3" json:"instances,omitempty"` + // Optional. Boot disk for the login node. + BootDisk *BootDisk `protobuf:"bytes,13,opt,name=boot_disk,json=bootDisk,proto3" json:"boot_disk,omitempty"` +} + +func (x *SlurmLoginNodes) Reset() { + *x = SlurmLoginNodes{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SlurmLoginNodes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlurmLoginNodes) ProtoMessage() {} + +func (x *SlurmLoginNodes) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlurmLoginNodes.ProtoReflect.Descriptor instead. +func (*SlurmLoginNodes) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{38} +} + +func (x *SlurmLoginNodes) GetCount() int64 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *SlurmLoginNodes) GetZone() string { + if x != nil { + return x.Zone + } + return "" +} + +func (x *SlurmLoginNodes) GetMachineType() string { + if x != nil { + return x.MachineType + } + return "" +} + +func (x *SlurmLoginNodes) GetStartupScript() string { + if x != nil { + return x.StartupScript + } + return "" +} + +func (x *SlurmLoginNodes) GetEnableOsLogin() bool { + if x != nil { + return x.EnableOsLogin + } + return false +} + +func (x *SlurmLoginNodes) GetEnablePublicIps() bool { + if x != nil { + return x.EnablePublicIps + } + return false +} + +func (x *SlurmLoginNodes) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *SlurmLoginNodes) GetStorageConfigs() []*StorageConfig { + if x != nil { + return x.StorageConfigs + } + return nil +} + +func (x *SlurmLoginNodes) GetInstances() []*ComputeInstance { + if x != nil { + return x.Instances + } + return nil +} + +func (x *SlurmLoginNodes) GetBootDisk() *BootDisk { + if x != nil { + return x.BootDisk + } + return nil +} + +// Description of how a [storage +// resource][google.cloud.hypercomputecluster.v1beta.StorageResource] should be +// mounted on a VM instance. +type StorageConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. ID of the storage resource to mount, which must match a key in + // the cluster's [storage_resources](Cluster.storage_resources). + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Required. A directory inside the VM instance's file system where the + // storage resource should be mounted (e.g., `/mnt/share`). + LocalMount string `protobuf:"bytes,2,opt,name=local_mount,json=localMount,proto3" json:"local_mount,omitempty"` +} + +func (x *StorageConfig) Reset() { + *x = StorageConfig{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StorageConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StorageConfig) ProtoMessage() {} + +func (x *StorageConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StorageConfig.ProtoReflect.Descriptor instead. +func (*StorageConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{39} +} + +func (x *StorageConfig) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *StorageConfig) GetLocalMount() string { + if x != nil { + return x.LocalMount + } + return "" +} + +// Details about a Compute Engine +// [instance](https://cloud.google.com/compute/docs/instances). +type ComputeInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Name of the VM instance, in the format + // `projects/{project}/zones/{zone}/instances/{instance}`. + Instance string `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` +} + +func (x *ComputeInstance) Reset() { + *x = ComputeInstance{} + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ComputeInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ComputeInstance) ProtoMessage() {} + +func (x *ComputeInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ComputeInstance.ProtoReflect.Descriptor instead. +func (*ComputeInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP(), []int{40} +} + +func (x *ComputeInstance) GetInstance() string { + if x != nil { + return x.Instance + } + return "" +} + +var File_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto protoreflect.FileDescriptor + +var file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDesc = []byte{ + 0x0a, 0x42, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 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, 0x1a, 0x17, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x40, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x68, 0x79, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd5, 0x0a, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x59, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, + 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, + 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x78, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x12, 0x78, 0x0a, 0x11, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x11, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x5e, 0x0a, 0x0c, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x1a, + 0x7d, 0x0a, 0x15, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 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, 0x4e, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7d, + 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 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, 0x4e, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7d, 0x0a, + 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 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, 0x4e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x7e, 0xea, 0x41, + 0x7b, 0x0a, 0x2a, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x7d, 0x2a, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x32, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0xe4, 0x01, 0x0a, + 0x13, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x12, 0x2a, 0x68, 0x79, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x08, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x52, 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, + 0x2a, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x83, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2c, 0x12, 0x2a, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x4f, 0x0a, 0x07, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x0a, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd5, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4f, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, + 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, + 0x8a, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, + 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, + 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, + 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x55, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x20, 0x0a, + 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, + 0x03, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0xfc, 0x01, 0x0a, 0x15, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, + 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, + 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x12, 0x73, 0x0a, 0x10, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, + 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x22, 0x81, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x77, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, + 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x28, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x15, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x43, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xe0, 0x41, + 0x05, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0x83, 0x03, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, + 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x52, 0x0a, 0x06, 0x6c, 0x75, 0x73, 0x74, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x12, 0x5e, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, + 0x02, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0b, 0x0a, 0x09, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x5c, 0x0a, 0x12, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x46, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x50, 0x0a, 0x0f, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x03, 0xfa, + 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x57, 0x0a, 0x0f, 0x4c, 0x75, 0x73, + 0x74, 0x72, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x06, + 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, + 0x03, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x75, 0x73, 0x74, + 0x72, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x6c, 0x75, 0x73, 0x74, + 0x72, 0x65, 0x22, 0xb2, 0x05, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 0x0d, + 0x6e, 0x65, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, + 0x77, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x79, 0x0a, 0x12, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, + 0x52, 0x11, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x12, 0x61, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x77, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x70, 0x0a, 0x0f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, + 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x61, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, + 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, + 0x52, 0x09, 0x6e, 0x65, 0x77, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x12, 0x70, 0x0a, 0x0f, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0e, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xab, 0x04, 0x0a, 0x12, 0x4e, 0x65, 0x77, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, + 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, + 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x04, 0x74, 0x69, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, + 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x54, 0x69, 0x65, 0x72, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, + 0x74, 0x69, 0x65, 0x72, 0x12, 0x6b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x4e, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x09, 0xe0, 0x41, + 0x01, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x49, 0x45, + 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x5a, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, + 0x47, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x06, 0x22, 0x3b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x4e, 0x46, 0x53, 0x56, 0x33, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x46, 0x53, + 0x56, 0x34, 0x31, 0x10, 0x02, 0x22, 0x5b, 0x0a, 0x0f, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x61, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x47, 0x62, 0x12, 0x22, + 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x22, 0x64, 0x0a, 0x17, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xa7, 0x04, 0x0a, 0x0f, 0x4e, 0x65, 0x77, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x09, + 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x73, 0x41, 0x75, 0x74, + 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, + 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x12, 0x74, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, + 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, + 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x86, 0x01, 0x0a, 0x16, 0x68, 0x69, + 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x73, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x52, 0x15, 0x68, 0x69, 0x65, + 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x22, 0x64, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4c, + 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x4e, 0x45, 0x41, 0x52, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, + 0x08, 0x43, 0x4f, 0x4c, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, + 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x04, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x81, 0x02, 0x0a, 0x12, 0x47, 0x63, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x8b, 0x01, 0x0a, 0x16, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x47, 0x63, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x14, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x3e, 0x0a, 0x14, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x26, + 0x0a, 0x22, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, + 0x47, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x22, 0x3f, 0x0a, 0x1e, 0x47, 0x63, 0x73, 0x48, 0x69, 0x65, + 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x58, 0x0a, 0x14, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x40, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x28, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x4e, 0x65, 0x77, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x06, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x6c, + 0x75, 0x73, 0x74, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, + 0x41, 0x05, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x26, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x0b, 0x63, 0x61, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x5f, 0x67, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x06, 0xe0, 0x41, + 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x47, 0x62, + 0x22, 0x5f, 0x0a, 0x14, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x75, 0x73, 0x74, + 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x06, 0x6c, 0x75, 0x73, 0x74, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, + 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x75, 0x73, 0x74, 0x72, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x6c, 0x75, 0x73, 0x74, 0x72, + 0x65, 0x22, 0x71, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0xb1, 0x04, 0x0a, 0x15, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x84, + 0x01, 0x0a, 0x17, 0x6e, 0x65, 0x77, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, + 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x4f, 0x6e, + 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, + 0x14, 0x6e, 0x65, 0x77, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x12, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x70, 0x6f, + 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x53, + 0x70, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x65, + 0x77, 0x53, 0x70, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x83, + 0x01, 0x0a, 0x16, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x14, + 0x6e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x18, 0x6e, 0x65, 0x77, 0x5f, 0x66, 0x6c, 0x65, + 0x78, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4e, 0x65, 0x77, 0x46, 0x6c, 0x65, 0x78, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xe0, + 0x41, 0x01, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x15, 0x6e, 0x65, 0x77, 0x46, 0x6c, 0x65, 0x78, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x08, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x63, 0x0a, 0x1a, 0x4e, 0x65, 0x77, 0x4f, + 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x7a, 0x6f, + 0x6e, 0x65, 0x12, 0x29, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, + 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5f, 0x0a, + 0x16, 0x4e, 0x65, 0x77, 0x53, 0x70, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x7a, + 0x6f, 0x6e, 0x65, 0x12, 0x29, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, + 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x79, + 0x0a, 0x1a, 0x4e, 0x65, 0x77, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x0b, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2d, 0xe0, 0x41, 0x01, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x1b, 0x4e, 0x65, + 0x77, 0x46, 0x6c, 0x65, 0x78, 0x53, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, + 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x29, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, + 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x44, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 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, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x08, 0x42, 0x6f, 0x6f, 0x74, 0x44, 0x69, + 0x73, 0x6b, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x06, 0x73, 0x69, 0x7a, + 0x65, 0x47, 0x62, 0x22, 0x71, 0x0a, 0x0c, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x57, 0x0a, 0x05, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x75, + 0x72, 0x6d, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x75, 0x72, 0x6d, 0x42, 0x08, 0x0a, 0x06, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc6, 0x03, 0x0a, 0x11, 0x53, 0x6c, 0x75, 0x72, 0x6d, + 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x0b, + 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x75, 0x72, + 0x6d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x09, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6e, 0x6f, 0x64, + 0x65, 0x53, 0x65, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x5f, + 0x62, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x42, + 0x61, 0x73, 0x68, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x13, 0x65, 0x70, + 0x69, 0x6c, 0x6f, 0x67, 0x5f, 0x62, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x65, 0x70, + 0x69, 0x6c, 0x6f, 0x67, 0x42, 0x61, 0x73, 0x68, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x22, + 0x98, 0x03, 0x0a, 0x0c, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, + 0x12, 0x76, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, + 0x64, 0x12, 0x64, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4e, + 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x6d, + 0x61, 0x78, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x1b, 0x43, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x6c, + 0x75, 0x72, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x6d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, + 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x08, 0x62, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x4c, 0x0a, 0x0e, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0c, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, + 0x49, 0x64, 0x73, 0x22, 0xad, 0x05, 0x0a, 0x0f, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, + 0x2b, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x73, 0x5f, 0x6c, 0x6f, 0x67, + 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x73, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2f, 0x0a, 0x11, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x73, 0x12, 0x61, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x6c, 0x75, 0x72, 0x6d, 0x4c, 0x6f, 0x67, + 0x69, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x64, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x5b, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x6b, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x42, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, + 0x62, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x1a, 0x39, 0x0a, 0x0b, 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, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x5d, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x32, 0xb8, + 0x09, 0x0a, 0x13, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0xce, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x22, 0x3f, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xeb, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7c, 0xca, 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0xed, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x7e, 0xca, 0x41, 0x1c, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2c, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, + 0x3a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x32, 0x38, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x2f, 0x7b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xdb, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, + 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, + 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x2a, + 0x30, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2f, 0x2a, + 0x7d, 0x1a, 0x56, 0xca, 0x41, 0x22, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xa8, 0x0b, 0xea, 0x41, 0x5e, 0x0a, + 0x26, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7a, 0x6f, 0x6e, 0x65, + 0x73, 0x2f, 0x7b, 0x7a, 0x6f, 0x6e, 0x65, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0xea, 0x41, 0x58, + 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x35, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x7a, 0x6f, 0x6e, + 0x65, 0x7d, 0x2f, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x69, + 0x73, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0xea, 0x41, 0x48, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x7d, 0xea, 0x41, 0x4e, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x7d, 0xea, 0x41, 0x60, 0x0a, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x7a, 0x6f, 0x6e, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0xea, 0x41, 0x8b, 0x01, 0x0a, 0x27, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x60, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7a, 0x6f, 0x6e, 0x65, 0x73, 0x2f, 0x7b, + 0x7a, 0x6f, 0x6e, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x7d, 0xea, 0x41, 0xbc, 0x01, 0x0a, 0x2a, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, + 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x8d, 0x01, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x7a, 0x6f, 0x6e, 0x65, + 0x73, 0x2f, 0x7b, 0x7a, 0x6f, 0x6e, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x7b, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x7d, 0xea, 0x41, 0x61, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x70, 0x75, + 0x74, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3c, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x73, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x7d, 0xea, 0x41, 0x60, 0x0a, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0xea, 0x41, 0x64, + 0x0a, 0x24, 0x6c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x75, 0x73, 0x74, 0x72, 0x65, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x7d, 0xea, 0x41, 0x44, 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x23, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x2f, 0x7b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x7d, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x42, 0x18, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x61, 0x70, + 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x68, 0x79, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x27, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x48, 0x79, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0xea, 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescOnce sync.Once + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescData = file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDesc +) + +func file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescGZIP() []byte { + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescOnce.Do(func() { + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescData) + }) + return file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDescData +} + +var file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_goTypes = []any{ + (NewFilestoreConfig_Tier)(0), // 0: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.Tier + (NewFilestoreConfig_Protocol)(0), // 1: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.Protocol + (NewBucketConfig_StorageClass)(0), // 2: google.cloud.hypercomputecluster.v1beta.NewBucketConfig.StorageClass + (GcsAutoclassConfig_TerminalStorageClass)(0), // 3: google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig.TerminalStorageClass + (*Cluster)(nil), // 4: google.cloud.hypercomputecluster.v1beta.Cluster + (*ListClustersRequest)(nil), // 5: google.cloud.hypercomputecluster.v1beta.ListClustersRequest + (*ListClustersResponse)(nil), // 6: google.cloud.hypercomputecluster.v1beta.ListClustersResponse + (*GetClusterRequest)(nil), // 7: google.cloud.hypercomputecluster.v1beta.GetClusterRequest + (*CreateClusterRequest)(nil), // 8: google.cloud.hypercomputecluster.v1beta.CreateClusterRequest + (*UpdateClusterRequest)(nil), // 9: google.cloud.hypercomputecluster.v1beta.UpdateClusterRequest + (*DeleteClusterRequest)(nil), // 10: google.cloud.hypercomputecluster.v1beta.DeleteClusterRequest + (*NetworkResource)(nil), // 11: google.cloud.hypercomputecluster.v1beta.NetworkResource + (*NetworkReference)(nil), // 12: google.cloud.hypercomputecluster.v1beta.NetworkReference + (*NetworkResourceConfig)(nil), // 13: google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig + (*NewNetworkConfig)(nil), // 14: google.cloud.hypercomputecluster.v1beta.NewNetworkConfig + (*ExistingNetworkConfig)(nil), // 15: google.cloud.hypercomputecluster.v1beta.ExistingNetworkConfig + (*StorageResource)(nil), // 16: google.cloud.hypercomputecluster.v1beta.StorageResource + (*FilestoreReference)(nil), // 17: google.cloud.hypercomputecluster.v1beta.FilestoreReference + (*BucketReference)(nil), // 18: google.cloud.hypercomputecluster.v1beta.BucketReference + (*LustreReference)(nil), // 19: google.cloud.hypercomputecluster.v1beta.LustreReference + (*StorageResourceConfig)(nil), // 20: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig + (*NewFilestoreConfig)(nil), // 21: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig + (*FileShareConfig)(nil), // 22: google.cloud.hypercomputecluster.v1beta.FileShareConfig + (*ExistingFilestoreConfig)(nil), // 23: google.cloud.hypercomputecluster.v1beta.ExistingFilestoreConfig + (*NewBucketConfig)(nil), // 24: google.cloud.hypercomputecluster.v1beta.NewBucketConfig + (*GcsAutoclassConfig)(nil), // 25: google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig + (*GcsHierarchicalNamespaceConfig)(nil), // 26: google.cloud.hypercomputecluster.v1beta.GcsHierarchicalNamespaceConfig + (*ExistingBucketConfig)(nil), // 27: google.cloud.hypercomputecluster.v1beta.ExistingBucketConfig + (*NewLustreConfig)(nil), // 28: google.cloud.hypercomputecluster.v1beta.NewLustreConfig + (*ExistingLustreConfig)(nil), // 29: google.cloud.hypercomputecluster.v1beta.ExistingLustreConfig + (*ComputeResource)(nil), // 30: google.cloud.hypercomputecluster.v1beta.ComputeResource + (*ComputeResourceConfig)(nil), // 31: google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig + (*NewOnDemandInstancesConfig)(nil), // 32: google.cloud.hypercomputecluster.v1beta.NewOnDemandInstancesConfig + (*NewSpotInstancesConfig)(nil), // 33: google.cloud.hypercomputecluster.v1beta.NewSpotInstancesConfig + (*NewReservedInstancesConfig)(nil), // 34: google.cloud.hypercomputecluster.v1beta.NewReservedInstancesConfig + (*NewFlexStartInstancesConfig)(nil), // 35: google.cloud.hypercomputecluster.v1beta.NewFlexStartInstancesConfig + (*BootDisk)(nil), // 36: google.cloud.hypercomputecluster.v1beta.BootDisk + (*Orchestrator)(nil), // 37: google.cloud.hypercomputecluster.v1beta.Orchestrator + (*SlurmOrchestrator)(nil), // 38: google.cloud.hypercomputecluster.v1beta.SlurmOrchestrator + (*SlurmNodeSet)(nil), // 39: google.cloud.hypercomputecluster.v1beta.SlurmNodeSet + (*ComputeInstanceSlurmNodeSet)(nil), // 40: google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet + (*SlurmPartition)(nil), // 41: google.cloud.hypercomputecluster.v1beta.SlurmPartition + (*SlurmLoginNodes)(nil), // 42: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes + (*StorageConfig)(nil), // 43: google.cloud.hypercomputecluster.v1beta.StorageConfig + (*ComputeInstance)(nil), // 44: google.cloud.hypercomputecluster.v1beta.ComputeInstance + nil, // 45: google.cloud.hypercomputecluster.v1beta.Cluster.LabelsEntry + nil, // 46: google.cloud.hypercomputecluster.v1beta.Cluster.NetworkResourcesEntry + nil, // 47: google.cloud.hypercomputecluster.v1beta.Cluster.StorageResourcesEntry + nil, // 48: google.cloud.hypercomputecluster.v1beta.Cluster.ComputeResourcesEntry + nil, // 49: google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet.LabelsEntry + nil, // 50: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.LabelsEntry + (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 52: google.protobuf.FieldMask + (*durationpb.Duration)(nil), // 53: google.protobuf.Duration + (*longrunningpb.Operation)(nil), // 54: google.longrunning.Operation +} +var file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_depIdxs = []int32{ + 45, // 0: google.cloud.hypercomputecluster.v1beta.Cluster.labels:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster.LabelsEntry + 51, // 1: google.cloud.hypercomputecluster.v1beta.Cluster.create_time:type_name -> google.protobuf.Timestamp + 51, // 2: google.cloud.hypercomputecluster.v1beta.Cluster.update_time:type_name -> google.protobuf.Timestamp + 46, // 3: google.cloud.hypercomputecluster.v1beta.Cluster.network_resources:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster.NetworkResourcesEntry + 47, // 4: google.cloud.hypercomputecluster.v1beta.Cluster.storage_resources:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster.StorageResourcesEntry + 48, // 5: google.cloud.hypercomputecluster.v1beta.Cluster.compute_resources:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster.ComputeResourcesEntry + 37, // 6: google.cloud.hypercomputecluster.v1beta.Cluster.orchestrator:type_name -> google.cloud.hypercomputecluster.v1beta.Orchestrator + 4, // 7: google.cloud.hypercomputecluster.v1beta.ListClustersResponse.clusters:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster + 4, // 8: google.cloud.hypercomputecluster.v1beta.CreateClusterRequest.cluster:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster + 4, // 9: google.cloud.hypercomputecluster.v1beta.UpdateClusterRequest.cluster:type_name -> google.cloud.hypercomputecluster.v1beta.Cluster + 52, // 10: google.cloud.hypercomputecluster.v1beta.UpdateClusterRequest.update_mask:type_name -> google.protobuf.FieldMask + 12, // 11: google.cloud.hypercomputecluster.v1beta.NetworkResource.network:type_name -> google.cloud.hypercomputecluster.v1beta.NetworkReference + 13, // 12: google.cloud.hypercomputecluster.v1beta.NetworkResource.config:type_name -> google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig + 14, // 13: google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig.new_network:type_name -> google.cloud.hypercomputecluster.v1beta.NewNetworkConfig + 15, // 14: google.cloud.hypercomputecluster.v1beta.NetworkResourceConfig.existing_network:type_name -> google.cloud.hypercomputecluster.v1beta.ExistingNetworkConfig + 17, // 15: google.cloud.hypercomputecluster.v1beta.StorageResource.filestore:type_name -> google.cloud.hypercomputecluster.v1beta.FilestoreReference + 18, // 16: google.cloud.hypercomputecluster.v1beta.StorageResource.bucket:type_name -> google.cloud.hypercomputecluster.v1beta.BucketReference + 19, // 17: google.cloud.hypercomputecluster.v1beta.StorageResource.lustre:type_name -> google.cloud.hypercomputecluster.v1beta.LustreReference + 20, // 18: google.cloud.hypercomputecluster.v1beta.StorageResource.config:type_name -> google.cloud.hypercomputecluster.v1beta.StorageResourceConfig + 21, // 19: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.new_filestore:type_name -> google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig + 23, // 20: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.existing_filestore:type_name -> google.cloud.hypercomputecluster.v1beta.ExistingFilestoreConfig + 24, // 21: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.new_bucket:type_name -> google.cloud.hypercomputecluster.v1beta.NewBucketConfig + 27, // 22: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.existing_bucket:type_name -> google.cloud.hypercomputecluster.v1beta.ExistingBucketConfig + 28, // 23: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.new_lustre:type_name -> google.cloud.hypercomputecluster.v1beta.NewLustreConfig + 29, // 24: google.cloud.hypercomputecluster.v1beta.StorageResourceConfig.existing_lustre:type_name -> google.cloud.hypercomputecluster.v1beta.ExistingLustreConfig + 22, // 25: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.file_shares:type_name -> google.cloud.hypercomputecluster.v1beta.FileShareConfig + 0, // 26: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.tier:type_name -> google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.Tier + 1, // 27: google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.protocol:type_name -> google.cloud.hypercomputecluster.v1beta.NewFilestoreConfig.Protocol + 25, // 28: google.cloud.hypercomputecluster.v1beta.NewBucketConfig.autoclass:type_name -> google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig + 2, // 29: google.cloud.hypercomputecluster.v1beta.NewBucketConfig.storage_class:type_name -> google.cloud.hypercomputecluster.v1beta.NewBucketConfig.StorageClass + 26, // 30: google.cloud.hypercomputecluster.v1beta.NewBucketConfig.hierarchical_namespace:type_name -> google.cloud.hypercomputecluster.v1beta.GcsHierarchicalNamespaceConfig + 3, // 31: google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig.terminal_storage_class:type_name -> google.cloud.hypercomputecluster.v1beta.GcsAutoclassConfig.TerminalStorageClass + 31, // 32: google.cloud.hypercomputecluster.v1beta.ComputeResource.config:type_name -> google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig + 32, // 33: google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig.new_on_demand_instances:type_name -> google.cloud.hypercomputecluster.v1beta.NewOnDemandInstancesConfig + 33, // 34: google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig.new_spot_instances:type_name -> google.cloud.hypercomputecluster.v1beta.NewSpotInstancesConfig + 34, // 35: google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig.new_reserved_instances:type_name -> google.cloud.hypercomputecluster.v1beta.NewReservedInstancesConfig + 35, // 36: google.cloud.hypercomputecluster.v1beta.ComputeResourceConfig.new_flex_start_instances:type_name -> google.cloud.hypercomputecluster.v1beta.NewFlexStartInstancesConfig + 53, // 37: google.cloud.hypercomputecluster.v1beta.NewFlexStartInstancesConfig.max_duration:type_name -> google.protobuf.Duration + 38, // 38: google.cloud.hypercomputecluster.v1beta.Orchestrator.slurm:type_name -> google.cloud.hypercomputecluster.v1beta.SlurmOrchestrator + 42, // 39: google.cloud.hypercomputecluster.v1beta.SlurmOrchestrator.login_nodes:type_name -> google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes + 39, // 40: google.cloud.hypercomputecluster.v1beta.SlurmOrchestrator.node_sets:type_name -> google.cloud.hypercomputecluster.v1beta.SlurmNodeSet + 41, // 41: google.cloud.hypercomputecluster.v1beta.SlurmOrchestrator.partitions:type_name -> google.cloud.hypercomputecluster.v1beta.SlurmPartition + 40, // 42: google.cloud.hypercomputecluster.v1beta.SlurmNodeSet.compute_instance:type_name -> google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet + 43, // 43: google.cloud.hypercomputecluster.v1beta.SlurmNodeSet.storage_configs:type_name -> google.cloud.hypercomputecluster.v1beta.StorageConfig + 49, // 44: google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet.labels:type_name -> google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet.LabelsEntry + 36, // 45: google.cloud.hypercomputecluster.v1beta.ComputeInstanceSlurmNodeSet.boot_disk:type_name -> google.cloud.hypercomputecluster.v1beta.BootDisk + 50, // 46: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.labels:type_name -> google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.LabelsEntry + 43, // 47: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.storage_configs:type_name -> google.cloud.hypercomputecluster.v1beta.StorageConfig + 44, // 48: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.instances:type_name -> google.cloud.hypercomputecluster.v1beta.ComputeInstance + 36, // 49: google.cloud.hypercomputecluster.v1beta.SlurmLoginNodes.boot_disk:type_name -> google.cloud.hypercomputecluster.v1beta.BootDisk + 11, // 50: google.cloud.hypercomputecluster.v1beta.Cluster.NetworkResourcesEntry.value:type_name -> google.cloud.hypercomputecluster.v1beta.NetworkResource + 16, // 51: google.cloud.hypercomputecluster.v1beta.Cluster.StorageResourcesEntry.value:type_name -> google.cloud.hypercomputecluster.v1beta.StorageResource + 30, // 52: google.cloud.hypercomputecluster.v1beta.Cluster.ComputeResourcesEntry.value:type_name -> google.cloud.hypercomputecluster.v1beta.ComputeResource + 5, // 53: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.ListClusters:input_type -> google.cloud.hypercomputecluster.v1beta.ListClustersRequest + 7, // 54: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.GetCluster:input_type -> google.cloud.hypercomputecluster.v1beta.GetClusterRequest + 8, // 55: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.CreateCluster:input_type -> google.cloud.hypercomputecluster.v1beta.CreateClusterRequest + 9, // 56: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.UpdateCluster:input_type -> google.cloud.hypercomputecluster.v1beta.UpdateClusterRequest + 10, // 57: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.DeleteCluster:input_type -> google.cloud.hypercomputecluster.v1beta.DeleteClusterRequest + 6, // 58: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.ListClusters:output_type -> google.cloud.hypercomputecluster.v1beta.ListClustersResponse + 4, // 59: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.GetCluster:output_type -> google.cloud.hypercomputecluster.v1beta.Cluster + 54, // 60: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.CreateCluster:output_type -> google.longrunning.Operation + 54, // 61: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.UpdateCluster:output_type -> google.longrunning.Operation + 54, // 62: google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.DeleteCluster:output_type -> google.longrunning.Operation + 58, // [58:63] is the sub-list for method output_type + 53, // [53:58] is the sub-list for method input_type + 53, // [53:53] is the sub-list for extension type_name + 53, // [53:53] is the sub-list for extension extendee + 0, // [0:53] is the sub-list for field type_name +} + +func init() { file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_init() } +func file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_init() { + if File_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto != nil { + return + } + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_init() + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[7].OneofWrappers = []any{ + (*NetworkResource_Network)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[9].OneofWrappers = []any{ + (*NetworkResourceConfig_NewNetwork)(nil), + (*NetworkResourceConfig_ExistingNetwork)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[12].OneofWrappers = []any{ + (*StorageResource_Filestore)(nil), + (*StorageResource_Bucket)(nil), + (*StorageResource_Lustre)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[16].OneofWrappers = []any{ + (*StorageResourceConfig_NewFilestore)(nil), + (*StorageResourceConfig_ExistingFilestore)(nil), + (*StorageResourceConfig_NewBucket)(nil), + (*StorageResourceConfig_ExistingBucket)(nil), + (*StorageResourceConfig_NewLustre)(nil), + (*StorageResourceConfig_ExistingLustre)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[20].OneofWrappers = []any{ + (*NewBucketConfig_Autoclass)(nil), + (*NewBucketConfig_StorageClass_)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[27].OneofWrappers = []any{ + (*ComputeResourceConfig_NewOnDemandInstances)(nil), + (*ComputeResourceConfig_NewSpotInstances)(nil), + (*ComputeResourceConfig_NewReservedInstances)(nil), + (*ComputeResourceConfig_NewFlexStartInstances)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[30].OneofWrappers = []any{ + (*NewReservedInstancesConfig_Reservation)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[33].OneofWrappers = []any{ + (*Orchestrator_Slurm)(nil), + } + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes[35].OneofWrappers = []any{ + (*SlurmNodeSet_ComputeInstance)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDesc, + NumEnums: 4, + NumMessages: 47, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_goTypes, + DependencyIndexes: file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_depIdxs, + EnumInfos: file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_enumTypes, + MessageInfos: file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_msgTypes, + }.Build() + File_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto = out.File + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_rawDesc = nil + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_goTypes = nil + file_google_cloud_hypercomputecluster_v1beta_hypercompute_cluster_proto_depIdxs = nil +} diff --git a/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster_grpc.pb.go b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster_grpc.pb.go new file mode 100644 index 000000000000..8deca9878ae7 --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/hypercompute_cluster_grpc.pb.go @@ -0,0 +1,281 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/hypercomputecluster/v1beta/hypercompute_cluster.proto + +package hypercomputeclusterpb + +import ( + context "context" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + HypercomputeCluster_ListClusters_FullMethodName = "/google.cloud.hypercomputecluster.v1beta.HypercomputeCluster/ListClusters" + HypercomputeCluster_GetCluster_FullMethodName = "/google.cloud.hypercomputecluster.v1beta.HypercomputeCluster/GetCluster" + HypercomputeCluster_CreateCluster_FullMethodName = "/google.cloud.hypercomputecluster.v1beta.HypercomputeCluster/CreateCluster" + HypercomputeCluster_UpdateCluster_FullMethodName = "/google.cloud.hypercomputecluster.v1beta.HypercomputeCluster/UpdateCluster" + HypercomputeCluster_DeleteCluster_FullMethodName = "/google.cloud.hypercomputecluster.v1beta.HypercomputeCluster/DeleteCluster" +) + +// HypercomputeClusterClient is the client API for HypercomputeCluster service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type HypercomputeClusterClient interface { + // Lists Clusters in a given project and location. + ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) + // Gets details of a single Cluster. + GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) + // Creates a new Cluster in a given project and location. + CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Updates the parameters of a single Cluster. + UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Deletes a single Cluster. + DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) +} + +type hypercomputeClusterClient struct { + cc grpc.ClientConnInterface +} + +func NewHypercomputeClusterClient(cc grpc.ClientConnInterface) HypercomputeClusterClient { + return &hypercomputeClusterClient{cc} +} + +func (c *hypercomputeClusterClient) ListClusters(ctx context.Context, in *ListClustersRequest, opts ...grpc.CallOption) (*ListClustersResponse, error) { + out := new(ListClustersResponse) + err := c.cc.Invoke(ctx, HypercomputeCluster_ListClusters_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hypercomputeClusterClient) GetCluster(ctx context.Context, in *GetClusterRequest, opts ...grpc.CallOption) (*Cluster, error) { + out := new(Cluster) + err := c.cc.Invoke(ctx, HypercomputeCluster_GetCluster_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hypercomputeClusterClient) CreateCluster(ctx context.Context, in *CreateClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, HypercomputeCluster_CreateCluster_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hypercomputeClusterClient) UpdateCluster(ctx context.Context, in *UpdateClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, HypercomputeCluster_UpdateCluster_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *hypercomputeClusterClient) DeleteCluster(ctx context.Context, in *DeleteClusterRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, HypercomputeCluster_DeleteCluster_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// HypercomputeClusterServer is the server API for HypercomputeCluster service. +// All implementations should embed UnimplementedHypercomputeClusterServer +// for forward compatibility +type HypercomputeClusterServer interface { + // Lists Clusters in a given project and location. + ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) + // Gets details of a single Cluster. + GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) + // Creates a new Cluster in a given project and location. + CreateCluster(context.Context, *CreateClusterRequest) (*longrunningpb.Operation, error) + // Updates the parameters of a single Cluster. + UpdateCluster(context.Context, *UpdateClusterRequest) (*longrunningpb.Operation, error) + // Deletes a single Cluster. + DeleteCluster(context.Context, *DeleteClusterRequest) (*longrunningpb.Operation, error) +} + +// UnimplementedHypercomputeClusterServer should be embedded to have forward compatible implementations. +type UnimplementedHypercomputeClusterServer struct { +} + +func (UnimplementedHypercomputeClusterServer) ListClusters(context.Context, *ListClustersRequest) (*ListClustersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListClusters not implemented") +} +func (UnimplementedHypercomputeClusterServer) GetCluster(context.Context, *GetClusterRequest) (*Cluster, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCluster not implemented") +} +func (UnimplementedHypercomputeClusterServer) CreateCluster(context.Context, *CreateClusterRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateCluster not implemented") +} +func (UnimplementedHypercomputeClusterServer) UpdateCluster(context.Context, *UpdateClusterRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCluster not implemented") +} +func (UnimplementedHypercomputeClusterServer) DeleteCluster(context.Context, *DeleteClusterRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteCluster not implemented") +} + +// UnsafeHypercomputeClusterServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to HypercomputeClusterServer will +// result in compilation errors. +type UnsafeHypercomputeClusterServer interface { + mustEmbedUnimplementedHypercomputeClusterServer() +} + +func RegisterHypercomputeClusterServer(s grpc.ServiceRegistrar, srv HypercomputeClusterServer) { + s.RegisterService(&HypercomputeCluster_ServiceDesc, srv) +} + +func _HypercomputeCluster_ListClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListClustersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HypercomputeClusterServer).ListClusters(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HypercomputeCluster_ListClusters_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HypercomputeClusterServer).ListClusters(ctx, req.(*ListClustersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HypercomputeCluster_GetCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetClusterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HypercomputeClusterServer).GetCluster(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HypercomputeCluster_GetCluster_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HypercomputeClusterServer).GetCluster(ctx, req.(*GetClusterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HypercomputeCluster_CreateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateClusterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HypercomputeClusterServer).CreateCluster(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HypercomputeCluster_CreateCluster_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HypercomputeClusterServer).CreateCluster(ctx, req.(*CreateClusterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HypercomputeCluster_UpdateCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateClusterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HypercomputeClusterServer).UpdateCluster(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HypercomputeCluster_UpdateCluster_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HypercomputeClusterServer).UpdateCluster(ctx, req.(*UpdateClusterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _HypercomputeCluster_DeleteCluster_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteClusterRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(HypercomputeClusterServer).DeleteCluster(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: HypercomputeCluster_DeleteCluster_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(HypercomputeClusterServer).DeleteCluster(ctx, req.(*DeleteClusterRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// HypercomputeCluster_ServiceDesc is the grpc.ServiceDesc for HypercomputeCluster service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var HypercomputeCluster_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster", + HandlerType: (*HypercomputeClusterServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListClusters", + Handler: _HypercomputeCluster_ListClusters_Handler, + }, + { + MethodName: "GetCluster", + Handler: _HypercomputeCluster_GetCluster_Handler, + }, + { + MethodName: "CreateCluster", + Handler: _HypercomputeCluster_CreateCluster_Handler, + }, + { + MethodName: "UpdateCluster", + Handler: _HypercomputeCluster_UpdateCluster_Handler, + }, + { + MethodName: "DeleteCluster", + Handler: _HypercomputeCluster_DeleteCluster_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/hypercomputecluster/v1beta/hypercompute_cluster.proto", +} diff --git a/hypercomputecluster/apiv1beta/hypercomputeclusterpb/operation_metadata.pb.go b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/operation_metadata.pb.go new file mode 100644 index 000000000000..9cba7d365f78 --- /dev/null +++ b/hypercomputecluster/apiv1beta/hypercomputeclusterpb/operation_metadata.pb.go @@ -0,0 +1,243 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/hypercomputecluster/v1beta/operation_metadata.proto + +package hypercomputeclusterpb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +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) +) + +// Represents the metadata of the long-running operation. +type OperationMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. Server-defined resource path for the target of the operation. + Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + // Output only. Name of the verb executed by the operation. + Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"` + // Output only. Identifies whether the user has requested cancellation + // of the operation. Operations that have been cancelled successfully + // have + // [google.longrunning.Operation.error][google.longrunning.Operation.error] + // value with a [google.rpc.Status.code][google.rpc.Status.code] of `1`, + // corresponding to `Code.CANCELLED`. + RequestedCancellation bool `protobuf:"varint,5,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"` + // Output only. API version used to start the operation. + ApiVersion string `protobuf:"bytes,6,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` +} + +func (x *OperationMetadata) Reset() { + *x = OperationMetadata{} + mi := &file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OperationMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OperationMetadata) ProtoMessage() {} + +func (x *OperationMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead. +func (*OperationMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescGZIP(), []int{0} +} + +func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *OperationMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *OperationMetadata) GetTarget() string { + if x != nil { + return x.Target + } + return "" +} + +func (x *OperationMetadata) GetVerb() string { + if x != nil { + return x.Verb + } + return "" +} + +func (x *OperationMetadata) GetRequestedCancellation() bool { + if x != nil { + return x.RequestedCancellation + } + return false +} + +func (x *OperationMetadata) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +var File_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto protoreflect.FileDescriptor + +var file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDesc = []byte{ + 0x0a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x68, + 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, + 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, + 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, + 0x72, 0x62, 0x12, 0x3a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, + 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0xa7, 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x42, 0x16, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5d, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x2f, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x68, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x27, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x48, 0x79, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, + 0x75, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0xea, 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x3a, 0x3a, 0x48, 0x79, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescOnce sync.Once + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescData = file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDesc +) + +func file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescGZIP() []byte { + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescOnce.Do(func() { + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescData) + }) + return file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDescData +} + +var file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_goTypes = []any{ + (*OperationMetadata)(nil), // 0: google.cloud.hypercomputecluster.v1beta.OperationMetadata + (*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp +} +var file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_depIdxs = []int32{ + 1, // 0: google.cloud.hypercomputecluster.v1beta.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 1, // 1: google.cloud.hypercomputecluster.v1beta.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_init() } +func file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_init() { + if File_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_goTypes, + DependencyIndexes: file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_depIdxs, + MessageInfos: file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_msgTypes, + }.Build() + File_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto = out.File + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_rawDesc = nil + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_goTypes = nil + file_google_cloud_hypercomputecluster_v1beta_operation_metadata_proto_depIdxs = nil +} diff --git a/hypercomputecluster/apiv1beta/version.go b/hypercomputecluster/apiv1beta/version.go new file mode 100644 index 000000000000..4657fb34c832 --- /dev/null +++ b/hypercomputecluster/apiv1beta/version.go @@ -0,0 +1,23 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by gapicgen. DO NOT EDIT. + +package hypercomputecluster + +import "cloud.google.com/go/hypercomputecluster/internal" + +func init() { + versionClient = internal.Version +} diff --git a/hypercomputecluster/go.mod b/hypercomputecluster/go.mod new file mode 100644 index 000000000000..36af7361fb06 --- /dev/null +++ b/hypercomputecluster/go.mod @@ -0,0 +1,39 @@ +module cloud.google.com/go/hypercomputecluster + +go 1.24.0 + +require ( + cloud.google.com/go/longrunning v0.7.0 + github.com/googleapis/gax-go/v2 v2.15.0 + google.golang.org/api v0.256.0 + google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846 + google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 + google.golang.org/grpc v1.77.0 + google.golang.org/protobuf v1.36.10 +) + +require ( + cloud.google.com/go v0.121.6 // indirect + cloud.google.com/go/auth v0.17.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82 // indirect + golang.org/x/oauth2 v0.33.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/text v0.30.0 // indirect + golang.org/x/time v0.14.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba // indirect +) diff --git a/hypercomputecluster/go.sum b/hypercomputecluster/go.sum new file mode 100644 index 000000000000..96c226221395 --- /dev/null +++ b/hypercomputecluster/go.sum @@ -0,0 +1,90 @@ +cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c= +cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI= +cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= +cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +cloud.google.com/go/longrunning v0.7.0 h1:FV0+SYF1RIj59gyoWDRi45GiYUMM3K1qO51qoboQT1E= +cloud.google.com/go/longrunning v0.7.0/go.mod h1:ySn2yXmjbK9Ba0zsQqunhDkYi0+9rlXIwnoAf+h+TPY= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= +github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82 h1:6/3JGEh1C88g7m+qzzTbl3A0FtsLguXieqofVLU/JAo= +golang.org/x/net v0.46.1-0.20251013234738-63d1a5100f82/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/oauth2 v0.33.0 h1:4Q+qn+E5z8gPRJfmRy7C2gGG3T4jIprK6aSYgTXGRpo= +golang.org/x/oauth2 v0.33.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/api v0.256.0 h1:u6Khm8+F9sxbCTYNoBHg6/Hwv0N/i+V94MvkOSor6oI= +google.golang.org/api v0.256.0/go.mod h1:KIgPhksXADEKJlnEoRa9qAII4rXcy40vfI8HRqcU964= +google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846 h1:dDbsTLIK7EzwUq36kCSAsk0slouq/S0tWHeeGi97cD8= +google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846/go.mod h1:PP0g88Dz3C7hRAfbQCQggeWAXjuqGsNPLE4s7jh0RGU= +google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846 h1:ZdyUkS9po3H7G0tuh955QVyyotWvOD4W0aEapeGeUYk= +google.golang.org/genproto/googleapis/api v0.0.0-20251124214823-79d6a2a48846/go.mod h1:Fk4kyraUvqD7i5H6S43sj2W98fbZa75lpZz/eUyhfO0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba h1:UKgtfRM7Yh93Sya0Fo8ZzhDP4qBckrrxEr2oF5UIVb8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251111163417-95abcf5c77ba/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= +google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/hypercomputecluster/internal/version.go b/hypercomputecluster/internal/version.go new file mode 100644 index 000000000000..04ec61c29392 --- /dev/null +++ b/hypercomputecluster/internal/version.go @@ -0,0 +1,20 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by gapicgen. DO NOT EDIT. + +package internal + +// Version is the current tagged release of the library. +const Version = "0.0.0" diff --git a/internal/generated/snippets/go.mod b/internal/generated/snippets/go.mod index 7736b98b9724..8e566bf0a950 100644 --- a/internal/generated/snippets/go.mod +++ b/internal/generated/snippets/go.mod @@ -576,3 +576,5 @@ replace cloud.google.com/go/gkerecommender => ../../../gkerecommender replace cloud.google.com/go/saasplatform => ../../../saasplatform replace cloud.google.com/go/vectorsearch => ../../../vectorsearch + +replace cloud.google.com/go/hypercomputecluster => ../../../hypercomputecluster diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CancelOperation/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CancelOperation/main.go new file mode 100644 index 000000000000..44511e6a41d2 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_CancelOperation_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_CancelOperation_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CreateCluster/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CreateCluster/main.go new file mode 100644 index 000000000000..0272b7a693d2 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/CreateCluster/main.go @@ -0,0 +1,58 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_CreateCluster_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.CreateClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#CreateClusterRequest. + } + op, err := c.CreateCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_CreateCluster_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteCluster/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteCluster/main.go new file mode 100644 index 000000000000..65e9eed41785 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteCluster/main.go @@ -0,0 +1,56 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteCluster_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.DeleteClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#DeleteClusterRequest. + } + op, err := c.DeleteCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteCluster_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteOperation/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteOperation/main.go new file mode 100644 index 000000000000..5b13daa46643 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteOperation_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteOperation_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetCluster/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetCluster/main.go new file mode 100644 index 000000000000..adce4bbcef5e --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetCluster/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_GetCluster_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.GetClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#GetClusterRequest. + } + resp, err := c.GetCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_GetCluster_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetLocation/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetLocation/main.go new file mode 100644 index 000000000000..157f87008678 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_GetLocation_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_GetLocation_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetOperation/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetOperation/main.go new file mode 100644 index 000000000000..823dc264206a --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_GetOperation_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_GetOperation_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListClusters/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListClusters/main.go new file mode 100644 index 000000000000..1122a0575200 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListClusters/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_ListClusters_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.ListClustersRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#ListClustersRequest. + } + it := c.ListClusters(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*hypercomputeclusterpb.ListClustersResponse) + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_ListClusters_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListLocations/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListLocations/main.go new file mode 100644 index 000000000000..56945298f991 --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_ListLocations_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_ListLocations_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListOperations/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListOperations/main.go new file mode 100644 index 000000000000..6054e60b06ed --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_ListOperations_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_ListOperations_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/UpdateCluster/main.go b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/UpdateCluster/main.go new file mode 100644 index 000000000000..0693e600344d --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/Client/UpdateCluster/main.go @@ -0,0 +1,58 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START hypercomputecluster_v1beta_generated_HypercomputeCluster_UpdateCluster_sync] + +package main + +import ( + "context" + + hypercomputecluster "cloud.google.com/go/hypercomputecluster/apiv1beta" + hypercomputeclusterpb "cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := hypercomputecluster.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &hypercomputeclusterpb.UpdateClusterRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/hypercomputecluster/apiv1beta/hypercomputeclusterpb#UpdateClusterRequest. + } + op, err := c.UpdateCluster(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END hypercomputecluster_v1beta_generated_HypercomputeCluster_UpdateCluster_sync] diff --git a/internal/generated/snippets/hypercomputecluster/apiv1beta/snippet_metadata.google.cloud.hypercomputecluster.v1beta.json b/internal/generated/snippets/hypercomputecluster/apiv1beta/snippet_metadata.google.cloud.hypercomputecluster.v1beta.json new file mode 100644 index 000000000000..f0c1cf1e1c1a --- /dev/null +++ b/internal/generated/snippets/hypercomputecluster/apiv1beta/snippet_metadata.google.cloud.hypercomputecluster.v1beta.json @@ -0,0 +1,519 @@ +{ + "clientLibrary": { + "name": "cloud.google.com/go/hypercomputecluster/apiv1beta", + "version": "0.0.0", + "language": "GO", + "apis": [ + { + "id": "google.cloud.hypercomputecluster.v1beta", + "version": "v1beta" + } + ] + }, + "snippets": [ + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_CancelOperation_sync", + "title": "hypercomputecluster CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "Client/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_CreateCluster_sync", + "title": "hypercomputecluster CreateCluster Sample", + "description": "CreateCluster creates a new Cluster in a given project and location.", + "file": "Client/CreateCluster/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.CreateCluster", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "hypercomputeclusterpb.CreateClusterRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CreateClusterOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "CreateCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.CreateCluster", + "service": { + "shortName": "HypercomputeCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteCluster_sync", + "title": "hypercomputecluster DeleteCluster Sample", + "description": "DeleteCluster deletes a single Cluster.", + "file": "Client/DeleteCluster/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.DeleteCluster", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "hypercomputeclusterpb.DeleteClusterRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "DeleteClusterOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "DeleteCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.DeleteCluster", + "service": { + "shortName": "HypercomputeCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 56, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_DeleteOperation_sync", + "title": "hypercomputecluster DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "Client/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_GetCluster_sync", + "title": "hypercomputecluster GetCluster Sample", + "description": "GetCluster gets details of a single Cluster.", + "file": "Client/GetCluster/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.GetCluster", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "hypercomputeclusterpb.GetClusterRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*hypercomputeclusterpb.Cluster", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "GetCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.GetCluster", + "service": { + "shortName": "HypercomputeCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_GetLocation_sync", + "title": "hypercomputecluster GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "Client/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_GetOperation_sync", + "title": "hypercomputecluster GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "Client/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_ListClusters_sync", + "title": "hypercomputecluster ListClusters Sample", + "description": "ListClusters lists Clusters in a given project and location.", + "file": "Client/ListClusters/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListClusters", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.ListClusters", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "hypercomputeclusterpb.ListClustersRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ClusterIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "ListClusters", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.ListClusters", + "service": { + "shortName": "HypercomputeCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_ListLocations_sync", + "title": "hypercomputecluster ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "Client/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_ListOperations_sync", + "title": "hypercomputecluster ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "Client/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "hypercomputecluster_v1beta_generated_HypercomputeCluster_UpdateCluster_sync", + "title": "hypercomputecluster UpdateCluster Sample", + "description": "UpdateCluster updates the parameters of a single Cluster.", + "file": "Client/UpdateCluster/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client.UpdateCluster", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "hypercomputeclusterpb.UpdateClusterRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "UpdateClusterOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.hypercomputecluster.v1beta.Client" + }, + "method": { + "shortName": "UpdateCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster.UpdateCluster", + "service": { + "shortName": "HypercomputeCluster", + "fullName": "google.cloud.hypercomputecluster.v1beta.HypercomputeCluster" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + } + ] +} \ No newline at end of file