google-cloud-service_management-v1 0.1.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +8 -8
  3. data/LICENSE.md +188 -190
  4. data/README.md +67 -3
  5. data/lib/google/api/servicemanagement/v1/servicemanager_services_pb.rb +1 -1
  6. data/lib/google/cloud/service_management/v1/service_manager.rb +1 -1
  7. data/lib/google/cloud/service_management/v1/service_manager/client.rb +40 -34
  8. data/lib/google/cloud/service_management/v1/service_manager/operations.rb +95 -10
  9. data/lib/google/cloud/service_management/v1/version.rb +1 -1
  10. data/proto_docs/google/api/auth.rb +69 -14
  11. data/proto_docs/google/api/backend.rb +118 -2
  12. data/proto_docs/google/api/billing.rb +18 -7
  13. data/proto_docs/google/api/config_change.rb +1 -1
  14. data/proto_docs/google/api/context.rb +27 -0
  15. data/proto_docs/google/api/documentation.rb +13 -7
  16. data/proto_docs/google/api/endpoint.rb +10 -10
  17. data/proto_docs/google/api/field_behavior.rb +12 -0
  18. data/proto_docs/google/api/launch_stage.rb +71 -0
  19. data/proto_docs/google/api/metric.rb +109 -36
  20. data/proto_docs/google/api/monitored_resource.rb +7 -6
  21. data/proto_docs/google/api/monitoring.rb +39 -20
  22. data/proto_docs/google/api/quota.rb +10 -84
  23. data/proto_docs/google/api/service.rb +16 -14
  24. data/proto_docs/google/api/servicemanagement/v1/resources.rb +1 -1
  25. data/proto_docs/google/api/servicemanagement/v1/servicemanager.rb +11 -11
  26. data/proto_docs/google/api/usage.rb +6 -0
  27. data/proto_docs/google/longrunning/operations.rb +17 -3
  28. data/proto_docs/google/protobuf/any.rb +5 -2
  29. data/proto_docs/google/protobuf/api.rb +1 -1
  30. data/proto_docs/google/protobuf/duration.rb +98 -0
  31. data/proto_docs/google/protobuf/timestamp.rb +10 -1
  32. metadata +21 -10
@@ -39,17 +39,133 @@ module Google
39
39
  # @!attribute [rw] address
40
40
  # @return [::String]
41
41
  # The address of the API backend.
42
+ #
43
+ # The scheme is used to determine the backend protocol and security.
44
+ # The following schemes are accepted:
45
+ #
46
+ # SCHEME PROTOCOL SECURITY
47
+ # http:// HTTP None
48
+ # https:// HTTP TLS
49
+ # grpc:// gRPC None
50
+ # grpcs:// gRPC TLS
51
+ #
52
+ # It is recommended to explicitly include a scheme. Leaving out the scheme
53
+ # may cause constrasting behaviors across platforms.
54
+ #
55
+ # If the port is unspecified, the default is:
56
+ # - 80 for schemes without TLS
57
+ # - 443 for schemes with TLS
58
+ #
59
+ # For HTTP backends, use {::Google::Api::BackendRule#protocol protocol}
60
+ # to specify the protocol version.
42
61
  # @!attribute [rw] deadline
43
62
  # @return [::Float]
44
- # The number of seconds to wait for a response from a request. The default
45
- # deadline for gRPC is infinite (no deadline) and HTTP requests is 5 seconds.
63
+ # The number of seconds to wait for a response from a request. The default
64
+ # varies based on the request protocol and deployment environment.
46
65
  # @!attribute [rw] min_deadline
47
66
  # @return [::Float]
48
67
  # Minimum deadline in seconds needed for this method. Calls having deadline
49
68
  # value lower than this will be rejected.
