From c790dcb3bbd3c498e0f838837c212ce185e70da5 Mon Sep 17 00:00:00 2001 From: VENKATESH KUMAR Date: Thu, 2 Apr 2020 23:39:28 -0400 Subject: [PATCH] dcae doc cleanup Remove old markdown platform doc Change-Id: I592775a24d17d7d786708cde008703f4d899946c Signed-off-by: VENKATESH KUMAR Issue-ID: DCAEGEN2-1891 Signed-off-by: VENKATESH KUMAR --- docs/sections/release-notes.rst | 43 +- platformdoc/DCAE-DEPLOYMENT-GUIDE-1707.md | 73 ---- platformdoc/Dockerfile | 5 - platformdoc/README.md | 54 --- platformdoc/docs/architecture/pieces.md | 7 - platformdoc/docs/architecture/service-discovery.md | 15 - platformdoc/docs/architecture/services.md | 11 - platformdoc/docs/changelog.md | 19 - .../component-specification/cdap-specification.md | 127 ------ .../common-specification.md | 402 ------------------ .../component-specification/configuration-grid.md | 19 - .../dmaap-connection-objects.md | 169 -------- .../docker-specification.md | 273 ------------- .../component-specification/examples-grid.md | 18 - .../component-specification/streams-grid.md | 60 --- platformdoc/docs/components/component-type-cdap.md | 52 --- .../docs/components/component-type-docker.md | 388 ------------------ platformdoc/docs/components/data-formats.md | 74 ---- .../blueprint-generator/blueprint_generator.rst | 78 ---- platformdoc/docs/components/dcae-cli/commands.md | 453 --------------------- platformdoc/docs/components/dcae-cli/quickstart.md | 110 ----- .../docs/components/dcae-cli/walkthrough.md | 340 ---------------- platformdoc/docs/components/intro.md | 48 --- platformdoc/docs/concepts/clamp.md | 8 - platformdoc/docs/concepts/dti.md | 10 - platformdoc/docs/concepts/on_sd.md | 52 --- platformdoc/docs/concepts/policy.md | 8 - platformdoc/docs/concepts/service-designer.md | 8 - platformdoc/docs/glossary.md | 107 ----- platformdoc/docs/images/IO.graffle | Bin 2748 -> 0 bytes platformdoc/docs/images/dftool1.png | Bin 54864 -> 0 bytes platformdoc/docs/images/dftool2.png | Bin 35795 -> 0 bytes platformdoc/docs/images/dmd vision.graffle | Bin 4041 -> 0 bytes platformdoc/docs/images/dmdvision.png | Bin 200850 -> 0 bytes platformdoc/docs/images/io.png | Bin 131383 -> 0 bytes platformdoc/docs/index.md | 49 --- platformdoc/mkdocs.yml | 39 -- 37 files changed, 12 insertions(+), 3107 deletions(-) delete mode 100644 platformdoc/DCAE-DEPLOYMENT-GUIDE-1707.md delete mode 100644 platformdoc/Dockerfile delete mode 100644 platformdoc/README.md delete mode 100644 platformdoc/docs/architecture/pieces.md delete mode 100644 platformdoc/docs/architecture/service-discovery.md delete mode 100644 platformdoc/docs/architecture/services.md delete mode 100644 platformdoc/docs/changelog.md delete mode 100644 platformdoc/docs/components/component-specification/cdap-specification.md delete mode 100644 platformdoc/docs/components/component-specification/common-specification.md delete mode 100644 platformdoc/docs/components/component-specification/configuration-grid.md delete mode 100644 platformdoc/docs/components/component-specification/dmaap-connection-objects.md delete mode 100644 platformdoc/docs/components/component-specification/docker-specification.md delete mode 100644 platformdoc/docs/components/component-specification/examples-grid.md delete mode 100644 platformdoc/docs/components/component-specification/streams-grid.md delete mode 100644 platformdoc/docs/components/component-type-cdap.md delete mode 100644 platformdoc/docs/components/component-type-docker.md delete mode 100644 platformdoc/docs/components/data-formats.md delete mode 100644 platformdoc/docs/components/dcae-cli/blueprint-generator/blueprint_generator.rst delete mode 100644 platformdoc/docs/components/dcae-cli/commands.md delete mode 100644 platformdoc/docs/components/dcae-cli/quickstart.md delete mode 100644 platformdoc/docs/components/dcae-cli/walkthrough.md delete mode 100644 platformdoc/docs/components/intro.md delete mode 100644 platformdoc/docs/concepts/clamp.md delete mode 100644 platformdoc/docs/concepts/dti.md delete mode 100644 platformdoc/docs/concepts/on_sd.md delete mode 100644 platformdoc/docs/concepts/policy.md delete mode 100644 platformdoc/docs/concepts/service-designer.md delete mode 100644 platformdoc/docs/glossary.md delete mode 100644 platformdoc/docs/images/IO.graffle delete mode 100755 platformdoc/docs/images/dftool1.png delete mode 100755 platformdoc/docs/images/dftool2.png delete mode 100644 platformdoc/docs/images/dmd vision.graffle delete mode 100644 platformdoc/docs/images/dmdvision.png delete mode 100644 platformdoc/docs/images/io.png delete mode 100644 platformdoc/docs/index.md delete mode 100644 platformdoc/mkdocs.yml diff --git a/docs/sections/release-notes.rst b/docs/sections/release-notes.rst index 2157b932..4c3b6744 100644 --- a/docs/sections/release-notes.rst +++ b/docs/sections/release-notes.rst @@ -28,7 +28,7 @@ DCAE R6 improves upon previous release with the following new features: - DataLake Handlers - Analytics/RCA - TCA-GEN2 -- Acumos Adapter (PoC) + - Acumos Adapter (PoC) Following is complete list of DCAE components available part of default ONAP/DCAE installation. - Platform components @@ -54,6 +54,17 @@ Following is complete list of DCAE components available part of default ONAP/DCA - Redis Cluster Database - Consul Cluster +Following are service components (mS) which can be deployed on-demand + - SNMPTrap Collector + - RESTConf Collector + - DataFile Collector + - PM-Mapper + - BBS-EventProcessor + - VES Mapper + - Heartbeat mS + - SON-Handler + - PM-Subscription Handler + Notes: \* These components are delivered by the Holmes project. @@ -65,36 +76,6 @@ Under OOM (Kubernetes) deployment all DCAE component containers are deployed as - All DCAE components are designed to support platform maturity requirements. -**Source Code** - -Source code of DCAE components are released under the following repositories on gerrit.onap.org: - - dcaegen2 - - dcaegen2.analytics.tca - - dcaegen2.collectors.snmptrap - - dcaegen2.collectors.ves - - dcaegen2.collectors.hv-ves - - dcaegen2.collectors.datafile - - dcaegen2.collectors.restconf - - dcaegen2.deployments - - dcaegen2.platform.blueprints - - dcaegen2.platform.cli - - dcaegen2.platform.configbinding - - dcaegen2.platform.deployment-handler - - dcaegen2.platform.inventory-api - - dcaegen2.platform.plugins - - dcaegen2.platform.policy-handler - - dcaegen2.platform.servicechange-handler - - dcaegen2.services.heartbeat - - dcaegen2.services.mapper - - dcaegen2.services.pm-mapper - - dcaegen2.services.prh - - dcaegen2.services.son-handler - - dcaegen2.services - - dcaegen2.services.sdk - - dcaegen2.utils - - ccsdk.platform.plugins - - ccsdk.dashboard - **Bug Fixes** **Known Issues** diff --git a/platformdoc/DCAE-DEPLOYMENT-GUIDE-1707.md b/platformdoc/DCAE-DEPLOYMENT-GUIDE-1707.md deleted file mode 100644 index 415fb2b6..00000000 --- a/platformdoc/DCAE-DEPLOYMENT-GUIDE-1707.md +++ /dev/null @@ -1,73 +0,0 @@ -### DCAE Controller - Deployment Guide 1707 - -#### 1) Download latest deployer tar file to your cloudify bootstrap/cli server. - -Say, your working directory is ${WORKING-DIR} -```` -cd ${WORKING-DIR} -$ wget http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.ecompcntr/opstools/dcae-deployer-5.0.tar -$ tar -xvf dcae-deployer-5.0.tar -$ cd ${WORKING-DIR}/dcae-deployer -```` -#### 2) Clone the auto generated inputs files from code cloud and save it in -```` -$ git clone ssh://@codecloud.web.att.com:7999/st_dcae/com.att.ecomp.dcae.operational.staging.ftl.git - -```` -#### 3) Clone the latest consulAgent.sh -```` -$ git clone ssh://git@codecloud.web.att.com:7999/st_ecompcntr/platform_installation.git -NOTE: consulAgent.sh will be inside ec-deployer-v2.5.1/ec-deployer/bin -```` -#### 4) Update app-inputs.conf with user defined values -```` -$ cd ${WORKING-DIR}/dcae-deployer/conf -$ vi app-inputs.conf - - -- Update the following values - - * CLOUDIFY_INPUT= - e.g. /home/attcloud/dcae/dcae-deployer/testing/1710-FTL3/cloudify-gen/inputs/bootstrap/bootstrap/rdm5adcc1/inputs.json - * CONSUL_INPUT= - e.g. /home/attcloud/dcae/dcae-deployer/testing/1710-FTL3/cloudify-gen/inputs/consul/consul/rdm5adcc1/inputs.json - * CONSUL_BLUEPRINT= - - git clone ssh://git@codecloud.web.att.com:7999/st_ecompcntr/blueprints.git - e.g. /home/attcloud/blueprints/serviceConfigRegistry/blueprint/consul.yaml - Note: consul.yaml will be inside blueprints/serviceConfigRegistry/blueprint - * OPENSTACK_KEYFILE= - e.g. '/home/attcloud/dcae-m82823u.pem' - * OPENSTACK_KEY= - e.g. 'dcae-m82823' - * CLOUDIFY_USERNAME= - * CLOUDIFY_PASSWORD= - * CONSUL_AGENT= - e.g. /home/attcloud/dcae/dcae-deployer/bin/install/bin/consulAgent.sh - * LOCATION= - -Save the file and exit!! -```` -#### 3) Run the ./deploy.sh script for building entire environment. (This includes, spinning up cloudify manager VM, bootstrapping cloudify manager, and deploying consul blueprint) -```` -##### Option-1: Just bootstrapping cloudify manager on new VM - Note: This will instantiate a new VM and will bootstrap it with cloudify 3.4.0 - $ ./deploy.sh --action bootstrap -```` -```` -##### Option-2: Bootstrap cloudify manager on existing centOS VM - Note : This will bootstrap the provide IP-ADDRESS with the cloudify 3.4.0 - $ ./deploy.sh --action bootstrap --cloudify-ip -```` -```` -##### Option-3: Teardown cloudify manager - Note: This will tear down the cloudify from the provided IP-ADDRESS but will not remove the VM - $ ./deploy.sh --action teardown --cloudify-ip -```` -```` -##### Option-4: Deploy consul - Note: This will deploy the consul on provided IP-ADDRESS and will instantiate 3 new VMs - $ ./deploy.sh --action deploy --cloudify-ip --component consul -```` -```` -##### Option-5: Undeploy consul - Note : This will undeploy the consul from the provide IP-ADDRESS and will remove the 3 VMs - $ ./deploy.sh --action undeploy --cloudify-ip --component consul -```` \ No newline at end of file diff --git a/platformdoc/Dockerfile b/platformdoc/Dockerfile deleted file mode 100644 index 3a87fa37..00000000 --- a/platformdoc/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM nginx:1.11.8 - -# Copies all files into the default directory nginx serves from -# See /etc/nginx/conf.d/default.conf -COPY site /usr/share/nginx/html diff --git a/platformdoc/README.md b/platformdoc/README.md deleted file mode 100644 index 8c4c5996..00000000 --- a/platformdoc/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# dcae-platform-documentation - -Contains the public facing technical documentation for the dcae platform whose audiences include: - -* Architects -* Component developers -* Operations (TBD) - -## Usage - -### Local dev - -This is a [Mkdocs](http://www.mkdocs.org/) project. To serve a local version of the documentation to view your changes: - -1. Install mkdocs and mkdocs-material: - - ``` - pip install mkdocs - pip install mkdocs-material - ``` - -2. Clone this repo - -3. Run the following at the root of the cloned repo: - - ``` - mkdocs serve - ``` -4. View the page at `http://127.0.0.1:8000/` - -### Publish - -1. Generate the site: - - ``` - mkdocs build - ``` - -2. Build the Docker image, tag as desired - eg `dcae-platform-documentation:YYYYMMDD` - - ``` - docker build -t dcae-platform-documentation:20171002 . - ``` - -3. Run the Docker container: - - ``` - export DOCKER_HOST=tcp:// - docker stop dpd - docker rm -f dpd - docker run -d --name dpd -p 80:80 dcae-platform-documentation:YYYYMMDD - ``` - -Or email Patty Heffner (ph8547@att.com) diff --git a/platformdoc/docs/architecture/pieces.md b/platformdoc/docs/architecture/pieces.md deleted file mode 100644 index 7787359f..00000000 --- a/platformdoc/docs/architecture/pieces.md +++ /dev/null @@ -1,7 +0,0 @@ -# Platform technologies - -* [Cloudify](http://getcloudify.org/) -* [Consul](https://www.consul.io/) -* [Docker](https://www.docker.com/) -* [CDAP](https://cdap.io/) -* [Registrator](https://github.com/gliderlabs/registrator) diff --git a/platformdoc/docs/architecture/service-discovery.md b/platformdoc/docs/architecture/service-discovery.md deleted file mode 100644 index 9831efcf..00000000 --- a/platformdoc/docs/architecture/service-discovery.md +++ /dev/null @@ -1,15 +0,0 @@ -# Service Discovery - -Service discovery is an architecture pattern used for components (micro-services) to locate each other. The DCAE platform uses [server-side discovery](http://microservices.io/patterns/server-side-discovery.html) and is using [Consul](https://www.consul.io/) as the service registry solution. - -## Service Registration - -All components are required to register with Consul in order to be discovered. There are two methods of registration: self and 3rd party. The DCAE platform uses 3rd party registration which means components don't actually make the registration calls but defers that responsibility to a platform service. - -### Implementation for Docker - -[Registrator](http://gliderlabs.com/registrator/latest/) is an open source application that is responsible for registering all components that run as Docker containers. Registrator watches the local Docker engine's activity log and will register and unregister a Docker container when the container is started and stopped. - -### Implementation for CDAP - -The CDAP broker is a REST web service that is responsible for registering all components that run as CDAP applications. diff --git a/platformdoc/docs/architecture/services.md b/platformdoc/docs/architecture/services.md deleted file mode 100644 index f17f563b..00000000 --- a/platformdoc/docs/architecture/services.md +++ /dev/null @@ -1,11 +0,0 @@ -# 'Services' Overview - -DCAE Services run on the DCAE platform. A service either monitors the virtualized network services or does analytics. A service is composed of one or more components, and performs a business need. - -Services are created in a 'Service Design and Creation' tool called 'Service Assurance Flow Designer' by a Service Designer. This is done by - -* 'compose'ing a service from the available SDC catalog components (actually from the TOSCA models representing the components), then -* 'submit'ing the service, which generates a Cloudify blueprint, which is then automatically uploaded to INVENTORY, and then deployed by DEPLOYMENT HANDLER (and CLOUDIFY) (once a DTI Event is triggered for the service). It should be noted that some service flows, specifally 'closed-loop' flows, are not initiated by DTI, but are done by CLAMP. - -Only a few services are supported in SDC so far, and therefore steps above are done manually by the Onboarding Team for most services. - diff --git a/platformdoc/docs/changelog.md b/platformdoc/docs/changelog.md deleted file mode 100644 index fbd7524a..00000000 --- a/platformdoc/docs/changelog.md +++ /dev/null @@ -1,19 +0,0 @@ -# DCAE Platform Documentation Change Log - -## Versions - -Version | Date Built | ----- | ----- | -Current | 12/20/2017 -Previous | 11/30/2017 - -## Change Log - -Date | Changes | ----- | ----- | -12/20/2017 | updated for DTI, made corrections, add example component spec, added to concept, walkthrough section -11/30/2017 | updated for comments, updated configuration grid, added information about DTI development and configuration, updated Auxilary section, new component_properties section added to component spec, updated component jsonschema for DTI, this creates a new version - v4. (In order to utilize the new schema version, a dcae_cli --reinit needs to be done) -11/14/2017 | added ChangeLog, revised site outline, updated glossary, added dcae_cli commands section detailing each command, added various notes, added specific environment profiles for 1710 and 1802, made major revisions on many pages, added several concepts, added more detailed steps to walk-thru section, added more details about Dmaap Connection Object -10/03/2017 | added configuration grid and examples grid, updated common, cdap and docker specifications, and cdap and docker requirements pages. -09/28/2017 | added streams grid and services page, updated index, overview, and common spec pages - diff --git a/platformdoc/docs/components/component-specification/cdap-specification.md b/platformdoc/docs/components/component-specification/cdap-specification.md deleted file mode 100644 index ce17d811..00000000 --- a/platformdoc/docs/components/component-specification/cdap-specification.md +++ /dev/null @@ -1,127 +0,0 @@ -# Component specification (CDAP) - -The CDAP component specification contains the following groups of information. Many of these are common to both CDAP and Docker components and are therefore described in the common specification. - -* [Metadata](common-specification.md#metadata) -* [Interfaces](common-specification.md#interfaces) including the associated [Data Formats](/components/data-formats.md) -* [Parameters](#parameters) - for specifying parameters in your AppConfig, AppPreferences, and ProgramPreferences to the Designer and Policy. This of course is CDAP-specific and is described below. -* [Auxiliary Details](#auxiliary-details) -* [List of artifacts](common-specification.md#artifacts) - - -## Current Limitations and TODOs - -* The integration of DMD is likely to significantly change the [Interfaces](common-specification.md#interfaces) section in this specification.. - -## Parameters - -There is a `parameters` section in your component specification. This section contains three optional keys: [app_config](#appconfig), [app_preferences](#apppreferences), and [program_preferences](#programpreferences): -``` -"parameters" : { - "app_config" : [ ...], - "app_preferences" : [ ...], - "program_preferences" : [...] - // any additional keys are ignored -} -``` - -* Each section details the parameters that are a part of each of these CDAP constructs (see below). -* All such parameters will be exposed to the designer and to policy for override. -* These parameters should have default values specified by the component developer where necessary, i.e., parameters that _must_ come from the designer/policy should not have defaults. -* All of these keys are optional because not every CDAP application uses preferences and not every application uses the AppConfig. However, you should specify at least one, or else your application will have no parameters exposed to policy or to the DCAE designer, which means it would be non-configurable. -* Despite the AppConfig being optional to *specify* in the case that you have no parameters in your AppConfig, it is *required for processing* in your application. That is because the DCAE platform will place important information into your AppConfig as discussed below. - -### Parameter - -The following CDAP specific definitions use `param1` to refer to the common parameter layout in [Parameter](common-specification.md#parameters) - -### AppConfig - -The `app_config` key refers to the [CDAP AppConfig](http://docs.cask.co/cdap/current/en/reference-manual/http-restful-api/configuration.html). It is expected to be a JSON: -``` -"app_config" : [ // list of JSON - param1, // common parameter layout - ... -] -``` -Unfortunately, at the time of writing, the AppConfig is a Java map of `string:string`, which means you cannot have more complex structures (than string) as any value in your AppConfig. However, there is a way to bypass this constraint: you can pass a JSON by encoding the JSON as a string. E.g., the `json.dumps()` and it's converse `loads` methods in Python: -``` ->>> import json ->>> json.dumps({"foo" : "bar"}) # This is a real JSON -'{"foo": "bar"}' # It is now a string: pass this in as your parameter value ->>> json.loads('{"foo": "bar"}') # Do the equivelent of this in your application -{u'foo': u'bar'} # ...and you'll get back a real JSON ->>> -``` - -The final AppConfig (after the designer and policy override parameter values) is passed into CDAP's AppConfig API when starting the application. - -### AppPreferences - -In addition to the CDAP AppConfig, the platform supports [Application Preferences](http://docs.cask.co/cdap/current/en/reference-manual/http-restful-api/preferences.html#set-preferences). -The format of the `app_preferences` value is the same as the above: -``` -"app_preferences" : [ // list of JSON - param1, // common parameter layout - ... -] -``` - -The final Application Preferences JSON (after the designer and policy override parameter values) is passed into CDAP's Preferences API when starting your application. - -### ProgramPreferences - -Preferences can also be specified [per program](http://docs.cask.co/cdap/current/en/reference-manual/http-restful-api/lifecycle.html#program-lifecycle) in CDAP. This key's value is a list of JSON with the following format: -``` -"program_preferences" : [ // note: this is a list of JSON - { - "program_id" : "program name 1", // the name of this CDAP program - "program_type" : "e.g., flows", // "must be one of flows, mapreduce, schedules, spark, workflows, workers, or services", - "program_pref" : [ // list of JSON - param1, // common parameter layout - ... - ] - }, - // repeat for each program that receives a program_preferences JSON -] -``` -Each `program_pref` JSON is passed into the CDAP API as the preference for `program_id`. - - -NOTE: for CDAP, this section is very likely to change when DMD is available. -The _future_ vision is that you would publish your data as a series of files on HDFS, and DMD will pick them up and send them to the appropriate DMaaP feeds or directly when needed. - -## Auxiliary Details - -`auxiliary` contains details about CDAP specific parameters. - -Property Name | Type | Description -------------- | ---- | ----------- -streamname | string | *Required*. -artifact_name | string | -artifact_version | string | the version of your CDAP JAR artifact -namespace | string | the CDAP namespace to deploy into, default is 'default' -programs | array | contains each CDAP entity represented in the artifact -program_type | string | CDAP entity (eg "flows") -program_id | string | name of CDAP entity (eg "WhoFlow") - -Example: - -```json -"auxiliary": { - "streamname" : "who", - "artifact_name" : "HelloWorld", - "artifact_version" : "3.4.3", - "namespace" : "hw", - "programs" : [ - {"program_type" : "flows", "program_id" : "WhoFlow"}, - {"program_type" : "services", "program_id" : "Greeting"}, - ... - ], -} -``` -The `programs` key is identical to the `program_preferences` key discussed [above](#programpreferences) except: - -* each JSON in the list does not contain `program_pref` -* this is required! You must include all of your programs in this, as it is used to start each program as well as for DCAE to perform periodic healthchecks on your application. Don't forget about your services; they are programs too. - diff --git a/platformdoc/docs/components/component-specification/common-specification.md b/platformdoc/docs/components/component-specification/common-specification.md deleted file mode 100644 index 14c1297c..00000000 --- a/platformdoc/docs/components/component-specification/common-specification.md +++ /dev/null @@ -1,402 +0,0 @@ -# Common Elements of the Component Specification - -This page describes the component specification (JSON) sections that are common to both Docker and CDAP components. Differences for each are pointed out below. Elements that are very different, and described in the CDAP or Docker specific pages. - -## Meta Schema Definition - -The component specification is represented (and validated) against this -[Component Spec json schema](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/component-json-schemas/browse/component-spec-schema.json) and described below: - -The "Meta Schema" implementation defines how component specification JSON schemas can be written to define user input. It is itself a JSON schema (thus it is a "meta schema"). It requires the name of the component entry, component type (either 'cdap' or 'docker') and a description under "self" object. The meta schema version must be specified as the value of the "version" key. Then the input schema itself is described. - -The table below shows the four types of schema descriptions supported -There are four types of schema descriptions objects - jsonschema for inline standard JSON Schema definitions of JSON inputs, delimitedschema for delimited data input using a JSON description defined by AT&T, unstructured for unstructured text, and reference that allows a pointer to another artifact for a schema. The reference allows for XML schema, but can be used as a pointer to JSON, Delimited Format, and Unstructured schemas as well. - -## Component Metadata -Metadata refers to the properties found under the `self` JSON. This group of properties is used to uniquely identify this component specification and identify the component that this specification is used to capture. - -Example: - -``` -"self": { - "version": "1.0.0", - "name": "asimov.component.kpi_anomaly", - "description": "Classifies VNF KPI data as anomalous", - "component_type": "docker" -}, -``` - -`self` Schema: - -Property Name | Type | Description -------------- | ---- | ----------- -version | string | *Required*. Semantic version for this specification -name | string | *Required*. Full name of this component which is also used as this component's catalog id. -description | string | *Required*. Human-readable text describing the component and the components functional purpose. -component_type | string | *Required*. Identify what containerization technology this component uses: `docker` or `cdap`. - -## Interfaces -Interfaces are the JSON objects found under the `streams` key and the `services` key. These are used to describe the interfaces that the component uses and the interfaces that the component provides. The description of each interface includes the associated [data format](/components/data-formats.md). - -### Streams - * The `streams` JSON is for specifying data produced for consumption by other components, and the streams expected to subscribe to that is produced by other components. These are "fire and forget" type interfaces where the publisher of a stream does not expect or parse a response from the subscriber. -* The term `stream` here is abstract and neither refers to "CDAP streams" or "DMaaP feeds". While a stream is very likely a DMaaP feed, it could be a direct stream of data being routed via HTTP too. It abstractly refers to a sequence of data leaving a publisher. -* Streams have anonymous publish/subscribe semantics, which decouples the production of information from its consumption. -Like the component specification, the data format specification is represented/validated against this -[Data Format json schema](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/component-json-schemas/browse/data-format-schema.json) - -* In general, components are not aware of who they are communicating with. -* Instead, components that are interested in data, subscribe to the relevant stream; components that generate data publish to the relevant stream. -* There can be multiple publishers and subscribers to a stream. Streams are intended for unidirectional, streaming communication. - - -Streams interfaces that implement an HTTP endpoint must support POST. - -Streams are split into: - -Property Name | Type | Description -------------- | ---- | ----------- -subscribes | JSON list | *Required*. List of all available stream interfaces that this component has that can be used for subscribing -publishes | JSON list | *Required*. List of all stream interfaces that this component will publish onto - -#### Subscribes - -Example: - -```json -"streams": { - "subscribes": [{ - "format": "dcae.vnf.kpi", - "version": "1.0.0", - "route": "/data", // for CDAP this value is not used - "type": "http" - }], -... -} -``` - -This describes that `asimov.component.kpi_anomaly` exposes an HTTP endpoint called `/data` which accepts requests that have the data format of `dcae.vnf.kpi` version `1.0.0`. - -`subscribes` Schema: - -Property Name | Type | Description -------------- | ---- | ----------- -format | string | *Required*. Data format id of the data format that is used by this interface -version | string | *Required*. Data format version of the data format that is used by this interface -route | string | *Required for HTTP and data router*. The HTTP route that this interface listens on -config_key | string | *Required for message_router and data router*. The HTTP route that this interface listens on -type | string | *Required*. Type of stream: `http`, `message_router`, `data_router` - - -##### Message router - -Message router subscribers are http clients rather than http services and performs a http a `GET` call. Thus, message router subscribers description is structured like message router publishers and requires `config_key`: - -```json -"streams": { - "subscribes": [{ - "format": "dcae.some-format", - "version": "1.0.0", - "config_key": "some_format_handle", - "type": "message router" - }], -... -} -``` - -##### Data router - -Data router subscribers are http or https services that handle `PUT` requests from data router. Developers must provide the `route` or url path/endpoint that is expected to handle data router requests. This will be used to construct the delivery url needed to register the subscriber to the provisioned feed. Developers must also provide a `config_key` because there is dynamic configuration information associated with the feed that the application will need e.g. username and password. See the page on [DMaaP connection objects](/components/component-specification/dmaap-connection-objects/#data-router) for more details on the configuration information. - -Example (not tied to the larger example): - -```json -"streams": { - "subscribes": [{ - "config_key": "some-sub-dr", - "format": "sandbox.platform.any", - "route": "/identity", - "type": "data_router", - "version": "0.1.0" - }], -... -} -``` - -#### Publishes - -Example: - -```json -"streams": { -... - "publishes": [{ - "format": "asimov.format.integerClassification", - "version": "1.0.0", - "config_key": "prediction", - "type": "http" - }] -}, - -``` - -This describes that `asimov.component.kpi_anomaly` publishes by making POST requests to streams that support the data format `asimov.format.integerClassification` version `1.0.0`. - -`publishes` Schema: - -Property Name | Type | Description -------------- | ---- | ----------- -format | string | *Required*. Data format id of the data format that is used by this interface -version | string | *Required*. Data format version of the data format that is used by this interface -config_key | string | *Required*. The JSON key in the generated application configuration that will be used to pass the downstream component's (the subscriber's) connection information. -type | string | *Required*. Type of stream: `http`, `message router`, `data router` - -##### Message router - -Message router publishers are http clients of DMaap message_router. Developers must provide a `config_key` because there is dynamic configuration information associated with the feed that the application needs to receive e.g. topic url, username, password. See the page on [DMaaP connection objects](/components/component-specification/dmaap-connection-objects/#message-router) for more details on the configuration information. - -Example (not tied to the larger example): - -```json -"streams": { -... - "publishes": [{ - "config_key": "some-pub-mr", - "format": "sandbox.platform.any", - "type": "message_router", - "version": "0.1.0" - }] -} -``` - -##### Data router - -Data router publishers are http clients that make `PUT` requests to data router. Developers must also provide a `config_key` because there is dynamic configuration information associated with the feed that the application will need to receive e.g. publish url, username, password. See the page on [DMaaP connection objects](/components/component-specification/dmaap-connection-objects/#data-router) for more details on the configuration information. - -Example (not tied to the larger example): - -```json -"streams": { -... - "publishes": [{ - "config_key": "some-pub-dr", - "format": "sandbox.platform.any", - "type": "data_router", - "version": "0.1.0" - }] -} -``` - -#### Quick Reference - -Refer to this [Quick Reference](/components/component-specification/streams-grid.md) for a comparison of the Streams 'Publishes' and 'Subscribes' sections. - - -### Services - -* The publish / subscribe model is a very flexible communication paradigm, but its many-to-many one-way transport is not appropriate for RPC -request / reply interactions, which are often required in a distributed system. -* Request / reply is done via a Service, which is defined by a pair of messages: one for the request and one for the reply. - -Services are split into: - -Property Name | Type | Description -------------- | ---- | ----------- -calls | JSON list | *Required*. List of all service interfaces that this component will call -provides | JSON list | *Required*. List of all service interfaces that this component exposes and provides - -#### Calls -The JSON `services/calls` is for specifying that the component relies on an HTTP(S) service---the component sends that service an HTTP request, and that service responds with an HTTP reply. -An example of this is how string matching (SM) depends on the AAI Broker. SM performs a synchronous REST call to the AAI broker, providing it the VMNAME of the VNF, and the AAI Broker responds with additional details about the VNF. This dependency is expressed via `services/calls`. In contrast, the output of string matching (the alerts it computes) is sent directly to policy as a fire-and-forget interface, so that is an example of a `stream`. - -Example: - -```json -"services": { - "calls": [{ - "config_key": "vnf-db", - "request": { - "format": "dcae.vnf.meta", - "version": "1.0.0" - }, - "response": { - "format": "dcae.vnf.kpi", - "version": "1.0.0" - } - }], -... -} -``` - -This describes that `asimov.component.kpi_anomaly` will make HTTP calls to a downstream component that accepts requests of data format `dcae.vnf.meta` version `1.0.0` and is expecting the response to be `dcae.vnf.kpi` version `1.0.0`. - -`calls` Schema: - -Property Name | Type | Description -------------- | ---- | ----------- -request | JSON object | *Required*. Description of the expected request for this downstream interface -response | JSON object | *Required*. Description of the expected response for this downstream interface -config_key | string | *Required*. The JSON key in the generated application configuration that will be used to pass the downstream component connection information. - -The JSON object schema for both `request` and `response`: - -Property Name | Type | Description -------------- | ---- | ----------- -format | string | *Required*. Data format id of the data format that is used by this interface -version | string | *Required*. Data format version of the data format that is used by this interface - -#### Provides - -Example: - -```json -"services": { -... - "provides": [{ - "route": "/score-vnf", - "request": { - "format": "dcae.vnf.meta", - "version": "1.0.0" - }, - "response": { - "format": "asimov.format.integerClassification", - "version": "1.0.0" - } - }] -}, -``` - -This describes that `asimov.component.kpi_anomaly` provides a service interface and it is exposed on the `/score-vnf` HTTP endpoint. The endpoint accepts requests that have the data format `dcae.vnf.meta` version `1.0.0` and gives back a response of `asimov.format.integerClassification` version `1.0.0`. - -`provides` Schema for a Docker component: - -Property Name | Type | Description -------------- | ---- | ----------- -request | JSON object | *Required*. Description of the expected request for this interface -response | JSON object | *Required*. Description of the expected response for this interface -route | string | *Required*. The HTTP route that this interface listens on - -The JSON object schema for both `request` and `response`: - -Property Name | Type | Description -------------- | ---- | ----------- -format | string | *Required*. Data format id of the data format that is used by this interface -version | string | *Required*. Data format version of the data format that is used by this interface - -Note, for CDAP, there is a slight variation due to the way CDAP exposes services: -``` - "provides":[ // note this is a list of JSON - { - "request":{ ...}, - "response":{ ...}, - "service_name":"name CDAP service", - "service_endpoint":"greet", // E.g the URL is /services/service_name/methods/service_endpoint - "verb":"GET" // GET, PUT, or POST - } - ] -``` - -`provides` Schema for a CDAP component: - -Property Name | Type | Description -------------- | ---- | ----------- -request | JSON object | *Required*. Description of the expected request data format for this interface -response | JSON object | *Required*. Description of the expected response for this interface -service_name | string | *Required*. The CDAP service name (eg "Greeting") -service_endpoint | string | *Required*. The CDAP service endpoint for this service_name (eg "/greet") -verb | string | *Required*. 'GET', 'PUT' or 'POST' - - -## Parameters - -`parameters` is where to specify the component's application configuration parameters that are not connection information. - -Property Name | Type | Description -------------- | ---- | ----------- -parameters | JSON array | Each entry is a parameter object - -Parameter object has the following available properties: - -Property Name | Type | Description | Default -------------- | ---- | ----------- | ------- -name | string | *Required*. The property name that will be used as the key in the generated config | -value | any | *Required*. The default value for the given parameter | -description | string | *Required*. Human-readable text describing the parameter like what its for | -type | string | The required data type for the parameter | -required | boolean | An optional key that declares a parameter as required (true) or not (false) | true -constraints | array | The optional list of sequenced constraint clauses for the parameter. See below | -entry_schema | string | The optional key that is used to declare the name of the Datatype definition for entries of set types such as the TOSCA 'list' or 'map'. Only 1 level is supported at this time | -designer_editable | boolean | An optional key that declares a parameter to be editable by designer (true) or not (false) | -sourced_at_deployment | boolean | An optional key that declares a parameter's value to be assigned at deployment time (true) | -policy_editable | boolean | An optional key that declares a parameter to be editable by policy (true) or not (false) | -policy_schema | array | The optional list of schema definitions used for policy. See below | - -Example: - -```json -"parameters": [ - { - "name": "threshold", - "value": 0.75, - "description": "Probability threshold to exceed to be anomalous" - } -] -``` - -Many of the parameter properties have been copied from TOSCA model property definitions and are to be used for service design composition and policy creation. See [section 3.5.8 *Property definition*](http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.1/TOSCA-Simple-Profile-YAML-v1.1.html). - -The property `constraints` is a list of objects where each constraint object: - -Property Name | Type | Description -------------- | ---- | ----------- -equal | | Constrains a property or parameter to a value equal to (‘=’) the value declared -greater_than | number | Constrains a property or parameter to a value greater than (‘>’) the value declared -greater_or_equal | number | Constrains a property or parameter to a value greater than or equal to (‘>=’) the value declared -less_than | number | Constrains a property or parameter to a value less than (‘<’) the value declared -less_or_equal | number | Constrains a property or parameter to a value less than or equal to (‘<=’) the value declared -valid_values | array | Constrains a property or parameter to a value that is in the list of declared values -length | number | Constrains the property or parameter to a value of a given length -min_length | number | Constrains the property or parameter to a value to a minimum length -max_length | number | Constrains the property or parameter to a value to a maximum length - -`threshold` is the configuration parameter and will get set to 0.75 when the configuration gets generated. - -The property `policy_schema` is a list of objects where each policy_schema object: - -Property Name | Type | Description | Default -------------- | ---- | ----------- | ------- -name | string | *Required*. parameter name -value | string | default value for the parameter -description | string | parameter description -type | enum | *Required*. data type of the parameter, 'string', 'number', 'boolean', 'datetime', 'list', or 'map' -required | boolean | is parameter required or not? | true -constraints | array | The optional list of sequenced constraint clauses for the parameter. See above | -entry_schema | string | The optional key that is used to declare the name of the Datatype definition for certain types. entry_schema must be defined when the type is either list or map. If the type is list and the entry type is a simple type (string, number, bookean, datetime), follow with an string to describe the entry | -| | If the type is list and the entry type is a map, follow with an array to describe the keys for the entry map | -| | If the type is list and the entry type is a list, that is not currently supported -| | If the type is map, follow with an aray to describe the keys for the map | - -## Generated Application Configuration - -The Platform generates configuration for the component (based on the component spec) at deployment time. The generated application configuration will be made up of the Parameters, Streams, and Services sections, after any provisioning for streams and services. The component developer can see what this configuration will look like by reviewing the [component dev command](/components/dcae_cli/commands/#run-the-dev-command). - -## Artifacts - -`artifacts` contains a list of artifacts associated with this component. For Docker, this is the full path (including the registry) to the Docker image. For CDAP, this is the full path to the CDAP jar. - -Property Name | Type | Description -------------- | ---- | ----------- -artifacts | JSON array | Each entry is a artifact object - -`artifact` Schema: - -Property Name | Type | Description -------------- | ---- | ----------- -uri | string | *Required*. Uri to the artifact, full path -type | string | *Required*. `docker image` or `jar` - -# Working with Component Specs - -Components can be added to the onboarding catalog (which first validates the component spec) by using the [dcae_cli Tool](http://dcae-platform.research.att.com/components/dcae-cli/quickstart/). Here you can also list the components, show the contents of a component, publish the component, validate the generated configuration for the component, deploy (run) and undeploy the component. For a list of these capabilities, see [Component Commands](/components/dcae-cli/commands/#component). - - diff --git a/platformdoc/docs/components/component-specification/configuration-grid.md b/platformdoc/docs/components/component-specification/configuration-grid.md deleted file mode 100644 index e1154218..00000000 --- a/platformdoc/docs/components/component-specification/configuration-grid.md +++ /dev/null @@ -1,19 +0,0 @@ - -# Configuration Quick Reference - -#### Default Values - -The component developer can provide default values for any `parameter` in the component specification. These defaults will be passed to the component in its generated configuration. - -#### Overridden/Entered Values - -Depending on the other properties set for the parameter, the default value can be overridden at 'design-time', 'deploy-time' or once the microservice is running ('run-time'). -(*In the future, when Policy is supported, configuration will also be able to be provided/changed in the Policy UI at any time).* - -||Design-Time Input |CLAMP Input|Policy Input (future) |Deploy-Time Input|Run-Time Input (DTI)| -|-----|-----|-----|-----|----------|----------| -|Description|Applies to SDC self-service components|Applies to components deployed by CLAMP |(not yet supported)|Applies to manually deployed services| Applies to components supporting DTI reconfiguration| -|Input provided by|Service Designer|CLAMP|Operations|DevOps|Runtime Platform(DTI)| -|How it is provided |In the SDC UI |In the CLAMP UI |In the POLICY GUI |In the DCAE Dashboard (or Jenkins job)|In the DTI Event -|Component Specification Details|‘designer-editable’ set to ‘true’| None. Developer provides CLAMP an email with parameters to be supported|‘policy_editable’ must be set to ‘true’ and ‘policy_schema’ must be provided|'sourced_at_
deployment' must be set to 'true'|parameter 'dcae_target_type' defined with default value set to supported vnfType-vnfFuncId, with properties 'designer_editable' and 'sourced_at_deployment' set appropriately| -|Additional Info for Component Developer|||For Docker only: In the auxiliary section:
{"policy": {"trigger_type": "policy","script_path": “/opt/app/reconfigure.sh”} }
Script interface would then be "/opt/app/reconfigure.sh” $trigger_type $updated_policy"
where $updated_policy is json provided by the Policy Handler.||For Docker only: In the auxiliary section:
{"dti": “/opt/app/reconfigure.sh”}
Script interface would then be "/opt/app/reconfigure.sh” $trigger_type $updated_dti"
where $updated_dti is json provided by the DTI Plugin.| diff --git a/platformdoc/docs/components/component-specification/dmaap-connection-objects.md b/platformdoc/docs/components/component-specification/dmaap-connection-objects.md deleted file mode 100644 index b1b650fd..00000000 --- a/platformdoc/docs/components/component-specification/dmaap-connection-objects.md +++ /dev/null @@ -1,169 +0,0 @@ -# DMaaP connection objects - -DMaaP Connection Objects are JSON objects that: - -1. At Runtime - this is generated by the DCAE Platform and passed to the component in its application_configuration to be used to connect to the DMaaP feed or topic. Components will receive the entire object with all properties populated (default will be `null) unless specified otherwise. -2. During dcae_cli testing - this is provided through the command-line argument `--dmaap-file` to test the component with manually provisioned feeds and topics. Developers are not required to provide the entire object. The required properties are labeled below with "*Required as input*". - -## Message Router - -Publishers and subscribers have the same generated `Dmaap Connection Object` structure. Here's an example for any given config-key: -(This is what will be in application_configuration) - -```json -{ - "type": "message_router", - "aaf_username": "some-user", - "aaf_password": "some-password", - "dmaap_info": { - "client_role": "com.dcae.member", - "client_id": "1500462518108", - "location": "mtc00", - "topic_url": "https://we-are-message-router.us:3905/events/some-topic" - } -} -``` - -At the top-level: - -Property Name | Type | Description -------------- | ---- | ----------- -type | string | *Required as input*. Must be `message_router` for message router topics -aaf_username | string | AAF username message router clients use to authenticate with secure topics -aaf_password | string | AAF password message router clients use to authenticate with secure topics -dmaap_info | JSON object | *Required as input*. Contains the topic connection details - -The `dmaap_info` object contains: - -Property Name | Type | Description -------------- | ---- | ----------- -client_role | string | AAF client role that's requesting publish or subscribe access to the topic -client_id | string | Client id for given AAF client -location | string | DCAE location for the publisher or subscriber, used to set up routing -topic_url | string | *Required as input*. URL for accessing the topic to publish or receive events - -The --dmaap-file argument (to the component `run` or `dev` command), must minimally contain: - -```json -{ - "type": "message_router", - "dmaap_info": { - "topic_url": "https://we-are-message-router.us:3905/events/some-topic" - } -} -``` - -## Data Router - -### Publisher - -Here's an example of what the generated `Dmaap Connection Object` for Data Router Publisher looks like: -(This is what will be in application_configuration) - -```json -{ - "type": "data_router", - "dmaap_info": { - "location": "mtc00", - "publish_url": "https://we-are-data-router.us/feed/xyz", - "log_url": "https://we-are-data-router.us/feed/xyz/logs", - "username": "some-user", - "password": "some-password", - "publisher_id": "123456" - } -} -``` - -At the top-level: - -Property Name | Type | Description -------------- | ---- | ----------- -type | string | *Required as input*. Must be `data_router` for data router feeds -dmaap_info | JSON object | *Required as input*. Contains the feed connection details - -The `dmaap_info` object contains: - -Property Name | Type | Description -------------- | ---- | ----------- -location | string | DCAE location for the publisher, used to set up routing -publish_url | string | *Required as input*. URL to which the publisher makes Data Router publish requests -log_url | string | URL from which log data for the feed can be obtained -username | string | Username the publisher uses to authenticate to Data Router -password | string | Password the publisher uses to authenticate to Data Router -publisher_id | string | Publisher id in Data Router - -The --dmaap-file argument (to the component `run` or `dev` command), must minimally contain: - -```json -{ - "type": "data_router", - "dmaap_info": { - "publish_url": "https://we-are-data-router.us/feed/xyz" - } -} -``` - -### Subscriber - -Here's an example of what the generated `Dmaap Connection Object` for a Data Router Subscriber looks like: -(This is what will be passed in application_configuration) - -```json -{ - "type": "data_router", - "dmaap_info": { - "location": "mtc00", - "delivery_url": "https://my-subscriber-app.dcae:8080/target-path", - "username": "some-user", - "password": "some-password", - "subscriber_id": "789012" - } -} -``` - -At the top-level: - -Property Name | Type | Description -------------- | ---- | ----------- -type | string | *Required as input*. Must be `data_router` for data router feeds -dmaap_info | JSON object | *Required as input*. Contains the feed connection details - -The `dmaap_info` object contains: - -Property Name | Type | Description -------------- | ---- | ----------- -location | string | DCAE location for the subscriber, used to set up routing -delivery_url | string | URL to which the Data Router should deliver files -username | string | Username Data Router uses to authenticate to the subscriber when delivering files -password | string | Password Data Router uses to authenticate to the subscriber when delivering files -subscriber_id | string | Subscriber id in Data Router - -The --dmaap-file argument (to the component `run` or `dev` command), must minimally contain: - -```json -{ - "type": "data_router", - "dmaap_info": { - } -} -``` - -It is the recommended security practice that `username` and `password` are specified. -You cannot provide the `delivery_url` in your dmaap-file, because it's not constructed until deployment time. Therefore, after the test deployment, go back to the Data Router Feed and provide the delivery_url (in order to start receiving the feeds). - -### Data Router Example - -(After the Data Router feed has been manually provisioned) - -``` -$ dcae_cli component run --dmaap-file $dmaap_file $component-name -DCAE.Run | WARNING | Your component is a data router subscriber. Here are the delivery urls: - - some-sub-dr: http://135.205.226.128:32838/identity -``` - -(Update the Data Router Feed to provide the delivery_url). - - - - diff --git a/platformdoc/docs/components/component-specification/docker-specification.md b/platformdoc/docs/components/component-specification/docker-specification.md deleted file mode 100644 index 60905046..00000000 --- a/platformdoc/docs/components/component-specification/docker-specification.md +++ /dev/null @@ -1,273 +0,0 @@ -# Component specification (Docker) - -The Docker component specification contains the following groups of information. Many of these are common to both Docker and CDAP components and are therefore described in the common specification. - -* [Metadata](common-specification.md#metadata) -* [Interfaces](common-specification.md#interfaces) including the associated [Data Formats](/components/data-formats.md) -* [Parameters](common-specification.md#parameters) -* [Auxiliary Details](#auxiliary-details) -* [List of Artifacts](common-specification.md#artifacts) - -## Auxiliary Details - -`auxiliary` contains Docker specific details like health check, port mapping, volume mapping, dti and policy reconfiguration script details. (Policy reconfiguration is not yet supported). - -Name | Type | Description -------------- | ---- | ----------- -healthcheck | JSON object | *Required*. Health check definition details -ports | JSON array | each array item maps a container port to the host port. See example below. -volume | JSON array | each array item contains a host and container object. See example below. -reconfigs | string | DTI reconfiguration script details -*Planned for 1806* | | -policy | JSON array | *Required*. Policy reconfiguration script details - -### Health Check Definition - -The platform uses Consul to perform periodic health check calls. Consul provides different types of [check definitions](https://www.consul.io/docs/agent/checks.html). The platform currently supports http and docker health checks. - -When choosing a value for interval, consider that too frequent healthchecks will put unnecessary load on Consul and DCAE. If there is a problematic resource, then more frequent healthchecks are warranted (eg 15s or 60s), but as stablility increases, so can these values, (eg 300s). - -When choosing a value for timeout, consider that too small a number will result in increasing timeout failures, and too large a number will result in a delay in the notification of the resource problem. A suggestion is to start with 5s and work from there. - -#### http - -Property Name | Type | Description -------------- | ---- | ----------- -type | string | *Required*. `http` -interval | string | Interval duration in seconds i.e. `60s` -timeout | string | Timeout in seconds i.e. `5s` -endpoint | string | *Required*. GET endpoint provided by the component for Consul to call to check health - -Example: - -```json -"auxilary": { - "healthcheck": { - "type": "http", - "interval": "15s", - "timeout": "1s", - "endpoint": "/my-health" - } -} -``` - -#### docker script example - -Property Name | Type | Description -------------- | ---- | ----------- -type | string | *Required*. `docker` -interval | string | Interval duration in seconds i.e. `15s` -timeout | string | Timeout in seconds i.e. `1s` -script | string | *Required*. Full path of script that exists in the Docker container to be executed - -Consul will use the [Docker exec API](https://docs.docker.com/engine/api/v1.29/#tag/Exec) to periodically call your script in your container. It will examine the script result to identify whether your component is healthy. Your component is considered healthy when the script returns `0` otherwise your component is considered not healthy. - -Example: - -```json -"auxilary": { - "healthcheck": { - "type": "docker", - "script": "/app/resources/check_health.py", - "timeout": "30s", - "interval": "180s" - } -} -``` - -### Ports - -This method of exposing/mapping a local port to a host port is NOT RECOMMENDED because of the possibility of port conflicts. If multiple instances of a docker container will be running, there definitely will be port conflicts. Use at your own risk. (The preferred way to expose a port is to do so in the Dockerfile as described [here](/components/component-type-docker/#ports)). - -```json -"auxilary": { - "ports": ["8080:8000"] -} -``` - -In the example above, container port 8080 maps to host port 8000. - -### Volume Mapping - -```json -"auxilary": { - "volumes": [ - { - "container": { - "bind": "/tmp/docker.sock", - "mode": "ro" - }, - "host": { - "path": "/var/run/docker.sock" - } - } - ] -} -``` - -At the top-level: - -Property Name | Type | Description -------------- | ---- | ----------- -volumes | array | Contains container and host objects - -The `container` object contains: - -Property Name | Type | Description -------------- | ---- | ----------- -bind | string | path to the container volume -mode | string | "ro" - indicates read-only volume - | | "" - indicates that the contain can write into the bind mount - -The `host` object contains: - -Property Name | Type | Description -------------- | ---- | ----------- -path | string | path to the host volume - -Here's an example of the minimal JSON that must be provided as an input: - -```json -"auxilary": { - "volumes": [ - { - "container": { - "bind": "/tmp/docker.sock" - }, - "host": { - "path": "/var/run/docker.sock" - } - } - ] -} -``` - -In the example above, the container volume "/tmp/docker.sock" maps to host volume "/var/run/docker.sock". - -### DTI Reconfiguration - -DTI changes will be provided to the Docker component by triggering a script that is defined here. - -Property Name | Type | Description -------------- | ---- | ----------- -dti | string | *Required*. Suggested value is "/opt/app/reconfigure.sh" - -Example: - -```json -"auxilary": { - "dti": "/opt/app/reconfigure.sh" -} -``` - -The docker script interface is as follows:

