1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 cnrm.cloud.google.com/version: 0.0.0-dev
6 creationTimestamp: null
7 labels:
8 cnrm.cloud.google.com/dcl2crd: "true"
9 cnrm.cloud.google.com/managed-by-kcc: "true"
10 cnrm.cloud.google.com/stability-level: stable
11 cnrm.cloud.google.com/system: "true"
12 name: billingbudgetsbudgets.billingbudgets.cnrm.cloud.google.com
13spec:
14 group: billingbudgets.cnrm.cloud.google.com
15 names:
16 categories:
17 - gcp
18 kind: BillingBudgetsBudget
19 plural: billingbudgetsbudgets
20 shortNames:
21 - gcpbillingbudgetsbudget
22 - gcpbillingbudgetsbudgets
23 singular: billingbudgetsbudget
24 preserveUnknownFields: false
25 scope: Namespaced
26 versions:
27 - additionalPrinterColumns:
28 - jsonPath: .metadata.creationTimestamp
29 name: Age
30 type: date
31 - description: When 'True', the most recent reconcile of the resource succeeded
32 jsonPath: .status.conditions[?(@.type=='Ready')].status
33 name: Ready
34 type: string
35 - description: The reason for the value in 'Ready'
36 jsonPath: .status.conditions[?(@.type=='Ready')].reason
37 name: Status
38 type: string
39 - description: The last transition time for the value in 'Status'
40 jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
41 name: Status Age
42 type: date
43 name: v1beta1
44 schema:
45 openAPIV3Schema:
46 properties:
47 apiVersion:
48 description: 'apiVersion defines the versioned schema of this representation
49 of an object. Servers should convert recognized schemas to the latest
50 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
51 type: string
52 kind:
53 description: 'kind is a string value representing the REST resource this
54 object represents. Servers may infer this from the endpoint the client
55 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
56 type: string
57 metadata:
58 type: object
59 spec:
60 properties:
61 allUpdatesRule:
62 description: Optional. Rules to apply to notifications sent based
63 on budget spend and thresholds.
64 properties:
65 disableDefaultIamRecipients:
66 description: Optional. When set to true, disables default notifications
67 sent when a threshold is exceeded. Default notifications are
68 sent to those with Billing Account Administrator and Billing
69 Account User IAM roles for the target account.
70 type: boolean
71 monitoringNotificationChannels:
72 items:
73 oneOf:
74 - not:
75 required:
76 - external
77 required:
78 - name
79 - not:
80 anyOf:
81 - required:
82 - name
83 - required:
84 - namespace
85 required:
86 - external
87 properties:
88 external:
89 description: 'Allowed value: The Google Cloud resource name
90 of a `MonitoringNotificationChannel` resource (format:
91 `projects/{{project}}/notificationChannels/{{name}}`).'
92 type: string
93 name:
94 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
95 type: string
96 namespace:
97 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
98 type: string
99 type: object
100 type: array
101 pubsubTopicRef:
102 oneOf:
103 - not:
104 required:
105 - external
106 required:
107 - name
108 - not:
109 anyOf:
110 - required:
111 - name
112 - required:
113 - namespace
114 required:
115 - external
116 properties:
117 external:
118 description: |-
119 Optional. The name of the Pub/Sub topic where budget related messages will be published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent at regular intervals to the topic. The topic needs to be created before the budget is created; see https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications for more details. Caller is expected to have `pubsub.topics.setIamPolicy` permission on the topic when it's set for a budget, otherwise, the API call will fail with PERMISSION_DENIED. See https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task for more details on Pub/Sub roles and permissions.
120
121 Allowed value: The Google Cloud resource name of a `PubSubTopic` resource (format: `projects/{{project}}/topics/{{name}}`).
122 type: string
123 name:
124 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
125 type: string
126 namespace:
127 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
128 type: string
129 type: object
130 schemaVersion:
131 description: Optional. Required when NotificationsRule.pubsub_topic
132 is set. The schema version of the notification sent to NotificationsRule.pubsub_topic.
133 Only "1.0" is accepted. It represents the JSON schema as defined
134 in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format.
135 type: string
136 type: object
137 amount:
138 description: Required. Budgeted amount.
139 properties:
140 lastPeriodAmount:
141 description: Use the last period's actual spend as the budget
142 for the present period. LastPeriodAmount can only be set when
143 the budget's time period is a .
144 type: object
145 x-kubernetes-preserve-unknown-fields: true
146 specifiedAmount:
147 description: A specified amount to use as the budget. `currency_code`
148 is optional. If specified when creating a budget, it must match
149 the currency of the billing account. If specified when updating
150 a budget, it must match the currency_code of the existing budget.
151 The `currency_code` is provided on output.
152 properties:
153 currencyCode:
154 description: Immutable. The three-letter currency code defined
155 in ISO 4217.
156 type: string
157 nanos:
158 description: Number of nano (10^-9) units of the amount. The
159 value must be between -999,999,999 and +999,999,999 inclusive.
160 If `units` is positive, `nanos` must be positive or zero.
161 If `units` is zero, `nanos` can be positive, zero, or negative.
162 If `units` is negative, `nanos` must be negative or zero.
163 For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
164 format: int64
165 type: integer
166 units:
167 description: The whole units of the amount. For example if
168 `currencyCode` is `"USD"`, then 1 unit is one US dollar.
169 format: int64
170 type: integer
171 type: object
172 type: object
173 billingAccountRef:
174 description: Immutable.
175 oneOf:
176 - not:
177 required:
178 - external
179 required:
180 - name
181 - not:
182 anyOf:
183 - required:
184 - name
185 - required:
186 - namespace
187 required:
188 - external
189 properties:
190 external:
191 description: |-
192 The billing account of the resource
193
194 Allowed value: The Google Cloud resource name of a Google Cloud Billing Account (format: `billingAccounts/{{name}}`).
195 type: string
196 name:
197 description: |-
198 [WARNING] BillingAccount not yet supported in Config Connector, use 'external' field to reference existing resources.
199 Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
200 type: string
201 namespace:
202 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
203 type: string
204 type: object
205 budgetFilter:
206 description: Optional. Filters that define which resources are used
207 to compute the actual spend against the budget amount, such as projects,
208 services, and the budget's time period, as well as other filters.
209 properties:
210 calendarPeriod:
211 description: 'Optional. Specifies to track usage for recurring
212 calendar period. For example, assume that CalendarPeriod.QUARTER
213 is set. The budget will track usage from April 1 to June 30,
214 when the current calendar month is April, May, June. After that,
215 it will track usage from July 1 to September 30 when the current
216 calendar month is July, August, September, so on. Possible values:
217 CALENDAR_PERIOD_UNSPECIFIED, MONTH, QUARTER, YEAR'
218 type: string
219 creditTypes:
220 description: Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS,
221 this is a list of credit types to be subtracted from gross cost
222 to determine the spend for threshold calculations. See a list
223 of acceptable credit type values. If Filter.credit_types_treatment
224 is not INCLUDE_SPECIFIED_CREDITS, this field must be empty.
225 items:
226 type: string
227 type: array
228 creditTypesTreatment:
229 description: Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.
230 type: string
231 customPeriod:
232 description: Optional. Specifies to track usage from any start
233 date (required) to any end date (optional). This time period
234 is static, it does not recur.
235 properties:
236 endDate:
237 description: Immutable. Optional. The end date of the time
238 period. Budgets with elapsed end date won't be processed.
239 If unset, specifies to track all usage incurred since the
240 start_date.
241 properties:
242 day:
243 description: Immutable. Day of a month. Must be from 1
244 to 31 and valid for the year and month, or 0 to specify
245 a year by itself or a year and month where the day isn't
246 significant.
247 format: int64
248 type: integer
249 month:
250 description: Immutable. Month of a year. Must be from
251 1 to 12, or 0 to specify a year without a month and
252 day.
253 format: int64
254 type: integer
255 year:
256 description: Immutable. Year of the date. Must be from
257 1 to 9999, or 0 to specify a date without a year.
258 format: int64
259 type: integer
260 type: object
261 startDate:
262 description: Immutable. Required. The start date must be after
263 January 1, 2017.
264 properties:
265 day:
266 description: Immutable. Day of a month. Must be from 1
267 to 31 and valid for the year and month, or 0 to specify
268 a year by itself or a year and month where the day isn't
269 significant.
270 format: int64
271 type: integer
272 month:
273 description: Immutable. Month of a year. Must be from
274 1 to 12, or 0 to specify a year without a month and
275 day.
276 format: int64
277 type: integer
278 year:
279 description: Immutable. Year of the date. Must be from
280 1 to 9999, or 0 to specify a date without a year.
281 format: int64
282 type: integer
283 type: object
284 required:
285 - startDate
286 type: object
287 labels:
288 additionalProperties:
289 properties:
290 values:
291 description: Immutable. The values of the label
292 items:
293 type: string
294 type: array
295 type: object
296 description: Optional. A single label and value pair specifying
297 that usage from only this set of labeled resources should be
298 included in the budget. Currently, multiple entries or multiple
299 values per entry are not allowed. If omitted, the report will
300 include all labeled and unlabeled usage.
301 type: object
302 projects:
303 items:
304 oneOf:
305 - not:
306 required:
307 - external
308 required:
309 - name
310 - not:
311 anyOf:
312 - required:
313 - name
314 - required:
315 - namespace
316 required:
317 - external
318 properties:
319 external:
320 description: 'Allowed value: The Google Cloud resource name
321 of a `Project` resource (format: `projects/{{name}}`).'
322 type: string
323 name:
324 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
325 type: string
326 namespace:
327 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
328 type: string
329 type: object
330 type: array
331 services:
332 description: 'Optional. A set of services of the form `services/{service_id}`,
333 specifying that usage from only this set of services should
334 be included in the budget. If omitted, the report will include
335 usage for all the services. The service names are available
336 through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api.'
337 items:
338 type: string
339 type: array
340 subaccounts:
341 items:
342 oneOf:
343 - not:
344 required:
345 - external
346 required:
347 - name
348 - not:
349 anyOf:
350 - required:
351 - name
352 - required:
353 - namespace
354 required:
355 - external
356 properties:
357 external:
358 type: string
359 name:
360 description: |-
361 [WARNING] CloudBillingBillingAccount not yet supported in Config Connector, use 'external' field to reference existing resources.
362 Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
363 type: string
364 namespace:
365 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
366 type: string
367 type: object
368 type: array
369 type: object
370 displayName:
371 description: User data for display name in UI. The name must be less
372 than or equal to 60 characters.
373 type: string
374 resourceID:
375 description: Immutable. Optional. The service-generated name of the
376 resource. Used for acquisition only. Leave unset to create a new
377 resource.
378 type: string
379 thresholdRules:
380 description: Optional. Rules that trigger alerts (notifications of
381 thresholds being crossed) when spend exceeds the specified percentages
382 of the budget.
383 items:
384 properties:
385 spendBasis:
386 description: 'Optional. The type of basis used to determine
387 if spend has passed the threshold. Behavior defaults to CURRENT_SPEND
388 if not set. Possible values: BASIS_UNSPECIFIED, CURRENT_SPEND,
389 FORECASTED_SPEND'
390 type: string
391 thresholdPercent:
392 description: 'Required. Send an alert when this threshold is
393 exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation:
394 non-negative number.'
395 format: double
396 type: number
397 required:
398 - thresholdPercent
399 type: object
400 type: array
401 required:
402 - amount
403 - billingAccountRef
404 type: object
405 status:
406 properties:
407 conditions:
408 description: Conditions represent the latest available observation
409 of the resource's current state.
410 items:
411 properties:
412 lastTransitionTime:
413 description: Last time the condition transitioned from one status
414 to another.
415 type: string
416 message:
417 description: Human-readable message indicating details about
418 last transition.
419 type: string
420 reason:
421 description: Unique, one-word, CamelCase reason for the condition's
422 last transition.
423 type: string
424 status:
425 description: Status is the status of the condition. Can be True,
426 False, Unknown.
427 type: string
428 type:
429 description: Type is the type of the condition.
430 type: string
431 type: object
432 type: array
433 etag:
434 description: Optional. Etag to validate that the object is unchanged
435 for a read-modify-write operation. An empty etag will cause an update
436 to overwrite other changes.
437 type: string
438 observedGeneration:
439 description: ObservedGeneration is the generation of the resource
440 that was most recently observed by the Config Connector controller.
441 If this is equal to metadata.generation, then that means that the
442 current reported status reflects the most recent desired state of
443 the resource.
444 type: integer
445 type: object
446 required:
447 - spec
448 type: object
449 served: true
450 storage: true
451 subresources:
452 status: {}
453status:
454 acceptedNames:
455 kind: ""
456 plural: ""
457 conditions: []
458 storedVersions: []
View as plain text