diff options
author | Pamela Dragosh <pdragosh@research.att.com> | 2018-08-08 19:12:34 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2018-08-08 19:12:34 +0000 |
commit | 086f1dcc8d2be436a05932934fd7116b4ec3e729 (patch) | |
tree | daa9056c2bdaabe4fe7786775ea304a1b1755a67 /plugins/plugins-event/plugins-event-carrier | |
parent | efdaa0d840ed5289bda63ea15d76d8a5446c1746 (diff) | |
parent | 669915c559fb9bcd4a8f8d5239f0b9b6ab33436b (diff) |
Merge "Adding Apex docs for Plugins module"
Diffstat (limited to 'plugins/plugins-event/plugins-event-carrier')
52 files changed, 2072 insertions, 1 deletions
diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/pom.xml index 7064b3a85..7a421910b 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/pom.xml @@ -56,4 +56,24 @@ <version>4.1.25.Final</version> </dependency> </dependencies> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-jms-dir>${project.basedir}/src</adsite-plugins-event-carrier-jms-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project> diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/JMSCarrierTechnologyParameters.java b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/JMSCarrierTechnologyParameters.java index 48f5fe267..dfa8dc28a 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/JMSCarrierTechnologyParameters.java +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/main/java/org/onap/policy/apex/plugins/event/carrier/jms/JMSCarrierTechnologyParameters.java @@ -177,7 +177,7 @@ public class JMSCarrierTechnologyParameters extends CarrierTechnologyParameters * @return the provider URL */ public String getProviderURL() { - return providerURL; + return providerURL; } /** diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site-docs/adoc/fragments/ct-jms-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site-docs/adoc/fragments/ct-jms-io.adoc new file mode 100644 index 000000000..940857169 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site-docs/adoc/fragments/ct-jms-io.adoc @@ -0,0 +1,93 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== JMS IO + +APEX supports the Java Messaging Service (JMS) as input as well as output. +JMS IO is supported by the APEX JMS plugin. +Input and output support an event encoding as text (JSON string) or object (serialized object). +The input configuration is the same for both encodings, the output configuration differs. + + +=== JMS Input + +APEX will receive events from a JMS messaging system. +The input is uni-directional, an engine will only receive events from the input but not send any event to the input. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "JMS", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.jms.JMSCarrierTechnologyParameters", + "parameters" : { <2> + "initialContextFactory" : + "org.jboss.naming.remote.client.InitialContextFactory", <3> + "connectionFactory" : "ConnectionFactory", <4> + "providerURL" : "remote://localhost:5445", <5> + "securityPrincipal" : "guest", <6> + "securityCredentials" : "IAmAGuest", <7> + "consumerTopic" : "jms/topic/apexIn" <8> + } +} +---- + +<1> set JMS as carrier technology +<2> set all JMS specific parameters +<3> the context factory, in this case from JBOSS (it requires the dependency org.jboss:jboss-remote-naming:2.0.4.Final or a different version to be in the directory `$APEX_HOME/lib` or `%APEX_HOME%\lib` +<4> a connection factory for the JMS connection +<5> URL with host and port of the JMS provider +<6> access credentials, user name +<7> access credentials, user password +<8> the JMS topic to listen to + + +=== JMS Output with Text + +APEX engine send events to a JMS messaging system. +The output is uni-directional, an engine will send events to the output but not receive any event from output. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "JMS", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.jms.JMSCarrierTechnologyParameters", + "parameters" : { <2> + "initialContextFactory" : + "org.jboss.naming.remote.client.InitialContextFactory", <3> + "connectionFactory" : "ConnectionFactory", <4> + "providerURL" : "remote://localhost:5445", <5> + "securityPrincipal" : "guest", <6> + "securityCredentials" : "IAmAGuest", <7> + "producerTopic" : "jms/topic/apexOut", <8> + "objectMessageSending": "false" <9> + } +} +---- + +<1> set JMS as carrier technology +<2> set all JMS specific parameters +<3> the context factory, in this case from JBOSS (it requires the dependency org.jboss:jboss-remote-naming:2.0.4.Final or a different version to be in the directory `$APEX_HOME/lib` or `%APEX_HOME%\lib` +<4> a connection factory for the JMS connection +<5> URL with host and port of the JMS provider +<6> access credentials, user name +<7> access credentials, user password +<8> the JMS topic to write to +<9> set object messaging to `false` means it sends JSON text + + +=== JMS Output with Object + +To configure APEX for JMS objects on the output interface use the same configuration as above (for output). +Simply change the `objectMessageSending` parameter to `true`. diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..5fd0fafce --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-jms-dir}/site-docs/adoc/fragments/ct-jms-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/site.xml new file mode 100644 index 000000000..173ad4658 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-jms/src/site/site.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier JMS"> + <body> + <menu name="APEX Plugins Event Carrier JMS"> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="JMS" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/pom.xml index 297b3c47d..54996a11a 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/pom.xml @@ -41,4 +41,24 @@ <version>${version.kafka}</version> </dependency> </dependencies> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-kafka-dir>${project.basedir}/src</adsite-plugins-event-carrier-kafka-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project> diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site-docs/adoc/fragments/ct-kafka-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site-docs/adoc/fragments/ct-kafka-io.adoc new file mode 100644 index 000000000..03e1139a0 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site-docs/adoc/fragments/ct-kafka-io.adoc @@ -0,0 +1,102 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Kafka IO + +Kafka IO is supported by the APEX Kafka plugin. +The configurations below are examples. +APEX will take any configuration inside the parameter object and forward it to Kafka. +More information on Kafka specific configuration parameters can be found in the Kafka documentation: + +* link:https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html[Kafka Consumer Class] +* link:https://kafka.apache.org/090/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html[Kafka Producer Class] + + + +=== Kafka Input + +APEX will receive events from the Apache Kafka messaging system. +The input is uni-directional, an engine will only receive events from the input but not send any event to the input. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "KAFKA", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.kafka.KAFKACarrierTechnologyParameters", + "parameters" : { + "bootstrapServers" : "localhost:49092", <2> + "groupId" : "apex-group-id", <3> + "enableAutoCommit" : true, <4> + "autoCommitTime" : 1000, <5> + "sessionTimeout" : 30000, <6> + "consumerPollTime" : 100, <7> + "consumerTopicList" : ["apex-in-0", "apex-in-1"], <8> + "keyDeserializer" : + "org.apache.kafka.common.serialization.StringDeserializer", <9> + "valueDeserializer" : + "org.apache.kafka.common.serialization.StringDeserializer" <10> + } +} +---- + +<1> set Kafka as carrier technology +<2> bootstrap server and port +<3> a group identifier +<4> flag for auto-commit +<5> auto-commit timeout in milliseconds +<6> session timeout in milliseconds +<7> consumer poll time in milliseconds +<8> consumer topic list +<9> key for the Kafka de-serializer +<10> value for the Kafka de-serializer + + +=== Kafka Output + +APEX will send events to the Apache Kafka messaging system. +The output is uni-directional, an engine will send events to the output but not receive any event from the output. + + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "KAFKA", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.kafka.KAFKACarrierTechnologyParameters", + "parameters" : { + "bootstrapServers" : "localhost:49092", <2> + "acks" : "all", <3> + "retries" : 0, <4> + "batchSize" : 16384, <5> + "lingerTime" : 1, <6> + "bufferMemory" : 33554432, <7> + "producerTopic" : "apex-out", <8> + "keySerializer" : + "org.apache.kafka.common.serialization.StringSerializer", <9> + "valueSerializer" : + "org.apache.kafka.common.serialization.StringSerializer" <10> + } +} +---- + +<1> set Kafka as carrier technology +<2> bootstrap server and port +<3> acknowledgement strategy +<4> number of retries +<5> batch size +<6> time to linger in milliseconds +<7> buffer memory in byte +<8> producer topic +<9> key for the Kafka serializer +<10> value for the Kafka serializer diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..44f96527c --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-kafka-dir}/site-docs/adoc/fragments/ct-kafka-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/site.xml new file mode 100644 index 000000000..d4a353290 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-kafka/src/site/site.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier Kafka"> + <body> + <menu name="APEX Plugins Event Carrier Kafka"> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="Kafka" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/pom.xml index 0629e3707..e61dbadb8 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/pom.xml @@ -46,4 +46,24 @@ <version>${project.version}</version> </dependency> </dependencies> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-restclient-dir>${project.basedir}/src</adsite-plugins-event-carrier-restclient-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project> diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site-docs/adoc/fragments/ct-restclient-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site-docs/adoc/fragments/ct-restclient-io.adoc new file mode 100644 index 000000000..64782a8bc --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site-docs/adoc/fragments/ct-restclient-io.adoc @@ -0,0 +1,63 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== REST Client IO + +APEX can act as REST client on the input as well as on the output interface. +The media type is `application/json`, so this plugin does only work with the JSON Event protocol. + +=== REST Client Input + +APEX will connect to a given URL to receive events, but not send any events. +The server is polled, i.e. APEX will do an HTTP GET, take the result, and then do the next GET. +Any required timing needs to be handled by the server configured via the URL. +For instance, the server could support a wait timeout via the URL as `?timeout=100ms`. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "RESTCLIENT", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.restclient.RESTClientCarrierTechnologyParameters", + "parameters" : { + "url" : "http://example.org:8080/triggers/events", <2> + } +} +---- + +<1> set REST client as carrier technology +<2> the URL of the HTTP server for events + + +=== REST Client Output + +APEX will connect to a given URL to send events, but not receive any events. +The default HTTP operation is POST (no configuration required). +To change it to PUT simply add the configuration parameter (as shown in the example below). + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "RESTCLIENT", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.restclient.RESTClientCarrierTechnologyParameters", + "parameters" : { + "url" : "http://example.com:8888/actions/events", <2> + "httpMethod" : "PUT" <3> + } +} +---- + +<1> set REST client as carrier technology +<2> the URL of the HTTP server for events +<3> use HTTP PUT (remove this line to use HTTP POST) diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..4c6d2c8a2 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-restclient-dir}/site-docs/adoc/fragments/ct-restclient-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/site.xml new file mode 100644 index 000000000..a64169234 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restclient/src/site/site.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier REST-Client"> + <body> + <menu name="APEX Plugins Event Carrier REST-Client"> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="REST-Client" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/pom.xml index 97814b660..6377b82f8 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/pom.xml @@ -69,4 +69,24 @@ <version>${version.jersey}</version> </dependency> </dependencies> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-restrequestor-dir>${project.basedir}/src</adsite-plugins-event-carrier-restrequestor-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project> diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site-docs/adoc/fragments/ct-restrequestor-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site-docs/adoc/fragments/ct-restrequestor-io.adoc new file mode 100644 index 000000000..320c99880 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site-docs/adoc/fragments/ct-restrequestor-io.adoc @@ -0,0 +1,86 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== REST Requestor IO + +APEX can act as REST requestor on the input as well as on the output interface. +The media type is `application/json`, so this plugin does only work with the JSON Event protocol. + +=== REST Requestor Input + +APEX will connect to a given URL to request an input. + +[source%nowrap,json] +---- +"carrierTechnologyParameters": { + "carrierTechnology": "RESTREQUESTOR", <1> + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RESTRequestorCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/some/path/to/rest/resource", <2> + "httpMethod": "POST", <3> + "restRequestTimeout": 2000 <4> + } +}, +---- + +<1> set REST requestor as carrier technology +<2> the URL of the HTTP server for events +<3> use HTTP PUT (remove this line to use HTTP POST) +<4> request timeout in milliseconds + +Further settings are required on the consumer to define the event that is requested, for example: + +[source%nowrap,json] +---- +"eventName": "GuardResponseEvent", <1> +"eventNameFilter": "GuardResponseEvent", <2> +"requestorMode": true, <3> +"requestorPeer": "GuardRequestorProducer", <4> +"requestorTimeout": 500 <5> +---- + +<1> the event name +<2> a filter on the event +<3> the mode of the requestor +<4> a peer for the requestor +<5> a general request timeout + + +=== REST Requestor Output + +APEX will connect to a given URL to send events, but not receive any events. + +[source%nowrap,json] +---- +"carrierTechnologyParameters": { + "carrierTechnology": "RESTREQUESTOR", <1> + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restrequestor.RESTRequestorCarrierTechnologyParameters" +}, +---- + +<1> set REST requestor as carrier technology + +Further settings are required on the consumer to define the event that is requested, for example: + +[source%nowrap,json] +---- +"eventNameFilter": "GuardRequestEvent", <1> +"requestorMode": true, <2> +"requestorPeer": "GuardRequestorConsumer", <3> +"requestorTimeout": 500 <4> +---- + +<1> a filter on the event +<2> the mode of the requestor +<3> a peer for the requestor +<4> a general request timeout diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..91c4b0dc8 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-restrequestor-dir}/site-docs/adoc/fragments/ct-restrequestor-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/site.xml new file mode 100644 index 000000000..1fc8e0eca --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restrequestor/src/site/site.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier REST-Requestor"> + <body> + <menu name="APEX Plugins Event Carrier REST-Requestor"> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="REST-Requestor" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/pom.xml index 42a636e02..86d39badd 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/pom.xml @@ -56,4 +56,24 @@ <version>${version.jersey}</version> </dependency> </dependencies> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-restserver-dir>${project.basedir}/src</adsite-plugins-event-carrier-restserver-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project> diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site-docs/adoc/fragments/ct-restserver-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site-docs/adoc/fragments/ct-restserver-io.adoc new file mode 100644 index 000000000..c6c9a0865 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site-docs/adoc/fragments/ct-restserver-io.adoc @@ -0,0 +1,134 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== REST Server IO + +APEX supports a REST server for input and output. + +The REST server plugin always uses a synchronous mode. +A client does a HTTP GET on the APEX REST server with the input event and receives the generated output event in the server reply. +This means that for the REST server there has to always to be an input with an associated output. +Input or output only are not permitted. + +The plugin will start a Grizzly server as REST server for a normal APEX engine. +If the APEX engine is executed as a servlet, for instance inside Tomcat, then Tomcat will be used as REST server (this case requires configuration on Tomcat as well). + +Some configuration restrictions apply for all scenarios: + +- Minimum port: 1024 +- Maximum port: 65535 +- The media type is `application/json`, so this plugin does only work with the JSON Event protocol. + +The URL the client calls is created using + +- the configured host and port, e.g. `http://localhost:12345` +- the standard path, e.g. `/apex/` +- the name of the input/output, e.g. `FirstConsumer/` +- the input or output name, e.g. `EventIn`. + +The examples above lead to the URL `http://localhost:12345/apex/FirstConsumer/EventIn`. + +A client can also get status information of the REST server using `/Status`, e.g. `http://localhost:12345/apex/FirstConsumer/Status`. + + +=== REST Server Stand-alone + +We need to configure a REST server input and a REST server output. +Input and output are associated with each other via there name. + +Timeouts for REST calls need to be set carefully. +If they are too short, the call might timeout before a policy finished creating an event. + +The following example configures the input named as `MyConsumer` and associates an output named `MyProducer` with it. + +[source%nowrap,json] +---- +"eventInputParameters": { + "MyConsumer": { + "carrierTechnologyParameters" : { + "carrierTechnology" : "RESTSERVER", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.restserver.RESTServerCarrierTechnologyParameters", + "parameters" : { + "standalone" : true, <2> + "host" : "localhost", <3> + "port" : 12345 <4> + } + }, + "eventProtocolParameters":{ + "eventProtocol" : "JSON" <5> + }, + "synchronousMode" : true, <6> + "synchronousPeer" : "MyProducer", <7> + "synchronousTimeout" : 500 <8> + } +} +---- +<1> set REST server as carrier technology +<2> set the server as stand-alone +<3> set the server host +<4> set the server listen port +<5> use JSON event protocol +<6> activate synchronous mode +<7> associate an output `MyProducer` +<8> set a timeout of 500 milliseconds + + +The following example configures the output named as `MyProducer` and associates the input `MyConsumer` with it. +Note that for the output there are no more paramters (such as host or port), since they are already configured in the associated input + +[source%nowrap,json] +---- +"eventOutputParameters": { + "MyProducer": { + "carrierTechnologyParameters":{ + "carrierTechnology" : "RESTSERVER", + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.restserver.RESTServerCarrierTechnologyParameters" + }, + "eventProtocolParameters":{ + "eventProtocol" : "JSON" + }, + "synchronousMode" : true, + "synchronousPeer" : "MyConsumer", + "synchronousTimeout" : 500 + } +} +---- + + +=== REST Server Stand-alone, multi input + +Any number of input/output pairs for REST servers can be configured. +For instance, we can configure an input `FirstConsumer` with output `FirstProducer` and an input `SecondConsumer` with output `SecondProducer`. +Important is that there is always one pair of input/output. + + +=== REST Server Stand-alone in Servlet + +If APEX is executed as a servlet, e.g. inside Tomcat, the configuration becomes easier since the plugin can now use Tomcat as the REST server. +In this scenario, there are not parameters (port, host, etc.) and the key `standalone` must not be used (or set to false). + +For the Tomcat configuration, we need to add the REST server plugin, e.g. + +[source%nowrap,xml] +---- +<servlet> + ... + <init-param> + ... + <param-value>org.onap.policy.apex.plugins.event.carrier.restserver</param-value> + </init-param> + ... +</servlet> +---- diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..043ed04d1 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-restserver-dir}/site-docs/adoc/fragments/ct-restserver-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/site.xml new file mode 100644 index 000000000..84c094eec --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-restserver/src/site/site.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier REST-Server"> + <body> + <menu name="APEX Plugins Event Carrier REST-Server"> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="REST-Server" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/pom.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/pom.xml index f6068aa28..e3816d27f 100644 --- a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/pom.xml @@ -33,4 +33,24 @@ <properties> <apex-plugins-event-carrier-websocket-dir>${project.basedir}/src</apex-plugins-event-carrier-websocket-dir> </properties> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-websocket-dir>${project.basedir}/src</adsite-plugins-event-carrier-websocket-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/plugins-event/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ct-websocket-io.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ct-websocket-io.adoc new file mode 100644 index 000000000..8a19cdd32 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ct-websocket-io.adoc @@ -0,0 +1,75 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Websocket (WS) IO + +APEX supports the Websockets as input as well as output. +WS IO is supported by the APEX Websocket plugin. +This carrier technology does only support uni-directional communication. +APEX will not send events to a Websocket input and any event sent to a Websocket output will result in an error log. + +The input can be configured as client (APEX connects to an existing Websocket server) or server (APEX starts a Websocket server). +The same applies to the output. +Input and output can both use a client or a server configuration, or separate configurations (input as client and output as server, input as server and output as client). +Each configuration should use its own dedicated port to avoid any communication loops. +The configuration of a Websocket client is the same for input and output. +The configuration of a Websocket server is the same for input and output. + + +=== Websocket Client + +APEX will connect to a given Websocket server. +As input, it will receive events from the server but not send any events. +As output, it will send events to the server and any event received from the server will result in an error log. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "WEBSOCKET", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.websocket.WEBSOCKETCarrierTechnologyParameters", + "parameters" : { + "host" : "localhost", <2> + "port" : 42451 <3> + } +} +---- + +<1> set Websocket as carrier technology +<2> the host name on which a Websocket server is running +<3> the port of that Websocket server + + + +=== Websocket Server + +APEX will start a Websocket server, which will accept any Websocket clients to connect. +As input, it will receive events from the server but not send any events. +As output, it will send events to the server and any event received from the server will result in an error log. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "WEBSOCKET", <1> + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.websocket.WEBSOCKETCarrierTechnologyParameters", + "parameters" : { + "wsClient" : false, <2> + "port" : 42450 <3> + } +} +---- + +<1> set Websocket as carrier technology +<2> disable client, so that APEX will start a Websocket server +<3> the port for the Websocket server APEX will start diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/engine-config-bcp.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/engine-config-bcp.adoc new file mode 100644 index 000000000..227cc45bb --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/engine-config-bcp.adoc @@ -0,0 +1,29 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== BCP: Websocket Configuration + +The probably best is to configure APEX for Websocket servers for input (ingress, consume) and output (egress, produce) interfaces. +This means that APEX will start Websocket servers on named ports and wait for clients to connect. +Advantage: once APEX is running all connectivity infrastructure is running as well. +Consequence: if APEX is not running, everyone else is in the dark, too. + +The best protocol to be used is JSON string. +Each event on any interface is then a string with a JSON encoding. +JSON string is a little bit slower than byte code, but we doubt that this will be noticeable. +A further advantage of JSON strings over Websockets with APEX starting the servers: it is very easy to connect web browsers to such a system. +Simple connect the web browser to the APEX sockets and send/read JSON strings. + +Once APEX is started you simply connect Websocket clients to it, and send/receive event. +When APEX is terminated, the Websocket servers go down, and the clients will be disconnected. +APEX does not (yet) support auto-client reconnect nor WAMP, so clients might need to be restarted or reconnected manually after an APEX boot. diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-foss.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-foss.adoc new file mode 100644 index 000000000..43c6f247e --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-foss.adoc @@ -0,0 +1,27 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Websocket Example Code for Websocket clients (FOSS) + +There are a lot of implementations and examples available on Github for Websocket clients. +If one is using Java EE 7, then one can also use the native Websocket implementation. +Good examples for clients using simply Java SE are here: + +- link:https://github.com/TooTallNate/Java-WebSocket[Websocket implementation] +- link:https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/ChatClient.java[Websocket sending client example, using AWT] +- link:https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/ExampleClient.java[Websocket receiving client example (simple echo client)] + +For Java EE, the native Websocket API is explained here: + +- link:http://www.oracle.com/technetwork/articles/java/jsr356-1937161.html[Oracle docs] +- link: http://www.programmingforliving.com/2013/08/jsr-356-java-api-for-websocket-client-api.html[An example] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-intro.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-intro.adoc new file mode 100644 index 000000000..cbecbbe7f --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-intro.adoc @@ -0,0 +1,23 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Websockets + +Websocket is a protocol to run sockets of HTTP. +Since it in essence a socket, the connection is realized between a server (waiting for connections) and a client (connecting to a server). +Server/client separation is only important for connection establishment, once connected, everyone can send/receive on the same socket (as any standard socket would allow). + +Standard Websocket implementations are simple, no publish/subscribe and no special event handling. +Most servers simply send all incoming messages to all connections. +There is a PubSub definition on top of Websocket called link:http://wamp-proto.org/[WAMP]. +APEX does not support WAMP at the moment. diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-java.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-java.adoc new file mode 100644 index 000000000..e6c2c0163 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site-docs/adoc/fragments/ws-java.adoc @@ -0,0 +1,20 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Websocket in Java + +In Java, link:http://www.oracle.com/technetwork/articles/java/jsr356-1937161.html[JSR 356] defines the standard Websocket API. +This JSR is part of Jave EE 7 standard. +For Java SE, several implementations exist in open source. +Since Websockets are a stable standard and simple, most implementations are stable and ready to use. +A lot of products support Websockets, like Spring, JBoss, Netty, … there are also Kafka extensions for Websockets. diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config-bcp.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config-bcp.adoc new file mode 100644 index 000000000..bfa111b35 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config-bcp.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-websocket-dir}/site-docs/adoc/fragments/engine-config-bcp.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config.adoc new file mode 100644 index 000000000..e81596f2c --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/engine-config.adoc @@ -0,0 +1,14 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-websocket-dir}/site-docs/adoc/fragments/ct-websocket-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/websockets.adoc b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/websockets.adoc new file mode 100644 index 000000000..823e26a21 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/asciidoc/websockets.adoc @@ -0,0 +1,18 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-websocket-dir}/site-docs/adoc/fragments/ws-intro.adoc[] + +include::{adsite-plugins-event-carrier-websocket-dir}/site-docs/adoc/fragments/ws-java.adoc[] + +include::{adsite-plugins-event-carrier-websocket-dir}/site-docs/adoc/fragments/ws-foss.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/site.xml new file mode 100644 index 000000000..f9410f5ef --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/plugins-event-carrier-websocket/src/site/site.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + + =========LICENSE_END========================================================= +--> + +<project name="APEX Plugins Event Carrier Websocket"> + <body> + <menu name="APEX Plugins Event Carrier Websocket"> + <item href="websockets.html" name="Introduction to Websockets" /> + <item href="engine-config.html" name="Engine Configuration" /> + <item href="engine-config-bcp.html" name="BCP Configuration" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="Websocket" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/pom.xml b/plugins/plugins-event/plugins-event-carrier/pom.xml index c8ce3a720..1e6a41e8a 100644 --- a/plugins/plugins-event/plugins-event-carrier/pom.xml +++ b/plugins/plugins-event/plugins-event-carrier/pom.xml @@ -45,4 +45,24 @@ <module>plugins-event-carrier-restserver</module> <module>plugins-event-carrier-restrequestor</module> </modules> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-plugins-event-carrier-dir>${project.basedir}/src</adsite-plugins-event-carrier-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/plugins/${project.parent.artifactId}/${project.artifactId}/</url> + </site> + </distributionManagement> + </profile> + </profiles> </project>
\ No newline at end of file diff --git a/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/carriertech.adoc b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/carriertech.adoc new file mode 100644 index 000000000..8ec83ab9a --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/carriertech.adoc @@ -0,0 +1,41 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Carrier Technologies + +Carrier technologies define how APEX receives (input) and sends (output) events. +They can be used in any combination, using asynchronous or synchronous mode. +There can also be any number of carrier technologies for the input (consume) and the output (produce) interface. + +Supported _input_ technologies are: + +- Standard input, read events from the standard input (console), not suitable for APEX background servers +- File input, read events from a file +- Kafka, read events from a Kafka system +- Websockets, read events from a Websocket +- JMS, +- REST (synchronous and asynchronous), additionally as client or server +- Event Requestor, allows reading of events that have been looped back into APEX + + +Supported _output_ technologies are: + +- Standard output, write events to the standard output (console), not suitable for APEX background servers +- File output, write events to a file +- Kafka, write events to a Kafka system +- Websockets, write events to a Websocket +- JMS +- REST (synchronous and asynchronous), additionally as client or server +- Event Requestor, allows events to be looped back into APEX + +New carrier technologies can be added as plugins to APEX or developed outside APEX and added to an APEX deployment. diff --git a/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-eventrequestor-io.adoc b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-eventrequestor-io.adoc new file mode 100644 index 000000000..d8756bfcb --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-eventrequestor-io.adoc @@ -0,0 +1,92 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Event Requestor IO + +Event Requestor IO does not require a specific plugin, it is supported be default. +It should only be used with the APEX event protocol. + +=== Event Requestor Input + +APEX will take events from APEX. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology": "EVENT_REQUESTOR" // <1> +} +---- +<1> set event requestor input + + +=== Event Requestor Output + +APEX will write events to APEX. + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology": "EVENT_REQUESTOR" // <1> +} +---- + +=== Peering Event Requestors + +When using event requestors, they need to be peered. +This means an event requestor output needs to be peered (associated) with an event requestor input. +The following example shows the use of an event requestor with the APEX event protocol and the peering of output and input. + +[source%nowrap,json] +---- +"eventInputParameters": { + "EventRequestorConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" // <1> + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" // <2> + }, + "eventNameFilter": "InputEvent", // <3> + "requestorMode": true, // <4> + "requestorPeer": "EventRequestorProducer", // <5> + "requestorTimeout": 500 // <6> + } +}, +"eventOutputParameters": { + "EventRequestorProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" <7> + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" <8> + }, + "eventNameFilter": "EventListEvent", // <9> + "requestorMode": true, // <10> + "requestorPeer": "EventRequestorConsumer", // <11> + "requestorTimeout": 500 // <12> + } +} +---- + +<1> event requestor on a consumer +<2> with APEX event protocol +<3> optional filter (best to use a filter to prevent unwanted events on the consumer side) +<4> activate requestor mode +<5> the peer to the output (must match the output carrier) +<6> an optional timeout in milliseconds +<7> event requestor on a producer +<8> with APEX event protocol +<9> optional filter (best to use a filter to prevent unwanted events on the consumer side) +<10> activate requestor mode +<11> the peer to the output (must match the input carrier) +<12> an optional timeout in milliseconds diff --git a/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-file-io.adoc b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-file-io.adoc new file mode 100644 index 000000000..bdde9e982 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-file-io.adoc @@ -0,0 +1,53 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== File IO + +File IO does not require a specific plugin, it is supported be default. + +=== File Input + +APEX will take events from a file. +The same file should not be used as an output. +The configuration is as follows: + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "FILE", // <1> + "parameters" : { + "fileName" : "examples/events/SampleDomain/EventsIn.xmlfile" // <2> + } +} +---- +<1> set file input +<2> the name of the file to read events from + + +=== File Output + +APEX will write events to a file. +The same file should not be used as an input. +The configuration is as follows: + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "FILE", // <1> + "parameters" : { + "fileName" : "examples/events/SampleDomain/EventsOut.xmlfile" // <2> + } +} +---- +<1> set file output +<2> the name of the file to write events to diff --git a/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-standard-io.adoc b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-standard-io.adoc new file mode 100644 index 000000000..43b7bddbb --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site-docs/adoc/fragments/ct-standard-io.adoc @@ -0,0 +1,52 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +== Standard IO + +Standard IO does not require a specific plugin, it is supported be default. + +=== Standard Input + +APEX will take events from its standard input. +This carrier is good for testing, but certainly not for a use case where APEX runs as a server. +The configuration is as follows: + +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "FILE", // <1> + "parameters" : { + "standardIO" : true <2> + } +} +---- +<1> standard input is considered a file +<2> file descriptor set to standard input + + +=== Standard Output + +APEX will send events to its standard output. +This carrier is good for testing, but certainly not for a use case where APEX runs as a server. +The configuration is as follows: + +[source%nowrap,json] +---- +"carrierTechnologyParameters" : { + "carrierTechnology" : "FILE", // <1> + "parameters" : { + "standardIO" : true <2> + } +} +---- +<1> standard output is considered a file +<2> file descriptor set to standard output diff --git a/plugins/plugins-event/plugins-event-carrier/src/site/asciidoc/carriertech.adoc b/plugins/plugins-event/plugins-event-carrier/src/site/asciidoc/carriertech.adoc new file mode 100644 index 000000000..3b86a50ef --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site/asciidoc/carriertech.adoc @@ -0,0 +1,20 @@ +// +// ============LICENSE_START======================================================= +// Copyright (C) 2016-2018 Ericsson. All rights reserved. +// ================================================================================ +// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE +// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode +// +// SPDX-License-Identifier: CC-BY-4.0 +// ============LICENSE_END========================================================= +// +// @author Sven van der Meer (sven.van.der.meer@ericsson.com) +// + +include::{adsite-plugins-event-carrier-dir}/site-docs/adoc/fragments/carriertech.adoc[] + +include::{adsite-plugins-event-carrier-dir}/site-docs/adoc/fragments/ct-standard-io.adoc[] + +include::{adsite-plugins-event-carrier-dir}/site-docs/adoc/fragments/ct-file-io.adoc[] + +include::{adsite-plugins-event-carrier-dir}/site-docs/adoc/fragments/ct-eventrequestor-io.adoc[] diff --git a/plugins/plugins-event/plugins-event-carrier/src/site/css/site.css b/plugins/plugins-event/plugins-event-carrier/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/plugins/plugins-event/plugins-event-carrier/src/site/images/logos.png b/plugins/plugins-event/plugins-event-carrier/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site/images/logos.png diff --git a/plugins/plugins-event/plugins-event-carrier/src/site/site.xml b/plugins/plugins-event/plugins-event-carrier/src/site/site.xml new file mode 100644 index 000000000..a6c7fc98c --- /dev/null +++ b/plugins/plugins-event/plugins-event-carrier/src/site/site.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2016-2018 Ericsson. All rights reserved. + ================================================================================ + This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE + Full license text at https://creativecommons.org/licenses/by/4.0/legalcode + + SPDX-License-Identifier: CC-BY-4.0 + ============LICENSE_END========================================================= + + @author Sven van der Meer (sven.van.der.meer@ericsson.com) + +--> + +<project name="APEX Plugins Event Carrier"> + <body> + <menu name="APEX Plugins Event Carrier"> + <item href="carriertech.html" name="Carrier Technologies" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="Carrier" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file |