Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix #2043: add processing steps to KameletBinding #2044

Merged
merged 1 commit into from
Feb 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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