diff --git a/config/core/resources/parallel.yaml b/config/core/resources/parallel.yaml index dff037be4cf..6e07dbccb71 100644 --- a/config/core/resources/parallel.yaml +++ b/config/core/resources/parallel.yaml @@ -25,7 +25,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -323,7 +323,7 @@ spec: - <<: *version name: v1 served: true - storage: false + storage: true # the schema of v1 is exactly the same as v1beta1 schema schema: openAPIV3Schema: diff --git a/config/core/resources/sequence.yaml b/config/core/resources/sequence.yaml index cb0b0d9da4f..cf32ce9636b 100644 --- a/config/core/resources/sequence.yaml +++ b/config/core/resources/sequence.yaml @@ -25,7 +25,7 @@ spec: - &version name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -272,7 +272,7 @@ spec: - <<: *version name: v1 served: true - storage: false + storage: true # the schema of v1 is exactly the same as v1beta1 schema schema: openAPIV3Schema: diff --git a/config/pre-install/v0.18.0/clusterrole.yaml b/config/pre-install/v0.18.0/clusterrole.yaml index c58b03054d2..7003c8d5547 100644 --- a/config/pre-install/v0.18.0/clusterrole.yaml +++ b/config/pre-install/v0.18.0/clusterrole.yaml @@ -72,3 +72,16 @@ rules: - "delete" - "patch" - "watch" + - apiGroups: + - "flows.knative.dev" + resources: + - "parallels" + - "sequences" + verbs: + - "get" + - "list" + - "create" + - "update" + - "delete" + - "patch" + - "watch" diff --git a/config/pre-install/v0.18.0/parallel.yaml b/config/pre-install/v0.18.0/parallel.yaml new file mode 100644 index 00000000000..6e07dbccb71 --- /dev/null +++ b/config/pre-install/v0.18.0/parallel.yaml @@ -0,0 +1,347 @@ +# Copyright 2020 The Knative Authors +# +# 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. +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: parallels.flows.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" + duck.knative.dev/addressable: "true" +spec: + group: flows.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + schema: + openAPIV3Schema: &openAPIV3Schema + type: object + properties: + spec: + description: Spec defines the desired state of the Parallel. + type: object + properties: + branches: + description: Branches is the list of Filter/Subscribers pairs. + type: array + items: + type: object + x-kubernetes-preserve-unknown-fields: true + properties: + delivery: + description: Delivery is the delivery specification for + events to the subscriber This includes things like + retries, DLQ, etc. + type: object + properties: + backoffDelay: + description: 'BackoffDelay is the delay before + retrying. More information on Duration format: + - https://www.iso.org/iso-8601-date-and-time-format.html + - https://en.wikipedia.org/wiki/ISO_8601 For + linear policy, backoff delay is the time interval + between retries. For exponential policy , + backoff delay is backoffDelay*2^.' + type: string + backoffPolicy: + description: BackoffPolicy is the retry backoff + policy (linear, exponential). + type: string + deadLetterSink: + description: DeadLetterSink is the sink receiving + event that could not be sent to a destination. + type: object + properties: &addressableProperties + ref: + description: Ref points to an Addressable. + type: object + properties: + apiVersion: + description: API version of the + referent. + type: string + kind: + description: 'Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the + referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + This is optional field, it + gets defaulted to the object + holding it if left out.' + type: string + uri: + description: URI can be an absolute URL(non-empty + scheme and non-empty host) pointing + to the target or a relative URI. Relative + URIs will be resolved using the base + URI retrieved from Ref. + type: string + retry: + description: Retry is the minimum number of retries + the sender should attempt when sending an + event before moving it to the dead letter + sink. + type: integer + format: int32 + filter: + description: Filter is the expression guarding the branch + type: object + properties: + <<: *addressableProperties + reply: + description: Reply is a Reference to where the result + of Subscriber of this case gets sent to. If not specified, + sent the result to the Parallel Reply + type: object + properties: + <<: *addressableProperties + subscriber: + description: Subscriber receiving the event when the filter + passes + type: object + properties: + <<: *addressableProperties + channelTemplate: + description: ChannelTemplate specifies which Channel CRD to use. If + left unspecified, it is set to the default Channel CRD for the + namespace (or cluster, in case there are no defaults for the namespace). + type: object + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST + resource this object represents. Servers may infer this + from the endpoint the client submits requests to. Cannot + be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: Spec defines the Spec to use for each channel + created. Passed in verbatim to the Channel CRD as Spec + section. + type: object + x-kubernetes-preserve-unknown-fields: true + reply: + description: Reply is a Reference to where the result of a case Subscriber + gets sent to when the case does not have a Reply + type: object + properties: + <<: *addressableProperties + status: + description: Status represents the current state of the Parallel. This data + may be out of date. + type: object + properties: + address: + type: object + properties: + url: + type: string + annotations: + description: Annotations is additional Status fields for the Resource + to save some additional State as well as convey more information + to the user. This is roughly akin to Annotations on any k8s resource, + just the reconciler conveying richer information outwards. + type: object + x-kubernetes-preserve-unknown-fields: true + branchStatuses: + description: BranchStatuses is an array of corresponding to branch + statuses. Matches the Spec.Branches array in the order. + type: array + items: + type: object + properties: + filterChannelStatus: + description: FilterChannelStatus corresponds to the filter + channel status. + type: object + properties: &channelProperties + channel: + description: Channel is the reference to the underlying + channel. + type: object + properties: &referentProperties + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece + of an object instead of an entire + object, this string should contain + a valid JSON/Go field access statement, + such as desiredState.manifest.containers[2]. + For example, if the object reference + is to a container within a pod, this + would take on a value like: "spec.containers{name}" + (where "name" refers to the name of + the container that triggered the event) + or if no container name is specified + "spec.containers[2]" (container with + index 2 in this pod). This syntax + is chosen only to have some well-defined + way of referencing a part of an object.' + type: string + kind: + description: 'Kind of the referent. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion + to which this reference is made, if + any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + ready: + description: ReadyCondition indicates whether + the Channel is ready or not. + type: object + x-kubernetes-preserve-unknown-fields: true + properties: &readyConditionProperties + message: + description: A human readable message + indicating details about the transition. + type: string + reason: + description: The reason for the condition's + last transition. + type: string + severity: + description: Severity with which to treat + failures of this type of condition. + When this is not specified, it defaults + to Error. + type: string + status: + description: Status of the condition, + one of True, False, Unknown. + type: string + type: + description: Type of condition. + type: string + filterSubscriptionStatus: + description: FilterSubscriptionStatus corresponds to the + filter subscription status. + type: object + properties: + ready: + description: ReadyCondition indicates whether + the Subscription is ready or not. + type: object + properties: + <<: *readyConditionProperties + subscription: + description: Subscription is the reference to + the underlying Subscription. + type: object + properties: + <<: *referentProperties + subscriberSubscriptionStatus: + description: SubscriptionStatus corresponds to the subscriber + subscription status. + type: object + properties: + ready: + description: ReadyCondition indicates whether + the Subscription is ready or not. + type: object + properties: + <<: *readyConditionProperties + subscription: + description: Subscription is the reference to + the underlying Subscription. + type: object + properties: + <<: *referentProperties + conditions: + description: Conditions the latest available observations of a resource's + current state. + type: array + items: + type: object + properties: + <<: *readyConditionProperties + ingressChannelStatus: + description: IngressChannelStatus corresponds to the ingress channel + status. + type: object + properties: + <<: *channelProperties + observedGeneration: + description: ObservedGeneration is the 'Generation' of the Service + that was last processed by the controller. + type: integer + format: int64 + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + - name: Ready + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + - name: Reason + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].reason" + - <<: *version + name: v1 + served: true + storage: true + # the schema of v1 is exactly the same as v1beta1 schema + schema: + openAPIV3Schema: + << : *openAPIV3Schema + names: + kind: Parallel + plural: parallels + singular: parallel + categories: + - all + - knative + - flows + scope: Namespaced + conversion: + strategy: Webhook + webhook: + conversionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: eventing-webhook + namespace: knative-eventing diff --git a/config/pre-install/v0.18.0/sequence.yaml b/config/pre-install/v0.18.0/sequence.yaml new file mode 100644 index 00000000000..cf32ce9636b --- /dev/null +++ b/config/pre-install/v0.18.0/sequence.yaml @@ -0,0 +1,296 @@ +# Copyright 2020 The Knative Authors +# +# 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. +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: sequences.flows.knative.dev + labels: + eventing.knative.dev/release: devel + knative.dev/crd-install: "true" + duck.knative.dev/addressable: "true" +spec: + group: flows.knative.dev + versions: + - &version + name: v1beta1 + served: true + storage: false + subresources: + status: {} + schema: + openAPIV3Schema: &openAPIV3Schema + type: object + properties: + spec: + description: Spec defines the desired state of the Sequence. + type: object + properties: + channelTemplate: + description: ChannelTemplate specifies which Channel CRD to use. If + left unspecified, it is set to the default Channel CRD for the + namespace (or cluster, in case there are no defaults for the namespace). + type: object + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this + representation of an object. Servers should convert recognized + schemas to the latest internal value, and may reject unrecognized + values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST + resource this object represents. Servers may infer this + from the endpoint the client submits requests to. Cannot + be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: Spec defines the Spec to use for each channel + created. Passed in verbatim to the Channel CRD as Spec + section. + type: object + x-kubernetes-preserve-unknown-fields: true + reply: + description: Reply is a Reference to where the result of the last + Subscriber gets sent to. + type: object + properties: &addressableProperties + ref: + description: Ref points to an Addressable. + type: object + properties: + apiVersion: + description: API version of the referent. + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + This is optional field, it gets defaulted to the + object holding it if left out.' + type: string + uri: + description: URI can be an absolute URL(non-empty scheme and + non-empty host) pointing to the target or a relative URI. + Relative URIs will be resolved using the base URI retrieved + from Ref. + type: string + steps: + description: Steps is the list of Destinations (processors / functions) + that will be called in the order provided. Each step has its own + delivery options + type: array + items: + type: object + properties: + << : *addressableProperties + delivery: + description: Delivery is the delivery specification for + events to the subscriber This includes things like + retries, DLQ, etc. + type: object + properties: + backoffDelay: + description: 'BackoffDelay is the delay before + retrying. More information on Duration format: + - https://www.iso.org/iso-8601-date-and-time-format.html + - https://en.wikipedia.org/wiki/ISO_8601 For + linear policy, backoff delay is the time interval + between retries. For exponential policy , + backoff delay is backoffDelay*2^.' + type: string + backoffPolicy: + description: BackoffPolicy is the retry backoff + policy (linear, exponential). + type: string + deadLetterSink: + description: DeadLetterSink is the sink receiving + event that could not be sent to a destination. + type: object + properties: + << : *addressableProperties + retry: + description: Retry is the minimum number of retries + the sender should attempt when sending an + event before moving it to the dead letter + sink. + type: integer + format: int32 + status: + description: Status represents the current state of the Sequence. This data + may be out of date. + type: object + properties: + address: + type: object + properties: + url: + type: string + annotations: + description: Annotations is additional Status fields for the Resource + to save some additional State as well as convey more information + to the user. This is roughly akin to Annotations on any k8s resource, + just the reconciler conveying richer information outwards. + type: object + channelStatuses: + description: ChannelStatuses is an array of corresponding Channel + statuses. Matches the Spec.Steps array in the order. + type: array + items: + type: object + properties: + channel: + description: Channel is the reference to the underlying + channel. + type: object + properties: &referentProperties + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object + instead of an entire object, this string should + contain a valid JSON/Go field access statement, + such as desiredState.manifest.containers[2]. + For example, if the object reference is to + a container within a pod, this would take + on a value like: "spec.containers{name}" (where + "name" refers to the name of the container + that triggered the event) or if no container + name is specified "spec.containers[2]" (container + with index 2 in this pod). This syntax is + chosen only to have some well-defined way + of referencing a part of an object.' + type: string + kind: + description: 'Kind of the referent. More info: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which + this reference is made, if any. More info: + https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + ready: + description: ReadyCondition indicates whether the Channel + is ready or not. + type: object + x-kubernetes-preserve-unknown-fields: true + properties: &readyConditionProperties + message: + description: A human readable message indicating + details about the transition. + type: string + reason: + description: The reason for the condition's last + transition. + type: string + severity: + description: Severity with which to treat failures + of this type of condition. When this is not + specified, it defaults to Error. + type: string + status: + description: Status of the condition, one of True, + False, Unknown. + type: string + type: + description: Type of condition. + type: string + conditions: + description: Conditions the latest available observations of a resource's + current state. + type: array + items: + type: object + properties: + <<: *readyConditionProperties + observedGeneration: + description: ObservedGeneration is the 'Generation' of the Service + that was last processed by the controller. + type: integer + format: int64 + subscriptionStatuses: + description: SubscriptionStatuses is an array of corresponding Subscription + statuses. Matches the Spec.Steps array in the order. + type: array + items: + type: object + properties: + ready: + description: ReadyCondition indicates whether the Subscription + is ready or not. + type: object + properties: + <<: *readyConditionProperties + subscription: + description: Subscription is the reference to the underlying + Subscription. + type: object + properties: + <<: *referentProperties + additionalPrinterColumns: + - name: URL + type: string + jsonPath: .status.address.url + - name: Age + type: date + jsonPath: .metadata.creationTimestamp + - name: Ready + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" + - name: Reason + type: string + jsonPath: ".status.conditions[?(@.type==\"Ready\")].reason" + - <<: *version + name: v1 + served: true + storage: true + # the schema of v1 is exactly the same as v1beta1 schema + schema: + openAPIV3Schema: + << : *openAPIV3Schema + names: + kind: Sequence + plural: sequences + singular: sequence + categories: + - all + - knative + - flows + scope: Namespaced + conversion: + strategy: Webhook + webhook: + conversionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: eventing-webhook + namespace: knative-eventing diff --git a/config/pre-install/v0.18.0/storage-version-migration.yaml b/config/pre-install/v0.18.0/storage-version-migration.yaml index 25a47145a78..4933465ca78 100644 --- a/config/pre-install/v0.18.0/storage-version-migration.yaml +++ b/config/pre-install/v0.18.0/storage-version-migration.yaml @@ -45,3 +45,5 @@ spec: - "channels.messaging.knative.dev" - "inmemorychannels.messaging.knative.dev" - "subscriptions.messaging.knative.dev" + - "parallels.flows.knative.dev" + - "sequences.flows.knative.dev"