pesco-karavan-core
Version:
Apache Camel Karavan Core
55 lines (51 loc) • 2.08 kB
text/typescript
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
import {Annotations, Definition, KameletMetadata, KameletSpec, Labels} from "./KameletModels";
import {v4 as uuidv4} from "uuid";
export class Kamelet {
apiVersion: string = 'camel.apache.org/v1alpha1';
kind: string = 'Kamelet';
metadata: KameletMetadata = new KameletMetadata();
spec: KameletSpec = new KameletSpec();
public constructor(init?: Partial<Kamelet>) {
Object.assign(this, init);
}
static createKamelet(title: string, type?: 'source' | 'action' | 'sink', description?: string, icon?: string): Kamelet {
const spec = new KameletSpec({
definition: new Definition({
title,
description
})
});
if(type === 'action' || type === 'sink') {
spec.template = {
from: {
steps: [],
uri: 'kamelet:source'
}
}
}
return new Kamelet({
metadata: {
name: "",
annotations: icon ? new Annotations({ 'camel.apache.org/kamelet.icon': icon }): new Annotations(),
labels: new Labels({ 'camel.apache.org/kamelet.type': type || 'source' })
},
spec: spec
})
}
}