Skip to content

Commit

Permalink
wip: add salesforce source.yaml
Browse files Browse the repository at this point in the history
  • Loading branch information
katallaxie committed Jun 3, 2024
1 parent 399efac commit 82a309b
Show file tree
Hide file tree
Showing 2 changed files with 328 additions and 0 deletions.
268 changes: 268 additions & 0 deletions config/300-salesforcesource.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,268 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: salesforcesources.sources.typhoon.zeiss.com
labels:
eventing.knative.dev/source: 'true'
duck.knative.dev/source: 'true'
knative.dev/crd-install: 'true'
typhoon.zeiss.com/crd-install: 'true'
annotations:
registry.knative.dev/eventTypes: |
[
{
"type": "com.salesforce.stream.message",
"schema": "https://raw.githubusercontent.com/zeiss/typhoon/main/schemas/com.salesforce.stream.message.json"
}
]
spec:
group: sources.typhoon.zeiss.com
scope: Namespaced
names:
kind: SalesforceSource
plural: salesforcesources
categories:
- all
- knative
- eventing
- sources
versions:
- name: v1alpha1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
description: Typhoon event source for Salesforce.
type: object
properties:
spec:
description: Desired state of the event source.
type: object
properties:
auth:
description: Authentication method to interact with the Salesforce API.
type: object
properties:
auth:
type: object
description: Authentication method to interact with the Salesforce API.
properties:
clientID:
description: Salesforce client ID.
type: string
clientSecret:
instanaceURL:
description: Salesforce instance URL.
type: string
properties:
value:
description: Literal value of the certificate key.
type: string
valueFromSecret:
description: A reference to a Kubernetes Secret containing the certificate key.
type: object
properties:
name:
type: string
key:
type: string
required:
- name
- key
oneOf:
- required: [value]
- required: [valueFromSecret]
required:
- clientID
- instanceURL
- auth
apiVersion:
description: Salesforce API version.
type: string
subscription:
description: Subscription to a Salesforce channel.
type: object
properties:
channel:
type: string
replayID:
type: integer
required:
- channel
sink:
description: The destination of events received via Salesforce streams.
type: object
properties:
ref:
description: Reference to an addressable Kubernetes object to be used as the destination of events.
type: object
properties:
apiVersion:
type: string
kind:
type: string
namespace:
type: string
name:
type: string
required:
- apiVersion
- kind
- name
uri:
description: URI to use as the destination of events.
type: string
format: uri
anyOf:
- required: [ref]
- required: [uri]
adapterOverrides:
description: Kubernetes object parameters to apply on top of default adapter values.
type: object
properties:
annotations:
description: Adapter annotations.
type: object
additionalProperties:
type: string
labels:
description: Adapter labels.
type: object
additionalProperties:
type: string
env:
description: Adapter environment variables.
type: array
items:
type: object
properties:
name:
type: string
value:
type: string
resources:
description: Compute Resources required by the adapter. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
properties:
limits:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Limits describes the maximum amount of compute resources allowed. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
requests:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: Requests describes the minimum amount of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined
value. More info at https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
type: object
tolerations:
description: Pod tolerations, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
Tolerations require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/
type: array
items:
type: object
properties:
key:
description: Taint key that the toleration applies to.
type: string
operator:
description: Key's relationship to the value.
type: string
enum: [Exists, Equal]
value:
description: Taint value the toleration matches to.
type: string
effect:
description: Taint effect to match.
type: string
enum: [NoSchedule, PreferNoSchedule, NoExecute]
tolerationSeconds:
description: Period of time a toleration of effect NoExecute tolerates the taint.
type: integer
format: int64
nodeSelector:
description: NodeSelector only allow the object pods to be created at nodes where all selector labels
are present, as documented at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector.
NodeSelector require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/
type: object
additionalProperties:
type: string
affinity:
description: Scheduling constraints of the pod. More info at https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity.
Affinity require additional configuration for Knative-based deployments - https://knative.dev/docs/serving/configuration/feature-flags/
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- auth
- subscription
- sink
status:
description: Reported status of the event source.
type: object
properties:
sinkUri:
description: URI of the sink where events are currently sent to.
type: string
format: uri
ceAttributes:
type: array
items:
type: object
properties:
type:
type: string
source:
type: string
required:
- type
- source
observedGeneration:
type: integer
format: int64
conditions:
type: array
items:
type: object
properties:
type:
type: string
status:
type: string
enum: ['True', 'False', Unknown]
severity:
type: string
enum: [Error, Warning, Info]
reason:
type: string
message:
type: string
lastTransitionTime:
type: string
format: date-time
required:
- type
- status
additionalPrinterColumns:
- name: Ready
type: string
jsonPath: .status.conditions[?(@.type=='Ready')].status
- name: Reason
type: string
jsonPath: .status.conditions[?(@.type=='Ready')].reason
- name: Sink
type: string
jsonPath: .status.sinkUri
- name: Age
type: date
jsonPath: .metadata.creationTimestamp
60 changes: 60 additions & 0 deletions schemas/com.salesforce.stream.message.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"event": {
"properties": {
"createdDate": {
"type": "string",
"format": "date-time"
},
"replayId": {
"type": "integer"
},
"type": {
"type": "string"
}
},
"additionalProperties": false,
"type": "object"
},
"schema": {
"type": "string"
},
"sobject": true,
"payload": true
},
"additionalProperties": false,
"type": "object",
"examples": [{
"event": {
"createdDate": "2022-06-01T12:00:00Z",
"replayId": 12345,
"type": "customer_created"
},
"schema": "v1",
"sobject": true,
"payload": {
"customerId": "123456789",
"name": "John Smith",
"email": "[email protected]"
}
}, {
"event": {
"createdDate": "2022-06-01T13:00:00Z",
"replayId": 12346,
"type": "order_placed"
},
"schema": "v1",
"sobject": true,
"payload": {
"orderId": "987654321",
"customerId": "123456789",
"total": 49.99,
"items": [{
"name": "Widget",
"quantity": 2,
"price": 24.99
}]
}
}]
}

0 comments on commit 82a309b

Please sign in to comment.