`/opt/app/reconfigure.sh $reconfigure_type {} - -Name | Type | Description ----- | ---- | ----------- -reconfigure_type | string | "dti" -updated_dti | json | dti_event object - -The dti_event object can be seen [here](https://codecloud.web.att.com/projects/ST_DCAE/repos/com.att.dcae.orch.dti-handler/browse/dti_inputs.yaml). - -An example of a DTI reconfiguration script can be found [here](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/docker-cloudify/browse/examples/reconfigure.py?at=refs%2Fheads%2Frelease%2F1802). - - -### Policy (not yet supported) - -Policy changes made in the Policy UI will be provided to the Docker component by triggering a script that is defined here. - -Property Name | Type | Description -------------- | ---- | ----------- -reconfigure_type | string | *Required*. Current value supported is `policy` -script_path | string | *Required*. Current value for 'policy' reconfigure_type must be "/opt/app/reconfigure.sh" - -Example: - -```json -"auxilary": { - "policy": { - "reconfigure_type": "policy", - "script_path": "/opt/app/reconfigure.sh" - } -} -``` - -The docker script interface is as follows:

`/opt/app/reconfigure.sh $reconfigure_type {"updated policies": , "application config": } - -Name | Type | Description ----- | ---- | ----------- -reconfigure_type | string | "policy" -updated_policies | json | TBD -updated_appl_config | json | complete generated app_config, not fully-resolved, but `policy-enabled` parameters have been updated. In order to get the complete updated app_config, the component would have to call `config-binding-service`. - - -## Docker Component Spec - Complete Example - -```json -{ - "self": { - "version": "1.0.0", - "name": "asimov.component.kpi_anomaly", - "description": "Classifies VNF KPI data as anomalous", - "component_type": "docker" - }, - "streams": { - "subscribes": [{ - "format": "dcae.vnf.kpi", - "version": "1.0.0", - "route": "/data", - "type": "http" - }], - "publishes": [{ - "format": "asimov.format.integerClassification", - "version": "1.0.0", - "config_key": "prediction", - "type": "http" - }] - }, - "services": { - "calls": [{ - "config_key": "vnf-db", - "request": { - "format": "dcae.vnf.meta", - "version": "1.0.0" - }, - "response": { - "format": "dcae.vnf.kpi", - "version": "1.0.0" - } - }], - "provides": [{ - "route": "/score-vnf", - "request": { - "format": "dcae.vnf.meta", - "version": "1.0.0" - }, - "response": { - "format": "asimov.format.integerClassification", - "version": "1.0.0" - } - }] - }, - "parameters": [ - { - "name": "threshold", - "value": 0.75, - "description": "Probability threshold to exceed to be anomalous" - } - ], - "auxilary": { - "healthcheck": { - "type": "http", - "interval": "15s", - "timeout": "1s", - "endpoint": "/my-health" - } - }, - "artifacts": [{ - "uri": "fake.nexus.att.com/dcae/kpi_anomaly:1.0.0", - "type": "docker image" - }] -} -``` - diff --git a/platformdoc/docs/components/component-specification/examples-grid.md b/platformdoc/docs/components/component-specification/examples-grid.md deleted file mode 100644 index 9597e537..00000000 --- a/platformdoc/docs/components/component-specification/examples-grid.md +++ /dev/null @@ -1,18 +0,0 @@ -# Component Spec Examples - -The following table shows CDAP and Docker component spec examples for some of the commonly used platform features. Please note that these examples were chosen for the specific features that they contain, and should not necessarily be used for examples of other features, as they may have been captured before they were complete or modified to best utilize those features. - -| Feature | CDAP Example | Docker Example | -|---------|--------------|----------------| -| Dmaap MR subscriber | [String Matching](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/sm/sm_spec.json) | TBD | -| Dmaap MR publisher | [String Matching](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/sm/sm_spec.json) | [Syslog spec](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/syslog/syslog.json) | -| Dmaap DR subscriber/DMD | TBD | [Sessionization](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/sessionization/sessionization-componentspec.json) | -| Dmaap DR publisher/DMD | TBD | [Sessionization](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/sessionization/sessionization-componentspec.json) | -| Policy (simple) | [tca_policy2](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/tca_with_policy2/tca_with_policy2.json) | TBD | -| Policy (complex) | [tca_policy](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/tca_with_policy/tca_with_policy.json) | TBD | -| Healthcheck | N/A (the platform does this) | [FOI spec](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/foi/foisftpcollector_componentspec.json) -| Service Calls | [String Matching](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/sm/sm_spec.json) | TBD | -| Service Provides | [cuda](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/cuda/spec.json) | [VES](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/ves/vescollector-componentspec.json) | -| DTI Reconfig | TBD | [FOI-sftp](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/foi-sftp/component_spec.json) | - - diff --git a/platformdoc/docs/components/component-specification/streams-grid.md b/platformdoc/docs/components/component-specification/streams-grid.md deleted file mode 100644 index b6d64745..00000000 --- a/platformdoc/docs/components/component-specification/streams-grid.md +++ /dev/null @@ -1,60 +0,0 @@ - -# Streams Formatting Quick Reference - -Each of the following tables represents an example of a publisher and its subscriber, which are of course, different components. This focuses on the fields that are ‘different’ for each of these TYPEs, to illustrate the relationship between `config_key`, dmaap connection object, and the generated configuration. Some notes on specific properties: - -* `config_key` is an arbitrary string, chosen by the component developer. It is returned in the generated configuration where it contains specific values for the target connection -* `format`, `version`, and `type` properties in the subscriber would match these properties in the publisher -* `aaf_username` and `aaf_password` may be different between the publisher and the subscriber - - - -### Using http - -#### *Publishing Component* - -| component spec | runtime platform generated config | -|----------------|-----------------------------------| -|"streams":{
   "publishes":[{
     "config_key":"prediction",
     "format":"some-format",
     "type":"http",
     "version":"0.1.0"
   }]
}
|"streams_publishes":{
   "prediction":["10.100.1.100:32567/data"] | - -#### *Subscribing Component* - -| component spec | runtime platform generated config | -|----------------|-----------------------------------| -|"streams":{
   "subscribes":[{
     "route":"/data",
     "format":"some-format",
     "type":"http",
     "version":"0.1.0"
   }]
}
|"N/A"| - - - -### Using Message Router - -#### *Publishing Component* - -Note: When deploying, this component should be deployed first so satisfy downstream dependencies. Refer to the –force option in component ‘run’ command for more information. - -| component spec | Dmaap Connection Object | runtime platform generated config | -|----------------|-------------------------| --------------------------------- | -|"streams":{
   "publishes":[{
     "config_key":"mr_output",
     "format":"some-format",
     "type":"message_router",
     "version":"0.1.0"
   }]
} | {
    "type":"message_router",
    "dmaap_info": {
    "topic_url": "https://we-are-message-router.us:3905/events/some-topic" }
}