69
+ # @!attribute [rw] operation_deadline
70
+ # @return [::Float]
71
+ # The number of seconds to wait for the completion of a long running
72
+ # operation. The default is no deadline.
73
+ # @!attribute [rw] path_translation
74
+ # @return [::Google::Api::BackendRule::PathTranslation]
75
+ # @!attribute [rw] jwt_audience
76
+ # @return [::String]
77
+ # The JWT audience is used when generating a JWT ID token for the backend.
78
+ # This ID token will be added in the HTTP "authorization" header, and sent
79
+ # to the backend.
80
+ # @!attribute [rw] disable_auth
81
+ # @return [::Boolean]
82
+ # When disable_auth is true, a JWT ID token won't be generated and the
83
+ # original "Authorization" HTTP header will be preserved. If the header is
84
+ # used to carry the original token and is expected by the backend, this
85
+ # field must be set to true to preserve the header.
86
+ # @!attribute [rw] protocol
87
+ # @return [::String]
88
+ # The protocol used for sending a request to the backend.
89
+ # The supported values are "http/1.1" and "h2".
90
+ #
91
+ # The default value is inferred from the scheme in the
92
+ # {::Google::Api::BackendRule#address address} field:
93
+ #
94
+ # SCHEME PROTOCOL
95
+ # http:// http/1.1
96
+ # https:// http/1.1
97
+ # grpc:// h2
98
+ # grpcs:// h2
99
+ #
100
+ # For secure HTTP backends (https://) that support HTTP/2, set this field
101
+ # to "h2" for improved performance.
102
+ #
103
+ # Configuring this field to non-default values is only supported for secure
104
+ # HTTP backends. This field will be ignored for all other backends.
105
+ #
106
+ # See
107
+ # https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
108
+ # for more details on the supported values.
50
109
  class BackendRule
51
110
  include ::Google::Protobuf::MessageExts
52
111
  extend ::Google::Protobuf::MessageExts::ClassMethods
112
+
113
+ # Path Translation specifies how to combine the backend address with the
114
+ # request path in order to produce the appropriate forwarding URL for the
115
+ # request.
116
+ #
117
+ # Path Translation is applicable only to HTTP-based backends. Backends which
118
+ # do not accept requests over HTTP/HTTPS should leave `path_translation`
119
+ # unspecified.
120
+ module PathTranslation
121
+ PATH_TRANSLATION_UNSPECIFIED = 0
122
+
123
+ # Use the backend address as-is, with no modification to the path. If the
124
+ # URL pattern contains variables, the variable names and values will be
125
+ # appended to the query string. If a query string parameter and a URL
126
+ # pattern variable have the same name, this may result in duplicate keys in
127
+ # the query string.
128
+ #
129
+ # # Examples
130
+ #
131
+ # Given the following operation config:
132
+ #
133
+ # Method path: /api/company/{cid}/user/{uid}
134
+ # Backend address: https://example.cloudfunctions.net/getUser
135
+ #
136
+ # Requests to the following request paths will call the backend at the
137
+ # translated path:
138
+ #
139
+ # Request path: /api/company/widgetworks/user/johndoe
140
+ # Translated:
141
+ # https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
142
+ #
143
+ # Request path: /api/company/widgetworks/user/johndoe?timezone=EST
144
+ # Translated:
145
+ # https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
146
+ CONSTANT_ADDRESS = 1
147
+
148
+ # The request path will be appended to the backend address.
149
+ #
150
+ # # Examples
151
+ #
152
+ # Given the following operation config:
153
+ #
154
+ # Method path: /api/company/{cid}/user/{uid}
155
+ # Backend address: https://example.appspot.com
156
+ #
157
+ # Requests to the following request paths will call the backend at the
158
+ # translated path:
159
+ #
160
+ # Request path: /api/company/widgetworks/user/johndoe
161
+ # Translated:
162
+ # https://example.appspot.com/api/company/widgetworks/user/johndoe
163
+ #
164
+ # Request path: /api/company/widgetworks/user/johndoe?timezone=EST
165
+ # Translated:
166
+ # https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
167
+ APPEND_PATH_TO_ADDRESS = 2
168
+ end
53
169
  end
54
170
  end
55
171
  end
@@ -22,22 +22,33 @@ module Google
22
22
  # Billing related configuration of the service.
23
23
  #
24
24
  # The following example shows how to configure monitored resources and metrics
25
- # for billing:
25
+ # for billing, `consumer_destinations` is the only supported destination and
26
+ # the monitored resources need at least one label key
27
+ # `cloud.googleapis.com/location` to indicate the location of the billing
28
+ # usage, using different monitored resources between monitoring and billing is
29
+ # recommended so they can be evolved independently:
30
+ #
26
31
  #
