blob: db7175c15047d5b56c87585cd7e71229b9926b85 [file] [log] [blame]
Ralph Knag1fca6ac2017-12-05 12:05:57 -05001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. http://creativecommons.org/licenses/by/4.0
3
4.. _intro:
5
6
Ralph Knagd2cd31b2018-04-02 16:27:46 -04007Overview
8========
Ralph Knag1fca6ac2017-12-05 12:05:57 -05009
10DCAE components are services that provide a specific functionality and
Ralph Knagd2cd31b2018-04-02 16:27:46 -040011are generally written to be composable with other DCAE components,
12although a component can run independently as well. The DCAE platform is
13responsible for running and managing DCAE service components reliably.
Ralph Knag1fca6ac2017-12-05 12:05:57 -050014
15Currently, the DCAE platform supports two types of components, CDAP
16applications and Docker containers. For each, there are requirements
17that must be met for the component to integrate into the DCAE platform
Ralph Knagd2cd31b2018-04-02 16:27:46 -040018(see :doc:`CDAP <component-type-cdap>` and
19:doc:`Docker <component-type-docker>`).
Ralph Knag1fca6ac2017-12-05 12:05:57 -050020
Ralph Knagd2cd31b2018-04-02 16:27:46 -040021A Component requires one or more data formats.
22~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ralph Knag1fca6ac2017-12-05 12:05:57 -050023
Ralph Knagd2cd31b2018-04-02 16:27:46 -040024A component is a software application that performs a function. It
25doesnt run independently; it depends upon other components. A
Ralph Knag1fca6ac2017-12-05 12:05:57 -050026components function could require connecting to other components to
27fulfill that function. A component could also be providing its function
28as a service through an interface for other components to use.
29
Ralph Knagd2cd31b2018-04-02 16:27:46 -040030A component cannot connect to or be connected with any other component.
Ralph Knag1fca6ac2017-12-05 12:05:57 -050031The upstream and downstream components must *speak* the same vocabulary
32or *data format*. The output of an one component must match another
33components input. This is necessary for components to function
34correctly and without errors.
35
36The platform requires data formats to ensure that a component will be
37run with other *compatible* components.
38
39Data formats can and should be shared by multiple components.
40
41Each Component requires a component specification.
42~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43
44The component specification is a JSON artifact that fully specifies the
45component, its interfaces, and configuration. Its standardized for
Ralph Knagd2cd31b2018-04-02 16:27:46 -040046CDAP and Docker applications and is validated using a :doc:`JSON schema <./component-json-schema>`.
Ralph Knag1fca6ac2017-12-05 12:05:57 -050047
48The component specification fully specifies all the configuration
49parameters of the component. This is used by the designer and by policy
50(future) to configure the runtime behavior of the component.
51
52The component specification is used to *generate* application
53configuration in a standardized JSON that the platform will make
54available to the component. This application configuration JSON will
55include:
56
57- Parameters that have been assigned values from the component
58 specification, policy, and/or the designer
59- Connection details of downstream components
60
61The component specification is transformed by DCAE tooling (explained
62later) into TOSCA models (one for the component, and in the future, one
63for Policy). The TOSCA models then get transformed into Cloudify
64blueprints.
65
66The component specification is used by:
67
68- dcae_cli tool - to validate it
69- Design Tools - TOSCA models are generated from the component
70 specification so that the component can be used by designers to
71 compose new DCAE services in SDC.
72- Policy (future) - TOSCA models are generated from the component
73 specification so that operations can create policy models used to
74 dynamically configure the component.
75- the runtime platform - The components application configuration
76 (JSON) is generated from the component specification and will be
77 provided to the component at runtime.
78
79Onboarding
80----------
81
82Onboarding is a process that ensures that the component is compliant
Ralph Knagd2cd31b2018-04-02 16:27:46 -040083with the DCAE platform rules. A command-line tool called
84:doc:`dcae-cli <./dcae-cli/quickstart>` is provided to
85help with onboarding. The high level summary of the onboarding process
86is:
Ralph Knag1fca6ac2017-12-05 12:05:57 -050087
881. Defining the :doc:`data formats <data-formats>` if they dont already
89 exist.
Ralph Knagd2cd31b2018-04-02 16:27:46 -0400902. Defining the :doc:`component specification <./component-specification/common-specification>`.
91 See :doc:`docker <./component-specification/docker-specification>` and
92 :doc:`CDAP <./component-specification/cdap-specification>`.
933. Use the dcae_cli tool to :any:`add the data formats <dcae_cli_add_a_data_format>` and
94 :any:`add the component <dcae_cli_add_a_component>` to the
95 onboarding catalog. This process will validate them as well.
964. Use the dcae_cli tool to
97 :any:`deploy <dcae_cli_run_a_component>` the
98 component. (The component is deployed to the environment indicated in
99 the :any:`profile <dcae_cli_activate_profile>`
100 section).
Ralph Knag1fca6ac2017-12-05 12:05:57 -05001015. Test the component. Also do pairwise-test the component with any
102 other components it connects with.
1036. Publish the component and data formats into the Service Design and
Ralph Knagd2cd31b2018-04-02 16:27:46 -0400104 Creation (SDC) catalog’. (Currently, this is a manual step, not done
105 via the dcae_cli tool).