*Note: For message router, this object is identical for the publisher and the subscriber* | "streams_publishes":{
   "mr_output":{
    "aaf_username":"pub-user",
    "aaf_password":"pub-pwd",
    "type":"message_router",
   "dmaap_info":{
       "topic_url":"https://we-are-message-router.us:3905/events/some-topic"}
    }
},
"streams_subscribes":{
…
} - -#### *Subscribing Component* - -| component spec | Dmaap Connection Object | runtime platform generated config | -|----------------|-------------------------| --------------------------------- | -|"streams":{
   "subscribes":[{
     "config_key":"mr_input",
     "format":"some-format",
     "type":"message_router",
     "version":"0.1.0"
   }]
} | {
    "type":"message_router",
    "dmaap_info": {
    "topic_url": "https://we-are-message-router.us:3905/events/some-topic" }
}

*Note: For message router, this object is identical for the publisher and the subscriber* | "streams_publishes":{
…
},
"streams_subscribes":{
   "mr_input":{
    "aaf_username":"sub-user",
    "aaf_password":"sub-pwd",
    "type":"message_router",
    "dmaap_info":{
       "topic_url":"https://we-are-message-router.us:3905/events/some-topic"}
      }
} - - - - -### Using Data Router - -#### *Publishing Component* - -| component spec | Dmaap Connection Object | runtime platform generated config | -|----------------|-------------------------| --------------------------------- | -|"streams":{
   "publishes":[{
     "config_key":"dr_output",
     "format":"some-format",
     "type":"data_router",
     "version":"0.1.0"
   }]
} | {
   "type":"data_router",
   "dmaap_info": {
     "location": "mtc00",
     "publish_url": "https://we-are-data-router.us/feed/xyz",
     "log_url": "https://we-are-data-router.us/feed/xyz/logs",
     "username": "pub-user",
     "password": "pub-password",
     "publisher_id": "123456"}
} | streams_publishes":{
   "dr_output":{
     "type":"data_router",
     "dmaap_info":{
       "location":"mtc00",
       "publish_url":"https://we-are-data-router.us/feed/xyz",
       "log_url":"https://we-are-data-router.us/feed/xyz/logs",
       "username":"pub-user",
       "password":"pub-password",
       "publisher_id":"123456"}
   }
},
      "streams_subscribes":{
…
} - -#### *Subscribing Component* - -| component spec | Dmaap Connection Object | runtime platform generated config | -|----------------|-------------------------| --------------------------------- | -|"streams":{
   "subscribes":[{
     "config_key":"dr_input",
     "format":"some-format",
     "type":"data_router",
     "version":"0.1.0",
    "route":"/target-path"
   }]
} | {
   "type":"data_router",
     "dmaap_info": {
     "location": "mtc00",
     "delivery_url": "https://my-subscriber-app.dcae:8080/target-path",
    "username": "sub-user",
     "password": "sub-password",
     "subscriber_id": "789012"}
} | "streams_publishes":{
…
},
"streams_subscribes":{
   "dr_input":{
      "type":"data_router",
      "dmaap_info":{
         "location":"mtc00",
         "delivery_url":"https://my-subscriber-app.dcae:8080/target-path",
         "username":"sub-user",
         "password":"sub-password",
         "subscriber_id":"789012"}
        }
} - diff --git a/platformdoc/docs/components/component-type-cdap.md b/platformdoc/docs/components/component-type-cdap.md deleted file mode 100644 index 8658b2da..00000000 --- a/platformdoc/docs/components/component-type-cdap.md +++ /dev/null @@ -1,52 +0,0 @@ -# CDAP Component Requirements/Information - -This page contains information about CDAP app development in DCAE. - -## Uploading your Jar File -The DCAE component specification has you input your `jar_url`, the URL on Nexus to your Jar file. This DCAE controller deploys out of Nexus. -You can upload your jar(s) using the following command, replacing NAME: -``` -curl -v --user 'dcae-dev:dev123' http://nexus01.research.att.com:8081/repository/dcae-dev-raw/jar_files/NAME.jar --upload-file NAME.jar -``` -During the CLI Tool Usage, in your spec, supply `http://nexus01.research.att.com:8081/repository/dcae-dev-raw/jar_files/NAME.jar` as the JAR artifact URL. - -## Policy Reconfiguration -We support reconfiguration of both AppConfig and AppPreferences. - -For AppConfig, we support CDAPs "update" API to [reconfigure an application](http://docs.cask.co/cdap/current/en/reference-manual/http-restful-api/lifecycle.html\#update-an-application}}). - -For AppPreferences, we: - -1. Stop your programs - -2. Set the new preferences - -3. Start your programs - -At the time of writing, there is no way to update a CDAP application's AppConfig or AppPreferences, without a restart, *and notify* the application. The latter is a future promised feature by CASK---the ability to update preferences and inform the application that something is changed (so it repulls). -As CDAP currently stands however, given the above, if you are building a stateful application, you must persist your state often (e.g., to a CDAP dataset), as you may be restarted at any time with an updated configuration, or stopped&started at any time with updated preferences. - -## Metrics -Metrics are pulled from your CDAP application on a periodic basis and (in the future: pushed to a central DCAE metric store, currently: just dropped). -For this to be useful, your application should provide [metrics](http://docs.cask.co/cdap/current/en/admin-manual/operations/metrics.html). -While nothing in the DCAE runtime enforces that your CDAP application tracks metrics, your metrics (or lack thereof) will be visible in the DCAE dashboard and to operations. - -## Future DMaaP abstraction -Shown below is our _vision_ for how DMaaP is abstracted from component developers: - -![Screenshot](../images/dmdvision.png) - -Today, this is a vision; it is not in place. -Today, each CDAP app is built with built in assumptions about where they are getting their data from. -Some CDAP apps have the built in assumption of a UEB feed. Some MR. Some DR. -This becomes very difficult to orchestrate when each app in the catalog has built in data assumptions. - -The goal of this vision is to _decouple_ the data plane from the analytics plane. -Analytics should be agnostic to _how_ they are receiving their data beyond "filesystem" or "HTTP". -Analytics developers shouldn't have to worry about the data plane, that should be taken care of by the platform. -They should be spending their time on the problem at hand---the analytic. - -This also allows each CDAP application to have a standard set of interfaces: HTTP and HDFS: -![Screenshot](../images/io.png) - - diff --git a/platformdoc/docs/components/component-type-docker.md b/platformdoc/docs/components/component-type-docker.md deleted file mode 100644 index 6e717a5e..00000000 --- a/platformdoc/docs/components/component-type-docker.md +++ /dev/null @@ -1,388 +0,0 @@ -# Component Requirements: Docker - -## Overview - -Component developers are required to provide artifacts for the platform to be able to deploy your component including: - -* [Component Specification](component-specification/docker-specification) -* [One or more Data Formats](data-formats) *unless they already exist -* [Docker image](#docker-on-the-platform) - -In addition, components will have to be enhanced to be compliant with the DCAE platform in order to correctly be deployed and be managed. This page will discuss the changes which are grouped into the following categories: - -* [Service Registration](#service-registration) -* [Configuration Management](#configuration-management) -* [Docker on the Platform](#docker-on-the-platform) -* [Operational Concerns](#operational-concerns) - -Additional considerations are: - -* [DTI Reconfiguration](#dti-reconfiguration) -* [Policy Reconfiguration](#policy-reconfiguration) - -To help component developers to make and to test the changes needed to have components run on the platform, a command-line tool called [`dcae-cli`](dcae-cli/quickstart) is provided by the platform team. (Testing withing the dcae_cli tool is not yet available for DTI Reconfiguration or Policy). - -## Service Registration - -Every [Docker component is registered](../architecture/service-discovery) with the platform's service discovery layer. Docker components are not expected to make the explicit make registration calls because that is done by through a platform 3rd party registration service. A couple things are needed from component developers in order for this registration to occur successfully: - -1. Docker images must be created from a Dockerfile that has an [`EXPOSE`](https://docs.docker.com/engine/reference/builder/#/expose) instruction. This applies to components that listen on a port. -2. Component healthcheck details must be provided in the Docker auxiliary component specification - -### Expose port - -Components that listen on a specific port must explicitly declare in their Dockerfile that port using the `EXPOSE` instruction before building the image. -Warning! At the current time, you can not expose multiple ports in your Dockerfile or registration *will not work* correctly. -Warning! Be sure to choose a port that is available. This may vary by environment. - -### Health check - -Component developers are required to provide a way for the platform to periodically check the health of their running components. The platform uses Consul to perform these periodic calls. Consul provides different types of [check definitions](https://www.consul.io/docs/agent/checks.html). The details of the definition used by your component is to be provided through the [Docker auxiliary specification](component-specification/docker-specification#auxiliary). - -## Configuration Management - -All configuration for a component is stored in CONSUL under the components uniquely generated name which is provided by the environment variable `HOSTNAME` as well as `SERVICE_NAME`. It is then made available to the component via a remote HTTP service call to CONFIG BINDING SERVICE. - -The main entry in CONSUL for the component contains its `generated application configuration`. This is based on the submitted component specification, and consists of the `interfaces` (streams and services/calls) and `parameters` sections. Other entries may exist as well, under specific keys, such as :dmaap or :dti. Each key represents a specific type of information and is also available to the component by calling CONFIG BINDING SERVICE. More on this below. - -Components are required to pull their `generated application configuration` at application startup. The component must provide an initialization script that retrieves the application configuration and reference that script in its Dockerfile. Other calls can be made to CONFIG BINDING SERVICE to retrieve DMaaP, DTI Reconfiguration, or Pollicy Reconfiguration (not yet supported). - -You can see more details on the generated application configuration [here](/components/dcae-cli/walkthrough/#view-the-platform-generated-configuration) - -### Config Binding Service -The config binding service is a platform HTTP service that is responsible for providing clients with its fully resolve configuration JSON at startup, and also other configurations objects (such as :dti) when requested. - -At runtime, components should make an HTTP GET on: - -``` -:/service_component/NAME -``` -For Docker components, NAME should be set to `HOSTNAME`, which is provided as an ENV variable to the container. - -The binding service integrates with the streams and services section of the component specification. For example, if you specify that you call a service: -``` -"services": { - "calls": [{ - "config_key": "vnf-db", - "request": { - "format": "dcae.vnf.meta", - "version": "1.0.0" - }, - "response": { - "format": "dcae.vnf.kpi", - "version": "1.0.0" - } - }], -... -} -``` -Then the config binding service will find all available IP addresses of services meeting the containers needs, and provide them to the container under your `config_key`: -``` -// your configuration -{ - "vbf-db" : // see above - [IP:Port1, IP:Port2,…] // all of these meet your needs, choose one. -} -``` -Regarding `:`, there is DNS work going on to make this resolvable in a convenient way inside of your container. -However, currently you will be given a name as an ENV variable, `CONFIG_BINDING_SERVICE`, and you will need to query Consul's service discovery to get -`:`. - - -### Generated Application Configuration - -The DCAE platform uses the component specification to generate the component's application configuration provided at deployment time. The component developer should expect to use this configuration JSON in the component. - -Pro-tip: As you build the component specification, use the [dcae-cli `dev` command](/components/dcae-cli/walkthrough/#view-the-platform-generated-configuration) to see what the resulting application configuration will look like. - -For both Docker and CDAP, when the component is deployed, any `streams` and `services/calls` specified, will be injected into the configuration under the following well known structure, along with all `parameters`. (`services/provides` is not passed in to the application config). Your component is required to parse this information if it has any DMaaP connections or interfaces with another DCAE component. - -This is best served by an example. - -The following component spec snippet (from String Matching): -``` -"streams":{ - "subscribes": [{ - "format": "VES_specification", - "version": "4.27.2", - "type": "message_router", - "config_key" : "mr_input" - }], - "publishes": [{ - "format": "VES_specification", - "version": "4.27.2", - "config_key": "mr_output", - "type": "message_router" - }] - }, - "services":{ - "calls": [{ - "config_key" : "aai_broker_handle", - "verb": "GET", - "request": { - "format": "get_with_query_params", - "version": "1.0.0" - }, - "response": { - "format": "aai_broker_response", - "version": "3.0.0" - } - }], - "provides": [] - }, -``` - -Will result in the following top level keys in the configuration (for CDAP, this will be under AppConfig) - -``` - "streams_publishes":{ - "mr_output":{ // notice the config key above - "aaf_password":"XXX", - "type":"message_router", - "dmaap_info":{ - "client_role": null, - "client_id": null, - "location": null, - "topic_url":"https://dcae-msrt-mtl5-ftl2.homer.att.com:3905/events/com.att.dcae.dmaap.FTL2.DCAE-CL-EVENT" // just an example - }, - "aaf_username":"XXX" - } - }, - "streams_subscribes":{ - "mr_input":{ // notice the config key above - "aaf_password":"XXX", - "type":"message_router", - "dmaap_info":{ - "client_role": null, - "client_id": null, - "location": null, - "topic_url":"https://dcae-msrt-ftl2.homer.att.com:3905/events/com.att.dcae.dmaap.FTL2.TerrysStringMatchingTest" // just an example - }, - "aaf_username":"XXX" - } - }, - "services_calls":{ - "aai_broker_handle":[ // notice the config key above - "135.205.226.128:32768" // based on deployment time, just an example - ] - } -``` -These keys will always be populated whether they are empty or not. So the minimum configuration you will get, (in the case of a component that provides an HTTP service, doesn't call any services, and has no streams, is: -``` - "streams_publishes":{}, - "streams_subscribes":{}, - "services_calls":{} -``` - -Thus your component should expect these well-known top level keys. - -### DTI Reconfiguration - -Most Collector components will support DTI reconfiguration. That is, they must be designed to process multiple instances of a particular `vnfType-vnfFuncId`. When instances of that vnfType-vnfFuncId` are brought up or down, the collectors `reconfiguration script` will be executed. The components reconfiguration script must be defined with the following interfact: - -``` -`/opt/app/reconfigure.sh” dti $updated_dti` -``` -where $updated_dti is a json for one vnfType-vnfFuncId instance that looks like this (for example). -Note: The reconfigure script does not have to be named 'reconfigure.sh'. - -For a deployment of VNF Instance -``` -{ - "deploy": { - "vhss-ems": { - "zrdm3avhss01ems001": { - "dcae_target_collection_ip": "107.239.223.191", - ...the remaining dti_input parameters... - } - } - } -} -``` -For an undeployment of VNF instance -``` -{ - "undeploy": { - "vhss-ems": [ - "zrdm3avhss01ems002" - ] - } -} -``` - -The component spec must contain the following: - -* In the auxilary section, add the definition for the above reconfiguration script for the 'reconfigs' property. This is the script that the platform will call with DTI input when a DTI event is received for the collector supporting the specific dcae_target_type. -* In the parameter section, define a parameter 'dcae_target_type' defined with properties 'designer_editable' and property 'sourced_at_deployment'. Set 'designer_editable' to true if this is an SDC Self-Service microservice. Otherwise, set it to false. Set 'sourced_at_deployment' to true if input can be provided at deployment time by Operations. Otherwise set it to false. - -The component spec can retrieve information about ALL the instances it supports by doing a curl command to CONFIG BINDING SERVICE like this: - -``` -curl http://:/dti/$SERVICE_NAME -``` - -This would return the following: -``` -{ - "vhss-ems": { - "zrdm3avhss01ems001": { - "dcae_target_collection_ip": "107.239.223.191", - the rest of the DTI_input fields… - }, - "zrdm3avhss01ems002": { - "dcae_target_collection_ip": "107.239.223.192", - the rest of the DTI_input fields… - } - } -} -``` -The full list of DTI parameters can be found [here](https://codecloud.web.att.com/projects/ST_DCAE/repos/com.att.dcae.orch.dti-handler/browse/dti_inputs.yaml). - -(The API for the CONFIG BINDING SERVICE is): -``` - /dti/{service_component_name} - parameters: - name: "service_component_name" - in: "path" - description: "Service Component Name. service_component_name:dti must be a key in consul." (see -below for example output) - required: true - type: "string" - get: - description: "Returns as JSON the value for service_component_name:dti" - operationId: "config_binding_service.controller.dti" - responses: - 200: - description: OK; the KV value is returned as an object - schema: - type: object - 404: - description: there is no configuration in Consul for this component's DTI events -``` - -### DMaaP - -Components can be publishers or subscribers to either message router topics or data router feeds. This is defined in the component specification under the `streams` section where you can specify whether your component is expected to subscribe or to publish to a [message router](component-specification/common-specification/#message-router) topic or to a [data router](component-specification/common-specification/#data-router) feed. Given a composition with components that use DMaaP, the platform will provision the topic or feed and provide the necessary [connection details](/components/component-specification/dmaap-connection-objects) at runtime for each DMaaP dependent component. These connection details are provided through your application's generated configuration. - -In order to test DMaaP connections in onboarding, the developer (currently) must provision all test topics and feeds manually and provide the [dcae-cli with the connection details](dcae-cli/walkthrough/#dmaap-testing) when deploying your application. - -Even thought the DMaaP connection information is included in the generated application configuration, it may be obtained by doing a call as in this example: - -``` -curl http://:/dmaap/jm416b.d345ada1-cc31-4121-a741-9007b9f64808.1-0-1.dcae-collectors-cli-pm -``` - -This would return the following: -``` -{"cli_gamma_cisco_pm_config_stat": - { - "publish_url": "https://dcae-drps-ftl2.homer.att.com/publish/1362", - "username": "mtl5-0", - "log_url": null, - "location": "mtl5-0", - "password": "i5qji048hdm2e38f0bg872tnqd", - "publisher_id": "1234" - } -} -``` - -### Policy Reconfiguration -*(not yet supported)* - -Components must provide a way to receive policy reconfiguration, that is, configuration parameters that have been updated via the Policy UI. The component developer provides a docker script (defined in the [Docker auxiliary specification](component-specification/docker-specification#policy-example)) that will be triggered when this occurs. - -## Docker on the platform - -### Images - -Docker images must be pushed to the environment specific Nexus repository. This requires tagging your build with the full name of you image which includes the Nexus repository name. - -Use the Docker command-line to [tag](https://docs.docker.com/engine/reference/commandline/tag/) your Docker image where the *target image* must contain the registry host name and port. - -For example, an application called laika has been tagged for an example Nexus registry: - -``` -$ docker images -REPOSITORY TAG IMAGE ID CREATED SIZE -nexus01.research.att.com:18443/dcae-platform/laika 0.4.0 154cc382df61 7 weeks ago 710.5 MB -laika 0.4.0 154cc382df61 7 weeks ago 710.5 MB -``` - -The solutioning evironment's Nexus host for the Docker registry is `nexus01.research.att.com:18443`. You must run `docker login nexus01.research.att.com:18443` to access the registry. Please contact the DCAE platform team to provide you with the credentials. - -``` -docker login nexus01.research.att.com:18443 -``` - -Tag your image: - -``` -docker tag laika:0.4.0 nexus01.research.att.com:18443/dcae-platform/laika:0.4.0 -``` - -Or build and tag: - -``` -docker build -t nexus01.research.att.com:18443/dcae-platform/laika:0.4.0 . -``` - -After tagging, upload your image to the remote registry using the Docker [push command](https://docs.docker.com/engine/reference/commandline/push/). Note that the registry may require a login. Use the Docker [login command](https://docs.docker.com/engine/reference/commandline/login/) before pushing in that case. - -``` -docker push nexus01.research.att.com:18443/dcae-platform/laika:0.4.0 -``` - -*NOTE* Replace `dcae-platform` with the group directory that is applicable to your image. Replace `laika` with your application's name. Replace the `0.4.0` version with your application's version. - -### Dockerfile - -The Dockerfile must contain the name of the container's initialization script. This will be called when the container is deployed, and must call Config Binding Service as described in [Config Binding Service](#config-binding-service) - -### Ports - -On the DCAE platform, Docker components are run with the `--publish-all` or `-P` argument. This means the Docker container for your component will be listening on a random port and that random port will be mapped to the port [you exposed](#service-registration). - -### Envs - -The platform provides a set of environment variables into each Docker container: - -Name | Type | Description ----- | ---- | ----------- -`HOSTNAME` | string | Unique name of the component instance that is generated -`CONSUL_HOST` | string | Hostname of the platform's Consul instance -`CONFIG_BINDING_SERVICE` | string | Hostname of the platform's config binding service instance -`DOCKER_HOST` | string | Host of the target platform Docker host to run the container on - -## Operational Concerns - -### Logging - -Currently the platform uses the default `json-file` logging driver for Docker. For onboarding testing, component developers can access their logs from their Docker containers either by running their component using the `--attached` flag or by using the `docker logs` command. The requirement is that applications must write to stdout and/or stderr. - -To use the `docker logs` command for your deployed running Docker container, - -* You must have Docker installed on your local machine -* Have the generated name of your component. This is generated for you when you execute `dcae_cli component dev` or `dcae_cli component run`. -* Find the target Docker host using the `dcae_cli profiles show` command: - -``` -$ dcae_cli profiles show solutioning -{ - "cdap_broker": "cdap_broker", - "config_binding_service": "config_binding_service", - "consul_host": "realsolcnsl00.dcae.solutioning.homer.att.com", - "docker_host": "realsolcpdokr00.dcae.solutioning.homer.att.com:2376" -} -``` - -* Set your Docker client to point to the target Docker host: - -``` -$ export DOCKER_HOST="tcp://realsolcpdokr00.dcae.solutioning.homer.att.com:2376" -``` - -* Use the `docker logs` command: - -``` -$ docker logs -``` diff --git a/platformdoc/docs/components/data-formats.md b/platformdoc/docs/components/data-formats.md deleted file mode 100644 index 9dd0a65f..00000000 --- a/platformdoc/docs/components/data-formats.md +++ /dev/null @@ -1,74 +0,0 @@ -# Data Formats - -Data formats are descriptions of data; they are the data contract between your component and other components. When the components are 'composed' into services in the SDC tool, they can only be matched with components that have compatible data formats. Data formats will be onboarded to SDC and assigned a UUID at that time. This UUID is then used to ensure compatibility amoung components. (If component X outputs data format 'DF-Y', and another component Z specifies 'DF-Y' as its input data format, then X is said to be `composable` with component Z). - -Since data formats will be shared across components, the onboarding catalog should be checked first to see if the desired data format is available before creating one. -The vision is to have a repository of shared data formats that developers and teams can re-use and also provide them the means to extend and create new custom data formats. -A data format is referenced by its data format id and version number. - -## JSON schema - -The data format specification is represented (and validated) against this -[Data Format json schema](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/component-json-schemas/browse/data-format-schema.json) and described below: - -### Meta Schema Definition - -The "Meta Schema" implementation defines how data format JSON schemas can be written to define user input. It is itself a JSON schema (thus it is a "meta schema"). It requires the name of the data format entry, the data format entry version and allows a description under "self" object. The meta schema version must be specified as the value of the "dataformatversion" key. Then the input schema itself is described as one of the four types listed below: - -Type | Description ----- | ----------- -jsonschema | inline standard JSON Schema definitions of JSON inputs -delimitedschema | delimited data input using a JSON description and defined delimiter -unstructured | unstructured text, and reference that allows a pointer to another artifact for a schema. -reference | allows for XML schema, but can be used to reference other JSON, delimitedschema, and unstructured schemas as well. - -## Example Schemas: - -### `jsonschema` - -* [TCA output](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/tca_hi_lo/tcaoutput.json) - -* [CUDA simple example](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/cuda/simplejson.json) - -* [CUDA nested example](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/cuda/nestedjson.json) - -### `delimitedschema` - -``` -{ - "self": { - "name": "Delimited Format Example", - "version": "1.0.0", - "description": "Delimited format example just for testing" - - }, - "dataformatversion": "1.0.0", - "delimitedschema": { - "delimiter": "|", - "fields": [{ - "name": "field1", - "description": "test field1", - "fieldtype": "string" - }, { - "name": "field2", - "description": "test field2", - "fieldtype": "boolean" - }] - } -} -``` - -### `unstructured` - -* [CUDA example](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/cuda/unstructuredtext.json) - -### `reference` - -* [TCA Hi Lo input](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse/tca_hi_lo/tcainput.json) - -Note: The referenced data format (in this case, a schema named "Common Event Format" with version of "25.0.0") must already exist in the onboarding catalog. - -## Working with Data Formats - -Data Formats can be added to the onboarding catalog (which first validates them) by using the [dcae_cli Tool](http://dcae-platform.research.att.com/components/dcae-cli/quickstart/). Here you can also list all of your data formats, show the contents of a data format, publish your data format, and even generate a data format from a input sample file. For a list of these capabilities, see [Data Format Commands](/components/dcae-cli/commands/#data_format). - diff --git a/platformdoc/docs/components/dcae-cli/blueprint-generator/blueprint_generator.rst b/platformdoc/docs/components/dcae-cli/blueprint-generator/blueprint_generator.rst deleted file mode 100644 index d55804f0..00000000 --- a/platformdoc/docs/components/dcae-cli/blueprint-generator/blueprint_generator.rst +++ /dev/null @@ -1,78 +0,0 @@ - - -Blueprint Generator (DCAE) -============================================= - -What is the Blueprint Generator? -++++++++++++++++++++++++++++++++ -The blueprint generator is a java rewrite of the tosca lab python tool. The point of this tool is to be able to take a component spec for a given micro-service and translate that component spec into a blueprint yaml file that can be used during deployment. - - -Steps to run the blueprint generator: -+++++++++++++++++++++++++++++++++++++ - -1. Download the jar file from Nexus by clicking `here `_ or running - ``wget https://nexus.onap.org/service/local/repositories/releases/content/org/onap/dcaegen2/platform/cli/blueprint-generator/1.2.1/blueprint-generator-1.2.1-executable.jar`` - -2. To execute the application, run the following command: - ``java -jar blueprint-generator-1.2.1-executable.jar blueprint`` - -3. This execution will provide the help, as you have not provided the required flags. - -4. When ready you can run the program again except with the required flags. - -5. OPTIONS: - -p: The path to where the final blueprint yaml file will be created (required) - - -i: The path to the JSON spec file (required) - - -n: Name of the blueprint (optional) - - -t: the path to the import yaml file (optional) - - -d: If this flag is present the bp generator will be created with dmaap plugin (optional) - - -o: This flag will create a service component override for your deployment equal to the value you put (optional) - -6. An example running this program would look like this: - ``java -jar blueprint-generator-1.2.1-executable.jar -p blueprint_output -i ComponentSpecs/TestComponentSpec.json -n TestAppBlueprint`` - - -Extra information ------------------ - -1. The component spec must be of the same format as stated in the onap `readthedocs `_ page - -2. If the tag says required then the program will not run without those tags being there - -3. If the tag says optional then it is not necessary to run the program with those tags - -4. If you do not add a -n tag the blueprint name will default to what it is in the component spec - -5. If the directory you specified in the -p tag does not already exist the directory will be created for you - -6. The -t flag will override the default imports set for the blueprints. To see an example of how the import yaml file should be structured see the testImports.yaml file under the folder TestCases - - -How to create policy models: -+++++++++++++++++++++++++++++++++++++ - -1. Policy model creation can be done with the same jar as downloaded for the blueprint generation. - -2. Run the same command as the blueprint generator except replace the ``blueprint`` positional with ``policy`` - -3. Example command: - ``java -jar blueprint-generator-1.2.1-executable.jar policy`` - -4. Options: - - -i: The path to the JSON spec file (required) - - -p: The Output path for all of the models (required) - -Extra information ------------------ - -1. Not all component specs will be able to create policy models - -2. Multiple policy model files may be create from a single component spec diff --git a/platformdoc/docs/components/dcae-cli/commands.md b/platformdoc/docs/components/dcae-cli/commands.md deleted file mode 100644 index d198f947..00000000 --- a/platformdoc/docs/components/dcae-cli/commands.md +++ /dev/null @@ -1,453 +0,0 @@ -# dcae_cli Commands - -The dcae_cli tool has four command groups. Each has several sub-commands. - -## `catalog` - -The `catalog` command lists and shows resources (components and data_formats) in the 'onboarding' catalog (regardless of the owner). A resource can have a status of `staged` or `published`. By default, only `published` resources are displayed. To see `staged` resources, add the --expanded argument. - -Catalog Status | Meaning --------------- | ------- -staged | resource has be added (and validated), but is under development -| staged data_formats can only be referenced in their owners component specs -| staged components can only be deployed by their owners -published | resource has been tested and can be shared -| published data_formats can be used in anyone's component spec -| published components and be deployed by anyone - -``` -$ dcae_cli catalog --help -Usage: dcae_cli catalog [OPTIONS] COMMAND [ARGS]... - -Options: - --help Show this message and exit. - -Commands: - list Lists resources in the onboarding catalog - show Provides more information about resource -``` - -### List onboarding catalog contents - -``` -$ dcae_cli catalog list -Components: -+--------------------------------+---------+--------+---------------------------------------------------------------------+--------+-----------+------------+ -| Name | Version | Type | Description | Owner | Status | Published | -+--------------------------------+---------+--------+---------------------------------------------------------------------+--------+-----------+------------+ -| AAI_Broker | 3.1.0 | docker | DCAE Interface to DTI's AAI View | tc677g | published | 2017-06-15 | -| DcaeSyslogCollector | 2.0.0 | docker | DCAE Control Plane Syslog Collector | sh1986 | published | 2017-08-04 | -| cdap.dmaap.spec.example | 0.2.0 | cdap | dmaap spec example. Not a functioning application, only for showing | tc677g | published | 2017-07-24 | -| | | | how to pub/sub dmaap. Pretend this is like MAP with VES in and ou.. | | | | -| cdap.event.proc.enrich.app | 1.0.3 | cdap | CDAP Event Processing Enrich application | an4828 | published | 2017-09-20 | -| cdap.event.proc.map.app | 1.0.3 | cdap | CDAP Event Processing Map application | an4828 | published | 2017-09-20 | - -... - -Data formats: -+--------------------------------------------+---------+-----------------------------------------------------------------------+--------+-----------+------------+ -| Name | Version | Description | Owner | Status | Published | -+--------------------------------------------+---------+-----------------------------------------------------------------------+--------+-----------+------------+ -| FOI_PM_VHSS_data_format | 1.0.0 | CSV pipe delimited data format for VHSS PM files | sr229c | published | 2017-09-05 | -| Map_input | 1.0.0 | The input format for Mapper, that in 1707 is the UCSNMP Collector | an4828 | published | 2017-07-18 | -| | | output format, but will support more formats later | | | | -| Syslog Collector Parsed Json Message | 1.0.0 | Post processed/parsed collected syslog message | sh1986 | published | 2017-08-04 | -| Syslog Collector Syslog Message Input | 1.0.0 | The input message for the DCAE syslog collector is free/unstructured | sh1986 | published | 2017-08-04 | -| | | text | | | | -| TCA Alert Definition | 1.0.0 | The format of the output event from TCA | an4828 | published | 2017-08-10 | -| VES_specification | 5.28.4 | VES spec for 5.4 | vv770d | published | 2017-09-19 | - -... - -``` - -### Show the contents of an item in the catalog - -``` -$ dcae_cli catalog show FOI_PM_VHSS_data_format - -Data format ------------ -{ - "dataformatversion": "1.0.0", - "delimitedschema": { - "delimiter": "|", - "fields": [ - { - "description": "System ID", - "fieldtype": "string", - "name": "SYSTEM" - }, - { - "description": "Date", - "fieldtype": "string", - "name": "DATE" - }, - { - "description": "Time", - "fieldtype": "string", - "name": "TIME" - }, - -... - -``` - ---------------------------------------------------------------------------- - -## `component` - -The `component` command is for validating (adding), listing, showing, verifying generated configuration, running, undeploying, and publishing components that YOU own. - -``` -$ dcae_cli component --help -Usage: dcae_cli component [OPTIONS] COMMAND [ARGS]... - -Options: - --help Show this message and exit. - -Commands: - add - dev Set up component in development for... - list Lists components in the onboarding catalog. - publish Pushes COMPONENT to the onboarding catalog - run Runs the latest version of COMPONENT. - show Provides more information about COMPONENT - undeploy Undeploys the latest version of COMPONENT. -``` - ---------------------------------------------------------------------------- - -### Add a Component - -A component must be added to the onboarding catalog in order to be tested by the dcae_cli tool. The process of adding a component also validates it's component specification. In order to add a component, the component docker image (or CDAP jar) must exist locally. - -Components in the onboarding catalog can be run by others, once they are `published.` `Published` components cannot be modified or deleted. Rather a new version can be created instead. - -Validated component specs are used later to generate Tosca models and Cloudify Blueprints for the component, which makes them available for use in the SDC Tool for creating services. - -``` -$ dcae_cli component add --help -Usage: dcae_cli component add [OPTIONS] COMPONENT-SPECIFICATION - -Options: - --update Updates a previously added component if it has not been already - published - --help Show this message and exit. -``` - -``` -$ dcae_cli component add component-spec.json -``` - ---------------------------------------------------------------------------- - -### List Components - -List components in the onboarding catalog that owned by YOUR userid.. - -``` -$ dcae_cli component list -Active profile: solutioning -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| Name | Version | Type | Description | Status | Modified | #Deployed | -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| cdap.helloworld.endnode | 0.8.0 | cdap | cdap test component | staged | 2017-05-23 04:14:35.588075 | 0 | -| sandbox.platform.laika | 0.5.0 | docker | Web service used as a stand-alone test DCAE service compone.. | staged | 2017-05-23 04:07:44.065610 | 0 | -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -``` - -The fields `Name`, `Version`, `Type`, `Description` are referenced from the component specification's `self` JSON. -Use the "--deployed" argument to see more details on deploymed components - ---------------------------------------------------------------------------- - -### Run a Component - -The `run` operation is to be used for running your application in its container remotely on the activated environment. Docker containers have the additional option to run locally on your development machine. If the component uses Dmaap, you can specify the Dmaap Connection Object as well. Refer to [Dmaap Connection Object](/components/component-specification/dmaap-connection-objects). - -When you run a component via the dcae_cli Tool, remember the blueprint has not been created and is not used for deployment. - -In order to run the component, the data formats and component must have been added to the onboarding catalog. - -**DOCKER NOTE:** Make sure the Docker image has been uploaded to the shared registry. - -A docker component can be run in either `attached` or `unattached` mode. (Default is unattached). - -Mode | Description ----- | ----------- -attached | component is run in the 'foreground', container logs are streamed to stdout. Ctrl-C is used to terminate the dcae_cli session. -unattached | component is run in the 'background', container logs are viewed via `docker logs` command, container runs until undeployed with dcae_cli `undeploy` command. - - -#### Run a component in attached mode: - -``` -$ dcae_cli -v component run --attached sandbox.platform.laika:0.5.0 - -DCAE.Docker | INFO | Running image 'registry.proto.research.att.com/dcae-rework/laika:0.4.0' as 'mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika' -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | Consul host: realsolcnsl00.dcae.solutioning.homer.att.com - -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | service name: mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika - -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | Generated config: {'multiplier': 3} - -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) - -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | 135.205.226.140 - - [24/May/2017 03:37:57] "GET /health HTTP/1.1" 200 - - -DCAE.Docker.mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika | INFO | 135.205.226.140 - - [24/May/2017 03:38:12] "GET /health HTTP/1.1" 200 - -``` - -Hit Ctrl-C to terminate session. - -``` -^CDCAE.Docker | INFO | Stopping container 'mh677g.b7287639-37f5-4f25-8d54-8a2087f4c8da.0-5-0.sandbox-platform-laika' and cleaning up... -``` - -#### Run a component in unattached mode: - -``` -$ dcae_cli -v component run sandbox.platform.laika:0.5.0 -DCAE.Docker | INFO | Running image 'registry.proto.research.att.com/dcae-rework/laika:0.4.0' as 'mh677g.4811da0e-08d5-429f-93bf-bf6814924577.0-5-0.sandbox-platform-laika' -DCAE.Run | INFO | Deployed /mh677g.4811da0e-08d5-429f-93bf-bf6814924577.0-5-0.sandbox-platform-laika -``` - -**NOTE** You must undeploy this component when finished testing. This is important to conserve resources in the environment. - -#### Run a component that subscribes to Dmaap MR or DR - -``` -$ dcae_cli -v component run --attached --dmaap-file $dmaap-connection-file sandbox.platform.laika:0.5.0 -``` - ---------------------------------------------------------------------------- - -### Undeploy a Component - -The `undeploy` command is used to undeploy any instance of a specified component/version that you have deployed. This includes cleaning up the configuration. - -``` -$ dcae_cli component undeploy sandbox.platform.laika:0.5.0 -DCAE.Undeploy | WARNING | Undeploying components: 1 -DCAE.Undeploy | WARNING | Undeployed components: 1 -``` - ---------------------------------------------------------------------------- - -### Publish a component - -Once a component has been tested, it should be published in the onboarding catalog using the `publish` sub-command . -Publishing will change the status of the component (from `staged` to `published`), indicating that it has been tested, and making it accessible for other developers to use. - -**Note** Before a component can be published, all data_formats that it references must be published. - -``` -dcae_cli component publish sandbox.platform.laika:0.5.0 -``` - ---------------------------------------------------------------------------- - -### Show a Component - -This will print out the contents of a component and is useful to copy a component spec. - -``` -$ dcae_cli component show -``` - ---------------------------------------------------------------------------- - -### Run the `dev` command - -The `dev` command is used as part of a process to see the platform generated configuration. It established the environment variables and is best explained [here](/components/dcae-cli/walkthrough/#view-the-platform-generated-configuration). - -``` -$ dcae_cli component dev component-spec.json -Ready for component development -``` - ---------------------------------------------------------------------------- - -## `data_format` - -The `data_format` command is for validating (adding), listing, showing, publishing data_formats that YOU own. data_formats can also be generated with this command. - -``` -$ dcae_cli data_format --help -Usage: dcae_cli data_format [OPTIONS] COMMAND [ARGS]... - -Options: - --help Show this message and exit. - -Commands: - add Tracks a data format file DATA_FORMAT-SPECIFICATION... - generate Create schema from a file or directory... - list Lists all your data formats - publish Publishes data format to make available to others... - show Provides more information about FORMAT -``` - ---------------------------------------------------------------------------- - -### Add a Data Format - -A data_format must be in the onboarding catalog in order to be referenced in the component specification. The process of adding a data_format also validates it. -Data_formats in the onboarding catalog can be run by others, once they are `published.` `Published` data_formats cannot be modified or deleted. Rather a new version can be created instead. - -``` -$ dcae_cli data_format add --help -Usage: dcae_cli data_format add [OPTIONS] DATA_FORMAT-SPECIFICATION - -Options: - --update Updates a previously added data_format if it has not been already - published - --help Show this message and exit. -``` - -``` -dcae_cli data_format add health.json -``` - ---------------------------------------------------------------------------- - -### List Data Formats - -Only data_formats owned by YOUR userid will be shown. - -``` -$ dcae_cli data_format list - -Data formats for mh877g -+-------------------------------+---------+-------------------------------------------+--------+----------------------------+ -| Name | Version | Description | Status | Modified | -+-------------------------------+---------+-------------------------------------------+--------+----------------------------+ -| sandbox.platform.laika.health | 0.1.0 | Data format used for the /health endpoint | staged | 2017-05-23 04:02:38.952799 | -+-------------------------------+---------+-------------------------------------------+--------+----------------------------+ -``` - -The fields `name`, `version`, `description` are referenced from the data format specification's `self` JSON. `Status` represents the status of the data format in the catalog. See [Publish a Data Format](#publish-a-data-format) for more info. - ---------------------------------------------------------------------------- - -### Show a Data Format - -This will print out the contents of a data_format and is useful for copying a data_format. - -``` -$ dcae_cli data_format show -``` - ---------------------------------------------------------------------------- - -### Publish a Data Format - -Once a data_format has been tested (by referencing it in a component spec that has been tested), it should be published in the onboarding catalog using the `publish` sub-command . -Publishing will change the status of the data_format (from `staged` to `published`), indicating that it has been tested, and making it accessible for other developers to use. - -``` -$ dcae_cli data_format publish data_format.json -``` - ---------------------------------------------------------------------------- - -### Generate a Data Format - -If you already have a valid input or output file, you can use the generate command to create the it's data format specification. - -``` -$ dcae_cli data_format generate name:version file-or-dir-path -``` - ---------------------------------------------------------------------------- - -## `profiles` - -The`profiles` command is for creating, deleting, listing, showing, activating, and updating (set) profiles. The profile contains environment variables used to connect to different environments. This is used in the running and deployment of a component using the `dcae_cli component run` or `dev` command. - -``` -$ dcae_cli profiles --help -Usage: dcae_cli profiles [OPTIONS] COMMAND [ARGS]... - -Options: - --help Show this message and exit. - -Commands: - activate Sets profile NAME as the active profile - create Creates a new profile NAME initialized with... - delete Deletes profile NAME - list Lists available profiles - set Updates profile NAME such that KEY=VALUE - show Prints the profile dictionary -``` - ---------------------------------------------------------------------------- - -### List the available profiles - -``` -$ dcae_cli profiles list -* solutioning - 1710 - 1802 -``` - -The * identifies the active profile. `dcae-cli` is currently installed with profiles for the `solutioning`, `1710`, and `1802` environments. They are intended for the following: - -Environment | Description ------------ | ----------- -solutioning | default environment; used for initial component developer testing with the dcae_cli tool. -1710 | FTL3 (Functional Testing Lab 3) environment, which represents the 1710 release. -1802 | FTL3a (Functional Testing Lab 3a) environment, which represents the 1802 release. - ---------------------------------------------------------------------------- - -### Show the details of a profile - -``` -$ dcae_cli profiles show solutioning -{ - "cdap_broker": "cdap_broker", - "config_binding_service": "config_binding_service", - "consul_host": "realsolcnsl00.dcae.solutioning.homer.att.com", - "docker_host": "realsoldokr00.dcae.solutioning.homer.att.com:2376" -} -``` - ---------------------------------------------------------------------------- - -### Activate a profile - -To switch among profiles, use the activate sub-command. A subsequent `list` will reveal the change made. - -``` -$ dcae_cli profiles activate test -``` - ---------------------------------------------------------------------------- - -### Create a new profile - -If you want to work in a different environment using the dcae_cli tool, you can make your own profile. (The environment must be a working DCAE Platform environment). - -``` -$ dcae_cli profiles create new-profile -``` - -After creating you would assign the variables with the `set` sub-command. Then activate it to use. - ---------------------------------------------------------------------------- - -### Set variables in a profile - -``` -$ dcae_cli profiles set $profile $key $value -``` - ---------------------------------------------------------------------------- - -### Delete a profile - -``` -$ dcae_cli profiles delete new-profile -``` diff --git a/platformdoc/docs/components/dcae-cli/quickstart.md b/platformdoc/docs/components/dcae-cli/quickstart.md deleted file mode 100644 index a70cd037..00000000 --- a/platformdoc/docs/components/dcae-cli/quickstart.md +++ /dev/null @@ -1,110 +0,0 @@ -# Overview - -The `dcae-cli` is a Python command-line tool for component developers. With it, the developer can : - -* validate the data formats and component specifications -* publish the validated data formats and component specifications into the `onboarding catalog` -* access the `onboarding catalog` to search for existing data formats (for possible reuse) and component specs -* deploy a component onto a local or remote DCAE platform for functional and pair-wise testing (This is done without Cloudify) - -The git repository for the dcae_cli tool can be found [here](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae-cli/browse) - -## Pre-requisites - -### For Docker - -There are two options for development with Docker: - -#### For local development - -* Install [Docker engine](https://docs.docker.com/engine/installation/) locally on your machine. -* Know the *external ip* of where the Docker engine is running. The external ip is needed so that service discovery will connect to it. - - *(For OSX users, this means making sure the VirtualBox VM that is running your Docker engine has a bridged adapter and getting the ip of that adapter).* - -#### For remote development - -* Have access to a remote host with Docker engine installed and with remote API access. -* Have the associated connection information: - - domain name or IP and port (port should be either 2375 or 2376). Use this information to establish an active [profile](/components/dcae-cli/commands#activate-a-profile). - -### For CDAP - -None at this time. - -### Python, Pip, Virtualenv - -Install python, pip (9.0.1 or higher), and virtualenv if they are not installed. Do these when not in a VPN to avoid possible network issues. - -``` - sudo apt-get -f install python - sudo apt-get -f install python-pip - sudo pip install virtualenv -``` - -Set up a virtual environment and activate - -``` - virtualenv cli_tool - source cli_tool/biin/activate -``` - -## Install dcae_cli - -``` -pip install --extra-index-url https://nexus01.research.att.com:8443/repository/solutioning01-mte2-pypi/simple dcae-cli -``` - -## Check dcae_cli version - -You can verify the version of the dcae-cli with the following command. To get the latest version of the dcae_cli tool, - -``` -$ dcae_cli --version -``` - -## Upgrade dcae_cli - -Periodically, upgrade the dcae_cli to get the latest version - -``` -pip install --upgrade --extra-index-url https://nexus01.research.att.com:8443/repository/solutioning01-mte2-pypi/simple dcae-cli -``` - -## Configuration - -When running the tool for the first time, a [configuration directory](http://click.pocoo.org/5/api/#click.get_app_dir) and configuration file will be created. - -The configuration is first sourced from a remote server that is managed by the platform team. You will be prompted to enter your ATTUID to complete this process. - -### Re-initializing Configuration - -Configuration can be re-initialized or reset. There is a `--reinit` flag that is to be used to re-initialize your configuration and your environment profiles. You may be instructed to re-initialize after certain updates are made to the dcae_cli tool. When you re-initialize the configuration, your configuration will be added to or updated from the platform configuration and profiles. No profiles will be deleted via the reinit process. - -To re-initialize: - -``` -$ dcae_cli --reinit -``` - -## Verify Installation - -To Verify that the dcae_cli tool is installed, run the following command and look for the output below. - -``` -$ dcae_cli --help -Usage: dcae_cli [OPTIONS] COMMAND [ARGS]... - -Options: - -v, --verbose Prints INFO-level logs to screen. - --reinit Re-initialize dcae-cli configuration - --version Show the version and exit. - --help Show this message and exit. - -Commands: - catalog - component - data_format - profiles -``` - -Refer to [dcae_cli Commands](/components/dcae-cli/commands). diff --git a/platformdoc/docs/components/dcae-cli/walkthrough.md b/platformdoc/docs/components/dcae-cli/walkthrough.md deleted file mode 100644 index 683bfabd..00000000 --- a/platformdoc/docs/components/dcae-cli/walkthrough.md +++ /dev/null @@ -1,340 +0,0 @@ -# Walk-through - -This section demonstrates the flow and usage of the dcae_cli tool to onboard a typical component to the DCAE platform. The commands are explained in more detail in [dcae_cli Commands](/components/dcae-cli/commands). - -* [Add (and validate) a data format](#add-a-data-format) -* [Add (and validate) the component](#add-the-component) -* [View the platform generated configuration](#view-the-platform-generated-configuration) -* [If needed, Create the dmaap file for Dmaap Testing](#create-input-file-for-dmaap-testing) -* [If needed, Create the input file for *Sourced at Deployment* Testing](#create-input-file-for-sourced-at-deployment-testing) -* [Run the component](#run-the-component) -* [If needed, Create the DTI entry in CONSUL for DTI Reconfiguration Testing](#create-DTI-entry-for-reconfiguration) -* [Undeploy the component](#undeploy-the-component) -* [Publish the component and data_format](#publish-the-component-and-data_format) to let others know its ready for reuse -* [List the Catalog Contents](#list-the-catalog-contents) to see your published resources - -This walk-through uses example projects that can be found in CodeCloud: - -* [laika](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/laika/browse) -* [CDAP examples](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_examples/browse) - -------------------------------------------------------------------- - -## Add a Data Format -``` -$ dcae_cli data_format add $HOME/laika/data-formats/health.json -``` - -Verify that the data_format was added -``` -$ dcae_cli data_format list | grep laika -| sandbox.platform.laika.health | 0.1.0 | Data format used for the /health endpoint | staged | 2017-11-07 21:48:47.736518 | -``` - -(Note: Each of the data formats for your component need to be added, unless already existing in the onboarding catalog ) - -------------------------------------------------------------------- - -## Add the Component - -``` -$ dcae_cli component add $HOME/laika/component-spec.json -``` - -Verify that the component was added -``` -$ dcae_cli component list -Active profile: solutioning - -+-------------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| Name | Version | Type | Description | Status | Modified | #Deployed | -+-------------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| sandbox.platform.laika | 0.7.0 | docker | Web service used as a stand-alone test DCAE service compone.. | staged | 2017-11-08 20:27:34.168854 | 0 | -+-------------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -``` - -------------------------------------------------------------------- - -## View the platform generated configuration - -The `component dev` command is useful during onboarding. Running this command is part of a multi-step process that sets up a temporary test environment, generates your application configuration, makes it available in that environment, and allows you to view that configuration to help with debugging. - -Here is a step-by-step example based on a component specification called `component-spec.json`. - -### Step 1 - Run the component dev command - -(This creates a file called env_$ENV (in the current directory)- where $ENV is the name of the active profile. Note: SERVICE_NAME and HOSTNAME always resolve to the same value). - -``` -$ dcae_cli component dev component-spec.json -Ready for component development - -Setup these environment variables. Run "source env_solutioning": - -export DOCKER_HOST=realsoldokr00.dcae.solutioning.homer.att.com:2376 -export SERVICE_CHECK_INTERVAL=15s -export CONFIG_BINDING_SERVICE=config_binding_service -export HOSTNAME=ph8547.b599cf0e-75e8-484b-b8e2-557576d77036.0-7-0.sandbox-platform-laika -export CONSUL_HOST=realsolcnsl00.dcae.solutioning.homer.att.com -export CDAP_BROKER=cdap_broker -export SERVICE_NAME=ph8547.b599cf0e-75e8-484b-b8e2-557576d77036.0-7-0.sandbox-platform-laika -export SERVICE_CHECK_TIMEOUT=1s -export SERVICE_CHECK_HTTP=/health - -Press any key to stop and to clean up -``` - -### Step 2 - Setup the environment -In another window, setup the temporary testing environment, by executing the environment file created above. - -``` -$ source env_solutioning -``` - -(The application configuration is now available under the SERVICE_NAME shown above - `ph8547.b599cf0e-75e8-484b-b8e2-557576d77036.0-7-0.sandbox-platform-laika`). - - -### Step 3 - Query CONSUL -Query CONSUL to get the IP/PORT of CONFIG BINDING SERVICE - -``` -$ curl http://$CONSUL_HOST:8500/v1/catalog/service/$CONFIG_BINDING_SERVICE -[ - { - "ID": "bfbc220d-4603-7f90-ec2e-611d3c330f20", - "Node":"realsoldokr00", - "Address": "10.226.1.15", - "Datacenter":"solutioning-central", - "TaggedAddresses": { - "lan":"10.226.1.15", - "wan":"10.226.1.15" - }, - "NodeMeta": {}, - "ServiceID": "472b116f9035:config_binding_service:10000", - "ServiceName": "config_binding_service", - "ServiceTags": [], - "ServiceAddress":"135.205.226.126", - "ServicePort":10000, - "ServiceEnableTagOverride": false, - "CreateIndex":1078990, - "ModifyIndex":1078990 - } -] -``` - -Fetch the generated configuration from CONFIG BINDING SERVICE using the 'serviceaddress' and 'serviceport' from above along with $SERVICE_NAME from earlier. - -``` -$ curl http://135.205.226.126:10000/service_component/ph8547.b599cf0e-75e8-484b-b8e2-557576d77036.0-7-0.sandbox-platform-laika - -{"streams_subscribes": {}, "services_calls": {}, "multiplier": 3, "streams_publishes": {}} -``` - -------------------------------------------------------------------- - -## Create the input file for Dmaap Testing - -Currently, the dcae-cli tool does not have the capability to provision topics or feeds. Therefore, in order to test with `message router` or `data router` feeds, the developer must manually provision the topic or feed and then provide the connection details in the form of a DMaap JSON file for testing. This file is then passed in on the `component run` or `component dev` commands by using the argument `--dmaap-file`. - -The structure of the DMaaP JSON is an object of config keys with the topic or feed connection details. The config keys are the `config_key` values specified in the component specification streams section where the streams must be type `message router` or `data router`. This file corresponds to the `Dmaap Connection Object` which is generated by the platform and provided to the component at runtime. The exception is that `delivery_url` cannot be provided in the dmaap-file because it is not created until the component is deployed. Refer to [Dmaap Connection Object](/components/component-specification/dmaap-connection-objects), for details on creating the dmaap-file for testing. - -------------------------------------------------------------------- - -## Create the input file for *Sourced at Deployment* Testing - -Components may have configuration parameters whose values are to be sourced at deployment time. For example, there are components whose configuration parameters are to come from DTI events which are only available when the component is deployed. This is established in the [component specification](/components/component-specification/common-specification/#parameters) by setting the property `sourced_at_deployment` to `true` for each applicable parameter. - -Then, use the `--inputs-file` command-line argument when running the component `dev` or `run` command for your component. This is to simulate providing the dynamic, deployment time values for those parameters marked as `sourced_at_deployment`. - -For example, if your component specification has the following configuration parameters: - -``` -"parameters": [{ - "name": "vnf-ip", - "value": "", - "sourced_at_deployment": true -}, -{ - "name": "static-param", - "value": 5 -}] -``` - -Pass in an input file that looks like: - -``` -{ - "vnf-ip": "10.100.1.100" -} -``` - -The application configuration would look like: - -``` -{ - "vnf-ip": "10.100.1.100", - "static-param": 5 -} -``` - -------------------------------------------------------------------- - -## Run the component - -The `run` operation is to be used for running your application in its container remotely on the activated environment. Docker containers have the additional option to run locally on your development machine. If the component uses Dmaap, you can specify the Dmaap Connection Object as well. Refer to [Dmaap Connection Object](/components/component-specification/dmaap-connection-objects). - -In order to run the component, the data formats and component must have been added to the onboarding catalog. - -To verify what's in the catalog: - -``` -$ dcae_cli catalog list --expanded -Active profile: solutioning -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| Name | Version | Type | Description | Status | Modified | #Deployed | -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ -| sandbox.platform.laika | 0.7.0 | docker | Web service used as a stand-alone test DCAE service compone.. | staged | 2017-11-08 20:27:34.168854 | 0 | -+-------------------------+---------+--------+---------------------------------------------------------------+--------+----------------------------+-----------+ - -``` - - -For Docker - -**NOTE** Make sure the Docker image has been uploaded to the shared registry. - -A docker component can be run in either `attached` or `unattached` mode. (Default is unattached). - -Mode | Description ----- | ----------- -attached | component is run in the 'foreground', container logs are streamed to stdout. Ctrl-C is used to terminate the dcae_cli session. -unattached | component is run in the 'background', container logs are viewed via `docker logs` command, container runs until undeployed with dcae_cli `undeploy` command. - - -#### Run a component in attached mode: - -``` -$ dcae_cli -v component run --attached sandbox.platform.laika:0.7.0 -DCAE.Docker | INFO | Running image 'nexus01.research.att.com:18443/repository/solutioning01-mte2-docker/dcae-platform/laika:0.7.0' as 'ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika' -DCAE.Docker.ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika | INFO | Consul host: realsolcnsl00.dcae.solutioning.homer.att.com - -DCAE.Docker.ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika | INFO | service name: ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika - -DCAE.Docker.ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika | INFO | get_config returned the following configuration: {"streams_subscribes": {}, "multiplier": 3, "services_calls": {}, "streams_publishes": {}} - -DCAE.Docker.ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika | INFO | * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) - -DCAE.Docker.ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika | INFO | 135.205.226.156 - - [08/Nov/2017 23:27:30] "GET /health HTTP/1.1" 200 - - - -Hit Ctrl-C to terminate session. - -^C -DCAE.Docker | INFO | Stopping container 'ph8547.dbb13a3c-d870-487e-b584-89929b856b5c.0-7-0.sandbox-platform-laika' and cleaning up... -``` - -#### Run a component in unattached mode: - -``` -$ dcae_cli -v component run sandbox.platform.laika:0.7.0 -DCAE.Docker | INFO | Running image 'nexus01.research.att.com:18443/repository/solutioning01-mte2-docker/dcae-platform/laika:0.7.0' as 'ph8547.22629ebd-417e-4e61-a9a0-f0cb16d4cef2.0-7-0.sandbox-platform-laika' -DCAE.Run | INFO | Deployed ph8547.22629ebd-417e-4e61-a9a0-f0cb16d4cef2.0-7-0.sandbox-platform-laika. Verifying.. -DCAE.Run | INFO | Container is up and healthy -``` - -**NOTE** You must undeploy this component when finished testing. This is important to conserve resources in the environment. - -#### Run a component that subscribes to Dmaap Message Router or Data Router - -``` -$ dcae_cli -v component run $component-that-uses-dmamp --dmaap-file $dmaap-connection-object -``` - -#### Run a component that expects input that is `sourced at deployment` - -``` -$ dcae_cli -v component run $component-that-expects-dti --inputs-file $input-file-to-simulate-dti -``` - -------------------------------------------------------------------- - -## Create the DTI Entry for Reconfiguration - -Go the the CONSUL UI for the environment that you are working in. Add a `dti` entry to represent one or more instances of `vnfType-vnfFuncId` for your component. - -For example, in 1802, go (here)[http://zldcrdm5bdcc2cnsl00.2f3fb3.rdm5b.tci.att.com:8500/ui/#/zldcrdm5bdcc2/kv/). - -Do CNTL-F to find your running MS -Click on + to add your entry -Enter your $SERVICE_NAME:dti as the Key -Paste your JSON into the box, remember to `check` the VALIDATE JSON box -Click on CREATE - -Verify that you can retrieve the dti entry you just created as in this example: (Remember to use the 'serviceaddress' and 'serviceport' from above for CONFIG BINDING SERVICE). - -``` -http://135.203.226.126:10000/dti/`` -``` -(You should see the entry you created above) - -------------------------------------------------------------------- - -## Run the reconfigure script - -Execute the components reconfigure script as defined in the Auxilary section of the component spec, such as in this example: - -``` -/opt/app/reconfigure.sh dti $updated_dti -``` - -(Refer to [DTI Reconfiguration](/components/component-specification/docker-specification/#dti-reconfiguration) - -Verify that your component received and is processed the updated set of vnfType-vnfFuncId instances. - ------------------------------------------------------------------- -## Undeploy the component - -The `undeploy` command is used to undeploy any instance of a specified component/version that you have deployed. This includes cleaning up the configuration. - -Undeploy `sandbox.platform.laika:0.7.0` that was deployed above: - -``` -$ dcae_cli -v component undeploy sandbox.platform.laika:0.7.0 -DCAE.Undeploy | WARNING | Undeploying components: 1 -DCAE.Undeploy | WARNING | Undeployed components: 1 -``` - -------------------------------------------------------------------- - -## Publish the component and data_format - -Once a component has been tested, it (and the data_format(s)) should be published in the onboarding catalog using the `publish` sub-command for both the `data_format` and `component` command. - -**Note** Before a component can be published, all data_formats that it references must be published. - -Publishing will change the status of a component or data_format, indicating that it has been tested, make accessible for other developers to use. - -``` -$ dcae_cli data_format publish sandbox.platform.laika:0.7.0 -Data format has been published - -$dcae_cli component publish sandbox.platform.laika:0.7.0 -Component has been published - -``` -------------------------------------------------------------------- - -## List the catalog contents - -``` -$dcae_cli catalog list - -$ dcae_cli data_format list | grep sandbox -| sandbox.platform.laika | 0.7.0 | docker | Web service used as a stand-alone test DCAE service compone.. | ph8547 | published | 2017-11-13 | -| sandbox.platform.laika.health | 0.1.0 | Data format used for the /health endpoint | published | 2017-11-13 17:48:10.121588 | -| sandbox.platform.any | 0.1.0 | Data format used when no data format is required. | published | 2017-11-13 17:47:51.622607 | -| sandbox.platform.laika.identity.response | 0.1.0 | Data format used for the /identity endpoint response which should | published | 2017-11-13 17:47:43.234715 | -| sandbox.platform.laika.identity.request | 0.1.0 | Data format used for the /identity endpoint request. This is | published | 2017-11-13 17:47:36.693643 | -| sandbox.platform.laika.rollcall.response | 0.1.0 | Data format used for the /rollcall endpoint respon.. | published | 2017-11-13 17:46:30.026846 | -``` - diff --git a/platformdoc/docs/components/intro.md b/platformdoc/docs/components/intro.md deleted file mode 100644 index b94fb3e3..00000000 --- a/platformdoc/docs/components/intro.md +++ /dev/null @@ -1,48 +0,0 @@ -# Overview - -DCAE components are services that provide a specific functionality and are generally written to be composable with other DCAE components, although a component can run independently as well. The DCAE platform is responsible for running and managing DCAE service components reliably. - -Currently, the DCAE platform supports two types of components, CDAP applications and Docker containers. For each, there are requirements that must be met for the component to integrate into the DCAE platform (see [CDAP](component-type-cdap.md) and [Docker](component-type-docker.md)). - -### A Component requires one or more data formats. - -A component is a software application that performs a function. It doesn't run independently; it depends upon other components. A component's function could require connecting to other components to fulfill that function. A component could also be providing its function as a service through an interface for other components to use. - -A component cannot connect to or be connected with any other component. The upstream and downstream components must *speak* the same vocabulary or *data format*. The output of an one component must match another component's input. This is necessary for components to function correctly and without errors. - -The platform requires data formats to ensure that a component will be run with other *compatible* components. - -Data formats can and should be shared by multiple components. - - -### Each Component requires a component specification. - -The component specification is a JSON artifact that fully specifies the component, it's interfaces, and configuration. It's standardized for CDAP and Docker applications and is validated using a [JSON schema](https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/component-json-schemas/browse/component-spec-schema.json). - -The component specification fully specifies all the configuration parameters of the component. This is used by the designer and by policy (future) to configure the runtime behavior of the component. - -The component specification is used to *generate* application configuration in a standardized JSON that the platform will make available to the component. This application configuration JSON will include: - -* Parameters that have been assigned values from the component specification, policy, and/or the designer -* Connection details of downstream components - -The component specification is transformed by DCAE tooling (explained later) into TOSCA models (one for the component, and in the future, one for Policy). The TOSCA models then get transformed into Cloudify blueprints. - -The component specification is used by: - -* dcae_cli tool - to validate it -* Design Tools - TOSCA models are generated from the component specification so that the component can be used by designers to compose new DCAE services in SDC. -* Policy (future) - TOSCA models are generated from the component specification so that operations can create policy models used to dynamically configure the component. -* the runtime platform - The component's application configuration (JSON) is generated from the component specification and will be provided to the component at runtime. - -## Onboarding - -Onboarding is a process that ensures that the component is compliant with the DCAE platform rules. A command-line tool called [`dcae-cli`](/components/dcae-cli/quickstart.md) is provided to help with onboarding. The high level summary of the onboarding process is: - -1. Defining the [data formats](data-formats.md) if they don't already exist. -2. Defining the [component specification](/components/component-specification/common-specification.md). See [docker](component-specification/docker-specification.md) and [CDAP](component-specification/cdap-specification.md). -3. Use the dcae_cli tool to [add the data formats](/components/dcae-cli/commands/#add-a-data-format) and [add the component](/components/dcae-cli/commands/#add-a-component) to the onboarding catalog. This process will validate them as well. -4. Use the dcae_cli tool to [deploy](/components/dcae-cli/commands/#run-a-component) the component. (The component is deployed to the environment indicated in the [profile](/components/dcae-cli/commands/#activate-a-profile) section). -5. Test the component. Also do pairwise-test the component with any other components it connects with. -7. Publish the component and data formats into the Service Design and Creation (SDC) 'catalog'. (Currently, this is a manual step, not done via the dcae_cli tool). - diff --git a/platformdoc/docs/concepts/clamp.md b/platformdoc/docs/concepts/clamp.md deleted file mode 100644 index f2eec839..00000000 --- a/platformdoc/docs/concepts/clamp.md +++ /dev/null @@ -1,8 +0,0 @@ - -# Closed Loop / CLAMP - -Closed Loop is a concept where when certain conditions are observed in the network by a component, messages are sent to a particular controller that then responds to those conditions. No manual intervention is needed. Thus the 'loop' is closed automatically. Closed Loop services are configured in the CLAMP UI, which is a non-DCAE component. - -There is no specific configuration in the component specification for closed loop services, and currently it is a manual process between the developer and the CLAMP support team, to discuss which configuration parameters are affected. These parameters can also be policy editable. - -Refer to the [Configuration Grid](/components/component-specification/configuration-grid) for more information. diff --git a/platformdoc/docs/concepts/dti.md b/platformdoc/docs/concepts/dti.md deleted file mode 100644 index 4af71187..00000000 --- a/platformdoc/docs/concepts/dti.md +++ /dev/null @@ -1,10 +0,0 @@ - -# DTI (DCAE Topology Interface) Reconfiguration - -Services that support DTI Reconfiguration are installed (with input provided by a DESIGNER (via SDC UI) or Operations (via Dashboard) to indicate which `vnfType-vnfFuncId` is to be processed by that service. When deployed, the service run but does not collect data until a DTI Event comes in. - -Whenever a network event occurs, resulting in the deployment or undeployment of a `vnfType-vnfFuncId`, it is recorded in A&AI and reported to the DTI Topology VM. The DTI Event is then received by the DTI HANDLER, which uses its values to retrieve one or more reconfiguration blueprints from INVENTORY, and then uploads those blueprint(s) to CLOUDIFY MANAGER. It then creates deployment(s) from those blueprint(s), populates them with the DTI Event values (as inputs), and then executes the install workflow on those deployment(s). - -The platform then executes the reconfigure script (configured in the Auxilary section of the component specification), passing the entire DTI Event to the component. The component can process the individual event or make a call to the CONFIG BINDING SERVICE to retrieve all of the vnfType-vnfFuncIds that are to be processed by the service. - -Refer to the [DTI Reconfiguration](/components/component-specification/docker-specification/#dti-reconfiguration) for more information. diff --git a/platformdoc/docs/concepts/on_sd.md b/platformdoc/docs/concepts/on_sd.md deleted file mode 100644 index 5e6a2f20..00000000 --- a/platformdoc/docs/concepts/on_sd.md +++ /dev/null @@ -1,52 +0,0 @@ -NOTE: THIS PAGE IS A STUB RIGHT NOW. NEEDS EDITING AND WORK. - -# CDAP Cuda Service discovery example. - -NOTE: The below URLs were temporary when the app was deployed, they are no longer valid. -However you can re-create all of this using the commands in https://codecloud.web.att.com/projects/ST_DCAECNTR/repos/dcae_cli_cdap_examples/browse/cuda. - -I deployed CUDA and got back the instance name: b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com. - -If another DCAE service component, like a collector or downstream analytics, were to perform a service lookup on this CUDA app, they would eventually get back a broker URL: http://135.205.226.76:32773/application/b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com - -Which returns a JSON that looks like this: - -``` -{ - "appname":"b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com", - "namespace":"cuda", - "healthcheckurl":"http://135.205.226.76:32773/application/b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com/healthcheck", - "metricsurl":"http://135.205.226.76:32773/application/b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com/metrics", - "url":"http://135.205.226.76:32773/application/b30b7b640fa14539890efa768b4649a2.70900c87-1c82-4690-a0b1-e0aa72cbab84.0-4-1.cdap-cuda.rework-central.dcae.ecomp.att.com", - "connectionurl":"http://135.205.226.110:11015/v3/namespaces/cuda/streams/cuda_appInputStream", - "serviceendpoints":[ - { - "url":"http://135.205.226.110:11015/v3/namespaces/cuda/apps/b30b7b640fa14539890efa768b4649a270900c871c824690a0b1e0aa72cbab84041cdapcudareworkcentraldcaeecompattcom/services/cuda_appOutputDataQuery/methods/allrows", - "method":"GET" - }, - { - "url":"http://135.205.226.110:11015/v3/namespaces/cuda/apps/b30b7b640fa14539890efa768b4649a270900c871c824690a0b1e0aa72cbab84041cdapcudareworkcentraldcaeecompattcom/services/cuda_appOutputDataQuery/methods/lastrow", - "method":"GET" - } - ] -} -``` - -There are important service discovery keys in this JSON. The first is connectionurl. That is the full URL to this application’s stream. The collector can POST data to that URL. - -The second important key is serviceendpoints. These are formed using the information found in the spec. These are, again like connectionurl, full URIs that point to the actual data service. You can try hitting one of those in your browser: http://135.205.226.110:11015/v3/namespaces/cuda/apps/b30b7b640fa14539890efa768b4649a270900c871c824690a0b1e0aa72cbab84041cdapcudareworkcentraldcaeecompattcom/services/cuda_appOutputDataQuery/methods/allrows - -And you will get back the output: -``` -[ - { - "[0]":"{\"start\": 1, \"engagements\": [{\"transcript\": [{\"type\": \"chat.scriptlineSent\", \"senderId\": \"ss754c\", \"content\": \"My SSN is $Identity.ssn. $Identity.name, Thanks for choosing AT\u0026T. My name is $Identity.name and I will be happy to assist you with our plans and services.\", \"iso\": \"2016-05-31T21:59:55-07:00\", \"timestamp\": 1464757195034, \"senderName\": \"agent\"}], \"engagementID\": \"744878782903999181\"}], \"numFound\": 1}" - } -] -``` -This is what we call “service discovery”. A component wants to know how to connect to an application and all they know is that applications name. Through a series of HTTP calls which I’m glossing over here, they eventually get back the URL I showed above which returns that JSON containing all important URLs associated with that application. - -When DMaaP is introduced, this conversation is going to change. In that case, instead of discovering an application directly, you may instead discover a feed that feeds into/out of that app. - - - diff --git a/platformdoc/docs/concepts/policy.md b/platformdoc/docs/concepts/policy.md deleted file mode 100644 index 3838dc22..00000000 --- a/platformdoc/docs/concepts/policy.md +++ /dev/null @@ -1,8 +0,0 @@ - -# Policy (not yet implemented) - -Policy is a concept where certain configuration is specified as being 'set' by Operations via a Policy UI. - -The specific configuration that represents Policy for a given service is designated in the component specification as `policy_editable`, and has a `policy_schema` defined. At any time thereafter, the values can be set in the POLICY UI. Once set, POLICY HANDLER will update the values in CONSUL. If the component is running, it will notify the component that it's policy has changed, and the component will call the CONFIG BINDING SERVICE to obtain a current set of its configuration. - -Refer to the [Configuration Grid](/components/component-specification/configuration-grid) for more information. diff --git a/platformdoc/docs/concepts/service-designer.md b/platformdoc/docs/concepts/service-designer.md deleted file mode 100644 index 5f45f318..00000000 --- a/platformdoc/docs/concepts/service-designer.md +++ /dev/null @@ -1,8 +0,0 @@ - -# Service Design - -Service Design is a concept where the `Service Designer` role uses the `Service Design and Creation (SDC) Tool to compose and services from available components. In doing so, the Service Designer will need to provide certain input that is required by those components. - -The specific configuration that represents input that at Service Designer can provide is designated in the component specification as `designer_editable`. - -Refer to the [Configuration Grid](/components/component-specification/configuration-grid) for more information. diff --git a/platformdoc/docs/glossary.md b/platformdoc/docs/glossary.md deleted file mode 100644 index a48903e1..00000000 --- a/platformdoc/docs/glossary.md +++ /dev/null @@ -1,107 +0,0 @@ -# Glossary - -## A&AI - Active and Available Inventory -Inventory DB for all network components - -## CLAMP -Non DCAE Platform Component - Controls the input and processing for Closed Loop services. - -## Closed Loop -Services designed to monitor and report back to a controlling function that automatically deals with the event reported without human interaction. - -## CDAP -Opensource Platform for development of Big Data platforms using Hadoop. Some DCAE service components are written utilizing CDAP. - -## Cloudify -Open Source application and network orchestration framework, based on TOSCA used in DCAE to deploy platform and service components from Cloudify Blueprints. Refer to [Architecture](/architecture/pieces) for more information. - -## Cloudify Blueprints -YAML formatted file used by Cloudify to deploy platform and service components. Contains all the information needed for installation. - -## Consul -Opensource Platform Component that supports Service Discovery, Configuration, and Healthcheck. Refer to [Architecture](/architecture/pieces) for more information. - -## Component -Refers to a DCAE service component which is a single micro-service that is written to be run by the DCAE platform and to be composeable to form a DCAE service. That composition occurs in the SDC. - -## Config Binding Service -DCAE Platform Component - Service Components use Config Binding Service to access Consul and retrieve configuration variables. - -## Component Specification -JSON formatted file that fully describes a component and its interfaces - -## Data Format / Data Format Specification -JSON formatted file that fully describes a components input or output - -## dcae_cli Tool -Tool used for development and testing. It validates the component and data format specifications against their respective schemas, provides the capability to view platform generated configuration for the component, assist with Dmaap testing, and DTI testing, by enabling the developer to enter DTI input at the command line. - -## Deployment Handler -DCAE Platform Component - Receives Input from DTI Handler, and talks to Cloudify to deploy components. - -## Design-Time -Refers to when the System Designer uses the SDC Tool to compose services from components in the SDC catalog. The Designer can provide input to assign/override defaults for configuration for any parameter with the property 'designer_editable' set to 'true'. - -## Deploy-Time -Refers to when a service is being deployed. This can be done automatically via the SDC Tool, or manually via the DCAE Dashboard or CLAMP UI. When manually deployed, DevOps can provide input to assign/override defaults for configuration for any parameter with the property 'sourced_at_deployment' set to 'true'. - -## Docker -Opensource Platform for development of containerized applications in the cloud. Many DCAE service components and all DCAE collectors are written utilizing Docker. - -## Dmaap -AT&T data transportation service platform that supports message-based topics and file-based feeds. Runs locally at the Edge and Centrally. - -## DTI - DCAE Topology Interface -Method of receiving input based on Network element changes (the addtion and removal of VNFs). - -## DTI Event -Data passed between DTI Topology VM and DTI Handler, a notification of a network change - -## DTI Handler -DCAE Platform Component - Receives DTI Event from DTI Topology VM, talks to Deployment Handler - -## DTI Topology VM -DCAE Platform Component - Receives DTI Event from A&AI, when there is a network change - -## Inventory -DCAE Platform Component - Postgres DB containing Cloudify Blueprints for platform and service components. - -## Onboarding catalog -Catalog used exclusively by the dcae_cli tool during development and testing. Contains validated components and data_formats to be used among developers during development and testing. - -## Policy (not yet implemented) -Refers to the setting of configuration parameters for a component, by Operations via the Policy UI. - -## Policy Handler (not yet implemented) -DCAE Platform Component that received Policy updates from Policy UI - -## Policy UI (not yet implemented) -Non DCAE Component - Policy User Interace where Operations assigns values to configuraton specified for this. - -## Run-Time -Refers to the when a service is running on the platform. Often used in conjunction with DTI events which occur at Run-time. - -## SCH - Service Change Handler -DCAE Platform Component - Receives updates from SDC and updates Inventory - -## SDC - Service Design and Creation - (formerly ASDC) -Tool used by Service Designers to compose services from SDC catalog artifacts. Once services are created, Cloudify Blueprints can be generated to deployment and installation. - -## SDC Catalog -Catalog of composable Components and Data Formats to be used in the SDC Tool to create services. Currently, there is no access to the SDC Catalog from the dcae_cli tool. Artifacts are manually placed there after testing. Every catalog artifact has a `UUID`, a globally unique identifier that identifies that artifact. - -## Self-Service -Refers to services that are supported by SDC, and that are automatically installed as a result of a Service Designer's composition and submission of a service. Only a handful of services are 'self-service' currently. Most require manual effort to generate the Tosca Model files and Cloudify Blueprints. - -## Service Component -Microservice that provides network monitoring or analytic function on the DCAE platform. - -## Service -Generally composed of multiple service components, which is deployed to the DCAE platform. - -## Tosca Model -Model generated from validately component specification, (stored in SDC catalog for Self-Service components), and used as input to generate Cloudify Blueprints - -## VNF - Virtualized Network Function -A network function that runs on one or more virtualized machines. - diff --git a/platformdoc/docs/images/IO.graffle b/platformdoc/docs/images/IO.graffle deleted file mode 100644 index 47c18b2a87b5830573b2a224c9eaf4b868fd165a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2748 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[RJ<}ZZIXpt2Zx~A;9BEua>geY(`nQ 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 MJn;?jz?tv=3!^!nC;$Ke diff --git a/platformdoc/docs/images/dftool2.png b/platformdoc/docs/images/dftool2.png deleted file mode 100755 index 5c4e3ff54fb32edd9ae760eeacebf8832860ceb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35795 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 diff --git a/platformdoc/docs/images/dmdvision.png b/platformdoc/docs/images/dmdvision.png deleted file mode 100644 index cc6f195f7ed5dca88911ca6a1481e6f71de17178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200850 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

