This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 42066bdf73b6f763f907757ea73853b9348546ef Author: Marat Gubaidullin <[email protected]> AuthorDate: Wed Oct 19 20:17:57 2022 -0400 Openshift and image build properties --- karavan-vscode/package.json | 68 +++++++++++++++++++++++++++++++++++------ karavan-vscode/src/extension.ts | 16 +++++++--- karavan-vscode/src/utils.ts | 8 +++-- 3 files changed, 77 insertions(+), 15 deletions(-) diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json index 4fb1df8..85e9a13 100644 --- a/karavan-vscode/package.json +++ b/karavan-vscode/package.json @@ -79,6 +79,18 @@ "scope": "machine", "order": 20 }, + "camel.deployTarget": { + "type": "string", + "default": "openshift", + "enum": [ + "kubernetes", + "openshift", + "none" + ], + "description": "Deploy Target", + "scope": "machine", + "order": 22 + }, "camel.quarkus-version": { "type": "string", "default": "2.13.2.Final", @@ -88,7 +100,7 @@ }, "camel.maxMessages": { "type": "integer", - "default": 10, + "default": 0, "description": "Maximum number of messages to process before stopping", "scope": "machine", "order": 30 @@ -152,7 +164,7 @@ ], "description": "Default application.properties template", "scope": "machine", - "order": 99 + "order": 90 }, "Karavan.quarkusApplicationProperties": { "type": "array", @@ -161,18 +173,56 @@ "type": "string" }, "default": [ - "camel.jbang.quarkusVersion=$RUNTIME_VERSION", - "quarkus.kubernetes-client.trust-certs=true", - "quarkus.container-image.builder=jib", - "quarkus.container-image.group=karavan", + "camel.jbang.quarkusVersion=$RUNTIME_VERSION" + ], + "description": "Default application.properties template for Quarkus Runtime", + "scope": "machine", + "order": 95 + }, + "Karavan.imageBuildProperties": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + }, + "default": [ + "quarkus.container-image.group=${KUBERNETES_NAMESPACE}", "quarkus.container-image.name=$NAME", + "quarkus.container-image.builder=jib", + "quarkus.container-image.build=true", + "quarkus.container-image.push=true", + "quarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000", + "quarkus.container-image.insecure=true", + "quarkus.container-image.username=sa", + "quarkus.container-image.password=${TOKEN}", + "quarkus.container-image.tag=${DATE}" + ], + "description": "Default application.properties template for image build", + "scope": "machine", + "order": 96 + }, + "Karavan.openshiftProperties": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + }, + "default": [ + "quarkus.kubernetes.deploy=true", + "quarkus.kubernetes.labels.\"app.openshift.io/runtime\"=camel", + "quarkus.kubernetes-client.trust-certs=true", + "quarkus.kubernetes-client.master-url=kubernetes.default.svc", + "quarkus.kubernetes-client.namespace=${KUBERNETES_NAMESPACE}", + "quarkus.kubernetes-client.token=${TOKEN}", + "quarkus.openshift.deployment-kind=Deployment", + "quarkus.openshift.add-version-to-label-selectors=false", "quarkus.openshift.route.expose=false", "quarkus.openshift.part-of=$NAME", "quarkus.openshift.replicas=1" ], - "description": "Default application.properties template for Quarkus Runtime", + "description": "Default application.properties template for Openshift", "scope": "machine", - "order": 100 + "order": 97 } } }, @@ -450,4 +500,4 @@ "shelljs": "^0.8.5", "uuid": "8.3.2" } -} +} \ No newline at end of file diff --git a/karavan-vscode/src/extension.ts b/karavan-vscode/src/extension.ts index a61977c..bef26f8 100644 --- a/karavan-vscode/src/extension.ts +++ b/karavan-vscode/src/extension.ts @@ -113,17 +113,25 @@ export function activate(context: ExtensionContext) { const applicationCommand = commands.registerCommand("karavan.create-application", (...args: any[]) => { if (rootPath){ const defaultRuntime: string = workspace.getConfiguration().get("camel.runtimes") || ''; + const deployTarget: string = workspace.getConfiguration().get("camel.deployTarget") || 'openshift'; const runtimeOptions: QuickPickItem [] = [ {label: "quarkus", picked: "quarkus" === defaultRuntime}, {label: "spring-boot", picked: "spring-boot" === defaultRuntime}, {label: "camel-main", picked: "camel-main" === defaultRuntime} ]; + const deployOptions: QuickPickItem [] = [ + {label: "kubernetes", picked: "kubernetes" === deployTarget}, + {label: "openshift", picked: "openshift" === deployTarget}, + {label: "none", picked: "none" === deployTarget} + ]; utils.hasApplicationProperties(rootPath).then(hasAP => { if (hasAP){ window.showInformationMessage("Folder already contains application.properties"); } else { - window.showQuickPick(runtimeOptions, { title: "Select Runtime", canPickMany: false }).then((value) => { - if (value) inputExportGav(value.label) + window.showQuickPick(runtimeOptions, { title: "Select Runtime", canPickMany: false }).then((runtime) => { + window.showQuickPick(deployOptions, { title: "Select Deploy Target", canPickMany: false }).then((target) => { + if (runtime && target) inputExportGav(runtime.label, target.label) + }) }) } }) @@ -194,7 +202,7 @@ export async function inputExportFolder(rootPath?: string) { /** * export with gav */ -export async function inputExportGav(runtime: string) { +export async function inputExportGav(runtime: string, target: string) { window.showInputBox({ title: "Export project with " + runtime, ignoreFocusOut: true, @@ -208,7 +216,7 @@ export async function inputExportGav(runtime: string) { } }).then(gav => { if (gav) { - utils.crateApplicationproperties(runtime, gav) + utils.createApplicationproperties(runtime, gav, target) } }); } diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts index 3d3279d..7949a46 100644 --- a/karavan-vscode/src/utils.ts +++ b/karavan-vscode/src/utils.ts @@ -206,7 +206,7 @@ export async function write(fullPath: string, code: string) { ); } -export async function crateApplicationproperties(runtime: string, gav: string, ) { +export async function createApplicationproperties(runtime: string, gav: string, deployTarget: string ) { if (workspace.workspaceFolders) { const uriFolder: Uri = workspace.workspaceFolders[0].uri; const parts = uriFolder.fsPath.split(path.sep); @@ -214,10 +214,14 @@ export async function crateApplicationproperties(runtime: string, gav: string, ) const runtimeVersion: string = workspace.getConfiguration().get("camel." + runtime + "-version") || ''; const props: string [] = workspace.getConfiguration().get("Karavan.applicationProperties") || []; + const imageBuildProps: string [] = workspace.getConfiguration().get("Karavan.imageBuildProperties") || []; + const targetProps: string [] = + deployTarget === 'openshift' ? (workspace.getConfiguration().get("Karavan.openshiftProperties") || []) + : []; const runtimeDefaults: [] = (runtime === 'quarkus') ? workspace.getConfiguration().get("Karavan.quarkusApplicationProperties") || [] : []; - const text = props.concat(runtimeDefaults).map(v => { + const text = props.concat(runtimeDefaults).concat(imageBuildProps).concat(targetProps).map(v => { if (v.includes('$NAME')) return v.replace('$NAME', name) else if (v.includes('$GAV')) return v.replace('$GAV', gav) else if (v.includes('$RUNTIME_VERSION')) return v.replace('$RUNTIME_VERSION', runtimeVersion) // $RUNTIME_VERSION should be before $RUNTIME
