Skip to content

Commit

Permalink
Fix #2043: add processing steps to KameletBinding
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaferraro committed Feb 19, 2021
1 parent f54abe7 commit 51b7c01
Show file tree
Hide file tree
Showing 23 changed files with 2,579 additions and 1,691 deletions.
2 changes: 1 addition & 1 deletion addons/strimzi/strimzi.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (s StrimziBindingProvider) ID() string {
return "strimzi"
}

func (s StrimziBindingProvider) Translate(ctx bindings.BindingContext, _ v1alpha1.EndpointType, endpoint v1alpha1.Endpoint) (*bindings.Binding, error) {
func (s StrimziBindingProvider) Translate(ctx bindings.BindingContext, _ bindings.EndpointContext, endpoint v1alpha1.Endpoint) (*bindings.Binding, error) {
if endpoint.Ref == nil {
// React only on refs
return nil, nil
Expand Down
8 changes: 6 additions & 2 deletions addons/strimzi/strimzi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ func TestStrimziDirect(t *testing.T) {
}),
}

binding, err := StrimziBindingProvider{}.Translate(bindingContext, v1alpha1.EndpointTypeSink, endpoint)
binding, err := StrimziBindingProvider{}.Translate(bindingContext, bindings.EndpointContext{
Type: v1alpha1.EndpointTypeSink,
}, endpoint)
assert.NoError(t, err)
assert.NotNil(t, binding)
assert.Equal(t, "kafka:mytopic?brokers=my-cluster-kafka-bootstrap%3A9092", binding.URI)
Expand Down Expand Up @@ -116,7 +118,9 @@ func TestStrimziLookup(t *testing.T) {
},
}

binding, err := provider.Translate(bindingContext, v1alpha1.EndpointTypeSink, endpoint)
binding, err := provider.Translate(bindingContext, bindings.EndpointContext{
Type: v1alpha1.EndpointTypeSink,
}, endpoint)
assert.NoError(t, err)
assert.NotNil(t, binding)
assert.Equal(t, "kafka:mytopicy?brokers=my-clusterx-kafka-bootstrap%3A9092", binding.URI)
Expand Down
220 changes: 220 additions & 0 deletions config/crd/bases/camel.apache.org_kameletbindings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,226 @@ spec:
endpoint explicitly
type: string
type: object
steps:
description: Steps contains an optional list of intermediate steps
that are executed between the Source and the Sink
items:
description: Endpoint represents a source/sink external entity
properties:
properties:
description: Properties are a key value representation of endpoint
properties
type: object
x-kubernetes-preserve-unknown-fields: true
ref:
description: Ref can be used to declare a Kubernetes resource
as source/sink endpoint
properties:
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. TODO: this design
is not final and this field is subject to change in the
future.'
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
type: object
types:
additionalProperties:
properties:
mediaType:
type: string
schema:
description: JSONSchemaProps is a JSON-Schema following
Specification Draft 4 (http://json-schema.org/).
properties:
$schema:
description: JSONSchemaURL represents a schema url.
type: string
description:
type: string
example:
description: 'JSON represents any valid JSON value.
These types are supported: bool, int64, float64,
string, []interface{}, map[string]interface{} and
nil.'
x-kubernetes-preserve-unknown-fields: true
externalDocs:
description: ExternalDocumentation allows referencing
an external resource for extended documentation.
properties:
description:
type: string
url:
type: string
type: object
id:
type: string
properties:
additionalProperties:
properties:
default:
description: default is a default value for
undefined object fields.
x-kubernetes-preserve-unknown-fields: true
description:
type: string
enum:
items:
description: 'JSON represents any valid JSON
value. These types are supported: bool,
int64, float64, string, []interface{}, map[string]interface{}
and nil.'
x-kubernetes-preserve-unknown-fields: true
type: array
example:
description: 'JSON represents any valid JSON
value. These types are supported: bool, int64,
float64, string, []interface{}, map[string]interface{}
and nil.'
x-kubernetes-preserve-unknown-fields: true
exclusiveMaximum:
type: boolean
exclusiveMinimum:
type: boolean
format:
description: "format is an OpenAPI v3 format
string. Unknown formats are ignored. The following
formats are validated: \n - bsonobjectid:
a bson object ID, i.e. a 24 characters hex
string - uri: an URI as parsed by Golang net/url.ParseRequestURI
- email: an email address as parsed by Golang
net/mail.ParseAddress - hostname: a valid
representation for an Internet host name,
as defined by RFC 1034, section 3.1 [RFC1034].
- ipv4: an IPv4 IP as parsed by Golang net.ParseIP
- ipv6: an IPv6 IP as parsed by Golang net.ParseIP
- cidr: a CIDR as parsed by Golang net.ParseCIDR
- mac: a MAC address as parsed by Golang net.ParseMAC
- uuid: an UUID that allows uppercase defined
by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
- uuid3: an UUID3 that allows uppercase defined
by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
- uuid4: an UUID4 that allows uppercase defined
by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
- uuid5: an UUID5 that allows uppercase defined
by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
- isbn: an ISBN10 or ISBN13 number string
like \"0321751043\" or \"978-0321751041\"
- isbn10: an ISBN10 number string like \"0321751043\"
- isbn13: an ISBN13 number string like \"978-0321751041\"
- creditcard: a credit card number defined
by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
with any non digit characters mixed in - ssn:
a U.S. social security number following the
regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$
- hexcolor: an hexadecimal color code like
\"#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
- rgbcolor: an RGB color code like rgb like
\"rgb(255,255,2559\" - byte: base64 encoded
binary data - password: any kind of string
- date: a date string like \"2006-01-02\"
as defined by full-date in RFC3339 - duration:
a duration string like \"22 ns\" as parsed
by Golang time.ParseDuration or compatible
with Scala duration format - datetime: a date
time string like \"2014-12-15T19:30:20.000Z\"
as defined by date-time in RFC3339."
type: string
id:
type: string
maxItems:
format: int64
type: integer
maxLength:
format: int64
type: integer
maxProperties:
format: int64
type: integer
maximum:
description: A Number represents a JSON number
literal.
type: string
minItems:
format: int64
type: integer
minLength:
format: int64
type: integer
minProperties:
format: int64
type: integer
minimum:
description: A Number represents a JSON number
literal.
type: string
multipleOf:
description: A Number represents a JSON number
literal.
type: string
nullable:
type: boolean
pattern:
type: string
title:
type: string
type:
type: string
uniqueItems:
type: boolean
x-descriptors:
description: The list of descriptors that determine
which UI components to use on different views
items:
type: string
type: array
type: object
type: object
required:
items:
type: string
type: array
title:
type: string
type:
type: string
type: object
type: object
description: Types defines the schema of the data produced/consumed
by the endpoint
type: object
uri:
description: URI can alternatively be used to specify the (Camel)
endpoint explicitly
type: string
type: object
type: array
type: object
status:
description: KameletBindingStatus --
Expand Down

0 comments on commit 51b7c01

Please sign in to comment.