27
32
  # monitored_resources:
28
- # - type: library.googleapis.com/branch
33
+ # - type: library.googleapis.com/billing_branch
29
34
  # labels:
30
- # - key: /city
31
- # description: The city where the library branch is located in.
32
- # - key: /name
33
- # description: The name of the branch.
35
+ # - key: cloud.googleapis.com/location
36
+ # description: |
37
+ # Predefined label to support billing location restriction.
38
+ # - key: city
39
+ # description: |
40
+ # Custom label to define the city where the library branch is located
41
+ # in.
42
+ # - key: name
43
+ # description: Custom label to define the name of the library branch.
34
44
  # metrics:
35
45
  # - name: library.googleapis.com/book/borrowed_count
36
46
  # metric_kind: DELTA
37
47
  # value_type: INT64
48
+ # unit: "1"
38
49
  # billing:
39
50
  # consumer_destinations:
40
- # - monitored_resource: library.googleapis.com/branch
51
+ # - monitored_resource: library.googleapis.com/billing_branch
41
52
  # metrics:
42
53
  # - library.googleapis.com/book/borrowed_count
43
54
  # @!attribute [rw] consumer_destinations
@@ -33,7 +33,7 @@ module Google
33
33
  # 'key' is used. If the field has no unique identifier, the numeric index
34
34
  # is used.
35
35
  # Examples:
36
- # - visibility.rules[selector=="google.LibraryService.CreateBook"].restriction
36
+ # - visibility.rules[selector=="google.LibraryService.ListBooks"].restriction
37
37
  # - quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value
38
38
  # - logging.producer_destinations[0]
39
39
  # @!attribute [rw] old_value
@@ -36,6 +36,25 @@ module Google
36
36
  #
37
37
  # Available context types are defined in package
38
38
  # `google.rpc.context`.
39
+ #
40
+ # This also provides mechanism to allowlist any protobuf message extension that
41
+ # can be sent in grpc metadata using “x-goog-ext-<extension_id>-bin” and
42
+ # “x-goog-ext-<extension_id>-jspb” format. For example, list any service
43
+ # specific protobuf types that can appear in grpc metadata as follows in your
44
+ # yaml file:
45
+ #
46
+ # Example:
47
+ #
48
+ # context:
49
+ # rules:
50
+ # - selector: "google.example.library.v1.LibraryService.CreateBook"
51
+ # allowed_request_extensions:
52
+ # - google.foo.v1.NewExtension
53
+ # allowed_response_extensions:
54
+ # - google.foo.v1.NewExtension
55
+ #
56
+ # You can also specify extension ID instead of fully qualified extension name
57
+ # here.
39
58
  # @!attribute [rw] rules
40
59
  # @return [::Array<::Google::Api::ContextRule>]
41
60
  # A list of RPC context rules that apply to individual API methods.
@@ -59,6 +78,14 @@ module Google
59
78
  # @!attribute [rw] provided
60
79
  # @return [::Array<::String>]
61
80
  # A list of full type names of provided contexts.
81
+ # @!attribute [rw] allowed_request_extensions
82
+ # @return [::Array<::String>]
83
+ # A list of full type names or extension IDs of extensions allowed in grpc
84
+ # side channel from client to backend.
85
+ # @!attribute [rw] allowed_response_extensions
86
+ # @return [::Array<::String>]
87
+ # A list of full type names or extension IDs of extensions allowed in grpc
88
+ # side channel from backend to client.
62
89
  class ContextRule
63
90
  include ::Google::Protobuf::MessageExts
64
91
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -89,6 +89,12 @@ module Google
89
89
  # @!attribute [rw] documentation_root_url
90
90
  # @return [::String]
91
91
  # The URL to the root of documentation.
92
+ # @!attribute [rw] service_root_url
93
+ # @return [::String]
94
+ # Specifies the service root url if the default one (the service name
95
+ # from the yaml file) is not suitable. This can be seen in any fully
96
+ # specified service urls as well as sections that show a base that other
97
+ # urls are relative to.
92
98
  # @!attribute [rw] overview
93
99
  # @return [::String]
