All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dekorate.halkyon.annotation.HalkyonComponent Maven / Gradle / Ivy

There is a newer version: 2.0.0.beta2
Show newest version
/**
 * Copyright 2018 The original authors.
 * 

* Licensed 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. */ package io.dekorate.halkyon.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import io.dekorate.halkyon.model.DeploymentMode; import io.dekorate.kubernetes.annotation.Env; import io.dekorate.kubernetes.annotation.Label; import io.dekorate.kubernetes.config.Configuration; import io.dekorate.utils.Git; import io.sundr.builder.annotations.Buildable; import io.sundr.builder.annotations.Pojo; @Buildable(builderPackage = "io.dekorate.deps.kubernetes.api.builder") @Pojo(name = "ComponentConfig", mutable = true, superClass = Configuration.class, relativePath = "../config", withStaticAdapterMethod = false) @Target({ElementType.CONSTRUCTOR, ElementType.TYPE}) @Retention(RetentionPolicy.SOURCE) public @interface HalkyonComponent { /** * The name of the collection of componnet this component belongs to. * This value will be use as: * - labeling resources * @return The specified group name. */ String partOf() default ""; /** * The name of the application. * This value will be used for naming Kubernetes resources like: * - Deployment * - Service * and so on ... * If no value is specified it will attempt to determine the name using the following rules: * If its a maven/gradle project use the artifact id. * Else if its a bazel project use the name. * Else if the system property app.name is present it will be used. * Else find the project root folder and use its name (root folder detection is done by moving to the parent folder until .git is found). * @return The specified application name. */ String name() default ""; /** * The version of the application. * This value be used for things like: * - The docker image tag. * If no value specified it will attempt to determine the name using the following rules: * @return The version. */ String version() default ""; DeploymentMode deploymentMode() default DeploymentMode.dev; boolean exposeService() default false; Env[] envs() default {}; Label[] labels() default {}; String buildType() default "s2i"; String remote() default Git.ORIGIN; HalkyonCapability[] provides() default {}; HalkyonRequiredCapability[] requires() default {}; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy