From c5abb9b34468400bdcdd3ce23595af41ac03cd80 Mon Sep 17 00:00:00 2001 From: "Hansen, Tony (th1395)" Date: Tue, 9 Jun 2020 18:27:12 +0000 Subject: rename typefiles to be consistent with nexus Change-Id: Iebfda41db8225db233d0ff0f41e197d2e4cc0688 Signed-off-by: Hansen, Tony (th1395) Issue-ID: DCAEGEN2-2207 --- k8s/k8splugin_types.yaml | 282 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 282 insertions(+) create mode 100644 k8s/k8splugin_types.yaml (limited to 'k8s/k8splugin_types.yaml') diff --git a/k8s/k8splugin_types.yaml b/k8s/k8splugin_types.yaml new file mode 100644 index 0000000..af50e70 --- /dev/null +++ b/k8s/k8splugin_types.yaml @@ -0,0 +1,282 @@ +# ================================================================================ +# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved. +# Copyright (c) 2020 Pantheon.tech. All rights reserved. +# ================================================================================ +# 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. +# ============LICENSE_END========================================================= +# + +tosca_definitions_version: cloudify_dsl_1_3 + +plugins: + k8s: + executor: 'central_deployment_agent' + package_name: k8splugin + package_version: 3.0.0 + +data_types: + + dcae.types.LoggingInfo: + description: > + Information for setting up centralized logging via ELK using a "sidecar" container. + If 'log_directory' is not provided, the plugin will not set up ELK logging. + (The properties all have to be declared as not required, otherwise the + 'log_info' property on the node would also be required.) + properties: + log_directory: + description: > + The path in the container where the component writes its logs. + If the component is following the EELF requirements, this would be + the directory where the four EELF files are being written. + (Other logs can be placed in the directory--if their names in '.log', + they'll also be sent into ELK.) + type: string + required: false + alternate_fb_path: + description: > + Hope not to use this. By default, the plugin will mount the log volume + at /var/log/onap/ in the sidecar container's file system. + 'alternate_fb_path' allows overriding the default. Will affect how the log + data can be found in the ELK system. + type: string + required: false + + dcae.types.TLSInfo: + description: > + Information for using TLS (HTTPS). (The properties all have to be declared as not + required, otherwise the tls_info property on the node would also be required.) + properties: + cert_directory: + description: > + The path in the container where the component expects to find TLS-related data. + type: string + required: false + use_tls: + description: > + Flag indicating whether TLS (HTTPS) is to be used + type: boolean + required: false + +node_types: + dcae.nodes.ContainerizedComponent: + # Base type for all containerized components + # Captures common properties and interfaces + derived_from: cloudify.nodes.Root + properties: + image: + type: string + description: Full uri of the Docker image + + application_config: + default: {} + description: > + Application configuration for this component. The data structure is + expected to be a complex map (native YAML) and to be constructed and filled + by the creator of the blueprint. + + docker_config: + default: {} + description: > + Copied from the auxiliary portion of the component spec that contains things + like healthcheck definitions for the component. Health checks are + optional. + + resource_config: + default: {} + description: > + This is used to specify the cpu and memory request and limit for container. + Please specify "requests" property and/or a "limits" property, with subproproperties + for cpu and memory. (https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) + + log_info: + type: dcae.types.LoggingInfo + description: > + Information for setting up centralized logging via ELK. + required: false + + tls_info: + type: dcae.types.TLSInfo + description: > + Information for setting up TLS (HTTPS). + required: false + + replicas: + type: integer + description: > + The number of instances of the component that should be launched initially + default: 1 + + always_pull_image: + type: boolean + description: > + Set to true if the orchestrator should always pull a new copy of the image + before deploying. By default the orchestrator pulls only if the image is + not already present on the host where the container is being launched. + default: false + + location_id: + type: string + description: > + The identifier for the location where the component is to be deployed. + If absent, the plugin uses its configured default location, typically the location + where the plugin is running (the central site). Also used to supply a location to + the DMaaP bus controller if the component is being provisioned as a publisher or + subscriber to a DMaaP feed or topic. + required: false + + interfaces: + dcae.interfaces.update: + scale: + implementation: k8s.k8splugin.scale + update_image: + implementation: k8s.k8splugin.update_image + + # The ContainerizedServiceComponent node type is to be used for DCAE service components. + # + # The plugin deploys the component into a Kubernetes cluster with a very specific choice + # of Kubernetes elements that are deliberately not under the control of the blueprint author. + # The idea is to deploy all service components in a consistent way, with the details abstracted + # away from the blueprint author. The plugin is responsible for: + # * Generation of the service component name + # * Managing of service component configuration information + dcae.nodes.ContainerizedServiceComponent: + derived_from: dcae.nodes.ContainerizedComponent + properties: + service_component_type: + type: string + description: Service component type of the application being run in the container + + service_id: + type: string + description: > + Unique id for this DCAE service instance this component belongs to. This value + will be applied as a tag in the registration of this component with Consul. + default: Null + + location_id: + type: string + description: > + Location id of where to run the container. Not used by the plugin. Here for backward compatibility. + default: Null + required: False + + service_component_name_override: + type: string + description: > + Manually override and set the name for this component. If this + is set, then the name will not be auto-generated. Using this feature provides + a service component with a fixed name that's known in advance, but care must be taken + to avoid attempting to deploy two components with the same name. If the component + exposes any ports, the k8s Service created by the plugin will use service_component_name_override + as the DNS host name. + default: Null + + interfaces: + cloudify.interfaces.lifecycle: + create: + # Generate service component name and populate config into Consul + implementation: k8s.k8splugin.create_for_components + start: + # Create k8s entities for the component and start + implementation: k8s.k8splugin.create_and_start_container_for_components + stop: + # Stop and remove k8s entities associated with the component + implementation: k8s.k8splugin.stop_and_remove_container + delete: + # Delete configuration from Consul + implementation: k8s.k8splugin.cleanup_discovery + dcae.interfaces.policy: + # This is to be invoked by the policy handler upon policy updates + policy_update: + implementation: k8s.k8splugin.policy_update + + # This node type is intended for DCAE service components that use DMaaP and must use the + # DMaaP plugin. + dcae.nodes.ContainerizedServiceComponentUsingDmaap: + derived_from: dcae.nodes.ContainerizedServiceComponent + properties: + streams_publishes: + description: > + List of DMaaP streams used for publishing. + + Message router items look like: + + name: topic00 + location: mtc5 + client_role: XXXX + type: message_router + + Data router items look like: + + name: feed00 + location: mtc5 + type: data_router + + This information is forwarded to the dmaap plugin to provision + default: [] + streams_subscribes: + description: > + List of DMaaP streams used for subscribing. + + Message router items look like: + + name: topic00 + location: mtc5 + client_role: XXXX + type: message_router + + Data router items look like: + + name: feed00 + location: mtc5 + type: data_router + username: king + password: 123456 + route: some-path + scheme: https + + Note that username and password is optional. If not provided or null then the + plugin will generate them. + + default: [] + interfaces: + cloudify.interfaces.lifecycle: + create: + # Generate service component name, populate config into Consul, set up runtime properties for DMaaP plugin + implementation: k8s.k8splugin.create_for_components_with_streams + + # ContainerizedApplication is intended to be more of an all-purpose Docker container node + # for non-componentized applications. + dcae.nodes.ContainerizedApplication: + derived_from: cloudify.nodes.Root + properties: + name: + type: string + description: Name of the Docker container to be given + image: + type: string + description: Full uri of the Docker image + interfaces: + cloudify.interfaces.lifecycle: + start: + # Create Docker container and start + implementation: k8s.k8splugin.create_and_start_container + stop: + # Stop and remove Docker container + implementation: k8s.k8splugin.stop_and_remove_container + dcae.interfaces.scale: + scale: + implementation: k8s.k8splugin.scale + dcae.interfaces.update: + update_image: + implementation: k8s.k8splugin.update_image -- cgit 1.2.3-korg