94
100
  # Declares a single overview page. For example:
@@ -115,16 +121,16 @@ module Google
115
121
  # The selector is a comma-separated list of patterns. Each pattern is a
116
122
  # qualified name of the element which may end in "*", indicating a wildcard.
117
123
  # Wildcards are only allowed at the end and for a whole component of the
118
- # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To
119
- # specify a default for all applicable elements, the whole pattern "*"
120
- # is used.
124
+ # qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A
125
+ # wildcard will match one or more components. To specify a default for all
126
+ # applicable elements, the whole pattern "*" is used.
121
127
  # @!attribute [rw] description
122
128
  # @return [::String]
123
129
  # Description of the selected API(s).
124
130
  # @!attribute [rw] deprecation_description
125
131
  # @return [::String]
126
- # Deprecation description of the selected element(s). It can be provided if an
127
- # element is marked as `deprecated`.
132
+ # Deprecation description of the selected element(s). It can be provided if
133
+ # an element is marked as `deprecated`.
128
134
  class DocumentationRule
129
135
  include ::Google::Protobuf::MessageExts
130
136
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -150,8 +156,8 @@ module Google
150
156
  # `[Java][Tutorial.Java]`.
151
157
  # @!attribute [rw] content
152
158
  # @return [::String]
153
- # The Markdown content of the page. You can use <code>&#40;== include \\{path} ==&#41;</code>
154
- # to include content from a Markdown file.
159
+ # The Markdown content of the page. You can use <code>&#40;== include \\{path}
160
+ # ==&#41;</code> to include content from a Markdown file.
155
161
  # @!attribute [rw] subpages
156
162
  # @return [::Array<::Google::Api::Page>]
157
163
  # Subpages of this page. The order of subpages specified here will be
@@ -19,10 +19,10 @@
19
19
 
20
20
  module Google
21
21
  module Api
22
- # `Endpoint` describes a network endpoint that serves a set of APIs.
23
- # A service may expose any number of endpoints, and all endpoints share the
24
- # same service configuration, such as quota configuration and monitoring
25
- # configuration.
22
+ # `Endpoint` describes a network endpoint of a service that serves a set of
23
+ # APIs. It is commonly known as a service endpoint. A service may expose
24
+ # any number of service endpoints, and all service endpoints share the same
25
+ # service definition, such as quota limits and monitoring metrics.
26
26
  #
27
27
  # Example service configuration:
28
28
  #
@@ -40,20 +40,20 @@ module Google
40
40
  # The canonical name of this endpoint.
41
41
  # @!attribute [rw] aliases
42
42
  # @return [::Array<::String>]
43
+ # Unimplemented. Dot not use.
44
+ #
43
45
  # DEPRECATED: This field is no longer supported. Instead of using aliases,
44
46
  # please specify multiple {::Google::Api::Endpoint google.api.Endpoint} for each of the intended
45
47
  # aliases.
46
48
  #
47
49
  # Additional names that this endpoint will be hosted on.
48
- # @!attribute [rw] features
49
- # @return [::Array<::String>]
50
- # The list of features enabled on this endpoint.
51
50
  # @!attribute [rw] target
52
51
  # @return [::String]
53
52
  # The specification of an Internet routable address of API frontend that will
54
- # handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
55
- # It should be either a valid IPv4 address or a fully-qualified domain name.
56
- # For example, "8.8.8.8" or "myservice.appspot.com".
53
+ # handle requests to this [API
54
+ # Endpoint](https://cloud.google.com/apis/design/glossary). It should be
55
+ # either a valid IPv4 address or a fully-qualified domain name. For example,
56
+ # "8.8.8.8" or "myservice.appspot.com".
57
57
  # @!attribute [rw] allow_cors
58
58
  # @return [::Boolean]
59
59
  # Allowing
@@ -54,6 +54,18 @@ module Google
54
54
  # This indicates that the field may be set once in a request to create a
55
55
  # resource, but may not be changed thereafter.
56
56
  IMMUTABLE = 5
57
+
58
+ # Denotes that a (repeated) field is an unordered list.
59
+ # This indicates that the service may provide the elements of the list
60
+ # in any arbitrary order, rather than the order the user originally
61
+ # provided. Additionally, the list's order may or may not be stable.
62
+ UNORDERED_LIST = 6
63
+
64
+ # Denotes that this field returns a non-empty default value if not set.
65
+ # This indicates that if the user provides the empty value in a request,
66
+ # a non-empty value will be returned. The user will not be aware of what
67
+ # non-empty value to expect.
68
+ NON_EMPTY_DEFAULT = 7
57
69
  end
58
70
  end
59
71
  end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2021 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # The launch stage as defined by [Google Cloud Platform
23
+ # Launch Stages](http://cloud.google.com/terms/launch-stages).
24
+ module LaunchStage
25
+ # Do not use this default value.
26
+ LAUNCH_STAGE_UNSPECIFIED = 0
27
+
28
+ # The feature is not yet implemented. Users can not use it.
29
+ UNIMPLEMENTED = 6
30
+
31
+ # Prelaunch features are hidden from users and are only visible internally.
32
+ PRELAUNCH = 7
33
+
34
+ # Early Access features are limited to a closed group of testers. To use
35
+ # these features, you must sign up in advance and sign a Trusted Tester
36
+ # agreement (which includes confidentiality provisions). These features may
37
+ # be unstable, changed in backward-incompatible ways, and are not
38
+ # guaranteed to be released.
39
+ EARLY_ACCESS = 1
40
+
41
+ # Alpha is a limited availability test for releases before they are cleared
42
+ # for widespread use. By Alpha, all significant design issues are resolved
43
+ # and we are in the process of verifying functionality. Alpha customers
44
+ # need to apply for access, agree to applicable terms, and have their
45
+ # projects allowlisted. Alpha releases don’t have to be feature complete,
46
+ # no SLAs are provided, and there are no technical support obligations, but
47
+ # they will be far enough along that customers can actually use them in
48
+ # test environments or for limited-use tests -- just like they would in
49
+ # normal production cases.
50
+ ALPHA = 2
51
+
52
+ # Beta is the point at which we are ready to open a release for any
53
+ # customer to use. There are no SLA or technical support obligations in a
54
+ # Beta release. Products will be complete from a feature perspective, but
55
+ # may have some open outstanding issues. Beta releases are suitable for
56
+ # limited production use cases.
57
+ BETA = 3
58
+
59
+ # GA features are open to all developers and are considered stable and
60
+ # fully qualified for production use.
61
+ GA = 4
62
+
63
+ # Deprecated features are scheduled to be shut down and removed. For more
64
+ # information, see the “Deprecation Policy” section of our [Terms of
65
+ # Service](https://cloud.google.com/terms/)
66
+ # and the [Google Cloud Platform Subject to the Deprecation
67
+ # Policy](https://cloud.google.com/terms/deprecation) documentation.
68
+ DEPRECATED = 5
69
+ end
70
+ end
71
+ end
@@ -28,11 +28,12 @@ module Google
28
28
  # @!attribute [rw] type
29
29
  # @return [::String]
30
30
  # The metric type, including its DNS name prefix. The type is not
31
- # URL-encoded. All user-defined custom metric types have the DNS name
32
- # `custom.googleapis.com`. Metric types should use a natural hierarchical
33
- # grouping. For example:
31
+ # URL-encoded. All user-defined metric types have the DNS name
32
+ # `custom.googleapis.com` or `external.googleapis.com`. Metric types should
33
+ # use a natural hierarchical grouping. For example:
34
34
  #
35
35
  # "custom.googleapis.com/invoice/paid/amount"
36
+ # "external.googleapis.com/prometheus/up"
36
37
  # "appengine.googleapis.com/http/server/response_latencies"
37
38
  # @!attribute [rw] labels
38
39
  # @return [::Array<::Google::Api::LabelDescriptor>]
@@ -52,10 +53,28 @@ module Google
52
53
  # Some combinations of `metric_kind` and `value_type` might not be supported.
53
54
  # @!attribute [rw] unit
54
55
  # @return [::String]