;fr^U;{}Q0A9~RChf3;4)UEE0 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 ay8{Oc{cVR9jJl5Z&-jeFVbSR;xBeHK&ci$a diff --git a/platformdoc/docs/images/io.png b/platformdoc/docs/images/io.png deleted file mode 100644 index 26c5eba9a0912089db57f991810106d5e7d6dcf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131383 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 diff --git a/platformdoc/docs/index.md b/platformdoc/docs/index.md deleted file mode 100644 index 27d7101b..00000000 --- a/platformdoc/docs/index.md +++ /dev/null @@ -1,49 +0,0 @@ -# DCAE Platform - -## Welcome - -This is the home for the documentation for the DCAE platform. - -* Details of the platform's architecture -* User guides for the different roles - - [Component developers](components/intro.md) - -## Background - -DCAE is composed of a platform and services. The DCAE platform is all of the technical pieces responsible for the deployment and the management of DCAE services. The DCAE services are the components responsible for monitoring network services, and data collection and analytics. - -Currently, the current DCAE Platform is a hybrid running both the 'classic (or old) controller' and what's commonly called the 'new controller'. - -### For 1710 - -The classic controller is deploying and managing all CDAP applications, and docker applications that were deployed prior to 1710. -All other docker applications are being deployed and managed by the new controller. - -### For 1802 - -The classic controller is deploying and managing all CDAP applications, and some docker applications that were deployed prior to 1710. -Some docker applications are being migrated from the classic to the new controller. All new docker applications are being deployed and managed by the new controller. - - - -## Contacts - -Name | Email | Role ----- | ----- | ---- -Dan Musgrove | dm4812@att.com | Lead -Shrinkant Acharya | sa8763@att.com | Systems Engineer -Kailas Deshmukh | kd046m@att.com | Technical Lead -Anurag Agarwal | aa0918@att.com | Cloudify Manager Support -Henry Thorpe | ht1659@att.com | CDAP Broker Support -Hong Guan | hg4105@att.com | Clamp Integration Support -Ken Lehner | kl525c@att.com | Consul, Config Binding Service and Docker Container Support -Kuldeep Sharma | ks958r@att.com | DTI Topology VM, Docker Platform and CDAP Cluster Blueprint Support -Lisa Revel | lr0306@att.com | TOSCA Model Tool and Blueprint Generation -Patty Heffner | ph8547@att.com | Onboarding to the DCAE Platform -Shadi Haidar | sh1986@att.com | DTI Handler, Deployment Handler, Inventory, and A&AI Broker Support -Sue Steele | ss477j@att.com | CDAP Platform Support -Swapna Anne | sa9226@att.com | Docker Plugins Support -Terry Schmalzried | ts862m@att.com | Cloudify and CDAP Plugin Support -Tony Hansen | tony@att.com | Postgres Support -William Au | sa998j@att.com | Service Change Handler Support - diff --git a/platformdoc/mkdocs.yml b/platformdoc/mkdocs.yml deleted file mode 100644 index 35d660b0..00000000 --- a/platformdoc/mkdocs.yml +++ /dev/null @@ -1,39 +0,0 @@ -site_name: DCAE Platform -site_url: https://github.research.att.com/pages/DCAE-Rework/dcae-rework.github.io/ - -repo_url: https://github.research.att.com/DCAE-Rework - -# http://squidfunk.github.io/mkdocs-material/ -theme: material - -pages: - - Home: 'index.md' - - Change Log: 'changelog.md' - - Architecture: - - Technologies: 'architecture/pieces.md' - - Services: 'architecture/services.md' - - Service Discovery: 'architecture/service-discovery.md' - - Component Developers: - - Overview: 'components/intro.md' - - Concepts: - - Closed Loop/CLAMP: 'concepts/clamp.md' - - DTI Reconfiguration: 'concepts/dti.md' - - Policy: 'concepts/policy.md' - - Service Design: 'concepts/service-designer.md' - - Requirements/Guidelines: - - CDAP: 'components/component-type-cdap.md' - - Docker: 'components/component-type-docker.md' - - Component Specification: - - Common Elements: 'components/component-specification/common-specification.md' - - CDAP Specific: 'components/component-specification/cdap-specification.md' - - Docker Specific: 'components/component-specification/docker-specification.md' - - DMaaP connection objects: 'components/component-specification/dmaap-connection-objects.md' - - Streams Quick Reference: 'components/component-specification/streams-grid.md' - - Configuration Types Quick Reference: 'components/component-specification/configuration-grid.md' - - Examples: 'components/component-specification/examples-grid.md' - - Data Format Specification: 'components/data-formats.md' - - dcae-cli Tool: - - Quickstart: 'components/dcae-cli/quickstart.md' - - Commands: 'components/dcae-cli/commands.md' - - Walk-through: 'components/dcae-cli/walkthrough.md' - - Glossary: 'glossary.md' -- 2.16.6