| :number-lines: | :number-lines: |
| | |
| # cd /usr/local/src/apex-pdp | >c: |
- | # mvn clean install -DskipTest | >cd \dev\apex |
- | | >mvn clean install -DskipTests |
+ | # mvn clean install -Pdocker -DskipTests | >cd \dev\apex |
+ | | >mvn clean install -Pdocker -DskipTests |
+-------------------------------------------------------+--------------------------------------------------------+
.. container:: paragraph
| .. code:: |
| :number-lines: |
| |
-| # sudo dpkg -i apex-pdp-package-full-2.0.0-SNAPSHOT.deb |
+| # sudo dpkg -i apex-pdp-package-full-2.0.0-SNAPSHOT.deb |
| Selecting previously unselected package apex-uservice. |
| (Reading database ... 288458 files and directories currently installed.) |
| Preparing to unpack apex-pdp-package-full-2.0.0-SNAPSHOT.deb ... |
| :number-lines: | :number-lines: |
| | |
| # cd /usr/local/src/apex | >c: |
- | # mvn clean install -DskipTests | >cd \dev\apex |
- | | >mvn clean install -DskipTests |
+ | # mvn clean install -Pdocker -DskipTests | >cd \dev\apex |
+ | | >mvn clean install -Pdocker -DskipTests |
+-------------------------------------------------------+--------------------------------------------------------+
.. container:: paragraph
.. container:: paragraph
- ``<property name="VAR_LOG" value="/var/log/onap/policy/apex-pdp/" />``
+ ``<property name="logDir" value="/var/log/onap/policy/apex-pdp/" />``
.. container:: paragraph
.. container:: paragraph
- ``<property name="VAR_LOG" value="/PATH/TO/LOG/DIRECTORY/" />``
+ ``<property name="logDir" value="/PATH/TO/LOG/DIRECTORY/" />``
.. container:: paragraph
.. container:: paragraph
- ``<property name="VAR_LOG" value="C:/apex/apex-full-2.0.0-SNAPSHOT/logs" />``
+ ``<property name="logDir" value="C:/apex/apex-full-2.0.0-SNAPSHOT/logs" />``
.. container:: paragraph
APEX was installed manually or when the log directory was changed
in the settings (see above).
- +------------------------------------------------------------------+-------------------------------------------------------+
- | Unix, Cygwin | Windows |
- +==================================================================+=======================================================+
- | .. container:: | .. container:: |
- | | |
- | .. container:: content | .. container:: content |
- | | |
- | .. code:: | .. code:: |
- | :number-lines: | :number-lines: |
- | | |
- | mkdir -p /var/log/onap/policy/apex-pdp | >mkdir C:\apex\apex-full-2.0.0-SNAPSHOT\logs |
- | chown -R apexuser:apexuser /var/log/onap/policy/apex-pdp | |
- +------------------------------------------------------------------+-------------------------------------------------------+
+ +-----------------------------------------------------------------------+-------------------------------------------------------+
+ | Unix, Cygwin | Windows |
+ +=======================================================================+=======================================================+
+ | .. container:: | .. container:: |
+ | | |
+ | .. container:: content | .. container:: content |
+ | | |
+ | .. code:: | .. code:: |
+ | :number-lines: | :number-lines: |
+ | | |
+ | sudo mkdir -p /var/log/onap/policy/apex-pdp | >mkdir C:\apex\apex-full-2.0.0-SNAPSHOT\logs |
+ | sudo chown -R apexuser:apexuser /var/log/onap/policy/apex-pdp | |
+ +-----------------------------------------------------------------------+-------------------------------------------------------+
Verify the APEX Installation
----------------------------
Unix scripts but runs Java as a Windows application, thus the
configuration file must be given as a Windows path.
+ .. container:: paragraph
+
+ On Unix/Linux flavoured platforms, give the commands below:
+
.. container:: listingblock
.. container:: content
- .. code::
- :number-lines:
+ .. code::
+ :number-lines:
+
+ sudo su - apexuser
+ export APEX_HOME <path to apex installation>
+ export APEX_USER apexuser
- # $APEX_HOME/bin/apexEngine.sh -c $APEX_HOME/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (1)
- # $APEX_HOME/bin/apexEngine.sh -c C:/apex/apex-full-2.0.0-SNAPSHOT/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (2)
- >%APEX_HOME%\bin\apexEngine.bat -c %APEX_HOME%\examples\config\SampleDomain\Stdin2StdoutJsonEventJava.json :: (3)
+ .. container:: paragraph
+
+ You can now try to run apex.
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+ :number-lines:
+
+ # $APEX_HOME/bin/apexEngine.sh -c $APEX_HOME/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (1)
+ # $APEX_HOME/bin/apexEngine.sh -c C:/apex/apex-full-2.0.0-SNAPSHOT/examples/config/SampleDomain/Stdin2StdoutJsonEventJava.json (2)
+ >%APEX_HOME%\bin\apexEngine.bat -c %APEX_HOME%\examples\config\SampleDomain\Stdin2StdoutJsonEventJava.json :: (3)
.. container:: colist arabic
.. container:: paragraph
- The engine should start successfully. Assuming the logging levels are
- not change (default level is ``info``), the output should look
- similar to this (last few lines)
+ The engine should start successfully. Assuming the logging levels are set to ``info`` in the built system, the output
+ should look similar to this (last few lines)
.. container:: listingblock
"engineServiceParameters":{
... (1)
"engineParameters":{ (2)
- "engineParameters":{...}, (3)
+ "executorParameters":{...}, (3)
"contextParameters":{...} (4)
+ "taskParameters":[...] (5)
}
},
- "eventInputParameters":{ (5)
- "input1":{ (6)
+ "eventInputParameters":{ (6)
+ "input1":{ (7)
"carrierTechnologyParameters":{...},
"eventProtocolParameters":{...}
},
- "input2":{...}, (7)
+ "input2":{...}, (8)
"carrierTechnologyParameters":{...},
"eventProtocolParameters":{...}
},
- ... (8)
+ ... (9)
},
- "eventOutputParameters":{ (9)
- "output1":{ (10)
+ "eventOutputParameters":{ (10)
+ "output1":{ (11)
"carrierTechnologyParameters":{...},
"eventProtocolParameters":{...}
},
- "output2":{ (11)
+ "output2":{ (12)
"carrierTechnologyParameters":{...},
"eventProtocolParameters":{...}
},
- ... (12)
+ ... (13)
}
}
| | for context schemas, persistence, |
| | etc. |
+-----------------------------------+-----------------------------------+
- | **5** | configuration of the input |
+ | **5** | list of task parameters that |
+ | | should be made available in task |
+ | | logic (optional). |
+ +-----------------------------------+-----------------------------------+
+ | **6** | configuration of the input |
| | interface |
+-----------------------------------+-----------------------------------+
- | **6** | an example input called |
+ | **7** | an example input called |
| | ``input1`` with carrier |
| | technology and event protocol |
+-----------------------------------+-----------------------------------+
- | **7** | an example input called |
+ | **8** | an example input called |
| | ``input2`` with carrier |
| | technology and event protocol |
+-----------------------------------+-----------------------------------+
- | **8** | any further input configuration |
+ | **9** | any further input configuration |
+-----------------------------------+-----------------------------------+
- | **9** | configuration of the output |
+ | **10** | configuration of the output |
| | interface |
+-----------------------------------+-----------------------------------+
- | **10** | an example output called |
+ | **11** | an example output called |
| | ``output1`` with carrier |
| | technology and event protocol |
+-----------------------------------+-----------------------------------+
- | **11** | an example output called |
+ | **12** | an example output called |
| | ``output2`` with carrier |
| | technology and event protocol |
+-----------------------------------+-----------------------------------+
- | **12** | any further output configuration |
+ | **13** | any further output configuration |
+-----------------------------------+-----------------------------------+
Engine Service Parameters
"policyModelFileName" : "examples/models/VPN/VPNPolicyModelJava.json", (6)
"periodicEventPeriod": 1000, (7)
"engineParameters":{ (8)
- "engineParameters":{...}, (9)
- "contextParameters":{...} (10)
+ "executorParameters":{...}, (9)
+ "contextParameters":{...}, (10)
+ "taskParameters":[...] (11)
}
}
| | for context schemas, persistence, |
| | etc. |
+-----------------------------------+-----------------------------------+
+ | **11** | list of task parameters that |
+ | | should be made available in task |
+ | | logic (optional). |
+ +-----------------------------------+-----------------------------------+
.. container:: paragraph
- Since AVRO uses lazy initialization, this
rejection might only become visible at runtime
+Configure Task Parameters
+#########################
+
+ .. container:: paragraph
+
+ The Task Parameters are added to the configuration as
+ follows:
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ "engineServiceParameters": {
+ "engineParameters": {
+ "taskParameters": [
+ {
+ "key": "ParameterKey1",
+ "value": "ParameterValue1"
+ },
+ {
+ "taskId": "Task_Act0",
+ "key": "ParameterKey2",
+ "value": "ParameterValue2"
+ }
+ ]
+ }
+ }
+
+ .. container:: paragraph
+
+ TaskParameters can be used to pass parameters from ApexConfig
+ to the policy logic. In the config, these are optional.
+ The list of task parameters provided in the config may be added
+ to the tasks or existing task parameters in the task will be overriden.
+
+ .. container:: paragraph
+
+ If taskId is provided in ApexConfig for an entry, then that
+ parameter is updated only for that particular task. Otherwise,
+ the task parameter is added to all tasks.
+
Carrier Technologies
--------------------
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
+ ``application/json``, so this plugin only works with
the JSON Event protocol.
REST Client Input
by the server configured via the URL. For instance,
the server could support a wait timeout via the URL as
``?timeout=100ms``.
+ The httpCodeFilter is used for filtering the status
+ code, and it can be configured as a regular expression
+ string. The default httpCodeFilter is "[2][0-9][0-9]"
+ - for successful response codes.
+ The response with HTTP status code that matches the
+ given regular expression is forwarded to the task,
+ otherwise it is logged as a failure.
.. container:: listingblock
"org.onap.policy.apex.plugins.event.carrier.restclient.RESTClientCarrierTechnologyParameters",
"parameters" : {
"url" : "http://example.org:8080/triggers/events", (2)
+ "httpCodeFilter" : "[2][0-9][0-9]" (3)
}
}
.. container:: colist arabic
- +-------+---------------------------------------+
- | **1** | set REST client as carrier technology |
- +-------+---------------------------------------+
- | **2** | the URL of the HTTP server for events |
- +-------+---------------------------------------+
+ +-------+--------------------------------------------------+
+ | **1** | set REST client as carrier technology |
+ +-------+--------------------------------------------------+
+ | **2** | the URL of the HTTP server for events |
+ +-------+--------------------------------------------------+
+ | **3** | use HTTP CODE FILTER for filtering status code |
+ +-------+--------------------------------------------------+
REST Client Output
==================
The URL can be configured statically or tagged
as ``?example.{site}.org:8080/{trig}/events``,
all tags such as ``site`` and ``trig`` in the URL
- need to be set in the properties object available to the tasks.
- In addition, the keys should exactly match with the tags defined in url.
- The scope of the properties object is per HTTP call.
- Hence, key/value pairs set in the properties object by task
- is only available for that specific HTTP call.
+ need to be set in the properties object available to
+ the tasks. In addition, the keys should exactly match
+ with the tags defined in url. The scope of the properties
+ object is per HTTP call. Hence, key/value pairs set
+ in the properties object by task are only available
+ for that specific HTTP call.
.. container:: listingblock
- Maximum port: 65535
- The media type is ``application/json``, so this plugin
- does only work with the JSON Event protocol.
+ only works with the JSON Event protocol.
.. container:: paragraph
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
+ ``application/json``, so this plugin only works with
the JSON Event protocol.
REST Requestor Input
The URL can be configured statically or tagged
as ``?example.{site}.org:8080/{trig}/events``,
all tags such as ``site`` and ``trig`` in the URL
- need to be set in the properties object available to the tasks.
- In addition, the keys should exactly match with the tags defined in url.
- The scope of the properties object is per HTTP call.
- Hence, key/value pairs set in the properties object by task
- is only available for that specific HTTP call.
+ need to be set in the properties object available to
+ the tasks. In addition, the keys should exactly match
+ with the tags defined in url. The scope of the properties
+ object is per HTTP call. Hence, key/value pairs set
+ in the properties object by task are only available
+ for that specific HTTP call.
+ The httpCodeFilter is used for filtering the status
+ code, and it can be configured as a regular expression
+ string. The default httpCodeFilter is "[2][0-9][0-9]"
+ - for successful response codes.
+ The response with HTTP status code that matches the
+ given regular expression is forwarded to the task,
+ otherwise it is logged as a failure.
.. container:: listingblock
"url": "http://localhost:54321/some/path/to/rest/resource", (2)
"url": "http://localhost:54321/{site}/path/to/rest/{resValue}", (2')
"httpMethod": "POST", (3)
- "restRequestTimeout": 2000 (4)
+ "restRequestTimeout": 2000, (4)
+ "httpCodeFilter" : "[2][0-9][0-9]" (5)
}
},
+-------+--------------------------------------------------+
| **4** | request timeout in milliseconds |
+-------+--------------------------------------------------+
+ | **5** | use HTTP CODE FILTER for filtering status code |
+ +-------+--------------------------------------------------+
.. container:: paragraph
| **4** | a general request timeout |
+-------+---------------------------+
+gRPC IO
+#######
+
+ .. container:: paragraph
+
+ APEX can send requests over gRPC at the output side, and get back
+ response at the input side. This can be used to send requests to CDS
+ over gRPC. The media type is ``application/json``, so this plugin
+ only works with the JSON Event protocol.
+
+gRPC Output
+===========
+
+ .. container:: paragraph
+
+ APEX will connect to a given host to send a request over
+ gRPC.
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "GRPC", (1)
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters",
+ "parameters": {
+ "host": "cds-blueprints-processor-grpc", (2)
+ "port": 9111, (2')
+ "username": "ccsdkapps", (3)
+ "password": ccsdkapps, (4)
+ "timeout" : 10 (5)
+ }
+ },
+
+ .. container:: colist arabic
+
+ +-------+--------------------------------------------------+
+ | **1** | set GRPC as carrier technology |
+ +-------+--------------------------------------------------+
+ | **2** | the host to which request is sent |
+ +-------+--------------------------------------------------+
+ | **2'**| the value for port |
+ +-------+--------------------------------------------------+
+ | **3** | username required to initiate connection |
+ +-------+--------------------------------------------------+
+ | **4** | password required to initiate connection |
+ +-------+--------------------------------------------------+
+ | **5** | the timeout value for completing the request |
+ +-------+--------------------------------------------------+
+
+ .. container:: paragraph
+
+ Further settings are required on the producer to
+ define the event that is requested, for example:
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ "eventName": "GRPCRequestEvent", (1)
+ "eventNameFilter": "GRPCRequestEvent", (2)
+ "requestorMode": true, (3)
+ "requestorPeer": "GRPCRequestConsumer", (4)
+ "requestorTimeout": 500 (5)
+
+ .. container:: colist arabic
+
+ +-------+---------------------------+
+ | **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 |
+ +-------+---------------------------+
+
+gRPC Input
+==========
+
+ .. container:: paragraph
+
+ APEX will connect to the host specified in the producer
+ side, anad take in response back at the consumer side.
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ "carrierTechnologyParameters": {
+ "carrierTechnology": "GRPC", (1)
+ "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.grpc.GrpcCarrierTechnologyParameters"
+ },
+
+ .. container:: colist arabic
+
+ +-------+------------------------------------------+
+ | **1** | set GRPC as carrier technology |
+ +-------+------------------------------------------+
+
+ .. container:: paragraph
+
+ Further settings are required on the consumer to
+ define the event that is requested, for example:
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ "eventNameFilter": "GRPCResponseEvent", (1)
+ "requestorMode": true, (2)
+ "requestorPeer": "GRPCRequestProducer", (3)
+ "requestorTimeout": 500 (4)
+
+ .. container:: colist arabic
+
+ +-------+---------------------------+
+ | **1** | a filter on the event |
+ +-------+---------------------------+
+ | **2** | the mode of the requestor |
+ +-------+---------------------------+
+ | **3** | a peer for the requestor |
+ +-------+---------------------------+
+ | **4** | a general request timeout |
+ +-------+---------------------------+
+
Event Protocols, Format and Encoding
------------------------------------
-wd,--working-directory <WORKING_DIRECTORY> the working directory that is the root for the CLI editor and is the
root from which to look for included macro files
+The APEX CLI Tosca Editor
+-------------------------
+
+ .. container:: paragraph
+
+ As per the new Policy LifeCycle API, the policies are expected to be defined as ToscaServiceTemplate. The CLI Tosca Editor is an extended version of the APEX CLI Editor which can generate the policies in ToscaServiceTemplate way.
+
+ .. container:: paragraph
+
+ The APEX config file(.json), command file(.apex) and the tosca template skeleton(.json) file paths need to be passed as input arguments to the CLI Tosca Editor. Policy in ToscaServiceTemplate format is generated as the output. This can be used as the input to Policy API for creating policies.
+
+ .. container:: paragraph
+
+ On UNIX and Cygwin systems use:
+
+ .. container:: ulist
+
+ - ``apexCLIToscaEditor.sh`` - starts the CLI Tosca editor,
+ all the arguments supported by the basic CLI Editor are supported in addition to the mandatory arguments needed to generate ToscaServiceTemplate.
+
+ - ``apexApps.sh cli-tosca-editor`` - starts the CLI Tosca editor,
+ all the arguments supported by the basic CLI Editor are supported in addition to the mandatory arguments needed to generate ToscaServiceTemplate.
+
+ .. container:: paragraph
+
+ On Windows systems use:
+
+ .. container:: ulist
+
+ - ``apexCLIToscaEditor.bat`` - starts the CLI Tosca editor,
+ all the arguments supported by the basic CLI Editor are supported in addition to the mandatory arguments needed to generate ToscaServiceTemplate.
+
+ - ``apexApps.bat cli-tosca-editor`` - starts the CLI Tosca
+ editor, all the arguments supported by the basic CLI Editor are supported in addition to the mandatory arguments needed to generate ToscaServiceTemplate.
+
+ .. container:: paragraph
+
+ Summary of alternatives to start the APEX CLI Tosca Editor:
+
+ +-----------------------------------------------------------------+--------------------------------------------------------------------+
+ | Unix, Cygwin | Windows |
+ +=================================================================+====================================================================+
+ | .. container:: | .. container:: |
+ | | |
+ | .. container:: listingblock | .. container:: listingblock |
+ | | |
+ | .. container:: content | .. container:: content |
+ | | |
+ | .. code:: | .. code:: |
+ | | |
+ | # $APEX_HOME/bin/apexCLIToscaEditor.sh.sh [args] | > %APEX_HOME%\bin\apexCLIToscaEditor.bat [args] |
+ | # $APEX_HOME/bin/apexApps.sh cli-tosca-editor [args]| > %APEX_HOME%\bin\apexApps.bat cli-tosca-editor [args] |
+ +-----------------------------------------------------------------+--------------------------------------------------------------------+
+
+ .. container:: paragraph
+
+ The option ``-h`` provides a help screen with all command
+ line arguments.
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ usage: org.onap.policy.apex.auth.clieditor.tosca.ApexCliToscaEditorMain [options...]
+ options
+ -a,--model-props-file <MODEL_PROPS_FILE> name of the apex model properties file to use
+ -ac,--apex-config-file <APEX_CONFIG_FILE> name of the file containing apex configuration details
+ -c,--command-file <COMMAND_FILE> name of a file containing editor commands to run into the editor
+ -h,--help outputs the usage of this command
+ -i,--input-model-file <INPUT_MODEL_FILE> name of a file that contains an input model for the editor
+ -if,--ignore-failures <IGNORE_FAILURES_FLAG> true or false, ignore failures of commands in command files and
+ continue executing the command file
+ -l,--log-file <LOG_FILE> name of a file that will contain command logs from the editor, will
+ log to standard output if not specified or suppressed with "-nl" flag
+ -m,--metadata-file <CMD_METADATA_FILE> name of the command metadata file to use
+ -nl,--no-log if specified, no logging or output of commands to standard output or
+ log file is carried out
+ -ot,--output-tosca-file <OUTPUT_TOSCA_FILE> name of a file that will contain the output ToscaServiceTemplate
+ -t,--tosca-template-file <TOSCA_TEMPLATE_FILE> name of the input file containing tosca template which needs to be
+ updated with policy
+ -wd,--working-directory <WORKING_DIRECTORY> the working directory that is the root for the CLI editor and is the
+ root from which to look for included macro files
+
+ .. container:: paragraph
+
+ An example command to run the APEX CLI Tosca editor on windows machine is given below.
+
+ .. container:: listingblock
+
+ .. container:: content
+
+ .. code::
+
+ %APEX_HOME%/\bin/\apexCLIToscaEditor.bat -c %APEX_HOME%\examples\PolicyModel.apex -ot %APEX_HOME%\examples\test.json -l %APEX_HOME%\examples\test.log -ac %APEX_HOME%\examples\RESTServerStandaloneJsonEvent.json -t %APEX_HOME%\examples\ToscaTemplate.json
+
The APEX REST Editor
--------------------
.. container:: title
- Field Schema types
+ Field Schema types
.. container:: paragraph
APEX natively supports schema definitions in ``Java`` and ``Avro``.
-
+
.. container:: paragraph
``Java`` schema definitions are simply the name of a Java Class. There are some restrictions:
| | | |
| | | at *08:41:06 |
| | .. container:: content | GMT* on *Monday, |
- | .. container:: content | | 02 January |
+ | .. container:: content | | 02 January |
| | .. code:: | 2017*. |
| | | |
- | | { | Sale is not |
+ | | { | Sale is not |
| .. code:: | "nameSpace": "com.hyperm", | authorized. Uses |
| | "name": "SALE_AUTH", | the |
| | "version": "0.0.1", | ``MorningBoozeCheck`` |
| { | "source": "", | |
- | "nameSpace": "com.hyperm", | "target": "", | task. |
+ | "nameSpace": "com.hyperm", | "target": "", | task. |
| "name": "SALE_INPUT", | "amount": 1249, | |
| "version": "0.0.1", | "assistant_ID":12, | Note this test |
| "time": 1483346466000, | "authorised": false, | is copied from |
| "sale_ID": 99999992, | "branch_ID": 2, | Step 1 above, |
- | "amount": 1249, | "item_ID": 1012, | and demonstrates |
+ | "amount": 1249, | "item_ID": 1012, | and demonstrates |
| "item_ID": 1012, | "message": "Sale not authorised by policy ta | that the |
| "quantity": 1, | sk MorningBoozeCheck for time 08:41:06 GMT.| original |
| "assistant_ID": 12, | Alcohol can not be sold between 00:00:00 | ``MorningBoozeCheck`` |
| "branch_ID": 2 | GMT and 11:30:00 GMT", | |
| } | "notes": null, | task is |
- | | "quantity": 1, | executed. |
+ | | "quantity": 1, | executed. |
| | "sale_ID": 99999992, | |
| | "time": 1483346466000 | |
| | } | |
The standard logging configuration defines a context *APEX*,
which is used in the standard output pattern. The location
- for log files is defined in the property ``VAR_LOG`` and set
+ for log files is defined in the property ``logDir`` and set
to ``/var/log/onap/policy/apex-pdp``. The standard status
listener is set to *NOP* and the overall logback
configuration is set to no debug.
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<contextName>Apex</contextName>
- <property name="VAR_LOG" value="/var/log/onap/policy/apex-pdp/" />
+ <property name="logDir" value="/var/log/onap/policy/apex-pdp/" />
...appenders
...loggers
:number-lines:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <file>${VAR_LOG}/apex.log</file>
+ <file>${logDir}/apex.log</file>
<encoder>
<pattern>%d %-5relative [procId=${processId}] [%thread] %-5level %logger{26} - %msg %n %ex{full}</pattern>
</encoder>
:number-lines:
<appender name="CTXT_FILE" class="ch.qos.logback.core.FileAppender">
- <file>${VAR_LOG}/apex_ctxt.log</file>
+ <file>${logDir}/apex_ctxt.log</file>
<encoder>
<pattern>%d %-5relative [procId=${processId}] [%thread] %-5level %logger{26} - %msg %n %ex{full}</pattern>
</encoder>
.. code::
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${VAR_LOG}/apex.log</file>
+ <file>${logDir}/apex.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<!-- <fileNamePattern>xstream-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> -->
- <fileNamePattern>${VAR_LOG}/apex_%d{yyyy-MM-dd}.%i.log.gz
+ <fileNamePattern>${logDir}/apex_%d{yyyy-MM-dd}.%i.log.gz
</fileNamePattern>
<maxHistory>4</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<appender name="CTXT-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${VAR_LOG}/apex_ctxt.log</file>
+ <file>${logDir}/apex_ctxt.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>${VAR_LOG}/apex_ctxt_%d{yyyy-MM-dd}.%i.log.gz
+ <fileNamePattern>${logDir}/apex_ctxt_%d{yyyy-MM-dd}.%i.log.gz
</fileNamePattern>
<maxHistory>4</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<contextName>Apex</contextName>
- <property name="VAR_LOG" value="/var/log/onap/policy/apex-pdp/" />
+ <property name="logDir" value="/var/log/onap/policy/apex-pdp/" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <file>${VAR_LOG}/apex.log</file>
+ <file>${logDir}/apex.log</file>
<encoder>
<pattern>
%d %-5relative [procId=${processId}] [%thread] %-5level%logger{26} - %msg %n %ex{full}
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<contextName>Apex</contextName>
- <property name="VAR_LOG" value="/var/log/onap/policy/apex-pdp/" />
+ <property name="logDir" value="/var/log/onap/policy/apex-pdp/" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <file>${VAR_LOG}/apex.log</file>
+ <file>${logDir}/apex.log</file>
<encoder>
<pattern>
%d %-5relative [procId=${processId}] [%thread] %-5level%logger{26} - %msg %n %ex{full}
(``cmd`` on Windows). Then use the APEX application launcher to
start the client.
- .. important::
+ .. important::
APEX engine needs to run first
The example assumes that an APEX engine configured for *produce* carrier technology Websocket and *JSON* event protocol is executed first.
(``cmd`` on Windows). Then use the APEX application launcher to
start the client.
- .. important::
+ .. important::
APEX engine needs to run first
The example assumes that an APEX engine configured for *consume* carrier technology Websocket and *JSON* event
protocol is executed first.