55
- # The unit in which the metric value is reported. It is only applicable
56
- # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
57
- # supported units are a subset of [The Unified Code for Units of
58
- # Measure](http://unitsofmeasure.org/ucum.html) standard:
56
+ # The units in which the metric value is reported. It is only applicable
57
+ # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
58
+ # defines the representation of the stored metric values.
59
+ #
60
+ # Different systems might scale the values to be more easily displayed (so a
61
+ # value of `0.02kBy` _might_ be displayed as `20By`, and a value of
62
+ # `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is
63
+ # `kBy`, then the value of the metric is always in thousands of bytes, no
64
+ # matter how it might be displayed.
65
+ #
66
+ # If you want a custom metric to record the exact number of CPU-seconds used
67
+ # by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is
68
+ # `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005
69
+ # CPU-seconds, then the value is written as `12005`.
70
+ #
71
+ # Alternatively, if you want a custom metric to record data in a more
72
+ # granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is
73
+ # `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`),
74
+ # or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
75
+ #
76
+ # The supported units are a subset of [The Unified Code for Units of
77
+ # Measure](https://unitsofmeasure.org/ucum.html) standard:
59
78
  #
60
79
  # **Basic units (UNIT)**
61
80
  #
@@ -65,36 +84,44 @@ module Google
65
84
  # * `min` minute
66
85
  # * `h` hour
67
86
  # * `d` day
87
+ # * `1` dimensionless
68
88
  #
69
89
  # **Prefixes (PREFIX)**
70
90
  #
71
- # * `k` kilo (10**3)
72
- # * `M` mega (10**6)
73
- # * `G` giga (10**9)
74
- # * `T` tera (10**12)
75
- # * `P` peta (10**15)
76
- # * `E` exa (10**18)
77
- # * `Z` zetta (10**21)
78
- # * `Y` yotta (10**24)
79
- # * `m` milli (10**-3)
80
- # * `u` micro (10**-6)
81
- # * `n` nano (10**-9)
82
- # * `p` pico (10**-12)
83
- # * `f` femto (10**-15)
84
- # * `a` atto (10**-18)
85
- # * `z` zepto (10**-21)
86
- # * `y` yocto (10**-24)
87
- # * `Ki` kibi (2**10)
88
- # * `Mi` mebi (2**20)
89
- # * `Gi` gibi (2**30)
90
- # * `Ti` tebi (2**40)
91
+ # * `k` kilo (10^3)
92
+ # * `M` mega (10^6)
93
+ # * `G` giga (10^9)
94
+ # * `T` tera (10^12)
95
+ # * `P` peta (10^15)
96
+ # * `E` exa (10^18)
97
+ # * `Z` zetta (10^21)
98
+ # * `Y` yotta (10^24)
99
+ #
100
+ # * `m` milli (10^-3)
101
+ # * `u` micro (10^-6)
102
+ # * `n` nano (10^-9)
103
+ # * `p` pico (10^-12)
104
+ # * `f` femto (10^-15)
105
+ # * `a` atto (10^-18)
106
+ # * `z` zepto (10^-21)
107
+ # * `y` yocto (10^-24)
108
+ #
109
+ # * `Ki` kibi (2^10)
110
+ # * `Mi` mebi (2^20)
111
+ # * `Gi` gibi (2^30)
112
+ # * `Ti` tebi (2^40)
113
+ # * `Pi` pebi (2^50)
91
114
  #
92
115
  # **Grammar**
93
116
  #
94
117
  # The grammar also includes these connectors:
95
118
  #
96
- # * `/` division (as an infix operator, e.g. `1/s`).
97
- # * `.` multiplication (as an infix operator, e.g. `GBy.d`)
119
+ # * `/` division or ratio (as an infix operator). For examples,
120
+ # `kBy/{email}` or `MiBy/10ms` (although you should almost never
121
+ # have `/s` in a metric `unit`; rates should always be computed at
122
+ # query time from the underlying cumulative or delta value).
123
+ # * `.` multiplication or composition (as an infix operator). For
124
+ # examples, `GBy.d` or `k{watt}.h`.
98
125
  #
99
126
  # The grammar for a unit is as follows:
100
127
  #
@@ -109,14 +136,25 @@ module Google
109
136
  #
110
137
  # Notes:
111
138
  #
