1# Copyright 2020 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15apiVersion: apiextensions.k8s.io/v1
16kind: CustomResourceDefinition
17metadata:
18 annotations:
19 cnrm.cloud.google.com/version: 1.106.0
20 creationTimestamp: null
21 labels:
22 cnrm.cloud.google.com/dcl2crd: "true"
23 cnrm.cloud.google.com/managed-by-kcc: "true"
24 cnrm.cloud.google.com/stability-level: stable
25 cnrm.cloud.google.com/system: "true"
26 name: cloudschedulerjobs.cloudscheduler.cnrm.cloud.google.com
27spec:
28 group: cloudscheduler.cnrm.cloud.google.com
29 names:
30 categories:
31 - gcp
32 kind: CloudSchedulerJob
33 plural: cloudschedulerjobs
34 shortNames:
35 - gcpcloudschedulerjob
36 - gcpcloudschedulerjobs
37 singular: cloudschedulerjob
38 scope: Namespaced
39 versions:
40 - additionalPrinterColumns:
41 - jsonPath: .metadata.creationTimestamp
42 name: Age
43 type: date
44 - description: When 'True', the most recent reconcile of the resource succeeded
45 jsonPath: .status.conditions[?(@.type=='Ready')].status
46 name: Ready
47 type: string
48 - description: The reason for the value in 'Ready'
49 jsonPath: .status.conditions[?(@.type=='Ready')].reason
50 name: Status
51 type: string
52 - description: The last transition time for the value in 'Status'
53 jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
54 name: Status Age
55 type: date
56 name: v1beta1
57 schema:
58 openAPIV3Schema:
59 properties:
60 apiVersion:
61 description: 'apiVersion defines the versioned schema of this representation
62 of an object. Servers should convert recognized schemas to the latest
63 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
64 type: string
65 kind:
66 description: 'kind is a string value representing the REST resource this
67 object represents. Servers may infer this from the endpoint the client
68 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
69 type: string
70 metadata:
71 type: object
72 spec:
73 properties:
74 appEngineHttpTarget:
75 description: App Engine HTTP target.
76 properties:
77 appEngineRouting:
78 description: App Engine Routing setting for the job.
79 properties:
80 instance:
81 description: App instance. By default, the job is sent to
82 an instance which is available when the job is attempted.
83 Requests can only be sent to a specific instance if [manual
84 scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes).
85 App Engine Flex does not support instances. For more information,
86 see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed)
87 and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).
88 type: string
89 service:
90 description: App service. By default, the job is sent to the
91 service which is the default service when the job is attempted.
92 type: string
93 version:
94 description: App version. By default, the job is sent to the
95 version which is the default version when the job is attempted.
96 type: string
97 type: object
98 body:
99 description: Body. HTTP request body. A request body is allowed
100 only if the HTTP method is POST or PUT. It will result in invalid
101 argument error to set a body on a job with an incompatible HttpMethod.
102 type: string
103 headers:
104 additionalProperties:
105 type: string
106 description: 'HTTP request headers. This map contains the header
107 field names and values. Headers can be set when the job is created.
108 Cloud Scheduler sets some headers to default values: * `User-Agent`:
109 By default, this header is `"App Engine-Google; (+http://code.google.com/appengine)"`.
110 This header can be modified, but Cloud Scheduler will append
111 `"App Engine-Google; (+http://code.google.com/appengine)"` to
112 the modified `User-Agent`. * `X-CloudScheduler`: This header
113 will be set to true. The headers below are output only. They
114 cannot be set or overridden: * `X-Google-*`: For Google internal
115 use only. * `X-App Engine-*`: For Google internal use only.
116 In addition, some App Engine headers, which contain job-specific
117 information, are also be sent to the job handler.'
118 type: object
119 httpMethod:
120 description: 'The HTTP method to use for the request. PATCH and
121 OPTIONS are not permitted. Possible values: HTTP_METHOD_UNSPECIFIED,
122 POST, GET, HEAD, PUT, DELETE, PATCH, OPTIONS'
123 type: string
124 relativeUri:
125 description: The relative URI. The relative URL must begin with
126 "/" and must be a valid HTTP relative URL. It can contain a
127 path, query string arguments, and `#` fragments. If the relative
128 URL is empty, then the root path "/" will be used. No spaces
129 are allowed, and the maximum length allowed is 2083 characters.
130 type: string
131 type: object
132 attemptDeadline:
133 description: 'The deadline for job attempts. If the request handler
134 does not respond by this deadline then the request is cancelled
135 and the attempt is marked as a `DEADLINE_EXCEEDED` failure. The
136 failed attempt can be viewed in execution logs. Cloud Scheduler
137 will retry the job according to the RetryConfig. The allowed duration
138 for this deadline is: * For HTTP targets, between 15 seconds and
139 30 minutes. * For App Engine HTTP targets, between 15 seconds and
140 24 hours.'
141 type: string
142 description:
143 description: Optionally caller-specified in CreateJob or UpdateJob.
144 A human-readable description for the job. This string must not contain
145 more than 500 characters.
146 type: string
147 httpTarget:
148 description: HTTP target.
149 properties:
150 body:
151 description: HTTP request body. A request body is allowed only
152 if the HTTP method is POST, PUT, or PATCH. It is an error to
153 set body on a job with an incompatible HttpMethod.
154 type: string
155 headers:
156 additionalProperties:
157 type: string
158 description: 'The user can specify HTTP request headers to send
159 with the job''s HTTP request. This map contains the header field
160 names and values. Repeated headers are not supported, but a
161 header value can contain commas. These headers represent a subset
162 of the headers that will accompany the job''s HTTP request.
163 Some HTTP request headers will be ignored or replaced. A partial
164 list of headers that will be ignored or replaced is below: -
165 Host: This will be computed by Cloud Scheduler and derived from
166 uri. * `Content-Length`: This will be computed by Cloud Scheduler.
167 * `User-Agent`: This will be set to `"Google-Cloud-Scheduler"`.
168 * `X-Google-*`: Google internal use only. * `X-appengine-*`:
169 Google internal use only. The total size of headers must be
170 less than 80KB.'
171 type: object
172 httpMethod:
173 description: 'Which HTTP method to use for the request. Possible
174 values: HTTP_METHOD_UNSPECIFIED, POST, GET, HEAD, PUT, DELETE,
175 PATCH, OPTIONS'
176 type: string
177 oauthToken:
178 description: If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2)
179 will be generated and attached as an `Authorization` header
180 in the HTTP request. This type of authorization should generally
181 only be used when calling Google APIs hosted on *.googleapis.com.
182 properties:
183 scope:
184 description: OAuth scope to be used for generating OAuth access
185 token. If not specified, "https://www.googleapis.com/auth/cloud-platform"
186 will be used.
187 type: string
188 serviceAccountRef:
189 oneOf:
190 - not:
191 required:
192 - external
193 required:
194 - name
195 - not:
196 anyOf:
197 - required:
198 - name
199 - required:
200 - namespace
201 required:
202 - external
203 properties:
204 external:
205 description: |-
206 [Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account.
207
208 Allowed value: The `email` field of an `IAMServiceAccount` resource.
209 type: string
210 name:
211 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
212 type: string
213 namespace:
214 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
215 type: string
216 type: object
217 type: object
218 oidcToken:
219 description: If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect)
220 token will be generated and attached as an `Authorization` header
221 in the HTTP request. This type of authorization can be used
222 for many scenarios, including calling Cloud Run, or endpoints
223 where you intend to validate the token yourself.
224 properties:
225 audience:
226 description: Audience to be used when generating OIDC token.
227 If not specified, the URI specified in target will be used.
228 type: string
229 serviceAccountRef:
230 oneOf:
231 - not:
232 required:
233 - external
234 required:
235 - name
236 - not:
237 anyOf:
238 - required:
239 - name
240 - required:
241 - namespace
242 required:
243 - external
244 properties:
245 external:
246 description: |-
247 [Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the job. The caller must have iam.serviceAccounts.actAs permission for the service account.
248
249 Allowed value: The `email` field of an `IAMServiceAccount` resource.
250 type: string
251 name:
252 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
253 type: string
254 namespace:
255 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
256 type: string
257 type: object
258 type: object
259 uri:
260 description: 'Required. The full URI path that the request will
261 be sent to. This string must begin with either "http://" or
262 "https://". Some examples of valid values for uri are: `http://acme.com`
263 and `https://acme.com/sales:8080`. Cloud Scheduler will encode
264 some characters for safety and compatibility. The maximum allowed
265 URL length is 2083 characters after encoding.'
266 type: string
267 required:
268 - uri
269 type: object
270 location:
271 description: Immutable. The location for the resource
272 type: string
273 pubsubTarget:
274 description: Pub/Sub target.
275 properties:
276 attributes:
277 additionalProperties:
278 type: string
279 description: Attributes for PubsubMessage. Pubsub message must
280 contain either non-empty data, or at least one attribute.
281 type: object
282 data:
283 description: The message payload for PubsubMessage. Pubsub message
284 must contain either non-empty data, or at least one attribute.
285 type: string
286 topicRef:
287 oneOf:
288 - not:
289 required:
290 - external
291 required:
292 - name
293 - not:
294 anyOf:
295 - required:
296 - name
297 - required:
298 - namespace
299 required:
300 - external
301 properties:
302 external:
303 description: |-
304 Required. The name of the Cloud Pub/Sub topic to which messages will be published when a job is delivered. The topic name must be in the same format as required by Pub/Sub's [PublishRequest.name](https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#publishrequest), for example `projects/PROJECT_ID/topics/TOPIC_ID`. The topic must be in the same project as the Cloud Scheduler job.
305
306 Allowed value: The Google Cloud resource name of a `PubSubTopic` resource (format: `projects/{{project}}/topics/{{name}}`).
307 type: string
308 name:
309 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
310 type: string
311 namespace:
312 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
313 type: string
314 type: object
315 required:
316 - topicRef
317 type: object
318 resourceID:
319 description: Immutable. Optional. The name of the resource. Used for
320 creation and acquisition. When unset, the value of `metadata.name`
321 is used as the default.
322 type: string
323 retryConfig:
324 description: Settings that determine the retry behavior.
325 properties:
326 maxBackoffDuration:
327 description: The maximum amount of time to wait before retrying
328 a job after it fails. The default value of this field is 1 hour.
329 type: string
330 maxDoublings:
331 description: The time between retries will double `max_doublings`
332 times. A job's retry interval starts at min_backoff_duration,
333 then doubles `max_doublings` times, then increases linearly,
334 and finally retries at intervals of max_backoff_duration up
335 to retry_count times. For example, if min_backoff_duration is
336 10s, max_backoff_duration is 300s, and `max_doublings` is 3,
337 then the a job will first be retried in 10s. The retry interval
338 will double three times, and then increase linearly by 2^3 *
339 10s. Finally, the job will retry at intervals of max_backoff_duration
340 until the job has been attempted retry_count times. Thus, the
341 requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s,
342 300s, .... The default value of this field is 5.
343 format: int64
344 type: integer
345 maxRetryDuration:
346 description: The time limit for retrying a failed job, measured
347 from time when an execution was first attempted. If specified
348 with retry_count, the job will be retried until both limits
349 are reached. The default value for max_retry_duration is zero,
350 which means retry duration is unlimited.
351 type: string
352 minBackoffDuration:
353 description: The minimum amount of time to wait before retrying
354 a job after it fails. The default value of this field is 5 seconds.
355 type: string
356 retryCount:
357 description: The number of attempts that the system will make
358 to run a job using the exponential backoff procedure described
359 by max_doublings. The default value of retry_count is zero.
360 If retry_count is zero, a job attempt will *not* be retried
361 if it fails. Instead the Cloud Scheduler system will wait for
362 the next scheduled execution time. If retry_count is set to
363 a non-zero number then Cloud Scheduler will retry failed attempts,
364 using exponential backoff, retry_count times, or until the next
365 scheduled execution time, whichever comes first. Values greater
366 than 5 and negative values are not allowed.
367 format: int64
368 type: integer
369 type: object
370 schedule:
371 description: 'Required, except when used with UpdateJob. Describes
372 the schedule on which the job will be executed. The schedule can
373 be either of the following types: * [Crontab](http://en.wikipedia.org/wiki/Cron#Overview)
374 * English-like [schedule](https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules)
375 As a general rule, execution `n + 1` of a job will not begin until
376 execution `n` has finished. Cloud Scheduler will never allow two
377 simultaneously outstanding executions. For example, this implies
378 that if the `n+1`th execution is scheduled to run at 16:00 but the
379 `n`th execution takes until 16:15, the `n+1`th execution will not
380 start until `16:15`. A scheduled start time will be delayed if the
381 previous execution has not ended when its scheduled time occurs.
382 If retry_count > 0 and a job attempt fails, the job will be tried
383 a total of retry_count times, with exponential backoff, until the
384 next scheduled start time.'
385 type: string
386 timeZone:
387 description: Specifies the time zone to be used in interpreting schedule.
388 The value of this field must be a time zone name from the [tz database](http://en.wikipedia.org/wiki/Tz_database).
389 Note that some time zones include a provision for daylight savings
390 time. The rules for daylight saving time are determined by the chosen
391 tz. For UTC use the string "utc". If a time zone is not specified,
392 the default will be in UTC (also known as GMT).
393 type: string
394 required:
395 - location
396 type: object
397 status:
398 properties:
399 appEngineHttpTarget:
400 properties:
401 appEngineRouting:
402 properties:
403 host:
404 description: 'Output only. The host that the job is sent to.
405 For more information about how App Engine requests are routed,
406 see [here](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).
407 The host is constructed as: * `host = [application_domain_name]`
408 `| [service] + ''.'' + [application_domain_name]` `| [version]
409 + ''.'' + [application_domain_name]` `| [version_dot_service]+
410 ''.'' + [application_domain_name]` `| [instance] + ''.''
411 + [application_domain_name]` `| [instance_dot_service] +
412 ''.'' + [application_domain_name]` `| [instance_dot_version]
413 + ''.'' + [application_domain_name]` `| [instance_dot_version_dot_service]
414 + ''.'' + [application_domain_name]` * `application_domain_name`
415 = The domain name of the app, for example .appspot.com,
416 which is associated with the job''s project ID. * `service
417 =` service * `version =` version * `version_dot_service
418 =` version `+ ''.'' +` service * `instance =` instance *
419 `instance_dot_service =` instance `+ ''.'' +` service *
420 `instance_dot_version =` instance `+ ''.'' +` version *
421 `instance_dot_version_dot_service =` instance `+ ''.'' +`
422 version `+ ''.'' +` service If service is empty, then the
423 job will be sent to the service which is the default service
424 when the job is attempted. If version is empty, then the
425 job will be sent to the version which is the default version
426 when the job is attempted. If instance is empty, then the
427 job will be sent to an instance which is available when
428 the job is attempted. If service, version, or instance is
429 invalid, then the job will be sent to the default version
430 of the default service when the job is attempted.'
431 type: string
432 type: object
433 type: object
434 conditions:
435 description: Conditions represent the latest available observation
436 of the resource's current state.
437 items:
438 properties:
439 lastTransitionTime:
440 description: Last time the condition transitioned from one status
441 to another.
442 type: string
443 message:
444 description: Human-readable message indicating details about
445 last transition.
446 type: string
447 reason:
448 description: Unique, one-word, CamelCase reason for the condition's
449 last transition.
450 type: string
451 status:
452 description: Status is the status of the condition. Can be True,
453 False, Unknown.
454 type: string
455 type:
456 description: Type is the type of the condition.
457 type: string
458 type: object
459 type: array
460 lastAttemptTime:
461 description: Output only. The time the last job attempt started.
462 format: date-time
463 type: string
464 observedGeneration:
465 description: ObservedGeneration is the generation of the resource
466 that was most recently observed by the Config Connector controller.
467 If this is equal to metadata.generation, then that means that the
468 current reported status reflects the most recent desired state of
469 the resource.
470 type: integer
471 scheduleTime:
472 description: Output only. The next time the job is scheduled. Note
473 that this may be a retry of a previously failed attempt or the next
474 execution time according to the schedule.
475 format: date-time
476 type: string
477 state:
478 description: 'Output only. State of the job. Possible values: STATE_UNSPECIFIED,
479 ENABLED, PAUSED, DISABLED, UPDATE_FAILED'
480 type: string
481 status:
482 description: Output only. The response from the target for the last
483 attempted execution.
484 properties:
485 code:
486 description: The status code, which should be an enum value of
487 google.rpc.Code.
488 format: int64
489 type: integer
490 details:
491 description: A list of messages that carry the error details.
492 There is a common set of message types for APIs to use.
493 items:
494 properties:
495 typeUrl:
496 description: 'A URL/resource name that uniquely identifies
497 the type of the serialized protocol buffer message. This
498 string must contain at least one "/" character. The last
499 segment of the URL''s path must represent the fully qualified
500 name of the type (as in `path/google.protobuf.Duration`).
501 The name should be in a canonical form (e.g., leading
502 "." is not accepted). In practice, teams usually precompile
503 into the binary all types that they expect it to use in
504 the context of Any. However, for URLs which use the scheme
505 `http`, `https`, or no scheme, one can optionally set
506 up a type server that maps type URLs to message definitions
507 as follows: * If no scheme is provided, `https` is assumed.
508 * An HTTP GET on the URL must yield a google.protobuf.Type
509 value in binary format, or produce an error. * Applications
510 are allowed to cache lookup results based on the URL,
511 or have them precompiled into a binary to avoid any lookup.
512 Therefore, binary compatibility needs to be preserved
513 on changes to types. (Use versioned type names to manage
514 breaking changes.) Note: this functionality is not currently
515 available in the official protobuf release, and it is
516 not used for type URLs beginning with type.googleapis.com.
517 Schemes other than `http`, `https` (or the empty scheme)
518 might be used with implementation specific semantics.'
519 type: string
520 value:
521 description: Must be a valid serialized protocol buffer
522 of the above specified type.
523 type: string
524 type: object
525 type: array
526 message:
527 description: A developer-facing error message, which should be
528 in English. Any user-facing error message should be localized
529 and sent in the google.rpc.Status.details field, or localized
530 by the client.
531 type: string
532 type: object
533 userUpdateTime:
534 description: Output only. The creation time of the job.
535 format: date-time
536 type: string
537 type: object
538 required:
539 - spec
540 type: object
541 served: true
542 storage: true
543 subresources:
544 status: {}
545status:
546 acceptedNames:
547 kind: ""
548 plural: ""
549 conditions: []
550 storedVersions: []
View as plain text