112
- # * `Annotation` is just a comment if it follows a `UNIT` and is
113
- # equivalent to `1` if it is used alone. For examples,
114
- # `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
139
+ # * `Annotation` is just a comment if it follows a `UNIT`. If the annotation
140
+ # is used alone, then the unit is equivalent to `1`. For examples,
141
+ # `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
115
142
  # * `NAME` is a sequence of non-blank printable ASCII characters not
116
- # containing '\\{' or '}'.
117
- # * `1` represents dimensionless value 1, such as in `1/s`.
118
- # * `%` represents dimensionless value 1/100, and annotates values giving
119
- # a percentage.
143
+ # containing `{` or `}`.
144
+ # * `1` represents a unitary [dimensionless
145
+ # unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such
146
+ # as in `1/s`. It is typically used when none of the basic units are
147
+ # appropriate. For example, "new users per day" can be represented as
148
+ # `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
149
+ # users). Alternatively, "thousands of page views per day" would be
150
+ # represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
151
+ # value of `5.3` would mean "5300 page views per day").
152
+ # * `%` represents dimensionless value of 1/100, and annotates values giving
153
+ # a percentage (so the metric values are typically in the range of 0..100,
154
+ # and a metric value `3` means "3 percent").
155
+ # * `10^2.%` indicates a metric contains a ratio, typically in the range
156
+ # 0..1, that will be multiplied by 100 and displayed as a percentage
157
+ # (so a metric value `0.03` means "3 percent").
120
158
  # @!attribute [rw] description
121
159
  # @return [::String]
122
160
  # A detailed description of the metric, which can be used in documentation.
@@ -126,11 +164,46 @@ module Google
126
164
  # Use sentence case without an ending period, for example "Request count".
127
165
  # This field is optional but it is recommended to be set for any metrics
128
166
  # associated with user-visible concepts, such as Quota.
167
+ # @!attribute [rw] metadata
168
+ # @return [::Google::Api::MetricDescriptor::MetricDescriptorMetadata]
169
+ # Optional. Metadata which can be used to guide usage of the metric.
170
+ # @!attribute [rw] launch_stage
171
+ # @return [::Google::Api::LaunchStage]
172
+ # Optional. The launch stage of the metric definition.
173
+ # @!attribute [rw] monitored_resource_types
174
+ # @return [::Array<::String>]
175
+ # Read-only. If present, then a [time
176
+ # series][google.monitoring.v3.TimeSeries], which is identified partially by
177
+ # a metric type and a {::Google::Api::MonitoredResourceDescriptor MonitoredResourceDescriptor}, that is associated
178
+ # with this metric type can only be associated with one of the monitored
179
+ # resource types listed here.
129
180
  class MetricDescriptor
130
181
  include ::Google::Protobuf::MessageExts
131
182
  extend ::Google::Protobuf::MessageExts::ClassMethods
132
183
 
184
+ # Additional annotations that can be used to guide the usage of a metric.
185
+ # @!attribute [rw] launch_stage
186
+ # @return [::Google::Api::LaunchStage]
187
+ # Deprecated. Must use the {::Google::Api::MetricDescriptor#launch_stage MetricDescriptor.launch_stage} instead.
188
+ # @!attribute [rw] sample_period
189
+ # @return [::Google::Protobuf::Duration]
190
+ # The sampling period of metric data points. For metrics which are written
191
+ # periodically, consecutive data points are stored at this time interval,
192
+ # excluding data loss due to errors. Metrics with a higher granularity have
193
+ # a smaller sampling period.
194
+ # @!attribute [rw] ingest_delay
195
+ # @return [::Google::Protobuf::Duration]
196
+ # The delay of data points caused by ingestion. Data points older than this
197
+ # age are guaranteed to be ingested and available to be read, excluding
198
+ # data loss due to errors.
199
+ class MetricDescriptorMetadata
200
+ include ::Google::Protobuf::MessageExts
201
+ extend ::Google::Protobuf::MessageExts::ClassMethods
202
+ end
203
+
133
204
  # The kind of measurement. It describes how the data is reported.
205
+ # For information on setting the start time and end time based on
206
+ # the MetricKind, see [TimeInterval][google.monitoring.v3.TimeInterval].
134
207
  module MetricKind
135
208
  # Do not use this default value.
136
209
  METRIC_KIND_UNSPECIFIED = 0