diff options
215 files changed, 4265 insertions, 7719 deletions
@@ -31,11 +31,6 @@ repositories: - 'policy/parent' committers: - <<: *onap_releng_ptl - - name: 'Pamela Dragosh' - email: 'pd1248@att.com' - company: 'ATT' - id: 'pdragosh' - timezone: 'America/New_York' - name: 'Jorge Hernandez' email: 'jorge.hernandez-herrero@att.com' company: 'ATT' @@ -46,6 +41,11 @@ committers: company: 'Bell Canada' id: 'ramverma' timezone: 'America/Montreal' + - name: 'Liam Fallon' + email: 'liam.fallon@est.tech' + id: 'liamfallon' + company: 'Ericsson' + timezone: 'Europe/Ireland' - name: 'Ramesh Murugan Iyer' email: 'ramesh.murugan.iyer@est.tech' company: 'Ericsson' @@ -89,3 +89,7 @@ tsc: - type: 'Addition' name: 'Adheli Tavares' link: https://lists.onap.org/g/onap-tsc/message/9296 + #Stepped Down + - type: 'Removal' + name: 'Pamela Dragosh' + link: https://lists.onap.org/g/onap-tsc/message/9550 diff --git a/checkstyle/pom.xml b/checkstyle/pom.xml index d2518ee0..102eeb1e 100644 --- a/checkstyle/pom.xml +++ b/checkstyle/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.onap.policy.parent</groupId> <artifactId>policy-parent</artifactId> - <version>5.0.0-SNAPSHOT</version> + <version>5.1.1-SNAPSHOT</version> </parent> <artifactId>checkstyle</artifactId> <name>checkstyle</name> diff --git a/docs/_static/logo_onap_2024.png b/docs/_static/logo_onap_2024.png Binary files differnew file mode 100644 index 00000000..55d307fc --- /dev/null +++ b/docs/_static/logo_onap_2024.png diff --git a/docs/apex/APEX-Introduction.rst b/docs/apex/APEX-Introduction.rst index 32c217a1..33ff39c2 100644 --- a/docs/apex/APEX-Introduction.rst +++ b/docs/apex/APEX-Introduction.rst @@ -521,7 +521,7 @@ Resources - Issue Management (source and documentation, ONAP JIRA, requires a Linux Foundation ID): - https://jira.onap.org/projects/POLICY/issues + https://lf-onap.atlassian.net/jira/software/c/projects/POLICY/issues .. container:: :name: footer diff --git a/docs/apex/APEX-MyFirstPolicyExample.rst b/docs/apex/APEX-MyFirstPolicyExample.rst index 089ead02..d58eeb1d 100644 --- a/docs/apex/APEX-MyFirstPolicyExample.rst +++ b/docs/apex/APEX-MyFirstPolicyExample.rst @@ -39,7 +39,10 @@ Introduction In this document we will show how APEX and APEX Policies can be used to achieve this, starting with a simple policy, building up to more complicated policy - that demonstrates the features of APEX. + that demonstrates the features of APEX. This example demonstrates + the data models, events and task logics that can be considered + for the scenario. From Oslo release, only apex cli editor can be used + for generating the policies. Data Models ^^^^^^^^^^^ @@ -270,28 +273,6 @@ New Policy Model define many Policy Models, each containing a different set of policies. - .. container:: paragraph - - So the first step is to create a new empty Policy Model - called ``MyFirstPolicyModel``. Using the APEX Policy - Editor, click on the 'File' menus and select 'New'. Then - define our new policy model called - ``MyFirstPolicyModel``. Use the 'Generate UUID' button to - create a new unique ID for the policy model, and fill in - a description for the policy model. Press the ``Submit`` - button to save your changes. - - .. container:: imageblock - - .. container:: content - - |File > New to create a new Policy Model| - - .. container:: imageblock - - .. container:: content - - |Create a new Policy Model| Events ------ @@ -300,45 +281,14 @@ Events .. container:: sect1 - .. rubric:: Create the input event ``SALE_INPUT`` and the + .. rubric:: Define the input event ``SALE_INPUT`` and the output event ``SALE_AUTH`` :name: create_the_input_event_code_sale_input_code_and_the_output_event_code_sale_auth_code .. container:: paragraph - Using the APEX Policy Editor, click on the 'Events' tab. - In the 'Events' pane, right click and select 'New': - - .. container:: imageblock - - .. container:: content - - |Right click to create a new event| - - .. container:: paragraph - - Create a new event type called ``SALE_INPUT``. Use the - 'Generate UUID' button to create a new unique ID for the - event type, and fill in a description for the event. Add - a namespace, e.g. ``com.hyperm``. We can add hard-coded - strings for the ``Source`` and ``Target``, e.g. ``POS`` - and ``APEX``. At this stage we will not add any parameter - fields, we will leave this until later. Use the - ``Submit`` button to create the event. - - .. container:: imageblock - - .. container:: content - - |Fill in the necessary information for the - 'SALE_INPUT' event and click 'Submit'| - - .. container:: paragraph + Define the new event types called ``SALE_INPUT`` and ``SALE_AUTH``. - Repeat the same steps for a new event type called - ``SALE_AUTH``. Just use ``APEX`` as source and ``POS`` as - target, since this is the output event coming from APEX - going to the sales point. .. container:: paragraph @@ -348,18 +298,6 @@ Events .. container:: paragraph - To create new item schemas, click on the 'Context Item - Schemas' tab. In that 'Context Item Schemas' pane, right - click and select 'Create new ContextSchema'. - - .. container:: imageblock - - .. container:: content - - |Right click to create a new Item Schema| - - .. container:: paragraph - Create item schemas with the following characteristics, each with its own unique UUID: @@ -411,20 +349,6 @@ Events | | | | values | +-----------------+-----------------+-----------------+-----------------+ - .. container:: imageblock - - .. container:: content - - |Create a new Item Schema| - - .. container:: paragraph - - The item schemas can now be seen on the 'Context Item - Schemas' tab, and can be updated at any time by - right-clicking on the item schemas on the 'Context Item - Schemas' tab. Now we can go back to the event definitions - for ``SALE_INPUT`` and ``SALE_AUTH`` and add some - parameter fields. .. TIP:: @@ -443,16 +367,12 @@ Events .. container:: paragraph - ``Avro`` schema definitions can be any valid `Avro <https://avro.apac - he.org/docs/current/spec.html>`__ schema. For events using fields defined with + ``Avro`` schema definitions can be any valid `Avro <https://avro.apache.org/docs/1.12.0/specification/>`__ schema. For events using fields defined with Avro schemas, any incoming event containing that field must contain a value that conforms to the Avro schema. .. container:: paragraph - Click on the 'Events' tab, then right click the - ``SALE_INPUT`` row and select 'Edit Event - :literal:`SALE_INPUT’. To add a new event parameter use the 'Add Event Parameter' button at the bottom of the screen. For the `SALE_INPUT` - event add the following event parameters: + Add the following event parameters: .. table:: Table 2. Event Parameter Fields for the ``SALE_INPUT`` Event @@ -476,10 +396,6 @@ Events | notes | notes_type | *yes* | +----------------------+----------------------+-----------------------+ - .. container:: paragraph - - Remember to click the 'Submit' button at the bottom of - the event definition pane. .. TIP:: @@ -490,16 +406,10 @@ Events passed to APEX. If an *optional* field is not set for an output event then value will be set to ``null``. - .. container:: imageblock - - .. container:: content - - |Add new event parameters to an event| .. container:: paragraph - Select the ``SALE_AUTH`` event and add the following - event parameters: + Add the following event parameters for ``SALE_AUTH`` event: .. table:: Table 3. Event Parameter Fields for the ``SALE_AUTH`` Event @@ -527,10 +437,6 @@ Events | notes | notes_type | *yes* | +----------------------+----------------------+-----------------------+ - .. container:: paragraph - - Remember to click the 'Submit' button at the bottom of - the event definition pane. .. container:: paragraph @@ -569,32 +475,8 @@ New Policy .. container:: paragraph Therefore, to create a new policy we must first define - one or more tasks. - - .. container:: paragraph - - To create a new Task click on the 'Tasks' tab. In the - 'Tasks' pane, right click and select 'Create new Task'. - Create a new Task called ``MorningBoozeCheck``. Use the - 'Generate UUID' button to create a new unique ID for the - task, and fill in a description for the task. - - .. container:: imageblock - - .. container:: content - - |Right click to create a new task| - - .. container:: paragraph - - Tasks are configured with a set of *input fields* and a - set of *output fields*. To add new input/output fields - for a task use the 'Add Task Input Field' and 'Add Task - Output Field' button. The list of input and out fields to - add for the ``MorningBoozeCheck`` task are given below. - The input fields are drawn from the parameters in the - state’s input event, and the task’s output fields are - used to populate the state’s output event. The task’s + one or more tasks. Tasks are configured with a set of + *input fields* and a set of *output fields*. The task’s input and output fields must be a subset of the event parameters defined for the input and output events for any state that uses that task. (You may have noticed that @@ -651,11 +533,6 @@ New Policy | notes | notes_type | +-----------------------------------+-----------------------------------+ - .. container:: imageblock - - .. container:: content - - |Add input and out fields for the task| .. container:: paragraph @@ -687,12 +564,6 @@ New Policy Programmers Guide. - .. container:: imageblock - - .. container:: content - - |Add task logic the task| - .. container:: paragraph An alternative version of the same logic is available in @@ -701,40 +572,17 @@ New Policy .. container:: paragraph - The task definition is now complete so click the 'Submit' - button to save the task. The task can now be seen on the - 'Tasks' tab, and can be updated at any time by - right-clicking on the task on the 'Task' tab. Now that we + The task definition is now complete. Now that we have created our task, we can can create a policy that uses that task. .. container:: paragraph - To create a new Policy click on the 'Policies' tab. In - the 'Policies' pane, right click and select 'Create new - Policy': - - .. container:: paragraph - - Create a new Policy called ``MyFirstPolicy``. Use the - 'Generate UUID' button to create a new unique ID for the - policy, and fill in a description for the policy. Use - 'FREEFORM' as the 'Policy Flavour'. - - .. container:: paragraph - - Each policy must have at least one state. Since this is + Create a new Policy called ``MyFirstPolicy``.Each policy + must have at least one state. Since this is 'freeform' policy we can add as many states as we wish. Let’s start with one state. Add a new state called - ``BoozeAuthDecide`` to this ``MyFirstPolicy`` policy - using the 'Add new State' button after filling in the - name of our new state. - - .. container:: imageblock - - .. container:: content - - |Create a new policy| + ``BoozeAuthDecide`` to this ``MyFirstPolicy`` policy. .. container:: paragraph @@ -754,17 +602,11 @@ New Policy will automatically select ``SALE_INPUT`` as the 'Policy Trigger Event' for our policy. - .. container:: imageblock - - .. container:: content - - |Create a state| .. container:: paragraph In this case we will create a reference the pre-existing - ``MorningBoozeCheck`` task that we defined above using - the 'Add New Task' button. Select the + ``MorningBoozeCheck`` task that we defined above. Select the ``MorningBoozeCheck`` task, and use the name of the task as the 'Local Name' for the task. @@ -832,57 +674,6 @@ New Policy ``MorningBoozeCheck`` task directly into outgoing ``SALE_AUTH`` events.) - .. container:: imageblock - - .. container:: content - - |Add a Task and Output Mapping| - - .. container:: paragraph - - Click the 'Submit' button to complete the definition of - our ``MyFirstPolicy`` policy. The policy - ``MyFirstPolicy`` can now be seen in the list of policies - on the 'Policies' tab, and can be updated at any time by - right-clicking on the policy on the 'Policies' tab. - - .. container:: paragraph - - The ``MyFirstPolicyModel``, including our - ``MyFirstPolicy`` policy can now be checked for errors. - Click on the 'Model' menu and select 'Validate'. The - model should validate without any 'Warning' or 'Error' - messages. If you see any 'Error' or 'Warning' messages, - carefully read the message as a hint to find where you - might have made a mistake when defining some aspect of - your policy model. - - .. container:: imageblock - - .. container:: content - - |Validate the policy model for error using the 'Model' - > 'Validate' menu item| - - .. container:: paragraph - - Congratulations, you have now completed your first APEX - policy. The policy model containing our new policy can - now be exported from the editor and saved. Click on the - 'File' menu and select 'Download' to save the policy - model in JSON format. The exported policy model is then - available in the directory you selected, for instance - ``$APEX_HOME/examples/models/MyFirstPolicy/1/MyFirstPolicyModel_0.0.1.json``. - The exported policy can now be loaded into the APEX - Policy Engine, or can be re-loaded and edited by the APEX - Policy Editor. - - .. container:: imageblock - - .. container:: content - - |Download the completed policy model using the 'File' - > 'Download' menu item| Test The Policy --------------- @@ -961,7 +752,7 @@ CLI Editor File .. container:: paragraph An equivalent version of the ``MyFirstPolicyModel`` - policy model can again be generated using the APEX CLI + policy model can be generated using the APEX CLI editor. A sample APEX CLI script is shown below: .. container:: ulist @@ -1013,14 +804,8 @@ Extend Policy Model .. container:: paragraph - To create a new Task click on the 'Tasks' tab. In the - 'Tasks' pane, right click and select 'Create new Task': - - .. container:: paragraph - - Create a new Task called ``MorningBoozeCheckAlt1``. Use - the 'Generate UUID' button to create a new unique ID for - the task, and fill in a description for the task. Select + Create a new Task called ``MorningBoozeCheckAlt1``. Create a + new unique ID for the task, and fill in a description for the task. Use the same input and output fields that we used earlier when we defined the ``MorningBoozeCheck`` task earlier. @@ -1099,49 +884,13 @@ Extend Policy Model of the other supported languages please refer to APEX Programmers Guide. - .. container:: imageblock - - .. container:: content - - |Create a new alternative task - \`MorningBoozeCheckAlt1\`| - .. container:: paragraph - The task definition is now complete so click the 'Submit' - button to save the task. Now that we have created our + The task definition is now complete. Now that we have created our task, we can can add this task to the single pre-existing state (``BoozeAuthDecide``) in our policy. - .. container:: paragraph - To edit the ``BoozeAuthDecide`` state in our policy click - on the 'Policies' tab. In the 'Policies' pane, right - click on our ``MyFirstPolicy`` policy and select 'Edit'. - Navigate to the ``BoozeAuthDecide`` state in the 'states' - section at the bottom of the policy definition pane. - - .. container:: imageblock - - .. container:: content - - |Right click to edit a policy| - - .. container:: paragraph - - To add our new task ``MorningBoozeCheckAlt1``, scroll - down to the ``BoozeAuthDecide`` state in the 'States' - section. In the 'State Tasks' section for - ``BoozeAuthDecide`` use the 'Add new task' button. Select - our new ``MorningBoozeCheckAlt1`` task, and use the name - of the task as the 'Local Name' for the task. The - ``MorningBoozeCheckAlt1`` task can reuse the same - ``MorningBoozeCheck_Output_Direct`` 'Direct State Output - Mapping' that we used for the ``MorningBoozeCheck`` task. - (Recall that the role of the 'State Output Mapping' is to - select the output event for the state, and select the - next state to be executed. These both remain the same as - before.) .. container:: paragraph @@ -1164,18 +913,13 @@ Extend Policy Model logic using the ```JavaScript`` <https://en.wikipedia.org/wiki/JavaScript>`__ scripting language. Sample task selection logic code - is given here (|policy2_taskSelectionLogic_link|). Paste the script text into the 'Task - Selection Logic' box, and use "JAVASCRIPT" as the 'Task - Selection Logic Type / Flavour'. It is necessary to mark + is given here (|policy2_taskSelectionLogic_link|). It is necessary to mark one of the tasks as the 'Default Task' so that the task selection logic always has a fallback default option in cases where a particular task cannot be selected. In this case the ``MorningBoozeCheck`` task can be the default task. - - .. container:: imageblock - .. container:: content |State definition with 2 Tasks and Task Selection @@ -1183,13 +927,6 @@ Extend Policy Model .. container:: paragraph - When complete don’t forget to click the 'Submit' button - at the bottom of 'Policies' pane for our - ``MyFirstPolicy`` policy after updating the - ``BoozeAuthDecide`` state. - - .. container:: paragraph - Congratulations, you have now completed the second step towards your first APEX policy. The policy model containing our new policy can again be validated and @@ -1197,11 +934,9 @@ Extend Policy Model .. container:: paragraph - The exported policy model is then available in the - directory you selected, as **MyFirstPolicyModel_0.0.1.json**. - The exported policy can now be loaded into the APEX - Policy Engine, or can be re-loaded and edited by the APEX - Policy Editor. + Congratulations, you have now completed the second step + towards your first APEX policy.The policy can now be loaded into the APEX + Policy Engine. Test The Policy --------------- @@ -1289,7 +1024,7 @@ CLI Editor File .. container:: paragraph An equivalent version of the ``MyFirstPolicyModel`` - policy model can again be generated using the APEX CLI + policy model can be generated using the APEX CLI editor. A sample APEX CLI script is shown below: .. container:: ulist @@ -1303,23 +1038,6 @@ CLI Editor File 2.3.0-SNAPSHOT Last updated 2020-04-03 16:04:24 IST -.. |File > New to create a new Policy Model| image:: images/mfp/MyFirstPolicy_P1_newPolicyModel1.png -.. |Create a new Policy Model| image:: images/mfp/MyFirstPolicy_P1_newPolicyModel2.png -.. |Right click to create a new event| image:: images/mfp/MyFirstPolicy_P1_newEvent1.png -.. |Fill in the necessary information for the 'SALE_INPUT' event and click 'Submit'| image:: images/mfp/MyFirstPolicy_P1_newEvent2.png -.. |Right click to create a new Item Schema| image:: images/mfp/MyFirstPolicy_P1_newItemSchema1.png -.. |Create a new Item Schema| image:: images/mfp/MyFirstPolicy_P1_newItemSchema2.png -.. |Add new event parameters to an event| image:: images/mfp/MyFirstPolicy_P1_newEvent3.png -.. |Right click to create a new task| image:: images/mfp/MyFirstPolicy_P1_newTask1.png -.. |Add input and out fields for the task| image:: images/mfp/MyFirstPolicy_P1_newTask2.png -.. |Add task logic the task| image:: images/mfp/MyFirstPolicy_P1_newTask3.png -.. |Create a new policy| image:: images/mfp/MyFirstPolicy_P1_newPolicy1.png -.. |Create a state| image:: images/mfp/MyFirstPolicy_P1_newState1.png -.. |Add a Task and Output Mapping| image:: images/mfp/MyFirstPolicy_P1_newState2.png -.. |Validate the policy model for error using the 'Model' > 'Validate' menu item| image:: images/mfp/MyFirstPolicy_P1_validatePolicyModel.png -.. |Download the completed policy model using the 'File' > 'Download' menu item| image:: images/mfp/MyFirstPolicy_P1_exportPolicyModel1.png -.. |Create a new alternative task `MorningBoozeCheckAlt1`| image:: images/mfp/MyFirstPolicy_P2_newTask1.png -.. |Right click to edit a policy| image:: images/mfp/MyFirstPolicy_P2_editPolicy1.png .. |State definition with 2 Tasks and Task Selection Logic| image:: images/mfp/MyFirstPolicy_P2_editState1.png .. |taskLogicMvel_link| raw:: html diff --git a/docs/apex/APEX-OnapPf-Guide.rst b/docs/apex/APEX-OnapPf-Guide.rst index f7f1f3a7..289d1ea6 100644 --- a/docs/apex/APEX-OnapPf-Guide.rst +++ b/docs/apex/APEX-OnapPf-Guide.rst @@ -154,7 +154,7 @@ Verify Installation - run APEXOnapPf .. container:: paragraph - OnapPfConfig.json is the file which contains the initial configuration to startup the ApexStarter service. The dmaap topics to be used for sending or receiving messages is also specified in the this file. Provide this file as argument while running the ApexOnapPf. + OnapPfConfig.json is the file which contains the initial configuration to startup the ApexStarter service. The Kafka topics to be used for sending or receiving messages is also specified in the this file. Provide this file as argument while running the ApexOnapPf. .. container:: listingblock @@ -204,7 +204,7 @@ Verify Installation - run APEXOnapPf .. container:: paragraph - The ApexOnapPf service is now running, sending heartbeat messages to dmaap (which will be received by PAP) and listening for messages from PAP on the dmaap topic specified. Based on instructions from PAP, the ApexOnapPf will deploy or undeploy policies on the ApexEngine. + The ApexOnapPf service is now running, sending heartbeat messages to Kafka (which will be received by PAP) and listening for messages from PAP on the Kafka topic specified. Based on instructions from PAP, the ApexOnapPf will deploy or undeploy policies on the ApexEngine. .. container:: paragraph @@ -343,16 +343,27 @@ Format of the configuration file (OnapPfConfig.json) explained "supportedPolicyTypes":[{"name":"onap.policies.controlloop.operational.Apex","version":"1.0.0"}] (6) }, "topicParameterGroup": { - "topicSources" : [{ (7) - "topic" : "POLICY-PDP-PAP", (8) - "servers" : [ "message-router" ], (9) - "topicCommInfrastructure" : "dmaap" (10) - }], - "topicSinks" : [{ (11) - "topic" : "POLICY-PDP-PAP", (12) - "servers" : [ "message-router" ], (13) - "topicCommInfrastructure" : "dmaap" (14) - }] + "topicSources": [ + { + "topic": "policy-pdp-pap", + "servers": [ + "kafka:9092" + ], + "useHttps": false, + "topicCommInfrastructure": "kafka", + "fetchTimeout": 15000 + } + ], + "topicSinks": [ + { + "topic": "policy-pdp-pap", + "servers": [ + "kafka:9092" + ], + "useHttps": false, + "topicCommInfrastructure": "kafka" + } + ] } } @@ -392,7 +403,7 @@ Format of the configuration file (OnapPfConfig.json) explained | | topic. | +-----------------------------------+-------------------------------------------------+ | **10** | The source topic infrastructure. | - | | For e.g. dmaap, noop, ueb | + | | For e.g. kafka, noop | +-----------------------------------+-------------------------------------------------+ | **11** | List of topics' details to which | | | messages are sent. | @@ -404,5 +415,5 @@ Format of the configuration file (OnapPfConfig.json) explained | | topic. | +-----------------------------------+-------------------------------------------------+ | **14** | The sink topic infrastructure. | - | | For e.g. dmaap, noop, ueb | + | | For e.g. kafka, noop | +-----------------------------------+-------------------------------------------------+ diff --git a/docs/apex/APEX-Policy-Guide.rst b/docs/apex/APEX-Policy-Guide.rst index 7d2f01d3..2c3c684e 100644 --- a/docs/apex/APEX-Policy-Guide.rst +++ b/docs/apex/APEX-Policy-Guide.rst @@ -145,7 +145,7 @@ APEX Policy Model .. container:: paragraph The APEX policy model is shown in UML notation in the figure below. A policy model can be stored in JSON or XML - format in a file or can be held in a database. The APEX editor creates and modifies APEX policy models. APEX + format in a file or can be held in a database. The APEX Cli editor creates and modifies APEX policy models. APEX deployment deploys policy models, and a policy model is loaded into APEX engines so that the engines can run the policies in the policy model. @@ -327,7 +327,7 @@ Concept: ContextMap The set of context that is available for use by the policies of a *PolicyModel* is defined as *ContextMap* concept instances. The *PolicyModel* holds a map of all the *ContextMap* definitions. A *ContextMap* is itself a container for a group of related context items, each of which is represented by a *ContextItem* concept instance. *ContextMap* - concepts are keyed with an ``ArtifactKey`` key. A developer can use the APEX Policy Editor to create context maps for + concepts are keyed with an ``ArtifactKey`` key. A developer can use the APEX Policy Cli Editor to create context maps for their application domain. .. container:: paragraph @@ -471,7 +471,8 @@ Concept: Logic The *LogicCode* field of a Logic concept definition is a string that holds the program code that is to be executed at run time. The *LogicType* field defines the language of the code. The standard values are the logic languages - supported by APEX: `JAVASCRIPT <https://en.wikipedia.org/wiki/JavaScript>`__, `JAVA <https://java.com/en/>`__, + supported by APEX: `JAVASCRIPT <https://en.wikipedia.org/wiki/JavaScript>`__, + `JAVA <https://www.oracle.com/java/>`__, `JYTHON <http://www.jython.org/>`__, `JRUBY <http://jruby.org/>`__, or `MVEL <https://en.wikibooks.org/wiki/Transwiki:MVEL_Language_Guide>`__. @@ -1869,7 +1870,7 @@ Writing Multiple Output Events from a Final State Consider a simple example where a policy *CDSActionPolicy* has a state *MakeCDSRequestState* which is also a final state. The state is triggered by an event *AAIEvent*. A task called *HandleCDSActionTask* is associated with *MakeCDSRequestState*.There are two output events expected from *MakeCDSRequestState* which are *CDSRequestEvent* - (request event sent to CDS) and *LogEvent* (log event sent to DMaaP). + (request event sent to CDS) and *LogEvent* (log event sent to Kafka). Writing an APEX policy with this example will involve the below changes. *Command File:* @@ -1890,7 +1891,7 @@ Writing Multiple Output Events from a Final State event create name=CDSRequestEvent version=0.0.1 nameSpace=org.onap.policy.apex.test source=APEX target=CDS event parameter create name=CDSRequestEvent parName=actionIdentifiers schemaName=CDSActionIdentifiersType .. - event create name=LogEvent version=0.0.1 nameSpace=org.onap.policy.apex.test source=APEX target=DMaaP + event create name=LogEvent version=0.0.1 nameSpace=org.onap.policy.apex.test source=APEX target=Kafka event parameter create name=LogEvent parName=status schemaName=SimpleStringType .. diff --git a/docs/apex/APEX-User-Manual.rst b/docs/apex/APEX-User-Manual.rst index 8a4996b1..81e5cd1f 100644 --- a/docs/apex/APEX-User-Manual.rst +++ b/docs/apex/APEX-User-Manual.rst @@ -2099,7 +2099,7 @@ Configure Context Schema Handler are supported. Characters commonly used in field names, such as ``.`` and ``-``, are not supported by AVRO. for more information see `Avro Spec: - Names <https://avro.apache.org/docs/1.8.1/spec.html#names>`__. + Names <https://avro.apache.org/docs/1.12.0/specification/>`__. .. container:: paragraph diff --git a/docs/architecture/architecture.rst b/docs/architecture/architecture.rst index f582918c..18f2d233 100644 --- a/docs/architecture/architecture.rst +++ b/docs/architecture/architecture.rst @@ -187,7 +187,7 @@ such as *CLAMP* can use the *PolicyAPI* API to create, update, delete, and read - Management of the deployment of policies to PDPs in an ONAP installation. *PolicyAdministration* gives each PDP group a set of domain policies to execute. -*PolicyAdministration* handles PDPs and policy allocation to PDPs using asynchronous messaging over DMaaP. It provides +*PolicyAdministration* handles PDPs and policy allocation to PDPs using asynchronous messaging over Kafka. It provides three APIs: - a CRUD API for policy groups and subgroups @@ -722,46 +722,18 @@ the clusters. .. image:: images/MCSharedDB.svg -2.3.8.2 DMaaP Arrangement -""""""""""""""""""""""""" +2.3.8.2 Kafka Communication +""""""""""""""""""""""""""" -As in prior releases, communication between the PAPs and PDPs still takes place via -DMaaP. Two arrangements, described below, are supported. - -2.3.8.2.1 Local DMaaP -~~~~~~~~~~~~~~~~~~~~~ - -In this arrangement, each cluster is associated with its own, local -DMaaP, and communication only happens between PAPs and PDPs within the same cluster. - -.. image:: images/MCLocalDmaap.svg - -The one -limitation with this approach is that, when a PAP in cluster A deploys a policy, PAP -is only able to inform the PDPs in the local cluster; the PDPs in the other clusters -are not made aware of the new deployment until they generate a heartbeat, at which -point, their local PAP will inform them of the new deployment. The same is true of -changes made to the state of a PDP Group; changes only propagate to PDPs in other -clusters in response to heartbeats generated by the PDPs. - -.. image:: images/MCLocalHB.svg - -2.3.8.2.2 Shared DMaaP -~~~~~~~~~~~~~~~~~~~~~~ - -In this arrangement, the PAPs and PDPs in all of the clusters are -pointed to a common DMaaP. Because the PAP and PDPs all communicate via the same -DMaaP, when a PAP deploys a policy, all PDPs are made aware, rather than having to -wait for a heartbeat. - -.. image:: images/MCSharedDmaap.svg +In prior releases, communication between the PAPs and PDPs took place via +DMaaP. The communication now takes place over Kafka topics. 2.3.8.3 Missed Heartbeat """""""""""""""""""""""" To manage the removal of terminated PDPs from the DB, a record, containing a "last-updated" timestamp, is maintained within the DB for each PDP. Whether using a -local or shared DMaaP, any PAP receiving a message from a PDP will update the timestamp +local or shared Kafka cluster, any PAP receiving a message from a PDP will update the timestamp in the associated record, thus keeping the records “current”. .. image:: images/MCSharedHB.svg @@ -797,5 +769,26 @@ Policy Set A set of policies that are deployed on a PDP g deployed on a PDP group ================================= ================================================================================== +5. Security +=========== + +5.1 Threat Modeling +------------------- + +====================== ==================================================== ========================== +Threat category Attacker’s motive Affected security property +====================== ==================================================== ========================== +Spoofing Impersonating another user or system Authenticity +Tampering Illegal modification of data in transit or at rest Integrity +Repudiation Disputing an action that has taken place Non-repudiability +Information Disclosure of confidential information Confidentiality +Denial of Service Making system temporarily or permanently unavailable Availability +Elevation of Privilege Gaining higher privileges than entitled to Authority +====================== ==================================================== ========================== + +To ensure that this threat model is mitigated, use only ONAP Operations Manager `OOM <https://github.com/onap/oom>`_ +for production deployment. Policy docker and helm environment available at `policy-docker <https://github.com/onap/policy-docker>`_ +are for testing purposes only. + End of Document diff --git a/docs/clamp/acm/acm-architecture.rst b/docs/clamp/acm/acm-architecture.rst index c3e7d568..99bc6e91 100644 --- a/docs/clamp/acm/acm-architecture.rst +++ b/docs/clamp/acm/acm-architecture.rst @@ -311,7 +311,7 @@ deletions are not allowed on Automation Composition Types that have instances de The Instantiation component manages the Life Cycle Management of Automation Composition Instances and their Automation Composition Elements. It publishes a REST interface that is used to create Automation Composition Instances and set values for Common and Instance Specific properties. This REST interface is -public and is used by the ACM GUI. It may also be used by any other client via the public +public. It may also be used by any other client via the public REST interface. The REST interface also allows the state of Automation Composition Instances to be changed. A user can change the state of Automation Composition Instances as described in the state transition diagram shown in section 2 above. The Instantiation component issues update and state change @@ -432,7 +432,7 @@ At runtime, interaction between ONAP platform services and application microserv relatively unconstrained, so interactions between Automation Composition Elements for a given Automation Composition Instance remain relatively unconstrained. A `proposal to support access-controlled access to and between ONAP services -<https://wiki.onap.org/pages/viewpage.action?pageId=103417456>`_ +<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16472429/ONAP+Next+Generation+Security+Logging+Architecture>`_ will improve this. This can be complemented by intercepting and controlling services accesses between Automation Composition Elements for Automation Composition Instances for some/all Automation Composition types. @@ -496,6 +496,5 @@ The design and implementation of TOSCA Automation Compositions in CLAMP is descr #. :ref:`The CLAMP Automation Composition Runtime Server <clamp-runtime-acm>` #. :ref:`CLAMP Automation Composition Participants <clamp-acm-participants>` -#. :ref:`Managing Automation Compositions using The CLAMP GUI <clamp-gui-acm>` End of Document diff --git a/docs/clamp/acm/acm-participant-guide.rst b/docs/clamp/acm/acm-participant-guide.rst index b4ca885d..05532a02 100644 --- a/docs/clamp/acm/acm-participant-guide.rst +++ b/docs/clamp/acm/acm-participant-guide.rst @@ -48,17 +48,29 @@ and the same is configured for the 'ParticipantIntermediaryParameters' object in .. code-block:: bash + intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync clampAutomationCompositionTopics: topicSources: - - topic: POLICY-ACRUNTIME-PARTICIPANT + topic: ${participant.intermediaryParameters.topics.operationTopic} + servers: + - ${topicServer:localhost}:9092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + additionalProps: + group.id: policy-clamp-ac-name + - + topic: ${participant.intermediaryParameters.topics.syncTopic} servers: - ${topicServer:localhost}:9092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - topic: POLICY-ACRUNTIME-PARTICIPANT + topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - ${topicServer:localhost}:9092 topicCommInfrastructure: kafka @@ -73,13 +85,46 @@ and the same is configured for the 'ParticipantIntermediaryParameters' object in typeName: org.onap.policy.clamp.acm.PolicyAutomationCompositionElement typeVersion: 1.0.0 +Kafka Healthcheck +----------------- + +Optionally is possible to add a Kafka Healthcheck by configuration. That feature is responsible of starting the Kafka configuration. +If Kafka is not up and Kafka Healthcheck is not enable, Kafka messages configuration will fail. +This feature check Kafka by an admin connection and if Kafka is up, it will start the Kafka messages configuration, +but if Kafka is not up yet, it will retry this check later. + +Kafka Healthcheck supports the topics check and it could be enabled by configuration (using topicValidation parameter). +Usually topics are getting created when first message happen, so in that scenario, topicValidation should be set as false. +In different environment, the two topics will be created manually by a script with specific permissions. So Kafka could be up, +but the Kafka messages configuration could be fail because the two topics are not get created yet. +So in that scenario, topicValidation should be set as true, and if topics are not created yet, Healthcheck will retry that check later. + +For backward compatibility if Kafka Healthcheck is not configured, it will be disabled and Kafka messages configuration will start as normal. + +The following example shows the Kafka Healthcheck configuration. + +.. code-block:: bash + + intermediaryParameters: + topicValidation: true + clampAdminTopics: + servers: + - ${topicServer:kafka:9092} + topicCommInfrastructure: kafka + fetchTimeout: 15000 + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync + ........ + + Interfaces to Implement ----------------------- AutomationCompositionElementListener: Every participant should implement a handler class that implements the AutomationCompositionElementListener interface from the Participant Intermediary. The intermediary listener class listens for the incoming events from the ACM-runtime and invoke the handler class implementations for various operations. This class implements the methods for deploying, - undeploying, locking, unlocking , deleting, updating, migrating, priming, depriming requests that are coming from the ACM-runtime. + undeploying, locking, unlocking, deleting, updating, preparing, reviewing, migrating, migrationPrechecking, priming, depriming requests that are coming from the ACM-runtime. The methods are as follows. .. code-block:: java @@ -92,9 +137,10 @@ AutomationCompositionElementListener: 6. void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement, InstanceElementDto instanceElementUpdated) throws PfModelException; 7. void prime(CompositionDto composition) throws PfModelException; 8. void deprime(CompositionDto composition) throws PfModelException; - 9. void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException; - 10. void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement, DeployState deployState, LockState lockState) throws PfModelException; - 11. void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException; + 9. void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate, int stage) throws PfModelException; + 10. void migratePrecheck(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException; + 11. void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 12. void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; These method from the interface are implemented independently as per the user requirement. These methods after handling the appropriate requests should also invoke the intermediary's publisher apis to notify the ACM-runtime with the acknowledgement events. @@ -107,94 +153,196 @@ ParticipantParameters: ParticipantIntermediaryParameters getIntermediaryParameters() -Abstract class AcElementListenerV1 ----------------------------------- -This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener implemented in 7.1.0 version. -So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class. -The Abstract class AcElementListenerV1 supports the follow methods. - -.. code-block:: java - - 1. void undeploy(UUID instanceId, UUID elementId) throws PfModelException; - 2. void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException; - 3. void lock(UUID instanceId, UUID elementId) throws PfModelException; - 4. void unlock(UUID instanceId, UUID elementId) throws PfModelException; - 5. void delete(UUID instanceId, UUID elementId) throws PfModelException; - 6. void update(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException; - 7. void prime(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList) throws PfModelException; - 8. void deprime(UUID compositionId) throws PfModelException; - 9. void handleRestartComposition(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList, AcTypeState state) throws PfModelException; - 10. void handleRestartInstance(UUID instanceId, AcElementDeploy element, Map<String, Object> properties, DeployState deployState, LockState lockState) throws PfModelException; - 11. void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId, Map<String, Object> properties) throws PfModelException; +Abstract class AcElementListenerV3 +---------------------------------- +This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener from new releases. +Any new functionality in the future will be wrapped by this class. **Note**: this class needs intermediaryApi and it should be passed by constructor. It is declared as protected and can be used. -Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, handleRestartComposition and handleRestartInstance. +Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, migratePrecheck, review and prepare. -Un example of AutomationCompositionElementHandler implemented in 7.1.0 version and how to use AcElementListenerV1 abstract class: -.. code-block:: java - - @Component - @RequiredArgsConstructor - public class AutomationCompositionElementHandler implements AutomationCompositionElementListener { +Methods: deploy, undeploy, lock, unlock, delete, review and prepare + compositionElement: + ====================== ======================================= + **field** **description** + ====================== ======================================= + compositionId composition definition Id + elementDefinitionId composition definition element Id + inProperties composition definition in-properties + outProperties composition definition out-properties + ====================== ======================================= + instanceElement: + ============================== =========================== + **field** **description** + ============================== =========================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment policies and policy types + inProperties instance in-properties + outProperties instance out-properties + ============================== =========================== - private final ParticipantIntermediaryApi intermediaryApi; - private final otherService otherService; - .............................. - } +Method: update + compositionElement: + ====================== ======================================= + **field** **description** + ====================== ======================================= + compositionId composition definition Id + elementDefinitionId composition definition element Id + inProperties composition definition in-properties + outProperties composition definition out-properties + ====================== ======================================= + instanceElement: + ============================== ================================================ + **field** **description** + ============================== ================================================ + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(before the update)** + outProperties instance out-properties + ============================== ================================================ + instanceElementUpdated: + ============================== ====================================== + **field** **description** + ============================== ====================================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(updated)** + outProperties instance out-properties + ============================== ====================================== - @Component - public class AutomationCompositionElementHandler extends AcElementListenerV1 { +Methods: prime, deprime + composition: + ====================== =================================================================== + **field** **description** + ====================== =================================================================== + compositionId composition definition Id + inProperties composition definition in-properties for each definition element + outProperties composition definition out-properties for each definition element + ====================== =================================================================== - private final OtherService otherService; +Method: migratePrecheck + compositionElement: + ====================== ===================================================== + **field** **description** + ====================== ===================================================== + compositionId composition definition Id + elementDefinitionId composition definition element Id + inProperties composition definition in-properties + outProperties composition definition out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ====================== ===================================================== + compositionElementTarget: + ====================== ===================================================== + **field** **description** + ====================== ===================================================== + compositionId composition definition target Id + elementDefinitionId composition definition target element Id + inProperties composition definition target in-properties + outProperties composition definition target out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ====================== ===================================================== + instanceElement: + ============================== =================================================== + **field** **description** + ============================== =================================================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(before the migration)** + outProperties instance out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ============================== =================================================== + instanceElementMigrate: + ============================== ==================================================== + **field** **description** + ============================== ==================================================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(updated)** + outProperties instance out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ============================== ==================================================== - public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi, OtherService otherService) { - super(intermediaryApi); - this.otherService = otherService; - } - .............................. - } +Method: migrate + compositionElement: + ====================== ===================================================== + **field** **description** + ====================== ===================================================== + compositionId composition definition Id + elementDefinitionId composition definition element Id + inProperties composition definition in-properties + outProperties composition definition out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ====================== ===================================================== + compositionElementTarget: + ====================== ===================================================== + **field** **description** + ====================== ===================================================== + compositionId composition definition target Id + elementDefinitionId composition definition target element Id + inProperties composition definition target in-properties + outProperties composition definition target out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ====================== ===================================================== + instanceElement: + ============================== =================================================== + **field** **description** + ============================== =================================================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(before the migration)** + outProperties instance out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ============================== =================================================== + instanceElementMigrate: + ============================== ==================================================== + **field** **description** + ============================== ==================================================== + instanceId instance id + elementId instance element id + toscaServiceTemplateFragment + inProperties instance in-properties **(updated)** + outProperties instance out-properties + state element state: PRESENT, NOT_PRESENT, REMOVED, NEW + ============================== ==================================================== + stage: + the stage of the migration that the participant has to execute +Abstract class AcElementListenerV2 +---------------------------------- +This abstract class is introduced to help to maintain temporarily the java backward compatibility with AutomationCompositionElementListener implemented in 8.0.0 version. +So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class. -A second example: +The Abstract class AcElementListenerV2 supports the follow methods. .. code-block:: java - @Component - public class AutomationCompositionElementHandler implements AutomationCompositionElementListener { - - @Autowired - private ParticipantIntermediaryApi intermediaryApi; - - @Autowired - private otherService otherService; - .............................. - } - - @Component - public class AutomationCompositionElementHandler extends AcElementListenerV1 { - - @Autowired - private otherService otherService; - - public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi) { - super(intermediaryApi); - } - .............................. - } - -Abstract class AcElementListenerV2 ----------------------------------- -This abstract class is introduced to help to maintain the java backward compatibility with AutomationCompositionElementListener from new releases. -Any new functionality in the future will be wrapped by this class. + 1. void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 2. void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 3. void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 4. void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 5. void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 6. void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement, InstanceElementDto instanceElementUpdated) throws PfModelException; + 7. void prime(CompositionDto composition) throws PfModelException; + 8. void deprime(CompositionDto composition) throws PfModelException; + 9. void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException; + 10. void migratePrecheck(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException; + 11. void review(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; + 12. void prepare(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException; **Note**: this class needs intermediaryApi and it should be passed by constructor. It is declared as protected and can be used. -Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, handleRestartComposition and handleRestartInstance. +Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, migratePrecheck, review and prepare. -Methods: deploy, undeploy, lock, unlock and delete +Methods: deploy, undeploy, lock, unlock, delete, review and prepare compositionElement: ====================== ======================================= **field** **description** @@ -243,7 +391,7 @@ Method: update elementId instance element id toscaServiceTemplateFragment inProperties instance in-properties **(updated)** - outProperties instance out-properties + outProperties instance out-properties ============================== ====================================== Methods: prime, deprime @@ -256,7 +404,7 @@ Methods: prime, deprime outProperties composition definition out-properties for each definition element ====================== =================================================================== -Method: migrate +Method: migrate and migratePrecheck compositionElement: ====================== ======================================= **field** **description** @@ -283,7 +431,7 @@ Method: migrate elementId instance element id toscaServiceTemplateFragment inProperties instance in-properties **(before the migration)** - outProperties instance out-properties + outProperties instance out-properties ============================== =================================================== instanceElementMigrate: ============================== ====================================== @@ -293,9 +441,87 @@ Method: migrate elementId instance element id toscaServiceTemplateFragment inProperties instance in-properties **(updated)** - outProperties instance out-properties + outProperties instance out-properties ============================== ====================================== + +Abstract class AcElementListenerV1 +---------------------------------- +This abstract class is introduced to help to maintain temporarily the java backward compatibility with AutomationCompositionElementListener implemented in 7.1.0 version. +So developers can decide to align to new functionality later. Any new functionality in the future will be wrapped by this class. + +The Abstract class AcElementListenerV1 supports the follow methods. + +.. code-block:: java + + 1. void undeploy(UUID instanceId, UUID elementId) throws PfModelException; + 2. void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException; + 3. void lock(UUID instanceId, UUID elementId) throws PfModelException; + 4. void unlock(UUID instanceId, UUID elementId) throws PfModelException; + 5. void delete(UUID instanceId, UUID elementId) throws PfModelException; + 6. void update(UUID instanceId, AcElementDeploy element, Map<String, Object> inProperties) throws PfModelException; + 7. void prime(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList) throws PfModelException; + 8. void deprime(UUID compositionId) throws PfModelException; + 9. void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId, Map<String, Object> properties) throws PfModelException; + +**Note**: this class needs intermediaryApi and it should be passed by constructor. It is declared as protected and can be used. +Default implementation are supported for the methods: lock, unlock, update, migrate, delete, prime, deprime, migratePrecheck, review and prepare. + +Un example of AutomationCompositionElementHandler implemented in 7.1.0 version and how to use AcElementListenerV1 abstract class: + +.. code-block:: java + + @Component + @RequiredArgsConstructor + public class AutomationCompositionElementHandler implements AutomationCompositionElementListener { + + private final ParticipantIntermediaryApi intermediaryApi; + private final otherService otherService; + .............................. + } + + @Component + public class AutomationCompositionElementHandler extends AcElementListenerV1 { + + private final OtherService otherService; + + public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi, OtherService otherService) { + super(intermediaryApi); + this.otherService = otherService; + } + .............................. + } + + + +A second example: + +.. code-block:: java + + @Component + public class AutomationCompositionElementHandler implements AutomationCompositionElementListener { + + @Autowired + private ParticipantIntermediaryApi intermediaryApi; + + @Autowired + private otherService otherService; + .............................. + } + + @Component + public class AutomationCompositionElementHandler extends AcElementListenerV1 { + + @Autowired + private otherService otherService; + + public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi) { + super(intermediaryApi); + } + .............................. + } + + APIs to invoke -------------- ParticipantIntermediaryApi: @@ -331,6 +557,7 @@ This following methods are invoked to update the AC element state or AC element 1. void updateAutomationCompositionElementState(UUID instanceId, UUID elementId, DeployState deployState, LockState lockState, StateChangeResult stateChangeResult, String message); 2. void updateCompositionState(UUID compositionId, AcTypeState state, StateChangeResult stateChangeResult, String message); + 3. void updateAutomationCompositionElementStage(UUID instance, UUID elementId, StateChangeResult stateChangeResult, int stage, String message); In/Out composition Properties ----------------------------- @@ -415,7 +642,7 @@ In/Out instance Properties * during DEPLOIYNG (Out Properties will be take from last changes matching by elementId) * during UNDEPLOING * during LOCKING/UNLOCKING - * during UPDATING/MIGRATING + * during UPDATING/MIGRATING/PREPARE/REVIEW/MIGRATION_PRECHECKING Participants will receive the in/out instance Properties related to the element by InstanceElementDto class. @@ -440,13 +667,6 @@ The following code is an example how to update the property 'myProperty' and sen **Note**: In update and migrate Participants will receive the instance Properties before the merge (instanceElement) and the instance Properties merged (instanceElementUpdated / instanceElementMigrate). -Restart scenario ----------------- - Restart methods handle the scenario when participant shut down and restart. - During RESTARTING, compositions and instances will be stored in participant memory with In/Out Properties, 'useState' and 'operationalState'. - The method handleRestartComposition will be called for each composition and will be present the 'state' at the time the participant shut down. - The method handleRestartInstance will be called for each instance element and will be present the 'deployState' and the 'lockState' at the time the participant shut down. - In ONAP, the following participants are already implemented in java spring boot for various requirements. The maven modules can be referred here: @@ -507,18 +727,28 @@ The following example shows the topic parameters and the additional 'myparameter participant: myparameter: my parameter intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c90 clampAutomationCompositionTopics: topicSources: - - topic: POLICY-ACRUNTIME-PARTICIPANT + - topic: ${participant.intermediaryParameters.topics.operationTopic} + servers: + - ${topicServer:localhost}:9092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + additionalProps: + group.id: policy-clamp-my-first-ptn + - topic: ${participant.intermediaryParameters.topics.syncTopic} servers: - ${topicServer:localhost}:9092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - topic: POLICY-ACRUNTIME-PARTICIPANT + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - ${topicServer:localhost}:9092 topicCommInfrastructure: kafka @@ -533,7 +763,7 @@ The following example shows the Handler implementation and how could be the impl .. code-block:: java @Component - public class AutomationCompositionElementHandler extends AcElementListenerV2 { + public class AutomationCompositionElementHandler extends AcElementListenerV3 { @Override public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) @@ -617,7 +847,7 @@ The following example shows the Handler implementation and how could be the impl @Override public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement, - InstanceElementDto instanceElementUpdated) throws PfModelException { + InstanceElementDto instanceElementUpdated) throws PfModelException { // TODO update process @@ -634,15 +864,25 @@ The following example shows the Handler implementation and how could be the impl @Override public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget, - InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) - throws PfModelException + InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate, int stage) + throws PfModelException - // TODO migrate process + switch (instanceElementMigrate.state()) { + case NEW -> // TODO new element scenario + case REMOVED -> // TODO element remove scenario + default -> // TODO migration process + } if (isMigrateSuccess()) { - intermediaryApi.updateAutomationCompositionElementState( - instanceElement.instanceId(), instanceElement.elementId(), - DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated"); + if (isStageCompleted()) { + intermediaryApi.updateAutomationCompositionElementState( + instanceElement.instanceId(), instanceElement.elementId(), + DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migrated"); + } else { + intermediaryApi.updateAutomationCompositionElementStage( + instanceElement.instanceId(), instanceElement.elementId(), + StateChangeResult.NO_ERROR, nextStage, "stage " + stage + " Migrated"); + } } else { intermediaryApi.updateAutomationCompositionElementState( instanceElement.instanceId(), instanceElement.elementId(), @@ -651,6 +891,36 @@ The following example shows the Handler implementation and how could be the impl } @Override + public void migratePrecheck(UUID instanceId, UUID elementId) throws PfModelException { + + // TODO migration Precheck process + + intermediaryApi.updateAutomationCompositionElementState( + instanceElement.instanceId(), instanceElement.elementId(), + DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Migration precheck completed"); + } + + @Override + public void prepare(UUID instanceId, UUID elementId) throws PfModelException { + + // TODO prepare process + + intermediaryApi.updateAutomationCompositionElementState( + instanceElement.instanceId(), instanceElement.elementId(), + DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Prepare completed"); + } + + @Override + public void review(UUID instanceId, UUID elementId) throws PfModelException { + + // TODO review process + + intermediaryApi.updateAutomationCompositionElementState( + instanceElement.instanceId(), instanceElement.elementId(), + DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Review completed"); + } + + @Override public void prime(CompositionDto composition) throws PfModelException { // TODO prime process @@ -679,52 +949,58 @@ The following example shows the Handler implementation and how could be the impl } - @Override - public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException { - - // TODO restart process - - switch (state) { - case PRIMING -> prime(composition); - case DEPRIMING -> deprime(composition); - default -> intermediaryApi - .updateCompositionState(composition.compositionId(), state, StateChangeResult.NO_ERROR, "Restarted"); - } - } - - @Override - public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement, - DeployState deployState, LockState lockState) throws PfModelException { - - // TODO restart process - - if (DeployState.DEPLOYING.equals(deployState)) { - deploy(compositionElement, instanceElement); - return; - } - if (DeployState.UNDEPLOYING.equals(deployState)) { - undeploy(compositionElement, instanceElement); - return; - } - if (DeployState.UPDATING.equals(deployState)) { - update(compositionElement, instanceElement, instanceElement); - return; - } - if (DeployState.DELETING.equals(deployState)) { - delete(compositionElement, instanceElement); - return; - } - if (LockState.LOCKING.equals(lockState)) { - lock(compositionElement, instanceElement); - return; - } - if (LockState.UNLOCKING.equals(lockState)) { - unlock(compositionElement, instanceElement); - return; - } - intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), - instanceElement.elementId(), deployState, lockState, StateChangeResult.NO_ERROR, "Restarted"); - } +Allowed state from the participant perspective +---------------------------------------------- + ++------------+--------------+---------------------+-------------------------+ +| **Action** | **state** | **stChResult** | **Description** | ++------------+--------------+---------------------+-------------------------+ +| | PRIMED | NO_ERROR | Prime is completed | ++ Prime +--------------+---------------------+-------------------------+ +| | COMMISSIONED | FAILED | Prime is failed | ++------------+--------------+---------------------+-------------------------+ +| | COMMISSIONED | NO_ERROR | Deprime is completed | ++ Deprime +--------------+---------------------+-------------------------+ +| | PRIMED | FAILED | Deprime is failed | ++------------+--------------+---------------------+-------------------------+ + ++------------------+-----------------+---------------+----------------+----------------------------------+ +| **Action** | **deployState** | **lockState** | **stChResult** | **Description** | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | NO_ERROR | Deploy is completed | ++ Deploy +-----------------+---------------+----------------+----------------------------------+ +| | UNDEPLOYED | | FAILED | Deploy is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | UNDEPLOYED | | NO_ERROR | Undeploy is completed | +| Undeploy +-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | FAILED | Undeploy is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | | LOCKED | NO_ERROR | Lock is completed | ++ Lock +-----------------+---------------+----------------+----------------------------------+ +| | | UNLOCKED | FAILED | Lock is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | | UNLOCKED | NO_ERROR | Unlock is completed | ++ Unlock +-----------------+---------------+----------------+----------------------------------+ +| | | LOCKED | FAILED | Unlock is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | NO_ERROR | Update is completed | +| Update +-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | FAILED | Update is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | NO_ERROR | Migration is completed | ++ Migrate +-----------------+---------------+----------------+----------------------------------+ +| | DEPLOYED | | FAILED | Migration is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| Migrate Precheck | DEPLOYED | | NO_ERROR | Migration-precheck is completed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| Prepare | UNDEPLOYED | | NO_ERROR | Prepare is completed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| Review | DEPLOYED | | NO_ERROR | Review is completed | ++------------------+-----------------+---------------+----------------+----------------------------------+ +| | DELETED | | NO_ERROR | Delete is completed | +| Delete +-----------------+---------------+----------------+----------------------------------+ +| | UNDEPLOYED | | FAILED | Delete is failed | ++------------------+-----------------+---------------+----------------+----------------------------------+ AC Element states in failure scenarios @@ -765,6 +1041,179 @@ Migrate fails Deployed Considering the above mentioned behavior of the participant Intermediary, it is the responsibility of the developer to tackle the error scenarios in the participant with the suitable approach. -Tips: -If the participant tries to undeploy an element which doesn’t exist in the system any more (due to various other external factors), -it could update the element state to ‘undeployed’ using the Intermediary api. +Handle states and failure scenarios from the participant perspective +-------------------------------------------------------------------- + +It is important to make distinction between the state of the instance/element flow, and the state of the application/configuration involved. +A deployed element means that a participant has completed a deploy action, and should not be confused with a deployed application. +Example with two elements: + +1. an instance is deployed, so the two elements are DEPLOYED +2. user calls undeploy command (ACM-R sets all element as DEPLOYING) +3. participant executes the first instance element with success and sends UNDEPLOYED state +4. participant executes the second instance element with fail and sends DEPLOYED state +5. user calls undeploy command again (ACM-R sets all element as DEPLOYING) +6. participant does not know that the application related to the first element is already UNDEPLOYED when the flow state is UNDEPLOYING + +There are some contexts in a failure scenario that the participant need to know the state of the deployed application. +From participant side, using "outProperties" it could be possible to handle custom states that better suit whit the context. + +Example of a participant that deploy/undeploy applications. +The following Java code shows how to implement deploy and undeploy that avoid to repeat the action already executed. + +.. code-block:: java + + @Override + public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) + throws PfModelException { + + if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) { + // deploy process already done + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, + "Already Deployed"); + return; + } + + // deployment process + ....................................... + ....................................... + // end of the deployment process + + if (isDeploySuccess()) { + instanceElement.outProperties().put("state", "DEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Deployed"); + } else { + instanceElement.outProperties().put("state", "UNDEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.FAILED, "Deploy failed!"); + } + } + + @Override + public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) + throws PfModelException { + + if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) { + // undeploy process already done + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, + "Already Undeployed"); + return; + } + + // undeployment process + ....................................... + ....................................... + // end of the undeployment process + + if (isUndeploySuccess()) { + instanceElement.outProperties().put("state", "UNDEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Undeployed"); + } else { + instanceElement.outProperties().put("state", "DEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.FAILED, "Undeploy failed!"); + } + } + + +Example of a participant that make configurations. +The following Java code shows how to implement deploy and undeploy that needs a clean up and repeat the action. +The state of the configuration will saved in outProperties. + +.. code-block:: java + + @Override + public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException { + + if ("DEPLOYED".equals(instanceElement.outProperties().get("state"))) { + // clean up deployment + + } else if ("DEPLOYING".equals(state) || "UNDEPLOYING".equals(state)) { + // check and clean up + + } + + // deployment process + instanceElement.outProperties().put("state", "DEPLOYING"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + ....................................... + ....................................... + // end of the deployment process + + if (isDeploySuccess()) { + instanceElement.outProperties().put("state", "DEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR, "Deployed"); + } else { + instanceElement.outProperties().put("state", "UNDEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.FAILED, "Deploy failed!"); + } + } + + @Override + public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) + throws PfModelException { + + if ("UNDEPLOYED".equals(instanceElement.outProperties().get("state"))) { + // clean up undeployment + + } else if ("DEPLOYING".equals(state) || "UNDEPLOYING".equals(state)) { + // check and clean up + + } + + // undeployment process + instanceElement.outProperties().put("state", "UNDEPLOYING"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + ....................................... + ....................................... + // end of the undeployment process + + if (isUndeploySuccess()) { + instanceElement.outProperties().put("state", "UNDEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.UNDEPLOYED, null, StateChangeResult.NO_ERROR, "Undeployed"); + } else { + instanceElement.outProperties().put("state", "DEPLOYED"); + intermediaryApi.sendAcElementInfo(instanceElement.instanceId(), instanceElement.elementId(), + null, null, instanceElement.outProperties()); + + intermediaryApi.updateAutomationCompositionElementState(instanceElement.instanceId(), + instanceElement.elementId(), DeployState.DEPLOYED, null, StateChangeResult.FAILED, "Undeploy failed!"); + } + } + + +*In all suggestions shown before we have used labels as "DEPLOY", "UNDEPLOY", "DEPLOYING", "UNDEPLOYING" but the developer can change them as better suit with the context of the participant.* + diff --git a/docs/clamp/acm/acm-states.rst b/docs/clamp/acm/acm-states.rst index 215baf71..7a3222a5 100644 --- a/docs/clamp/acm/acm-states.rst +++ b/docs/clamp/acm/acm-states.rst @@ -10,9 +10,10 @@ ACM States Automation Composition Management manages a number of states of various types to manage the lifecycle of compositions. Those states are described here. Please also see the ACM System Level Dialogues page to see the system dialogues that change states and how states interrelate in detail. Please also see ITU Recommendation X.731, which is reflected in the states of AC Element Instances. -Participant State -================= -Participant states are NOT managed by ACM but the state of a participant is recorded and supervised by ACM. +Participant Replica State +========================= +Any participant could have more than one replica. +Participant replica states are NOT managed by ACM but the state of a participant replica is recorded and supervised by ACM. .. image:: images/acm-states/ParticipantStates.png @@ -79,4 +80,96 @@ Delete .. image:: images/acm-states/AcInstanceStatesDelete.png +Automation Composition Instance Sub State +========================================= +The sub states that an Automation Composition Instance can have are shown in the diagram below. + +.. image:: images/acm-states/AcInstanceSubStates.png + +How State are saved in DB +========================= +Any state will be saved in DB as number: + +Participant Replica State +------------------------- + ++--------------------+------------+ +| ParticipantState | Database | ++====================+============+ +| ON_LINE | 0 | ++--------------------+------------+ +| OFF_LINE | 1 | ++--------------------+------------+ + + +Automation Composition Type State +--------------------------------- + ++----------------+------------+ +| AcTypeState | Database | ++================+============+ +| COMMISSIONED | 0 | ++----------------+------------+ +| PRIMING | 1 | ++----------------+------------+ +| PRIMED | 2 | ++----------------+------------+ +| DEPRIMING | 3 | ++----------------+------------+ + +Automation Composition Instance DeployState +=========================================== + ++---------------+------------+ +| DeployState | Database | ++===============+============+ +| DEPLOYED | 0 | ++---------------+------------+ +| DEPLOYING | 1 | ++---------------+------------+ +| UNDEPLOYED | 2 | ++---------------+------------+ +| UNDEPLOYING | 3 | ++---------------+------------+ +| DELETING | 4 | ++---------------+------------+ +| DELETED | 5 | ++---------------+------------+ +| UPDATING | 6 | ++---------------+------------+ +| MIGRATING | 7 | ++---------------+------------+ + +Automation Composition Instance Lock State +========================================== + ++-------------+------------+ +| LockState | Database | ++=============+============+ +| LOCKED | 0 | ++-------------+------------+ +| LOCKING | 1 | ++-------------+------------+ +| UNLOCKED | 2 | ++-------------+------------+ +| UNLOCKING | 3 | ++-------------+------------+ +| NONE | 4 | ++-------------+------------+ + +Automation Composition Instance Sub State +========================================= + ++-------------------------+------------+ +| SubState | Database | ++=========================+============+ +| NONE | 0 | ++-------------------------+------------+ +| MIGRATION_PRECHECKING | 1 | ++-------------------------+------------+ +| PREPARING | 2 | ++-------------------------+------------+ +| REVIEWING | 3 | ++-------------------------+------------+ + End of Document diff --git a/docs/clamp/acm/acm-user-guide.rst b/docs/clamp/acm/acm-user-guide.rst index 3c56f906..8cc4c40f 100644 --- a/docs/clamp/acm/acm-user-guide.rst +++ b/docs/clamp/acm/acm-user-guide.rst @@ -232,6 +232,30 @@ Example payload to update the base url of the http request :language: json +Prepare AC instance +------------------- +Once the AC instance is created, the user can prepare the instance which in turn activates the corresponding participants to execute the intended operations. +In this case, the participants that support that action will be send the result by outProperties. + +.. code-block:: bash + + Invoke a PUT request + 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}' + +This returns a 202 response on a successful prepare order request. The elements will be in "PREPARING" sub state until the completion. +The current status and result can be fetched through the following endpoint. + +.. code-block:: bash + + Invoke a GET request + 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}' + +Request payload + +.. literalinclude:: files/AC-prepare.json + :language: json + + Deploy AC instance ------------------ Once the AC instance is created, the user can deploy the instance which in turn activates the corresponding participants to execute the intended operations. @@ -265,6 +289,29 @@ Once all the AC elements are deployed, there should be a test microservice pod r configured to send events on the kafka by the http participant. This can be verified on the test microservice application logs. The AC instances can also be undeployed and deleted by the user. +Review AC instance +------------------ +Once the AC instance is deployed, the user can review the instance which in turn activates the corresponding participants to execute the intended operations. +In this case, the participants that support that action will be send the result by outProperties. + +.. code-block:: bash + + Invoke a PUT request + 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}' + +This returns a 202 response on a successful review order request. The elements will be in "REVIEWING" sub state until the completion. +The current status and result can be fetched through the following endpoint. + +.. code-block:: bash + + Invoke a GET request + 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances/${instanceId}' + +Request payload + +.. literalinclude:: files/AC-review.json + :language: json + Update AC instance properties after deployment (Optional) --------------------------------------------------------- After the AC instance is deployed, the user can still update the instance property values if needed. In this case, the runtime updates these new values @@ -279,11 +326,33 @@ required operation. Note: Please refer the request payload section for updating the instance properties before deployment. +Migrate-Precheck AC instance +---------------------------- +After the AC instance is deployed, the user can trigger a migrate-precheck from it to other composition definition. +The target composition have to be primed. +The user can emulate an update of the instance property values if needed. + +.. code-block:: bash + + Invoke a POST request + 'http://policy_runtime_ip:port/onap/policy/clamp/acm/v2/compositions/${compositionId}/instances' + +Request Payload + +Example payload to migrate-precheck + +.. literalinclude:: files/AC-migrate-precheck.json + :language: json + Migrate AC instance ------------------- After the AC instance is deployed, the user can migrate it to other composition definition. -The target composition have to be primed and have to contain the same element definitions present in the source composition. -The user can update the instance property values if needed. +The target composition have to be primed and there can be an addition/removal of elements at this stage. +The user can update the instance property values for the existing elements if needed. +A new element can be added and any elements that are no longer needed can be removed from the target composition and +the migration payload. +The migration payload should contain the updated element list for the instance. + .. code-block:: bash @@ -293,6 +362,8 @@ The user can update the instance property values if needed. Request Payload Example payload to migrate and update the base url of the http request +A new element with id "709c62b3-8918-41b9-a747-d21eb79c6c22" has been added during migration which will be deployed +by the participant. .. literalinclude:: files/AC-migrate.json :language: json @@ -324,8 +395,8 @@ This deletes the AC instance from the database including all the element propert This returns a 202 response on successful delete order request. -Deprime Ac defintions ---------------------- +Deprime Ac definitions +---------------------- Once the AC instance is deleted, it can be deprimed from the participants to be safely deleted from the database. .. code-block:: bash @@ -339,8 +410,8 @@ Request payload .. literalinclude:: files/AC-depriming.json :language: json -Delete AC defintion -------------------- +Delete AC definition +-------------------- The AC definitions can be deleted if there are no instances are running and it is not primed to the participants. .. code-block:: bash @@ -393,28 +464,8 @@ Parameters like delay and success/fail could be set any time using the following The Json below is an example of configuration: -.. code-block:: json - - { - "deploySuccess": true, - "undeploySuccess": true, - "lockSuccess": true, - "unlockSuccess": true, - "deleteSuccess": true, - "updateSuccess": true, - "migrateSuccess": true, - "primeSuccess": true, - "deprimeSuccess": true, - "deployTimerMs": 1000, - "undeployTimerMs": 1000, - "migrateTimerMs": 100, - "lockTimerMs": 100, - "unlockTimerMs": 100, - "updateTimerMs": 100, - "deleteTimerMs": 100, - "primeTimerMs": 100, - "deprimeTimerMs": 100 - } +.. literalinclude:: files/simparticipant-parameters.json + :language: json Update and send composition outProperites ----------------------------------------- @@ -504,6 +555,7 @@ Default value of 'element.handler' is the most recent version. ==================== ==================== AcElementHandlerV1 AcElementListenerV1 AcElementHandlerV2 AcElementListenerV2 +AcElementHandlerV3 AcElementListenerV3 ==================== ==================== Example: @@ -511,4 +563,4 @@ Example: .. code-block:: yaml element: - handler: AcElementHandlerV1 + handler: AcElementHandlerV3 diff --git a/docs/clamp/acm/allowed-operations.rst b/docs/clamp/acm/allowed-operations.rst index 62de7ffc..12fca00e 100755 --- a/docs/clamp/acm/allowed-operations.rst +++ b/docs/clamp/acm/allowed-operations.rst @@ -129,3 +129,16 @@ Change status of Automation Composition Instance + +-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+
| | DEPLOYED | LOCKING | TIMEOUT | Start Unlocking transition and send unlock to participants after LOCKING got timeout |
+------------+-----------------+---------------+----------------+---------------------------------------------------------------------------------------------+
+
+Sub status of Automation Composition Instance
+---------------------------------------------
+
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| **Action** | **deployState** | **lockState** | **Description** |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Prepare | UNDEPLOYED | | Start Preparing transition and send prepare to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Review | DEPLOYED | LOCKED | Start Reviewing transition and send review to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
+| Migration-Precheck | DEPLOYED | LOCKED | Start Migration-Prechecking transition and send Migration-Precheck to participants |
++---------------------+-----------------+---------------+-----------------------------------------------------------------------------------------------------+
diff --git a/docs/clamp/acm/api-protocol/acm-participant-protocol.rst b/docs/clamp/acm/api-protocol/acm-participant-protocol.rst index 2b6beaca..d384633a 100644 --- a/docs/clamp/acm/api-protocol/acm-participant-protocol.rst +++ b/docs/clamp/acm/api-protocol/acm-participant-protocol.rst @@ -14,18 +14,21 @@ Protocol Dialogues ================== The protocol supports the dialogues described below. +Any participant could have more than one replica. All replicas of a specific participant, have same participant ID. +All replica data are synchronized by ACM-runtime through a sync message. This message will be triggered at any change in composition and instance. Participant Registration and De-Registration -------------------------------------------- -Participant Registration is performed by a Participant when it starts up. It registers its ID and the ACM Element Types it supports with the ACM runtime. -In a scenario where Participant has been restarted, ACM runtime have to provide all Primed ACM Definition and Deployed ACM instances of the Participant sending a Restart message. +Participant Registration is performed by a Participant when it starts up. +It registers its replica ID, participant ID and the ACM Element Types it supports with the ACM runtime. +In a scenario where a replica of a Participant has been restarted, ACM runtime have to provide all Primed ACM Definition and Deployed ACM instances of the Replica sending a Sync message. .. image:: ../images/system-dialogues/RegisterParticipant.png -Participant Deregistration is performed by a Participant when it shuts down. It deregisters its ID and type with the ACM runtime. +Participant Deregistration is performed by a Participant when it shuts down. It deregisters its replica ID with the ACM runtime. .. image:: ../images/system-dialogues/DeregisterParticipant.png @@ -33,7 +36,7 @@ Participant Deregistration is performed by a Participant when it shuts down. It Automation Composition Priming and De-Priming --------------------------------------------- -The Priming operation sends Automation Composition Types and common property values to participants for each Automation Composition Element Type in the Automation Composition Type. The ParticipantPrime message type is sent to trigger priming and depriming in participants in participants +The Priming operation sends Automation Composition Types and common property values to participants for each Automation Composition Element Type in the Automation Composition Type. The ParticipantPrime message type is sent to trigger priming and depriming in participants. .. image:: ../images/system-dialogues/PrimeAcTypeOnPpnts.png @@ -62,7 +65,7 @@ Automation Composition Update Automation Composition Update handles creation, change, and deletion of Automation Compositions on participants. Change of Automation Compositions uses a semantic versioning approach and follows the -semantics described on the page :ref:`4.1 Management of Automation Composition Instance +semantics described on the page :ref:`5.1 Management of Automation Composition Instance Configurations <management-acm-instance-configs>`. .. image:: ../images/acm-participants-protocol/acm-update.png diff --git a/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml b/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml index acbec2ad..78689689 100644 --- a/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml +++ b/docs/clamp/acm/api-protocol/puml/ParticipantDeregister.puml @@ -1,6 +1,11 @@ @startuml + +participant Participant +participant "ACM Runtime" +database "ACM Database" + Participant -> "ACM Runtime": [ASYNC] Deregister -"ACM Runtime" -> "ACM Database": Set Participant State as OFF_LINE +"ACM Runtime" -> "ACM Database": Set Participant Replica State as OFF_LINE Participant <- "ACM Runtime": [ASYNC] Deregistration Accepted Participant -> Participant: Shutdown Participant @enduml diff --git a/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml b/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml index f8aeee81..54be2af4 100644 --- a/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml +++ b/docs/clamp/acm/api-protocol/puml/ParticipantRegister.puml @@ -1,20 +1,24 @@ @startuml + +participant Participant +participant "ACM Runtime" +database "ACM Database" + activate Participant - Participant -> "CLAMP Runtime": [ASYNC] Register -activate "CLAMP Runtime" + Participant -> "ACM Runtime": [ASYNC] Register +activate "ACM Runtime" deactivate Participant - "CLAMP Runtime" -> "CLAMP Database": Create or Update Perticipant Registration,\n store supported ACM element types \n and set Perticipant State as ON_LINE - "CLAMP Runtime" -> Participant: [ASYNC] Registration Accepted - loop over ACM Definition - "CLAMP Runtime" -> "CLAMP Database": Mark all ACM element instances deployed\n on Participant as Restarting - "CLAMP Runtime" -> Participant: [ASYNC] Restart\n send Common Property Values\n and Instance Elements of this Participant] -deactivate "CLAMP Runtime" + "ACM Runtime" -> "ACM Database": Create a Participant Replica Registration,\n store supported ACM element types \n and set Replica State as ON_LINE + loop ACM Definition + "ACM Runtime" -> Participant: [ASYNC] Sync message\n send Common Property Values\n and Instance Elements of this Participant activate Participant -Participant -> Participant: Store Common Property Values and Instance Elements -Participant -> "CLAMP Runtime": [ASYNC] State Change Ack -activate "CLAMP Runtime" + Participant -> Participant: Store Common Property Values and Instance Elements + end loop + alt + "ACM Runtime" -> Participant: [ASYNC] Registration Accepted +deactivate "ACM Runtime" +Participant -> Participant: set participant as registered +Participant -> "ACM Runtime": [ASYNC] Status message deactivate Participant - "CLAMP Runtime" -> "CLAMP Database": Remove Restarting from all Compositions \n and Instances of this Participant -deactivate "CLAMP Runtime" - end +end @enduml diff --git a/docs/clamp/acm/api-protocol/system-level-dialogues.rst b/docs/clamp/acm/api-protocol/system-level-dialogues.rst index 0ef5f200..ec03353c 100644 --- a/docs/clamp/acm/api-protocol/system-level-dialogues.rst +++ b/docs/clamp/acm/api-protocol/system-level-dialogues.rst @@ -16,7 +16,8 @@ Priming The CLAMP Automation Composition Runtime Lifecycle Management uses the f 1.1 Register a Participant -------------------------- -Participant Registration is performed by a Participant when it starts up. It registers its ID and the ACM Element Types it supports with the ACM runtime. +Participant Registration is performed by a Participant when it starts up. +It registers its replica ID, participant ID and the ACM Element Types it supports with the ACM runtime. .. image:: ../images/system-dialogues/RegisterParticipant.png @@ -28,11 +29,17 @@ Participant Deregistration is performed by a Participant when it shuts down. It 1.3 Supervise Participants -------------------------- -Participant Supervision is performed periodically between participants and the ACM runtime server to ensure that registered participants are available over time. Participants send a heartbeat message to the ACM runtime at a configured interval. The heartbeat message contains updated status information for each AC Element Instance that has changed status since the last Heartbeat message sent by the participant. +Participant Supervision is performed periodically between participants and the ACM runtime server to ensure that registered participants are available over time. +Participants send a heartbeat Status message to the ACM runtime at a configured interval. .. image:: ../images/system-dialogues/SuperviseParticipantsStatusUpdate.png -The ACM runtime regularly checks the heartbeat reports from participants and takes action if participants time out. If a heartbeat message is not received for a participant in the Timeout Interval, the participant is marked as timed out and its ACM element instances are informed. +Participants could send outProperties update using Status message to the ACM runtime. +When Status message contains outProperties, ACM-runtime updates the Database and triggers a sync message to all replicas. + +.. image:: ../images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png + +The ACM runtime regularly checks the heartbeat reports from participants and takes action if participants time out. If a heartbeat message is not received for a participant replica in the Timeout Interval, the participant replica is marked as timed out. .. image:: ../images/system-dialogues/SuperviseParticipantsTimeout.png @@ -77,7 +84,7 @@ A participant should respond for each Automation Composition Element Type, thus .. image:: ../images/system-dialogues/PrimeAcTypeMultiplePpnts.png -The ACM Runtime updates the priming information in the database. +The ACM Runtime updates the priming information in the database, and send sync message to all replicas. .. image:: ../images/system-dialogues/PrimeInfoUpdatedInDb.png @@ -91,7 +98,7 @@ A participant should respond for each Automation Composition Element Type, thus .. image:: ../images/system-dialogues/DeprimeElements.png -The ACM Runtime updates the priming information in the database. +The ACM Runtime updates the priming information in the database, and send sync message to all replicas. .. image:: ../images/system-dialogues/UpdateDeprimeInDb.png @@ -122,11 +129,26 @@ Each participant deletes its AC Element Instances from the AC Instance .. image:: ../images/system-dialogues/DeleteInstanceElements.png -The ACM Runtime receives and stores the responses, when all instances element are deleted, it delete the instance. +The ACM Runtime receives and stores the responses, when all instances element are deleted, it delete the instance and send sync message to all replicas. .. image:: ../images/system-dialogues/DeleteResponseStored.png -3.3 Deploy Automation Composition Instance +3.3 Prepare Automation Composition Instance +------------------------------------------- +Prepare is a check system from participant before the deployment of an instance, the result will stored in outProperties and not other changes are allowed. +The user requests the AC Instance to be prepared using a REST endpoint. The ACM Runtime orders the AC Instance to be prepared to Participants. + +.. image:: ../images/system-dialogues/PrepareAcInstance.png + +Each participant prepares its AC Element Instances from the AC Instance. + +.. image:: ../images/system-dialogues/PrepareAcInstanceElements.png + +The ACM Runtime receives and stores the responses, and send sync message to all replicas. + +.. image:: ../images/system-dialogues/PrepareResponseStored.png + +3.4 Deploy Automation Composition Instance ------------------------------------------ The user requests the AC Instance to be deployed using a REST endpoint. The ACM Runtime orders the AC Instance to be deployed to Participants. @@ -136,11 +158,26 @@ Each participant deploys its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/DeployAcInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/DeployResponseStored.png -3.4 Update Automation Composition Instance +3.5 Review Automation Composition Instance +------------------------------------------ +Review is a check system from participant after the deployment of an instance, the result will stored in outProperties and not other changes are allowed. +The user requests the AC Instance to be Reviewed using a REST endpoint. The ACM Runtime orders the AC Instance to be reviewed to Participants. + +.. image:: ../images/system-dialogues/ReviewAcInstance.png + +Each participant reviews its AC Element Instances from the AC Instance. + +.. image:: ../images/system-dialogues/ReviewAcInstanceElements.png + +The ACM Runtime receives and stores the responses, and send sync message to all replicas. + +.. image:: ../images/system-dialogues/ReviewResponseStored.png + +3.6 Update Automation Composition Instance ------------------------------------------ The user requests the AC Instance to be updated using a REST endpoint. The ACM Runtime orders the AC Instance to be updated. @@ -150,11 +187,26 @@ Each participant updates its AC Element from the AC Instance .. image:: ../images/system-dialogues/UpdateAcElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UpdateAcElementsResponse.png -3.5 Migrate Automation Composition Instance +3.7 Migration Precheck Automation Composition Instance +------------------------------------------------------ +Migration Precheck is a check system from participant before the migration of an instance, the result will stored in outProperties and not other changes are allowed. +The user requests a Migration Precheck for the AC Instance using a REST endpoint. The ACM Runtime orders the Migration Precheck for AC Instance to Participants. + +.. image:: ../images/system-dialogues/MigrationPrecheckAcInstance.png + +Each participant execute a Migration Precheck to its AC Element Instances from the AC Instance. + +.. image:: ../images/system-dialogues/MigrationPrecheckAcInstanceElements.png + +The ACM Runtime receives and stores the responses, and send sync message to all replicas. + +.. image:: ../images/system-dialogues/MigrationPrecheckResponseStored.png + +3.8 Migrate Automation Composition Instance ------------------------------------------- The user requests the AC Instance to be migrated using a REST endpoint. The ACM Runtime orders the AC Instance to be migrated. @@ -164,11 +216,11 @@ Each participant migrated its AC Element from the AC Instance .. image:: ../images/system-dialogues/MigrateAcElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/MigrateAcElementsResponse.png -3.6 Undeploy Automation Composition Instance +3.9 Undeploy Automation Composition Instance -------------------------------------------- The user requests the AC Instance to be undeployed using a REST endpoint. The ACM Runtime orders the AC Instance to be undeployed. @@ -178,17 +230,17 @@ Each participant undeploys its AC Element Instances from the AC Instance .. image:: ../images/system-dialogues/UndeployInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UndeployResponseStored.png -3.7 Read Automation Composition Instances ------------------------------------------ +3.10 Read Automation Composition Instances +------------------------------------------ .. image:: ../images/system-dialogues/ReadAcInstances.png -3.8 Unlock Automation Composition Instance ------------------------------------------- +3.11 Unlock Automation Composition Instance +------------------------------------------- The user requests the AC Instance to be unlocked using a REST endpoint. The ACM Runtime orders the AC Instance to be unlocked on Participants. .. image:: ../images/system-dialogues/OrderInstanceUnlock.png @@ -197,12 +249,12 @@ Each participant unlocks its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/UnlockInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/UnlockResponseStored.png -3.9 Lock Automation Composition Instance ----------------------------------------- +3.12 Lock Automation Composition Instance +----------------------------------------- The user requests the AC Instance to be locked using a REST endpoint. The ACM Runtime orders the AC Instance to be locked on Participants. .. image:: ../images/system-dialogues/LockAcInstance.png @@ -211,21 +263,16 @@ Each participant locks its AC Element Instances from the AC Instance. .. image:: ../images/system-dialogues/LockAcInstanceElements.png -The ACM Runtime receives and stores the responses. +The ACM Runtime receives and stores the responses, and send sync message to all replicas. .. image:: ../images/system-dialogues/LockResponseStored.png -3.10 Update Operational State on Automation Composition Instance ----------------------------------------------------------------- +3.13 Update Operational State, Use State and outProperties on Automation Composition Instance +--------------------------------------------------------------------------------------------- .. image:: ../images/system-dialogues/UpdateOperationalState.png -3.11 Update Usage State on Automation Composition Instance ----------------------------------------------------------- - -.. image:: ../images/system-dialogues/UpdateUsageState.png - -3.12 Failure handling in ACM +3.14 Failure handling in ACM ---------------------------- After any ACM operation is completed, one of the following result messages will be updated in the ACM. These result values are updated along with the overall state of the ACM instance. @@ -270,17 +317,17 @@ The following flow shown and example of deployment that get stuck, and the user .. image:: ../images/system-dialogues/TimeoutParticipant.png -3.13 OFF_LINE handling in ACM +3.15 OFF_LINE handling in ACM ----------------------------- -Runtime marks the participant state with the value 'OFF_LINE' when the participant fails to report the periodic heartbeat, -the participant state is then marked as 'OFF_LINE' by the ACM-R after the configured waiting limit is reached. -That scenario might happen when participant is shutdown, in that scenario all on going operations with that participant are marked 'TIMEOUT' due the missing messages back. +Runtime marks the participant state with the value 'OFF_LINE' when the participant replica fails to report the periodic heartbeat, +the participant replica state is then marked as 'OFF_LINE' by the ACM-R after the configured waiting limit is reached. +That scenario might happen when participant replica is shutdown, in that scenario all on going operations with that participant are marked 'TIMEOUT' due the missing messages back. -The user cannot trigger any state change events when participant state is 'OFF_LINE'. +The user cannot trigger any state change events when all participant replicas state are 'OFF_LINE' (no one is available 'ONLINE'). .. image:: ../images/system-dialogues/OfflineAcmResult.png -When a participant state is marked 'OFF_LINE', it might come back ONLINE and the user can trigger state change events to the ACM. +When a participant replica state is marked 'OFF_LINE', it might come back ONLINE and the user can trigger state change events to the ACM. End of Document diff --git a/docs/clamp/acm/clamp-csit.rst b/docs/clamp/acm/clamp-csit.rst new file mode 100644 index 00000000..72c4c59d --- /dev/null +++ b/docs/clamp/acm/clamp-csit.rst @@ -0,0 +1,107 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) Nordix Foundation. All rights reserved. + +.. _acm-clamp-csit-label: + +Clamp ACM Integration Tests +########################### + +.. contents:: + :depth: 4 + +The ACM functionalities and workflow are tested as part of the clamp Integration test suite written in Robot framework. +These tests are available in the policy-docker repository and it can be executed against both docker and kubernetes deployments of clamp. +ACM-R, kafka, policy-participant, http-participant, k8s-participant are deployed along with a participant simulator. +In jenkins pipeline, these tests are periodically invoked against a docker deployment of clamp ACM components. +This test suite should be updated periodically as and when new features and functionalities are added to the clamp ACM. +The following table describes the various test cases that are being verified and their expected behaviour. + +ACM Integration Tests +--------------------- + ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| Test case | Description | Expected behavior | ++===============================================+========================================================================================================+========================================================================================================================+ +| HealthcheckAcm | Verifies the ACM runtime is up and running | Should receive a 200 success response with STATUS:UP | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| HealthcheckParticipantSim | Verifies the participant simulator is up and running | Should receive a 200 success response with STATUS:UP | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+----------------------------+-------------------------------------------------------------------------------------------+ +| RegisterParticipants | Sends a PUT request to ACM-R to request the participants for registration | Should receive a 202 Accepted response from ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CommissionAutomationComposition | Commissions a Tosca service template to ACM-R | Should receive a 201 created response from ACM_R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CommissionAcDefinitionMigrationFrom | Commissions a service template for testing Migration flow | Should receive a 201 created response from ACM_R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CommissionAcDefinitionMigrationTo | Commissions a target service template for testing Migration flow | Should receive a 201 created response from ACM_R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| PrimeACDefinitions | Prime the AC definition that was previously commissioned | Should receive a 202 Accepted response from ACM-R and the state of AC definition should be PRIMED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailPrimeACDefinitionFrom | Verify the priming failure from participant sim by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC definition should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| PrimeACDefinitionFrom | Prime the AC definition for migration test, by updating the participant sim behavior to success | Should receive a 202 Accepted response from ACM-R and the state of AC definition should be PRIMED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| PrimeACDefinitionTo | Prime the target AC definition for migration test | Should receive a 202 Accepted response from ACM-R and the state of AC definition should be PRIMED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| InstantiateAutomationComposition | Instantiate the Automation Composition from the service template 1 | Should receive a 201 Accepted response from ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| InstantiateAutomationCompositionMigrationFrom | Instantiate the Automation Composition from the service template of migration test | Should receive a 201 Accepted response from ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailDeployAutomationCompositionMigration | Verify the deployment failure for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R and the stateChangeResult of AC instance should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| TimeoutDeployAutomationCompositionMigration | Verify the deployment is timing out for migration AC instance by updating the participant sim behavior | Should receive a 202 Accepted response from ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| PrepareAutomationComposition | Send Prepare request to ACM-R for the AC instance before deployment | Should receive a 202 Accepted response from ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DeployAutomationComposition | Deploy the AC instance | Should receive a 202 Accepted response from ACM-R and the state of AC instance in ACM-R should be changed to DEPLOYED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CheckTraces | Verify the traces are being recorded in Jaeger by fetching Jaeger endpoint | Should receive a 200 response with trace values present | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CheckKafkaPresentInTraces | Verify that kafka traces are being recorded in Jaeger | Should receive a 200 response with kafka trace values present | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CheckHttpPresentInAcmTraces | Verify that http traces are being recorded in jaeger | Should receive a 200 response with http trace values present | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| QueryPolicies | verify the new policies are deployed by the Policy-participant in PAP | Should receive a 200 response with Policy name present in the deployed policies | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| QueryPolicyTypes | Verify the new policy types are created by the Policy-participant in API | Should receive a 200 response with Policy type present in the available policy types | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| ReviewAutomationComposition | Review the current state of AC instance | Should receive a 202 Accepted response and the substate should be present in the AC instance data | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| CheckTimeoutAutomationComposition | Verify the migration AC instance deployment is timed out | Should receive a 200 response with stateChangeResult TIMEOUT | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DeployAutomationCompositionMigration | Deploy the migration AC instance after updating Participant sim to return success | Should receive a 202 Accepted status and the deploy state should be DEPLOYED in ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| SendOutPropertiesToRuntime | Update participant sim to send outProperties and verify it is updated in ACM-R | Should receive 200 response from ACM-R and the response should contain the outProperties available under AC instance | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| AutomationCompositionUpdate | Update the AC instance properties in ACM-R | Should receive a 200 response from ACM-R and the AC instance should contain the updated property values | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| PrecheckAutomationCompositionMigration | Precheck the Migration AC instance | Should receive a 200 response and the AC instance should provide the substate info | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| AutomationCompositionMigrationTo | Migrate the AC instance | Should receive a 200 response and the AC instance should be migrated to to the target AC definition | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| UnDeployAutomationComposition | Undeploy the AC instance | Should receive a 202 Accepted response and the AC instance in ACM-R should have the UNDEPLOYED status | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailUnDeployAutomationCompositionMigrationTo | Verify the failure of undeploy in migration AC instance by updating the participant sim to fail | Should receive a 202 Accepted response and the stateChangeResult of the instance in ACM-R should be FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| UnDeployAutomationCompositionMigrationTo | Undeploy the migration AC instance by updating the participant sim to success | Should receive a 202 Accepted response and the deploy state of the migration AC instance should be UNDEPLOYED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| UnInstantiateAutomationComposition | Uninstantiate the AC instance | Should receive a 202 Accepted response and the AC instance should have been deleted in ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailUnInstantiateACMigrationTo | Verify the uninstantiate failure in migration AC instance after updating the participant sim to fail | Should receive a 202 Accepted response, and the AC instance stateChangeResult should be FAILED in ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| UnInstantiateAutomationCompositionMigrationTo | Uninstantiate the migration AC instance | Should receive a 202 Accepted response and the migration AC instance should have been deleted in ACM-R | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DePrimeACDefinitions | Deprime the AC definition | Should receive a 202 Accepted response and the the AC definition in ACM-R should be moved to COMMISSIONED state | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| FailDePrimeACDefinitionsFrom | Verify the failure of deprime in migration AC definition by updating the participant sim to fail | Should receive a 202 Accepted response and the migration AC definition in ACM-R should have stateChangeResult FAILED | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DePrimeACDefinitionsFrom | Deprime the migration AC definition from the participants | Should receive a 202 Accepted response and the migration AC definition in ACM-R should be moved to COMMISSIONED state | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DePrimeACDefinitionsTo | Deprime the migration target AC definition from the participants | Should receive a 202 Accepted response and the target AC definition in ACM-R should be moved to COMMISSIONED state | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DeleteACDefinition | Delete automation composition definition | Should receive a 200 response and the AC definition should be removed in ACM-R db | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DeleteACDefinitionFrom | Delete the migration automation composition definition | Should receive a 200 response and the migration AC definition should be removed in ACM-R db | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ +| DeleteACDefinitionTo | Delete the target automation composition definition | Should receive a 200 response and the target AC definition should be removed in ACM-R db | ++-----------------------------------------------+--------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ diff --git a/docs/clamp/acm/defining-acms.rst b/docs/clamp/acm/defining-acms.rst index a9f2fbef..f2fb82e2 100644 --- a/docs/clamp/acm/defining-acms.rst +++ b/docs/clamp/acm/defining-acms.rst @@ -100,7 +100,7 @@ The Kubernetes Participant runs Kubernetes Automation Composition Elements. Each Element manages a Kubernetes microservice using Helm. The user defines the Helm chart for the Kubernetes microservice as well as other properties that the microservice requires in order to execute. The Yaml file that holds the -`Kubernetes Automation Composition Element Type defintion is available in Github +`Kubernetes Automation Composition Element Type definition is available in Github <https://github.com/onap/policy-clamp/blob/master/common/src/main/resources/tosca/KubernetesAutomationCompositionElementType.yaml>`_ and is the canonical definition of the Kubernetes Automation Composition Element type. For a description of the Kubernetes Automation Composition Element and Kubernetes Participant,please see diff --git a/docs/clamp/acm/design-impl/clamp-gui-acm.rst b/docs/clamp/acm/design-impl/clamp-gui-acm.rst deleted file mode 100644 index 600c721d..00000000 --- a/docs/clamp/acm/design-impl/clamp-gui-acm.rst +++ /dev/null @@ -1,140 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _clamp-gui-acm: - -The Policy GUI for Automation Compositions -****************************************** - -.. contents:: - :depth: 4 - -.. _Introduction: - -1. Introduction -############### -The Policy GUI for Automation Compositions is designed to provide a user the ability to interact with the Automation Composition Runtime to perform several actions. The actual technical design of the Automation Composition Runtime is detailed in :ref:`clamp-runtime-acm`. All of the endpoints and the purpose for accessing those endpoints is discussed there. In the current release of the GUI, the main purposes are to perform the below: - -- Commission new Tosca Service Templates. -- Editing Common Properties. -- Priming/De-priming Automation Composition Definitions. -- Decommission existing Tosca Service Templates. -- Create new instances of Automation Compositions. -- Change the state of the Automation Compositions. -- Delete Automation Compositions. - -These functions can be carried out by accessing the Automation Composition Runtime alone but this should not be required for a typical user to access the system. That is why the Automation Composition GUI is required. The remainder of this document will be split into 2 main sections. The first section will show the overall architecture of Automation Composition with the GUI included, so that the reader can see where it fits in to the system. Then the section will outline the individual components required for a working GUI and outline how GUI interacts with these components and why. The final section has a diagram to show the flow of typical operations from the GUI, all the way down to the participants. - -2. GUI-focussed System Architecture -################################### -An architectural/functional diagram has bee provided in below. This does not show details of the other components involved in the GUI functionality. Most of the detail is provided for the GUI itself. - - .. image:: ../images/gui/GUI-Architecture.png - :align: center - -The remainder of this section outlines the different elements that comprise the architecture of the GUI and how the different elements connect to one another. - -2.1 Policy CLAMP GUI --------------------- - -2.1.1 CLAMP GUI -================ -The original Clamp project used the GUI to connect to various onap services, including policy api, policy pap, dcae, sdc and cds. Connection to all of these services is managed by the Camel Exchange present in the section :ref:`Policy Clamp Backend`. - -Class-based react components are used to render the different pages related to functionality around - -- Creating loop instances from existing templates that have been distributed by SDC. -- Deploying/Undeploying policies to the policy framework. -- Deploying/Undeploying microservices to the policy framework. -- Deleting Instances. - - -2.1.2 Automation Composition GUI -================================ - -The current automation composition GUI is an extension of the previously created GUI for the Clamp project. The Clamp project used the CLAMP GUI to connect to various onap services, including policy api, policy pap, dcae, sdc and cds. Although the current automation composition project builds upon this GUI, it does not rely on these connected services. Instead, the Automation Composition GUI connects to the Automation Composition Runtime only. The Automation Composition Runtime then communicates with the database and all the Automation Composition participants (indirectly) over Kafka. - -The CLAMP GUI was originally housed in the clamp repository but for the Istanbul release, it has been moved to the policy/gui repo. There are 3 different GUIs within this repository - clamp-gui (and Automation Composition gui) code is housed under the "gui-clamp" directory and the majority of development takes place within the "gui-clamp/ui-react" directory. - -The original CLAMP GUI was created using the React framework, which is a light-weight framework that promotes use of component-based architecture. Previously, a class-based style was adopted to create the Clamp components. It was decided that Automation Composition would opt for the more concise functional style of components. This architecture style allows for the logical separation of functionality into different components and minimizes bloat. As you can see from the image, there is a "Automation Composition" directory under components where all of our Automation Composition components are housed. - - .. image:: ../images/gui/ComponentFileStructure.png - -Any code that is directly involved in communication with outside services like Rest Apis is under "ui-react/src/api". The "fetch" Javascript library is used for these calls. The Automation Composition service communicates with just the Automation Composition Runtime Rest Api, so all of the communication code is within "ui-react/src/api/AutomationCompositionService.js". - -2.1.2.1 Services -"""""""""""""""" -The Automation Composition GUI is designed to be service-centric. This means that the code involved in rendering and manipulating data is housed in a different place to the code responsible for communication with outside services. The Automation Composition related services are those responsible for making calls to the commissioning and instantiation endpoints in the Automation Composition Runtime. Another detail to note is that both the Automation Composition and CLAMP GUI use a proxy to forward requests to the policy clamp backend. Any URLs called by the frontend that contain the path "restservices/clds/v2/" are forwarded to the backend. Services are detailed below: - -- A commissioning call is provided for contacting the commissioning API to commission a tosca service template. -- A decommissioning call is provided for calling the decommissioning endpoint. -- A call to retrieve the tosca service template from the runtime is provided. This is useful for carrying out manipulations on the template, such as editing the common properties. -- A call to get the common or instance properties is provided. This is used to provide the user an opportunity to edit these properties. -- Calls to allow creation and deletion of an instance are provided -- Calls to change the state of and instance are provided. -- Calls to get the current state and ordered state of the instances, effectively monitoring. - -These services provide the data and communication functionality to allow the user to perform all of the actions mentioned in the :ref:`Introduction`. - -2.1.2.2 Components -"""""""""""""""""" -The components in the architecture image reflect those rendered elements that are presented to the user. Each element is designed to be as user-friendly as possible, providing the user with clean uncluttered information. Note that all of these components relate to and were designed around specific system dialogues that are present in :ref:`system-level-label`. - -- For commissioning, the user is provided with a simple file upload. This is something the user will have seen many times before and is self explanatory. -- For the edit of common properties, a JSON editor is used to present whatever common properties that are present in the service template to the user in as simple a way possible. The user can then edit, save and recommission. -- A link is provided to manage the tosca service template, where the user can view the file that has been uploaded in JSON format and optionally delete it. -- Several functions are exposed to the user in the "Manage Instances" modal. From there they can trigger, creation of an instance, view monitoring information, delete an instance and change the state. -- Before an instance is created, the user is provided an opportunity to edit the instance properties. That is, those properties that have not been marked as common. -- The user can change the state of the instance by using the "Change" button on the "Manage Instances" modal. This is effectively where the user can deploy and undeploy an instance. -- Priming and De-priming take place as a result of the action of commissioning and decommissioning a tosca service template. A more complete discussion of priming and de-priming is found here :ref:`acm-participant-protocol-label`. -- As part of the "Manage Instances" modal, we can monitor the state of the instances in 2 ways. The color of the instance highlight in the table indicates the state (grey - uninitialised, passive - yellow, green - running). Also, there is a monitoring button that allows use to view the individual elements' state. - -.. _Policy Clamp Backend: - -2.2 Policy Clamp Backend ------------------------- -The only Rest API that the Automation Composition frontend (and CLAMP frontend) communicates with directly is the Clamp backend. The backend is written in the Springboot framework and has many functions. In this document, we will only discuss the Automation Composition related functionality. Further description of non-acm Clamp and its' architecture can be found in :ref:`architecture-label`. The backend receives the calls from the frontend and forwards the requests to other relevant APIs. In the case of the Automation Composition project, the only Rest API that it currently requires communication with is the runtime Automation Composition API. Automation Composition adopts the same "request forwarding" method as the non-acm elements in the CLAMP GUI. This forwarding is performed by Apache Camel Exchanges, which are specified in XML and can be found in the directory shown below in the Clamp repository. - - .. image:: ../images/gui/CamelDirectory.png - -The Rest Endpoints for the GUI to call are defined in "clamp-api-v2.xml" and all of the runtime Automation Composition rest endpoints that GUI requests are forwarded to are defined in acm-flows.xml. If an Endpoint is added to the runtime Automation Composition component, or some other component you wish the GUI to communicate with, a Camel XML exchange must be defined for it here. - -2.3 Automation Composition Runtime ----------------------------------- -This is where all of the endpoints for operations on Automation Compositions are defined thus far. Commissioning, decommissioning, automation composition creation, automation composition state change and automation composition deletion are all performed here. The component is written using the Springboot framework and all of the code is housed in the runtime-acm directory shown below: - - .. image:: ../images/gui/RuntimeAcmDirectory.png - -The rest endpoints are split over two main classes; CommissioningController.java and InstantiationController.java. There are also some rest endpoints defined in the MonitoringQueryController. These classes have minimal business logic defined in them and delegate these operations to other classes within the controlloop.runtime package. The Automation Composition Runtime write all data received on its' endpoints regarding commissioning and instantiation to its; database, where it can be easily accessed later by the UI. - -The Runtime also communicates with the participants over Kafka. Commissioning a automation composition definition writes it to the database but also triggers priming of the definitions over Kafka. The participants then receive those definitions and hold them in memory. Similarly, upon decommissioning, a message is sent over Kafka to the participants to trigger de-priming. - -Using Kafka, the Runtime can send; updates to the automation composition definitions, change the state of automation compositions, receive information about participants, receive state information about automation compositions and effectively supervise the automation compositions. This data is then made available via Rest APIs that can be queried by the frontend. This is how the GUI can perform monitoring operations. - -More detail on the design of the Runtime Automation Composition can be found in :ref:`clamp-runtime-acm`. - -2.4 Kafka ---------- -Kafka is component that provides data movement services that transports and processes data from any source to any target. It provides the capability to: -- Support the transfer of messages between ONAP components, as well as to other components -- Support the transfer of data between ONAP components as well as to other components. -- Data Filtering capabilities -- Data Processing capabilities -- Data routing (file based transport) -- Message routing (event based transport) -- Batch and event based processing - -Specifically, regarding the communication between the Automation Composition Runtime and the Automation Composition Participants, both components publish and subscribe to a specific topic, over which data and updates from the participants and automation compositions are sent. The Automation Composition Runtime updates the current statuses sent from the participants in the database and makes them available the the GUI over the Rest API. - -2.5 The Participants --------------------- -The purpose of the Automation Composition participants is to communicate with different services on behalf of the Automation Composition Runtime. As there are potentially many different services that a Automation Composition might require access to, there can be many different participants. For example, the kubernetes participant is responsible for carrying out operations on a kubernetes cluster with helm. As of the time of writing, there are three participants defined for the Automation Composition project; the policy participant, the kubernetes participant and the http participant. The participants are housed in the directory shown below in the policy-clamp repo. - - .. image:: ../images/gui/ParticipantsDirectory.png - -The participants communicate with the Runtime over Kafka. Tosca service template specifications, Automation Composition updates and state changes are shared with the participants via messages from runtime Automation Composition through the topic "POLICY-CLRUNTIME-PARTICIPANT". - -3. GUI Sample Flows -################### -The primary flows from the GUI to the backend, through Kafka and the participants are shown in the diagram below. This diagram just serves as an illustration of the scenarios that the user will experience in the GUI. You can see factually complete dialogues in :ref:`system-level-label`. - - .. image:: ../images/gui/GUI-Flow.png diff --git a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst index c21cc171..a3c22e69 100644 --- a/docs/clamp/acm/design-impl/clamp-runtime-acm.rst +++ b/docs/clamp/acm/design-impl/clamp-runtime-acm.rst @@ -13,12 +13,12 @@ This article explains how CLAMP Automation Composition Runtime is implemented. Terminology *********** -- Broadcast message: a message for all participants (participantId=null) +- Broadcast message: a message for all participants (participantId=null and replicaId=null) - Message to a participant: a message only for a participant (participantId properly filled) - ThreadPoolExecutor: ThreadPoolExecutor executes the given task, into SupervisionAspect class is configured to execute tasks in ordered manner, one by one - Spring Scheduling: into SupervisionAspect class, the @Scheduled annotation invokes "schedule()" method every "runtime.participantParameters.heartBeatMs" milliseconds with a fixed delay - MessageIntercept: "@MessageIntercept" annotation is used into SupervisionHandler class to intercept "handleParticipantMessage" method calls using spring aspect oriented programming -- GUI: swagger-ui, Postman or policy-gui +- GUI: swagger-ui or Postman - Message Broker: It supports the message Broker Kafka Design of Rest Api @@ -32,13 +32,13 @@ Check CLAMP Runtime and Participants Order an immediate Participant Report from all participants +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls PUT "/onap/policy/clamp/acm/v2/participants" endpoint -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message Create of a Automation Composition Definition Type ++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions" endpoint with a Automation Composition Type Definition (Tosca Service Template) as body -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It validates the Automation Composition Type Definition - It saves to DB the Tosca Service Template using AcDefinitionProvider with new compositionId and COMMISSIONED status - the Rest-Api call returns the compositionId generated and the list of Element Definition Type @@ -46,7 +46,7 @@ Create of a Automation Composition Definition Type Update of a Automation Composition Definition Type ++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions" endpoint with a Automation Composition Type Definition (Tosca Service Template) as body. It have to contain the compositionId -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It checks that Automation Composition Type Definition is in COMMISSIONED status - It validates the Automation Composition Type Definition - It updates to DB the Tosca Service Template using AcDefinitionProvider using the compositionId @@ -55,7 +55,7 @@ Update of a Automation Composition Definition Type Priming of a Automation Composition Definition Type +++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint with PRIME as primeOrder -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It checks that Automation Composition Type Definition is in COMMISSIONED status - It validates and update the AC Element Type Definition with supported Element Types by participants - It updates AC Definition to DB with PRIMING as status @@ -65,7 +65,7 @@ Priming of a Automation Composition Definition Type Create of a Automation Composition Instance +++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It validates the AC Instance and checks that the related composition has COMMISSIONED as status - It set the related participantId into the AC Element Instance using the participantId defined in AC Element Type Definition - It saves the Automation Composition to DB with UNDEPLOYED deployState and NONE lockState @@ -74,17 +74,28 @@ Create of a Automation Composition Instance Update of a Automation Composition Instance +++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId and the instanceId -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It checks that AC Instance is in UNDEPLOYED/DEPLOYED deployState - It updates the Automation Composition to DB - the Rest-Api call returns the instanceId and the list of AC Element Instance - the runtime sends an update event to the participants which performs the update operation on the deployed instances. +Migrate-Precheck of a Automation Composition Instance ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +- GUI has already a new composition definition primed +- GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId, the compositionTargetId and the instanceId +- ACM-runtime receives the call by Rest-Api (InstantiationController) +- It checks that AC Instance is in DEPLOYED deployState +- It checks that compositionTargetId is related to a primed composition definition +- It only set the subState of the Automation Composition to DB +- the Rest-Api call returns the instanceId and the list of AC Element Instance +- the runtime sends a migrate-precheck event to the participants which performs the check operation on the deployed instances. + Migrate of a Automation Composition Instance ++++++++++++++++++++++++++++++++++++++++++++ - GUI has already a new composition definition primed - GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances" endpoint with a Automation Composition Instance as body. It have to contain the compositionId, the compositionTargetId and the instanceId -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It checks that AC Instance is in DEPLOYED deployState - It checks that compositionTargetId is related to a primed composition definition - It updates the Automation Composition to DB @@ -94,19 +105,37 @@ Migrate of a Automation Composition Instance Issues AC instance to change status +++++++++++++++++++++++++++++++++++ +case **subOrder: PREPARE** + +- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with PREPARE as subOrder +- ACM-runtime receives the call by Rest-Api (InstantiationController) +- It validates the status order issued (related AC Instance has UNDEPLOYED as deployState) +- It updates the AC Instance to DB with PREPARING subState +- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_PREPARE message with preDeploy set to true +- the message is built by AcPreparePublisher using Instance data. + case **deployOrder: DEPLOY** - GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with DEPLOY as deployOrder -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It validates the status order issued (related AC Instance has UNDEPLOYED as deployState) - It updates the AC Instance to DB with DEPLOYING deployState - It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_DEPLOY message - the message is built by AutomationCompositionDeployPublisher using Tosca Service Template data and Instance data. (with startPhase = first startPhase) +case **subOrder: REVIEW** + +- GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with REVIEW as subOrder +- ACM-runtime receives the call by Rest-Api (InstantiationController) +- It validates the status order issued (related AC Instance has DEPLOYED as deployState) +- It updates the AC Instance to DB with REVIEWING subState +- It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_PREPARE message with preDeploy set to false +- the message is built by AcPreparePublisher using Instance data. + case **lockOrder: UNLOCK** - GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with UNLOCK as lockOrder -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It validates the status order issued (related AC Instance has DEPLOYED as deployState and LOCK as lockOrder) - It updates the AC Instance to DB with LOCKING lockOrder - It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message @@ -115,7 +144,7 @@ case **lockOrder: UNLOCK** case **lockOrder: LOCK** - GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with LOCK as lockOrder -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It validates the status order issued (related AC Instance has DEPLOYED as deployState and UNLOCK as lockOrder) - It updates the AC Instance to DB with UNLOCKING lockOrder - It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message @@ -124,7 +153,7 @@ case **lockOrder: LOCK** case **deployOrder: UNDEPLOY** - GUI calls "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint with UNDEPLOY as deployOrder -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It validates the status order issued (related AC Instance has DEPLOYED as deployState and LOCK as lockOrder) - It updates the AC Instance to DB with UNDEPLOYING deployState - It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message @@ -133,7 +162,7 @@ case **deployOrder: UNDEPLOY** Delete of a Automation Composition Instance +++++++++++++++++++++++++++++++++++++++++++ - GUI calls DELETE "/onap/policy/clamp/acm/v2/compositions/{compositionId}/instances/{instanceId}" endpoint -- runtime-ACM receives the call by Rest-Api (InstantiationController) +- ACM-runtime receives the call by Rest-Api (InstantiationController) - It checks that AC Instance is in UNDEPLOYED deployState - It updates the AC Instance to DB with DELETING deployState - It triggers the execution to send a broadcast AUTOMATION_COMPOSITION_STATE_CHANGE message @@ -142,7 +171,7 @@ Delete of a Automation Composition Instance Depriming of a Automation Composition Definition Type +++++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls POST "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint with DEPRIME as primeOrder -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It checks that Automation Composition Type Definition is in PRIMED status - It updates AC Definition to DB with DEPRIMING as status - It triggers the execution to send a broadcast PARTICIPANT_PRIME message @@ -151,7 +180,7 @@ Depriming of a Automation Composition Definition Type Delete of a Automation Composition Definition Type ++++++++++++++++++++++++++++++++++++++++++++++++++ - GUI calls DELETE "/onap/policy/clamp/acm/v2/compositions/{compositionId}" endpoint -- runtime-ACM receives the call by Rest-Api (CommissioningController) +- ACM-runtime receives the call by Rest-Api (CommissioningController) - It checks that AC Definition Type is in COMMISSIONED status - It deletes the Automation Composition Type from DB @@ -200,23 +229,98 @@ In state changes from UNDEPLOYED → DEPLOYED or LOCKED → UNLOCKED, Automation Example of DEPLOY order with Http_PMSHMicroserviceAutomationCompositionElement with startPhase to 1 and PMSH_K8SMicroserviceAutomationCompositionElement with startPhase to 0 -- runtime-ACM sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message to all participants with startPhase = 0 +- ACM-runtime sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message to all participants with startPhase = 0 - participant receives the AUTOMATION_COMPOSITION_DEPLOY message and runs to DEPLOYED state (only AC elements defined as startPhase = 0) -- runtime-ACM receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED -- runtime-ACM calculates that all AC elements with startPhase = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message with startPhase = 1 +- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED +- ACM-runtime calculates that all AC elements with startPhase = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_DEPLOY message with startPhase = 1 - participant receives the AUTOMATION_COMPOSITION_DEPLOY message and runs to DEPLOYED state (only AC elements defined as startPhase = 1) -- runtime-ACM receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED -- runtime-ACM calculates that all AC elements are set to proper state and set AC to DEPLOYED +- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED +- ACM-runtime calculates that all AC elements are set to proper state and set AC to DEPLOYED In that scenario the message AUTOMATION_COMPOSITION_DEPLOY has been sent two times. +Migration using Stage +********************* +The stage is particularly important in Automation Composition migration because sometime the user wishes to control +not only the order in which the state changes in Automation Composition Elements but also to execute again using the same Automation Composition Elements. + +How to define Stage ++++++++++++++++++++ +Stage is defined as shown below in the Definition of TOSCA fundamental Automation Composition Types yaml file. + +.. code-block:: YAML + + stage: + type: list + required: false + description: A list indicating the stages in which this automation composition element will be started, the + first stage is zero. Automation Composition Elements are started in their stage order. + Automation Composition Elements with the same stage are started simultaneously. + metadata: + common: true + +Example where it could be used: + +.. code-block:: YAML + + org.onap.domain.database.Http_PMSHMicroserviceAutomationCompositionElement: + # Consul http config for PMSH. + version: 1.2.3 + type: org.onap.policy.clamp.acm.HttpAutomationCompositionElement + type_version: 1.0.1 + description: Automation Composition element for the http requests of PMSH microservice + properties: + provider: ONAP + uninitializedToPassiveTimeout: 180 + stage: [0,2] + +How Stage works ++++++++++++++++ +In state changes in MIGRATING Automation Composition elements starts in increasing order from stage 0. + +Example of MIGRATE order with Http_PMSHMicroserviceAutomationCompositionElement with stage [0,2] and PMSH_K8SMicroserviceAutomationCompositionElement with startPhase to [0,1]: + +- ACM-runtime sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message to all participants with stage = 0 +- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 0: Http_PMSHMicroserviceAutomationCompositionElement and PMSH_K8SMicroserviceAutomationCompositionElement) +- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED +- ACM-runtime calculates that all AC elements with stage = 0 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message with stage = 1 +- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 1: PMSH_K8SMicroserviceAutomationCompositionElement) +- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED +- ACM-runtime calculates that all AC elements with stage = 1 are set to proper state and sends a broadcast AUTOMATION_COMPOSITION_MIGRATION message with stage = 2 +- participant receives the AUTOMATION_COMPOSITION_MIGRATION message and runs to DEPLOYED state (only AC elements that contains stage 2: Http_PMSHMicroserviceAutomationCompositionElement) +- ACM-runtime receives AUTOMATION_COMPOSITION_DEPLOY_ACK messages from participants and set the state (from the AC element of the message) to DEPLOYED +- ACM-runtime calculates that all AC elements are set to proper state and set AC to DEPLOYED + +In that scenario the message AUTOMATION_COMPOSITION_MIGRATION has been sent three times, +Http_PMSHMicroserviceAutomationCompositionElement and PMSH_K8SMicroserviceAutomationCompositionElement will be executed two times. + +Add and remove elements during Migration +**************************************** +When an AC instance is migrated to a new AC definition, the user has the flexibility to add a new element or remove an existing element from the instance. +The target AC composition definition should contain the new element definition added and also the respective elements removed while commissioning to ACM-R. +The new elements are further instantiated in the migration request with the instance properties, and the elements required to be undeployed are removed accordingly. +ACM-R sends the updated element list in the migration request to the participants where the participant is expected to handle the add/remove scenario. +The migration method on the participant receives the details of previously existed composition/instance as well as the updated composition/instance and hence the difference in the new and old properties for an +element can be identified by the participant. +Participants can also identify the newly added elements and the removed elements with the ElementState enum that is set for each element. + +Example: + For a newly added element in the migration, the element information about the previously existed element will contain the ElementState enum set to the value "NOT_PRESENT" by the intermediary, and the updated element object will contain the + ElementState value "NEW". Based on these enum values on both the objects, the participant can identify a new element added in the migration. The participant can choose to trigger a deployment of this new element and update the element state once the + deploy operation is complete. + + For the elements that are removed in the migration, the element information about the previously existed element will contain the ElementState enum set to the value "PRESENT" by the intermediary, and the object for the updated element info will contain the + ElementState value "REMOVED". Based on this, the participant can identify a removed element in the migration and choose to trigger an undeployment of this element. The element state after the undeploy operation need not be updated to ACM-R as the element is already removed in the ACM-R. + The participant is also expected to trigger a "DELETE" operation for the removed element if required in order to delete any element OutProperties if stored in the memory. Similarly, The element state after the delete operation need not be updated to ACM-R for the removed element. + + Configure custom namings for TOSCA node types ********************************************* The node type of the AC element and the Automation composition can be customised as per the user requirement. These customised names can be used in the TOSCA node type definitions of AC element and composition. All the AC element and composition definitions (node templates) should be derived from the corresponding node types. -The following parameters are provided in the config file of runtime-acm for customisation: +The following parameters are provided in the config file of ACM-runtime for customisation: .. code-block:: YAML @@ -226,7 +330,7 @@ The following parameters are provided in the config file of runtime-acm for cust toscaCompositionName: customCompositionType If there are no values provided for customisation, the default node types "org.onap.policy.clamp.acm.AutomationCompositionElement" -and "org.onap.policy.clamp.acm.AutomationComposition" are used for the AC element and composition by the runtime-acm. +and "org.onap.policy.clamp.acm.AutomationComposition" are used for the AC element and composition by the ACM-runtime. In this case, the element and composition definition has to be derived from the same in the TOSCA. For overriding the names in the onap helm chart, the following properties can be updated in the values.yaml. @@ -242,23 +346,22 @@ Design of managing messages PARTICIPANT_REGISTER ++++++++++++++++++++ -- A participant starts and send a PARTICIPANT_REGISTER message with participantId and supported Element Types -- runtime-ACM collects the message from Message Broker by ParticipantRegisterListener -- if not present, it saves participant reference with status ON_LINE to DB +- A participant replica starts and send a PARTICIPANT_REGISTER message with participantId, replicaId and supported Element Types +- ACM-runtime collects the message from Message Broker by ParticipantRegisterListener +- if not present, it saves participant replica reference with status ON_LINE to DB PARTICIPANT_PRIME_ACK ++++++++++++++++++++++ - A participant sends PARTICIPANT_PRIME_ACK message in response to a PARTICIPANT_PRIME message - ParticipantPrimeAckListener collects the message from Message Broker - It updates AC Definition to DB with PRIMED/DEPRIMED as status +- If AC Definition is fully PRIMED, ACM-runtime sends sync message to all participants replica PARTICIPANT_STATUS ++++++++++++++++++ -- A participant sends a scheduled PARTICIPANT_STATUS message with participantId and supported Element Types -- runtime-ACM collects the message from Message Broker by ParticipantStatusListener -- if not present, it saves participant reference with status ON_LINE to DB -- MessageIntercept intercepts that event and adds a task to handle PARTICIPANT_STATUS in SupervisionScanner -- SupervisionScanner clears and starts the monitoring for participantStatus +- A participant sends a scheduled PARTICIPANT_STATUS message with participantId, replicaId and supported Element Types +- ACM-runtime collects the message from Message Broker by ParticipantStatusListener +- if not present, it saves participant replica reference with status ON_LINE to DB AUTOMATION_COMPOSITION_DEPLOY_ACK +++++++++++++++++++++++++++++++++ @@ -284,26 +387,27 @@ Monitoring is designed to process the follow operations: - to update AC deployState: in a scenario that "AutomationComposition.deployState" is in a kind of transitional state (example DEPLOYING), if all - AC elements are moved properly to the specific state, the "AutomationComposition.deployState" will be updated to that and saved to DB - to update AC lockState: in a scenario that "AutomationComposition.lockState" is in a kind of transitional state (example LOCKING), if all - AC elements are moved properly to the specific state, the "AutomationComposition.lockState" will be updated to that and saved to DB - to delete AC Instance: in a scenario that "AutomationComposition.deployState" is in DELETING, if all - AC elements are moved properly to DELETED, the AC Instance will be deleted from DB -- to retry AUTOMATION_COMPOSITION_DEPLOY/AUTOMATION_COMPOSITION_STATE_CHANGE messages. if there is a AC Element not in the proper state, it will retry a broadcast message +- to retry AUTOMATION_COMPOSITION_DEPLOY/AUTOMATION_COMPOSITION_STATE_CHANGE messages. if there is an AC instance with startPhase completed, it will be moved to the next startPhase and retry a broadcast message with the new startPhase +- to send sync message to all participants replica: in scenario where AC instance transition is fully completed -The solution Design of retry, timeout, and reporting for all Participant message dialogues are implemented into the monitoring execution. +The solution Design timeout and reporting for all Participant message dialogues are implemented into the monitoring execution. -- Spring Scheduling inserts the task to monitor retry execution into ThreadPoolExecutor +- Spring Scheduling inserts the task to monitor timeout execution into ThreadPoolExecutor - ThreadPoolExecutor executes the task -- a message will be retry if runtime-ACM do no receive Act message before MaxWaitMs milliseconds +- set AC instance stateChangeResult in timeout, if ACM-runtime do no receive Act message before MaxWaitMs milliseconds Design of Exception handling **************************** GlobalControllerExceptionHandler ++++++++++++++++++++++++++++++++ -If error occurred during the Rest Api call, runtime-ACM responses with a proper status error code and a JSON message error. -This class is implemented to intercept and handle AutomationCompositionException, PfModelException and PfModelRuntimeException if they are thrown during the Rest Ali calls. +If error occurred during the Rest Api call, ACM-runtime responses with a proper status error code and a JSON message error. +This class is implemented to intercept and handle AutomationCompositionException and PfModelRuntimeException if they are thrown during the Rest Ali calls. All of those classes must implement ErrorResponseInfo that contains message error and status response code. So the Exception is converted in JSON message. RuntimeErrorController ++++++++++++++++++++++ -If wrong end-point is called or an Exception not intercepted by GlobalControllerExceptionHandler, runtime-ACM responses with a proper status error code and a JSON message error. +If wrong end-point is called or an Exception not intercepted by GlobalControllerExceptionHandler, ACM-runtime responses with a proper status error code and a JSON message error. This class is implemented to redirect the standard Web error page to a JSON message error. Typically that happen when a wrong end-point is called, but also could be happen for not authorized call, or any other Exception not intercepted by GlobalControllerExceptionHandler. @@ -313,7 +417,7 @@ RequestResponseLoggingFilter class handles version and "X-ONAP-RequestID" during Media Type Support ****************** -runtime-ACM Rest Api supports **application/json**, **application/yaml** and **text/plain** Media Types. The configuration is implemented in CoderHttpMesageConverter. +ACM-runtime Rest Api supports **application/json**, **application/yaml** and **text/plain** Media Types. The configuration is implemented in CoderHttpMesageConverter. application/json ++++++++++++++++ @@ -326,3 +430,35 @@ YAML format is a standard for Automation Composition Type Definition. For the co text/plain ++++++++++ Text format is used by Prometheus. For the conversion from Object to String will be used **StringHttpMessageConverter**. + +JSON log format +*************** +ACM-runtime supports log in Json format. Below an example of appender for logback configuration to enable it. + +.. code-block:: xml + :caption: Part of logback configuration + :linenos: + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> + <layout class="org.onap.policy.clamp.acm.runtime.config.LoggingConsoleLayout"> + <timestampFormat>YYYY-MM-DDThh:mm:ss.sss+/-hh:mm</timestampFormat> + <timestampFormatTimezoneId>Etc/UTC</timestampFormatTimezoneId> + <staticParameters>service_id=policy-acm|application_id=policy-acm</staticParameters> + </layout> + </encoder> + </appender> + +LayoutWrappingEncoder implements the encoder interface and wraps the Java class LoggingConsoleLayout as layout to which it delegates the work of transforming an event into Json string. +Parameters for LoggingConsoleLayout: + +- *timestampFormat*: Timestamp Format +- *timestampFormatTimezoneId*: Time Zone used in the Timestamp Format +- *staticParameters*: List of parameters do add into the log separated with a "|" + +Below un example of result: + +.. code-block:: json + + {"severity":"INFO","extra_data":{"logger":"network","thread":"KAFKA-source-policy-acruntime-participant"},"service_id":"policy-acm","message":"[IN|KAFKA|policy-acruntime-participant]\n{\"state\":\"ON_LINE\",\"participantDefinitionUpdates\":[],\"automationCompositionInfoList\":[],\"participantSupportedElementType\":[{\"id\":\"f88c4463-f012-42e1-8927-12b552ecf380\",\"typeName\":\"org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement\",\"typeVersion\":\"1.0.0\"}],\"messageType\":\"PARTICIPANT_STATUS\",\"messageId\":\"d3dc2f86-4253-4520-bbac-97c4c04547ad\",\"timestamp\":\"2025-01-21T16:14:27.087474035Z\",\"participantId\":\"101c62b3-8918-41b9-a747-d21eb79c6c93\",\"replicaId\":\"c1ba61d2-1dbd-44e4-80bd-135526c0615f\"}","application_id":"policy-acm","timestamp":"2025-01-21T16:14:27.114851006Z"} + {"severity":"INFO","extra_data":{"logger":"network","thread":"KAFKA-source-policy-acruntime-participant"},"service_id":"policy-acm","message":"[IN|KAFKA|policy-acruntime-participant]\n{\"state\":\"ON_LINE\",\"participantDefinitionUpdates\":[],\"automationCompositionInfoList\":[],\"participantSupportedElementType\":[{\"id\":\"4609a119-a8c7-41ee-96d1-6b49c3afaf2c\",\"typeName\":\"org.onap.policy.clamp.acm.HttpAutomationCompositionElement\",\"typeVersion\":\"1.0.0\"}],\"messageType\":\"PARTICIPANT_STATUS\",\"messageId\":\"ea29ab01-665d-4693-ab17-3a72491b5c71\",\"timestamp\":\"2025-01-21T16:14:27.117716317Z\",\"participantId\":\"101c62b3-8918-41b9-a747-d21eb79c6c91\",\"replicaId\":\"5e4f9690-742d-4190-a439-ebb4c820a010\"}","application_id":"policy-acm","timestamp":"2025-01-21T16:14:27.144379028Z"} diff --git a/docs/clamp/acm/design-impl/design-impl.rst b/docs/clamp/acm/design-impl/design-impl.rst index 3c56ff91..2b8a3fad 100644 --- a/docs/clamp/acm/design-impl/design-impl.rst +++ b/docs/clamp/acm/design-impl/design-impl.rst @@ -11,5 +11,4 @@ The sections below describe the components that handle TOSCA Automation Composit :maxdepth: 1 clamp-runtime-acm - clamp-gui-acm participants/participants diff --git a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst index 0fbaf897..92ab6d42 100644 --- a/docs/clamp/acm/design-impl/participants/participant-intermediary.rst +++ b/docs/clamp/acm/design-impl/participants/participant-intermediary.rst @@ -24,11 +24,12 @@ Inbound messages to participants - PARTICIPANT_DEREGISTER_ACK: received as a response from clamp-acm runtime server as an acknowledgement to ParticipantDeregister message sent from a participant - AUTOMATION_COMPOSITION_STATE_CHANGE: a message received from clamp-acm runtime server for a state change of clamp-acm - AUTOMATION_COMPOSITION_DEPLOY: a message received from clamp-acm runtime server for a clamp-acm deploy with clamp-acm instances +- AUTOMATION_COMPOSITION_PREPARE: a message received from clamp-acm runtime server for a clamp-acm prepare/review with clamp-acm instances - PARTICIPANT_PRIME: a message received from clamp-acm runtime server for a participant update with tosca definitions of clamp-acm - PARTICIPANT_STATUS_REQ: A status request received from clamp-acm runtime server to send an immediate ParticipantStatus from all participants - PROPERTIES_UPDATE: a message received from clamp-acm runtime server for updating the Ac instance property values -- AUTOMATION_COMPOSITION_MIGRATION: a message received from clamp-acm runtime server for migrating the Ac instance from a composition definition to a composition definition target -- PARTICIPANT_RESTART: a message received from clamp-acm runtime server with tosca definitions and the Ac instances to handle restarting +- AUTOMATION_COMPOSITION_MIGRATION: a message received from clamp-acm runtime server for migrating/migration-precheck the Ac instance from a composition definition to a composition definition target +- PARTICIPANT_SYNC_MSG: a message received from clamp-acm runtime server with tosca definitions and the Ac instances to handle synchronization Outbound messages ----------------- @@ -41,33 +42,41 @@ Outbound messages Design of a PARTICIPANT_REGISTER message ---------------------------------------- -- A participant starts and send a PARTICIPANT_REGISTER message with participantId and Supported Element Definition Types -- in AC-runtime ParticipantRegisterListener collects the message from Message Broker +- A participant starts and send a PARTICIPANT_REGISTER message with participantId, replicaId and Supported Element Definition Types +- in ACM-runtime ParticipantRegisterListener collects the message from Message Broker - if participant is not present in DB, it saves participant reference with status ON_LINE to DB - It triggers the execution to send a PARTICIPANT_REGISTER_ACK message to the participant registered - if participant is present in DB and there are AC Definitions related to the Participant, - it triggers the execution to send a PARTICIPANT_RESTART message to the participant restarted + it triggers the execution to send a PARTICIPANT_SYNC_MSG message to synchronize participant Design of a PARTICIPANT_DEREGISTER message ------------------------------------------ - A participant is going to close and undeploys all AC-elements and send a PARTICIPANT_DEREGISTER message -- in AC-runtime, ParticipantDeregisterListener collects the message from Message Broker +- in ACM-runtime, ParticipantDeregisterListener collects the message from Message Broker - It saves participant reference with status OFF_LINE to DB - It triggers the execution to send a PARTICIPANT_DEREGISTER_ACK message to the participant deregistered - Participant is not monitored. Prime of an Automation Composition Definition Type -------------------------------------------------- -- AC-runtime assigns the AC Definition to the participants based of Supported Element Definition Type by participant +- ACM-runtime assigns the AC Definition to the participants based of Supported Element Definition Type by participant - it triggers the execution to send a broadcast PARTICIPANT_PRIME message - the message is built by ParticipantPrimePublisher using Tosca Service Template data (to fill the list of ParticipantDefinition) - Participant-intermediary will receive a PARTICIPANT_PRIME message and stores the Tosca Service Template data on CacheProvider +- Each participant performs its designated job of prime DePrime of an Automation Composition Definition Type ---------------------------------------------------- -- AC-runtime triggers the execution to send a broadcast PARTICIPANT_PRIME message +- ACM-runtime triggers the execution to send a broadcast PARTICIPANT_PRIME message - the message is built by ParticipantPrimePublisher with an empty list of ParticipantDefinition - Participant-intermediary will receive a PARTICIPANT_PRIME message and deletes the Tosca Service Template data on CacheProvider +- Each participant performs its designated job of deprime + +Design of "issues automation composition commands to automation compositions" - case PREPARE +-------------------------------------------------------------------------------------------- +- AUTOMATION_COMPOSITION_PREPARE message with instantiation details and PREPARE order state is sent to participants +- Participant-intermediary will receive AUTOMATION_COMPOSITION_PREPARE message and sends the details of AutomationCompositionElements to participants +- Each participant performs its designated job of prepare Design of "issues automation composition commands to automation compositions" - case UNDEPLOYED to DEPLOYED ----------------------------------------------------------------------------------------------------------- @@ -76,6 +85,12 @@ Design of "issues automation composition commands to automation compositions" - - Participant-intermediary will receive AUTOMATION_COMPOSITION_DEPLOY message and sends the details of AutomationCompositionElements to participants - Each participant performs its designated job of deployment by interacting with respective frameworks +Design of "issues automation composition commands to automation compositions" - case REVIEW +------------------------------------------------------------------------------------------- +- AUTOMATION_COMPOSITION_PREPARE message with instantiation details and REVIEW order state is sent to participants +- Participant-intermediary will receive AUTOMATION_COMPOSITION_PREPARE message and sends the details of AutomationCompositionElements to participants +- Each participant performs its designated job of review + Design of "issues automation composition commands to automation compositions" - case DEPLOYED to UNDEPLOYED ----------------------------------------------------------------------------------------------------------- - AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and UNDEPLOY order state is sent to participants @@ -85,28 +100,40 @@ Design of "issues automation composition commands to automation compositions" - Update of an Automation Composition Instance -------------------------------------------- -- AC-runtime updates the instance properties of the deployed Ac instances +- ACM-runtime updates the instance properties of the deployed Ac instances - it triggers the execution to send a broadcast PROPERTIES_UPDATE message - the message is built by AcElementPropertiesPublisher using the REST request payload (to fill the list of elements with the updated property values) - Participant-intermediary will receive a PROPERTIES_UPDATE message and stores the updated values of the elements on CacheProvider +- Each participant performs its designated job of update by interacting with respective frameworks + +Migrate-precheck of an Automation Composition Instance +------------------------------------------------------ +- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message with precheck set to true +- the message is built by AutomationCompositionMigrationPublisher using the REST request payload (to fill the compositionTargetId and list of elements with the updated property values) +- Participant-intermediary will receive a AUTOMATION_COMPOSITION_MIGRATION message and use a copy of the instance from CacheProvider to merge with data from the message +- Each participant performs its designated job of migrate-precheck Migrate of an Automation Composition Instance --------------------------------------------- -- AC-runtime saves the compositionTargetId and updates the instance properties of the deployed Ac instances -- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message +- ACM-runtime saves the compositionTargetId and updates the instance properties of the deployed Ac instances +- it triggers the execution to send a broadcast AUTOMATION_COMPOSITION_MIGRATION message with precheck set to false - the message is built by AutomationCompositionMigrationPublisher using the REST request payload (to fill the compositionTargetId and list of elements with the updated property values) - Participant-intermediary will receive a AUTOMATION_COMPOSITION_MIGRATION message and stores the compositionTargetId and the updated values of the elements on CacheProvider +- Each participant performs its designated job of migrate by interacting with respective frameworks Design of "issues automation composition commands to automation compositions" - case LOCKED to UNLOCKED ------------------------------------------------------------------------------------------------------- - AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and UNLOCK order state is sent to participants - Participant-intermediary validates the current lockState change - Participant-intermediary will receive AUTOMATION_COMPOSITION_STATE_CHANGE message +- Each participant performs its designated job of unlock Design of "issues automation composition commands to automation compositions" - case UNLOCKED to LOCKED ------------------------------------------------------------------------------------------------------- - AUTOMATION_COMPOSITION_STATE_CHANGE message with instantiation details and LOCK order state is sent to participants - Participant-intermediary validates the current lockState change +- Participant-intermediary will receive AUTOMATION_COMPOSITION_STATE_CHANGE message +- Each participant performs its designated job of lock Design of Delete - case UNDEPLOYED to DELETED --------------------------------------------- @@ -118,7 +145,7 @@ Design of Delete - case UNDEPLOYED to DELETED Design of a PARTICIPANT_STATUS_REQ message ------------------------------------------ -- AC-runtime triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message or to send it to a specific participant +- ACM-runtime triggers the execution to send a broadcast PARTICIPANT_STATUS_REQ message or to send it to a specific participant - the message is built by ParticipantStatusReqPublisher - Participant-intermediary will receive a PARTICIPANT_STATUS_REQ message @@ -132,7 +159,7 @@ Design of a AUTOMATION_COMPOSITION_DEPLOY_ACK message ----------------------------------------------------- - A participant sends AUTOMATION_COMPOSITION_DEPLOY_ACK message in response to a AUTOMATION_COMPOSITION_DEPLOY message. - For each AC-elements moved to the ordered state as indicated by the AUTOMATION_COMPOSITION_DEPLOY -- AutomationCompositionUpdateAckListener in AC-runtime collects the messages from Message Broker +- AutomationCompositionUpdateAckListener in ACM-runtime collects the messages from Message Broker - It checks the deployStatus of all automation composition elements - It updates the AC-instance in DB accordingly @@ -140,6 +167,6 @@ Design of a AUTOMATIONCOMPOSITION_STATECHANGE_ACK message --------------------------------------------------------- - A participant sends AUTOMATIONCOMPOSITION_STATECHANGE_ACK message in response to a AUTOMATIONCOMPOSITION_STATECHANGE message. - For each AC-elements moved to the ordered state as indicated by the AUTOMATIONCOMPOSITION_STATECHANGE -- AutomationCompositionStateChangeAckListener in AC-runtime collects the messages from Message Broker +- AutomationCompositionStateChangeAckListener in ACM-runtime collects the messages from Message Broker - It checks the deployStatus/lockStatus of all automation composition elements - It updates the AC-instance in DB accordingly diff --git a/docs/clamp/acm/files/AC-migrate-precheck.json b/docs/clamp/acm/files/AC-migrate-precheck.json new file mode 100644 index 00000000..66ab17df --- /dev/null +++ b/docs/clamp/acm/files/AC-migrate-precheck.json @@ -0,0 +1,17 @@ +{ + "name": "DemoInstance0", + "version": "1.0.1", + "compositionId": "COMPOSITIONIDPLACEHOLDER", + "instanceId": "INSTANCEIDPLACEHOLDER", + "compositionTargetId": "COMPOSITIONIDTARGET", + "description": "Demo automation composition instance 0", + "precheck": true, + "elements": { + "709c62b3-8918-41b9-a747-d21eb79c6c21": { + "id": "709c62b3-8918-41b9-a747-d21eb79c6c21", + "properties": { + "baseUrl": "http://acm-starter-ac-element-impl_updated:8084" + } + } + } +} diff --git a/docs/clamp/acm/files/AC-migrate.json b/docs/clamp/acm/files/AC-migrate.json index 32b56fd4..27932fca 100755 --- a/docs/clamp/acm/files/AC-migrate.json +++ b/docs/clamp/acm/files/AC-migrate.json @@ -11,6 +11,12 @@ "properties": { "baseUrl": "http://acm-starter-ac-element-impl_updated:8084" } + }, + "709c62b3-8918-41b9-a747-d21eb79c6c22": { + "id": "709c62b3-8918-41b9-a747-d21eb79c6c22", + "properties": { + "baseUrl": "http://acm-sink-ac-element-impl_updated:8085" + } } } } diff --git a/docs/clamp/acm/files/AC-prepare.json b/docs/clamp/acm/files/AC-prepare.json new file mode 100644 index 00000000..bc3a3c0a --- /dev/null +++ b/docs/clamp/acm/files/AC-prepare.json @@ -0,0 +1,3 @@ +{ + "subOrder": "PREPARE" +} diff --git a/docs/clamp/acm/files/AC-review.json b/docs/clamp/acm/files/AC-review.json new file mode 100644 index 00000000..e4d74348 --- /dev/null +++ b/docs/clamp/acm/files/AC-review.json @@ -0,0 +1,3 @@ +{ + "subOrder": "REVIEW" +} diff --git a/docs/clamp/acm/files/ACM-Message-Table.csv b/docs/clamp/acm/files/ACM-Message-Table.csv index b706fe60..b3f09a7a 100755 --- a/docs/clamp/acm/files/ACM-Message-Table.csv +++ b/docs/clamp/acm/files/ACM-Message-Table.csv @@ -1,18 +1,23 @@ Message,Source,Target,Purpose,Important Fields,Field Descriptions ParticipantRegister,Participant,ACM Runtime,Participant registers with the ACM runtime,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,participantSupportedElementTypes,A list of element types that this participant supports ,,,,messageType,Enum indicating the type of message PARTICIPANT_REGISTER ParticipantRegisterAck,ACM Runtime,Participant,Acknowledgment of Participant Registration,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,messageType,Enum indicating the type of message PARTICIPANT_REGISTER_ACK ParticipantDeregister,Participant,ACM Runtime,Participant deregisters with the ACM runtime,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,messageType,Enum indicating the type of message PARTICIPANT_DEREGISTER ParticipantDeregisterAck,ACM Runtime,Participant,Acknowledgment of Participant Deegistration,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,messageType,Enum indicating the type of message PARTICIPANT_DEREGISTER_ACK ParticipantPrime,ACM Runtime,Participant,Trigger priming/depriming in the participant,participantId,The ID of this participant – in UUID format ,,,,compositionId,The id of the AC Definition related to this message ,,,,participantDefinitionUpdates,Contains AC element definition values for a particular participant ,,,,messageType,Enum indicating the type of message PARTICIPANT_PRIME ParticipantPrimeAck,Participant,ACM Runtime,Message to confirm participant has been primed/deprimed,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,compositionId,The id of the AC Definition related to this message ,,,,stateChangeResult,NO_ERROR/FAILED ,,,,message,A message indicating the result @@ -20,6 +25,7 @@ ParticipantPrimeAck,Participant,ACM Runtime,Message to confirm participant has b ParticipantStatusReq,ACM Runtime,Participant,Message sent to reques a status update from the participant,participantId,The ID of the participant to request update from – in UUID format ,,,,messageType,Enum indicating the type of message PARTICIPANT_STATUS_REQ ParticipantStatus,Participant,ACM Runtime,Status update message,state,Enum indicating the current state of the participant +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,participantDefinitionUpdates,"A list of ParticipantDefinition updates, returned in response to ParticipantStatusReq only" ,,,,automationCompositionInfoList,List of AutomationCompositionInfo types with AutomationCompositionId and its state ,,,,participantSupportedElementTypes,Ac element types that this participant is capable for deployinh/supporting @@ -31,6 +37,8 @@ AutomationCompositionDeploy,ACM Runtime,Participant,Message to request change st ,,,,participantId,UUID indicating the participant the message is intended for ,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_DEPLOY AutomationCompositionDeployAck,Participant,ACM Runtime,Message to acknowledge that deploy or state change message has been received by participant,automationCompositionResultMap,"A map with AutomationCompositionElementID as its key, and a pair of result and message as value per AutomationCompositionElement" +,,,,stage,The next stage that participant is supposed to receiving +,,,,replicaId,The replica ID of this participant – in UUID format ,,,,compositionId,The id of the AC Definition related to this message ,,,,automationCompositionId,The id of the automation composition related to this message ,,,,message,A message indicating the result @@ -48,14 +56,24 @@ PropertiesUpdate,ACM Runtime,Participant,Message to request update,participantUp ,,,,automationCompositionId,The id of the automation composition related to this message ,,,,participantId,UUID indicating the participant the message is intended for ,,,,messageType,Enum indicating the type of message PROPERTIES_UPDATE -ParticipantRestart,ACM Runtime,Participant,Message to request update,participantId,The ID of this participant – in UUID format -,,,,automationcompositionList,A list of ParticipantRestartAc instances which carries details of an updated participant. +ParticipantSync,ACM Runtime,Participant,Message to request sync,participantId,The ID of this participant – in UUID format +,,,,replicaId,The replica ID of this participant – in UUID format +,,,,excludeReplicas,The list of replica ID that can ignore the message – List of UUID +,,,,automationcompositionList,A list of ParticipantRestartAc instances which carries details of an updated instances for the participant. ,,,,compositionId,The id of the AC Definition related to this message -,,,,participantDefinitionUpdates,Contains AC element definition values for a particular participant -,,,,messageType,Enum indicating the type of message PARTICIPANT_RESTART +,,,,participantDefinitionUpdates,Contains AC element definition values for the participant +,,,,delete,Flag - if true it is a delete operation +,,,,restarting,Flag - if true it is a restarting scenario +,,,,messageType,Enum indicating the type of message PARTICIPANT_SYNC_MSG AutomationCompositionMigration,ACM Runtime,Participant,Message to request update,participantUpdatesList,A list of ParticipantUpdates instances which carries details of an updated participant. +,,,,precheck,Flag - if true it is a Migration Precheck ,,,,compositionId,The id of the AC Definition related to this message ,,,,compositionTargetId,The id of the AC Definition target ,,,,automationCompositionId,The id of the automation composition related to this message ,,,,participantId,UUID indicating the participant the message is intended for -,,,,messageType,Enum indicating the type of message PROPERTIES_UPDATE +,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_MIGRATION +AutomationCompositionPrepare,ACM Runtime,Participant,Message to request prepare/review,participantList,A list of ParticipantUpdates instances which carries details of an updated participant. +,,,,preDeploy,Flag - if true the instance is Undeployed and the action is a Prepare - otherwise (false) the instance is Deployed and the action is a Review +,,,,compositionId,The id of the AC Definition related to this message +,,,,automationCompositionId,The id of the automation composition related to this message +,,,,messageType,Enum indicating the type of message AUTOMATION_COMPOSITION_PREPARE diff --git a/docs/clamp/acm/files/simparticipant-parameters.json b/docs/clamp/acm/files/simparticipant-parameters.json new file mode 100644 index 00000000..14fbe01a --- /dev/null +++ b/docs/clamp/acm/files/simparticipant-parameters.json @@ -0,0 +1,26 @@ +{ + "deploySuccess": true, + "undeploySuccess": true, + "lockSuccess": true, + "unlockSuccess": true, + "deleteSuccess": true, + "updateSuccess": true, + "migrateSuccess": true, + "migratePrecheck": true, + "prepare": true, + "review": true, + "primeSuccess": true, + "deprimeSuccess": true, + "deployTimerMs": 100, + "undeployTimerMs": 100, + "lockTimerMs": 100, + "unlockTimerMs": 100, + "updateTimerMs": 100, + "migrateTimerMs": 100, + "migratePrecheckTimerMs": 100, + "prepareTimerMs": 100, + "reviewTimerMs": 100, + "deleteTimerMs": 100, + "primeTimerMs": 100, + "deprimeTimerMs": 100 +} diff --git a/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png b/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png Binary files differnew file mode 100644 index 00000000..f27ea679 --- /dev/null +++ b/docs/clamp/acm/images/acm-states/AcInstanceSubStates.png diff --git a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png Binary files differindex 6ac70cd2..01503ab2 100644 --- a/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/DeleteResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png Binary files differindex 5f7ef3ba..a20a6c8b 100644 --- a/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/DeployResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png Binary files differindex 092e80ba..61f58d52 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png +++ b/docs/clamp/acm/images/system-dialogues/DeregisterParticipant.png diff --git a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png Binary files differindex 4fbd81a0..b8fa61cf 100644 --- a/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png +++ b/docs/clamp/acm/images/system-dialogues/FailedAcmResult.png diff --git a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png Binary files differindex f50b187c..3a899b66 100644 --- a/docs/clamp/acm/images/system-dialogues/LockResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/LockResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png Binary files differindex 4c96b2c3..ea49ed0e 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png +++ b/docs/clamp/acm/images/system-dialogues/MigrateAcElementsResponse.png diff --git a/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstance.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstance.png Binary files differnew file mode 100644 index 00000000..1d0514ca --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstance.png diff --git a/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png Binary files differnew file mode 100644 index 00000000..3fbf7196 --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckAcInstanceElements.png diff --git a/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png Binary files differnew file mode 100644 index 00000000..7b66c5b2 --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/MigrationPrecheckResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png b/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png Binary files differnew file mode 100644 index 00000000..3220fa2a --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/PrepareAcInstance.png diff --git a/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png Binary files differnew file mode 100644 index 00000000..7802642e --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/PrepareAcInstanceElements.png diff --git a/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.png b/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.png Binary files differnew file mode 100644 index 00000000..2bf2997a --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/PrepareResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png Binary files differindex 435e5e1a..c502d767 100644 --- a/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png +++ b/docs/clamp/acm/images/system-dialogues/PrimeAcTypeOnPpnts.png diff --git a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png Binary files differindex 97e8f760..cc077a8c 100644 --- a/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png +++ b/docs/clamp/acm/images/system-dialogues/PrimeInfoUpdatedInDb.png diff --git a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png Binary files differindex 0cc8a81b..fb9608a1 100755..100644 --- a/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png +++ b/docs/clamp/acm/images/system-dialogues/RegisterParticipant.png diff --git a/docs/clamp/acm/images/system-dialogues/ReviewAcInstance.png b/docs/clamp/acm/images/system-dialogues/ReviewAcInstance.png Binary files differnew file mode 100644 index 00000000..35e12764 --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/ReviewAcInstance.png diff --git a/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png b/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png Binary files differnew file mode 100644 index 00000000..50b49c8f --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/ReviewAcInstanceElements.png diff --git a/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.png b/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.png Binary files differnew file mode 100644 index 00000000..671b23fb --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/ReviewResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png Binary files differindex bd4d1441..d69e4732 100644 --- a/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png +++ b/docs/clamp/acm/images/system-dialogues/SuccessAcmResult.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png Binary files differnew file mode 100644 index 00000000..37333c8a --- /dev/null +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png Binary files differindex 82c15daa..d6cce208 100644 --- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsStatusUpdate.png diff --git a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png Binary files differindex bc19943f..77372d81 100644 --- a/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png +++ b/docs/clamp/acm/images/system-dialogues/SuperviseParticipantsTimeout.png diff --git a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png Binary files differindex 8fd2c438..bc0277bd 100644 --- a/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/UndeployResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png Binary files differindex 2d23d4d6..8dd32285 100644 --- a/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png +++ b/docs/clamp/acm/images/system-dialogues/UnlockResponseStored.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png Binary files differindex 8eef8f40..1a236a50 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateAcElementsResponse.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png Binary files differindex 63e1062b..5a78e141 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateDeprimeInDb.png diff --git a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png Binary files differindex 4c33957b..7c16653c 100644 --- a/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png +++ b/docs/clamp/acm/images/system-dialogues/UpdateOperationalState.png diff --git a/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml b/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml new file mode 100644 index 00000000..918a03b3 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcInstanceSubStates.puml @@ -0,0 +1,18 @@ +@startuml + +UNDEPLOYED --> DEPLOYING: Deploy +DEPLOYING --> DEPLOYED: AC Instance Elements\nall DEPLOYED + +state UNDEPLOYED { + NONE:UNDEPLOYED --> PREPARING: Prepare + PREPARING --> NONE:UNDEPLOYED: Completed +} + +state DEPLOYED { + NONE:DEPLOYED --> REVIEWING: Review + REVIEWING --> NONE:DEPLOYED: Completed + NONE:DEPLOYED --> MIGRATION_PRECHECKING: Migrate precheck + MIGRATION_PRECHECKING --> NONE:DEPLOYED: Completed +} + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml new file mode 100644 index 00000000..91be80b0 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeleteResponseStored.puml @@ -0,0 +1,19 @@ +@startuml + +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Delete Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information + +alt Is AC Element Instance Deleted? + "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DELETED + alt Are all the other AC Element Instances in this AC Instance in state DELETED? + "ACM Runtime" -> "ACM Database": Delete AC Instance + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml index 939f87ce..cb40d355 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Deploy Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Deploy Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Deployed? - ACM_Runtime -> ACM_Database: Set AC Element Instance State as DEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DEPLOYED alt Are all the other AC Element Instances in this AC Instance in state DEPLOYED? - ACM_Runtime -> ACM_Runtime: Set AC Instance state as DEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Instance state as DEPLOYED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml index 061dbea1..78689689 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml @@ -1,20 +1,11 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database - -Participant -> Participant: Uninitialize all ACM Element Instances running on Participant\n(See Instantiation Dialogues) -activate Participant -deactivate Participant - -Participant -> ACM_Runtime: [ASYNC] Deregister -ACM_Runtime -> ACM_Database: Delete Participant Registration -ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE -Participant <- ACM_Runtime: [ASYNC] Deregistration Accepted - -ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE -activate ACM_Runtime -deactivate ACM_Runtime +participant "ACM Runtime" +database "ACM Database" +Participant -> "ACM Runtime": [ASYNC] Deregister +"ACM Runtime" -> "ACM Database": Set Participant Replica State as OFF_LINE +Participant <- "ACM Runtime": [ASYNC] Deregistration Accepted +Participant -> Participant: Shutdown Participant @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml b/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml new file mode 100644 index 00000000..cb11012a --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/FailedAcmResult.puml @@ -0,0 +1,21 @@ +@startuml +participant "ACM Runtime" +participant "Participant Replica 1" +participant "Participant API Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" -> "Participant Replica 1": [ASYNC] Trigger an ACM operation for this AC Instance +alt Does the primed Participant ID on this AC Element Instance match my Participant ID? + alt Does this AC Element Instance exist? + "Participant Replica 1" -> "ACM Runtime": [ASYNC] AC Element does not exist + end + "Participant Replica 1" -> "Participant API Replica 1": Perform ACM operation + "Participant API Replica 1" -> "Participant Replica 1": ACM operation failed Response + "Participant Replica 1" -> "ACM Runtime": [ASYNC] INFO: ACM operation failed + note left of "Participant Replica 1" + This returns the response message with StateChangeResult 'FAILED' + end note +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml index 0ffc51a6..111a5726 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Lock Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Lock Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Locked? - ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as LOCKED + "ACM Runtime" -> "ACM Database": Set AC Element Instance administrative state as LOCKED alt Have all the other AC Element Instances in this AC Instance been LOCKED? - ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as LOCKED + "ACM Runtime" -> "ACM Database": Set AC Instance administrative state as LOCKED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml index 3ba0410f..80693aef 100755..100644 --- a/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/MigrateAcElementsResponse.puml @@ -1,10 +1,12 @@ @startuml
participant "ACM Runtime"
participant "ACM Database"
-participant Participant
+participant "Participant Replica 1"
+participant "Participant Replica 2"
alt "instance Id and Composition Ids exist"
- Participant -> "ACM Runtime" : [ASYNC] Migration completed
+ "Participant Replica 1" -> "ACM Runtime" : [ASYNC] Migration completed
"ACM Runtime" -> "ACM Database" : instance and AC Element will be set in a final state (DEPLOYED)\n and Comp Def IDs change for instance and AC Element
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
end
@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstance.puml new file mode 100644 index 00000000..14252f22 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstance.puml @@ -0,0 +1,18 @@ +@startuml +participant REST +participant "ACM Runtime" +participant Participants +database "ACM Database" + +REST -> "ACM Runtime": Migration Precheck Automation Composition Instance +"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information + +alt Automation Composition Instance exists + "ACM Runtime" -> Participants: [ASYNC] Migration Precheck AC Element Instances for this AC Instance + "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState MIGRATION_PRECHECKING + "ACM Runtime" -> REST: Migration Precheck of Automation Composition Instance has been requested +else + "ACM Runtime" -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml new file mode 100644 index 00000000..39d71b69 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckAcInstanceElements.puml @@ -0,0 +1,25 @@ +@startuml +participant "ACM Runtime" +participant Participant +participant "Participant API" + +"ACM Runtime" -> Participant: [ASYNC] Migration Precheck AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + Participant -> "Participant API": Migration Precheck AC Element Instance + activate "Participant API" + Participant <- "Participant API": AC Element Instance Migration Precheck Response + deactivate "Participant API" + alt AC Element Migration Precheck completed + Participant -> Participant: Set AC Element Instance administrative subState to NONE + "ACM Runtime" <- Participant: [ASYNC] INFO: Migration Precheck AC Element has been completed + end + else + note left of Participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml new file mode 100644 index 00000000..cc63e9dd --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/MigrationPrecheckResponseStored.puml @@ -0,0 +1,19 @@ +@startuml + +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Migration Precheck Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information + +alt Is Migration Precheck AC Element Instance Completed? + "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE + alt Are all the other AC Element Instances in this AC Instance in state NONE? + "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml new file mode 100644 index 00000000..dd7cc7ee --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstance.puml @@ -0,0 +1,18 @@ +@startuml +participant REST +participant "ACM Runtime" +participant Participants +database "ACM Database" + +REST -> "ACM Runtime": Prepare Automation Composition Instance +"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information + +alt Automation Composition Instance exists + "ACM Runtime" -> Participants: [ASYNC] Prepare AC Element Instances for this AC Instance + "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState PREPARING + "ACM Runtime" -> REST: Prepare of Automation Composition Instance has been requested +else + "ACM Runtime" -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml new file mode 100644 index 00000000..5c5fbcee --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareAcInstanceElements.puml @@ -0,0 +1,25 @@ +@startuml +participant "ACM Runtime" +participant Participant +participant "Participant API" + +"ACM Runtime" -> Participant: [ASYNC] Prepare AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + Participant -> "Participant API": Prepare AC Element Instance + activate "Participant API" + Participant <- "Participant API": AC Element Instance Prepare Response + deactivate "Participant API" + alt AC Element Prepare completed + Participant -> Participant: Set AC Element Instance administrative subState to NONE + "ACM Runtime" <- Participant: [ASYNC] INFO: Prepare AC Element has been completed + end + else + note left of Participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml new file mode 100644 index 00000000..51ff03b1 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrepareResponseStored.puml @@ -0,0 +1,19 @@ +@startuml + +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Prepare Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information + +alt Is Prepare AC Element Instance Completed? + "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE + alt Are all the other AC Element Instances in this AC Instance in state NONE? + "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml index 0c36a18c..c7a8a5e9 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml @@ -1,28 +1,28 @@ @startuml participant REST -participant ACM_Runtime +participant "ACM Runtime" +database "ACM Database" participant Participant -database ACM_Database alt Automation Composition Type has Deployed Instances - REST <- ACM_Runtime: Priming of Automation Composition Type Failed, instances deployed + REST <- "ACM Runtime": Priming of Automation Composition Type Failed, \ninstances deployed else Automation Composition Type is in state COMMISSIONED or PRIMED - REST -> ACM_Runtime: Prime Automation Composition Type + REST -> "ACM Runtime": Prime Automation Composition Type - ACM_Runtime -> ACM_Database: Read Automation Composition Type - ACM_Runtime -> ACM_Database: Read Participants - ACM_Runtime -> ACM_Runtime: Set suitable participant ID on each AC Element Type + "ACM Runtime" -> "ACM Database": Read Automation Composition Type + "ACM Runtime" -> "ACM Database": Read Participants + "ACM Runtime" -> "ACM Runtime": Set suitable participant ID on each AC Element Type alt Was a sutable participant ID found for each AC Element Type? - ACM_Runtime -> Participant: [ASYNC] Send Priming Request to all Participants\nwith Automation Composition Type Definition - ACM_Runtime -> ACM_Database: Set Automation Composition Type State to PRIMING + "ACM Runtime" -> Participant: [ASYNC] Send Priming Request to all Participants\nwith Automation Composition Type Definition + "ACM Runtime" -> "ACM Database": Set Automation Composition Type State to PRIMING - REST <- ACM_Runtime: Priming of Automation Composition Type Ordered + REST <- "ACM Runtime": Priming of Automation Composition Type Ordered else - REST <- ACM_Runtime: Priming of Automation Composition Type Faield, no sutiable participant found + REST <- "ACM Runtime": Priming of Automation Composition Type Faield, \nno sutiable participant found end else - REST <- ACM_Runtime: Priming of Automation Composition Type Failed, invalid state + REST <- "ACM Runtime": Priming of Automation Composition Type Failed, \ninvalid state end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml index 4a9f7d17..27075ca9 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml @@ -1,14 +1,16 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Result of Priming of AC Element Type -ACM_Runtime -> ACM_Database: Record result of AC Element Type Priming +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Result of Priming of AC Element Type +"ACM Runtime" -> "ACM Database": Record result of AC Element Type Priming alt Is AC Element Type Primed? alt Have all the other AC Element Types in this AC Type been Primed? - ACM_Runtime -> ACM_Runtime: Set AC Type state as PRIMED + "ACM Runtime" -> "ACM Database": Set AC Type state as PRIMED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml index 0cf091c0..54be2af4 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml @@ -1,16 +1,24 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database - -Participant -> ACM_Runtime: [ASYNC] Register -ACM_Runtime -> ACM_Database: Create or Update Participant Registration\nand store supported ACM element types -ACM_Runtime -> ACM_Database: Set Participant State as ONLINE -Participant <- ACM_Runtime: Registration Accepted - -ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as ONLINE -activate ACM_Runtime -deactivate ACM_Runtime +participant "ACM Runtime" +database "ACM Database" +activate Participant + Participant -> "ACM Runtime": [ASYNC] Register +activate "ACM Runtime" +deactivate Participant + "ACM Runtime" -> "ACM Database": Create a Participant Replica Registration,\n store supported ACM element types \n and set Replica State as ON_LINE + loop ACM Definition + "ACM Runtime" -> Participant: [ASYNC] Sync message\n send Common Property Values\n and Instance Elements of this Participant +activate Participant + Participant -> Participant: Store Common Property Values and Instance Elements + end loop + alt + "ACM Runtime" -> Participant: [ASYNC] Registration Accepted +deactivate "ACM Runtime" +Participant -> Participant: set participant as registered +Participant -> "ACM Runtime": [ASYNC] Status message +deactivate Participant +end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstance.puml new file mode 100644 index 00000000..ce40a003 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstance.puml @@ -0,0 +1,18 @@ +@startuml +participant REST +participant "ACM Runtime" +participant Participants +database "ACM Database" + +REST -> "ACM Runtime": Review Automation Composition Instance +"ACM Runtime" -> "ACM Database": Read Automation Composition Instance Information + +alt Automation Composition Instance exists + "ACM Runtime" -> Participants: [ASYNC] Review AC Element Instances for this AC Instance + "ACM Runtime" -> "ACM Database": Set AC Instance and its AC Element Instances to subState REVIEWING + "ACM Runtime" -> REST: Review of Automation Composition Instance has been requested +else + "ACM Runtime" -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml new file mode 100644 index 00000000..45454e6a --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewAcInstanceElements.puml @@ -0,0 +1,25 @@ +@startuml +participant "ACM Runtime" +participant Participant +participant "Participant API" + +"ACM Runtime" -> Participant: [ASYNC] Review AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + Participant -> "Participant API": Review AC Element Instance + activate "Participant API" + Participant <- "Participant API": AC Element Instance Review Response + deactivate "Participant API" + alt AC Element Review completed + Participant -> Participant: Set AC Element Instance administrative subState to NONE + "ACM Runtime" <- Participant: [ASYNC] INFO: Review AC Element has been completed + end + else + note left of Participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml new file mode 100644 index 00000000..13287e61 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/ReviewResponseStored.puml @@ -0,0 +1,19 @@ +@startuml + +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Review Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information + +alt Is Review AC Element Instance Completed? + "ACM Runtime" -> "ACM Database": Set AC Element Instance SubState as NONE + alt Are all the other AC Element Instances in this AC Instance in state NONE? + "ACM Runtime" -> "ACM Database": Set AC Instance SubState as NONE + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml b/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml new file mode 100644 index 00000000..69fde3bb --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuccessAcmResult.puml @@ -0,0 +1,21 @@ +@startuml +participant "ACM Runtime" +participant "Participant Replica 1" +participant "Participant API Replica 1" +participant "Participant Replica 2" + +"ACM Runtime" -> "Participant Replica 1": [ASYNC] Trigger an ACM operation for this AC Instance +alt Does the primed Participant ID on this AC Element Instance match my Participant ID? + alt Does this AC Element Instance exist? + "Participant Replica 1" -> "ACM Runtime": [ASYNC] AC Element does not exist + end + "Participant Replica 1" -> "Participant API Replica 1": Perform ACM operation + "Participant API Replica 1" -> "Participant Replica 1": ACM operation success Response + "Participant Replica 1" -> "ACM Runtime": [ASYNC] INFO: ACM operation completed successfully + note left of "Participant Replica 1" + This returns the response message with StateChangeResult 'NO_ERROR' + end note +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml new file mode 100644 index 00000000..cc6a198d --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusOutPropertiesUpdate.puml @@ -0,0 +1,12 @@ +@startuml + +participant "Participant Replica 1" +participant "Participant Replica 2" +participant "ACM Runtime" +database "ACM Database" + +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Status message including outProperties update +"ACM Runtime" -> "ACM Database": Update Participant Replica \nas 'ON_LINE' and outProperties +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message +"Participant Replica 2" -> "Participant Replica 2": Update memory from sync message +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml index e5748e86..483692f0 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml @@ -1,17 +1,12 @@ @startuml participant Participant -participant ACM_Runtime -database ACM_Database +participant "ACM Runtime" +database "ACM Database" loop Every Participant Supervision Interval - Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant - ACM_Runtime -> ACM_Database: Update Participant Heartbeat data - ACM_Runtime -> ACM_Database: Set Participant State as ONLINE - - loop Every AC Element Instance in Heartbeat Message - ACM_Runtime -> ACM_Database: Mark AC Element Instance as ONLINE\nand Update AC Element Instance status - end + Participant -> "ACM Runtime": [ASYNC] Heartbeat message including\nreplica ID and participant ID + "ACM Runtime" -> "ACM Database": Update Participant Replica as 'ON_LINE' end @enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml index 89a7d16a..0032b839 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml @@ -1,16 +1,13 @@ @startuml -participant ACM_Runtime -database ACM_Database +participant "ACM Runtime" +database "ACM Database" -loop Every ACM_Runtime Supervision Interval - loop Over all Participants - ACM_Runtime -> Database: Read Participant Heartbeat Information - alt Participant Heartbeat not received in Timeout Interval - ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE - ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE - activate ACM_Runtime - deactivate ACM_Runtime +loop Every ACM Runtime Supervision Interval + loop Over all Participant replicas + "ACM Runtime" -> "ACM Database": Read Participant Replica Heartbeat Information + alt Participant Replica Heartbeat not received in Timeout Interval + "ACM Runtime" -> "ACM Database": Set Participant Replica State as OFFLINE end end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml index e44183d4..7ab7e5f3 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Undeploy Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Undeploy Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance undeployed? - ACM_Runtime -> ACM_Database: Mark AC Element Instance as UNDEPLOYED + "ACM Runtime" -> "ACM Database": Mark AC Element Instance as UNDEPLOYED alt Are all the other AC Element Instances in this AC Instance in state UNDEPLOYED? - ACM_Runtime -> ACM_Runtime: Set AC Instance state as UNDEPLOYED + "ACM Runtime" -> "ACM Database": Set AC Instance state as UNDEPLOYED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml index 44e7e906..0f7ce94f 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml @@ -1,16 +1,18 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Unlock Automation Composition Element Instance Response -ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Unlock Automation Composition Element \nInstance Response +"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information alt Is AC Element Instance Unlocked? - ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as UNLOCKED + "ACM Runtime" -> "ACM Database": Set AC Element Instance administrative state as UNLOCKED alt Have all the other AC Element Instances in this AC Instance been UNLOCKED? - ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as UNLOCKED + "ACM Runtime" -> "ACM Database": Set AC Instance administrative state as UNLOCKED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml new file mode 100644 index 00000000..ed161745 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateAcElementsResponse.puml @@ -0,0 +1,19 @@ +@startuml
+
+participant "ACM Runtime"
+database "ACM Database"
+participant "Participant Replica 1"
+participant "Participant Replica 2"
+
+"ACM Runtime" <- "Participant Replica 1": [ASYNC] Update Automation Composition Element \nInstance Response
+"ACM Runtime" -> "ACM Database": Store Automation Composition Element Instance \nResponse Information
+
+alt Is AC Element Instance Updated?
+ "ACM Runtime" -> "ACM Database": Set AC Element Instance State as DEPLOYED
+ alt Are all the other AC Element Instances in this AC Instance in state DEPLOYED?
+ "ACM Runtime" -> "ACM Database": Set AC Instance state as DEPLOYED
+ "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message
+ end
+end
+
+@enduml
diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml index b52dc817..a75908bb 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml @@ -1,14 +1,16 @@ @startuml -participant ACM_Runtime -participant Participant -database ACM_Database +participant "ACM Runtime" +database "ACM Database" +participant "Participant Replica 1" +participant "Participant Replica 2" -ACM_Runtime <- Participant: [ASYNC] Result of Depriming of AC Element Type -ACM_Runtime -> ACM_Database: Record result of AC Element Type Depriming +"ACM Runtime" <- "Participant Replica 1": [ASYNC] Result of Depriming of AC Element Type +"ACM Runtime" -> "ACM Database": Record result of AC Element Type Depriming alt Is AC Element Type Deprimed? alt Have all the other AC Element Types in this AC Type been Deprimed? - ACM_Runtime -> ACM_Runtime: Set AC Type state as COMMISSIONED + "ACM Runtime" -> "ACM Database": Set AC Type state as COMMISSIONED + "ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message end end diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml index 538242ae..47e0ea34 100644 --- a/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml @@ -1,16 +1,19 @@ @startuml -participant Participant_API -participant Participant -participant ACM_Runtime +participant "Participant API Replica 1" +participant "Participant Replica 1" +participant "ACM Runtime" +participant "Participant Replica 2" -Participant_API -> Participant_API: Perform Operation that Updates Operational State -activate Participant_API -deactivate Participant_API +"Participant API Replica 1" -> "Participant API Replica 1": Perform Operation that Updates \nOperational State, Use State and outProperties +activate "Participant API Replica 1" +deactivate "Participant API Replica 1" -Participant_API -> Participant: Operational State has been updated -Participant -> Participant: Update Operational State in ACM Element Instance +"Participant API Replica 1" -> "Participant Replica 1": Operational State, Use State and outProperties \nhas been updated +"Participant Replica 1" -> "Participant Replica 1": Update Operational State, Use State and outProperties \nin ACM Element Instance +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Send message including states and outProperties \nof AC Element Instances on Participant +"ACM Runtime" -> "Participant Replica 2": [ASYNC] Send sync message == Periodically with Heartbeat == -Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant +"Participant Replica 1" -> "ACM Runtime": [ASYNC] Heartbeat message including status @enduml diff --git a/docs/clamp/clamp.rst b/docs/clamp/clamp.rst index 193b55cc..2d9bcea1 100644 --- a/docs/clamp/clamp.rst +++ b/docs/clamp/clamp.rst @@ -5,8 +5,8 @@ CLAMP Metadata Automation Composition Management using TOSCA ############################################################# -CLAMP supports the definition, deployment, and life cycle management of automation composition elements using Metadata -described in TOSCA. +CLAMP supports the definition, deployment, and life cycle management of +automation composition elements using Metadata described in TOSCA. .. toctree:: :maxdepth: 2 @@ -19,10 +19,12 @@ described in TOSCA. acm/allowed-operations acm/acm-user-guide acm/acm-participant-guide + acm/clamp-csit .. note:: - Policy/CLAMP was merged into the Policy Framework in the Honolulu release of ONAP. Prior to that release, it was - a separate project. The release notes for CLAMP when it existed as a separate project are located below. + Policy/CLAMP was merged into the Policy Framework in the Honolulu release + of ONAP. Prior to that release, it was a separate project. The release + notes for CLAMP when it existed as a separate project are located below. .. toctree:: :maxdepth: 1 diff --git a/docs/clamp/pre-migration-release-notes.rst b/docs/clamp/pre-migration-release-notes.rst index d8a03958..5534a8a6 100644 --- a/docs/clamp/pre-migration-release-notes.rst +++ b/docs/clamp/pre-migration-release-notes.rst @@ -26,8 +26,8 @@ The main goal of the Guilin release was to: **Bug Fixes** - - The full list of implemented user stories and epics is available on `CLAMP R7 - M1 release planning <https://wiki.onap.org/display/DW/CLAMP+R7+-+M1+Release+Planning>`_ - - The full list of issues(bugs) solved, is available on `CLAMP R7 - Guilin list of solved issues(bugs) <https://wiki.onap.org/pages/viewpage.action?pageId=93000705>`_ + - The full list of implemented user stories and epics is available on `CLAMP R7 - M1 release planning <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16430687/CLAMP+R7+-+M1+Release+Planning>`_ + - The full list of issues(bugs) solved, is available on `CLAMP R7 - Guilin list of solved issues(bugs) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16450689/CLAMP+R7+-+Guilin+list+of+solved+issues+bugs>`_ **Known Issues** @@ -42,13 +42,13 @@ The main goal of the Guilin release was to: CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ **Upgrade Notes** - - The Upgrade strategy for Guilin can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_ + - The Upgrade strategy for Guilin can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_ - New Docker Containers are available. the list of containers composing this release are below: - clamp-backend: nexus3.onap.org:10001/onap/clamp-backend 5.1.5 - clamp-frontend: nexus3.onap.org:10001/onap/clamp-frontend 5.1.5 @@ -64,11 +64,11 @@ Version: 5.0.7 (Frankfurt maintenance release tag 6.0.0) **Bug Fixes** - - `CLAMP-878 <https://jira.onap.org/browse/CLAMP-885>`_ Clamp backend pod fails with mariaDB server error - - `CLAMP-885 <https://jira.onap.org/browse/CLAMP-885>`_ CLAMP update documentation + - `CLAMP-878 <https://lf-onap.atlassian.net/browse/CLAMP-885>`_ Clamp backend pod fails with mariaDB server error + - `CLAMP-885 <https://lf-onap.atlassian.net/browse/CLAMP-885>`_ CLAMP update documentation **Known Issues** - - `CLAMP-856 <https://jira.onap.org/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties + - `CLAMP-856 <https://lf-onap.atlassian.net/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties - Other more minor issues are captured in the following page:`CLAMP known Frankfurt issues <https://wiki.onap.org/display/DW/CLAMP+R6+-+Frankfurt+known+issues%28bugs%29+-+to+be+solved+in+futur+Releases>`_ **Security Notes** @@ -84,12 +84,12 @@ N/A CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ **Upgrade Notes** - - The Upgrade strategy for Frankfurt can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_ + - The Upgrade strategy for Frankfurt can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_ - New Docker Containers are available. the list of containers composing this release are below: - clamp-backend-filebeat-onap: docker.elastic.co/beats/filebeat 5.5.0 @@ -121,11 +121,11 @@ The main goal of the Frankfurt release was to: **Bug Fixes** - - The full list of implemented user stories and epics is available on `Frankfurt CLAMP M1 release planning <https://wiki.onap.org/display/DW/CLAMP+R6+-+M1+Release+Planning>`_ - - The full list of issues(bugs) solved, is available on `CLAMP R6 - Frankfurt list of solved issues(bugs) <https://wiki.onap.org/pages/viewpage.action?pageId=84648915>`_ + - The full list of implemented user stories and epics is available on `Frankfurt CLAMP M1 release planning <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16397735/CLAMP+R6+-+M1+Release+Planning>`_ + - The full list of issues(bugs) solved, is available on `CLAMP R6 - Frankfurt list of solved issues(bugs) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16426873/CLAMP+R6+-+Frankfurt+list+of+solved+issues+bugs>`_ **Known Issues** - - `CLAMP-856 <https://jira.onap.org/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties + - `CLAMP-856 <https://lf-onap.atlassian.net/browse/CLAMP-856>`_ CLAMP should not display all CDS workflow properties **Security Notes** @@ -138,13 +138,13 @@ The main goal of the Frankfurt release was to: CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ **Upgrade Notes** - - The Upgrade strategy for Frankfurt can be found here:`<https://wiki.onap.org/display/DW/Frankfurt+CLAMP+Container+upgrade+strategy>`_ + - The Upgrade strategy for Frankfurt can be found here:`<https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16417801/Frankfurt+CLAMP+Container+upgrade+strategy>`_ - New Docker Containers are available. the list of containers composing this release are below: - clamp-backend-filebeat-onap: docker.elastic.co/beats/filebeat 5.5.0 - clamp-backend: nexus3.onap.org:10001/onap/clamp-backend 5.0.6 @@ -174,9 +174,9 @@ The main goal of the El Alto release was to: **Known Issues** - - `CLAMP-506 <https://jira.onap.org/browse/CLAMP-506>`_ Elastic Search Clamp image cannot be built anymore(SearchGuard DMCA issue) + - `CLAMP-506 <https://lf-onap.atlassian.net/browse/CLAMP-506>`_ Elastic Search Clamp image cannot be built anymore(SearchGuard DMCA issue) - Due to the uncertainties with the DMCA SearchGuard issue, the ELK stack has been removed from El Alto release, meaning the CLAMP "Control Loop Dashboard" is not part of the El Alto release. - - `CLAMP-519 <https://jira.onap.org/browse/CLAMP-519>`_ Clamp cannot authenticate to AAF(Local authentication as workaround) + - `CLAMP-519 <https://lf-onap.atlassian.net/browse/CLAMP-519>`_ Clamp cannot authenticate to AAF(Local authentication as workaround) **Security Notes** @@ -188,14 +188,14 @@ The main goal of the El Alto release was to: *Known Vulnerabilities in Used Modules* CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. -The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_. +The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16399457/El+Alto+CLAMP+Security+Vulnerability+Report>`_. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ - - `Project Vulnerability Review Table for CLAMP (El Alto) <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_ + - `Project Vulnerability Review Table for CLAMP (El Alto) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16399457/El+Alto+CLAMP+Security+Vulnerability+Report>`_ **Upgrade Notes** @@ -222,28 +222,27 @@ The main goal of the El Alto-Early Drop release was to: **Known Issues** - - `CLAMP-384 <https://jira.onap.org/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state + - `CLAMP-384 <https://lf-onap.atlassian.net/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state **Security Notes** *Fixed Security Issues* - - `OJSI-166 <https://jira.onap.org/browse/OJSI-166>`_ Port 30290 exposes unprotected service outside of cluster. + - `OJSI-166 <https://lf-onap.atlassian.net/browse/OJSI-166>`_ Port 30290 exposes unprotected service outside of cluster. *Known Security Issues* *Known Vulnerabilities in Used Modules* -CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. -The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in El Alto Early Drop <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_. +CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and actions to be taken in future release. +The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the +`project in El Alto Early Drop <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16386513/CLAMP+R5+-+Early+Drop>`_. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ - + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ - - `Project Vulnerability Review Table for CLAMP (El Alto Early Drop) <https://wiki.onap.org/pages/viewpage.action?pageId=68540334>`_ - **Upgrade Notes** New Docker Containers are available. @@ -261,41 +260,43 @@ The Dublin release is the fourth release of the Control Loop Automation Manageme The main goal of the Dublin release was to: - - Stabilize Platform maturity by stabilizing CLAMP maturity matrix see `Wiki for Dublin <https://wiki.onap.org/display/DW/Dublin+Release+Platform+Maturity>`_. + - Stabilize Platform maturity by stabilizing CLAMP maturity matrix see `Wiki for Dublin <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16337727/Dublin+Release+Platform+Maturity>`_. - CLAMP supports of Policy-model based Configuration Policy - CLAMP supports new Policy Engine direct Rest API (no longer based on jar provided by Policy Engine) - CLAMP main Core/UI have been reworked, removal of security issues reported by Nexus IQ. **Bug Fixes** - - The full list of implemented user stories and epics is available on `DUBLIN RELEASE <https://jira.onap.org/projects/CLAMP/versions/10427>`_ + - The full list of implemented user stories and epics is available on `DUBLIN RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10427>`_ This includes the list of bugs that were fixed during the course of this release. **Known Issues** - - `CLAMP-384 <https://jira.onap.org/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state + - `CLAMP-384 <https://lf-onap.atlassian.net/browse/CLAMP-384>`_ Loop State in UI is not reflecting the current state **Security Notes** *Fixed Security Issues* - - `OJSI-128 <https://jira.onap.org/browse/OJSI-128>`_ In default deployment CLAMP (clamp) exposes HTTP port 30258 outside of cluster. - - `OJSI-147 <https://jira.onap.org/browse/OJSI-147>`_ In default deployment CLAMP (cdash-kibana) exposes HTTP port 30290 outside of cluster. - - `OJSI-152 <https://jira.onap.org/browse/OJSI-152>`_ In default deployment CLAMP (clamp) exposes HTTP port 30295 outside of cluster. + - `OJSI-128 <https://lf-onap.atlassian.net/browse/OJSI-128>`_ In default deployment CLAMP (clamp) exposes HTTP port 30258 outside of cluster. + - `OJSI-147 <https://lf-onap.atlassian.net/browse/OJSI-147>`_ In default deployment CLAMP (cdash-kibana) exposes HTTP port 30290 outside of cluster. + - `OJSI-152 <https://lf-onap.atlassian.net/browse/OJSI-152>`_ In default deployment CLAMP (clamp) exposes HTTP port 30295 outside of cluster. *Known Security Issues* *Known Vulnerabilities in Used Modules* -CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. -The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Dublin <https://wiki.onap.org/pages/viewpage.action?pageId=64003444>`_. +CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and actions to be taken in future release. +The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of +the `project in Dublin <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374261/Dublin+CLAMP+Security+Vulnerability+Report>`_. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ - - `Project Vulnerability Review Table for CLAMP (Dublin) <https://wiki.onap.org/pages/viewpage.action?pageId=64003444>`_ + - `Project Vulnerability Review Table for CLAMP (Dublin) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374261/Dublin+CLAMP+Security+Vulnerability+Report>`_ **Upgrade Notes** @@ -316,7 +317,7 @@ none **Known Issues** CLAMP certificates have been renewed to extend their expiry dates - - `CLAMP-335 <https://jira.onap.org/browse/CLAMP-335>`_ Update Certificates on Casablanca release. + - `CLAMP-335 <https://lf-onap.atlassian.net/browse/CLAMP-335>`_ Update Certificates on Casablanca release. Version: 3.0.3 - maintenance release @@ -333,7 +334,7 @@ none **Known Issues** one documentation issue was fixed, this issue does not require a new docker image: - - `CLAMP-257 <https://jira.onap.org/browse/CLAMP-257>`_ User Manual for CLAMP : nothing on readthedocs. + - `CLAMP-257 <https://lf-onap.atlassian.net/browse/CLAMP-257>`_ User Manual for CLAMP : nothing on readthedocs. Version: 3.0.3 (Casablanca) --------------------------- @@ -356,7 +357,7 @@ The main goal of the Casablanca release was to: **Bug Fixes** - - The full list of implemented user stories and epics is available on `CASABLANCA RELEASE <https://jira.onap.org/projects/CLAMP/versions/10408>`_ + - The full list of implemented user stories and epics is available on `CASABLANCA RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10408>`_ This includes the list of bugs that were fixed during the course of this release. **Known Issues** @@ -365,15 +366,17 @@ The main goal of the Casablanca release was to: **Security Notes** -CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and actions to be taken in future release. -The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Casablanca <https://wiki.onap.org/pages/viewpage.action?pageId=42598587>`_. +CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and actions to be taken in future release. +The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of +the `project in Casablanca <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ - - `Project Vulnerability Review Table for CLAMP in Casablanca <https://wiki.onap.org/pages/viewpage.action?pageId=42598587>`_ + - `Project Vulnerability Review Table for CLAMP in Casablanca <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_ **Upgrade Notes** @@ -411,12 +414,12 @@ The main goal of the Beijing release was to: **Bug Fixes** - - The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://jira.onap.org/projects/CLAMP/versions/10314>`_ + - The full list of implemented user stories and epics is available on `BEIJING RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10314>`_ This includes the list of bugs that were fixed during the course of this release. **Known Issues** - - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work. + - `CLAMP-69 <https://lf-onap.atlassian.net/browse/CLAMP-69>`_ Deploy action does not always work. The "Deploy" action does not work directly after submitting it. @@ -426,18 +429,21 @@ The main goal of the Beijing release was to: **Security Notes** -CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of the `project in Beijing <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_. +CLAMP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. +The CLAMP open Critical security vulnerabilities and their risk assessment have been documented as part of +the `project in Beijing <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16275671/CLAMP+R2+-+Security+Vulnerability+Threat+Analysis>`_. Quick Links: - - `CLAMP project page <https://wiki.onap.org/display/DW/CLAMP+Project>`_ + - `CLAMP project page <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230605/CLAMP+Project>`_ - `Passing Badge information for CLAMP <https://bestpractices.coreinfrastructure.org/en/projects/1197>`_ - - `Project Vulnerability Review Table for CLAMP (Bejing) <https://wiki.onap.org/pages/viewpage.action?pageId=25440749>`_ + - `Project Vulnerability Review Table for CLAMP (Beijing) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16275671/CLAMP+R2+-+Security+Vulnerability+Threat+Analysis>`_ **Upgrade Notes** - New Docker Containers are avaialble, an ELK stack is also now part of CLAMP deployments. + New Docker Containers are available, an ELK stack is also now part of CLAMP deployments. **Deprecation Notes** @@ -464,13 +470,13 @@ The main goal of the Amsterdam release was to: **Bug Fixes** - - The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://jira.onap.org/projects/CLAMP/versions/10313>`_ + - The full list of implemented user stories and epics is available on `AMSTERDAM RELEASE <https://lf-onap.atlassian.net/projects/CLAMP/versions/10313>`_ This is technically the first release of CLAMP, previous release was the seed code contribution. As such, the defects fixed in this release were raised during the course of the release. Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above. **Known Issues** - - `CLAMP-68 <https://jira.onap.org/browse/CLAMP-68>`_ ResourceVF not always provisioned. + - `CLAMP-68 <https://lf-onap.atlassian.net/browse/CLAMP-68>`_ ResourceVF not always provisioned. In Closed Loop -> Properties CL: When opening the popup window, the first service in the list does not show Resource-VF even though in SDC there is a resource instance in the service. @@ -478,7 +484,7 @@ The main goal of the Amsterdam release was to: If you have multiple service available (if not create a dummy one on SDC), just click on another one and then click back on the first one in the list. The ResourceVF should be provisioned now. - - `CLAMP-69 <https://jira.onap.org/browse/CLAMP-69>`_ Deploy action does not always work. + - `CLAMP-69 <https://lf-onap.atlassian.net/browse/CLAMP-69>`_ Deploy action does not always work. The "Deploy" action does not work directly after submitting it. diff --git a/docs/conf.py b/docs/conf.py index 41f7e7b1..b4e839ec 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,7 +15,7 @@ html_theme = "sphinx_rtd_theme" html_theme_options = { "style_nav_header_background": "white", "sticky_navigation": "False" } -html_logo = "_static/logo_onap_2017.png" +html_logo = "_static/logo_onap_2024.png" html_favicon = "_static/favicon.ico" html_static_path = ["_static"] html_show_sphinx = False diff --git a/docs/development/devtools/devtools.rst b/docs/development/devtools/devtools.rst index 682b9e6b..b0b243e4 100644 --- a/docs/development/devtools/devtools.rst +++ b/docs/development/devtools/devtools.rst @@ -65,7 +65,6 @@ and the A&AI Schema module. policy/drools-applications \ policy/xacml-pdp \ policy/distribution \ - policy/gui \ policy/clamp " ## @@ -156,7 +155,6 @@ Execution of the script above results in the following directory hierarchy in yo * ~/git/onap/policy/models * ~/git/onap/policy/api * ~/git/onap/policy/pap - * ~/git/onap/policy/gui * ~/git/onap/policy/docker * ~/git/onap/policy/drools-applications * ~/git/onap/policy/drools-pdp @@ -206,7 +204,6 @@ file in the directory *~/git/onap/policy*. <module>drools-pdp</module> <module>drools-applications</module> <module>distribution</module> - <module>gui</module> <module>clamp</module> </modules> </project> @@ -237,34 +234,17 @@ With docker images: Developing and Debugging each Policy Component ********************************************** -Running a MariaDb Instance -++++++++++++++++++++++++++ - -The Policy Framework requires a MariaDb instance running. The easiest way to do this is to run a docker image locally. - -One example on how to do this is to use the scripts used by the policy/api S3P tests. - -`Simulator Setup Script Example <https://gerrit.onap.org/r/gitweb?p=policy/api.git;a=tree;f=testsuites/stability/src/main/resources/simulatorsetup;h=9038413f67cff2e2a79d6345f198f96ee0c57de1;hb=refs/heads/master>`_ - - .. code-block:: bash - - cd ~/git/onap/api/testsuites/stability/src/main/resources/simulatorsetup - ./setup_components.sh - -Another example on how to run the MariaDb is using the docker compose file used by the Policy API CSITs: - -`Example Compose Script to run MariaDB <https://gerrit.onap.org/r/gitweb?p=integration/csit.git;a=blob;f=scripts/policy/docker-compose-api.yml;h=e32190f1e6cb6d9b64ddf53a2db2c746723a0c6a;hb=refs/heads/master>`_ Running the API component standalone ++++++++++++++++++++++++++++++++++++ Assuming you have successfully built the codebase using the instructions above. The only requirement for the API -component to run is a running MariaDb database instance. The easiest way to do this is to run the docker image, please -see the mariadb documentation for the latest information on doing so. Once the mariadb is up and running, a -configuration file must be provided to the api in order for it to know how to connect to the mariadb. You can locate -the default configuration file in the packaging of the api component: +component to run is a running Postgres database instance. The easiest way to do this is to run the docker +image, please see the official documentation for the latest information on doing so. Once the database is up and +running, a configuration file must be provided to the api in order for it to know how to connect to the database. +You can locate the default configuration file in the packaging of the api component: -`Default Policy API Configuration <https://gerrit.onap.org/r/gitweb?p=policy/api.git;a=blob;f=packages/policy-api-tarball/src/main/resources/etc/apiParameters.yaml;h=2c19199a8a889cb0ab203334182662fe15e1635e;hb=refs/heads/master>`_ +`Default Policy API Configuration <https://github.com/onap/policy-api/blob/master/packages/policy-api-tarball/src/main/resources/etc/apiParameters.yaml>`_ You will want to change the fields pertaining to "host", "port" and "databaseUrl" to your local environment settings and start the policy-api springboot application either using your IDE of choice or using the run goal from Spring Boot @@ -275,22 +255,21 @@ Running the API component using Docker Compose An example of running the api using a docker compose script is located in the Policy Integration CSIT test repository. -`Policy CSIT API Docker Compose <https://gerrit.onap.org/r/gitweb?p=integration/csit.git;a=blob;f=scripts/policy/docker-compose-api.yml;h=e32190f1e6cb6d9b64ddf53a2db2c746723a0c6a;hb=refs/heads/master>`_ +`Policy CSIT Docker Compose <https://github.com/onap/policy-docker/blob/master/compose/compose.yaml>`_ Running the PAP component standalone ++++++++++++++++++++++++++++++++++++ -Once you have successfully built the PAP codebase, a running MariaDb database and DMaaP instance will also be required -to start up the application. For MariaDb instance, the easiest way is to run the docker image, please see the mariadb -documentation for the latest information on doing so. For DMaaP, the easiest way during development is to run the DMaaP -simulator which is explained in the below sections. Once the mariadb and DMaaP are running, a configuration file must -be provided to the PAP component in order for it to know how to connect to the mariadb and DMaaP along with other -relevant configuration details. You can locate the default configuration file in the packaging of the PAP component: +Once you have successfully built the PAP codebase, a running Postgres database and Kafka instance will also be +required to start up the application. To start database and Kafka, check official documentation on how to run an +instance of each. After database and Kafka are up and running, a configuration file must be provided to the PAP +component in order for it to know how to connect to the database and Kafka along with other relevant configuration +details. You can locate the default configuration file in the packaging of the PAP component: -`Default PAP Configuration <https://gerrit.onap.org/r/gitweb?p=policy/pap.git;a=blob;f=packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml;h=06dd45f4946fd0a11ed8ef859f8fc5bcf409a3f0;hb=HEAD>`_ +`Default PAP Configuration <https://github.com/onap/policy-pap/blob/master/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml>`_ -Update the fields related to MariaDB, DMaaP and the RestServer for the application as per your local environment settings. -Then to start the application, just run the Spring Boot application using IDE or command line. +Update the fields related to database, Kafka and the RestServer for the application as per your local environment +settings. Then to start the application, just run the Spring Boot application using IDE or command line. Running the Smoke Tests @@ -302,7 +281,6 @@ familiar with the Policy Framework components and test any local changes. .. toctree:: :maxdepth: 1 - smoke/policy-gui-acm-smoke.rst smoke/db-migrator-smoke.rst smoke/acm-participants-smoke.rst smoke/clamp-smoke.rst @@ -319,27 +297,21 @@ familiar with the Policy Framework components and test any local changes. Running the Stability/Performance Tests *************************************** -The following links contain instructions on how to run the S3P Stability and Performance tests. These may be helpful to developers to become -familiar with the Policy Framework components and test any local changes. +The following links contain instructions on how to run the S3P Stability and Performance tests. These may be helpful +to developers to become familiar with the Policy Framework components and test any local changes. .. toctree:: :maxdepth: 2 + testing/s3p/s3p-test-overview.rst testing/s3p/run-s3p.rst - testing/s3p/api-s3p.rst - testing/s3p/pap-s3p.rst - testing/s3p/apex-s3p.rst - testing/s3p/drools-s3p.rst - testing/s3p/xacml-s3p.rst - testing/s3p/distribution-s3p.rst - testing/s3p/clamp-s3p.rst Running the Pairwise Tests ************************** -The following links contain instructions on how to run the pairwise tests. These may be helpful to developers check that -the Policy Framework works in a full ONAP deployment. +The following links contain instructions on how to run the pairwise tests. These may be helpful to developers check +that the Policy Framework works in a full ONAP deployment. .. toctree:: :maxdepth: 1 @@ -430,7 +402,8 @@ To test these images, CSITs will be run. Running Policy Components Locally ********************************* -The following page outlines how to run the policy framework components locally using IntelliJ, Eclipse and the Command Line. +The following page outlines how to run the policy framework components locally using IntelliJ, +Eclipse and the Command Line. .. toctree:: :maxdepth: 1 @@ -461,57 +434,14 @@ Using the Swagger-UI maven dependency Swagger HTML documentation can be accessed - The generated swagger.json can be accessed at: *https://service_IP:service_port/v2/api-docs* - Swagger UI can be accessed at: *https://service_IP:service_port/swagger-ui/index.html* -Running the DMaaP Simulator during Development -********************************************** -It is sometimes convenient to run the DMaaP simulator during development. You can run it from the command line using Maven or from within your IDE. - -Running on the Command Line -+++++++++++++++++++++++++++ -1. Check out the policy models repository -2. Go to the *models-sim/policy-models-simulators* subdirectory in the policy-models repo -3. Run the following Maven command: - - .. code-block:: bash - - mvn exec:java -Dexec.mainClass=org.onap.policy.models.simulators.Main -Dexec.args="src/test/resources/simParameters.json" - -Running in Eclipse -++++++++++++++++++ -1. Check out the policy models repository -2. Go to the *models-sim/policy-models-simulators* module in the policy-models repo -3. Specify a run configuration using the class *org.onap.policy.models.simulators.Main* as the main class -4. Specify an argument of *src/test/resources/simParameters.json* to the run configuration -5. Run the configuration - -Specifying a local configuration file -+++++++++++++++++++++++++++++++++++++ - -You may specify a local configuration file instead of *src/test/resources/simParameters.json* on the command line or as an argument in the run configuration in eclipse: - -.. code-block:: json - - { - "dmaapProvider": { - "name": "DMaaP simulator", - "topicSweepSec": 900 - }, - "restServers": [ - { - "name": "DMaaP simulator", - "providerClass": "org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1", - "host": "localhost", - "port": 3904, - "https": false - } - ] - } Bringing up Strimzi-Kafka Deploment with Policy Framework ********************************************************* -This page will explain how to setup a local Kubernetes cluster and minimal helm setup to run and deploy Policy Framework on a single host. +This page will explain how to setup a local Kubernetes cluster and minimal helm setup to run and deploy +Policy Framework on a single host. -This is meant for a development purpose only as we are going to use microk8s in this page +This is meant for a development purpose only as we are going to use microk8s in this page: .. toctree:: :maxdepth: 1 diff --git a/docs/development/devtools/installation/local-installation.rst b/docs/development/devtools/installation/local-installation.rst index 861d4650..7e2e6899 100644 --- a/docs/development/devtools/installation/local-installation.rst +++ b/docs/development/devtools/installation/local-installation.rst @@ -54,6 +54,17 @@ Command Line mvn spring-boot:run -Dspring-boot.run.arguments=”–server.port=8082” + +Models Simulators +***************** + +Command Line +------------ + + .. code-block:: bash + + mvn -q -e clean compile exec:java -Dexec.mainClass="org.onap.policy.models.sim.pdp.PdpSimulatorMain" -Dexec.args="-c /PATH/TO/OnapPfConfig.json" + Apex-PDP ******** @@ -95,20 +106,6 @@ Command Line mvn spring-boot:run -Dspring-boot.run.arguments=”–server.port=8082” -Models Simulators -***************** - -Command Line ------------- - - .. code-block:: bash - - mvn -q -e clean compile exec:java -Dexec.mainClass="org.onap.policy.models.sim.pdp.PdpSimulatorMain" -Dexec.args="-c /PATH/TO/OnapPfConfig.json" - - .. code-block:: bash - - mvn -q -e clean compile exec:java -Dexec.mainClass="org.onap.policy.models.sim.dmaap.startstop.Main" -Dexec.args="-c /PATH/TO/DefaultConfig.json" - XACML-PDP ********* diff --git a/docs/development/devtools/smoke/acm-participants-smoke.rst b/docs/development/devtools/smoke/acm-participants-smoke.rst index ad377768..869205a4 100644 --- a/docs/development/devtools/smoke/acm-participants-smoke.rst +++ b/docs/development/devtools/smoke/acm-participants-smoke.rst @@ -21,6 +21,8 @@ This article assumes that: * Your local maven repository is in the location *~/.m2/repository* * You have copied the settings.xml from oparent to *~/.m2/* directory * You have added settings to access the ONAP Nexus to your M2 configuration, see `Maven Settings Example <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`_ (bottom of the linked page) +* Your local helm is in the location /usr/local/bin/helm +* Your local kubectl is in the location /usr/local/bin/kubectl The procedure documented in this article has been verified using Ubuntu 20.04 LTS VM. @@ -92,6 +94,9 @@ And into the file 'participant/participant-impl/participant-impl-kubernetes/src/ .. literalinclude:: files/participant-kubernetes-application.yaml :language: yaml +If the helm location is not '/usr/local/bin/helm' or the kubectl location is not '/usr/local/bin/kubectl', you have to update +the file 'participant/participant-impl/participant-impl-kubernetes/src/main/java/org/onap/policy/clamp/acm/participant/kubernetes/helm/HelmClient.java'. + 2.3.3 Automation composition Runtime ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To start the automation composition runtime service, we need to execute the following maven command from the "runtime-acm" directory in the clamp repo. Automation composition runtime uses the config file "src/main/resources/application.yaml" by default. @@ -130,7 +135,7 @@ For building docker images of runtime-acm and participants: .. code-block:: bash - cd ~/git/onap/policy/clamp/packages/ + cd ~/git/onap/policy/clamp/ mvn clean install -P docker @@ -174,6 +179,8 @@ Request body: "primeOrder": "PRIME" } +A successful prime request gives 202 responses in the postman client. + 3.3 Create New Instances of Automation composition ================================================== Once AC definition is primes, we can instantiate automation composition instances. This will create the instances with default state "UNDEPLOYED". @@ -188,6 +195,8 @@ Request body: :download:`Instantiation json <json/acm-instantiation.json>` +A successful creation of new instance gives 201 responses in the postman client. + 3.4 Change the State of the Instance ==================================== When the automation composition is updated with state “DEPLOYED”, the Kubernetes participant fetches the node template for all automation composition elements and deploys the helm chart of each AC element into the cluster. The following sample json input is passed on the request body. @@ -206,6 +215,7 @@ Automation Composition Update Endpoint: } +A successful deploy request gives 202 responses in the postman client. After the state changed to "DEPLOYED", nginx-ingress pod is deployed in the kubernetes cluster. And http participant should have posted the dummy data to the configured URL in the tosca template. The following command can be used to verify the pods deployed successfully by kubernetes participant. diff --git a/docs/development/devtools/smoke/api-smoke.rst b/docs/development/devtools/smoke/api-smoke.rst index 8230f33b..b2c81f83 100644 --- a/docs/development/devtools/smoke/api-smoke.rst +++ b/docs/development/devtools/smoke/api-smoke.rst @@ -11,7 +11,8 @@ Policy API Smoke Test ~~~~~~~~~~~~~~~~~~~~~ The policy-api smoke testing is executed against a default ONAP installation as per OOM charts. -This test verifies the execution of all the REST api's exposed by the component to make sure the contract works as expected. +This test verifies the execution of all the REST api's exposed by the component to make sure the +contract works as expected. General Setup ************* diff --git a/docs/development/devtools/smoke/clamp-ac-participant-protocol-smoke.rst b/docs/development/devtools/smoke/clamp-ac-participant-protocol-smoke.rst index 95a27ee7..8bcdc3b8 100644 --- a/docs/development/devtools/smoke/clamp-ac-participant-protocol-smoke.rst +++ b/docs/development/devtools/smoke/clamp-ac-participant-protocol-smoke.rst @@ -67,7 +67,6 @@ Test result: - Observe PARTICIPANT_REGISTER going from participant to runtime - Observe PARTICIPANT_REGISTER_ACK going from runtime to participant -- Observe PARTICIPANT_PRIME going from runtime to participant 3.2 Participant Deregistration ============================== @@ -89,7 +88,8 @@ Test result: - Observe PARTICIPANT_PRIME going from runtime to participant with acm type definitions and common property values for participant types - Observe that the acm type definitions and common property values for participant types are stored on ParticipantHandler -- Observe PARTICIPANT_PRIME_ACK going from runtime to participant +- Observe PARTICIPANT_PRIME_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.4 Participant DePriming ========================= @@ -103,7 +103,8 @@ Test result: - If acm instances exist in runtime database, return a response for the REST API with error response saying "Cannot decommission acm type definition" - If no acm instances exist in runtime database, Observe PARTICIPANT_PRIME going from runtime to participant with definitions as null - Observe that the acm type definitions and common property values for participant types are removed on ParticipantHandler -- Observe PARTICIPANT_PRIME_ACK going from runtime to participant +- Observe PARTICIPANT_PRIME_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.5 Automation Composition Instance =================================== @@ -128,6 +129,7 @@ Test result: - Observe that the AutomationCompositionElements deploy state is DEPLOYED - Observe that the acm deploy state is DEPLOYED - Observe AUTOMATION_COMPOSITION_DEPLOY_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.7 Automation Composition lock state change to UNLOCK ====================================================== @@ -140,6 +142,7 @@ Test result: - Observe that the AutomationCompositionElements lock state is UNLOCK - Observe that the acm state is UNLOCK - Observe AUTOMATION_COMPOSITION_STATE_CHANGE_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.8 Automation Composition lock state change to LOCK ==================================================== @@ -152,6 +155,7 @@ Test result: - Observe that the AutomationCompositionElements lock state is LOCK - Observe that the acm lock state is LOCK - Observe AUTOMATION_COMPOSITION_STATE_CHANGE_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.9 Automation Composition deploy state change to UNDEPLOYED ============================================================ @@ -166,6 +170,7 @@ Test result: - Observe that the AutomationCompositionElements undeploy the instances from respective frameworks - Observe that the automation composition instances are removed from participants - Observe AUTOMATION_COMPOSITION_STATE_CHANGE_ACK going from participant to runtime +- Observe PARTICIPANT_SYNC_MSG going from runtime to participant 3.10 Automation Composition monitoring and reporting ==================================================== @@ -176,8 +181,7 @@ Action: Bring up participant Test result: - Observe that PARTICIPANT_STATUS message is sent from participants to runtime in a regular interval -- Trigger a PARTICIPANT_STATUS_REQ from runtime and observe a PARTICIPANT_STATUS message with tosca definitions of automation composition type definitions sent - from all the participants to runtime +- Trigger a PARTICIPANT_STATUS_REQ from runtime and observe a PARTICIPANT_STATUS message from all the participants to runtime This concluded the required smoke tests diff --git a/docs/development/devtools/smoke/clamp-smoke.rst b/docs/development/devtools/smoke/clamp-smoke.rst index 2f4a7c9f..d1ca6fa8 100644 --- a/docs/development/devtools/smoke/clamp-smoke.rst +++ b/docs/development/devtools/smoke/clamp-smoke.rst @@ -121,7 +121,7 @@ Running on the Command Line .. code-block:: bash cd ~/git/clamp/runtime-acm - java -jar target/policy-clamp-runtime-acm-7.1.3-SNAPSHOT.jar + java -jar target/policy-clamp-runtime-acm-8.1.0-SNAPSHOT.jar Running participant simulator @@ -132,7 +132,7 @@ Run the following commands: .. code-block:: bash cd ~/git/clamp/participant/participant-impl/participant-impl-simulator - java -jar target/policy-clamp-participant-impl-simulator-7.1.3-SNAPSHOT.jar + java -jar target/policy-clamp-participant-impl-simulator-8.1.0-SNAPSHOT.jar Running the CLAMP automation composition docker image diff --git a/docs/development/devtools/smoke/db-migrator-smoke.rst b/docs/development/devtools/smoke/db-migrator-smoke.rst index 74b8eddd..c6d8fd0d 100644 --- a/docs/development/devtools/smoke/db-migrator-smoke.rst +++ b/docs/development/devtools/smoke/db-migrator-smoke.rst @@ -8,415 +8,51 @@ Policy DB Migrator Smoke Tests Prerequisites ************* -Check number of files in each release +- Have Docker and Docker compose installed +- Some bash knowledge -.. code:: - :number-lines: +Preparing the test +================== - ls 0800/upgrade/*.sql | wc -l = 96 - ls 0900/upgrade/*.sql | wc -l = 13 - ls 1000/upgrade/*.sql | wc -l = 9 - ls 0800/downgrade/*.sql | wc -l = 96 - ls 0900/downgrade/*.sql | wc -l = 13 - ls 1000/downgrade/*.sql | wc -l = 9 +The goal for the smoke test is to confirm the any upgrade or downgrade operation between different +db-migrator versions are completed without issues. -Upgrade scripts -=============== +So, before running the test, make sure that there are different tests doing upgrade and downgrade +operations to the latest version. The script with test cases is under db-migrator folder in `docker +repository <https://github.com/onap/policy-docker/tree/master/policy-db-migrator/smoke-test>`_ -.. code:: - :number-lines: +Edit the `*-tests.sh` file to add the tests and also to check if the database variables (host, +admin user, admin password) are set correctly. - /opt/app/policy/bin/prepare_upgrade.sh policyadmin - /opt/app/policy/bin/db-migrator -s policyadmin -o upgrade # upgrade to Jakarta version (latest) - /opt/app/policy/bin/db-migrator -s policyadmin -o upgrade -t 0900 # upgrade to Istanbul - /opt/app/policy/bin/db-migrator -s policyadmin -o upgrade -t 0800 # upgrade to Honolulu +Running the test +================ -.. note:: - You can also run db-migrator upgrade with the -t and -f options +The script mentioned on the step above is ran against the `Docker compose configuration +<https://github.com/onap/policy-docker/tree/master/compose>`_. -Downgrade scripts -================= +Change the `db_migrator_policy_init.sh` on db-migrator service descriptor in the docker compose file +to the `*-test.sh` file. -.. code:: - :number-lines: +Start the service - /opt/app/policy/bin/prepare_downgrade.sh policyadmin - /opt/app/policy/bin/db-migrator -s policyadmin -o downgrade -t 0900 # downgrade to Istanbul - /opt/app/policy/bin/db-migrator -s policyadmin -o downgrade -t 0800 # downgrade to Honolulu - /opt/app/policy/bin/db-migrator -s policyadmin -o downgrade -t 0 # delete all tables +.. code-block:: bash -Db migrator initialization script -================================= + cd ~/git/docker/compose + ./start-compose.sh policy-db-migrator -Update /oom/kubernetes/policy/resources/config/db_migrator_policy_init.sh with the appropriate upgrade/downgrade calls. +To collect the logs -The policy version you are deploying should either be an upgrade or downgrade from the current db migrator schema version. +.. code-block:: bash -Every time you modify db_migrator_policy_init.sh you will have to undeploy, make and redeploy before updates are applied. + docker compose logs + # or + docker logs policy-db-migrator -1. Fresh Install -**************** +To finish execution -.. list-table:: - :widths: 60 20 - :header-rows: 0 +.. code-block:: bash - * - Number of files run - - 118 - * - Tables in policyadmin - - 70 - * - Records Added - - 118 - * - schema_version - - 1000 + ./stop-compose.sh -2. Downgrade to Honolulu (0800) -******************************* - -Modify db_migrator_policy_init.sh - remove any lines referencing upgrade and add the 2 lines under "Downgrade scripts" tagged as Honolulu - -Make/Redeploy to run downgrade. - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 13 - * - Tables in policyadmin - - 73 - * - Records Added - - 13 - * - schema_version - - 0800 - -3. Upgrade to Istanbul (0900) -***************************** - -Modify db_migrator_policy_init.sh - remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts". - -Make/Redeploy to run upgrade. - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 13 - * - Tables in policyadmin - - 75 - * - Records Added - - 13 - * - schema_version - - 0900 - -4. Upgrade to Istanbul (0900) without any information in the migration schema -***************************************************************************** - -Ensure you are on release 0800. (This may require running a downgrade before starting the test) - -Drop db-migrator tables in migration schema: - -.. code:: - :number-lines: - - DROP TABLE schema_versions; - DROP TABLE policyadmin_schema_changelog; - -Modify db_migrator_policy_init.sh - remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts". - -Make/Redeploy to run upgrade. - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 13 - * - Tables in policyadmin - - 75 - * - Records Added - - 13 - * - schema_version - - 0900 - -5. Upgrade to Istanbul (0900) after failed downgrade -**************************************************** - -Ensure you are on release 0900. - -Rename pdpstatistics table in policyadmin schema: - -.. code:: - - RENAME TABLE pdpstatistics TO backup_pdpstatistics; - -Modify db_migrator_policy_init.sh - remove any lines referencing upgrade and add the 2 lines under "Downgrade scripts" - -Make/Redeploy to run downgrade - -This should result in an error (last row in policyadmin_schema_changelog will have a success value of 0) - -Rename backup_pdpstatistic table in policyadmin schema: - -.. code:: - - RENAME TABLE backup_pdpstatistics TO pdpstatistics; - -Modify db_migrator_policy_init.sh - Remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts" - -Make/Redeploy to run upgrade - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 11 - * - Tables in policyadmin - - 75 - * - Records Added - - 11 - * - schema_version - - 0900 - -6. Downgrade to Honolulu (0800) after failed downgrade -****************************************************** - -Ensure you are on release 0900. - -Add timeStamp column to papdpstatistics_enginestats: - -.. code:: - - ALTER TABLE jpapdpstatistics_enginestats ADD COLUMN timeStamp datetime DEFAULT NULL NULL AFTER UPTIME; - -Modify db_migrator_policy_init.sh - remove any lines referencing upgrade and add the 2 lines under "Downgrade scripts" - -Make/Redeploy to run downgrade - -This should result in an error (last row in policyadmin_schema_changelog will have a success value of 0) - -Remove timeStamp column from jpapdpstatistics_enginestats: - -.. code:: - - ALTER TABLE jpapdpstatistics_enginestats DROP COLUMN timeStamp; - -The config job will retry 5 times. If you make your fix before this limit is reached you won't need to redeploy. - -Redeploy to run downgrade - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 14 - * - Tables in policyadmin - - 73 - * - Records Added - - 14 - * - schema_version - - 0800 - -7. Downgrade to Honolulu (0800) after failed upgrade -**************************************************** - -Ensure you are on release 0800. - -Modify db_migrator_policy_init.sh - remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts" - -Update pdpstatistics: - -.. code:: - - ALTER TABLE pdpstatistics ADD COLUMN POLICYUNDEPLOYCOUNT BIGINT DEFAULT NULL NULL AFTER POLICYEXECUTEDSUCCESSCOUNT; - -Make/Redeploy to run upgrade - -This should result in an error (last row in policyadmin_schema_changelog will have a success value of 0) - -Once the retry count has been reached, update pdpstatistics: - -.. code:: - - ALTER TABLE pdpstatistics DROP COLUMN POLICYUNDEPLOYCOUNT; - -Modify db_migrator_policy_init.sh - Remove any lines referencing upgrade and add the 2 lines under "Downgrade scripts" - -Make/Redeploy to run downgrade - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 7 - * - Tables in policyadmin - - 73 - * - Records Added - - 7 - * - schema_version - - 0800 - -8. Upgrade to Istanbul (0900) after failed upgrade -************************************************** - -Ensure you are on release 0800. - -Modify db_migrator_policy_init.sh - remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts" - -Update PDP table: - -.. code:: - - ALTER TABLE pdp ADD COLUMN LASTUPDATE datetime NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER HEALTHY; - -Make/Redeploy to run upgrade - -This should result in an error (last row in policyadmin_schema_changelog will have a success value of 0) - -Update PDP table: - -.. code:: - - ALTER TABLE pdp DROP COLUMN LASTUPDATE; - -The config job will retry 5 times. If you make your fix before this limit is reached you won't need to redeploy. - -Redeploy to run upgrade - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 14 - * - Tables in policyadmin - - 75 - * - Records Added - - 14 - * - schema_version - - 0900 - -9. Downgrade to Honolulu (0800) with data in pdpstatistics and jpapdpstatistics_enginestats -******************************************************************************************* - -Ensure you are on release 0900. - -Check pdpstatistics and jpapdpstatistics_enginestats are populated with data. - -.. code:: - :number-lines: - - SELECT count(*) FROM pdpstatistics; - SELECT count(*) FROM jpapdpstatistics_enginestats; - -Modify db_migrator_policy_init.sh - remove any lines referencing upgrade and add the 2 lines under "Downgrade scripts" - -Make/Redeploy to run downgrade - -Check the tables to ensure the number of records is the same. - -.. code:: - :number-lines: - - SELECT count(*) FROM pdpstatistics; - SELECT count(*) FROM jpapdpstatistics_enginestats; - -Check pdpstatistics to ensure the primary key has changed: - -.. code:: - - SELECT column_name, constraint_name FROM information_schema.key_column_usage WHERE table_name='pdpstatistics'; - -Check jpapdpstatistics_enginestats to ensure id column has been dropped and timestamp column added. - -.. code:: - - SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'jpapdpstatistics_enginestats'; - -Check the pdp table to ensure the LASTUPDATE column has been dropped. - -.. code:: - - SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'pdp'; - - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 13 - * - Tables in policyadmin - - 73 - * - Records Added - - 13 - * - schema_version - - 0800 - -10. Upgrade to Istanbul (0900) with data in pdpstatistics and jpapdpstatistics_enginestats -****************************************************************************************** - -Ensure you are on release 0800. - -Check pdpstatistics and jpapdpstatistics_enginestats are populated with data. - -.. code:: - :number-lines: - - SELECT count(*) FROM pdpstatistics; - SELECT count(*) FROM jpapdpstatistics_enginestats; - -Modify db_migrator_policy_init.sh - remove any lines referencing downgrade and add the 2 lines under "Upgrade scripts" - -Make/Redeploy to run upgrade - -Check the tables to ensure the number of records is the same. - -.. code:: - :number-lines: - - SELECT count(*) FROM pdpstatistics; - SELECT count(*) FROM jpapdpstatistics_enginestats; - -Check pdpstatistics to ensure the primary key has changed: - -.. code:: - - SELECT column_name, constraint_name FROM information_schema.key_column_usage WHERE table_name='pdpstatistics'; - -Check jpapdpstatistics_enginestats to ensure timestamp column has been dropped and id column added. - -.. code:: - - SELECT table_name, column_name, data_type FROM information_schema.columns WHERE table_name = 'jpapdpstatistics_enginestats'; - -Check the pdp table to ensure the LASTUPDATE column has been added and the value has defaulted to the CURRENT_TIMESTAMP. - -.. code:: - - SELECT table_name, column_name, data_type, column_default FROM information_schema.columns WHERE table_name = 'pdp'; - -.. list-table:: - :widths: 60 20 - :header-rows: 0 - - * - Number of files run - - 13 - * - Tables in policyadmin - - 75 - * - Records Added - - 13 - * - schema_version - - 0900 - -.. note:: - The number of records added may vary depending on the number of retries. - -With addition of Postgres support to db-migrator, these tests can be also performed on a Postgres version of database. -In addition, scripts running the aforementioned scenarios can be found under `smoke-tests` folder on db-migrator code base. End of Document diff --git a/docs/development/devtools/smoke/files/participant-http-application.yaml b/docs/development/devtools/smoke/files/participant-http-application.yaml index 142c24e5..edf324b4 100644 --- a/docs/development/devtools/smoke/files/participant-http-application.yaml +++ b/docs/development/devtools/smoke/files/participant-http-application.yaml @@ -1,20 +1,28 @@ participant: intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c01 clampAutomationCompositionTopics: topicSources: - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + - topic: ${participant.intermediaryParameters.topics.syncTopic} + servers: + - localhost:29092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 topicCommInfrastructure: kafka participantSupportedElementTypes: - diff --git a/docs/development/devtools/smoke/files/participant-kubernetes-application.yaml b/docs/development/devtools/smoke/files/participant-kubernetes-application.yaml index 9b25c615..59732bbf 100644 --- a/docs/development/devtools/smoke/files/participant-kubernetes-application.yaml +++ b/docs/development/devtools/smoke/files/participant-kubernetes-application.yaml @@ -3,22 +3,28 @@ participant: localChartDirectory: /home/policy/local-charts infoFileName: CHART_INFO.json intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c02 clampAutomationCompositionTopics: topicSources: - - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + - topic: ${participant.intermediaryParameters.topics.syncTopic} + servers: + - localhost:29092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 topicCommInfrastructure: kafka participantSupportedElementTypes: - diff --git a/docs/development/devtools/smoke/files/participant-policy-application.yaml b/docs/development/devtools/smoke/files/participant-policy-application.yaml index 5b87d1b3..c42146a5 100644 --- a/docs/development/devtools/smoke/files/participant-policy-application.yaml +++ b/docs/development/devtools/smoke/files/participant-policy-application.yaml @@ -18,22 +18,28 @@ participant: useHttps: false allowSelfSignedCerts: false intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c03 clampAutomationCompositionTopics: topicSources: - - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + - topic: ${participant.intermediaryParameters.topics.syncTopic} + servers: + - localhost:29092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 topicCommInfrastructure: kafka participantSupportedElementTypes: - diff --git a/docs/development/devtools/smoke/files/participant-sim-application.yaml b/docs/development/devtools/smoke/files/participant-sim-application.yaml index 2d23c12c..2a7efc3f 100644 --- a/docs/development/devtools/smoke/files/participant-sim-application.yaml +++ b/docs/development/devtools/smoke/files/participant-sim-application.yaml @@ -1,20 +1,28 @@ participant: intermediaryParameters: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync reportingTimeIntervalMs: 120000 description: Participant Description participantId: 101c62b3-8918-41b9-a747-d21eb79c6c90 clampAutomationCompositionTopics: topicSources: - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 + topicCommInfrastructure: kafka + fetchTimeout: 15000 + - topic: ${participant.intermediaryParameters.topics.syncTopic} + servers: + - localhost:29092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - topic: policy-acruntime-participant + - topic: ${participant.intermediaryParameters.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 topicCommInfrastructure: kafka participantSupportedElementTypes: - diff --git a/docs/development/devtools/smoke/files/runtime-application.yaml b/docs/development/devtools/smoke/files/runtime-application.yaml index f798d5bb..d9639226 100644 --- a/docs/development/devtools/smoke/files/runtime-application.yaml +++ b/docs/development/devtools/smoke/files/runtime-application.yaml @@ -1,21 +1,26 @@ runtime: + topics: + operationTopic: policy-acruntime-participant + syncTopic: acm-ppnt-sync participantParameters: heartBeatMs: 20000 maxStatusWaitMs: 200000 topicParameterGroup: topicSources: - - - topic: policy-acruntime-participant + - topic: ${runtime.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 topicCommInfrastructure: kafka fetchTimeout: 15000 topicSinks: - - - topic: policy-acruntime-participant + - topic: ${runtime.topics.operationTopic} servers: - - ${topicServer:localhost:29092} + - localhost:29092 + topicCommInfrastructure: kafka + - topic: ${runtime.topics.syncTopic} + servers: + - localhost:29092 topicCommInfrastructure: kafka acmParameters: toscaElementName: org.onap.policy.clamp.acm.AutomationCompositionElement diff --git a/docs/development/devtools/smoke/json/acm-instantiation.json b/docs/development/devtools/smoke/json/acm-instantiation.json index 2cf009cd..85f22893 100644 --- a/docs/development/devtools/smoke/json/acm-instantiation.json +++ b/docs/development/devtools/smoke/json/acm-instantiation.json @@ -15,7 +15,7 @@ "chart": { "chartId": { "name": "nginx-ingress", - "version": "0.11.0" + "version": "1.4.1" }, "releaseName": "nginxapp", "namespace": "onap" diff --git a/docs/development/devtools/smoke/pap-smoke.rst b/docs/development/devtools/smoke/pap-smoke.rst index a5f54c06..a17c8c6c 100644 --- a/docs/development/devtools/smoke/pap-smoke.rst +++ b/docs/development/devtools/smoke/pap-smoke.rst @@ -11,7 +11,8 @@ Policy PAP Smoke Test ~~~~~~~~~~~~~~~~~~~~~ The policy-pap smoke testing is executed against a default ONAP installation as per OOM charts. -This test verifies the execution of all the REST api's exposed by the component to make sure the contract works as expected. +This test verifies the execution of all the REST api's exposed by the component to make sure the +contract works as expected. General Setup ************* @@ -28,7 +29,7 @@ The ONAP components used during the smoke tests are: - Policy API to perform CRUD of policies. - Policy DB to store the policies. -- DMaaP for the communication between components. +- Kafka for the communication between components. - Policy PAP to perform runtime administration (deploy/undeploy/status/statistics/etc). - Policy Apex-PDP to deploy & undeploy policies. And send heartbeats to PAP. - Policy Drools-PDP to deploy & undeploy policies. And send heartbeats to PAP. @@ -66,4 +67,5 @@ Make sure to execute the delete steps in order to clean the setup after testing. Delete policies using policy-api -------------------------------- -Use the previously downloaded policy-api postman collection to delete the policies created for testing. +Use the previously downloaded policy-api postman collection to delete the policies created for +testing. diff --git a/docs/development/devtools/smoke/policy-gui-acm-smoke.rst b/docs/development/devtools/smoke/policy-gui-acm-smoke.rst deleted file mode 100644 index cd600199..00000000 --- a/docs/development/devtools/smoke/policy-gui-acm-smoke.rst +++ /dev/null @@ -1,277 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _clamp-gui-acm-smoke-tests: - -CLAMP GUI Smoke Tests ---------------------- -1. Introduction -*************** -The CLAMP GUI for Automation Compositions is designed to provide a user the ability to interact -with the Automation Composition Runtime to perform several actions. - -- Commission new Tosca Service Templates. -- Editing Common Properties. -- Decommission existing Tosca Service Templates. -- Create new instances of Automation Compositions. -- Change the state of the Automation Compositions. -- Delete Automation Compositions. - -This document will serve as a guide to do smoke tests on the different components that are involved when working with the GUI and outline how they operate. It will also show a developer how to set up their environment for carrying out smoke tests on the GUI. - -2. Setup Guide -************** -This section will show the developer how to set up their environment to start testing in GUI with some instruction on how to carry out the tests. There are several prerequisites. Note that this guide is written by a Linux user - although the majority of the steps show will be exactly the same in Windows or other systems. The IDE used in the examples here is Intellij but most or all of what is described should be the same across IDEs. - -2.1 Prerequisites -================= -- Java 11 -- node -- npm -- Docker -- Maven 3 -- Git -- Refer to this guide for basic environment setup `Setting up dev environment <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`_ - -2.2 Assumptions -=============== -- You are accessing the policy repositories through gerrit -- You are using "git review". - -The following repositories are required for development in this project. These repositories should be present on your machine and you should run "mvn clean install" on all of them so that the packages are present in your .m2 repository. - -- policy/parent -- policy/common -- policy/models -- policy/clamp -- policy/docker -- policy/gui -- policy/api - -In this setup guide, we will be setting up all the components technically required for a working convenient dev environment. We will not be setting up all of the participants - we will setup only the policy participant as an example. - -2.3 Setting up the components -============================= - -2.3.3 MariaDB Setup -^^^^^^^^^^^^^^^^^^^ -We will be using Docker to run our mariadb instance. It will have a total of three databases running in it. - -- acm: the clampacm db -- cldsdb4: the clamp backend db -- policyadmin: the policy-api db - -The easiest way to do this is to perform a small alteration on an SQL script provided by the clamp backend in the file "runtime/extra/sql/bulkload/create-db.sql" - -.. code-block:: mysql - - CREATE DATABASE `cldsdb4`; - USE `cldsdb4`; - DROP USER 'clds'; - CREATE USER 'clds'; - GRANT ALL on cldsdb4.* to 'clds' identified by 'sidnnd83K' with GRANT OPTION; - CREATE DATABASE `clampacm`; - USE `clampacm`; - DROP USER 'policy'; - CREATE USER 'policy'; - GRANT ALL on clampacm.* to 'policy' identified by 'P01icY' with GRANT OPTION; - CREATE DATABASE `policyadmin`; - USE `policyadmin`; - DROP USER 'policy_user'; - CREATE USER 'policy_user'; - GRANT ALL on clampacm.* to 'policy_user' identified by 'policy_user' with GRANT OPTION; - FLUSH PRIVILEGES; - -Once this has been done, we can run the bash script provided here: "runtime/extra/bin-for-dev/start-db.sh" - -.. code-block:: bash - - ./start-db.sh - -This will setup all three databases. It will also ensure that the tables in cldsdb4 are created. The database will be exposed locally on port 3306 and will be backed by an anonymous docker volume. - -2.3.4 DMAAP Simulator -^^^^^^^^^^^^^^^^^^^^^ -For convenience, a dmaap simulator has been provided in the policy/models repository. To start the simulator, you can do the following: - -1. Navigate to /models-sim/policy-models-simulators in the policy/models repository. -2. Add a configuration file to src/test/resources with the following contents: - -.. code-block:: json - - { - "dmaapProvider":{ - "name":"DMaaP simulator", - "topicSweepSec":900 - }, - "restServers":[ - { - "name":"DMaaP simulator", - "providerClass":"org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1", - "host":"localhost", - "port":3904, - "https":false - } - ] - } - -3. You can then start dmaap with: - -.. code-block:: bash - - mvn exec:java -Dexec.mainClass=org.onap.policy.models.simulators.Main -Dexec.args="src/test/resources/YOUR_CONF_FILE.json" - -At this stage the dmaap simulator should be running on your local machine on port 3904. - -2.3.5 Policy API -^^^^^^^^^^^^^^^^ -In the policy-api repo, you should fine the file "src/main/resources/etc/defaultConfig.json". This file must be altered slightly - as below with the restServerParameters and databaseProviderParameters shown. Note how the database parameters match-up with what you setup in Mariadb: - -.. code-block:: json - - { - "restServerParameters": { - "host": "0.0.0.0", - "port": 6970, - "userName": "healthcheck", - "password": "zb!XztG34", - "prometheus": true, - "https": false, - "aaf": false - }, - "databaseProviderParameters": { - "name": "PolicyProviderParameterGroup", - "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl", - "databaseDriver": "org.mariadb.jdbc.Driver", - "databaseUrl": "jdbc:mariadb://mariadb:3306/policyadmin", - "databaseUser": "policy_user", - "databasePassword": "policy_user", - "persistenceUnit": "PolicyMariaDb" - }, - } - -Next, navigate to the "/main" directory. You can then run the following command to start the policy api: - -.. code-block:: bash - - mvn exec:java -Dexec.mainClass=org.onap.policy.api.main.startstop.Main -Dexec.args=" -c ../packages/policy-api-tarball/src/main/resources/etc/defaultConfig.json" - -2.3.6 Clamp Backend -^^^^^^^^^^^^^^^^^^^ -The Clamp Backend can potentially make calls to policy pap, policy api, cds, sdc and others. For acm development purposes, we only need to connect with the acm runtime api. For convenience, there has been an emulator provided to respond to requests from Clamp to all those services that we do not care about. This emulator can be run by running the following bash script "runtime/extra/bin-for-dev/start-emulator.sh" - -.. code-block:: bash - - ./start-emulator.sh - -Once the emulator is running, we can then run the clamp backend. Before doing this, we need to make sure that all of the calls from the clamp backend are directed towards the correct places. We can do this by editing the application-noaaf.properties file: "src/main/resources/application-noaaf.properties". For development purposes and because we are running the components in a non-https way, this file will not need to be altered currently. The clamp backend can then be run with the script "runtime/extra/bin-for-dev/start-backend.sh". - -.. code-block:: bash - - ./start-backend.sh - -Once the clamp backend is running, we can start the acm runtime. - -2.3.7 Automation Composition Runtime -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -To start the acm runtime we need to go the "runtime-acm" directory in the clamp repo. There is a config file that is used, by default, for the acm runtime. That config file is here: "src/main/resources/application.yaml". For development in your local environment, it shouldn't need any adjustment and we can just run the acm runtime with: - -.. code-block:: bash - - mvn spring-boot:run - -2.3.8 Automation Composition GUI -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -At this point, all of the components required to test out the acm gui are running. We can start to make changes, and have those changes reflected in the UI for immediate feedback on our changes. But first, we must run the GUI. - -Firstly, go to the GUI repo and navigate to "gui-clamp/ui-react". To setup for development, we must install the dependencies of the GUI. We can do this using the npm package manager. In the directory, simply run: - -.. code-block:: bash - - npm install - -This will trigger installation of the required packages. The application is configured to proxy all relevant calls to the clamp backend. The application can be started with a simple: - -.. code-block:: bash - - npm start - -This uses nodes internal test dev web server to server the GUI. Once started, you can navigate to the server at "localhost:3000" and login with "admin/password". - -That completes the development setup of the environment. - -3. Running Tests -**************** -In this section, we will run through the functionalities mentioned at the start of this document is section 1. Each functionality will be tested and we will confirm that they were carried out successfully. There is a tosca service template that can be used for this test - -:download:`Tosca Service Template <tosca/tosca-for-gui-smoke-tests.yaml>` - - -3.1 Commissioning -================= -We can carry out commissioning using the GUI. To do so, from the main page, we can select "Upload Tosca to Commissioning" as shown in the image below: - -.. image:: images/gui/CommissioningUpload.png - -Clicking this will take us to a screen where we can upload a file. Select a file to upload and click on the upload button. - -.. image:: images/gui/CommissioningModal.png - -After clicking upload, you should get a message on the modal to tell you that the upload was successful. You can then look in the logs of the policy-participant to see that the message has been received from the runtime: - -.. image:: images/gui/CommissioningMessageOnParticipant.png - -This confirms that commissioning has been complete. - -3.2 Edit Common Properties -========================== -At this stage we can edit the common properties. These properties will be common to all instances of the automation composition definitions we uploaded with the tosca service template. Once an instance is created, we will not be able to alter these common properties again. We can simply click on "Edit Common Properties" in the dropdown menu and we will be taken to the modal shown below. - -.. image:: images/gui/CommonPropertiesModal.png - -The arrows to the left of the modal can be used to expand and contract the elements. If we expand one of the elements, we can see that the provider is one of the properties that we can edit. Edit this property to be "Ericsson Software Technologies". Press "Save" and then press "Commission". You should get a success message. Once you do, you can look at the full tosca service template to confirm the change in provider has been recorder. Click on "Manage Commissioned Tosca Template". Then click on "Pull Tosca Service Template". You should receive the full template on the screen. You should find your change as shown below. - -.. image:: images/gui/ViewEditedCommonProperties.png - -3.3 Create New Instances of Automation Compositions -=================================================== -Once the template is commissioned, we can start to create instances. In the dropdown, click on "Instantiation Management". In the modal, you will see an empty table, as shown. - -.. image:: images/gui/ManageInstancesModal.png - -Then we will click on "Create Instance". That takes us to a page where we can edit the properties of the instance. Not the common properties, but the instance properties. The last element has Provider set as an instance property. In the same way as we did for the common properties, change the provider to "Some Other Company" - then click save. You should get a success message if all went ok. You can then go back to the instantiation management table and you should now see an instance there. - -.. image:: images/gui/InstanceUninitialised.png - -Since the instance is uninitialised, the policies and policy types are not being deployed to the policy api. We can confirm this by looking at the policy-apis database. See the image below. - -.. image:: images/gui/PolicyTypeNotPresent.png - -3.3 Change the State of the Instance -==================================== -Now we will change the instance state to PASSIVE. This should trigger the deployment of the policy types onto the policy-api. To trigger the change of state, click on the "change" button on the instance in the instance management table. This will bring up another modal to allow you to change the state. - -.. image:: images/gui/ChangeState.png - -Pick PASSIVE and then click save. If we once again navigate to the Instance Management table, we can see that our actual state has become passive. - -.. image:: images/gui/PassiveState.png - -This should also mean that our policies and policy types should be written to the policy-api database. We can query that DB again. In the images below, we can see that the policies and the policy types have been written successfully. - -.. image:: images/gui/PolicyTypeSuccess.png - -and - -.. image:: images/gui/PolicySuccess.png - -Following the same procedure as changing the state to PASSIVE, we can then change to UNINITIALISED. This deletes the policies and policy types through the policy api and changes the overall state of the loop. we can then delete it from the Manage Instances table by clicking on Delete. - -Decommissioning -=============== -Finally, we can decommission the template. On the dropdown menu, click "Manage Commissioned Tosca Template" and then pull it. Clicking the "Delete Tosca Service Template" button will fully decommission the template. You will receive a success message if the deletion was successful. - -.. image:: images/gui/ViewEditedCommonProperties.png - -This concluded the required smoke tests - - diff --git a/docs/development/devtools/smoke/xacml-smoke.rst b/docs/development/devtools/smoke/xacml-smoke.rst index 61f3551f..b57a3065 100644 --- a/docs/development/devtools/smoke/xacml-smoke.rst +++ b/docs/development/devtools/smoke/xacml-smoke.rst @@ -10,8 +10,8 @@ XACML PDP Smoke Test ~~~~~~~~~~~~~~~~~~~~ -The policy-xacml-pdp smoke testing can be executed against a kubernetes based policy framework installation, -and/or a docker-compose set up similar to the one executed by CSIT tests. +The policy-xacml-pdp smoke testing can be executed against a kubernetes based policy framework +installation, and/or a docker-compose set up similar to the one executed by CSIT tests. General Setup ************* @@ -21,16 +21,21 @@ PF kubernetes Install For installation instructions, please refer to the following documentation: -`Policy Framework K8S Install <https://docs.onap.org/projects/onap-policy-parent/en/latest/development/devtools/testing/csit.html>`_ +`Policy Framework K8S Install +<https://docs.onap.org/projects/onap-policy-parent/en/latest/development/devtools/testing/csit.html>`_ -The script referred to in the above link should handle the install of the of microk8s, docker and other required components for the install of the policy framework and clamp components. The scripts are used by policy as a means to run the CSIT tests in Kubernetes. +The script referred to in the above link should handle the install of the of microk8s, docker and +other required components for the install of the policy framework and clamp components. The scripts +are used by policy as a means to run the CSIT tests in Kubernetes. docker-compose based -------------------- -A smaller testing environment can be put together by replicating the docker-based CSIT test environment. Details are on the same page as K8s setup: +A smaller testing environment can be put together by replicating the docker-based CSIT test +environment. Details are on the same page as K8s setup: -`Policy CSIT Test Install Docker <https://docs.onap.org/projects/onap-policy-parent/en/latest/development/devtools/testing/csit.html>`_ +`Policy CSIT Test Install Docker +<https://docs.onap.org/projects/onap-policy-parent/en/latest/development/devtools/testing/csit.html>`_ Testing procedures ****************** diff --git a/docs/development/devtools/testing/csit.rst b/docs/development/devtools/testing/csit.rst index 4eb1256c..9151e166 100644 --- a/docs/development/devtools/testing/csit.rst +++ b/docs/development/devtools/testing/csit.rst @@ -17,6 +17,10 @@ This article provides the steps to run CSIT tests in a local environment, most c significant code change. .. note:: + Both environments described in this page are for test or learning purposes only. For real deployment + environment, use `ONAP Operations Manager <https://github.com/onap/oom>`_ + +.. note:: If building images locally, follow the instructions :ref:`here <building-pf-docker-images-label>` @@ -38,51 +42,25 @@ Under the folder `~/git/policy/docker/csit`, there are two main scripts to run t Running CSIT in Docker environment ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If not familiar with the PF Docker structure, the detailed information can be found :ref:`here <docker-label>` +If not familiar with the PF Docker structure, the detailed information can be found +:ref:`here <docker-label>` Running tests to validate code changes -------------------------------------- -After building image(s) locally, the compose file needs to be edited to use the local image when -bringing up the container. Open file `~/git/policy/docker/compose/docker-compose.yml` and remove the -tag `${CONTAINER_LOCATION}` from the image variable in the service description. -If change is GUI related, then `docker-compose.gui.yml` might need to be edited as well, although -there are no GUI related test suites. - -For example, if testing against a PAP change, a new onap/policy-pap image with latest and -x.y.z-SNAPSHOT versions is available. When editing the docker-compose file, the following change -would be done: - -From: - -.. code-block:: yaml - - pap: - image: ${CONTAINER_LOCATION}onap/policy-pap:${POLICY_PAP_VERSION} - container_name: policy-pap - - -To: - -.. code-block:: yaml - - pap: - image: onap/policy-pap:latest - container_name: policy-pap - +For *local* images, run the script with the `--local` flag. .. note:: Make sure to do the same changes to any other components that are using locally built images. -After finished with edits in compose file, then use the `run-project-csit.sh` script to run the -test suite. +Then use the `run-project-csit.sh` script to run the test suite. .. code-block:: bash cd ~/git/policy/docker - ./csit/run-project-csit.sh <component> + ./csit/run-project-csit.sh <component> --local The <component> input is any of the policy components available: @@ -94,7 +72,8 @@ The <component> input is any of the policy components available: - drools-pdp - drools-applications - xacml-pdp - - policy-acm-runtime + - clamp + - opa-pdp Keep in mind that after the Robot executions, logs from docker-compose are printed and test logs might not be available on console and the containers are teared down. The tests results @@ -105,12 +84,14 @@ Running tests for learning PF usage ----------------------------------- In that case, no changes required on docker-compose files, but commenting the tear down of docker -containers might be required. For that, edit the file `run-project-csit.sh` script and comment the -following line: +containers might be required. For that, run the `run-project-csit.sh` script with `--no-exit` flag: .. code-block:: bash - # source_safely ${WORKSPACE}/compose/stop-compose.sh (currently line 36) + cd ~/git/policy/docker + ./csit/run-project-csit.sh <component> --local --no-exit + # or + ./csit/run-project-csit.sh <component> --no-exit # will download images from nexus3 server This way, the docker containers are still up and running for more investigation. @@ -153,6 +134,7 @@ The <component> input is any of the policy components available: - drools-pdp - xacml-pdp - clamp + - opa-pdp Different from Docker usage, the microk8s installation is not removed when tests finish. @@ -161,12 +143,12 @@ Different from Docker usage, the microk8s installation is not removed when tests Installing all available PF components -------------------------------------- -Use the `run-k8s-csit.sh` script to install PF components with Prometheus server available. +Use the `cluster_setup.sh` script to install PF components with Prometheus server available. .. code-block:: bash - cd ~/git/policy/docker - ./csit/run-k8s-csit.sh install + cd ~/git/policy/docker/csit/resources/scripts + ./cluster_setup.sh install In this case, no tests are executed and the environment can be used for other integration tests @@ -179,7 +161,7 @@ Uninstall and clean up If running the CSIT tests with microk8s environment, docker images for the tests suites are created. To clean them up, user `docker prune <https://docs.docker.com/config/pruning/>`_ command. -To uninstall policy helm deployment and/or the microk8s cluster, use `run-k8s-csit.sh` +To uninstall policy helm deployment and/or the microk8s cluster, use `cluster_setup.sh` .. code-block:: bash @@ -187,10 +169,10 @@ To uninstall policy helm deployment and/or the microk8s cluster, use `run-k8s-cs cd ~/git/policy/docker # to uninstall deployment - ./csit/run-k8s-csit.sh uninstall + ./csit/resources/scripts/cluster_setup.sh uninstall # to remove cluster - ./csit/run-k8s-csit.sh clean + ./csit/resources/scripts/cluster_setup.sh clean End of document
\ No newline at end of file diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_after_72h.txt b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_after_72h.txt deleted file mode 100644 index 56f13907..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_after_72h.txt +++ /dev/null @@ -1,316 +0,0 @@ -# HELP jvm_threads_current Current thread count of a JVM -# TYPE jvm_threads_current gauge -jvm_threads_current 32.0 -# HELP jvm_threads_daemon Daemon thread count of a JVM -# TYPE jvm_threads_daemon gauge -jvm_threads_daemon 17.0 -# HELP jvm_threads_peak Peak thread count of a JVM -# TYPE jvm_threads_peak gauge -jvm_threads_peak 81.0 -# HELP jvm_threads_started_total Started thread count of a JVM -# TYPE jvm_threads_started_total counter -jvm_threads_started_total 423360.0 -# HELP jvm_threads_deadlocked Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers -# TYPE jvm_threads_deadlocked gauge -jvm_threads_deadlocked 0.0 -# HELP jvm_threads_deadlocked_monitor Cycles of JVM-threads that are in deadlock waiting to acquire object monitors -# TYPE jvm_threads_deadlocked_monitor gauge -jvm_threads_deadlocked_monitor 0.0 -# HELP jvm_threads_state Current count of threads by state -# TYPE jvm_threads_state gauge -jvm_threads_state{state="BLOCKED",} 0.0 -jvm_threads_state{state="TIMED_WAITING",} 11.0 -jvm_threads_state{state="NEW",} 0.0 -jvm_threads_state{state="RUNNABLE",} 7.0 -jvm_threads_state{state="TERMINATED",} 0.0 -jvm_threads_state{state="WAITING",} 14.0 -# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds. -# TYPE process_cpu_seconds_total counter -process_cpu_seconds_total 16418.06 -# HELP process_start_time_seconds Start time of the process since unix epoch in seconds. -# TYPE process_start_time_seconds gauge -process_start_time_seconds 1.651077494162E9 -# HELP process_open_fds Number of open file descriptors. -# TYPE process_open_fds gauge -process_open_fds 357.0 -# HELP process_max_fds Maximum number of open file descriptors. -# TYPE process_max_fds gauge -process_max_fds 1048576.0 -# HELP process_virtual_memory_bytes Virtual memory size in bytes. -# TYPE process_virtual_memory_bytes gauge -process_virtual_memory_bytes 1.0165403648E10 -# HELP process_resident_memory_bytes Resident memory size in bytes. -# TYPE process_resident_memory_bytes gauge -process_resident_memory_bytes 5.58034944E8 -# HELP pdpa_engine_event_executions Total number of APEX events processed by the engine. -# TYPE pdpa_engine_event_executions gauge -pdpa_engine_event_executions{engine_instance_id="NSOApexEngine-1:0.0.1",} 30743.0 -pdpa_engine_event_executions{engine_instance_id="NSOApexEngine-4:0.0.1",} 30766.0 -pdpa_engine_event_executions{engine_instance_id="NSOApexEngine-3:0.0.1",} 30722.0 -pdpa_engine_event_executions{engine_instance_id="NSOApexEngine-0:0.0.1",} 30727.0 -pdpa_engine_event_executions{engine_instance_id="NSOApexEngine-2:0.0.1",} 30742.0 -# HELP jvm_buffer_pool_used_bytes Used bytes of a given JVM buffer pool. -# TYPE jvm_buffer_pool_used_bytes gauge -jvm_buffer_pool_used_bytes{pool="mapped",} 0.0 -jvm_buffer_pool_used_bytes{pool="direct",} 3.3833905E7 -# HELP jvm_buffer_pool_capacity_bytes Bytes capacity of a given JVM buffer pool. -# TYPE jvm_buffer_pool_capacity_bytes gauge -jvm_buffer_pool_capacity_bytes{pool="mapped",} 0.0 -jvm_buffer_pool_capacity_bytes{pool="direct",} 3.3833904E7 -# HELP jvm_buffer_pool_used_buffers Used buffers of a given JVM buffer pool. -# TYPE jvm_buffer_pool_used_buffers gauge -jvm_buffer_pool_used_buffers{pool="mapped",} 0.0 -jvm_buffer_pool_used_buffers{pool="direct",} 15.0 -# HELP pdpa_policy_executions_total The total number of TOSCA policy executions. -# TYPE pdpa_policy_executions_total counter -# HELP pdpa_policy_deployments_total The total number of policy deployments. -# TYPE pdpa_policy_deployments_total counter -pdpa_policy_deployments_total{operation="deploy",status="TOTAL",} 5.0 -pdpa_policy_deployments_total{operation="undeploy",status="TOTAL",} 5.0 -pdpa_policy_deployments_total{operation="undeploy",status="SUCCESS",} 5.0 -pdpa_policy_deployments_total{operation="deploy",status="SUCCESS",} 5.0 -# HELP pdpa_engine_average_execution_time_seconds Average time taken to execute an APEX policy in seconds. -# TYPE pdpa_engine_average_execution_time_seconds gauge -pdpa_engine_average_execution_time_seconds{engine_instance_id="NSOApexEngine-1:0.0.1",} 0.00515235988680349 -pdpa_engine_average_execution_time_seconds{engine_instance_id="NSOApexEngine-4:0.0.1",} 0.00521845543782099 -pdpa_engine_average_execution_time_seconds{engine_instance_id="NSOApexEngine-3:0.0.1",} 0.005200800729119198 -pdpa_engine_average_execution_time_seconds{engine_instance_id="NSOApexEngine-0:0.0.1",} 0.005191785725908804 -pdpa_engine_average_execution_time_seconds{engine_instance_id="NSOApexEngine-2:0.0.1",} 0.0051784854596317684 -# HELP pdpa_engine_state State of the APEX engine as integers mapped as - 0:UNDEFINED, 1:STOPPED, 2:READY, 3:EXECUTING, 4:STOPPING -# TYPE pdpa_engine_state gauge -pdpa_engine_state{engine_instance_id="NSOApexEngine-1:0.0.1",} 1.0 -pdpa_engine_state{engine_instance_id="NSOApexEngine-4:0.0.1",} 1.0 -pdpa_engine_state{engine_instance_id="NSOApexEngine-3:0.0.1",} 1.0 -pdpa_engine_state{engine_instance_id="NSOApexEngine-0:0.0.1",} 1.0 -pdpa_engine_state{engine_instance_id="NSOApexEngine-2:0.0.1",} 1.0 -# HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds. -# TYPE jvm_gc_collection_seconds summary -jvm_gc_collection_seconds_count{gc="Copy",} 5883.0 -jvm_gc_collection_seconds_sum{gc="Copy",} 97.808 -jvm_gc_collection_seconds_count{gc="MarkSweepCompact",} 3.0 -jvm_gc_collection_seconds_sum{gc="MarkSweepCompact",} 0.357 -# HELP pdpa_engine_last_start_timestamp_epoch Epoch timestamp of the instance when engine was last started. -# TYPE pdpa_engine_last_start_timestamp_epoch gauge -pdpa_engine_last_start_timestamp_epoch{engine_instance_id="NSOApexEngine-1:0.0.1",} 0.0 -pdpa_engine_last_start_timestamp_epoch{engine_instance_id="NSOApexEngine-4:0.0.1",} 0.0 -pdpa_engine_last_start_timestamp_epoch{engine_instance_id="NSOApexEngine-3:0.0.1",} 0.0 -pdpa_engine_last_start_timestamp_epoch{engine_instance_id="NSOApexEngine-0:0.0.1",} 0.0 -pdpa_engine_last_start_timestamp_epoch{engine_instance_id="NSOApexEngine-2:0.0.1",} 0.0 -# HELP jvm_memory_pool_allocated_bytes_total Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously. -# TYPE jvm_memory_pool_allocated_bytes_total counter -jvm_memory_pool_allocated_bytes_total{pool="Eden Space",} 8.29800936264E11 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'profiled nmethods'",} 4.839232E7 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'non-profiled nmethods'",} 3.5181056E7 -jvm_memory_pool_allocated_bytes_total{pool="Compressed Class Space",} 8194120.0 -jvm_memory_pool_allocated_bytes_total{pool="Metaspace",} 7.7729144E7 -jvm_memory_pool_allocated_bytes_total{pool="Tenured Gen",} 1.41180272E8 -jvm_memory_pool_allocated_bytes_total{pool="Survivor Space",} 4.78761928E8 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'non-nmethods'",} 1392128.0 -# HELP pdpa_engine_uptime Time elapsed since the engine was started. -# TYPE pdpa_engine_uptime gauge -pdpa_engine_uptime{engine_instance_id="NSOApexEngine-1:0.0.1",} 259200.522 -pdpa_engine_uptime{engine_instance_id="NSOApexEngine-4:0.0.1",} 259200.751 -pdpa_engine_uptime{engine_instance_id="NSOApexEngine-3:0.0.1",} 259200.678 -pdpa_engine_uptime{engine_instance_id="NSOApexEngine-0:0.0.1",} 259200.439 -pdpa_engine_uptime{engine_instance_id="NSOApexEngine-2:0.0.1",} 259200.601 -# HELP pdpa_engine_last_execution_time Time taken to execute the last APEX policy in seconds. -# TYPE pdpa_engine_last_execution_time histogram -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.005",} 24726.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.01",} 50195.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.025",} 70836.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.05",} 71947.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.075",} 71996.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.1",} 72001.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.25",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.5",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="0.75",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="1.0",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="2.5",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="5.0",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="7.5",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="10.0",} 72002.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-1:0.0.1",le="+Inf",} 72002.0 -pdpa_engine_last_execution_time_count{engine_instance_id="NSOApexEngine-1:0.0.1",} 72002.0 -pdpa_engine_last_execution_time_sum{engine_instance_id="NSOApexEngine-1:0.0.1",} 609.1939999998591 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.005",} 24512.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.01",} 50115.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.025",} 70746.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.05",} 71918.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.075",} 71966.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.1",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.25",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.5",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="0.75",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="1.0",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="2.5",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="5.0",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="7.5",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="10.0",} 71967.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-4:0.0.1",le="+Inf",} 71967.0 -pdpa_engine_last_execution_time_count{engine_instance_id="NSOApexEngine-4:0.0.1",} 71967.0 -pdpa_engine_last_execution_time_sum{engine_instance_id="NSOApexEngine-4:0.0.1",} 610.3469999998522 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.005",} 24607.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.01",} 50182.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.025",} 70791.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.05",} 71929.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.075",} 71965.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.1",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.25",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.5",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="0.75",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="1.0",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="2.5",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="5.0",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="7.5",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="10.0",} 71970.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-3:0.0.1",le="+Inf",} 71970.0 -pdpa_engine_last_execution_time_count{engine_instance_id="NSOApexEngine-3:0.0.1",} 71970.0 -pdpa_engine_last_execution_time_sum{engine_instance_id="NSOApexEngine-3:0.0.1",} 608.8539999998619 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.005",} 24623.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.01",} 50207.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.025",} 70783.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.05",} 71934.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.075",} 71981.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.1",} 71986.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.25",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.5",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="0.75",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="1.0",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="2.5",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="5.0",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="7.5",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="10.0",} 71988.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-0:0.0.1",le="+Inf",} 71988.0 -pdpa_engine_last_execution_time_count{engine_instance_id="NSOApexEngine-0:0.0.1",} 71988.0 -pdpa_engine_last_execution_time_sum{engine_instance_id="NSOApexEngine-0:0.0.1",} 610.5579999998558 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.005",} 24594.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.01",} 50131.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.025",} 70816.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.05",} 71905.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.075",} 71959.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.1",} 71961.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.25",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.5",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="0.75",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="1.0",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="2.5",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="5.0",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="7.5",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="10.0",} 71962.0 -pdpa_engine_last_execution_time_bucket{engine_instance_id="NSOApexEngine-2:0.0.1",le="+Inf",} 71962.0 -pdpa_engine_last_execution_time_count{engine_instance_id="NSOApexEngine-2:0.0.1",} 71962.0 -pdpa_engine_last_execution_time_sum{engine_instance_id="NSOApexEngine-2:0.0.1",} 608.3549999998555 -# HELP jvm_memory_objects_pending_finalization The number of objects waiting in the finalizer queue. -# TYPE jvm_memory_objects_pending_finalization gauge -jvm_memory_objects_pending_finalization 0.0 -# HELP jvm_memory_bytes_used Used bytes of a given JVM memory area. -# TYPE jvm_memory_bytes_used gauge -jvm_memory_bytes_used{area="heap",} 1.90274552E8 -jvm_memory_bytes_used{area="nonheap",} 1.16193856E8 -# HELP jvm_memory_bytes_committed Committed (bytes) of a given JVM memory area. -# TYPE jvm_memory_bytes_committed gauge -jvm_memory_bytes_committed{area="heap",} 5.10984192E8 -jvm_memory_bytes_committed{area="nonheap",} 1.56127232E8 -# HELP jvm_memory_bytes_max Max (bytes) of a given JVM memory area. -# TYPE jvm_memory_bytes_max gauge -jvm_memory_bytes_max{area="heap",} 8.151564288E9 -jvm_memory_bytes_max{area="nonheap",} -1.0 -# HELP jvm_memory_bytes_init Initial bytes of a given JVM memory area. -# TYPE jvm_memory_bytes_init gauge -jvm_memory_bytes_init{area="heap",} 5.28482304E8 -jvm_memory_bytes_init{area="nonheap",} 7667712.0 -# HELP jvm_memory_pool_bytes_used Used bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_used gauge -jvm_memory_pool_bytes_used{pool="CodeHeap 'non-nmethods'",} 1353600.0 -jvm_memory_pool_bytes_used{pool="Metaspace",} 7.7729144E7 -jvm_memory_pool_bytes_used{pool="Tenured Gen",} 1.41180272E8 -jvm_memory_pool_bytes_used{pool="CodeHeap 'profiled nmethods'",} 4831104.0 -jvm_memory_pool_bytes_used{pool="Eden Space",} 4.5145032E7 -jvm_memory_pool_bytes_used{pool="Survivor Space",} 3949248.0 -jvm_memory_pool_bytes_used{pool="Compressed Class Space",} 8194120.0 -jvm_memory_pool_bytes_used{pool="CodeHeap 'non-profiled nmethods'",} 2.4085888E7 -# HELP jvm_memory_pool_bytes_committed Committed bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_committed gauge -jvm_memory_pool_bytes_committed{pool="CodeHeap 'non-nmethods'",} 2555904.0 -jvm_memory_pool_bytes_committed{pool="Metaspace",} 8.5348352E7 -jvm_memory_pool_bytes_committed{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_bytes_committed{pool="CodeHeap 'profiled nmethods'",} 3.3030144E7 -jvm_memory_pool_bytes_committed{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_bytes_committed{pool="Survivor Space",} 1.7629184E7 -jvm_memory_pool_bytes_committed{pool="Compressed Class Space",} 9175040.0 -jvm_memory_pool_bytes_committed{pool="CodeHeap 'non-profiled nmethods'",} 2.6017792E7 -# HELP jvm_memory_pool_bytes_max Max bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_max gauge -jvm_memory_pool_bytes_max{pool="CodeHeap 'non-nmethods'",} 5828608.0 -jvm_memory_pool_bytes_max{pool="Metaspace",} -1.0 -jvm_memory_pool_bytes_max{pool="Tenured Gen",} 5.621809152E9 -jvm_memory_pool_bytes_max{pool="CodeHeap 'profiled nmethods'",} 1.22912768E8 -jvm_memory_pool_bytes_max{pool="Eden Space",} 2.248671232E9 -jvm_memory_pool_bytes_max{pool="Survivor Space",} 2.81083904E8 -jvm_memory_pool_bytes_max{pool="Compressed Class Space",} 1.073741824E9 -jvm_memory_pool_bytes_max{pool="CodeHeap 'non-profiled nmethods'",} 1.22916864E8 -# HELP jvm_memory_pool_bytes_init Initial bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_init gauge -jvm_memory_pool_bytes_init{pool="CodeHeap 'non-nmethods'",} 2555904.0 -jvm_memory_pool_bytes_init{pool="Metaspace",} 0.0 -jvm_memory_pool_bytes_init{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_bytes_init{pool="CodeHeap 'profiled nmethods'",} 2555904.0 -jvm_memory_pool_bytes_init{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_bytes_init{pool="Survivor Space",} 1.7563648E7 -jvm_memory_pool_bytes_init{pool="Compressed Class Space",} 0.0 -jvm_memory_pool_bytes_init{pool="CodeHeap 'non-profiled nmethods'",} 2555904.0 -# HELP jvm_memory_pool_collection_used_bytes Used bytes after last collection of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_used_bytes gauge -jvm_memory_pool_collection_used_bytes{pool="Tenured Gen",} 3.853812E7 -jvm_memory_pool_collection_used_bytes{pool="Eden Space",} 0.0 -jvm_memory_pool_collection_used_bytes{pool="Survivor Space",} 3949248.0 -# HELP jvm_memory_pool_collection_committed_bytes Committed after last collection bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_committed_bytes gauge -jvm_memory_pool_collection_committed_bytes{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_collection_committed_bytes{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_collection_committed_bytes{pool="Survivor Space",} 1.7629184E7 -# HELP jvm_memory_pool_collection_max_bytes Max bytes after last collection of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_max_bytes gauge -jvm_memory_pool_collection_max_bytes{pool="Tenured Gen",} 5.621809152E9 -jvm_memory_pool_collection_max_bytes{pool="Eden Space",} 2.248671232E9 -jvm_memory_pool_collection_max_bytes{pool="Survivor Space",} 2.81083904E8 -# HELP jvm_memory_pool_collection_init_bytes Initial after last collection bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_init_bytes gauge -jvm_memory_pool_collection_init_bytes{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_collection_init_bytes{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_collection_init_bytes{pool="Survivor Space",} 1.7563648E7 -# HELP jvm_classes_loaded The number of classes that are currently loaded in the JVM -# TYPE jvm_classes_loaded gauge -jvm_classes_loaded 11386.0 -# HELP jvm_classes_loaded_total The total number of classes that have been loaded since the JVM has started execution -# TYPE jvm_classes_loaded_total counter -jvm_classes_loaded_total 11448.0 -# HELP jvm_classes_unloaded_total The total number of classes that have been unloaded since the JVM has started execution -# TYPE jvm_classes_unloaded_total counter -jvm_classes_unloaded_total 62.0 -# HELP jvm_info VM version info -# TYPE jvm_info gauge -jvm_info{runtime="OpenJDK Runtime Environment",vendor="Alpine",version="11.0.9+11-alpine-r1",} 1.0 -# HELP jvm_memory_pool_allocated_bytes_created Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously. -# TYPE jvm_memory_pool_allocated_bytes_created gauge -jvm_memory_pool_allocated_bytes_created{pool="Eden Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'profiled nmethods'",} 1.651077501657E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'non-profiled nmethods'",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Compressed Class Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Metaspace",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Tenured Gen",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Survivor Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'non-nmethods'",} 1.651077501662E9 -# HELP pdpa_engine_last_execution_time_created Time taken to execute the last APEX policy in seconds. -# TYPE pdpa_engine_last_execution_time_created gauge -pdpa_engine_last_execution_time_created{engine_instance_id="NSOApexEngine-1:0.0.1",} 1.651080501294E9 -pdpa_engine_last_execution_time_created{engine_instance_id="NSOApexEngine-4:0.0.1",} 1.651080501295E9 -pdpa_engine_last_execution_time_created{engine_instance_id="NSOApexEngine-3:0.0.1",} 1.651080501295E9 -pdpa_engine_last_execution_time_created{engine_instance_id="NSOApexEngine-0:0.0.1",} 1.651080501294E9 -pdpa_engine_last_execution_time_created{engine_instance_id="NSOApexEngine-2:0.0.1",} 1.651080501294E9 -# HELP pdpa_policy_deployments_created The total number of policy deployments. -# TYPE pdpa_policy_deployments_created gauge -pdpa_policy_deployments_created{operation="deploy",status="TOTAL",} 1.651080501289E9 -pdpa_policy_deployments_created{operation="undeploy",status="TOTAL",} 1.651081148331E9 -pdpa_policy_deployments_created{operation="undeploy",status="SUCCESS",} 1.651081148331E9 -pdpa_policy_deployments_created{operation="deploy",status="SUCCESS",} 1.651080501289E9 diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_before_72h.txt b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_before_72h.txt deleted file mode 100644 index 4a3d8835..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_metrics_before_72h.txt +++ /dev/null @@ -1,175 +0,0 @@ -# HELP jvm_threads_current Current thread count of a JVM -# TYPE jvm_threads_current gauge -jvm_threads_current 31.0 -# HELP jvm_threads_daemon Daemon thread count of a JVM -# TYPE jvm_threads_daemon gauge -jvm_threads_daemon 16.0 -# HELP jvm_threads_peak Peak thread count of a JVM -# TYPE jvm_threads_peak gauge -jvm_threads_peak 31.0 -# HELP jvm_threads_started_total Started thread count of a JVM -# TYPE jvm_threads_started_total counter -jvm_threads_started_total 32.0 -# HELP jvm_threads_deadlocked Cycles of JVM-threads that are in deadlock waiting to acquire object monitors or ownable synchronizers -# TYPE jvm_threads_deadlocked gauge -jvm_threads_deadlocked 0.0 -# HELP jvm_threads_deadlocked_monitor Cycles of JVM-threads that are in deadlock waiting to acquire object monitors -# TYPE jvm_threads_deadlocked_monitor gauge -jvm_threads_deadlocked_monitor 0.0 -# HELP jvm_threads_state Current count of threads by state -# TYPE jvm_threads_state gauge -jvm_threads_state{state="BLOCKED",} 0.0 -jvm_threads_state{state="TIMED_WAITING",} 11.0 -jvm_threads_state{state="NEW",} 0.0 -jvm_threads_state{state="RUNNABLE",} 7.0 -jvm_threads_state{state="TERMINATED",} 0.0 -jvm_threads_state{state="WAITING",} 13.0 -# HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds. -# TYPE jvm_gc_collection_seconds summary -jvm_gc_collection_seconds_count{gc="Copy",} 2.0 -jvm_gc_collection_seconds_sum{gc="Copy",} 0.059 -jvm_gc_collection_seconds_count{gc="MarkSweepCompact",} 2.0 -jvm_gc_collection_seconds_sum{gc="MarkSweepCompact",} 0.185 -# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds. -# TYPE process_cpu_seconds_total counter -process_cpu_seconds_total 38.14 -# HELP process_start_time_seconds Start time of the process since unix epoch in seconds. -# TYPE process_start_time_seconds gauge -process_start_time_seconds 1.651077494162E9 -# HELP process_open_fds Number of open file descriptors. -# TYPE process_open_fds gauge -process_open_fds 355.0 -# HELP process_max_fds Maximum number of open file descriptors. -# TYPE process_max_fds gauge -process_max_fds 1048576.0 -# HELP process_virtual_memory_bytes Virtual memory size in bytes. -# TYPE process_virtual_memory_bytes gauge -process_virtual_memory_bytes 1.0070171648E10 -# HELP process_resident_memory_bytes Resident memory size in bytes. -# TYPE process_resident_memory_bytes gauge -process_resident_memory_bytes 2.9052928E8 -# HELP jvm_buffer_pool_used_bytes Used bytes of a given JVM buffer pool. -# TYPE jvm_buffer_pool_used_bytes gauge -jvm_buffer_pool_used_bytes{pool="mapped",} 0.0 -jvm_buffer_pool_used_bytes{pool="direct",} 187432.0 -# HELP jvm_buffer_pool_capacity_bytes Bytes capacity of a given JVM buffer pool. -# TYPE jvm_buffer_pool_capacity_bytes gauge -jvm_buffer_pool_capacity_bytes{pool="mapped",} 0.0 -jvm_buffer_pool_capacity_bytes{pool="direct",} 187432.0 -# HELP jvm_buffer_pool_used_buffers Used buffers of a given JVM buffer pool. -# TYPE jvm_buffer_pool_used_buffers gauge -jvm_buffer_pool_used_buffers{pool="mapped",} 0.0 -jvm_buffer_pool_used_buffers{pool="direct",} 9.0 -# HELP jvm_memory_pool_allocated_bytes_total Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously. -# TYPE jvm_memory_pool_allocated_bytes_total counter -jvm_memory_pool_allocated_bytes_total{pool="Eden Space",} 3.035482E8 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'profiled nmethods'",} 9772800.0 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'non-profiled nmethods'",} 2152064.0 -jvm_memory_pool_allocated_bytes_total{pool="Compressed Class Space",} 4912232.0 -jvm_memory_pool_allocated_bytes_total{pool="Metaspace",} 4.1337744E7 -jvm_memory_pool_allocated_bytes_total{pool="Tenured Gen",} 2.8136056E7 -jvm_memory_pool_allocated_bytes_total{pool="Survivor Space",} 6813240.0 -jvm_memory_pool_allocated_bytes_total{pool="CodeHeap 'non-nmethods'",} 1272320.0 -# HELP pdpa_policy_deployments_total The total number of policy deployments. -# TYPE pdpa_policy_deployments_total counter -# HELP jvm_memory_objects_pending_finalization The number of objects waiting in the finalizer queue. -# TYPE jvm_memory_objects_pending_finalization gauge -jvm_memory_objects_pending_finalization 0.0 -# HELP jvm_memory_bytes_used Used bytes of a given JVM memory area. -# TYPE jvm_memory_bytes_used gauge -jvm_memory_bytes_used{area="heap",} 9.5900224E7 -jvm_memory_bytes_used{area="nonheap",} 6.0285288E7 -# HELP jvm_memory_bytes_committed Committed (bytes) of a given JVM memory area. -# TYPE jvm_memory_bytes_committed gauge -jvm_memory_bytes_committed{area="heap",} 5.10984192E8 -jvm_memory_bytes_committed{area="nonheap",} 6.3922176E7 -# HELP jvm_memory_bytes_max Max (bytes) of a given JVM memory area. -# TYPE jvm_memory_bytes_max gauge -jvm_memory_bytes_max{area="heap",} 8.151564288E9 -jvm_memory_bytes_max{area="nonheap",} -1.0 -# HELP jvm_memory_bytes_init Initial bytes of a given JVM memory area. -# TYPE jvm_memory_bytes_init gauge -jvm_memory_bytes_init{area="heap",} 5.28482304E8 -jvm_memory_bytes_init{area="nonheap",} 7667712.0 -# HELP jvm_memory_pool_bytes_used Used bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_used gauge -jvm_memory_pool_bytes_used{pool="CodeHeap 'non-nmethods'",} 1272320.0 -jvm_memory_pool_bytes_used{pool="Metaspace",} 4.1681312E7 -jvm_memory_pool_bytes_used{pool="Tenured Gen",} 2.8136056E7 -jvm_memory_pool_bytes_used{pool="CodeHeap 'profiled nmethods'",} 1.0006912E7 -jvm_memory_pool_bytes_used{pool="Eden Space",} 6.5005376E7 -jvm_memory_pool_bytes_used{pool="Survivor Space",} 2758792.0 -jvm_memory_pool_bytes_used{pool="Compressed Class Space",} 4913352.0 -jvm_memory_pool_bytes_used{pool="CodeHeap 'non-profiled nmethods'",} 2411392.0 -# HELP jvm_memory_pool_bytes_committed Committed bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_committed gauge -jvm_memory_pool_bytes_committed{pool="CodeHeap 'non-nmethods'",} 2555904.0 -jvm_memory_pool_bytes_committed{pool="Metaspace",} 4.32128E7 -jvm_memory_pool_bytes_committed{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_bytes_committed{pool="CodeHeap 'profiled nmethods'",} 1.0092544E7 -jvm_memory_pool_bytes_committed{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_bytes_committed{pool="Survivor Space",} 1.7629184E7 -jvm_memory_pool_bytes_committed{pool="Compressed Class Space",} 5505024.0 -jvm_memory_pool_bytes_committed{pool="CodeHeap 'non-profiled nmethods'",} 2555904.0 -# HELP jvm_memory_pool_bytes_max Max bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_max gauge -jvm_memory_pool_bytes_max{pool="CodeHeap 'non-nmethods'",} 5828608.0 -jvm_memory_pool_bytes_max{pool="Metaspace",} -1.0 -jvm_memory_pool_bytes_max{pool="Tenured Gen",} 5.621809152E9 -jvm_memory_pool_bytes_max{pool="CodeHeap 'profiled nmethods'",} 1.22912768E8 -jvm_memory_pool_bytes_max{pool="Eden Space",} 2.248671232E9 -jvm_memory_pool_bytes_max{pool="Survivor Space",} 2.81083904E8 -jvm_memory_pool_bytes_max{pool="Compressed Class Space",} 1.073741824E9 -jvm_memory_pool_bytes_max{pool="CodeHeap 'non-profiled nmethods'",} 1.22916864E8 -# HELP jvm_memory_pool_bytes_init Initial bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_bytes_init gauge -jvm_memory_pool_bytes_init{pool="CodeHeap 'non-nmethods'",} 2555904.0 -jvm_memory_pool_bytes_init{pool="Metaspace",} 0.0 -jvm_memory_pool_bytes_init{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_bytes_init{pool="CodeHeap 'profiled nmethods'",} 2555904.0 -jvm_memory_pool_bytes_init{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_bytes_init{pool="Survivor Space",} 1.7563648E7 -jvm_memory_pool_bytes_init{pool="Compressed Class Space",} 0.0 -jvm_memory_pool_bytes_init{pool="CodeHeap 'non-profiled nmethods'",} 2555904.0 -# HELP jvm_memory_pool_collection_used_bytes Used bytes after last collection of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_used_bytes gauge -jvm_memory_pool_collection_used_bytes{pool="Tenured Gen",} 2.8136056E7 -jvm_memory_pool_collection_used_bytes{pool="Eden Space",} 0.0 -jvm_memory_pool_collection_used_bytes{pool="Survivor Space",} 2758792.0 -# HELP jvm_memory_pool_collection_committed_bytes Committed after last collection bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_committed_bytes gauge -jvm_memory_pool_collection_committed_bytes{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_collection_committed_bytes{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_collection_committed_bytes{pool="Survivor Space",} 1.7629184E7 -# HELP jvm_memory_pool_collection_max_bytes Max bytes after last collection of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_max_bytes gauge -jvm_memory_pool_collection_max_bytes{pool="Tenured Gen",} 5.621809152E9 -jvm_memory_pool_collection_max_bytes{pool="Eden Space",} 2.248671232E9 -jvm_memory_pool_collection_max_bytes{pool="Survivor Space",} 2.81083904E8 -# HELP jvm_memory_pool_collection_init_bytes Initial after last collection bytes of a given JVM memory pool. -# TYPE jvm_memory_pool_collection_init_bytes gauge -jvm_memory_pool_collection_init_bytes{pool="Tenured Gen",} 3.52321536E8 -jvm_memory_pool_collection_init_bytes{pool="Eden Space",} 1.41033472E8 -jvm_memory_pool_collection_init_bytes{pool="Survivor Space",} 1.7563648E7 -# HELP jvm_classes_loaded The number of classes that are currently loaded in the JVM -# TYPE jvm_classes_loaded gauge -jvm_classes_loaded 7378.0 -# HELP jvm_classes_loaded_total The total number of classes that have been loaded since the JVM has started execution -# TYPE jvm_classes_loaded_total counter -jvm_classes_loaded_total 7378.0 -# HELP jvm_classes_unloaded_total The total number of classes that have been unloaded since the JVM has started execution -# TYPE jvm_classes_unloaded_total counter -jvm_classes_unloaded_total 0.0 -# HELP jvm_info VM version info -# TYPE jvm_info gauge -jvm_info{runtime="OpenJDK Runtime Environment",vendor="Alpine",version="11.0.9+11-alpine-r1",} 1.0 -# HELP jvm_memory_pool_allocated_bytes_created Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously. -# TYPE jvm_memory_pool_allocated_bytes_created gauge -jvm_memory_pool_allocated_bytes_created{pool="Eden Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'profiled nmethods'",} 1.651077501657E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'non-profiled nmethods'",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Compressed Class Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Metaspace",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Tenured Gen",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="Survivor Space",} 1.651077501662E9 -jvm_memory_pool_allocated_bytes_created{pool="CodeHeap 'non-nmethods'",} 1.651077501662E9 diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_performance_results.png b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_performance_results.png Binary files differdeleted file mode 100644 index 67aa529f..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_performance_results.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_stability_results.png b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_stability_results.png Binary files differdeleted file mode 100644 index c849204f..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_stability_results.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_after_72h.png b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_after_72h.png Binary files differdeleted file mode 100644 index dafc7002..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_after_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_before_72h.png b/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_before_72h.png Binary files differdeleted file mode 100644 index 2e2e7574..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p-results/apex_top_before_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/apex-s3p.rst b/docs/development/devtools/testing/s3p/apex-s3p.rst deleted file mode 100644 index f756e4b5..00000000 --- a/docs/development/devtools/testing/s3p/apex-s3p.rst +++ /dev/null @@ -1,209 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _apex-s3p-label: - -.. toctree:: - :maxdepth: 2 - -Policy APEX PDP component -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Both the Stability and the Performance tests were executed in a full Policy Framework deployment in a VM. - -Setup Details -+++++++++++++ - -Deploying ONAP using OOM ------------------------- - -APEX-PDP along with all policy components are deployed as part of a full Policy Framework deployment. -At a minimum, the following components are needed: policy, mariadb-galera, prometheus and dmaap. - -The S3P tests utilise the ./run-s3p-tests script in the apex component. This will setup the microk8s environment, deploy -policy and prometheus, expose the services so they can be reached by JMeter, install JMeter and run the tests based on -the arguments provided. - -Set up policy-models-simulator ------------------------------- - -Policy-models-simulator is deployed to use the DMaaP simulator during policy execution. - Simulator configurations used are available in apex-pdp repository: - testsuites/apex-pdp-stability/src/main/resources/simulatorConfig/ - -The published port 30904 is used in JMeter for the DMaaP simulator. - -JMeter Tests ------------- - -Two APEX policies are executed in the APEX-PDP engine, and are triggered by multiple threads during the tests. -Both tests were run via jMeter. - - Stability test script is available in apex-pdp repository: - testsuites/apex-pdp-stability/src/main/resources/apexPdpStabilityTestPlan.jmx - - Performance test script is available in apex-pdp repository: - testsuites/performance/performance-benchmark-test/src/main/resources/apexPdpPerformanceTestPlan.jmx - -.. Note:: - Policy executions are validated in a stricter fashion during the tests. - There are test cases where up to 80 events are expected on the DMaaP topic. - DMaaP simulator is used to keep it simple and avoid any message pickup timing related issues. - -Stability Test of APEX-PDP -++++++++++++++++++++++++++ - -Test Plan ---------- - -The 72 hours stability test ran the following steps. - -Setup Phase -""""""""""" - -Policies are created and deployed to APEX-PDP during this phase. Only one thread is in action and this step is done only once. - -- **Create Policy onap.policies.apex.Simplecontrolloop** - creates the first APEX policy using policy/api component. - This is a sample policy used for PNF testing. -- **Create Policy onap.policies.apex.Example** - creates the second APEX policy using policy/api component. - This is a sample policy used for VNF testing. -- **Deploy Policies** - Deploy both the policies created to APEX-PDP using policy/pap component - -Main Phase -"""""""""" - -Once the policies are created and deployed to APEX-PDP by the setup thread, five threads execute the below tests for 72 hours. - -- **Healthcheck** - checks the health status of APEX-PDP -- **Prometheus Metrics** - checks that APEX-PDP is exposing prometheus metrics -- **Test Simplecontrolloop policy success case** - Send a trigger event to *unauthenticated.DCAE_CL_OUTPUT* DMaaP topic. - If the policy execution is successful, 3 different notification events are sent to *APEX-CL-MGT* topic by each one of the 5 threads. - So, it is checked if 15 notification messages are received in total on *APEX-CL-MGT* topic with the relevant messages. -- **Test Simplecontrolloop policy failure case** - Send a trigger event with invalid pnfName to *unauthenticated.DCAE_CL_OUTPUT* DMaaP topic. - The policy execution is expected to fail due to AAI failure response. 2 notification events are expected on *APEX-CL-MGT* topic by a thread in this case. - It is checked if 10 notification messages are received in total on *APEX-CL-MGT* topic with the relevant messages. -- **Test Example policy success case** - Send a trigger event to *unauthenticated.DCAE_POLICY_EXAMPLE_OUTPUT* DMaaP topic. - If the policy execution is successful, 4 different notification events are sent to *APEX-CL-MGT* topic by each one of the 5 threads. - So, it is checked if 20 notification messages are received in total on *APEX-CL-MGT* topic with the relevant messages. -- **Test Example policy failure case** - Send a trigger event with invalid vnfName to *unauthenticated.DCAE_POLICY_EXAMPLE_OUTPUT* DMaaP topic. - The policy execution is expected to fail due to AAI failure response. 2 notification events are expected on *APEX-CL-MGT* topic by a thread in this case. - So, it is checked if 10 notification messages are received in total on *APEX-CL-MGT* topic with the relevant messages. -- **Clean up DMaaP notification topic** - DMaaP notification topic which is *APEX-CL-MGT* is cleaned up after each test to make sure that one failure doesn't lead to cascading errors. - - -Teardown Phase -"""""""""""""" - -Policies are undeployed from APEX-PDP and deleted during this phase. -Only one thread is in action and this step is done only once after the Main phase is complete. - -- **Undeploy Policies** - Undeploy both the policies from APEX-PDP using policy/pap component -- **Delete Policy onap.policies.apex.Simplecontrolloop** - delete the first APEX policy using policy/api component. -- **Delete Policy onap.policies.apex.Example** - delete the second APEX policy also using policy/api component. - -Test Configuration ------------------- - -The following steps can be used to configure the parameters of test plan. - -- **HTTP Authorization Manager** - used to store user/password authentication details. -- **HTTP Header Manager** - used to store headers which will be used for making HTTP requests. -- **User Defined Variables** - used to store following user defined parameters. - -=================== =============================================================================== - **Name** **Description** -=================== =============================================================================== - HOSTNAME IP Address or host name to access the components - PAP_PORT Port number of PAP for making REST API calls such as deploy/undeploy of policy - API_PORT Port number of API for making REST API calls such as create/delete of policy - APEX_PORT Port number of APEX for making REST API calls such as healthcheck/metrics - SIM_HOST IP Address or hostname running policy-models-simulator - DMAAP_PORT Port number of DMaaP simulator for making REST API calls such as reading notification events - wait Wait time if required after a request (in milliseconds) - threads Number of threads to run test cases in parallel - threadsTimeOutInMs Synchronization timer for threads running in parallel (in milliseconds) -=================== =============================================================================== - -Run Test --------- - -The test was run in the background via "nohup", to prevent it from being interrupted. - -Test Results ------------- - -**Summary** - -Stability test plan was triggered for 72 hours. There were no failures during the 72 hours test. - - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== -112245 99.47 % 0.53 % 2.309 sec. -======================= ================= ================== ================================== - -**JMeter Screenshot** - -.. image:: apex-s3p-results/apex_stability_results.png - -.. Note:: - These results show a huge dip in the number of requests compared to the previous release of Apex-PDP> - Further investigation and improvement is needed in the coming release. - -Performance Test of APEX-PDP -++++++++++++++++++++++++++++ - -Introduction ------------- - -Performance test of APEX-PDP is done similar to the stability test, but in a more extreme manner using higher thread count. - -Setup Details -------------- - -The performance test is performed on a similar setup as Stability test. - - -Test Plan ---------- - -Performance test plan is the same as the stability test plan above except for the few differences listed below. - -- Increase the number of threads used in the Main Phase from 5 to 20. -- Reduce the test time to 2 hours. - -Run Test --------- - -The test was run in the background via "nohup", to prevent it from being interrupted. - -Test Results ------------- - -Test results are shown as below. - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== -12486 99.32 % 0.68 % 576.64 ms -======================= ================= ================== ================================== - -**JMeter Screenshot** - -.. image:: apex-s3p-results/apex_performance_results.png - -.. Note:: - These results show a huge dip in the number of requests compared to the previous release of Apex-PDP> - Further investigation and improvement is needed in the coming release. - -Summary -+++++++ - -Multiple policies were executed in a multi-threaded fashion for both stability and performance tests. -Both tests showed a dip in performance and stability. diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_J.png Binary files differdeleted file mode 100644 index 6d6033ae..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_performance_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_performance_J.png Binary files differdeleted file mode 100644 index aa2fd621..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-distribution_performance_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_J.png Binary files differdeleted file mode 100644 index aa40dd94..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_performance_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_performance_J.png Binary files differdeleted file mode 100644 index 4ba5dd75..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-response-time-overtime_performance_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-1_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-1_J.png Binary files differdeleted file mode 100644 index 4edc144a..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-1_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-2_J.png b/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-2_J.png Binary files differdeleted file mode 100644 index 4314809c..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api-s3p-jm-2_J.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_after_72h.png b/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_after_72h.png Binary files differdeleted file mode 100644 index 3ecef541..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_after_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_before_72h.png b/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_before_72h.png Binary files differdeleted file mode 100644 index 927ab6a1..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p-results/api_stat_before_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/api-s3p.rst b/docs/development/devtools/testing/s3p/api-s3p.rst deleted file mode 100644 index c34ec06e..00000000 --- a/docs/development/devtools/testing/s3p/api-s3p.rst +++ /dev/null @@ -1,210 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _api-s3p-label: - -.. toctree:: - :maxdepth: 2 - -Policy API S3P Tests -#################### - - -72 Hours Stability Test of Policy API -+++++++++++++++++++++++++++++++++++++ - -Introduction ------------- - -The 72 hour stability test of policy API has the goal of verifying the stability of running policy design API REST -service by ingesting a steady flow of transactions in a multi-threaded fashion to -simulate multiple clients' behaviours. -All the transaction flows are initiated from a test client server running JMeter for the duration of 72 hours. - -Setup Details -------------- - -The stability test was performed on a default Policy docker installation in the Nordix Lab environment. -JMeter was installed on a separate VM to inject the traffic defined in the -`API stability script -<https://git.onap.org/policy/api/tree/testsuites/stability/src/main/resources/testplans/policy_api_stability.jmx>`_ -with the following command: - -.. code-block:: bash - - nohup apache-jmeter-5.6.2/bin/jmeter -n -t policy_api_stability.jmx -l stabilityTestResultsPolicyApi.jtl & - -The test was run in the background via “nohup” and “&”, to prevent it from being interrupted. - -Test Plan ---------- - -The 72+ hours stability test will be running the following steps sequentially -in multi-threaded loops. Thread number is set to 5 to simulate 5 API clients' -behaviours (they can be calling the same policy CRUD API simultaneously). -Each thread creates a different version of the policy types and policies to not -interfere with one another while operating simultaneously. The point version -of each entity is set to the running thread number. - -**Setup Thread (will be running only once)** - -- Get policy-api Healthcheck -- Get Preloaded Policy Types - -**API Test Flow (5 threads running the same steps in the same loop)** - -- Create a new Monitoring Policy Type with Version 6.0.# -- Create a new Monitoring Policy Type with Version 7.0.# -- Create a new Optimization Policy Type with Version 6.0.# -- Create a new Guard Policy Type with Version 6.0.# -- Create a new Native APEX Policy Type with Version 6.0.# -- Create a new Native Drools Policy Type with Version 6.0.# -- Create a new Native XACML Policy Type with Version 6.0.# -- Get All Policy Types -- Get All Versions of the new Monitoring Policy Type -- Get Version 6.0.# of the new Monitoring Policy Type -- Get Version 6.0.# of the new Optimization Policy Type -- Get Version 6.0.# of the new Guard Policy Type -- Get Version 6.0.# of the new Native APEX Policy Type -- Get Version 6.0.# of the new Native Drools Policy Type -- Get Version 6.0.# of the new Native XACML Policy Type -- Get the Latest Version of the New Monitoring Policy Type -- Create Version 6.0.# of Node Template -- Create Monitoring Policy Ver 6.0.# w/Monitoring Policy Type Ver 6.0.# -- Create Monitoring Policy Ver 7.0.# w/Monitoring Policy Type Ver 7.0.# -- Create Optimization Policy Ver 6.0.# w/Optimization Policy Type Ver 6.0.# -- Create Guard Policy Ver 6.0.# w/Guard Policy Type Ver 6.0.# -- Create Native APEX Policy Ver 6.0.# w/Native APEX Policy Type Ver 6.0.# -- Create Native Drools Policy Ver 6.0.# w/Native Drools Policy Type Ver 6.0.# -- Create Native XACML Policy Ver 6.0.# w/Native XACML Policy Type Ver 6.0.# -- Create Version 6.0.# of PNF Example Policy with Metadata -- Get Node Template -- Get All TCA Policies -- Get All Versions of Monitoring Policy Type -- Get Version 6.0.# of the new Monitoring Policy -- Get Version 6.0.# of the new Optimization Policy -- Get Version 6.0.# of the new Guard Policy -- Get Version 6.0.# of the new Native APEX Policy -- Get Version 6.0.# of the new Native Drools Policy -- Get Version 6.0.# of the new Native XACML Policy -- Get the Latest Version of the new Monitoring Policy -- Delete Version 6.0.# of the new Monitoring Policy -- Delete Version 7.0.# of the new Monitoring Policy -- Delete Version 6.0.# of the new OptimizationPolicy -- Delete Version 6.0.# of the new Guard Policy -- Delete Version 6.0.# of the new Native APEX Policy -- Delete Version 6.0.# of PNF Example Policy having Metadata -- Delete Version 6.0.# of the new Native Drools Policy -- Delete Version 6.0.# of the new Native XACML Policy -- Delete Monitoring Policy Type with Version 6.0.# -- Delete Monitoring Policy Type with Version 7.0.# -- Delete Optimization Policy Type with Version 6.0.# -- Delete Guard Policy Type with Version 6.0.# -- Delete Native APEX Policy Type with Version 6.0.# -- Delete Native Drools Policy Type with Version 6.0.# -- Delete Native XACML Policy Type with Version 6.0.# -- Delete Node Template -- Get Policy Metrics - -**TearDown Thread (will only be running after API Test Flow is completed)** - -- Get policy-api Healthcheck -- Get Preloaded Policy Types - - -Test Results ------------- - -**Summary** - -No errors were found during the 72 hours of the Policy API stability run. -The load was performed against a non-tweaked Policy docker deployment. - -**Test Statistics** - -======================= ============= =========== =============================== =============================== =============================== -**Total # of requests** **Success %** **TPS** **Avg. time taken per request** **Min. time taken per request** **Max. time taken per request** -======================= ============= =========== =============================== =============================== =============================== - 730178 100% 2.8 1766 ms 127 ms 107029 ms -======================= ============= =========== =============================== =============================== =============================== - -.. image:: api-s3p-results/api-s3p-jm-1_J.png - -**JMeter Results** - -The following graphs show the response time distributions. The "Get Policy Types" API calls are the most expensive calls that -average a 8.6 seconds plus response time. - -.. image:: api-s3p-results/api-response-time-distribution_J.png -.. image:: api-s3p-results/api-response-time-overtime_J.png - -**Memory and CPU usage** - -The memory and CPU usage can be monitored by running "docker stats" command in the policy-api container. -A snapshot is taken before and after test execution to monitor the changes in resource utilization. - -Memory and CPU usage before test execution: - -.. image:: api-s3p-results/api_stat_before_72h.png - -Memory and CPU usage after test execution: - -.. image:: api-s3p-results/api_stat_after_72h.png - - -Performance Test of Policy API -++++++++++++++++++++++++++++++ - -Introduction ------------- - -Performance test of policy-api has the goal of testing the min/avg/max processing time and rest call throughput for all the requests when the number of requests are large enough to saturate the resource and find the bottleneck. - -Setup Details -------------- - -The performance test was performed on a default Policy docker installation in the Nordix Lab environment. -JMeter was installed on a separate VM to inject the traffic defined in the -`API performance script -<https://git.onap.org/policy/api/tree/testsuites/performance/src/main/resources/testplans/policy_api_performance.jmx>`_ -with the following command: - -.. code-block:: bash - - nohup apache-jmeter-5.6.2/bin/jmeter -n -t policy_api_performance.jmx -l performanceTestResultsPolicyApi.jtl & - -The test was run in the background via “nohup” and “&”, to prevent it from being interrupted. - -Test Plan ---------- - -Performance test plan is the same as stability test plan above. -Only differences are, in performance test, we increase the number of threads up to 20 (simulating 20 users' behaviours at the same time) whereas reducing the test time down to 2.5 hours. - -Run Test --------- - -Running/Triggering performance test will be the same as stability test. That is, launch JMeter pointing to corresponding *.jmx* test plan. The *API_HOST* and *API_PORT* are already set up in *.jmx*. - -**Test Statistics** - -======================= ============= =========== =============================== =============================== =============================== -**Total # of requests** **Success %** **TPS** **Avg. time taken per request** **Min. time taken per request** **Max. time taken per request** -======================= ============= =========== =============================== =============================== =============================== - 56740 100% 6.3 6340 ms 72 ms 65557 ms -======================= ============= =========== =============================== =============================== =============================== - -.. image:: api-s3p-results/api-s3p-jm-2_J.png - -Test Results ------------- - -The following graphs show the response time distributions. - -.. image:: api-s3p-results/api-response-time-distribution_performance_J.png -.. image:: api-s3p-results/api-response-time-overtime_performance_J.png - - - - diff --git a/docs/development/devtools/testing/s3p/clamp-s3p-results/Stability_after_stats.png b/docs/development/devtools/testing/s3p/clamp-s3p-results/Stability_after_stats.png Binary files differdeleted file mode 100644 index e53641f5..00000000 --- a/docs/development/devtools/testing/s3p/clamp-s3p-results/Stability_after_stats.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_performance_jmeter.png b/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_performance_jmeter.png Binary files differdeleted file mode 100644 index 38b6c000..00000000 --- a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_performance_jmeter.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_jmeter.png b/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_jmeter.png Binary files differdeleted file mode 100644 index bd9d0e84..00000000 --- a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_jmeter.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_table.png b/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_table.png Binary files differdeleted file mode 100644 index 94402c8f..00000000 --- a/docs/development/devtools/testing/s3p/clamp-s3p-results/acm_stability_table.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/clamp-s3p.rst b/docs/development/devtools/testing/s3p/clamp-s3p.rst deleted file mode 100644 index 2cf3e236..00000000 --- a/docs/development/devtools/testing/s3p/clamp-s3p.rst +++ /dev/null @@ -1,224 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _acm-s3p-label: - -.. toctree:: - :maxdepth: 2 - -Policy Clamp Automation Composition -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Both the Performance and the Stability tests were executed by performing requests -against acm components installed as docker images in local environment. These tests we all -performed on a Ubuntu VM with 32GB of memory, 16 CPU and 50GB of disk space. - - -ACM Deployment -++++++++++++++ - -In an effort to allow the execution of the s3p tests to be as close to automatic as possible, -a script will be executed that will perform the following: - -- Install of a microk8s kubernetes environment -- Bring up the policy components -- Checks that the components are successfully up and running before proceeding -- Install Java 17 -- Install Jmeter locally and configure it -- Specify whether you want to run stability or performance tests - - -The remainder of this document outlines how to run the tests and the test results - -Common Setup -++++++++++++ -The common setup for performance and stability tests is now automated - being carried out by a script in- **testsuites/run-s3p-test.sh**. - -Clone the policy-clamp repo to access the test scripts - -.. code-block:: sh - - git clone https://gerrit.onap.org/r/policy/clamp - -Stability Test of acm components -++++++++++++++++++++++++++++++++ - -Test Plan ---------- -The 72 hours stability test ran the following steps sequentially in a single threaded loop. - -- **Commission Automation Composition Definitions** - Commissions the ACM Definitions -- **Register Participants** - Registers the presence of participants in the acm database -- **Prime AC definition** - Primes the AC Definition to the participants -- **Instantiate acm** - Instantiate the acm instance -- **DEPLOY the ACM instance** - change the state of the acm to DEPLOYED -- **Check instance state** - check the current state of instance and that it is DEPLOYED -- **UNDEPLOY the ACM instance** - change the state of the ACM to UNDEPLOYED -- **Check instance state** - check the current state of instance and that it is UNDEPLOYED -- **Delete instance** - delete the instance from all participants and ACM db -- **DEPRIME ACM definitions** - DEPRIME ACM definitions from participants -- **Delete ACM Definition** - delete the ACM definition on runtime - -This runs for 72 hours. Test results are present in the **testsuites/automated-performance/s3pTestResults.jtl** -directory. Logs are present for jmeter in **testsuites/automated-performance/jmeter.log** and -**testsuites/automated-performance/nohup.out** - -Run Test --------- - -The code in the setup section also serves to run the tests. Just one execution needed to do it all. - -.. code-block:: sh - - ./run-s3p-test.sh run stability - -Once the test execution is completed, the results are present in the **automate-performance/s3pTestResults.jtl** file. - -This file can be imported into the Jmeter GUI for visualization. The below results are tabulated from the GUI. - -Test Results ------------- - -**Summary** - -Stability test plan was triggered for 72 hours. - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== -261852 100.00 % 0.00 % 387.126 ms -======================= ================= ================== ================================== - -**ACM component Setup** - -============================================== ================================================================== ==================== -**NAME** **IMAGE** **PORT** -============================================== ================================================================== ==================== - zookeeper-deployment-7ff87c7fcc-ptkwv confluentinc/cp-zookeeper:latest 2181/TCP - kafka-deployment-5c87d497b-2jv27 confluentinc/cp-kafka:latest 9092/TCP - policy-models-simulator-6947667bdc-v4czs nexus3.onap.org:10001/onap/policy-models-simulator:latest 3904:30904/TCP - prometheus-f66f97b6-rknvp nexus3.onap.org:10001/prom/prometheus:latest 9090:30909/TCP - mariadb-galera-0 nexus3.onap.org:10001/bitnami/mariadb-galera:10.5.8 3306/TCP - policy-apex-pdp-0 nexus3.onap.org:10001/onap/policy-apex-pdp:3.1.3-SNAPSHOT 6969:30001/TCP - policy-clamp-ac-http-ppnt-7d747b5d98-4phjf nexus3.onap.org:10001/onap/policy-clamp-ac-http-ppnt7.1.3-SNAPSHOT 8084/TCP - policy-clamp-ac-sim-ppnt-97f487577-4p7ks nexus3.onap.org:10001/onap/policy-clamp-ac-sim-ppnt7.1.3-SNAPSHOT 6969/TCP - policy-clamp-ac-k8s-ppnt-6bbd86bbc6-csknn nexus3.onap.org:10001/onap/policy-clamp-ac-k8s-ppnt7.1.3-SNAPSHOT 8083:30443/TCP - policy-clamp-ac-pf-ppnt-5fcbbcdb6c-twkxw nexus3.onap.org:10001/onap/policy-clamp-ac-pf-ppnt7.1.3-SNAPSHOT 6969:30008/TCP - policy-clamp-runtime-acm-66b5d6b64-4gnth nexus3.onap.org:10001/onap/policy-clamp-runtime-acm7.1.3-SNAPSHOT 6969:30007/TCP - policy-pap-f7899d4cd-7m898 nexus3.onap.org:10001/onap/policy-pap:3.1.3-SNAPSHOT 6969:30003/TCP - policy-api-7f7d995b4-ckb84 nexus3.onap.org:10001/onap/policy-api:3.1.3-SNAPSHOT 6969:30002/TCP -============================================== ================================================================== ==================== - - - -.. Note:: - - .. container:: paragraph - - There were no failures during the 72 hours test. - -**JMeter Screenshot** - -.. image:: clamp-s3p-results/acm_stability_jmeter.png - -**JMeter Screenshot** - -.. image:: clamp-s3p-results/acm_stability_table.png - - -Performance Test of acm components -++++++++++++++++++++++++++++++++++ - -Introduction ------------- - -Performance test of acm components has the goal of testing the min/avg/max processing time and rest call throughput for all the requests with multiple requests at the same time. - -Setup Details -------------- - -We can setup the environment and execute the tests like this from the **clamp/testsuites** directory - -.. code-block:: sh - - ./run-s3p-test.sh run performance - -Test results are present in the **testsuites/automate-performance/s3pTestResults.jtl** -directory. Logs are present for jmeter in **testsuites/automate-performance/jmeter.log** and -**testsuites/automated-performance/nohup.out** - -Test Plan ---------- - -The Performance test ran the following steps sequentially by 5 threaded users. Any user will create 100 compositions/instances. - -- **SetUp** - SetUp Thread Group - - **Register Participants** - Registers the presence of participants in the acm database -- **AutomationComposition Test Flow** - flow by 5 threaded users. - - **Creation and Deploy** - Creates 100 Compositions and Instances - - **Commission Automation Composition Definitions** - Commissions the ACM Definitions - - **Prime AC definition** - Primes the AC Definition to the participants - - **Instantiate acm** - Instantiate the acm instance - - **DEPLOY the ACM instance** - change the state of the acm to DEPLOYED - - **Check instance state** - check the current state of instance and that it is DEPLOYED - - **Get participants** - fetch all participants - - **Get compositions** - fetch all compositions - - **Undeploy and Delete** - Deletes instances and Compositions created before - - **UNDEPLOY the ACM instance** - change the state of the ACM to UNDEPLOYED - - **Check instance state** - check the current state of instance and that it is UNDEPLOYED - - **Delete instance** - delete the instance from all participants and ACM db - - **DEPRIME ACM definitions** - DEPRIME ACM definitions from participants - - **Delete ACM Definition** - delete the ACM definition on runtime - -Run Test --------- - -The code in the setup section also serves to run the tests. Just one execution needed to do it all. - -.. code-block:: sh - - ./run-s3p-test.sh run performance - -Once the test execution is completed, the results are present in the **automate-performance/s3pTestResults.jtl** file. - -This file can be imported into the Jmeter GUI for visualization. The below results are tabulated from the Jmeter GUI. - -Test Results ------------- - -Test results are shown as below. - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== -8624 100 % 0.00 % 1296.8 ms -======================= ================= ================== ================================== - -**ACM component Setup** - -============================================== ================================================================== ==================== -**NAME** **IMAGE** **PORT** -============================================== ================================================================== ==================== - zookeeper-deployment-7ff87c7fcc-5svgw confluentinc/cp-zookeeper:latest 2181/TCP - kafka-deployment-5c87d497b-hmbhc confluentinc/cp-kafka:latest 9092/TCP - policy-models-simulator-6947667bdc-crcwq nexus3.onap.org:10001/onap/policy-models-simulator:latest 3904:30904/TCP - prometheus-f66f97b6-24dvx nexus3.onap.org:10001/prom/prometheus:latest 9090:30909/TCP - mariadb-galera-0 nexus3.onap.org:10001/bitnami/mariadb-galera:10.5.8 3306/TCP - policy-apex-pdp-0 nexus3.onap.org:10001/onap/policy-apex-pdp:3.1.3-SNAPSHOT 6969:30001/TCP - policy-clamp-ac-sim-ppnt-97f487577-pn56t nexus3.onap.org:10001/onap/policy-clamp-ac-sim-ppnt7.1.3-SNAPSHOT 6969/TCP - policy-clamp-ac-http-ppnt-7d747b5d98-qjjlv nexus3.onap.org:10001/onap/policy-clamp-ac-http-ppnt7.1.3-SNAPSHOT 8084/TCP - policy-clamp-ac-k8s-ppnt-6bbd86bbc6-ffbz2 nexus3.onap.org:10001/onap/policy-clamp-ac-k8s-ppnt7.1.3-SNAPSHOT 8083:30443/TCP - policy-clamp-ac-pf-ppnt-5fcbbcdb6c-vmsnv nexus3.onap.org:10001/onap/policy-clamp-ac-pf-ppnt7.1.3-SNAPSHOT 6969:30008/TCP - policy-clamp-runtime-acm-66b5d6b64-6vjl5 nexus3.onap.org:10001/onap/policy-clamp-runtime-acm7.1.3-SNAPSHOT 6969:30007/TCP - policy-pap-f7899d4cd-8sjk9 nexus3.onap.org:10001/onap/policy-pap:3.1.3-SNAPSHOT 6969:30003/TCP - policy-api-7f7d995b4-dktdw nexus3.onap.org:10001/onap/policy-api:3.1.3-SNAPSHOT 6969:30002/TCP -============================================== ================================================================== ==================== - -**JMeter Screenshot** - -.. image:: clamp-s3p-results/acm_performance_jmeter.png diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-jmeter-testcases.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-jmeter-testcases.png Binary files differdeleted file mode 100644 index 1159bca3..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-jmeter-testcases.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-visualvm-snapshot.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-visualvm-snapshot.png Binary files differdeleted file mode 100644 index b9b175a4..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/distribution-visualvm-snapshot.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-monitor.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-monitor.png Binary files differdeleted file mode 100644 index d535c4aa..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-monitor.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-statistics.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-statistics.png Binary files differdeleted file mode 100644 index a2caab4e..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-statistics.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threads.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threads.png Binary files differdeleted file mode 100644 index 9b6c3d23..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threads.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threshold.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threshold.png Binary files differdeleted file mode 100644 index 6a26a09e..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/performance-threshold.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-monitor.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-monitor.png Binary files differdeleted file mode 100644 index cbb675ba..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-monitor.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-statistics.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-statistics.png Binary files differdeleted file mode 100644 index ae1853f9..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-statistics.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threads.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threads.png Binary files differdeleted file mode 100644 index 67da4a62..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threads.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threshold.png b/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threshold.png Binary files differdeleted file mode 100644 index 5aa6cc64..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p-results/stability-threshold.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/distribution-s3p.rst b/docs/development/devtools/testing/s3p/distribution-s3p.rst deleted file mode 100644 index 40ade31c..00000000 --- a/docs/development/devtools/testing/s3p/distribution-s3p.rst +++ /dev/null @@ -1,238 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _distribution-s3p-label: - -Policy Distribution component -############################# - -72h Stability and 4h Performance Tests of Distribution -++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Common Setup ------------- - -The common setup for performance and stability tests is now automated - being carried out by a script in- **testsuites/run-sc3-test.sh**. - -Clone the policy-distribution repo to access the test scripts - -.. code-block:: bash - - git clone https://gerrit.onap.org/r/policy/distribution - -**The following common steps are carried out by the scripts** - -* Updates the repo package lists for apt -* Installs Java 17 open jdk -* Installs docker -* Installs docker-compose -* Retrieves version information in environment variables from th release info file -* Builds relevant images including the pdp simulator -* Triggers docker compose to bring up containers required for the testing -* Installs jmeter -* Installs visualvm (and starts it in a GUI environment) -* Configures permissions for monitoring -* Starts jstatd -* Waits for containers to come up -* Runs either stability or performance tests for a specified duration depending on the arguments specified - -For example, the below runs performance tests for 2 hours. Start from the root directory of policy distribution - -.. code-block:: bash - - cd testsuites - ./run-s3p-test.sh performance 7200 - -.. note:: - The containers on this docker-compose are running with HTTP configuration. For HTTPS, ports - and configurations will need to be changed, as well certificates and keys must be generated - for security. - -The script will load up the visualvm GUI on your virtual machine. You will need to manually connect -it to the distribution JMX port. - -Connect to Distribution JMX Port. - - 1. On the visualvm toolbar, click on "Add JMX Connection" - 2. Enter localhost as the IP address and Port 9090. This is the JMX port exposed by the - distribution container - 3. Double click on the newly added nodes under "Local" to start monitoring CPU, Memory & GC. - -Example Screenshot of visualVM - -.. image:: distribution-s3p-results/distribution-visualvm-snapshot.png - -Teardown Docker - -Once the testing is finished, you can tear down the docker setup from **./testsuites** with: - -.. code-block:: bash - - docker-compose -f stability/src/main/resources/setup/docker-compose.yml down - -Stability Test of Policy Distribution -+++++++++++++++++++++++++++++++++++++ - -Introduction ------------- - -The 72 hour Stability Test for policy distribution has the goal of introducing a steady flow of -transactions initiated from a test client server running JMeter. The policy distribution is -configured with a special FileSystemReception plugin to monitor a local directory for newly added -csar files to be processed by itself. The input CSAR will be added/removed by the test client -(JMeter) and the result will be pulled from the backend (PAP and PolicyAPI) by the test client -(JMeter). - -The test will be performed in an environment where Jmeter will continuously add/remove a test csar -into the special directory where policy distribution is monitoring and will then get the processed -results from PAP and PolicyAPI to verify the successful deployment of the policy. The policy will -then be undeployed and the test will loop continuously until 72 hours have elapsed. - - -Test Plan Sequence ------------------- - -The 72h stability test will run the following steps sequentially in a single threaded loop. - -- **Delete Old CSAR** - Checks if CSAR already exists in the watched directory, if so it deletes it -- **Add CSAR** - Adds CSAR to the directory that distribution is watching -- **Get Healthcheck** - Ensures Healthcheck is returning 200 OK -- **Get Metrics** - Ensures Metrics is returning 200 OK -- **Assert PDP Group Query** - Checks that PDPGroupQuery contains the deployed policy -- **Assert PoliciesDeployed** - Checks that the policy is deployed -- **Undeploy/Delete Policy** - Undeploys and deletes the Policy for the next loop -- **Assert PDP Group Query for Deleted Policy** - Ensures the policy has been removed and does not exist - -The following steps can be used to configure the parameters of the test plan. - -- **HTTP Authorization Manager** - used to store user/password authentication details. -- **HTTP Header Manager** - used to store headers which will be used for making HTTP requests. -- **User Defined Variables** - used to store following user defined parameters. - -========== =============================================== - **Name** **Description** -========== =============================================== - PAP_HOST IP Address or host name of PAP component - PAP_PORT Port number of PAP for making REST API calls - API_HOST IP Address or host name of API component - API_PORT Port number of API for making REST API calls - DURATION Duration of Test -========== =============================================== - -Screenshot of Distribution stability test plan - -.. image:: distribution-s3p-results/distribution-jmeter-testcases.png - - -Running the Test Plan ---------------------- - -The main script takes care of everything. To run the 72 hour stability tests do as follows - -.. code-block:: bash - - cd testsuites - ./run-s3p-test.sh stability 259200 - -* visualvm produces the monitor and threads - we can screenshot those and add them to the test results -* A jmeter .jtl file is produced by the run - it is called distribution-stability.jtl -* The file can be imported into the jmeter GUI to view statistics -* The application performance index table can be produced with jmeter on the cli as below:ls - -.. code-block:: bash - - jmeter -n -t your_test_plan.jmx -l test_results.jtl -e -o report_directory - -Test Results ------------- - -**Summary** - -- Stability test plan was triggered for 72 hours. -- No errors were reported - -**Test Statistics** - -.. image:: distribution-s3p-results/stability-statistics.png -.. image:: distribution-s3p-results/stability-threshold.png - -**VisualVM Screenshots** - -.. image:: distribution-s3p-results/stability-monitor.png -.. image:: distribution-s3p-results/stability-threads.png - - -Performance Test of Policy Distribution -+++++++++++++++++++++++++++++++++++++++ - -Introduction ------------- - -The 4h Performance Test of Policy Distribution has the goal of testing the min/avg/max processing -time and rest call throughput for all the requests when the number of requests are large enough to -saturate the resource and find the bottleneck. - -It also tests that distribution can handle multiple policy CSARs and that these are deployed within -60 seconds consistently. - - -Setup Details -------------- - -The performance test is based on the same setup as the distribution stability tests. This setup is done by the main -**run-s3p-test.sh** script - - -Test Plan Sequence ------------------- - -Performance test plan is different from the stability test plan. - -- Instead of handling one policy csar at a time, multiple csar's are deployed within the watched - folder at the exact same time. -- We expect all policies from these csar's to be deployed within 60 seconds. -- There are also multithreaded tests running towards the healthcheck and statistics endpoints of - the distribution service. - - -Running the Test Plan ---------------------- - -The main script takes care of everything. To run the 4 hour performance tests do as follows - -.. code-block:: bash - - cd testsuites - ./run-s3p-test.sh performance 14400 - -* visualvm produces the monitor and threads - we can screenshot those and add them to the test results -* A jmeter .jtl file is produced by the run - it is called distribution-performance.jtl -* The file can be imported into the jmeter GUI to view statistics -* The application performance index table can be produced with jmeter on the cli as below: - -.. code-block:: bash - - jmeter -n -t your_test_plan.jmx -l test_results.jtl -e -o report_directory - -This produced html pages where statistics tables can be seen and added to the results. - -Test Results ------------- - -**Summary** - -- Performance test plan was triggered for 4 hours. -- No errors were reported - -**Test Statistics** - -.. image:: distribution-s3p-results/performance-statistics.png -.. image:: distribution-s3p-results/performance-threshold.png - -**VisualVM Screenshots** - -.. image:: distribution-s3p-results/performance-monitor.png -.. image:: distribution-s3p-results/performance-threads.png - -End of document diff --git a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-1.png b/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-1.png Binary files differdeleted file mode 100644 index 3c1e06f7..00000000 --- a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-1.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-2.png b/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-2.png Binary files differdeleted file mode 100644 index 7e124716..00000000 --- a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-2.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-3.png b/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-3.png Binary files differdeleted file mode 100644 index 50f2c148..00000000 --- a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-3.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-4.png b/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-4.png Binary files differdeleted file mode 100644 index 369d1f33..00000000 --- a/docs/development/devtools/testing/s3p/drools-s3p-results/s3p-drools-4.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/drools-s3p.rst b/docs/development/devtools/testing/s3p/drools-s3p.rst deleted file mode 100644 index 88f601bd..00000000 --- a/docs/development/devtools/testing/s3p/drools-s3p.rst +++ /dev/null @@ -1,74 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _drools-s3p-label: - -.. toctree:: - :maxdepth: 2 - -Policy Drools PDP component -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Both the Performance and the Stability tests were executed against an ONAP installation in the Policy tenant -in the UNH lab, from the admin VM running the jmeter tool to inject the load. - -General Setup -************* - -Agent VMs in this lab have the following configuration: - -- 16GB RAM -- 8 VCPU - -Jmeter is run from the admin VM. - -The drools-pdp container uses the JVM memory and CPU settings from the default OOM installation. - -Other ONAP components exercised during the stability tests were: - -- Policy XACML PDP to process guard queries for each transaction. -- DMaaP to carry PDP-D and jmeter initiated traffic to complete transactions. -- Policy API to create (and delete at the end of the tests) policies for each - scenario under test. -- Policy PAP to deploy (and undeploy at the end of the tests) policies for each scenario under test. -- XACML PDP Stability test was running at the same time. - -The following components are simulated during the tests. - -- SDNR. - -Stability Test of Policy PDP-D -****************************** - -PDP-D performance -================= - -The tests focused on the following use cases running in parallel: - -- vCPE -- SON O1 -- SON A1 - -Three threads ran in parallel, one for each scenario. The transactions were initiated -by each jmeter thread group. Each thread initiated a transaction, monitored the transaction, and -started the next one 250 ms. later. - -The results are illustrated on the following graphs: - -.. image:: drools-s3p-results/s3p-drools-1.png -.. image:: drools-s3p-results/s3p-drools-2.png -.. image:: drools-s3p-results/s3p-drools-3.png - - -Commentary -========== - -There is around 1% unexpected failures during the 72-hour run. This can also be seen in the -final output of jmeter: - -.. code-block:: bash - - summary = 4751546 in 72:00:37 = 18.3/s Avg: 150 Min: 0 Max: 15087 Err: 47891 (1.01%) - -Sporadic database errors have been observed and seem related to the 1% failure percentage rate. diff --git a/docs/development/devtools/testing/s3p/images/workflow-results.png b/docs/development/devtools/testing/s3p/images/workflow-results.png Binary files differnew file mode 100644 index 00000000..d287754a --- /dev/null +++ b/docs/development/devtools/testing/s3p/images/workflow-results.png diff --git a/docs/development/devtools/testing/s3p/images/workflow-test-result.png b/docs/development/devtools/testing/s3p/images/workflow-test-result.png Binary files differnew file mode 100644 index 00000000..d192205d --- /dev/null +++ b/docs/development/devtools/testing/s3p/images/workflow-test-result.png diff --git a/docs/development/devtools/testing/s3p/images/workflows.png b/docs/development/devtools/testing/s3p/images/workflows.png Binary files differnew file mode 100644 index 00000000..7b05e22d --- /dev/null +++ b/docs/development/devtools/testing/s3p/images/workflows.png diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_after_72h.txt b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_after_72h.txt deleted file mode 100644 index 1851bf63..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_after_72h.txt +++ /dev/null @@ -1,521 +0,0 @@ -# HELP hikaricp_connections_min Min connections -# TYPE hikaricp_connections_min gauge -hikaricp_connections_min{pool="HikariPool-1",} 10.0 -# HELP tomcat_sessions_created_sessions_total -# TYPE tomcat_sessions_created_sessions_total counter -tomcat_sessions_created_sessions_total 3.0 -# HELP disk_total_bytes Total space for path -# TYPE disk_total_bytes gauge -disk_total_bytes{path="/opt/app/policy/pap/bin/.",} 1.0386530304E11 -# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine -# TYPE jvm_classes_loaded_classes gauge -jvm_classes_loaded_classes 20615.0 -# HELP hikaricp_connections_usage_seconds Connection usage time -# TYPE hikaricp_connections_usage_seconds summary -hikaricp_connections_usage_seconds_count{pool="HikariPool-1",} 321133.0 -hikaricp_connections_usage_seconds_sum{pool="HikariPool-1",} 45213.218 -# HELP hikaricp_connections_usage_seconds_max Connection usage time -# TYPE hikaricp_connections_usage_seconds_max gauge -hikaricp_connections_usage_seconds_max{pool="HikariPool-1",} 0.027 -# HELP hikaricp_connections_active Active connections -# TYPE hikaricp_connections_active gauge -hikaricp_connections_active{pool="HikariPool-1",} 0.0 -# HELP process_start_time_seconds Start time of the process since unix epoch. -# TYPE process_start_time_seconds gauge -process_start_time_seconds 1.700139959198E9 -# HELP jvm_memory_used_bytes The amount of used memory -# TYPE jvm_memory_used_bytes gauge -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 3.2981376E7 -jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 494864.0 -jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 2.1805824E8 -jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 1.13110752E8 -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 1472896.0 -jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 3.7748736E7 -jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 1.4127568E7 -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 3.4159744E7 -# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC -# TYPE jvm_gc_memory_promoted_bytes_total counter -jvm_gc_memory_promoted_bytes_total 1.78894336E8 -# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset -# TYPE jvm_threads_peak_threads gauge -jvm_threads_peak_threads 43.0 -# HELP hikaricp_connections_creation_seconds_max Connection creation time -# TYPE hikaricp_connections_creation_seconds_max gauge -hikaricp_connections_creation_seconds_max{pool="HikariPool-1",} 0.0 -# HELP hikaricp_connections_creation_seconds Connection creation time -# TYPE hikaricp_connections_creation_seconds summary -hikaricp_connections_creation_seconds_count{pool="HikariPool-1",} 2131.0 -hikaricp_connections_creation_seconds_sum{pool="HikariPool-1",} 17.144 -# HELP system_cpu_count The number of processors available to the Java virtual machine -# TYPE system_cpu_count gauge -system_cpu_count 16.0 -# HELP spring_security_filterchains_session_url_encoding_after_total -# TYPE spring_security_filterchains_session_url_encoding_after_total counter -spring_security_filterchains_session_url_encoding_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP executor_queue_remaining_tasks The number of additional elements that this queue can ideally accept without blocking -# TYPE executor_queue_remaining_tasks gauge -executor_queue_remaining_tasks{name="applicationTaskExecutor",} 2.147483647E9 -# HELP hikaricp_connections Total connections -# TYPE hikaricp_connections gauge -hikaricp_connections{pool="HikariPool-1",} 10.0 -# HELP tomcat_sessions_expired_sessions_total -# TYPE tomcat_sessions_expired_sessions_total counter -tomcat_sessions_expired_sessions_total 2.0 -# HELP tomcat_sessions_active_current_sessions -# TYPE tomcat_sessions_active_current_sessions gauge -tomcat_sessions_active_current_sessions 1.0 -# HELP hikaricp_connections_timeout_total Connection timeout total count -# TYPE hikaricp_connections_timeout_total counter -hikaricp_connections_timeout_total{pool="HikariPool-1",} 0.0 -# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads -# TYPE jvm_threads_live_threads gauge -jvm_threads_live_threads 38.0 -# HELP spring_security_filterchains_active_seconds_max -# TYPE spring_security_filterchains_active_seconds_max gauge -spring_security_filterchains_active_seconds_max{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_max{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -# HELP spring_security_filterchains_active_seconds -# TYPE spring_security_filterchains_active_seconds summary -spring_security_filterchains_active_seconds_active_count{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_duration_sum{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_active_count{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_duration_sum{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -# HELP spring_security_filterchains_logout_after_total -# TYPE spring_security_filterchains_logout_after_total counter -spring_security_filterchains_logout_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP jvm_info JVM version info -# TYPE jvm_info gauge -jvm_info{runtime="OpenJDK Runtime Environment",vendor="Alpine",version="17.0.9+8-alpine-r0",} 1.0 -# HELP disk_free_bytes Usable space for path -# TYPE disk_free_bytes gauge -disk_free_bytes{path="/opt/app/policy/pap/bin/.",} 8.5940973568E10 -# HELP spring_security_authentications_active_seconds -# TYPE spring_security_authentications_active_seconds summary -spring_security_authentications_active_seconds_active_count{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -spring_security_authentications_active_seconds_duration_sum{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -# HELP spring_security_authentications_active_seconds_max -# TYPE spring_security_authentications_active_seconds_max gauge -spring_security_authentications_active_seconds_max{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -# HELP jvm_threads_daemon_threads The current number of live daemon threads -# TYPE jvm_threads_daemon_threads gauge -jvm_threads_daemon_threads 28.0 -# HELP spring_security_filterchains_context_holder_before_total -# TYPE spring_security_filterchains_context_holder_before_total counter -spring_security_filterchains_context_holder_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP spring_security_filterchains_context_holder_after_total -# TYPE spring_security_filterchains_context_holder_after_total counter -spring_security_filterchains_context_holder_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next -# TYPE jvm_gc_memory_allocated_bytes_total counter -jvm_gc_memory_allocated_bytes_total 2.70538060492E12 -# HELP executor_pool_core_threads The core number of threads for the pool -# TYPE executor_pool_core_threads gauge -executor_pool_core_threads{name="applicationTaskExecutor",} 8.0 -# HELP spring_security_filterchains_authentication_anonymous_before_total -# TYPE spring_security_filterchains_authentication_anonymous_before_total counter -spring_security_filterchains_authentication_anonymous_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP jdbc_connections_active Current number of active connections that have been allocated from the data source. -# TYPE jdbc_connections_active gauge -jdbc_connections_active{name="dataSource",} 0.0 -# HELP http_server_requests_seconds -# TYPE http_server_requests_seconds summary -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/metrics",} 16898.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/metrics",} 3967.357676154 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status",} 16898.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status",} 3952.559792217 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/healthcheck",} 8449.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/healthcheck",} 1962.407770331 -http_server_requests_seconds_count{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 1.0 -http_server_requests_seconds_sum{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 1.13003001 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/pdps",} 33794.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/pdps",} 8534.756994317 -http_server_requests_seconds_count{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/policies",} 8449.0 -http_server_requests_seconds_sum{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/policies",} 9029.386618813 -http_server_requests_seconds_count{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="202",uri="/pdps/policies/{name}",} 8448.0 -http_server_requests_seconds_sum{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="202",uri="/pdps/policies/{name}",} 9292.095374281 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="401",uri="UNKNOWN",} 3.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="401",uri="UNKNOWN",} 0.146722928 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/deployed",} 8448.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/deployed",} 1963.048694006 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}",} 8448.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}",} 2081.277984093 -http_server_requests_seconds_count{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/deployments/batch",} 16896.0 -http_server_requests_seconds_sum{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/deployments/batch",} 18067.385431232 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status/{pdpGroupName}/{policyName}/{policyVersion}",} 16915.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status/{pdpGroupName}/{policyName}/{policyVersion}",} 4012.92045444 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}/{policyName}/{policyVersion}",} 16896.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}/{policyName}/{policyVersion}",} 4284.22784792 -http_server_requests_seconds_count{error="none",exception="none",method="PUT",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 3.0 -http_server_requests_seconds_sum{error="none",exception="none",method="PUT",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 1.687419501 -http_server_requests_seconds_count{error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/pdps/groups/batch",} 1.0 -http_server_requests_seconds_sum{error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/pdps/groups/batch",} 1.716173275 -http_server_requests_seconds_count{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/components/healthcheck",} 8448.0 -http_server_requests_seconds_sum{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/components/healthcheck",} 4213.059172045 -# HELP http_server_requests_seconds_max -# TYPE http_server_requests_seconds_max gauge -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/metrics",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/healthcheck",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/pdps",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/policies",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="DELETE",outcome="SUCCESS",status="202",uri="/pdps/policies/{name}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="CLIENT_ERROR",status="401",uri="UNKNOWN",} 0.051127942 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/deployed",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="POST",outcome="SUCCESS",status="202",uri="/pdps/deployments/batch",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/status/{pdpGroupName}/{policyName}/{policyVersion}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/policies/audit/{pdpGroupName}/{policyName}/{policyVersion}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="PUT",outcome="SUCCESS",status="200",uri="/pdps/groups/{name}",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="POST",outcome="SUCCESS",status="200",uri="/pdps/groups/batch",} 0.0 -http_server_requests_seconds_max{error="none",exception="none",method="GET",outcome="SUCCESS",status="200",uri="/components/healthcheck",} 0.0 -# HELP spring_security_filterchains_authentication_basic_before_total -# TYPE spring_security_filterchains_authentication_basic_before_total counter -spring_security_filterchains_authentication_basic_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP pap_policy_deployments_total -# TYPE pap_policy_deployments_total counter -pap_policy_deployments_total{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_total{operation="undeploy",status="SUCCESS",} 16896.0 -pap_policy_deployments_total{operation="deploy",status="SUCCESS",} 16897.0 -pap_policy_deployments_total{operation="undeploy",status="FAILURE",} 0.0 -# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool -# TYPE jvm_buffer_total_capacity_bytes gauge -jvm_buffer_total_capacity_bytes{id="mapped - 'non-volatile memory'",} 0.0 -jvm_buffer_total_capacity_bytes{id="mapped",} 0.0 -jvm_buffer_total_capacity_bytes{id="direct",} 1544596.0 -# HELP jvm_gc_live_data_size_bytes Size of long-lived heap memory pool after reclamation -# TYPE jvm_gc_live_data_size_bytes gauge -jvm_gc_live_data_size_bytes 5.4770176E7 -# HELP process_files_max_files The maximum file descriptor count -# TYPE process_files_max_files gauge -process_files_max_files 1048576.0 -# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use -# TYPE jvm_memory_committed_bytes gauge -jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 4.1222144E7 -jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space",} 4194304.0 -jvm_memory_committed_bytes{area="heap",id="G1 Old Gen",} 2.60046848E8 -jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 1.13967104E8 -jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 3342336.0 -jvm_memory_committed_bytes{area="heap",id="G1 Eden Space",} 9.6468992E7 -jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 1.4548992E7 -jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 3.5454976E7 -# HELP spring_data_repository_invocations_seconds_max Duration of repository invocations -# TYPE spring_data_repository_invocations_seconds_max gauge -spring_data_repository_invocations_seconds_max{exception="None",method="findByKeyParentKeyNameAndKeyParentKeyVersion",repository="PolicyStatusRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="save",repository="PdpGroupRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="saveAll",repository="PolicyStatusRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findByPdpGroup",repository="PolicyAuditRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findById",repository="ToscaServiceTemplateRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findByPdpGroup",repository="PolicyStatusRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findAll",repository="PdpGroupRepository",state="SUCCESS",} 0.010393136 -spring_data_repository_invocations_seconds_max{exception="None",method="deleteById",repository="PdpGroupRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findAll",repository="PolicyStatusRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="saveAll",repository="PolicyAuditRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findByPdpGroupAndNameAndVersion",repository="PolicyAuditRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findById",repository="ToscaNodeTemplateRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="existsById",repository="PdpGroupRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="findByKeyName",repository="PdpGroupRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="save",repository="PdpSubGroupRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="save",repository="PdpRepository",state="SUCCESS",} 0.0 -spring_data_repository_invocations_seconds_max{exception="None",method="deleteAll",repository="PolicyStatusRepository",state="SUCCESS",} 0.0 -# HELP spring_data_repository_invocations_seconds Duration of repository invocations -# TYPE spring_data_repository_invocations_seconds summary -spring_data_repository_invocations_seconds_count{exception="None",method="findByKeyParentKeyNameAndKeyParentKeyVersion",repository="PolicyStatusRepository",state="SUCCESS",} 16915.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findByKeyParentKeyNameAndKeyParentKeyVersion",repository="PolicyStatusRepository",state="SUCCESS",} 34.05336667 -spring_data_repository_invocations_seconds_count{exception="None",method="save",repository="PdpGroupRepository",state="SUCCESS",} 33797.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="save",repository="PdpGroupRepository",state="SUCCESS",} 14.614549552 -spring_data_repository_invocations_seconds_count{exception="None",method="saveAll",repository="PolicyStatusRepository",state="SUCCESS",} 135740.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="saveAll",repository="PolicyStatusRepository",state="SUCCESS",} 60.741361443 -spring_data_repository_invocations_seconds_count{exception="None",method="findByPdpGroup",repository="PolicyAuditRepository",state="SUCCESS",} 8448.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findByPdpGroup",repository="PolicyAuditRepository",state="SUCCESS",} 140.930950983 -spring_data_repository_invocations_seconds_count{exception="None",method="findById",repository="ToscaServiceTemplateRepository",state="SUCCESS",} 52516.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findById",repository="ToscaServiceTemplateRepository",state="SUCCESS",} 125.813080008 -spring_data_repository_invocations_seconds_count{exception="None",method="findByPdpGroup",repository="PolicyStatusRepository",state="SUCCESS",} 50972.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findByPdpGroup",repository="PolicyStatusRepository",state="SUCCESS",} 106.770108329 -spring_data_repository_invocations_seconds_count{exception="None",method="findAll",repository="PdpGroupRepository",state="SUCCESS",} 102439.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findAll",repository="PdpGroupRepository",state="SUCCESS",} 1036.574172723 -spring_data_repository_invocations_seconds_count{exception="None",method="deleteById",repository="PdpGroupRepository",state="SUCCESS",} 1.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="deleteById",repository="PdpGroupRepository",state="SUCCESS",} 0.007675311 -spring_data_repository_invocations_seconds_count{exception="None",method="findAll",repository="PolicyStatusRepository",state="SUCCESS",} 33795.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findAll",repository="PolicyStatusRepository",state="SUCCESS",} 53.729542707 -spring_data_repository_invocations_seconds_count{exception="None",method="saveAll",repository="PolicyAuditRepository",state="SUCCESS",} 33793.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="saveAll",repository="PolicyAuditRepository",state="SUCCESS",} 41.990371471 -spring_data_repository_invocations_seconds_count{exception="None",method="findByPdpGroupAndNameAndVersion",repository="PolicyAuditRepository",state="SUCCESS",} 16896.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findByPdpGroupAndNameAndVersion",repository="PolicyAuditRepository",state="SUCCESS",} 371.016745717 -spring_data_repository_invocations_seconds_count{exception="None",method="findById",repository="ToscaNodeTemplateRepository",state="SUCCESS",} 25663.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findById",repository="ToscaNodeTemplateRepository",state="SUCCESS",} 2.215574842 -spring_data_repository_invocations_seconds_count{exception="None",method="existsById",repository="PdpGroupRepository",state="SUCCESS",} 1.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="existsById",repository="PdpGroupRepository",state="SUCCESS",} 0.843078054 -spring_data_repository_invocations_seconds_count{exception="None",method="findByKeyName",repository="PdpGroupRepository",state="SUCCESS",} 16902.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="findByKeyName",repository="PdpGroupRepository",state="SUCCESS",} 80.237779619 -spring_data_repository_invocations_seconds_count{exception="None",method="save",repository="PdpSubGroupRepository",state="SUCCESS",} 2.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="save",repository="PdpSubGroupRepository",state="SUCCESS",} 0.03577736 -spring_data_repository_invocations_seconds_count{exception="None",method="save",repository="PdpRepository",state="SUCCESS",} 38194.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="save",repository="PdpRepository",state="SUCCESS",} 52.220218057 -spring_data_repository_invocations_seconds_count{exception="None",method="deleteAll",repository="PolicyStatusRepository",state="SUCCESS",} 67870.0 -spring_data_repository_invocations_seconds_sum{exception="None",method="deleteAll",repository="PolicyStatusRepository",state="SUCCESS",} 24.905966529 -# HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time -# TYPE system_load_average_1m gauge -system_load_average_1m 0.34375 -# HELP spring_security_filterchains_requestcache_before_total -# TYPE spring_security_filterchains_requestcache_before_total counter -spring_security_filterchains_requestcache_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP tomcat_sessions_alive_max_seconds -# TYPE tomcat_sessions_alive_max_seconds gauge -tomcat_sessions_alive_max_seconds 1853.0 -# HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management -# TYPE jvm_memory_max_bytes gauge -jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 1.22023936E8 -jvm_memory_max_bytes{area="heap",id="G1 Survivor Space",} -1.0 -jvm_memory_max_bytes{area="heap",id="G1 Old Gen",} 8.434745344E9 -jvm_memory_max_bytes{area="nonheap",id="Metaspace",} -1.0 -jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 7606272.0 -jvm_memory_max_bytes{area="heap",id="G1 Eden Space",} -1.0 -jvm_memory_max_bytes{area="nonheap",id="Compressed Class Space",} 1.073741824E9 -jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 1.22028032E8 -# HELP hikaricp_connections_acquire_seconds Connection acquire time -# TYPE hikaricp_connections_acquire_seconds summary -hikaricp_connections_acquire_seconds_count{pool="HikariPool-1",} 321133.0 -hikaricp_connections_acquire_seconds_sum{pool="HikariPool-1",} 68.182780148 -# HELP hikaricp_connections_acquire_seconds_max Connection acquire time -# TYPE hikaricp_connections_acquire_seconds_max gauge -hikaricp_connections_acquire_seconds_max{pool="HikariPool-1",} 0.001688513 -# HELP hikaricp_connections_idle Idle connections -# TYPE hikaricp_connections_idle gauge -hikaricp_connections_idle{pool="HikariPool-1",} 10.0 -# HELP jvm_gc_pause_seconds Time spent in GC pause -# TYPE jvm_gc_pause_seconds summary -jvm_gc_pause_seconds_count{action="end of minor GC",cause="Metadata GC Threshold",gc="G1 Young Generation",} 1.0 -jvm_gc_pause_seconds_sum{action="end of minor GC",cause="Metadata GC Threshold",gc="G1 Young Generation",} 0.03 -jvm_gc_pause_seconds_count{action="end of minor GC",cause="GCLocker Initiated GC",gc="G1 Young Generation",} 5.0 -jvm_gc_pause_seconds_sum{action="end of minor GC",cause="GCLocker Initiated GC",gc="G1 Young Generation",} 0.032 -jvm_gc_pause_seconds_count{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 29819.0 -jvm_gc_pause_seconds_sum{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 205.153 -# HELP jvm_gc_pause_seconds_max Time spent in GC pause -# TYPE jvm_gc_pause_seconds_max gauge -jvm_gc_pause_seconds_max{action="end of minor GC",cause="Metadata GC Threshold",gc="G1 Young Generation",} 0.0 -jvm_gc_pause_seconds_max{action="end of minor GC",cause="GCLocker Initiated GC",gc="G1 Young Generation",} 0.0 -jvm_gc_pause_seconds_max{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 0.0 -# HELP spring_security_authentications_seconds_max -# TYPE spring_security_authentications_seconds_max gauge -spring_security_authentications_seconds_max{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 0.269684484 -# HELP spring_security_authentications_seconds -# TYPE spring_security_authentications_seconds summary -spring_security_authentications_seconds_count{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 168993.0 -spring_security_authentications_seconds_sum{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 38517.298249707 -# HELP tomcat_sessions_rejected_sessions_total -# TYPE tomcat_sessions_rejected_sessions_total counter -tomcat_sessions_rejected_sessions_total 0.0 -# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution -# TYPE jvm_classes_unloaded_classes_total counter -jvm_classes_unloaded_classes_total 268.0 -# HELP spring_security_http_secured_requests_seconds -# TYPE spring_security_http_secured_requests_seconds summary -spring_security_http_secured_requests_seconds_count{error="none",} 168992.0 -spring_security_http_secured_requests_seconds_sum{error="none",} 32721.168866206 -# HELP spring_security_http_secured_requests_seconds_max -# TYPE spring_security_http_secured_requests_seconds_max gauge -spring_security_http_secured_requests_seconds_max{error="none",} 0.0 -# HELP spring_security_filterchains_context_async_before_total -# TYPE spring_security_filterchains_context_async_before_total counter -spring_security_filterchains_context_async_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP hikaricp_connections_max Max connections -# TYPE hikaricp_connections_max gauge -hikaricp_connections_max{pool="HikariPool-1",} 10.0 -# HELP spring_security_http_secured_requests_active_seconds -# TYPE spring_security_http_secured_requests_active_seconds summary -spring_security_http_secured_requests_active_seconds_active_count 1.0 -spring_security_http_secured_requests_active_seconds_duration_sum 0.011941797 -# HELP spring_security_http_secured_requests_active_seconds_max -# TYPE spring_security_http_secured_requests_active_seconds_max gauge -spring_security_http_secured_requests_active_seconds_max 0.011942844 -# HELP spring_security_filterchains_authentication_basic_after_total -# TYPE spring_security_filterchains_authentication_basic_after_total counter -spring_security_filterchains_authentication_basic_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process -# TYPE process_cpu_usage gauge -process_cpu_usage 3.61387926826283E-4 -# HELP executor_completed_tasks_total The approximate total number of tasks that have completed execution -# TYPE executor_completed_tasks_total counter -executor_completed_tasks_total{name="applicationTaskExecutor",} 0.0 -# HELP jvm_threads_started_threads_total The total number of application threads started in the JVM -# TYPE jvm_threads_started_threads_total counter -jvm_threads_started_threads_total 4650.0 -# HELP process_uptime_seconds The uptime of the Java virtual machine -# TYPE process_uptime_seconds gauge -process_uptime_seconds 380261.777 -# HELP pap_policy_deployments_seconds Timer for HTTP request to deploy/undeploy a policy -# TYPE pap_policy_deployments_seconds summary -pap_policy_deployments_seconds_count{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_sum{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_count{operation="undeploy",status="SUCCESS",} 8448.0 -pap_policy_deployments_seconds_sum{operation="undeploy",status="SUCCESS",} 7322.301986411 -pap_policy_deployments_seconds_count{operation="deploy",status="SUCCESS",} 25345.0 -pap_policy_deployments_seconds_sum{operation="deploy",status="SUCCESS",} 21200.125523501 -pap_policy_deployments_seconds_count{operation="undeploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_sum{operation="undeploy",status="FAILURE",} 0.0 -# HELP pap_policy_deployments_seconds_max Timer for HTTP request to deploy/undeploy a policy -# TYPE pap_policy_deployments_seconds_max gauge -pap_policy_deployments_seconds_max{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_max{operation="undeploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_max{operation="deploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_max{operation="undeploy",status="FAILURE",} 0.0 -# HELP jvm_gc_overhead_percent An approximation of the percent of CPU time used by GC activities over the last lookback period or since monitoring began, whichever is shorter, in the range [0..1] -# TYPE jvm_gc_overhead_percent gauge -jvm_gc_overhead_percent 0.0 -# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool -# TYPE jvm_buffer_memory_used_bytes gauge -jvm_buffer_memory_used_bytes{id="mapped - 'non-volatile memory'",} 0.0 -jvm_buffer_memory_used_bytes{id="mapped",} 0.0 -jvm_buffer_memory_used_bytes{id="direct",} 1544596.0 -# HELP spring_security_filterchains_header_after_total -# TYPE spring_security_filterchains_header_after_total counter -spring_security_filterchains_header_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool -# TYPE jvm_gc_max_data_size_bytes gauge -jvm_gc_max_data_size_bytes 8.434745344E9 -# HELP spring_security_filterchains_authorization_before_total -# TYPE spring_security_filterchains_authorization_before_total counter -spring_security_filterchains_authorization_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP jvm_compilation_time_ms_total The approximate accumulated elapsed time spent in compilation -# TYPE jvm_compilation_time_ms_total counter -jvm_compilation_time_ms_total{compiler="HotSpot 64-Bit Tiered Compilers",} 425964.0 -# HELP application_started_time_seconds Time taken to start the application -# TYPE application_started_time_seconds gauge -application_started_time_seconds{main_application_class="org.onap.policy.pap.main.PolicyPapApplication",} 32.135 -# HELP jdbc_connections_min Minimum number of idle connections in the pool. -# TYPE jdbc_connections_min gauge -jdbc_connections_min{name="dataSource",} 10.0 -# HELP spring_security_filterchains_context_servlet_before_total -# TYPE spring_security_filterchains_context_servlet_before_total counter -spring_security_filterchains_context_servlet_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP hikaricp_connections_pending Pending threads -# TYPE hikaricp_connections_pending gauge -hikaricp_connections_pending{pool="HikariPool-1",} 0.0 -# HELP spring_security_filterchains_logout_before_total -# TYPE spring_security_filterchains_logout_before_total counter -spring_security_filterchains_logout_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP executor_pool_size_threads The current number of threads in the pool -# TYPE executor_pool_size_threads gauge -executor_pool_size_threads{name="applicationTaskExecutor",} 0.0 -# HELP spring_security_filterchains_context_async_after_total -# TYPE spring_security_filterchains_context_async_after_total counter -spring_security_filterchains_context_async_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP system_cpu_usage The "recent cpu usage" of the system the application is running in -# TYPE system_cpu_usage gauge -system_cpu_usage 0.02665967384267763 -# HELP spring_security_authorizations_active_seconds_max -# TYPE spring_security_authorizations_active_seconds_max gauge -spring_security_authorizations_active_seconds_max{spring_security_authentication_type="n/a",spring_security_authorization_decision="unknown",spring_security_object="request",} 0.0 -# HELP spring_security_authorizations_active_seconds -# TYPE spring_security_authorizations_active_seconds summary -spring_security_authorizations_active_seconds_active_count{spring_security_authentication_type="n/a",spring_security_authorization_decision="unknown",spring_security_object="request",} 0.0 -spring_security_authorizations_active_seconds_duration_sum{spring_security_authentication_type="n/a",spring_security_authorization_decision="unknown",spring_security_object="request",} 0.0 -# HELP jdbc_connections_idle Number of established but idle connections. -# TYPE jdbc_connections_idle gauge -jdbc_connections_idle{name="dataSource",} 10.0 -# HELP jdbc_connections_max Maximum number of active connections that can be allocated at the same time. -# TYPE jdbc_connections_max gauge -jdbc_connections_max{name="dataSource",} 10.0 -# HELP tomcat_sessions_active_max_sessions -# TYPE tomcat_sessions_active_max_sessions gauge -tomcat_sessions_active_max_sessions 2.0 -# HELP spring_security_filterchains_access_exceptions_after_total -# TYPE spring_security_filterchains_access_exceptions_after_total counter -spring_security_filterchains_access_exceptions_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP process_files_open_files The open file descriptor count -# TYPE process_files_open_files gauge -process_files_open_files 30.0 -# HELP spring_security_filterchains_authentication_anonymous_after_total -# TYPE spring_security_filterchains_authentication_anonymous_after_total counter -spring_security_filterchains_authentication_anonymous_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP executor_active_threads The approximate number of threads that are actively executing tasks -# TYPE executor_active_threads gauge -executor_active_threads{name="applicationTaskExecutor",} 0.0 -# HELP jvm_threads_states_threads The current number of threads -# TYPE jvm_threads_states_threads gauge -jvm_threads_states_threads{state="runnable",} 9.0 -jvm_threads_states_threads{state="blocked",} 0.0 -jvm_threads_states_threads{state="waiting",} 21.0 -jvm_threads_states_threads{state="timed-waiting",} 8.0 -jvm_threads_states_threads{state="new",} 0.0 -jvm_threads_states_threads{state="terminated",} 0.0 -# HELP logback_events_total Number of log events that were enabled by the effective log level -# TYPE logback_events_total counter -logback_events_total{level="warn",} 0.0 -logback_events_total{level="debug",} 0.0 -logback_events_total{level="error",} 76.0 -logback_events_total{level="trace",} 0.0 -logback_events_total{level="info",} 1846777.0 -# HELP executor_pool_max_threads The maximum allowed number of threads in the pool -# TYPE executor_pool_max_threads gauge -executor_pool_max_threads{name="applicationTaskExecutor",} 2.147483647E9 -# HELP spring_security_filterchains_requestcache_after_total -# TYPE spring_security_filterchains_requestcache_after_total counter -spring_security_filterchains_requestcache_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP spring_security_filterchains_context_servlet_after_total -# TYPE spring_security_filterchains_context_servlet_after_total counter -spring_security_filterchains_context_servlet_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168998.0 -# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool -# TYPE jvm_buffer_count_buffers gauge -jvm_buffer_count_buffers{id="mapped - 'non-volatile memory'",} 0.0 -jvm_buffer_count_buffers{id="mapped",} 0.0 -jvm_buffer_count_buffers{id="direct",} 16.0 -# HELP jvm_memory_usage_after_gc_percent The percentage of long-lived heap pool used after the last GC event, in the range [0..1] -# TYPE jvm_memory_usage_after_gc_percent gauge -jvm_memory_usage_after_gc_percent{area="heap",pool="long-lived",} 0.02585237978229115 -# HELP application_ready_time_seconds Time taken for the application to be ready to service requests -# TYPE application_ready_time_seconds gauge -application_ready_time_seconds{main_application_class="org.onap.policy.pap.main.PolicyPapApplication",} 32.272 -# HELP http_server_requests_active_seconds_max -# TYPE http_server_requests_active_seconds_max gauge -http_server_requests_active_seconds_max{exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.293631789 -http_server_requests_active_seconds_max{exception="none",method="PUT",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_max{exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_max{exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -# HELP http_server_requests_active_seconds -# TYPE http_server_requests_active_seconds summary -http_server_requests_active_seconds_active_count{exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN",} 1.0 -http_server_requests_active_seconds_duration_sum{exception="none",method="GET",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.293630483 -http_server_requests_active_seconds_active_count{exception="none",method="PUT",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_duration_sum{exception="none",method="PUT",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_active_count{exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_duration_sum{exception="none",method="DELETE",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_active_count{exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -http_server_requests_active_seconds_duration_sum{exception="none",method="POST",outcome="SUCCESS",status="200",uri="UNKNOWN",} 0.0 -# HELP spring_security_filterchains_seconds_max -# TYPE spring_security_filterchains_seconds_max gauge -spring_security_filterchains_seconds_max{error="none",security_security_reached_filter_section="before",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="AuthorizationFilter",} 0.272513877 -spring_security_filterchains_seconds_max{error="none",security_security_reached_filter_section="after",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="DisableEncodeUrlFilter",} 0.001009437 -# HELP spring_security_filterchains_seconds -# TYPE spring_security_filterchains_seconds summary -spring_security_filterchains_seconds_count{error="none",security_security_reached_filter_section="before",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="AuthorizationFilter",} 168999.0 -spring_security_filterchains_seconds_sum{error="none",security_security_reached_filter_section="before",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="AuthorizationFilter",} 38579.546360899 -spring_security_filterchains_seconds_count{error="none",security_security_reached_filter_section="after",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="DisableEncodeUrlFilter",} 168998.0 -spring_security_filterchains_seconds_sum{error="none",security_security_reached_filter_section="after",spring_security_filterchain_position="11",spring_security_filterchain_size="11",spring_security_reached_filter_name="DisableEncodeUrlFilter",} 17.300671502 -# HELP spring_security_filterchains_authorization_after_total -# TYPE spring_security_filterchains_authorization_after_total counter -spring_security_filterchains_authorization_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168992.0 -# HELP spring_security_filterchains_access_exceptions_before_total -# TYPE spring_security_filterchains_access_exceptions_before_total counter -spring_security_filterchains_access_exceptions_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP spring_security_authorizations_seconds -# TYPE spring_security_authorizations_seconds summary -spring_security_authorizations_seconds_count{error="AccessDeniedException",spring_security_authentication_type="AnonymousAuthenticationToken",spring_security_authorization_decision="false",spring_security_object="request",} 6.0 -spring_security_authorizations_seconds_sum{error="AccessDeniedException",spring_security_authentication_type="AnonymousAuthenticationToken",spring_security_authorization_decision="false",spring_security_object="request",} 0.020998153 -spring_security_authorizations_seconds_count{error="none",spring_security_authentication_type="UsernamePasswordAuthenticationToken",spring_security_authorization_decision="true",spring_security_object="request",} 168993.0 -spring_security_authorizations_seconds_sum{error="none",spring_security_authentication_type="UsernamePasswordAuthenticationToken",spring_security_authorization_decision="true",spring_security_object="request",} 4.092135265 -# HELP spring_security_authorizations_seconds_max -# TYPE spring_security_authorizations_seconds_max gauge -spring_security_authorizations_seconds_max{error="AccessDeniedException",spring_security_authentication_type="AnonymousAuthenticationToken",spring_security_authorization_decision="false",spring_security_object="request",} 0.012322361 -spring_security_authorizations_seconds_max{error="none",spring_security_authentication_type="UsernamePasswordAuthenticationToken",spring_security_authorization_decision="true",spring_security_object="request",} 2.03312E-4 -# HELP spring_security_filterchains_session_url_encoding_before_total -# TYPE spring_security_filterchains_session_url_encoding_before_total counter -spring_security_filterchains_session_url_encoding_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP spring_security_filterchains_header_before_total -# TYPE spring_security_filterchains_header_before_total counter -spring_security_filterchains_header_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 168999.0 -# HELP executor_queued_tasks The approximate number of tasks that are queued for execution -# TYPE executor_queued_tasks gauge -executor_queued_tasks{name="applicationTaskExecutor",} 0.0 - diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_before_72h.txt b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_before_72h.txt deleted file mode 100644 index df6df25c..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_metrics_before_72h.txt +++ /dev/null @@ -1,228 +0,0 @@ -# HELP hikaricp_connections_acquire_seconds Connection acquire time -# TYPE hikaricp_connections_acquire_seconds summary -hikaricp_connections_acquire_seconds_count{pool="HikariPool-1",} 39.0 -hikaricp_connections_acquire_seconds_sum{pool="HikariPool-1",} 0.033820135 -# HELP hikaricp_connections_acquire_seconds_max Connection acquire time -# TYPE hikaricp_connections_acquire_seconds_max gauge -hikaricp_connections_acquire_seconds_max{pool="HikariPool-1",} 0.001545051 -# HELP hikaricp_connections_idle Idle connections -# TYPE hikaricp_connections_idle gauge -hikaricp_connections_idle{pool="HikariPool-1",} 10.0 -# HELP hikaricp_connections_min Min connections -# TYPE hikaricp_connections_min gauge -hikaricp_connections_min{pool="HikariPool-1",} 10.0 -# HELP jvm_gc_pause_seconds Time spent in GC pause -# TYPE jvm_gc_pause_seconds summary -jvm_gc_pause_seconds_count{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 1.0 -jvm_gc_pause_seconds_sum{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 0.037 -# HELP jvm_gc_pause_seconds_max Time spent in GC pause -# TYPE jvm_gc_pause_seconds_max gauge -jvm_gc_pause_seconds_max{action="end of minor GC",cause="G1 Evacuation Pause",gc="G1 Young Generation",} 0.037 -# HELP spring_security_authentications_seconds_max -# TYPE spring_security_authentications_seconds_max gauge -spring_security_authentications_seconds_max{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 0.320533592 -# HELP spring_security_authentications_seconds -# TYPE spring_security_authentications_seconds summary -spring_security_authentications_seconds_count{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 1.0 -spring_security_authentications_seconds_sum{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="UsernamePasswordAuthenticationToken",error="none",} 0.320533592 -# HELP tomcat_sessions_created_sessions_total -# TYPE tomcat_sessions_created_sessions_total counter -tomcat_sessions_created_sessions_total 2.0 -# HELP disk_total_bytes Total space for path -# TYPE disk_total_bytes gauge -disk_total_bytes{path="/opt/app/policy/pap/bin/.",} 1.0386530304E11 -# HELP tomcat_sessions_rejected_sessions_total -# TYPE tomcat_sessions_rejected_sessions_total counter -tomcat_sessions_rejected_sessions_total 0.0 -# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine -# TYPE jvm_classes_loaded_classes gauge -jvm_classes_loaded_classes 18927.0 -# HELP hikaricp_connections_usage_seconds Connection usage time -# TYPE hikaricp_connections_usage_seconds summary -hikaricp_connections_usage_seconds_count{pool="HikariPool-1",} 39.0 -hikaricp_connections_usage_seconds_sum{pool="HikariPool-1",} 9.34 -# HELP hikaricp_connections_usage_seconds_max Connection usage time -# TYPE hikaricp_connections_usage_seconds_max gauge -hikaricp_connections_usage_seconds_max{pool="HikariPool-1",} 0.052 -# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution -# TYPE jvm_classes_unloaded_classes_total counter -jvm_classes_unloaded_classes_total 0.0 -# HELP hikaricp_connections_active Active connections -# TYPE hikaricp_connections_active gauge -hikaricp_connections_active{pool="HikariPool-1",} 0.0 -# HELP spring_security_filterchains_context_async_before_total -# TYPE spring_security_filterchains_context_async_before_total counter -spring_security_filterchains_context_async_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 5.0 -# HELP process_start_time_seconds Start time of the process since unix epoch. -# TYPE process_start_time_seconds gauge -process_start_time_seconds 1.700139959198E9 -# HELP hikaricp_connections_max Max connections -# TYPE hikaricp_connections_max gauge -hikaricp_connections_max{pool="HikariPool-1",} 10.0 -# HELP spring_security_http_secured_requests_active_seconds -# TYPE spring_security_http_secured_requests_active_seconds summary -spring_security_http_secured_requests_active_seconds_active_count 1.0 -spring_security_http_secured_requests_active_seconds_duration_sum 0.199193291 -# HELP spring_security_http_secured_requests_active_seconds_max -# TYPE spring_security_http_secured_requests_active_seconds_max gauge -spring_security_http_secured_requests_active_seconds_max 0.1992777 -# HELP jvm_memory_used_bytes The amount of used memory -# TYPE jvm_memory_used_bytes gauge -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 2.1837696E7 -jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 1.2036896E7 -jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 4.231168E7 -jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 9.6942648E7 -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 1444224.0 -jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 3.7748736E7 -jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 1.2827304E7 -jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 9169024.0 -# HELP spring_security_filterchains_authentication_basic_after_total -# TYPE spring_security_filterchains_authentication_basic_after_total counter -spring_security_filterchains_authentication_basic_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 4.0 -# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC -# TYPE jvm_gc_memory_promoted_bytes_total counter -jvm_gc_memory_promoted_bytes_total 2964480.0 -# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset -# TYPE jvm_threads_peak_threads gauge -jvm_threads_peak_threads 37.0 -# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process -# TYPE process_cpu_usage gauge -process_cpu_usage 0.0 -# HELP executor_completed_tasks_total The approximate total number of tasks that have completed execution -# TYPE executor_completed_tasks_total counter -executor_completed_tasks_total{name="applicationTaskExecutor",} 0.0 -# HELP hikaricp_connections_creation_seconds_max Connection creation time -# TYPE hikaricp_connections_creation_seconds_max gauge -hikaricp_connections_creation_seconds_max{pool="HikariPool-1",} 0.0 -# HELP hikaricp_connections_creation_seconds Connection creation time -# TYPE hikaricp_connections_creation_seconds summary -hikaricp_connections_creation_seconds_count{pool="HikariPool-1",} 0.0 -hikaricp_connections_creation_seconds_sum{pool="HikariPool-1",} 0.0 -# HELP jvm_threads_started_threads_total The total number of application threads started in the JVM -# TYPE jvm_threads_started_threads_total counter -jvm_threads_started_threads_total 41.0 -# HELP system_cpu_count The number of processors available to the Java virtual machine -# TYPE system_cpu_count gauge -system_cpu_count 16.0 -# HELP spring_security_filterchains_session_url_encoding_after_total -# TYPE spring_security_filterchains_session_url_encoding_after_total counter -spring_security_filterchains_session_url_encoding_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 4.0 -# HELP process_uptime_seconds The uptime of the Java virtual machine -# TYPE process_uptime_seconds gauge -process_uptime_seconds 824.109 -# HELP pap_policy_deployments_seconds Timer for HTTP request to deploy/undeploy a policy -# TYPE pap_policy_deployments_seconds summary -pap_policy_deployments_seconds_count{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_sum{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_count{operation="undeploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_sum{operation="undeploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_count{operation="deploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_sum{operation="deploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_count{operation="undeploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_sum{operation="undeploy",status="FAILURE",} 0.0 -# HELP pap_policy_deployments_seconds_max Timer for HTTP request to deploy/undeploy a policy -# TYPE pap_policy_deployments_seconds_max gauge -pap_policy_deployments_seconds_max{operation="deploy",status="FAILURE",} 0.0 -pap_policy_deployments_seconds_max{operation="undeploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_max{operation="deploy",status="SUCCESS",} 0.0 -pap_policy_deployments_seconds_max{operation="undeploy",status="FAILURE",} 0.0 -# HELP jvm_gc_overhead_percent An approximation of the percent of CPU time used by GC activities over the last lookback period or since monitoring began, whichever is shorter, in the range [0..1] -# TYPE jvm_gc_overhead_percent gauge -jvm_gc_overhead_percent 0.0 -# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool -# TYPE jvm_buffer_memory_used_bytes gauge -jvm_buffer_memory_used_bytes{id="mapped - 'non-volatile memory'",} 0.0 -jvm_buffer_memory_used_bytes{id="mapped",} 0.0 -jvm_buffer_memory_used_bytes{id="direct",} 114688.0 -# HELP executor_queue_remaining_tasks The number of additional elements that this queue can ideally accept without blocking -# TYPE executor_queue_remaining_tasks gauge -executor_queue_remaining_tasks{name="applicationTaskExecutor",} 2.147483647E9 -# HELP hikaricp_connections Total connections -# TYPE hikaricp_connections gauge -hikaricp_connections{pool="HikariPool-1",} 10.0 -# HELP spring_security_filterchains_header_after_total -# TYPE spring_security_filterchains_header_after_total counter -spring_security_filterchains_header_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 4.0 -# HELP tomcat_sessions_expired_sessions_total -# TYPE tomcat_sessions_expired_sessions_total counter -tomcat_sessions_expired_sessions_total 0.0 -# HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool -# TYPE jvm_gc_max_data_size_bytes gauge -jvm_gc_max_data_size_bytes 8.434745344E9 -# HELP tomcat_sessions_active_current_sessions -# TYPE tomcat_sessions_active_current_sessions gauge -tomcat_sessions_active_current_sessions 2.0 -# HELP spring_security_filterchains_authorization_before_total -# TYPE spring_security_filterchains_authorization_before_total counter -spring_security_filterchains_authorization_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 5.0 -# HELP jvm_compilation_time_ms_total The approximate accumulated elapsed time spent in compilation -# TYPE jvm_compilation_time_ms_total counter -jvm_compilation_time_ms_total{compiler="HotSpot 64-Bit Tiered Compilers",} 136782.0 -# HELP hikaricp_connections_timeout_total Connection timeout total count -# TYPE hikaricp_connections_timeout_total counter -hikaricp_connections_timeout_total{pool="HikariPool-1",} 0.0 -# HELP application_started_time_seconds Time taken to start the application -# TYPE application_started_time_seconds gauge -application_started_time_seconds{main_application_class="org.onap.policy.pap.main.PolicyPapApplication",} 32.135 -# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads -# TYPE jvm_threads_live_threads gauge -jvm_threads_live_threads 37.0 -# HELP spring_security_filterchains_active_seconds_max -# TYPE spring_security_filterchains_active_seconds_max gauge -spring_security_filterchains_active_seconds_max{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_max{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -# HELP spring_security_filterchains_active_seconds -# TYPE spring_security_filterchains_active_seconds summary -spring_security_filterchains_active_seconds_active_count{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_duration_sum{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_active_count{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -spring_security_filterchains_active_seconds_duration_sum{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 0.0 -# HELP jdbc_connections_min Minimum number of idle connections in the pool. -# TYPE jdbc_connections_min gauge -jdbc_connections_min{name="dataSource",} 10.0 -# HELP spring_security_filterchains_context_servlet_before_total -# TYPE spring_security_filterchains_context_servlet_before_total counter -spring_security_filterchains_context_servlet_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 5.0 -# HELP hikaricp_connections_pending Pending threads -# TYPE hikaricp_connections_pending gauge -hikaricp_connections_pending{pool="HikariPool-1",} 0.0 -# HELP spring_security_filterchains_logout_after_total -# TYPE spring_security_filterchains_logout_after_total counter -spring_security_filterchains_logout_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 4.0 -# HELP spring_security_filterchains_logout_before_total -# TYPE spring_security_filterchains_logout_before_total counter -spring_security_filterchains_logout_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 5.0 -# HELP jvm_info JVM version info -# TYPE jvm_info gauge -jvm_info{runtime="OpenJDK Runtime Environment",vendor="Alpine",version="17.0.9+8-alpine-r0",} 1.0 -# HELP disk_free_bytes Usable space for path -# TYPE disk_free_bytes gauge -disk_free_bytes{path="/opt/app/policy/pap/bin/.",} 9.1789115392E10 -# HELP spring_security_authentications_active_seconds -# TYPE spring_security_authentications_active_seconds summary -spring_security_authentications_active_seconds_active_count{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -spring_security_authentications_active_seconds_duration_sum{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -# HELP spring_security_authentications_active_seconds_max -# TYPE spring_security_authentications_active_seconds_max gauge -spring_security_authentications_active_seconds_max{authentication_failure_type="n/a",authentication_method="ProviderManager",authentication_request_type="UsernamePasswordAuthenticationToken",authentication_result_type="n/a",} 0.0 -# HELP jvm_threads_daemon_threads The current number of live daemon threads -# TYPE jvm_threads_daemon_threads gauge -jvm_threads_daemon_threads 28.0 -# HELP executor_pool_size_threads The current number of threads in the pool -# TYPE executor_pool_size_threads gauge -executor_pool_size_threads{name="applicationTaskExecutor",} 0.0 -# HELP spring_security_filterchains_context_async_after_total -# TYPE spring_security_filterchains_context_async_after_total counter -spring_security_filterchains_context_async_after_total{security_security_reached_filter_section="after",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 4.0 -# HELP system_cpu_usage The "recent cpu usage" of the system the application is running in -# TYPE system_cpu_usage gauge -system_cpu_usage 0.1111111111111111 -# HELP spring_security_filterchains_context_holder_before_total -# TYPE spring_security_filterchains_context_holder_before_total counter -spring_security_filterchains_context_holder_before_total{security_security_reached_filter_section="before",spring_security_filterchain_position="0",spring_security_filterchain_size="0",spring_security_reached_filter_name="none",} 5.0 -# HELP spring_security_authorizations_active_seconds_max -# TYPE spring_security_authorizations_active_seconds_max gauge -spring_security_authorizations_active_seconds_max{spring_security_authentication_type="n/a",spring_security_authorization_decision="unknown",spring_security_object="request",} 0.0 -# HELP spring_security_authorizations_active_seconds -# TYPE spring_security_authorizations_active_seconds summary -spring_security_authorizations_active_seconds_active_count{spring_security_authentication_type="n/a",spring_security_authorization_decision="unknown",spring_security_object="request",} 0.0 diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_performance_jmeter_results.png b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_performance_jmeter_results.png Binary files differdeleted file mode 100644 index e061ba47..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_performance_jmeter_results.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stability_jmeter_results.png b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stability_jmeter_results.png Binary files differdeleted file mode 100644 index c1c04f92..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stability_jmeter_results.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_after_72h.png b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_after_72h.png Binary files differdeleted file mode 100644 index 7c56f74a..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_after_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_before_72h.png b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_before_72h.png Binary files differdeleted file mode 100644 index 0984521f..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_before_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_during_72h.png b/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_during_72h.png Binary files differdeleted file mode 100644 index 1d86b175..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p-results/pap_stats_during_72h.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/pap-s3p.rst b/docs/development/devtools/testing/s3p/pap-s3p.rst deleted file mode 100644 index c658cbc5..00000000 --- a/docs/development/devtools/testing/s3p/pap-s3p.rst +++ /dev/null @@ -1,198 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _pap-s3p-label: - -.. toctree:: - :maxdepth: 2 - -Policy PAP component -~~~~~~~~~~~~~~~~~~~~ - -Both the Performance and the Stability tests were executed by performing requests -against Policy components installed as part of a full ONAP OOM deployment or a docker deployment in Nordix lab. - -Setup Details -+++++++++++++ - -- Policy-PAP along with all policy components deployed as part of a Policy docker deployment. -- A second instance of APEX-PDP is spun up in the setup. Update the configuration file (OnapPfConfig.json) such that the PDP can register to the new group created by PAP in the tests. -- Both tests were run via jMeter. - -Stability Test of PAP -+++++++++++++++++++++ - -Test Plan ---------- -The 72 hours stability test ran the following steps sequentially in a single threaded loop. - -Setup Phase (steps running only once) -""""""""""""""""""""""""""""""""""""" - -- **Create Policy for defaultGroup** - creates an operational policy using policy/api component -- **Create NodeTemplate metadata for sampleGroup policy** - creates a node template containing metadata using policy/api component -- **Create Policy for sampleGroup** - creates an operational policy that refers to the metadata created above using policy/api component -- **Change defaultGroup state to ACTIVE** - changes the state of defaultGroup PdpGroup to ACTIVE -- **Create/Update PDP Group** - creates a new PDPGroup named sampleGroup. - A second instance of the PDP that is already spun up gets registered to this new group -- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that both PdpGroups are in ACTIVE state. - -PAP Test Flow (steps running in a loop for 72 hours) -"""""""""""""""""""""""""""""""""""""""""""""""""""" - -- **Check Health** - checks the health status of pap -- **PAP Metrics** - Fetch prometheus metrics before the deployment/undeployment cycle - Save different counters such as deploy/undeploy-success/failure counters at API and engine level. -- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that both PdpGroups are in the ACTIVE state. -- **Deploy Policy for defaultGroup** - deploys the policy defaultDomain to defaultGroup -- **Check status of defaultGroup policy** - checks the status of defaultGroup PdpGroup with the defaultDomain policy 1.0.0. -- **Check PdpGroup Audit defaultGroup** - checks the audit information for the defaultGroup PdpGroup. -- **Check PdpGroup Audit Policy (defaultGroup)** - checks the audit information for the defaultGroup PdpGroup with the defaultDomain policy 1.0.0. -- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that 2 PdpGroups are in the ACTIVE state and defaultGroup has a policy deployed on it. -- **Deployment Update for sampleGroup policy** - deploys the policy sampleDomain in sampleGroup PdpGroup using pap api -- **Check status of sampleGroup** - checks the status of the sampleGroup PdpGroup. -- **Check status of PdpGroups** - checks the status of both PdpGroups. -- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that the defaultGroup has a policy defaultDomain deployed on it and sampleGroup has policy sampleDomain deployed on it. -- **Check Audit** - checks the audit information for all PdpGroups. -- **Check Consolidated Health** - checks the consolidated health status of all policy components. -- **Check Deployed Policies** - checks for all the deployed policies using pap api. -- **Undeploy policy in sampleGroup** - undeploys the policy sampleDomain from sampleGroup PdpGroup using pap api -- **Undeploy policy in defaultGroup** - undeploys the policy defaultDomain from PdpGroup -- **Check status of policies** - checks the status of all policies and make sure both the policies are undeployed -- **Check PdpGroup Query** - makes a PdpGroup query request and verifies that PdpGroup is in the PASSIVE state. -- **PAP Metrics after deployments** - Fetch prometheus metrics after the deployment/undeployment cycle - Save the new counter values such as deploy/undeploy-success/failure counters at API and engine level, and check that the deploySuccess and undeploySuccess counters are increased by 2. - -.. Note:: - To avoid putting a large Constant Timer value after every deployment/undeployment, the status API is polled until the deployment/undeployment - is successfully completed, or until a timeout. This is to make sure that the operation is completed successfully and the PDPs gets enough time to respond back. - Otherwise, before the deployment is marked successful by PAP, an undeployment could be triggered as part of other tests, - and the operation's corresponding prometheus counter at engine level will not get updated. - -Teardown Phase (steps running only once after PAP Test Flow is completed) -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -- **Change state to PASSIVE(sampleGroup)** - changes the state of sampleGroup PdpGroup to PASSIVE -- **Delete PdpGroup sampleGroup** - delete the sampleGroup PdpGroup using pap api -- **Change State to PASSIVE(defaultGroup)** - changes the state of defaultGroup PdpGroup to PASSIVE -- **Delete policy created for defaultGroup** - deletes the operational policy defaultDomain using policy/api component -- **Delete Policy created for sampleGroup** - deletes the operational policy sampleDomain using policy/api component -- **Delete Nodetemplate metadata for sampleGroup policy** - deleted the nodetemplate containing metadata for sampleGroup policy - -The following steps can be used to configure the parameters of test plan. - -- **HTTP Authorization Manager** - used to store user/password authentication details. -- **HTTP Header Manager** - used to store headers which will be used for making HTTP requests. -- **User Defined Variables** - used to store following user defined parameters. - -=========== =================================================================== - **Name** **Description** -=========== =================================================================== - PAP_HOST IP Address or host name of PAP component - PAP_PORT Port number of PAP for making REST API calls - API_HOST IP Address or host name of API component - API_PORT Port number of API for making REST API calls -=========== =================================================================== - -The test was run in the background via "nohup", to prevent it from being interrupted: - -.. code-block:: bash - - nohup apache-jmeter-5.6.2/bin/jmeter -n -t stability.jmx -l stabilityTestResults.jtl & - -Test Results ------------- - -**Summary** - -Stability test plan was triggered for 72 hours. There were no failures during the 72 hours test. - - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== - 170212 100 % 0.00 % 419 ms -======================= ================= ================== ================================== - - -**JMeter Screenshot** - -.. image:: pap-s3p-results/pap_stability_jmeter_results.png - -**Memory and CPU usage** - -The memory and CPU usage can be monitored by running "docker stats" command in the PAP container. -A snapshot is taken before, during and after test execution to monitor the changes in resource utilization. -Prometheus metrics is also collected before and after the test execution. - -Memory and CPU usage before test execution: - -.. image:: pap-s3p-results/pap_stats_before_72h.png - -:download:`Prometheus metrics before 72h test <pap-s3p-results/pap_metrics_before_72h.txt>` - -Memory and CPU usage during test execution: - -.. image:: pap-s3p-results/pap_stats_during_72h.png - -Memory and CPU usage after test execution: - -.. image:: pap-s3p-results/pap_stats_after_72h.png - -:download:`Prometheus metrics after 72h test <pap-s3p-results/pap_metrics_after_72h.txt>` - -Performance Test of PAP -++++++++++++++++++++++++ - -Introduction ------------- - -Performance test of PAP has the goal of testing the min/avg/max processing time and rest call throughput for all the requests with multiple requests at the same time. - -Setup Details -------------- - -The performance test is performed on a similar setup as Stability test. The JMeter VM will be sending a large number of REST requests to the PAP component and collecting the statistics. - - -Test Plan ---------- - -Performance test plan is the same as the stability test plan above except for the few differences listed below. - -- Increase the number of threads up to 10 (simulating 10 users' behaviours at the same time). -- Reduce the test time to 2 hours. -- Usage of counters (simulating each user) to create different pdpGroups, update their state and later delete them. -- Removed the tests to deploy policies to newly created groups as this will need a larger setup with multiple pdps registered to each group, which will also slow down the performance test with the time needed for registration process etc. -- Usage of counters (simulating each user) to create different drools policies and deploy them to defaultGroup. - In the test, a thread count of 10 is used resulting in 10 different drools policies getting deployed and undeployed continuously for 2 hours. - Other standard operations like checking the deployment status of policies, checking the metrics, health etc remains. - -Run Test --------- - -Running/Triggering the performance test will be the same as the stability test. That is, launch JMeter pointing to corresponding *.jmx* test plan. The *API_HOST* , *API_PORT* , *PAP_HOST* , *PAP_PORT* are already set up in *.jmx*. - -.. code-block:: bash - - nohup apache-jmeter-5.6.2/bin/jmeter -n -t performance.jmx -l performanceTestResults.jtl & - -Test Results ------------- - -Test results are shown as below. - -**Test Statistics** - -======================= ================= ================== ================================== -**Total # of requests** **Success %** **Error %** **Average time taken per request** -======================= ================= ================== ================================== -48093 100 % 0.00 % 1116 ms -======================= ================= ================== ================================== - -**JMeter Screenshot** - -.. image:: pap-s3p-results/pap_performance_jmeter_results.png diff --git a/docs/development/devtools/testing/s3p/run-s3p.rst b/docs/development/devtools/testing/s3p/run-s3p.rst index 17eba32a..1ac88442 100644 --- a/docs/development/devtools/testing/s3p/run-s3p.rst +++ b/docs/development/devtools/testing/s3p/run-s3p.rst @@ -6,11 +6,11 @@ Running the Policy Framework S3P Tests Per release, the policy framework team perform stability and performance tests per component of the policy framework. This testing work involves performing a series of test on a full OOM deployment and updating the various test plans to work towards the given deployment. -This work can take some time to setup before performing any tests to begin with. +This work can take some time to setup to begin with, before performing any tests. For stability testing, a tool called JMeter is used to trigger a series of tests for a period of 72 hours which has to be manually initiated and monitored by the tester. -Likewise, with the performance tests, but in this case for ~2 hours. -As part of the work to make to automate this process a script can be now triggered to bring up a microk8s cluster on a VM, install JMeter, alter the cluster info to match the JMX test plans for JMeter to trigger and gather results at the end. -These S3P tests will be triggered for a shorter period as part of the CSITs to prove the stability and performance of our components. +Likewise, the performance tests run in the same manner but for a shorter time of ~2 hours. +As part of the work to automate this process a script can be now triggered to bring up a microk8s cluster on a VM, install JMeter, alter the cluster info to match the JMX test plans for JMeter to trigger and gather results at the end. +These S3P tests will be triggered for a shorter period as part of the GHAs to prove the stability and performance of our components. There has been recent work completed to trigger our CSIT tests in a K8s environment. As part of this work, a script has been created to bring up a microk8s cluster for testing purposes which includes all necessary components for our policy framework testing. @@ -19,34 +19,15 @@ Once this cluster is brought up, a script is called to alter the cluster. The IPS and PORTS of our policy components are set by this script to ensure consistency in the test plans. JMeter is installed and the S3P test plans are triggered to run by their respective components. -.. code-block:: bash - :caption: Start S3P Script +`run-s3p-tests.sh <https://github.com/onap/policy-docker/blob/master/csit/run-s3p-tests.sh>`_ - #===MAIN===# - if [ -z "${WORKSPACE}" ]; then - export WORKSPACE=$(git rev-parse --show-toplevel) - fi - export TESTDIR=${WORKSPACE}/testsuites - export API_PERF_TEST_FILE=$TESTDIR/performance/src/main/resources/testplans/policy_api_performance.jmx - export API_STAB_TEST_FILE=$TESTDIR/stability/src/main/resources/testplans/policy_api_stability.jmx - if [ $1 == "run" ] - then - mkdir automate-performance;cd automate-performance; - git clone "https://gerrit.onap.org/r/policy/docker" - cd docker/csit - if [ $2 == "performance" ] - then - bash start-s3p-tests.sh run $API_PERF_TEST_FILE; - elif [ $2 == "stability" ] - then - bash start-s3p-tests.sh run $API_STAB_TEST_FILE; - else - echo "echo Invalid arguments provided. Usage: $0 [option..] {performance | stability}" - fi - else - echo "Invalid arguments provided. Usage: $0 [option..] {run | uninstall}" - fi +This script automates the setup, execution, and teardown of S3P tests for policy components. +It initializes a Kubernetes environment, installs Apache JMeter for running test plans, and executes specified JMX test files. +The script logs all operations, tracks errors, warnings, and processed files, and provides a summary report upon completion. +It includes options to either run tests (test <jmx_file>) or clean up the environment (clean). The clean option uninstalls the Kubernetes cluster and removes temporary resources. +The script also ensures proper resource usage tracking and error handling throughout its execution. -This script is triggered by each component. -It will export the performance and stability testplans and trigger the start-s3p-test.sh script which will perform the steps to automatically run the s3p tests. +`run-s3p-test.sh <https://github.com/onap/policy-api/blob/master/testsuites/run-s3p-test.sh>`_ +In summary, this script automates running performance or stability tests for a Policy Framework component by setting up necessary directories, cloning the required docker repository, and executing predefined test plans. +It also provides a clean-up option to remove resources after testing.
\ No newline at end of file diff --git a/docs/development/devtools/testing/s3p/s3p-test-overview.rst b/docs/development/devtools/testing/s3p/s3p-test-overview.rst new file mode 100644 index 00000000..f79ba921 --- /dev/null +++ b/docs/development/devtools/testing/s3p/s3p-test-overview.rst @@ -0,0 +1,118 @@ +.. This work is licensed under a +.. Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Policy Framework S3P Tests Overview +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. contents:: + :depth: 2 + +Starting with the Oslo release of the Policy Framework, S3P tests are now triggered differently. + +Our S3P tests for each component run automatically every Monday. This includes both performance and stability tests. These tests are triggered in a GitHub Actions environment, and the results for each test can be found under the "Actions" tab in the GitHub repository for each component. + +Stability and Performance Test Workflows +---------------------------------------- + +Each component of the Policy Framework contains two workflow files in the `.github/workflows` directory: +- `gerrit-{componentName}-performance.yaml` +- `gerrit-{componentName}-stability.yaml` + +.. image:: images/workflows.png + +An example of the configuration for one of these files is shown below: + +.. code-block:: yaml + + name: policy-api-stability-test + + on: + workflow_dispatch: + inputs: + GERRIT_BRANCH: + description: 'Branch that the change is against' + required: true + type: string + GERRIT_CHANGE_ID: + description: 'The ID for the change' + required: true + type: string + GERRIT_CHANGE_NUMBER: + description: 'The Gerrit change number' + required: true + type: string + GERRIT_CHANGE_URL: + description: 'URL of the change' + required: true + type: string + GERRIT_EVENT_TYPE: + description: 'The type of Gerrit event' + required: true + type: string + GERRIT_PATCHSET_NUMBER: + description: 'The patch number for the change' + required: true + type: string + GERRIT_PATCHSET_REVISION: + description: 'The SHA of the revision' + required: true + type: string + GERRIT_PROJECT: + description: 'The project in Gerrit' + required: true + type: string + GERRIT_REFSPEC: + description: 'The Gerrit refspec for the change' + required: true + type: string + branch_protection_rule: + # Ensures that the "Maintained" check is occasionally updated. + # See https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + + # Runs every Monday at 16:30 UTC + schedule: + - cron: '30 16 * * 1' + + jobs: + run-s3p-tests: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4 + + - name: Run S3P script + working-directory: ${{ github.workspace }}/testsuites + run: sudo bash ./run-s3p-test.sh run stability + + - name: Archive result .jtl + uses: actions/upload-artifact@v4 + with: + name: policy-api-s3p-results + path: ${{ github.workspace }}/testsuites/automate-performance/s3pTestResults.jtl + + - name: Archive JMeter logs + uses: actions/upload-artifact@v4 + with: + name: policy-api-s3p-jmeter-log + path: ${{ github.workspace }}/testsuites/automate-performance/jmeter.log + +Analyzing the Results +##################### + +The results of each workflow run can be found under the "Actions" tab. + +.. image:: images/workflow-results.png + +To investigate the results further, click on a completed test run. You will see details about: +- The test that was executed +- The test's status (indicated by a green checkmark or a red "X") +- The artifacts produced during the test + +The artifacts include: +- A test result file in `.jtl` format +- JMeter logs, which can assist in debugging test failures + +.. image:: images/workflow-test-result.png + +Both the stability and performance tests run for two hours each in the GitHub Actions environment. Since these tests are conducted weekly and closely monitored by the Policy Framework team, the previous practice of running stability tests for 72 hours has been deemed unnecessary. diff --git a/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-perf-xacml.png b/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-perf-xacml.png Binary files differdeleted file mode 100644 index 6f30f143..00000000 --- a/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-perf-xacml.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-stability-xacml.png b/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-stability-xacml.png Binary files differdeleted file mode 100644 index 842ec9dd..00000000 --- a/docs/development/devtools/testing/s3p/xacml-s3p-results/s3p-stability-xacml.png +++ /dev/null diff --git a/docs/development/devtools/testing/s3p/xacml-s3p.rst b/docs/development/devtools/testing/s3p/xacml-s3p.rst deleted file mode 100644 index 3b81406b..00000000 --- a/docs/development/devtools/testing/s3p/xacml-s3p.rst +++ /dev/null @@ -1,198 +0,0 @@ -.. This work is licensed under a -.. Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _xacml-s3p-label: - -.. toctree:: - :maxdepth: 2 - -########################## - -Policy XACML PDP S3P Tests -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Both the Performance and the Stability tests were executed by performing requests -against Policy components installed in Kubernetes environment. These tests were all -performed on a Ubuntu VM with 32GB of memory, 16 CPU and 100GB of disk space. - -Policy XACML PDP Deployment -+++++++++++++++++++++++++++ - -In an effort to allow the execution of the s3p tests to be as close to automatic as possible, -a script will be executed that will perform the following: - -- Install of a microk8s kubernetes environment -- Bring up the policy components -- Checks that the components are successfully up and running before proceeding -- Install Java 17 -- Install Jmeter locally and configure it -- Specify whether you want to run stability or performance tests - - -The remainder of this document outlines how to run the tests and the test results - -Common Setup -++++++++++++ -The common setup for performance and stability tests is now automated - being carried out by a script in- **testsuites/run-s3p-test.sh**. - -Clone the policy-xacml-pdp repo to access the test scripts - -.. code-block:: bash - - git clone https://gerrit.onap.org/r/policy/xacml-pdp xacml-pdp - -Stability Test of Policy XACML PDP -++++++++++++++++++++++++++++++++++ - -Test Plan ---------- -The 24 hours stability test ran the following steps. - -- Healthcheck, 2 simultaneous threads -- Decisions, 2 simultaneous threads, each running the following tasks in sequence: - - Monitoring Decision - - Monitoring Decision, abbreviated - - Naming Decision - - Optimization Decision - - Default Guard Decision (always "Permit") - - Frequency Limiter Guard Decision - - Min/Max Guard Decision - -This runs for 24 hours. Test results are present in the **testsuites/automated-performance/s3pTestResults.jtl** -file and in **/tmp/** directory. Logs are present for jmeter in **testsuites/automated-performance/jmeter.log** and -**testsuites/automated-performance/nohup.out** - -Run Test --------- - -The code in the setup section also serves to run the tests. Just one execution needed to do it all. - -.. code-block:: bash - - bash run-s3p-test.sh run stability - -Once the test execution is completed, the results are present in the **automate-performance/s3pTestResults.jtl** file. - -This file can be imported into the Jmeter GUI for visualization. The below results are tabulated from the GUI. - -Test Results ------------- - -**Summary** - -Stability test plan was triggered for 24 hours. - -**Test Statistics** - -======================= ================= ======================== ========================= -**Total # of requests** **Error %** **Average Latency (ms)** **Measured requests/sec** -======================= ================= ======================== ========================= - 54472562 0.00 % 5 ms 630.1 ms -======================= ================= ======================== ========================= - -**JMeter Results** - -.. image:: xacml-s3p-results/s3p-stability-xacml.png - -**Policy component Setup** - -============================================== ==================================================================== ============================================= -**NAME** **IMAGE** **PORT** -============================================== ==================================================================== ============================================= -zookeeper-deployment-7ff87c7fcc-fbsfb confluentinc/cp-zookeeper:latest 2181/TCP -kafka-deployment-5c87d497b-m8s2g confluentinc/cp-kafka:latest 9092/TCP -policy-drools-pdp-0 nexus3.onap.org:10001/onap/policy-pdpd-cl:2.1.3-SNAPSHOT 6969/TCP 9696/TCP -policy-apex-pdp-0 nexus3.onap.org:10001/onap/policy-apex-pdp:3.1.3-SNAPSHOT 6969/TCP -policy-distribution-f48bff778-48pm2 nexus3.onap.org:10001/onap/policy-distribution:3.1.3-SNAPSHOT 6969/TCP -policy-models-simulator-6947667bdc-wcd9r nexus3.onap.org:10001/onap/policy-models-simulator:3.1.3-SNAPSHOT 6666/TCP 6680/TCP 6668/TCP 6669/TCP 6670/TCP -policy-clamp-ac-http-ppnt-7d747b5d98-wmr5n nexus3.onap.org:10001/onap/policy-clamp-ac-http-ppnt:7.1.3-SNAPSHOT 8084/TCP -policy-clamp-ac-k8s-ppnt-6bbd86bbc6-vnvx6 nexus3.onap.org:10001/onap/policy-clamp-ac-k8s-ppnt:7.1.3-SNAPSHOT 8083/TCP -policy-clamp-ac-pf-ppnt-5fcbbcdb6c-k2cbk nexus3.onap.org:10001/onap/policy-clamp-ac-pf-ppnt:7.1.3-SNAPSHOT 6969/TCP -policy-clamp-ac-sim-ppnt-97f487577-m2zjr nexus3.onap.org:10001/onap/policy-clamp-ac-sim-ppnt:7.1.3-SNAPSHOT 6969/TCP -policy-clamp-runtime-acm-66b5d6b64-l6dpq nexus3.onap.org:10001/onap/policy-clamp-runtime-acm:7.1.3-SNAPSHOT 6969/TCP -mariadb-galera-0 docker.io/bitnami/mariadb-galera:10.5.8 3306/TCP -prometheus-f66f97b6-kkmpq nexus3.onap.org:10001/prom/prometheus:latest 9090/TCP -policy-api-7f7d995b4-2zhnw nexus3.onap.org:10001/onap/policy-api:3.1.3-SNAPSHOT 6969/TCP -policy-pap-f7899d4cd-mfrtp nexus3.onap.org:10001/onap/policy-pap:3.1.3-SNAPSHOT 6969/TCP -policy-xacml-pdp-6c86f85ff6-6qzgf nexus3.onap.org:10001/onap/policy-xacml-pdp:3.1.2 6969/TCP -============================================== ==================================================================== ============================================= - -.. Note:: - - .. container:: paragraph - - There were no failures during the 24 hours test. - -The XACML PDP offered very good performance with JMeter for the traffic mix described above. -The average transaction time is insignificant. - - -Performance Test of Policy XACML PDP -++++++++++++++++++++++++++++++++++++ - -Introduction ------------- - -Performance test of acm components has the goal of testing the min/avg/max processing time and rest call throughput for all the requests with multiple requests at the same time. - -Setup Details -------------- - -We can setup the environment and execute the tests like this from the **xacml-pdp/testsuites** directory - -Test Plan ---------- - -Performance test plan is the same as the stability test plan above except for the few differences listed below. - -- Increase the number of threads up to 10 (simulating 10 users' behaviours at the same time). -- Reduce the test time to 20 minutes. - -The performance tests runs the following, all in parallel: - -- Healthcheck, 10 simultaneous threads -- Decisions, 10 simultaneous threads, each running the following in sequence: - - - Monitoring Decision - - Monitoring Decision, abbreviated - - Naming Decision - - Optimization Decision - - Default Guard Decision (always "Permit") - - Frequency Limiter Guard Decision - - Min/Max Guard Decision - -When the script starts up, it uses policy-api to create, and policy-pap to deploy -the policies that are needed by the test. It assumes that the "naming" policy has -already been created and deployed. Once the test completes, it undeploys and deletes -the policies that it previously created. - -Run Test --------- - -The code in the setup section also serves to run the tests. Just one execution needed to do it all. - -.. code-block:: bash - - bash run-s3p-test.sh run performance - -Once the test execution is completed, the results are present in the **automate-performance/s3pTestResults.jtl** file and in **/tmp/** directory. - -This file can be imported into the Jmeter GUI for visualization. The below results are tabulated from the GUI. - -Test Results ------------- - -**Summary** - -The test was run for 20 minutes with 10 users (i.e., threads), with the following results: - -**Test Statistics** - -======================= ================= ======================== ========================= -**Total # of requests** **Error %** **Average Latency (ms)** **Measured requests/sec** -======================= ================= ======================== ========================= - 888047 0.00 % 25 ms 723.2 ms -======================= ================= ======================== ========================= - -.. image:: xacml-s3p-results/s3p-perf-xacml.png diff --git a/docs/development/pdp/pdp-pap-interaction.rst b/docs/development/pdp/pdp-pap-interaction.rst index 14a92517..eff8a79e 100644 --- a/docs/development/pdp/pdp-pap-interaction.rst +++ b/docs/development/pdp/pdp-pap-interaction.rst @@ -13,7 +13,7 @@ Guidelines for PDP-PAP interaction A PDP (Policy Decision Point) is where the policy execution happens. The administrative actions such as managing the PDPs, deploying or undeploying policies to these PDPs etc. are handled by PAP (Policy Administration Point). Any PDP should follow certain behavior to be registered and functional in -the Policy Framework. All the communications between PAP and PDP happen over DMaaP on topic *POLICY-PDP-PAP*. +the Policy Framework. All the communications between PAP and PDP happen over Kafka on topic *POLICY-PDP-PAP*. The below diagram shows how a PDP interacts with PAP. .. image:: images/PDP_PAP.svg @@ -23,7 +23,7 @@ The below diagram shows how a PDP interacts with PAP. A PDP should be configured to start with the below information in its startup configuration file. - *pdpGroup* to which the PDP should belong to. -- *DMaaP topic* 'POLICY-PDP-PAP' which should be the source and sink for communicating with PAP. +- *Kafka topic* 'POLICY-PDP-PAP' which should be the source and sink for communicating with PAP. **2. PDP sends PDP_STATUS (registration message)** @@ -81,7 +81,7 @@ PAP also sends the *pdpHeartbeatIntervalMs* which is the time interval in which **4. PDP sends PDP_STATUS response to PDP_UPDATE** -PDP on receiving the PDP_UPDATE message from the DMaaP topic, it first checks if the message is intended for the PDP. +PDP on receiving the PDP_UPDATE message from the Kafka topic, it first checks if the message is intended for the PDP. If so, it updates itself with the information in PDP_UPDATE message from PAP such as *pdpSubgroup*, *pdpHeartbeatIntervalMs* and *policiesToBeDeployed* (if any). After handling the PDP_UPDATE message, the PDP sends a response message back to PAP with the current status of the PDP along with the result of the PDP_UPDATE operation. diff --git a/docs/development/prometheus-metrics.rst b/docs/development/prometheus-metrics.rst index 74532311..e7d4d3a6 100644 --- a/docs/development/prometheus-metrics.rst +++ b/docs/development/prometheus-metrics.rst @@ -188,6 +188,6 @@ Key metrics for Policy Distribution =================================================================== Policy Framework uses ServiceMonitor custom resource definition (CRD) to allow Prometheus to monitor the services it exposes. Label selection is used to determine which services are selected to be monitored. -For label management and troubleshooting refer to the documentation at: `Prometheus operator <https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/troubleshooting.md>`__. +For label management and troubleshooting refer to the documentation at: `Prometheus operator <https://github.com/prometheus-operator/prometheus-operator/tree/main/Documentation>`__. -`OOM charts <https://github.com/onap/oom/tree/master/kubernetes/policy/components>`__ for policy include ServiceMonitor and properties can be overrided based on the deployment specifics. +`OOM charts <https://github.com/onap/oom/tree/master/kubernetes/policy/components>`__ for policy include ServiceMonitor and properties can be overwritten based on the deployment specifics. diff --git a/docs/drools/ctrlog_config.png b/docs/drools/ctrlog_config.png Binary files differdeleted file mode 100755 index 8d5aeb65..00000000 --- a/docs/drools/ctrlog_config.png +++ /dev/null diff --git a/docs/drools/ctrlog_enablefeature.png b/docs/drools/ctrlog_enablefeature.png Binary files differdeleted file mode 100755 index dc1abf34..00000000 --- a/docs/drools/ctrlog_enablefeature.png +++ /dev/null diff --git a/docs/drools/ctrlog_logback.png b/docs/drools/ctrlog_logback.png Binary files differdeleted file mode 100755 index 252f3fe1..00000000 --- a/docs/drools/ctrlog_logback.png +++ /dev/null diff --git a/docs/drools/ctrlog_view.png b/docs/drools/ctrlog_view.png Binary files differdeleted file mode 100755 index 118bd64d..00000000 --- a/docs/drools/ctrlog_view.png +++ /dev/null diff --git a/docs/drools/drools.rst b/docs/drools/drools.rst index 1bcbda9a..447102df 100644 --- a/docs/drools/drools.rst +++ b/docs/drools/drools.rst @@ -9,7 +9,7 @@ Policy Drools PDP Engine :depth: 1 The Drools PDP, aka PDP-D, is the PDP in the Policy Framework that uses the -`Drools BRMS <https://www.drools.org/>`__ to enforce policies. +`Drools BRMS <https://www.drools.org/>`_ to enforce policies. The PDP-D functionality has been partitioned into two functional areas: @@ -18,8 +18,8 @@ The PDP-D functionality has been partitioned into two functional areas: **PDP-D Engine** -The PDP-D Engine is the infrastructure that *policy applications* use. -It provides networking services, resource grouping, and diagnostics. +The PDP-D Engine is the infrastructure that *policy applications* use. It provides networking +services, resource grouping, and diagnostics. The PDP-D Engine supports the following Tosca Native Policy Types: @@ -28,18 +28,16 @@ The PDP-D Engine supports the following Tosca Native Policy Types: These types are used to dynamically add and configure new application controllers. -The PDP-D Engine hosts applications by means of *controllers*. -*Controllers* may support other Tosca Policy Types. The -types supported by the *Control Loop* applications are: +The PDP-D Engine hosts applications by means of *controllers*. *Controllers* may support other +Tosca Policy Types. The types supported by the *Control Loop* applications are: - onap.policies.controlloop.operational.common.Drools **PDP-D Applications** -A PDP-D application, ie. a *controller*, contains references to the -resources that the application needs. These include networked endpoint references, -and maven coordinates. +A PDP-D application, ie. a *controller*, contains references to the resources that the application +needs. These include networked endpoint references, and maven coordinates. *Control Loop* applications are used in ONAP to enforce operational policies. @@ -52,3 +50,11 @@ The following guides offer more information in these two functional areas. pdpdEngine.rst pdpdApps.rst + +Additional information +====================== + +For additional information, please see the +`Drools PDP Development and Testing (In Depth) <https://wiki.onap.org/display/DW/2020-08+Frankfurt+Tutorials>`_ page. + +End of Document diff --git a/docs/drools/feature_activestdbymgmt.rst b/docs/drools/feature_activestdbymgmt.rst deleted file mode 100644 index 1ed655c9..00000000 --- a/docs/drools/feature_activestdbymgmt.rst +++ /dev/null @@ -1,113 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _feature-asm-label: - -********************************** -Feature: Active/Standby Management -********************************** - -.. contents:: - :depth: 3 - -When the Feature Session Persistence is enabled, there can only be one active/providing service Drools PDP due to the behavior of Drools persistence. The Active/Standby Management Feature controls the selection of the Drools PDP that is providing service. It utilizes its own database and the State Management Feature database in the election algorithm. All Drools PDP nodes periodically run the election algorithm and, since they all use the same data, all nodes come to the same conclusion with the "elected" node assuming an active/providingservice state. Thus, the algorithm is distributed and has no single point of failure - assuming the database is configured for high availability. - -When the algorithm selects a Drools PDP to be active/providing service the controllers and topic endpoints are unlocked and allowed to process transactions. When a Drools PDP transitions to a hotstandby or coldstandby state, the controllers and topic endpoints are locked, preventing the Drools PDP from handling transactions. - - -Enabling and Disabling Feature State Management -=============================================== - -The Active/Standby Management Feature is enabled from the command line when logged in as policy after configuring the feature properties file (see Description Details section). From the command line: - -- > features status - Lists the status of features -- > features enable active-standby-management - Enables the Active-Standby Management Feature -- > features disable active-standby-management - Disables the Active-Standby Management Feature - -The Drools PDP must be stopped prior to enabling/disabling features and then restarted after the features have been enabled/disabled. - - .. code-block:: bash - :caption: Enabling Active/Standby Management Feature - - policy@hyperion-4:/opt/app/policy$ policy stop - [drools-pdp-controllers] - L []: Stopping Policy Management... Policy Management (pid=354) is stopping... Policy Management has stopped. - policy@hyperion-4:/opt/app/policy$ features enable active-standby-management - name version status - ---- ------- ------ - controlloop-utils 1.1.0-SNAPSHOT disabled - healthcheck 1.1.0-SNAPSHOT disabled - test-transaction 1.1.0-SNAPSHOT disabled - eelf 1.1.0-SNAPSHOT disabled - state-management 1.1.0-SNAPSHOT disabled - active-standby-management 1.1.0-SNAPSHOT enabled - session-persistence 1.1.0-SNAPSHOT disabled - - -Description Details -~~~~~~~~~~~~~~~~~~~ - -Election Algorithm ------------------- - -The election algorithm selects the active/providingservice Drools PDP. The algorithm on each node reads the *standbystatus* from the *StateManagementEntity* table for all other nodes to determine if they are providingservice or in a hotstandby state and able to assume an active status. It uses the *DroolsPdpEntity* table to verify that other node election algorithms are currently functioning and when the other nodes were last designated as the active Drools PDP. - -In general terms, the election algorithm periodically gathers the standbystatus and designation status for all the Drools PDPs. If the node which is currently designated as providingservice is "current" in updating its status, no action is required. If the designated node is either not current or has a standbystatus other than providingservice, it is time to choose another designated *DroolsPDP*. The algorithm will build a list of all DroolsPDPs that are current and have a *standbystatus* of *hotstandby*. It will then give preference to DroolsPDPs within the same site, choosing the DroolsPDP with the lowest lexicographic value to the droolsPdpId (resourceName). If the chosen DroolsPDP is itself, it will promote its standbystatus from hotstandby to providingservice. If the chosen DroolsPDP is other than itself, it will do nothing. - -When the DroolsPDP promotes its *standbystatus* from hotstandby to providing service, a state change notification will occur and the Standby State Change Handler will take appropriate action. - - -Standby State Change Handler ----------------------------- - -The Standby State Change Handler (*PMStandbyStateChangeHandler* class) extends the IntegrityMonitor StateChangeNotifier class which implements the Observer class. When the DroolsPDP is constructed, an instance of the handler is constructed and registered with StateManagement. Whenever StateManagement implements a state transition, it calls the *handleStateChange()* method of the handler. If the StandbyStatus transitions to hot or cold standby, the handler makes a call into the lower level management layer to lock the application controllers and topic endpoints, preventing it from handling transactions. If the StandbyStatus transitions to providingservice, the handler makes a call into the lower level management layer to unlock the application controllers and topic endpoints, allowing it to handle transactions. - - -Database --------- - -The Active/Standby Feature creates a database named activestandbymanagement with a single table, **droolspdpentity**. The election handler uses that table to determine which DroolsPDP was/is designated as the active DroolsPDP and which DroolsPDP election handlers are healthy enough to periodically update their status. - -The **droolspdpentity** table has the following columns: - - **pdpId** - The unique indentifier for the DroolsPDP. It is the same as the resourceName - - **designated** - Has a value of 1 if the DroolsPDP is designated as active/providingservice. It has a value of 0 otherwise - - **priority** - Indicates the priority level of the DroolsPDP for the election handler. In general, this is ignore and all have the same priority. - - **updatedDate** - This is the timestamp for the most recent update of the record. - - **designatedDate** - This is the timestamp that indicates when the designated column was most recently set to a value of 1 - - **site** - This is the name of the site - -Properties ----------- - -The properties are found in the feature-active-standby-management.properties file. In general, the properties are adequately described in the properties file. Parameters which must be replaced prior to usage are indicated thus: ${{parameter to be replaced}} - - .. code-block:: bash - :caption: feature-active-standby-mangement.properties - - # DB properties - javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver - javax.persistence.jdbc.url=jdbc:mariadb://${{SQL_HOST}}:3306/activestandbymanagement - javax.persistence.jdbc.user=${{SQL_USER}} - javax.persistence.jdbc.password=${{SQL_PASSWORD}} - - # Must be unique across the system - resource.name=pdp1 - # Name of the site in which this node is hosted - site_name=site1 - - # Needed by DroolsPdpsElectionHandler - pdp.checkInterval=1500 # The interval in ms between updates of the updatedDate - pdp.updateInterval=1000 # The interval in ms between executions of the election handler - #pdp.timeout=3000 - # Need long timeout, because testTransaction is only run every 10 seconds. - pdp.timeout=15000 - #how long do we wait for the pdp table to populate on initial startup - pdp.initialWait=20000 - - -End of Document - -.. SSNote: Wiki page ref. https://wiki.onap.org/pages/viewpage.action?pageId=16005790 - - diff --git a/docs/drools/feature_controllerlogging.rst b/docs/drools/feature_controllerlogging.rst deleted file mode 100644 index fc8d6dab..00000000 --- a/docs/drools/feature_controllerlogging.rst +++ /dev/null @@ -1,48 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _feature_controllerlogging-label: - -*************************** -Feature: Controller Logging -*************************** - -.. contents:: - :depth: 3 - -The controller logging feature provides a way to log network topic messages to a separate controller log file for each controller. This allows a clear separation of network traffic between all of the controllers. - -Type "features enable controller-logging". The feature will now display as "enabled". - - .. image:: ctrlog_enablefeature.png - -When the feature's enable script is executed, it will search the $POLICY_HOME/config directory for any logback files containing the prefix "logback-include-". These logger configuration files are typically provided with a feature that installs a controlloop (ex: controlloop-amsterdam and controlloop-casablanca features). Once these configuration files are found by the enable script, the logback.xml config file will be updated to include the configurations. - - .. image:: ctrlog_logback.png - - -Controller Logger Configuration -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The contents of a logback-include-``*``.xml file follows the same configuration syntax as the logback.xml file. It will contain the configurations for the logger associated with the given controller. - - .. note:: A controller logger MUST be configured with the same name as the controller (ex: a controller named "casablanca" will have a logger named "casablanca"). - - .. image:: ctrlog_config.png - - -Viewing the Controller Logs -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Once a logger for the controller is configured, start the drools-pdp and navigate to the $POLICY_LOGS directory. A new controller specific network log will be added that contains all the network topic traffic of the controller. - - .. image:: ctrlog_view.png - -The original network log remains and will append traffic information from all topics regardless of which controller it is for. To abbreviate and customize messages for the network log, refer to the -:ref:`Feature MDC Filters <feature_mdcfilters-label>` documentation. - - -End of Document - - diff --git a/docs/drools/feature_eelf.rst b/docs/drools/feature_eelf.rst deleted file mode 100644 index a505490c..00000000 --- a/docs/drools/feature_eelf.rst +++ /dev/null @@ -1,47 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -************************************************* -Feature: EELF (Event and Error Logging Framework) -************************************************* - -.. contents:: - :depth: 3 - -The EELF feature provides backwards compatibility with R0 logging functionality. It supports the use of EELF/Common Framework style logging at the same time as traditional logging. - -.. seealso:: Additional information for EELF logging can be found at `EELF wiki`_. - -.. _EELF wiki: https://github.com/att/EELF/wiki - - -To utilize the eelf logging capabilities, first stop policy engine and then enable the feature using the "*features*" command. - - .. code-block:: bash - :caption: Enabling EELF Feature - - policy@hyperion-4:/opt/app/policy$ policy stop - [drools-pdp-controllers] - L []: Stopping Policy Management... Policy Management (pid=354) is stopping... Policy Management has stopped. - policy@hyperion-4:/opt/app/policy$ features enable eelf - name version status - ---- ------- ------ - controlloop-utils 1.1.0-SNAPSHOT disabled - healthcheck 1.1.0-SNAPSHOT disabled - test-transaction 1.1.0-SNAPSHOT disabled - eelf 1.1.0-SNAPSHOT enabled - state-management 1.1.0-SNAPSHOT disabled - active-standby-management 1.1.0-SNAPSHOT disabled - session-persistence 1.1.0-SNAPSHOT disabled - -The output of the enable command will indicate whether or not the feature was enabled successfully. - -Policy engine can then be started as usual. - - - -End of Document - -.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Feature+EELF - diff --git a/docs/drools/feature_mdcfilters.rst b/docs/drools/feature_mdcfilters.rst deleted file mode 100644 index b7077138..00000000 --- a/docs/drools/feature_mdcfilters.rst +++ /dev/null @@ -1,117 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _feature_mdcfilters-label: - -******************** -Feature: MDC Filters -******************** - -.. contents:: - :depth: 3 - -The MDC Filter Feature provides configurable properties for network topics to extract fields from JSON strings and place them in a mapped diagnostic context (MDC). - -Before enabling the feature, the network log contains the entire content of each message received on a topic. Below is a sample message from the network log. Note that the topic used for this tutorial is DCAE-CL. - - .. code-block:: bash - - [2019-03-22T16:36:42.942+00:00|DMAAP-source-DCAE-CL][IN|DMAAP|DCAE-CL] - {"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","closedLoopAlarmStart":1463679805324,"closedLoopEventClient":"DCAE_INSTANCE_ID.dcae-tca","closedLoopEventStatus":"ONSET","requestID":"664be3d2-6c12-4f4b-a3e7-c349acced200","target_type":"VNF","target":"generic-vnf.vnf-id","AAI":{"vserver.is-closed-loop-disabled":"false","vserver.prov-status":"ACTIVE","generic-vnf.vnf-id":"vCPE_Infrastructure_vGMUX_demo_app"},"from":"DCAE","version":"1.0.2"} - -The network log can become voluminous if messages received from various topics carry large messages for various controllers. With the MDC Filter Feature, users can define keywords in JSON messages to extract and structure according to a desired format. This is done through configuring the feature's properties. - -Configuring the MDC Filter Feature -================================== - -To configure the feature, the feature must be enabled using the following command: - - .. code-block:: bash - - features enable mdc-filters - - - .. image:: mdc_enablefeature.png - -Once the feature is enabled, there will be a new properties file in *$POLICY_HOME/config* called **feature-mdc-filters.properties**. - - .. image:: mdc_properties.png - -The properties file contains filters to extract key data from messages on the network topics that are saved in an MDC, which can be referenced in logback.xml. The configuration format is as follows: - - .. code-block:: bash - - <protocol>.<type>.topics.<topic-name>.mdcFilters=<filters> - - Where: - <protocol> = ueb, dmaap, noop - <type> = source, sink - <topic-name> = Name of DMaaP or UEB topic - <filters> = Comma separated list of key/json-path(s) - -The filters consist of an MDC key used by **logback.xml** (see below) and the JSON path(s) to the desired data. The path always begins with '$', which signifies the root of the JSON document. The underlying library, JsonPath, uses a query syntax for searching through a JSON file. The query syntax and some examples can be found at https://github.com/json-path/JsonPath. An example filter for the *DCAE-CL* is provided below: - - .. code-block:: bash - - dmaap.source.topics.DCAE-CL.mdcFilters=requestID=$.requestID - -This filter is specifying that the dmaap source topic *DCAE-CL* will search each message received for requestID by following the path starting at the root ($) and searching for the field *requestID*. If the field is found, it is placed in the MDC with the key "requestID" as signified by the left hand side of the filter before the "=". - - -Configuring Multiple Filters and Paths -====================================== - -Multiple fields can be found for a given JSON document by a comma separated list of <mdcKey,jsonPath> pairs. For the previous example, another filter is added by adding a comma and specifying the filter as follows: - - .. code-block:: bash - - dmaap.source.topics.DCAE-CL.mdcFilters=requestID=$.requestID,closedLoopName=$.closedLoopControlName - -The feature will now search for both requestID and closedLoopControlName in a JSON message using the specified "$." path notations and put them in the MDC using the keys "requestID" and "closedLoopName" respectively. To further refine the filter, if a topic receives different message structures (ex: a response message structure vs an error message structure) the "|" notation allows multiple paths to a key to be defined. The feature will search through each specified path until a match is found. An example can be found below: - - .. code-block:: bash - - dmaap.source.topics.DCAE-CL.mdcFilters=requestID=$.requestID,closedLoopName=$.closedLoopControlName|$.AAI.closedLoopControlName - -Now when the filter is searching for closedLoopControlName it will check the first path "$.closedLoopControlName", if it is not present then it will try the second path "$.AAI.closedLoopControlName". If the user is unsure of the path to a field, JsonPath supports a deep scan by using the ".." notation. This will search the entire JSON document for the field without specifying the path. - - -Accessing the MDC Values in logback.xml -======================================= - -Once the feature properties have been defined, logback.xml contains a "abstractNetworkPattern" property that will hold the desired message structure defined by the user. The user has the flexibility to define the message structure however they choose but for this tutorial the following pattern is used: - - .. code-block:: bash - - <property name="abstractNetworkPattern" value="[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}] [%X{networkEventType:-NULL}|%X{networkProtocol:-NULL}|%X{networkTopic:-NULL}|%X{requestID:-NULL}|%X{closedLoopName:-NULL}]%n" /> - -The "value" portion consists of two headers in bracket notation, the first header defines the timestamp while the second header references the keys from the MDC filters defined in the feature properties. The standard logback syntax is used and more information on the syntax can be found here. Note that some of the fields here were not defined in the feature properties file. The feature automatically puts the network infrastructure information in the keys that are prepended with "network". The current supported network infrastructure information is listed below. - - +-------------------+-------------------------------------------------+ - | Field | Values | - +===================+=================================================+ - | networkEventType | IN, OUT | - +-------------------+-------------------------------------------------+ - | networkProtocol | DMAAP, UEB, NOOP | - +-------------------+-------------------------------------------------+ - | networkTopic | The name of the topic that received the message | - +-------------------+-------------------------------------------------+ - - -To reference the keys from the feature properties the syntax "%X{KEY_DEFINED_IN_PROPERTIES}" provides access to the value. An optional addition is to append ":-", which specifies a default value to display in the log if the field was not found in the message received. For this tutorial, a default of "NULL" is displayed for any of the fields that were not found while filtering. The "|" has no special meaning and is just used as a field separator for readability; the user can decorate the log format to their desired visual appeal. - -Network Log Structure After Feature Enabled -=========================================== - -Once the feature and logback.xml is configured to the user's desired settings, start the PDP-D by running "policy start". Based on the configurations from the previous sections of this tutorial, the following log message is written to network log when a message is received on the DCAE-CL topic: - - .. code-block:: bash - - [2019-03-22T16:38:23.884+00:00] [IN|DMAAP|DCAE-CL|664be3d2-6c12-4f4b-a3e7-c349acced200|ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e] - -The message has now been filtered to display the network infrastructure information and the extracted data from the JSON message based on the feature properties. In order to view the entire message received from a topic, a complementary feature was developed to display the entire message on a per controller basis while preserving the compact network log. Refer to the -:ref:`Feature Controller Logging <feature_controllerlogging-label>` documentation for details. - -End of Document - diff --git a/docs/drools/feature_nolocking.rst b/docs/drools/feature_nolocking.rst index e98cc8ee..12c6570a 100644 --- a/docs/drools/feature_nolocking.rst +++ b/docs/drools/feature_nolocking.rst @@ -9,11 +9,11 @@ Feature: no locking .. contents:: :depth: 3 -The no-locking feature allows applications to use a Lock Manager that always succeeds. It does not deny -acquiring resource locks. +The no-locking feature allows applications to use a Lock Manager that always succeeds. It does not +deny acquiring resource locks. -To utilize the no-locking feature, first stop policy engine, disable other locking features, and then enable it -using the "*features*" command. +To utilize the no-locking feature, first stop policy engine, disable other locking features, and +then enable it using the "*features*" command. In an official OOM installation, place a script with a .pre.sh suffix: @@ -35,6 +35,7 @@ under the directory: and rebuild the policy charts. -At container initialization, the distributed-locking will be disabled, and the no-locking feature will be enabled. +At container initialization, the distributed-locking will be disabled, and the no-locking feature +will be enabled. End of Document diff --git a/docs/drools/feature_pooling.rst b/docs/drools/feature_pooling.rst index ba950a3d..705c98e3 100644 --- a/docs/drools/feature_pooling.rst +++ b/docs/drools/feature_pooling.rst @@ -8,7 +8,9 @@ Feature: Pooling **************** -The Pooling feature provides the ability to load-balance work across a “pool” of active-active Drools-PDP hosts. This particular implementation uses a DMaaP topic for communication between the hosts within the pool. +The Pooling feature provides the ability to load-balance work across a “pool” of active-active +Drools-PDP hosts. This particular implementation uses a kafka topic for communication between the +hosts within the pool. The pool is adjusted automatically, with no manual intervention when: * a new host is brought online @@ -18,35 +20,36 @@ Assumptions and Limitations =========================== * Session persistence is not required * Data may be lost when processing is moved from one host to another - * The entire pool may shut down if the inter-host DMaaP topic becomes inaccessible - - .. image:: poolingDesign.png + * The entire pool may shut down if the kafka topic becomes inaccessible Key Points ========== - * Requests are received on a common DMaaP topic - - DMaaP distributes the requests randomly to the hosts - - The request topic should have at least as many partitions as there are hosts - * Uses a single, internal DMaaP topic for all inter-host communication + * Requests are received on a common kafka topic + * Uses a single, kafka topic for all inter-host communication * Allocates buckets to each host - Requests are assigned to buckets based on their respective “request IDs” * No session persistence * No objects copied between hosts * Requires feature(s): distributed-locking - * Precludes feature(s): session-persistence, active-standby, state-management Example Scenario ================ - 1. Incoming DMaaP message is received on a topic — all hosts are listening, but only one random host receives the message + 1. Incoming message is received on a topic — all hosts are listening, but only one random host + receives the message 2. Decode message to determine “request ID” key (message-specific operation) 3. Hash request ID to determine the bucket number 4. Look up host associated with hash bucket (most likely remote) - 5. Publish “forward” message to internal DMaaP topic, including remote host, bucket number, DMaaP topic information, and message body - 6. Remote host verifies ownership of bucket, and routes the DMaaP message to its own rule engine for processing + 5. Publish “forward” message to internal topic, including remote host, bucket number, topic + information, and message body + 6. Remote host verifies ownership of bucket, and routes the message to its own rule engine for + processing - The figure below shows several different hosts in a pool. Each host has a copy of the bucket assignments, which specifies which buckets are assigned to which hosts. Incoming requests are mapped to a bucket, and a bucket is mapped to a host, to which the request is routed. The host table includes an entry for each active host in the pool, to which one or more buckets are mapped. +The figure below shows several different hosts in a pool. Each host has a copy of the bucket +assignments, which specifies which buckets are assigned to which hosts. Incoming requests are mapped +to a bucket, and a bucket is mapped to a host, to which the request is routed. The host table +includes an entry for each active host in the pool, to which one or more buckets are mapped. .. image:: poolingPdps.png @@ -58,7 +61,12 @@ Bucket Reassignment * Leaves buckets with their current owner, where possible * Takes a few buckets from each host to assign to new hosts - For example, in the diagram below, the left side shows how 32 buckets might be assigned among four different hosts. When the first host fails, the buckets from host 1 would be reassigned among the remaining hosts, similar to what is shown on the right side of the diagram. Any requests that were being processed by host 1 will be lost and must be restarted. However, the buckets that had already been assigned to the remaining hosts are unchanged, thus requests associated with those buckets are not impacted by the loss of host 1. +For example, in the diagram below, the left side shows how 32 buckets might be assigned among four +different hosts. When the first host fails, the buckets from host 1 would be reassigned among the +remaining hosts, similar to what is shown on the right side of the diagram. Any requests that were +being processed by host 1 will be lost and must be restarted. However, the buckets that had already +been assigned to the remaining hosts are unchanged, thus requests associated with those buckets are +not impacted by the loss of host 1. .. image:: poolingBuckets.png @@ -73,11 +81,11 @@ For pooling to be enabled, the distributed-locking feature must be also be enabl policy stop features enable distributed-locking - features enable pooling-dmaap + features enable pooling-messages The configuration is located at: - * $POLICY_HOME/config/feature-pooling-dmaap.properties + * $POLICY_HOME/config/feature-pooling-messages.properties .. code-block:: bash @@ -90,12 +98,10 @@ For pooling to be enabled, the distributed-locking feature must be also be enabl :caption: Disable the pooling feature policy stop - features disable pooling-dmaap + features disable pooling-messages policy start End of Document .. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Feature+Pooling - - diff --git a/docs/drools/feature_sesspersist.rst b/docs/drools/feature_sesspersist.rst deleted file mode 100644 index 4bb5ef62..00000000 --- a/docs/drools/feature_sesspersist.rst +++ /dev/null @@ -1,49 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -************************************ -Feature: Session Persistence -************************************ - -The session persistence feature allows drools kie sessions to be persisted in a database surviving pdp-d restarts. - - .. code-block:: bash - :caption: Enable session persistence - :linenos: - - policy stop - features enable session-persistence - -The configuration is located at: - - - *$POLICY_HOME/config/feature-session-persistence.properties* - -Each controller that wants to be started with persistence should contain the following line in its *<controller-name>-controller.properties* - - - *persistence.type=auto* - - .. code-block:: bash - :caption: Start the PDP-D using session-persistence - :linenos: - - db-migrator -o upgrade -s ALL - policy start - -Facts will survive PDP-D restart using the native drools capabilities and introduce a performance overhead. - - .. code-block:: bash - :caption: Disable the session-persistence feature - :linenos: - - policy stop - features disable session-persistence - sed -i "/persistence.type=auto/d" <controller-name>-controller.properties - db-migrator -o erase -s sessionpersistence # delete all its database data (optional) - policy start - -End of Document - -.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Feature+Session+Persistence - - diff --git a/docs/drools/feature_statemgmt.rst b/docs/drools/feature_statemgmt.rst deleted file mode 100644 index 29497003..00000000 --- a/docs/drools/feature_statemgmt.rst +++ /dev/null @@ -1,310 +0,0 @@ - -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -.. _feature-sm-label: - -************************* -Feature: State Management -************************* - -.. contents:: - :depth: 2 - -The State Management Feature provides: - -- Node-level health monitoring -- Monitoring the health of dependency nodes - nodes on which a particular node is dependent -- Ability to lock/unlock a node and suspend or resume all application processing -- Ability to suspend application processing on a node that is disabled or in a standby state -- Interworking/Coordination of state values -- Support for ITU X.731 states and state transitions for: - - Administrative State - - Operational State - - Availability Status - - Standby Status - - -Enabling and Disabling Feature State Management -=============================================== - -The State Management Feature is enabled from the command line when logged in as policy after configuring the feature properties file (see Description Details section). From the command line: - -- > features status - Lists the status of features -- > features enable state-management - Enables the State Management Feature -- > features disable state-management - Disables the State Management Feature - -The Drools PDP must be stopped prior to enabling/disabling features and then restarted after the features have been enabled/disabled. - - .. code-block:: bash - :caption: Enabling State Management Feature - - policy@hyperion-4:/opt/app/policy$ policy stop - [drools-pdp-controllers] - L []: Stopping Policy Management... Policy Management (pid=354) is stopping... Policy Management has stopped. - policy@hyperion-4:/opt/app/policy$ features enable state-management - name version status - ---- ------- ------ - controlloop-utils 1.1.0-SNAPSHOT disabled - healthcheck 1.1.0-SNAPSHOT disabled - test-transaction 1.1.0-SNAPSHOT disabled - eelf 1.1.0-SNAPSHOT disabled - state-management 1.1.0-SNAPSHOT enabled - active-standby-management 1.1.0-SNAPSHOT disabled - session-persistence 1.1.0-SNAPSHOT disabled - -Description Details -~~~~~~~~~~~~~~~~~~~ - -State Model -""""""""""" - -The state model follows the ITU X.731 standard for state management. The supported state values are: - **Administrative State:** - - Locked - All application transaction processing is prohibited - - Unlocked - Application transaction processing is allowed - - **Administrative State Transitions:** - - The transition from Unlocked to Locked state is triggered with a Lock operation - - The transition from the Locked to Unlocked state is triggered with an Unlock operation - - **Operational State:** - - Enabled - The node is healthy and able to process application transactions - - Disabled - The node is not healthy and not able to process application transactions - - **Operational State Transitions:** - - The transition from Enabled to Disabled is triggered with a disableFailed or disableDependency operation - - The transition from Disabled to Enabled is triggered with an enableNotFailed and enableNoDependency operation - - **Availability Status:** - - Null - The Operational State is Enabled - - Failed - The Operational State is Disabled because the node is no longer healthy - - Dependency - The Operational State is Disabled because all members of a dependency group are disabled - - Dependency.Failed - The Operational State is Disabled because the node is no longer healthy and all members of a dependency group are disabled - - **Availability Status Transitions:** - - The transition from Null to Failed is triggered with a disableFailed operation - - The transtion from Null to Dependency is triggered with a disableDependency operation - - The transition from Failed to Dependency.Failed is triggered with a disableDependency operation - - The transition from Dependency to Dependency.Failed is triggered with a disableFailed operation - - The transition from Dependency.Failed to Failed is triggered with an enableNoDependency operation - - The transition from Dependency.Failed to Dependency is triggered with an enableNotFailed operation - - The transition from Failed to Null is triggered with an enableNotFailed operation - - The transition from Dependency to Null is triggered with an enableNoDependency operation - - **Standby Status:** - - Null - The node does not support active-standby behavior - - ProvidingService - The node is actively providing application transaction service - - HotStandby - The node is capable of providing application transaction service, but is currently waiting to be promoted - - ColdStandby - The node is not capable of providing application service because of a failure - - **Standby Status Transitions:** - - The transition from Null to HotStandby is triggered by a demote operation when the Operational State is Enabled - - The transition for Null to ColdStandby is triggered is a demote operation when the Operational State is Disabled - - The transition from ColdStandby to HotStandby is triggered by a transition of the Operational State from Disabled to Enabled - - The transition from HotStandby to ColdStandby is triggered by a transition of the Operational State from Enabled to Disabled - - The transition from ProvidingService to ColdStandby is triggered by a transition of the Operational State from Enabled to Disabled - - The transition from HotStandby to ProvidingService is triggered by a Promote operation - - The transition from ProvidingService to HotStandby is triggered by a Demote operation - -Database -~~~~~~~~ - -The State Management feature creates a StateManagement database having three tables: - - **StateManagementEntity** - This table has the following columns: - - **id** - Automatically created unique identifier - - **resourceName** - The unique identifier for a node - - **adminState** - The Administrative State - - **opState** - The Operational State - - **availStatus** - The Availability Status - - **standbyStatus** - The Standby Status - - **created_Date** - The timestamp the resource entry was created - - **modifiedDate** - The timestamp the resource entry was last modified - - **ForwardProgressEntity** - This table has the following columns: - - **forwardProgressId** - Automatically created unique identifier - - **resourceName** - The unique identifier for a node - - **fpc_count** - A forward progress counter which is periodically incremented if the node is healthy - - **created_date** - The timestamp the resource entry was created - - **last_updated** - The timestamp the resource entry was last updated - - **ResourceRegistrationEntity** - This table has the following columns: - - **ResourceRegistrationId** - Automatically created unique identifier - - **resourceName** - The unique identifier for a node - - **resourceUrl** - The JMX URL used to check the health of a node - - **site** - The name of the site in which the resource resides - - **nodeType** - The type of the node (i.e, pdp_xacml, pdp_drools, pap, pap_admin, logparser, brms_gateway, astra_gateway, elk_server, pypdp) - - **created_date** - The timestamp the resource entry was created - - **last_updated** - The timestamp the resource entry was last updated - -Node Health Monitoring -~~~~~~~~~~~~~~~~~~~~~~ - -**Application Monitoring** - - Application monitoring can be implemented using the *startTransaction()* and *endTransaction()* methods. Whenever a transaction is started, the *startTransaction()* method is called. If the node is locked, disabled or in a hot/cold standby state, the method will throw an exception. Otherwise, it resets the timer which triggers the default *testTransaction()* method. - - When a transaction completes, calling *endTransaction()* increments the forward process counter in the *ForwardProgressEntity* DB table. As long as this counter is updating, the integrity monitor will assume the node is healthy/sane. - - If the *startTransaction()* method is not called within a provisioned period of time, a timer will expire which calls the *testTransaction()* method. The default implementation of this method simply increments the forward progress counter. The *testTransaction()* method may be overwritten to perform a more meaningful test of system sanity, if desired. - - If the forward progress counter stops incrementing, the integrity monitoring routine will assume the node application has lost sanity and it will trigger a *statechange* (disableFailed) to cause the operational state to become disabled and the availability status attribute to become failed. Once the forward progress counter again begins incrementing, the operational state will return to enabled. - -**Application Monitoring with AllSeemsWell** - - The IntegrityMonitor class provides a facility for applications to directly control updates of the forwardprogressentity table. As previously described, *startTransaction()* and *endTransaction()* are provided to monitor the forward progress of transactions. This, however, does not monitor things such as internal threads that may be blocked or die. An example is the feature-state-management *DroolsPdpElectionHandler.run()* method. - - The *run()* method is monitored by a timer task, *checkWaitTimer()*. If the *run()* method is stalled an extended period of time, the *checkWaitTimer()* method will call *StateManagementFeature.allSeemsWell(<className>, <AllSeemsWell State>, <String message>)* with the AllSeemsWell state of Boolean.FALSE. - - The IntegrityMonitor instance owned by StateManagementFeature will then store an entry in the allSeemsWellMap and block updates of the forwardprogressentity table. This in turn, will cause the Drools PDP operational state to be set to “disabled” and availability status to be set to “failed”. - - Once the blocking condition is cleared, the *checkWaiTimer()* will again call the *allSeemsWell()* method and include an AllSeemsWell state of Boolean.True. This will cause the IntegrityMonitor to remove the entry for that className from the allSeemsWellMap and allow updating of the forwardprogressentity table, so long as there are no other entries in the map. - -**Dependency Monitoring** - - When a Drools PDP (or other node using the *IntegrityMonitor* policy/common module) is dependent upon other nodes to perform its function, those other nodes can be defined as dependencies in the properties file. In order for the dependency algorithm to function, the other nodes must also be running the *IntegrityMonitor*. Periodically the Drools PDP will check the state of dependencies. If all of a node type have failed, the Drools PDP will declare that it can no longer function and change the operational state to disabled and the availability status to dependency. - - In addition to other policy node types, there is a *subsystemTest()* method that is periodically called by the *IntegrityMonitor*. In Drools PDP, *subsystemTest* has been overwritten to execute an audit of the Database and of the Maven Repository. If the audit is unable to verify the function of either the DB or the Maven Repository, he Drools PDP will declare that it can no longer function and change the operational state to disabled and the availability status to dependency. - - When a failed dependency returns to normal operation, the *IntegrityMontor* will change the operational state to enabled and availability status to null. - -**External Health Monitoring Interface** - - The Drools PDP has a http test interface which, when called, will return 200 if all seems well and 500 otherwise. The test interface URL is defined in the properties file. - - -Site Manager -~~~~~~~~~~~~ - -The Site Manager is not deployed with the Drools PDP, but it is available in the policy/common repository in the site-manager directory. -The Site Manager provides a lock/unlock interface for nodes and a way to display node information and status. - -The following is from the README file included with the Site Manager. - - .. code-block:: bash - :caption: Site Manager README extract - - Before using 'siteManager', the file 'siteManager.properties' needs to be - edited to configure the parameters used to access the database: - - javax.persistence.jdbc.driver - typically 'org.mariadb.jdbc.Driver' - - javax.persistence.jdbc.url - URL referring to the database, - which typically has the form: 'jdbc:mariadb://<host>:<port>/<db>' - ('<db>' is probably 'xacml' in this case) - - javax.persistence.jdbc.user - the user id for accessing the database - - javax.persistence.jdbc.password - password for accessing the database - - Once the properties file has been updated, the 'siteManager' script can be - invoked as follows: - - siteManager show [ -s <site> | -r <resourceName> ] : - display node information (Site, NodeType, ResourceName, AdminState, - OpState, AvailStatus, StandbyStatus) - - siteManager setAdminState { -s <site> | -r <resourceName> } <new-state> : - update admin state on selected nodes - - siteManager lock { -s <site> | -r <resourceName> } : - lock selected nodes - - siteManager unlock { -s <site> | -r <resourceName> } : - unlock selected nodes - -Note that the 'siteManager' script assumes that the script, -'site-manager-${project.version}.jar' file and 'siteManager.properties' file -are all in the same directory. If the files are separated, the 'siteManager' -script will need to be modified so it can locate the jar and properties files. - - -Properties -~~~~~~~~~~ - -The feature-state-mangement.properties file controls the function of the State Management Feature. In general, the properties have adequate descriptions in the file. Parameters which must be replaced prior to usage are indicated thus: ${{parameter to be replaced}}. - - .. code-block:: bash - :caption: feature-state-mangement.properties - - # DB properties - javax.persistence.jdbc.driver=org.mariadb.jdbc.Driver - javax.persistence.jdbc.url=jdbc:mariadb://${{SQL_HOST}}:3306/statemanagement - javax.persistence.jdbc.user=${{SQL_USER}} - javax.persistence.jdbc.password=${{SQL_PASSWORD}} - - # DroolsPDPIntegrityMonitor Properties - # Test interface host and port defaults may be overwritten here - http.server.services.TEST.host=0.0.0.0 - http.server.services.TEST.port=9981 - #These properties will default to the following if no other values are provided: - # http.server.services.TEST.restClasses=org.onap.policy.drools.statemanagement.IntegrityMonitorRestManager - # http.server.services.TEST.managed=false - # http.server.services.TEST.swagger=true - - #IntegrityMonitor Properties - - # Must be unique across the system - resource.name=pdp1 - # Name of the site in which this node is hosted - site_name=site1 - # Forward Progress Monitor update interval seconds - fp_monitor_interval=30 - # Failed counter threshold before failover - failed_counter_threshold=3 - # Interval between test transactions when no traffic seconds - test_trans_interval=10 - # Interval between writes of the FPC to the DB seconds - write_fpc_interval=5 - # Node type Note: Make sure you don't leave any trailing spaces, or you'll get an 'invalid node type' error! - node_type=pdp_drools - # Dependency groups are groups of resources upon which a node operational state is dependent upon. - # Each group is a comma-separated list of resource names and groups are separated by a semicolon. For example: - # dependency_groups=site_1.astra_1,site_1.astra_2;site_1.brms_1,site_1.brms_2;site_1.logparser_1;site_1.pypdp_1 - dependency_groups= - # When set to true, dependent health checks are performed by using JMX to invoke test() on the dependent. - # The default false is to use state checks for health. - test_via_jmx=true - # This is the max number of seconds beyond which a non incrementing FPC is considered a failure - max_fpc_update_interval=120 - # Run the state audit every 60 seconds (60000 ms). The state audit finds stale DB entries in the - # forwardprogressentity table and marks the node as disabled/failed in the statemanagemententity - # table. NOTE! It will only run on nodes that have a standbystatus = providingservice. - # A value of <= 0 will turn off the state audit. - state_audit_interval_ms=60000 - # The refresh state audit is run every (default) 10 minutes (600000 ms) to clean up any state corruption in the - # DB statemanagemententity table. It only refreshes the DB state entry for the local node. That is, it does not - # refresh the state of any other nodes. A value <= 0 will turn the audit off. Any other value will override - # the default of 600000 ms. - refresh_state_audit_interval_ms=600000 - - # Repository audit properties - # Assume it's the releaseRepository that needs to be audited, - # because that's the one BRMGW will publish to. - repository.audit.id=${{releaseRepositoryID}} - repository.audit.url=${{releaseRepositoryUrl}} - repository.audit.username=${{repositoryUsername}} - repository.audit.password=${{repositoryPassword}} - repository2.audit.id=${{releaseRepository2ID}} - repository2.audit.url=${{releaseRepository2Url}} - repository2.audit.username=${{repositoryUsername2}} - repository2.audit.password=${{repositoryPassword2}} - - # Repository Audit Properties - # Flag to control the execution of the subsystemTest for the Nexus Maven repository - repository.audit.is.active=false - repository.audit.ignore.errors=true - repository.audit.interval_sec=86400 - repository.audit.failure.threshold=3 - - # DB Audit Properties - # Flag to control the execution of the subsystemTest for the Database - db.audit.is.active=false - - -End of Document - -.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Feature+State+Management - - diff --git a/docs/drools/feature_testtransaction.rst b/docs/drools/feature_testtransaction.rst index 8bec1421..8e99f0b6 100644 --- a/docs/drools/feature_testtransaction.rst +++ b/docs/drools/feature_testtransaction.rst @@ -11,15 +11,24 @@ Feature: Test Transaction .. contents:: :depth: 3 -The Test Transaction feature provides a mechanism by which the health of drools policy controllers can be tested. +The Test Transaction feature provides a mechanism by which the health of drools policy controllers +can be tested. -When enabled, the feature functions by injecting an event object (identified by a UUID) into the drools session of each policy controller that is active in the system. Only an object with this UUID can trigger the Test Transaction-specific drools logic to execute. +When enabled, the feature functions by injecting an event object (identified by a UUID) into the +drools session of each policy controller that is active in the system. Only an object with this UUID +can trigger the Test Transaction-specific drools logic to execute. -The injection of the event triggers the "TT" rule (see *TestTransactionTemplate.drl* below) to fire. The "TT" rule simply increments a ForwardProgress counter object, thereby confirming that the drools session for this particular controller is active and firing its rules accordingly. This cycle repeats at 20 second intervals. +The injection of the event triggers the "TT" rule (see *TestTransactionTemplate.drl* below) to fire. +The "TT" rule simply increments a ForwardProgress counter object, thereby confirming that the drools +session for this particular controller is active and firing its rules accordingly. This cycle +repeats at 20 second intervals. -If it is ever the case that a drools controller does not have the "TT" rule present in its *.drl*, or that the forward progress counter is not incremented, the Test Transaction thread for that particular drools session (i.e. controller) is terminated and a message is logged to *error.log*. +If it is ever the case that a drools controller does not have the "TT" rule present in its *.drl*, +or that the forward progress counter is not incremented, the Test Transaction thread for that +particular drools session (i.e. controller) is terminated and a message is logged to *error.log*. -Prior to being enabled, the following drools rules need to be appended to the rules templates of any use-case that is to be monitored by the feature. +Prior to being enabled, the following drools rules need to be appended to the rules templates of any +use-case that is to be monitored by the feature. .. code-block:: java :caption: TestTransactionTemplate.drl @@ -73,7 +82,8 @@ Prior to being enabled, the following drools rules need to be appended to the ru ForwardProgress(counter >= 0, $ttc : counter) end -Once the proper artifacts are built and deployed with the addition of the TestTransactionTemplate rules, the feature can then be enabled by entering the following commands: +Once the proper artifacts are built and deployed with the addition of the TestTransactionTemplate +rules, the feature can then be enabled by entering the following commands: .. code-block:: bash :caption: PDPD Features Command @@ -87,10 +97,6 @@ Once the proper artifacts are built and deployed with the addition of the TestTr controlloop-utils 1.1.0-SNAPSHOT disabled healthcheck 1.1.0-SNAPSHOT disabled test-transaction 1.1.0-SNAPSHOT enabled - eelf 1.1.0-SNAPSHOT disabled - state-management 1.1.0-SNAPSHOT disabled - active-standby-management 1.1.0-SNAPSHOT disabled - session-persistence 1.1.0-SNAPSHOT disabled The output of the enable command will indicate whether or not the feature was enabled successfully. diff --git a/docs/drools/mdc_enablefeature.png b/docs/drools/mdc_enablefeature.png Binary files differdeleted file mode 100644 index 26ae55a4..00000000 --- a/docs/drools/mdc_enablefeature.png +++ /dev/null diff --git a/docs/drools/mdc_properties.png b/docs/drools/mdc_properties.png Binary files differdeleted file mode 100755 index 63cea92e..00000000 --- a/docs/drools/mdc_properties.png +++ /dev/null diff --git a/docs/drools/pdpdApps.rst b/docs/drools/pdpdApps.rst index 5ef0a3fc..abcf2e69 100644 --- a/docs/drools/pdpdApps.rst +++ b/docs/drools/pdpdApps.rst @@ -28,47 +28,48 @@ Software Source Code repositories ~~~~~~~~~~~~~~~~~~~~~~~~ -The PDP-D Applications software resides on the `policy/drools-applications <https://git.onap.org/policy/drools-applications>`__ repository. The actor libraries introduced in the *frankfurt* release reside in -the `policy/models repository <https://git.onap.org/policy/models>`__. +The PDP-D Applications software resides on the +`policy/drools-applications <https://git.onap.org/policy/drools-applications>`_ repository. +The actor libraries introduced in the *Frankfurt* release reside in the +`policy/models repository <https://git.onap.org/policy/models>`_. At this time, the *control loop* application is the only application supported in ONAP. All the application projects reside under the -`controlloop directory <https://git.onap.org/policy/drools-applications/tree/controlloop>`__. +`controlloop directory <https://git.onap.org/policy/drools-applications/tree/controlloop>`_. Docker Image ~~~~~~~~~~~~ -See the *drools-applications* -`released versions <https://wiki.onap.org/display/DW/Policy+Framework+Project%3A+Component+Versions>`__ -for the latest images: +Check the *drools-applications* `released versions <https://github.com/onap/policy-parent/tree/master/integration/src/main/resources/release>`_ +page for the latest versions. At the time of this writing *3.0.1* is the latest version. .. code-block:: bash - docker pull onap/policy-pdpd-cl:1.8.2 + docker pull nexus3.onap.org:10001/onap/policy-pdpd-cl:3.0.1 -At the time of this writing *1.8.2* is the latest version. +At the time of this writing *3.0.1* is the latest version. -The *onap/policy-pdpd-cl* image extends the *onap/policy-drools* image with -the *usecases* controller that realizes the *control loop* application. +The *onap/policy-pdpd-cl* image extends the *onap/policy-drools* image with the *usecases* +controller that realizes the *control loop* application. Usecases Controller =================== -The `usecases <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases>`__ +The `usecases <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases>`_ controller is the *control loop* application in ONAP. There are three parts in this controller: -* The `drl rules <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/usecases.drl>`__. -* The `kmodule.xml <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/META-INF/kmodule.xml>`__. -* The `dependencies <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/pom.xml>`__. +* The `drl rules <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/usecases.drl>`_. +* The `kmodule.xml <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/META-INF/kmodule.xml>`_. +* The `dependencies <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/pom.xml>`_. -The `kmodule.xml` specifies only one session, and declares in the *kbase* section the two operational policy types that -it supports. +The `kmodule.xml` specifies only one session, and declares in the *kbase* section the two +operational policy types that it supports. -The Usecases controller relies on the new Actor framework to interact with remote -components, part of a control loop transaction. The reader is referred to the -*Policy Platform Actor Development Guidelines* in the documentation for further information. +The Usecases controller relies on the new Actor framework to interact with remote components, part +of a control loop transaction. The reader is referred to the *Policy Platform Actor Development +Guidelines* in the documentation for further information. Operational Policy Types ======================== @@ -77,19 +78,20 @@ The *usecases* controller supports the following policy type: - *onap.policies.controlloop.operational.common.Drools*. -The *onap.policies.controlloop.operational.common.Drools* -is the Tosca compliant policy type introduced in *frankfurt*. +The *onap.policies.controlloop.operational.common.Drools* is the Tosca compliant policy type +introduced in *Frankfurt*. The Tosca Compliant Operational Policy Type is defined at the -`onap.policies.controlloop.operational.common.Drools <https://git.onap.org/policy/models/tree/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml>`__. +`onap.policies.controlloop.operational.common.Drools <https://git.onap.org/policy/models/tree/models-examples/src/main/resources/policytypes/onap.policies.controlloop.operational.common.Drools.yaml>`_. -An example of a Tosca Compliant Operational Policy can be found -`here <https://git.onap.org/policy/models/tree/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.json>`__. +An example of a Tosca Compliant Operational Policy: +`vDNS <https://git.onap.org/policy/models/tree/models-examples/src/main/resources/policies/vDNS.policy.operational.input.tosca.json>`_. Policy Chaining =============== -The *usecases* controller supports chaining of multiple operations inside a Tosca Operational Policy. The next operation can be chained based on the result/output from an operation. +The *usecases* controller supports chaining of multiple operations inside a Tosca Operational +Policy. The next operation can be chained based on the result/output from an operation. The possibilities available for chaining are: - *success: chain after the result of operation is success* @@ -99,17 +101,17 @@ The possibilities available for chaining are: - *failure_exception: chain after the result of operation is failure due to exception* - *failure_guard: chain after the result of operation is failure due to guard not allowing the operation* -An example of policy chaining for VNF can be found -`here <https://github.com/onap/policy-models/blob/master/models-examples/src/main/resources/policies/vFirewall.cds.policy.operational.chaining.yaml>`__. +An example of policy chaining for VNF: +`vFirewall <https://github.com/onap/policy-models/blob/master/models-examples/src/main/resources/policies/vFirewall.cds.policy.operational.chaining.yaml>`_. -An example of policy chaining for PNF can be found -`here <https://github.com/onap/policy-models/blob/master/models-examples/src/main/resources/policies/pnf.cds.policy.operational.chaining.yaml>`__. +An example of policy chaining for PNF: +`pnf <https://github.com/onap/policy-models/blob/master/models-examples/src/main/resources/policies/pnf.cds.policy.operational.chaining.yaml>`_. Features ======== -Since the PDP-D Control Loop Application image was created from the PDP-D Engine one (*onap/policy-drools*), -it inherits all features and functionality. +Since the PDP-D Control Loop Application image was created from the PDP-D Engine one +(*onap/policy-drools*), it inherits all features and functionality. The enabled features in the *onap/policy-pdpd-cl* image are: @@ -118,39 +120,28 @@ The enabled features in the *onap/policy-pdpd-cl* image are: - **lifecycle**: enables the lifecycle APIs. - **controlloop-trans**: control loop transaction tracking. - **controlloop-management**: generic controller capabilities. -- **controlloop-usecases**: new *controller* introduced in the guilin release to realize the ONAP use cases. +- **controlloop-usecases**: new *controller* introduced in the Guilin release to realize the ONAP + use cases. -The following features are installed but disabled: - -- **controlloop-tdjam**: experimental java-only *controller* to be deprecated post guilin. -- **controlloop-utils**: *actor* simulators. Control Loops Transaction (controlloop-trans) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It tracks Control Loop Transactions and Operations. These are recorded in -the *$POLICY_LOGS/audit.log* and *$POLICY_LOGS/metrics.log*, and accessible -through the telemetry APIs. +It tracks Control Loop Transactions and Operations. These are recorded in the +*$POLICY_LOGS/audit.log* and *$POLICY_LOGS/metrics.log*, and accessible through the telemetry APIs. Control Loops Management (controlloop-management) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It installs common control loop application resources, and provides -telemetry API extensions. *Actor* configurations are packaged in this -feature. +It installs common control loop application resources, and provides telemetry API extensions. +*Actor* configurations are packaged in this feature. Usecases Controller (controlloop-usecases) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It is the *guilin* release implementation of the ONAP use cases. -It relies on the new *Actor* model framework to carry out a policy's -execution. - -TDJAM Controller (controlloop-tdjam) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +It is the *Guilin* release implementation of the ONAP use cases. It relies on the new *Actor* model +framework to carry out a policy's execution. -This is an experimental, java-only controller that will be deprecated after the -guilin release. Utilities (controlloop-utils) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -160,16 +151,15 @@ Enables *actor simulators* for testing purposes. Offline Mode ============ -The default ONAP installation in *onap/policy-pdpd-cl:1.8.2* is *OFFLINE*. -In this configuration, the *rules* artifact and the *dependencies* are all in the local -maven repository. This requires that the maven dependencies are preloaded in the local -repository. +The default ONAP installation in *onap/policy-pdpd-cl:1.8.2* is *OFFLINE*. In this configuration, +the *rules* artifact and the *dependencies* are all in the local maven repository. This requires +that the maven dependencies are preloaded in the local repository. An offline configuration requires two configuration items: -- *OFFLINE* environment variable set to true (see `values.yaml <https://git.onap.org/oom/tree/kubernetes/policy/values.yaml>`__. -- override of the default *settings.xml* (see - `settings.xml <https://git.onap.org/oom/tree/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/settings.xml>`__) override. +- *OFFLINE* environment variable set to true (see `values.yaml <https://git.onap.org/oom/tree/kubernetes/policy/values.yaml>`_. +- override of the default *settings.xml* (see `settings.xml <https://git.onap.org/oom/tree/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/settings.xml>`_) + override. Running the PDP-D Control Loop Application in a single container ================================================================ @@ -214,13 +204,7 @@ First create an environment file (in this example *env.conf*) to configure the P SQL_USER= SQL_PASSWORD= - # AAF - - AAF=false - AAF_NAMESPACE=org.onap.policy - AAF_HOST=aaf.api.simpledemo.onap.org - - # PDP-D DMaaP configuration channel + # PDP-D configuration channel PDPD_CONFIGURATION_TOPIC=PDPD-CONFIGURATION PDPD_CONFIGURATION_API_KEY= @@ -267,16 +251,12 @@ First create an environment file (in this example *env.conf*) to configure the P PDP_PASSWORD=password GUARD_DISABLED=true - # DCAE DMaaP + # DCAE Topic DCAE_TOPIC=unauthenticated.DCAE_CL_OUTPUT DCAE_SERVERS=localhost DCAE_CONSUMER_GROUP=dcae.policy.shared - # Open DMaaP - - DMAAP_SERVERS=localhost - # AAI AAI_HOST=localhost @@ -311,22 +291,11 @@ First create an environment file (in this example *env.conf*) to configure the P Configuration ~~~~~~~~~~~~~ -noop.pre.sh -""""""""""" - -In order to avoid the noise in the logs that relate to dmaap configuration, a startup script (*noop.pre.sh*) is added -to convert *dmaap* endpoints to *noop* in the host directory to be mounted. - -.. code-block:: bash - - #!/bin/bash -x - - sed -i "s/^dmaap/noop/g" $POLICY_HOME/config/*.properties - features.pre.sh """"""""""""""" -We can enable the *controlloop-utils* and disable the *distributed-locking* feature to avoid using the database. +We can enable the *controlloop-utils* and disable the *distributed-locking* feature to avoid using +the database. .. code-block:: bash @@ -335,22 +304,11 @@ We can enable the *controlloop-utils* and disable the *distributed-locking* feat bash -c "/opt/app/policy/bin/features disable distributed-locking" bash -c "/opt/app/policy/bin/features enable controlloop-utils" -active.post.sh -"""""""""""""" - -The *active.post.sh* script makes the PDP-D active. - -.. code-block:: bash - - #!/bin/bash -x - - bash -c "http --verify=no -a ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} PUT https://localhost:9696/policy/pdp/engine/lifecycle/state/ACTIVE" - Actor Properties """""""""""""""" -In the *guilin* release, some *actors* configurations need to be overridden to support *http* for compatibility -with the *controlloop-utils* feature. +In the *Guilin* release, some *actors* configurations need to be overridden to support *http* for +compatibility with the *controlloop-utils* feature. AAI-http-client.properties """""""""""""""""""""""""" @@ -445,8 +403,9 @@ Bring up the PDP-D Control Loop Application To run the container in detached mode, add the *-d* flag. -Note that we are opening the *9696* telemetry API port to the outside world, mounting the *config* host directory, -and setting environment variables. +.. note:: + The *9696* telemetry API port is open to the outside world, the *config* host directory is mounted + as a volume and environment variables are set with an env-file option. To open a shell into the PDP-D: @@ -454,13 +413,12 @@ To open a shell into the PDP-D: docker exec -it pdp-d bash -Once in the container, run tools such as *telemetry*, *db-migrator*, *policy* to look at the system state: +Once in the container, run tools such as *telemetry*, *policy* to look at the system state: .. code-block:: bash docker exec -it PDPD bash -c "/opt/app/policy/bin/telemetry" docker exec -it PDPD bash -c "/opt/app/policy/bin/policy status" - docker exec -it PDPD bash -c "/opt/app/policy/bin/db-migrator -s ALL -o report" Controlled instantiation of the PDP-D Control Loop Appplication ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -590,11 +548,12 @@ To initiate a control loop transaction, simulate a DCAE ONSET to Policy: http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/DCAE_TOPIC/events @dcae.vdns.onset.json Content-Type:'text/plain' -This will trigger the scale out control loop transaction that will interact with the *SO* -simulator to complete the transaction. +This will trigger the scale out control loop transaction that will interact with the *SO* simulator +to complete the transaction. -Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the POLICY-CL-MGT channel. -An entry in the *$POLICY_LOGS/audit.log* should indicate successful completion as well. +Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the +POLICY-CL-MGT channel. An entry in the *$POLICY_LOGS/audit.log* should indicate successful +completion as well. vCPE use case testing ===================== @@ -686,8 +645,8 @@ To initiate a control loop transaction, simulate a DCAE ONSET to Policy: http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/DCAE_TOPIC/events @dcae.vcpe.onset.json Content-Type:'text/plain' -This will spawn a vCPE control loop transaction in the PDP-D. Policy will send a *restart* message over the -*APPC-LCM-READ* channel to APPC and wait for a response. +This will spawn a vCPE control loop transaction in the PDP-D. Policy will send a *restart* message +over the *APPC-LCM-READ* channel to APPC and wait for a response. Verify that you see this message in the network.log by looking for *APPC-LCM-READ* messages. @@ -730,8 +689,9 @@ Send a simulated APPC response back to the PDP-D over the *APPC-LCM-WRITE* chann http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/APPC-LCM-WRITE/events @appc.vcpe.success.json Content-Type:'text/plain' -Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the *POLICY-CL-MGT* channel, -and an entry is added to the *$POLICY_LOGS/audit.log* indicating successful completion. +Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the +*POLICY-CL-MGT* channel, and an entry is added to the *$POLICY_LOGS/audit.log* indicating successful +completion. vFirewall use case testing ========================== @@ -832,13 +792,14 @@ To initiate a control loop transaction, simulate a DCAE ONSET to Policy: http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/DCAE_TOPIC/events @dcae.vfw.onset.json Content-Type:'text/plain' -This will spawn a vFW control loop transaction in the PDP-D. Policy will send a *ModifyConfig* message over the -*APPC-CL* channel to APPC and wait for a response. This can be seen by searching the network.log for *APPC-CL*. +This will spawn a vFW control loop transaction in the PDP-D. Policy will send a *ModifyConfig* +message over the *APPC-CL* channel to APPC and wait for a response. This can be seen by searching +the network.log for *APPC-CL*. Note the *SubRequestId* field in the *ModifyConfig* message in the *APPC-CL* topic in the network.log -Send a simulated APPC response back to the PDP-D over the *APPC-CL* channel. -To do this, change the *REPLACEME* text in the *appc.vcpe.success.json* with this *SubRequestId*. +Send a simulated APPC response back to the PDP-D over the *APPC-CL* channel. To do this, change the +*REPLACEME* text in the *appc.vcpe.success.json* with this *SubRequestId*. appc.vcpe.success.json ~~~~~~~~~~~~~~~~~~~~~~ @@ -867,24 +828,19 @@ appc.vcpe.success.json http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/APPC-CL/events @appc.vcpe.success.json Content-Type:'text/plain' -Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the POLICY-CL-MGT channel, -and an entry is added to the *$POLICY_LOGS/audit.log* indicating successful completion. +Verify in *$POLICY_LOGS/network.log* that a *FINAL: SUCCESS* notification is sent over the +POLICY-CL-MGT channel, and an entry is added to the *$POLICY_LOGS/audit.log* indicating successful +completion. Running PDP-D Control Loop Application with other components ============================================================ -The reader can also look at the `policy/docker repository <https://github.com/onap/policy-docker/tree/master/csit>`__. +The reader can also look at the `policy/docker repository <https://github.com/onap/policy-docker/tree/master/csit>`_. More specifically, these directories have examples of other PDP-D Control Loop configurations: -* `plans <https://github.com/onap/policy-docker/tree/master/compose>`__: startup & teardown scripts. -* `scripts <https://github.com/onap/policy-docker/blob/master/compose/docker-compose.yml>`__: docker-compose file. -* `tests <https://github.com/onap/policy-docker/blob/master/csit/resources/tests/drools-applications-test.robot>`__: test plan. - -Additional information -====================== - -For additional information, please see the -`Drools PDP Development and Testing (In Depth) <https://wiki.onap.org/display/DW/2020-08+Frankfurt+Tutorials>`__ page. - +* `plans <https://github.com/onap/policy-docker/tree/master/compose>`_: startup & teardown scripts. +* `scripts <https://github.com/onap/policy-docker/blob/master/compose/compose.yaml>`_: docker-compose file. +* `tests <https://github.com/onap/policy-docker/blob/master/csit/resources/tests/drools-applications-test.robot>`_: test plan. +End of Document diff --git a/docs/drools/pdpdEngine.rst b/docs/drools/pdpdEngine.rst index 22e5cbeb..7a699025 100644 --- a/docs/drools/pdpdEngine.rst +++ b/docs/drools/pdpdEngine.rst @@ -12,21 +12,21 @@ PDP-D Engine Overview ======== -The PDP-D Core Engine provides an infrastructure and services for `drools <https://www.drools.org/>`__ based applications -in the context of Policies and ONAP. +The PDP-D Core Engine provides an infrastructure and services for `drools <https://www.drools.org/>`_ +based applications in the context of Policies and ONAP. -A PDP-D supports applications by means of *controllers*. A *controller* is a named -grouping of resources. These typically include references to communication endpoints, -maven artifact coordinates, and *coders* for message mapping. +A PDP-D supports applications by means of *controllers*. A *controller* is a named grouping of +resources. These typically include references to communication endpoints, maven artifact +coordinates, and *coders* for message mapping. -*Controllers* use *communication endpoints* to interact -with remote networked entities typically using messaging (dmaap or ueb), -or http. +*Controllers* use *communication endpoints* to interact with remote networked entities typically +using kafka messaging or http. -PDP-D Engine capabilities can be extended via *features*. Integration with other +PDP-D Engine capabilities can be extended via *features*. Integration with other Policy Framework components (API, PAP, and PDP-X) is through one of them (*feature-lifecycle*). -The PDP-D Engine infrastructure provides mechanisms for data migration, diagnostics, and application management. +The PDP-D Engine infrastructure provides mechanisms for data migration, diagnostics, and application +management. Software ======== @@ -34,25 +34,29 @@ Software Source Code repositories ~~~~~~~~~~~~~~~~~~~~~~~~ -The PDP-D software is mainly located in the `policy/drools repository <https://git.onap.org/policy/drools-pdp>`__ with the *communication endpoints* software residing in the `policy/common repository <https://git.onap.org/policy/common>`__ and Tosca policy models in the `policy/models repository <https://git.onap.org/policy/models>`__. +The PDP-D software is mainly located in the `policy/drools repository <https://git.onap.org/policy/drools-pdp>`_ +with the *communication endpoints* software residing in the +`policy/common repository <https://git.onap.org/policy/common>`_ and Tosca policy models in the +`policy/models repository <https://git.onap.org/policy/models>`_. Docker Image ~~~~~~~~~~~~ -Check the *drools-pdp* `released versions <https://wiki.onap.org/display/DW/Policy+Framework+Project%3A+Component+Versions>`__ page for the latest versions. -At the time of this writing *1.8.2* is the latest version. +Check the *drools-pdp* `released versions <https://github.com/onap/policy-parent/tree/master/integration/src/main/resources/release>`_ +page for the latest versions. At the time of this writing *3.0.1* is the latest version. .. code-block:: bash - docker pull onap/policy-drools:1.8.2 + docker pull nexus3.onap.org:10001/onap/policy-drools:3.0.1 -A container instantiated from this image will run under the non-priviledged *policy* account. +A container instantiated from this image will run under the non-privileged *policy* account. The PDP-D root directory is located at the */opt/app/policy* directory (or *$POLICY_HOME*), with the exception of the *$HOME/.m2* which contains the local maven repository. The PDP-D configuration resides in the following directories: -- **/opt/app/policy/config**: (*$POLICY_HOME/config* or *$POLICY_CONFIG*) contains *engine*, *controllers*, and *endpoint* configuration. +- **/opt/app/policy/config**: (*$POLICY_HOME/config* or *$POLICY_CONFIG*) contains *engine*, + *controllers*, and *endpoint* configuration. - **/home/policy/.m2**: (*$HOME/.m2*) maven repository configuration. - **/opt/app/policy/etc/**: (*$POLICY_HOME/etc*) miscellaneous configuration such as certificate stores. @@ -60,119 +64,96 @@ The following command can be used to explore the directory layout. .. code-block:: bash - docker run --rm -it nexus3.onap.org:10001/onap/policy-drools:1.8.2 -- bash + docker run --rm -it nexus3.onap.org:10001/onap/policy-drools:3.0.0 -- bash Communication Endpoints ======================= -PDP-D supports the following networked infrastructures. This is also referred to as +PDP-D supports the following networked infrastructures. This is also referred to as *communication infrastructures* in the source code. -- DMaaP -- UEB +- Kafka - NOOP - Http Servers - Http Clients The source code is located at -`the policy-endpoints module <https://git.onap.org/policy/common/tree/policy-endpoints>`__ +`the policy-endpoints module <https://git.onap.org/policy/common/tree/policy-endpoints>`_ in the *policy/commons* repository. -These network resources are *named* and typically have a *global* scope, therefore typically visible to -the PDP-D engine (for administration purposes), application *controllers*, -and *features*. +These network resources are *named* and typically have a *global* scope, therefore typically visible +to the PDP-D engine (for administration purposes), application *controllers*, and *features*. -DMaaP, UEB, and NOOP are message-based communication infrastructures, hence the terminology of +Kafka and NOOP are message-based communication infrastructures, hence the terminology of source and sinks, to denote their directionality into or out of the *controller*, respectively. An endpoint can either be *managed* or *unmanaged*. The default for an endpoint is to be *managed*, meaning that they are globally accessible by name, and managed by the PDP-D engine. -*Unmanaged* topics are used when neither global visibility, or centralized PDP-D management is desired. -The software that uses *unmanaged* topics is responsible for their lifecycle management. +*Unmanaged* topics are used when neither global visibility, or centralized PDP-D management is +desired. The software that uses *unmanaged* topics is responsible for their lifecycle management. -DMaaP Endpoints +Kafka Topics ~~~~~~~~~~~~~~~ -These are messaging enpoints that use DMaaP as the communication infrastructure. - -Typically, a *managed* endpoint configuration is stored in the *<topic-name>-topic.properties* files. +Typically, a *managed* topic configuration is stored in the *<topic-name>-topic.properties* files. For example, the -`DCAE_TOPIC-topic.properties <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/DCAE_TOPIC-topic.properties>`__ is defined as +`dcae_topic-topic.properties <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/DCAE_TOPIC-topic.properties>`_ is defined as .. code-block:: bash - dmaap.source.topics=DCAE_TOPIC - - dmaap.source.topics.DCAE_TOPIC.effectiveTopic=${env:DCAE_TOPIC} - dmaap.source.topics.DCAE_TOPIC.servers=${env:DMAAP_SERVERS} - dmaap.source.topics.DCAE_TOPIC.consumerGroup=${env:DCAE_CONSUMER_GROUP} - dmaap.source.topics.DCAE_TOPIC.https=true + kafka.source.topics=dcae_topic + kafka.source.topics.dcae_topic.effectiveTopic=${env:dcae_topic} + kafka.source.topics.dcae_topic.servers=${env:KAFKA_SERVERS} + kafka.source.topics.dcae_topic.consumerGroup=${env:DCAE_CONSUMER_GROUP} + kafka.source.topics.dcae_topic.https=false -In this example, the generic name of the *source* endpoint -is *DCAE_TOPIC*. This is known as the *canonical* name. -The actual *topic* used in communication exchanges in a physical lab is contained -in the *$DCAE_TOPIC* environment variable. This environment variable is usually -set up by *devops* on a per installation basis to meet the needs of each -lab spec. +In this example, the generic name of the *source* topic is *dcae_topic*. This is known as the +*canonical* name. The actual *topic* used in communication exchanges in a physical lab is contained +in the *$dcae_topic* environment variable. This environment variable is usually set up by *devops* +on a per installation basis to meet the needs of each lab spec. -In the previous example, *DCAE_TOPIC* is a source-only topic. +In the previous example, *dcae_topic* is a source-only topic. -Sink topics are similarly specified but indicating that are sink endpoints -from the perspective of the *controller*. For example, the *APPC-CL* topic -is configured as +Sink topics are similarly specified but indicating that are sink endpoints from the perspective of +the *controller*. For example, the *appc-cl* topic is configured as: .. code-block:: bash - dmaap.source.topics=APPC-CL - dmaap.sink.topics=APPC-CL - - dmaap.source.topics.APPC-CL.servers=${env:DMAAP_SERVERS} - dmaap.source.topics.APPC-CL.https=true + kafka.source.topics=appc-cl + kafka.sink.topics=appc-cl - dmaap.sink.topics.APPC-CL.servers=${env:DMAAP_SERVERS} - dmaap.sink.topics.APPC-CL.https=true + kafka.source.topics.appc-cl.servers=${env:KAFKA_SERVERS} + kafka.source.topics.appc-cl.https=false -Although not shown in these examples, additional configuration options are available such as *user name*, -*password*, *security keys*, *consumer group* and *consumer instance*. - -UEB Endpoints -~~~~~~~~~~~~~ + kafka.sink.topics.appc-cl.servers=${env:KAFKA_SERVERS} + kafka.sink.topics.appc-cl.https=false -Similary, UEB endpoints are messaging endpoints, similar to the DMaaP ones. - -For example, the -`DCAE_TOPIC-topic.properties <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/DCAE_TOPIC-topic.properties>`__ can be converted to an *UEB* one, by replacing the -*dmaap* prefix with *ueb*. For example: - -.. code-block:: bash +Although not shown in these examples, additional configuration options are available such as +*user name*, *password*, *security keys*, *consumer group* and *consumer instance*. - ueb.source.topics=DCAE_TOPIC - - ueb.source.topics.DCAE_TOPIC.effectiveTopic=${env:DCAE_TOPIC} - ueb.source.topics.DCAE_TOPIC.servers=${env:DMAAP_SERVERS} - ueb.source.topics.DCAE_TOPIC.consumerGroup=${env:DCAE_CONSUMER_GROUP} - ueb.source.topics.DCAE_TOPIC.https=true NOOP Endpoints ~~~~~~~~~~~~~~ NOOP (no-operation) endpoints are messaging endpoints that don't have any network attachments. They are used for testing convenience. -To convert the -`DCAE_TOPIC-topic.properties <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/DCAE_TOPIC-topic.properties>`__ to a *NOOP* endpoint, simply replace the *dmaap* prefix with *noop*: +To convert the dcae_topic-topic.properties to a *NOOP* endpoint, simply replace the *kafka* prefix +with *noop*: .. code-block:: bash - noop.source.topics=DCAE_TOPIC - noop.source.topics.DCAE_TOPIC.effectiveTopic=${env:DCAE_TOPIC} + noop.source.topics=dcae_topic + noop.source.topics.dcae_topic.effectiveTopic=${env:dcae_topic} HTTP Clients ~~~~~~~~~~~~ -HTTP Clients are typically stored in files following the naming convention: *<name>-http-client.properties* convention. -One such example is -the `AAI HTTP Client <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/AAI-http-client.properties>`__: +HTTP Clients are typically stored in files following the naming convention: +*<name>-http-client.properties* convention. + +One such example is the +`AAI HTTP Client <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/AAI-http-client.properties>`_: .. code-block:: bash @@ -189,9 +170,9 @@ the `AAI HTTP Client <https://git.onap.org/policy/drools-applications/tree/contr HTTP Servers ~~~~~~~~~~~~ -HTTP Servers are stored in files that follow a similar naming convention *<name>-http-server.properties*. -The following is an example of a server named *CONFIG*, getting most of its configuration from -environment variables. +HTTP Servers are stored in files that follow a similar naming convention +*<name>-http-server.properties*. The following is an example of a server named *CONFIG*, getting +most of its configuration from environment variables. .. code-block:: bash @@ -204,21 +185,22 @@ environment variables. http.server.services.CONFIG.restPackages=org.onap.policy.drools.server.restful http.server.services.CONFIG.managed=false http.server.services.CONFIG.swagger=true - http.server.services.CONFIG.https=true - http.server.services.CONFIG.aaf=${envd:AAF:false} + http.server.services.CONFIG.https=false -*Endpoints* configuration resides in the *$POLICY_HOME/config* (or *$POLICY_CONFIG*) directory in a container. +*Endpoints* configuration resides in the *$POLICY_HOME/config* (or *$POLICY_CONFIG*) directory in a +container. Controllers =========== -*Controllers* are the means for the PDP-D to run *applications*. Controllers are -defined in *<name>-controller.properties* files. +*Controllers* are the means for the PDP-D to run *applications*. Controllers are defined in +*<name>-controller.properties* files. For example, see the -`usecases controller configuration <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-usecases/src/main/feature/config/usecases-controller.properties>`__. +`usecases controller configuration <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-usecases/src/main/feature/config/usecases-controller.properties>`_. -This configuration file has two sections: *a)* application maven coordinates, and *b)* endpoint references and coders. +This configuration file has two sections: *a)* application maven coordinates, and *b)* endpoint +references and coders. Maven Coordinates ~~~~~~~~~~~~~~~~~ @@ -236,7 +218,8 @@ It is the *brain* of the control loop application. ..... This *kjar* contains the -`usecases DRL <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/usecases.drl>`__ file (there may be more than one DRL file included). +`usecases DRL <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/usecases.drl>`_ +file (there may be more than one DRL file included). .. code-block:: bash @@ -255,10 +238,10 @@ This *kjar* contains the end ... -The DRL in conjuction with the dependent java libraries in the kjar -`pom <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/pom.xml>`__ -realizes the application's function. For intance, it realizes the -vFirewall, vCPE, and vDNS use cases in ONAP. +The DRL in conjunction with the dependent java libraries in the kjar +`pom <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/pom.xml>`_ +realizes the application's function. For instance, it realizes the vFirewall, vCPE, and vDNS use +cases in ONAP. .. code-block:: bash @@ -274,66 +257,64 @@ vFirewall, vCPE, and vDNS use cases in ONAP. Endpoints References and Coders ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The *usecases-controller.properties* configuration also contains a mix of -source (of incoming controller traffic) and sink (of outgoing controller traffic) -configuration. This configuration also contains specific -filtering and mapping rules for incoming and outgoing dmaap messages -known as *coders*. +The *usecases-controller.properties* configuration also contains a mix of source (of incoming +controller traffic) and sink (of outgoing controller traffic) configuration. This configuration also +contains specific filtering and mapping rules for incoming and outgoing messages known as *coders*. .. code-block:: bash ... - dmaap.source.topics=DCAE_TOPIC,APPC-CL,APPC-LCM-WRITE,SDNR-CL-RSP - dmaap.sink.topics=APPC-CL,APPC-LCM-READ,POLICY-CL-MGT,SDNR-CL,DCAE_CL_RSP + kafka.source.topics=dcae_topic,appc-cl,appc-lcm-write,sdnr-cl-rsp + kafka.sink.topics=appc-cl,appc-lcm-read,policy-cl-mgt,sdnr-cl,dcae_cl_rsp + kafka.source.topics.appc-lcm-write.events=org.onap.policy.appclcm.AppcLcmMessageWrapper + kafka.source.topics.appc-lcm-write.events.org.onap.policy.appclcm.AppcLcmMessageWrapper.filter=[?($.type == 'response')] + kafka.source.topics.appc-lcm-write.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson - dmaap.source.topics.APPC-LCM-WRITE.events=org.onap.policy.appclcm.AppcLcmDmaapWrapper - dmaap.source.topics.APPC-LCM-WRITE.events.org.onap.policy.appclcm.AppcLcmDmaapWrapper.filter=[?($.type == 'response')] - dmaap.source.topics.APPC-LCM-WRITE.events.custom.gson=org.onap.policy.appclcm.util.Serialization,gson - - dmaap.sink.topics.APPC-CL.events=org.onap.policy.appc.Request - dmaap.sink.topics.APPC-CL.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty + kafka.sink.topics.appc-cl.events=org.onap.policy.appc.Request + kafka.sink.topics.appc-cl.events.custom.gson=org.onap.policy.appc.util.Serialization,gsonPretty ... -In this example, the *coders* specify that incoming messages over the DMaaP endpoint -reference *APPC-LCM-WRITE*, that have a field called *type* under the root JSON object with -value *response* are allowed into the *controller* application. In this case, the incoming -message is converted into an object (fact) of type *org.onap.policy.appclcm.AppcLcmDmaapWrapper*. -The *coder* has attached a custom implementation provided by the *application* with class -*org.onap.policy.appclcm.util.Serialization*. Note that the *coder* filter is expressed in JSONPath notation. +In this example, the *coders* specify that incoming messages reference *appc-lcm-write*, that have a +field called *type* under the root JSON object with value *response* are allowed into the +*controller* application. In this case, the incoming message is converted into an object (fact) of +type *org.onap.policy.appclcm.AppcLcmMessageWrapper*. The *coder* has attached a custom +implementation provided by the *application* with class +*org.onap.policy.appclcm.util.Serialization*. Note that the *coder* filter is expressed in JSONPath +notation. Note that not all the communication endpoint references need to be explicitly referenced within the -*controller* configuration file. For example, *Http clients* do not. -The reasons are historical, as the PDP-D was initially intended to only communicate -through messaging-based protocols such as UEB or DMaaP in asynchronous unidirectional mode. -The introduction of *Http* with synchronous bi-directional communication with remote endpoints made -it more convenient for the application to manage each network exchange. +*controller* configuration file. For example, *Http clients* do not. The reasons are historical, as +the PDP-D was initially intended to only communicate through messaging-based protocols such as UEB +or DMaaP in asynchronous unidirectional mode. The introduction of *Http* with synchronous +bi-directional communication with remote endpoints made it more convenient for the application to +manage each network exchange. UEB and DMaaP have been replaced by Kafka messaging since Kohn release. -*Controllers* configuration resides in the *$POLICY_HOME/config* (or *$POLICY_CONFIG*) directory in a container. +*Controllers* configuration resides in the *$POLICY_HOME/config* (or *$POLICY_CONFIG*) directory in +a container. Other Configuration Files ~~~~~~~~~~~~~~~~~~~~~~~~~ -There are other types of configuration files that *controllers* can use, for example *.environment* files -that provides a means to share data across applications. The -`controlloop.properties.environment <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment>`__ is one such example. +There are other types of configuration files that *controllers* can use, for example *.environment* +files that provides a means to share data across applications. The +`controlloop.properties.environment <https://git.onap.org/policy/drools-applications/tree/controlloop/common/feature-controlloop-management/src/main/feature/config/controlloop.properties.environment>`_ +is one such example. Tosca Policies ============== -PDP-D supports Tosca Policies through the *feature-lifecycle*. The *PDP-D* receives its policy set -from the *PAP*. A policy conforms to its Policy Type specification. -Policy Types and policy creation is done by the *API* component. -Policy deployments are orchestrated by the *PAP*. +PDP-D supports Tosca Policies through the *feature-lifecycle*. The *PDP-D* receives its policy set +from the *PAP*. A policy conforms to its Policy Type specification. Policy Types and policy creation +is done by the *API* component. Policy deployments are orchestrated by the *PAP*. -All communication between *PAP* and PDP-D is over the DMaaP *POLICY-PDP-PAP* topic. +All communication between *PAP* and PDP-D is over the Kafka *policy-pdp-pap* topic. Native Policy Types ~~~~~~~~~~~~~~~~~~~ -The PDP-D Engine supports two (native) Tosca policy types by means of the *lifecycle* -feature: +The PDP-D Engine supports two (native) Tosca policy types by means of the *lifecycle* feature: - *onap.policies.native.drools.Controller* - *onap.policies.native.drools.Artifact* @@ -342,7 +323,8 @@ These types can be used to dynamically deploy or undeploy application *controlle assign policy types, and upgrade or downgrade their attached maven artifact versions. For instance, an -`example native controller <https://git.onap.org/policy/drools-pdp/tree/feature-lifecycle/src/test/resources/tosca-policy-native-controller-example.json>`__ policy is shown below. +`example native controller <https://git.onap.org/policy/drools-pdp/tree/feature-lifecycle/src/test/resources/tosca-policy-native-controller-example.json>`_ +policy is shown below. .. code-block:: bash @@ -363,7 +345,7 @@ For instance, an "controllerName": "lifecycle", "sourceTopics": [ { - "topicName": "DCAE_TOPIC", + "topicName": "dcae_topic", "events": [ { "eventClass": "java.util.HashMap", @@ -378,7 +360,7 @@ For instance, an ], "sinkTopics": [ { - "topicName": "APPC-CL", + "topicName": "appc-cl", "events": [ { "eventClass": "java.util.HashMap", @@ -397,8 +379,9 @@ For instance, an } } -The actual application coordinates are provided with a policy of type onap.policies.native.drools.Artifact, -see the `example native artifact <https://git.onap.org/policy/drools-pdp/tree/feature-lifecycle/src/test/resources/tosca-policy-native-artifact-example.json>`__ +The actual application coordinates are provided with a policy of type +onap.policies.native.drools.Artifact, see the +`example native artifact <https://git.onap.org/policy/drools-pdp/tree/feature-lifecycle/src/test/resources/tosca-policy-native-artifact-example.json>`_ .. code-block:: bash @@ -434,16 +417,15 @@ see the `example native artifact <https://git.onap.org/policy/drools-pdp/tree/fe Operational Policy Types ~~~~~~~~~~~~~~~~~~~~~~~~ -The PDP-D also recognizes Tosca Operational Policies, although it needs an -application *controller* that understands them to execute them. These are: +The PDP-D also recognizes Tosca Operational Policies, although it needs an application *controller* +that understands them to execute them. These are: - *onap.policies.controlloop.operational.common.Drools* -A minimum of one application *controller* that supports these capabilities -must be installed in order to honor the *operational policy types*. -One such controller is the *usecases* controller residing in the -`policy/drools-applications <https://git.onap.org/policy/drools-applications>`__ -repository. +A minimum of one application *controller* that supports these capabilities must be installed in +order to honor the *operational policy types*. One such controller is the *usecases* controller +residing in the +`policy/drools-applications <https://git.onap.org/policy/drools-applications>`_ repository. Controller Policy Type Support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -459,15 +441,14 @@ explicitly in a native *onap.policies.native.drools.Controller* policy. The *controller* application could declare its supported policy types in the *kjar*. For example, the *usecases controller* packages this information in the -`kmodule.xml <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/META-INF/kmodule.xml>`__. One advantage of this approach is that the PDP-D would only +`kmodule.xml <https://git.onap.org/policy/drools-applications/tree/controlloop/common/controller-usecases/src/main/resources/META-INF/kmodule.xml>`_. One advantage of this approach is that the PDP-D would only commit to execute policies against these policy types if a supporting controller is up and running. .. code-block:: bash - <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> - <kbase name="onap.policies.controlloop.operational.common.Drools" default="false" equalsBehavior="equality"/> - <kbase name="onap.policies.controlloop.Operational" equalsBehavior="equality" - packages="org.onap.policy.controlloop" includes="onap.policies.controlloop.operational.common.Drools"> + <kmodule xmlns="http://www.drools.org/xsd/kmodule"> + <kbase name="onap.policies.controlloop.operational.common.Drools" equalsBehavior="equality" + packages="org.onap.policy.controlloop"> <ksession name="usecases"/> </kbase> </kmodule> @@ -477,23 +458,23 @@ Software Architecture PDP-D is divided into 2 layers: -- core (`policy-core <https://git.onap.org/policy/drools-pdp/tree/policy-core>`__) -- management (`policy-management <https://git.onap.org/policy/drools-pdp/tree/policy-management>`__) +- core (`policy-core <https://git.onap.org/policy/drools-pdp/tree/policy-core>`_) +- management (`policy-management <https://git.onap.org/policy/drools-pdp/tree/policy-management>`_) Core Layer ~~~~~~~~~~ The core layer directly interfaces with the *drools* libraries with 2 main abstractions: -* `PolicyContainer <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java>`__, and -* `PolicySession <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java>`__. +* `PolicyContainer <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicyContainer.java>`_, and +* `PolicySession <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicySession.java>`_. Policy Container and Sessions """"""""""""""""""""""""""""" -The *PolicyContainer* abstracts the drools *KieContainer*, while a *PolicySession* abstracts a drools *KieSession*. -PDP-D uses stateful sessions in active mode (*fireUntilHalt*) (please visit the `drools <https://www.drools.org/>`__ -website for additional documentation). +The *PolicyContainer* abstracts the drools *KieContainer*, while a *PolicySession* abstracts a +drools *KieSession*. PDP-D uses stateful sessions in active mode (*fireUntilHalt*) (please visit the +`drools <https://www.drools.org/>`_ website for additional documentation). Management Layer ~~~~~~~~~~~~~~~~ @@ -503,53 +484,59 @@ The management layer manages the PDP-D and builds on top of the *core* capabilit PolicyEngine """""""""""" -The PDP-D `PolicyEngine <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java>`__ is the top abstraction and abstracts away the PDP-D and all the -resources it holds. The reader looking at the source code can start looking at this component -in a top-down fashion. Note that the *PolicyEngine* abstraction should not be confused with the -sofware in the *policy/engine* repository, there is no relationship whatsoever other than in the naming. +The PDP-D `PolicyEngine <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyEngine.java>`_ is the top abstraction and abstracts away the PDP-D and all the +resources it holds. The reader looking at the source code can start looking at this component in a +top-down fashion. Note that the *PolicyEngine* abstraction should not be confused with the software +in the *policy/engine* repository, there is no relationship whatsoever other than in the naming. -The *PolicyEngine* represents the PDP-D, holds all PDP-D resources, and orchestrates activities among those. +The *PolicyEngine* represents the PDP-D, holds all PDP-D resources, and orchestrates activities +among those. -The *PolicyEngine* manages applications via the `PolicyController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyController.java>`__ abstractions in the base code. The +The *PolicyEngine* manages applications via the `PolicyController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyController.java>`_ abstractions in the base code. The relationship between the *PolicyEngine* and *PolicyController* is one to many. -The *PolicyEngine* holds other global resources such as a *thread pool*, *policies validator*, *telemetry* server, -and *unmanaged* topics for administration purposes. +The *PolicyEngine* holds other global resources such as a *thread pool*, *policies validator*, +*telemetry* server, and *unmanaged* topics for administration purposes. The *PolicyEngine* has interception points that allow -`*features* <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/features/PolicyEngineFeatureApi.java>`__ +`*features* <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/features/PolicyEngineFeatureApi.java>`_ to observe and alter the default *PolicyEngine* behavior. -The *PolicyEngine* implements the `*Startable* <https://git.onap.org/policy/common/tree/capabilities/src/main/java/org/onap/policy/common/capabilities/Startable.java>`__ and `*Lockable* <https://git.onap.org/policy/common/tree/capabilities/src/main/java/org/onap/policy/common/capabilities/Lockable.java>`__ interfaces. These operations -have a cascading effect on the resources the *PolicyEngine* holds, as it is the top level entity, thus -affecting *controllers* and *endpoints*. These capabilities are intended to be used for extensions, -for example active/standby multi-node capabilities. This programmability is -exposed via the *telemetry* API, and *feature* hooks. +The *PolicyEngine* implements the `*Startable* <https://git.onap.org/policy/common/tree/capabilities/src/main/java/org/onap/policy/common/capabilities/Startable.java>`_ and `*Lockable* <https://git.onap.org/policy/common/tree/capabilities/src/main/java/org/onap/policy/common/capabilities/Lockable.java>`_ interfaces. These operations +have a cascading effect on the resources the *PolicyEngine* holds, as it is the top level entity, +thus affecting *controllers* and *endpoints*. These capabilities are intended to be used for +extensions, for example active/standby multi-node capabilities. This programmability is exposed via +the *telemetry* API, and *feature* hooks. Configuration ^^^^^^^^^^^^^ *PolicyEngine* related configuration is located in the -`engine.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`__, -and `engine-system.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`__. +`engine.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`_, +and `engine-system.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`_. The *engine* configuration files reside in the *$POLICY_CONFIG* directory. PolicyController """""""""""""""" -A *PolicyController* represents an application. Each *PolicyController* has an instance of a -`DroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyController.java>`__. The *PolicyController* provides the means to group application specific resources -into a single unit. Such resources include the application's *maven coordinates*, *endpoint references*, and *coders*. +A *PolicyController* represents an application. Each +`PolicyController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyController.java>`_ has an instance of a +has an instance of a +`DroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/system/PolicyController.java>`_. +The *PolicyController* provides the means to group application specific resources into a single +unit. Such resources include the application's *maven coordinates*, *endpoint references*, and +*coders*. -A *PolicyController* uses a -`DroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/controller/DroolsController.java>`__ to interface with the *core* layer (*PolicyContainer* and *PolicySession*). +A *PolicyController* uses a *DroolsController* to interface with the *core* layer (*PolicyContainer* +and *PolicySession*). The relationship between the *PolicyController* and the *DroolsController* is one-to-one. The *DroolsController* currently supports 2 implementations, the -`MavenDroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java>`__, and the -`NullDroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/controller/internal/NullDroolsController.java>`__. -The *DroolsController*'s polymorphic behavior depends on whether a maven artifact is attached to the controller or not. +`MavenDroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/controller/internal/MavenDroolsController.java>`_, and the +`NullDroolsController <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/controller/internal/NullDroolsController.java>`_. +The *DroolsController*'s polymorphic behavior depends on whether a maven artifact is attached to the +controller or not. Configuration ^^^^^^^^^^^^^ @@ -569,35 +556,35 @@ Using Features and Listeners Features hook into the interception points provided by the the *PDP-D* main entities. -*Endpoint Listeners*, see `here <https://git.onap.org/policy/common/tree/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicListener.java>`__ -and `here <https://git.onap.org/policy/common/tree/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/listeners>`__, can be used in conjuction with features for additional capabilities. +`TopicListener <https://git.onap.org/policy/common/tree/message-bus/src/main/java/org/onap/policy/common/message/bus/event/TopicListener.java>`_ +and `other listeners <https://git.onap.org/policy/common/tree/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/listeners>`_ +, can be used in conjunction with features for additional capabilities. Using Maven-Drools applications """"""""""""""""""""""""""""""" -Maven-based drools applications can run any arbitrary functionality structured with rules and java logic. +Maven-based drools applications can run any arbitrary functionality structured with rules and java +logic. Recommended Flow """""""""""""""" -Whenever possible it is suggested that PDP-D related operations flow through the -*PolicyEngine* downwards in a top-down manner. This imposed order implies that -all the feature hooks are always invoked in a deterministic fashion. It is also -a good mechanism to safeguard against deadlocks. +Whenever possible it is suggested that PDP-D related operations flow through the *PolicyEngine* +downwards in a top-down manner. This imposed order implies that all the feature hooks are always +invoked in a deterministic fashion. It is also a good mechanism to safeguard against deadlocks. Telemetry Extensions """""""""""""""""""" -It is recommended to *features* (extensions) to offer a diagnostics REST API -to integrate with the telemetry API. This is done by placing JAX-RS files under -the package *org.onap.policy.drools.server.restful*. The root context path -for all the telemetry services is */policy/pdp/engine*. +It is recommended to *features* (extensions) to offer a diagnostics REST API to integrate with the +telemetry API. This is done by placing JAX-RS files under the package +*org.onap.policy.drools.server.restful*. The root context path for all the telemetry services is +*/policy/pdp/engine*. Features ======== -*Features* is an extension mechanism for the PDP-D functionality. -Features can be toggled on and off. +*Features* is an extension mechanism for the PDP-D functionality. Features can be toggled on and off. A feature is composed of: - Java libraries. @@ -607,13 +594,13 @@ Java Extensions ~~~~~~~~~~~~~~~ Additional functionality can be provided in the form of java libraries that hook into the -*PolicyEngine*, *PolicyController*, *DroolsController*, and *PolicySession* interception -points to observe or alter the PDP-D logic. +*PolicyEngine*, *PolicyController*, *DroolsController*, and *PolicySession* interception points to +observe or alter the PDP-D logic. See the Feature APIs available in the -`management <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/features>`__ +`management <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/java/org/onap/policy/drools/features>`_ and -`core <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureApi.java>`__ layers. +`core <https://git.onap.org/policy/drools-pdp/tree/policy-core/src/main/java/org/onap/policy/drools/core/PolicySessionFeatureApi.java>`_ layers. The convention used for naming these extension modules are *api-<name>* for interfaces, and *feature-<name>* for the actual java extensions. @@ -623,9 +610,9 @@ Configuration Items Installation items such as scripts, SQL, maven artifacts, and configuration files. -The reader can refer to the `policy/drools-pdp repository <https://git.onap.org/policy/drools-pdp>`__ -and the <https://git.onap.org/policy/drools-applications>`__ repository for miscellaneous feature -implementations. +The reader can refer to the `policy/drools-pdp repository <https://git.onap.org/policy/drools-pdp>`_ +and the `policy/drools-applications repository <https://git.onap.org/policy/drools-applications>`_ +repository for miscellaneous feature implementations. Layout """""" @@ -649,10 +636,6 @@ A feature is packaged in a *feature-<name>.zip* and has this internal layout: # | | L─ <dependent-jar>+ # │ L─ feature/ # │ L─ <feature-jar> - # L─ [db]/ - # │ L─ <db-name>/+ - # │ L─ sql/ - # │ L─ <sql-scripts>* # L─ [artifacts]/ # L─ <artifact>+ # L─ [install] @@ -674,16 +657,6 @@ A feature is packaged in a *feature-<name>.zip* and has this internal layout: # of pdp-d that are necessary for <feature-name> to operate # correctly. # lib/feature the single feature jar that implements the feature. - # [db] database directory, if the feature contains sql. - # [db]/<db-name> database to which underlying sql scripts should be applied. - # ideally, <db-name> = <feature-name> so it is easily to associate - # the db data with a feature itself. In addition, since a feature is - # a somewhat independent isolated unit of functionality,the <db-name> - # database ideally isolates all its data. - # [db]/<db-name>/sql directory with all the sql scripts. - # [db]/<db-name>/sql/<sql-scripts> for this feature, sql - # upgrade scripts should be suffixed with ".upgrade.sql" - # and downgrade scripts should be suffixed with ".downgrade.sql" # [artifacts] maven artifacts to be deployed in a maven repository. # [artifacts]/<artifact> maven artifact with identifiable maven coordinates embedded # in the artifact. @@ -699,7 +672,7 @@ A feature is packaged in a *feature-<name>.zip* and has this internal layout: # by the feature designer. # ######################################################################################## -The `features <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server-gen/bin/features>`__ +The `features <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server-gen/bin/features>`_ is the tool used for administration purposes: .. code-block:: bash @@ -730,18 +703,22 @@ The following features are included in the image but disabled. Healthcheck """"""""""" -The Healthcheck feature provides reports used to verify the health of *PolicyEngine.manager* in addition to the construction, operation, and deconstruction of HTTP server/client objects. +The Healthcheck feature provides reports used to verify the health of *PolicyEngine.manager* in +addition to the construction, operation, and deconstruction of HTTP server/client objects. When enabled, the feature takes as input a properties file named "*feature-healtcheck.properties*. -This file should contain configuration properties necessary for the construction of HTTP client and server objects. +This file should contain configuration properties necessary for the construction of HTTP client and +server objects. -Upon initialization, the feature first constructs HTTP server and client objects using the properties -from its properties file. A healthCheck operation is then triggered. The logic of the healthCheck verifies -that *PolicyEngine.manager* is alive, and iteratively tests each HTTP server object by sending HTTP GET -requests using its respective client object. If a server returns a "200 OK" message, it is marked as "healthy" -in its individual report. Any other return code results in an "unhealthy" report. +Upon initialization, the feature first constructs HTTP server and client objects using the +properties from its properties file. A healthCheck operation is then triggered. The logic of the +healthCheck verifies that *PolicyEngine.manager* is alive, and iteratively tests each HTTP server +object by sending HTTP GET requests using its respective client object. If a server returns a"200 +OK" message, it is marked as "healthy" in its individual report. Any other return code results in an +"unhealthy" report. -After the testing of the server objects has completed, the feature returns a single consolidated report. +After the testing of the server objects has completed, the feature returns a single consolidated +report. Lifecycle """"""""" @@ -754,41 +731,38 @@ The PAP interacts with the lifecycle feature to put a PDP-D in PASSIVE or ACTIVE The PASSIVE state allows for Tosca Operational policies to be deployed. Policy execution is enabled when the PDP-D transitions to the ACTIVE state. -This feature can coexist side by side with the legacy mode of operation that pre-dates the Dublin release. +This feature can coexist side by side with the legacy mode of operation that pre-dates the Dublin +release. Distributed Locking """"""""""""""""""" -The Distributed Locking Feature provides locking of resources across a pool of PDP-D hosts. -The list of locks is maintained in a database, where each record includes a resource identifier, -an owner identifier, and an expiration time. Typically, a drools application will unlock the resource -when it's operation completes. However, if it fails to do so, then the resource will be automatically +The Distributed Locking Feature provides locking of resources across a pool of PDP-D hosts. The list +of locks is maintained in a database, where each record includes a resource identifier, an owner +identifier, and an expiration time. Typically, a drools application will unlock the resource when +it's operation completes. However, if it fails to do so, then the resource will be automatically released when the lock expires, thus preventing a resource from becoming permanently locked. Other features ~~~~~~~~~~~~~~ -The following features have been contributed to the *policy/drools-pdp* but are either -unnecessary or have not been thoroughly tested: +The following features have been contributed to the *policy/drools-pdp* but are either unnecessary +or have not been thoroughly tested: .. toctree:: :maxdepth: 1 - feature_activestdbymgmt.rst - feature_controllerlogging.rst - feature_eelf.rst - feature_mdcfilters.rst feature_pooling.rst - feature_sesspersist.rst - feature_statemgmt.rst feature_testtransaction.rst feature_nolocking.rst Data Migration ============== -PDP-D data is migrated across releases with the -`db-migrator <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server-gen/bin/db-migrator>`__. +PDP-D data used to be migrated across releases with its own db-migrator until Kohn release. Since +Oslo, the main policy database manager, +`db-migrator <https://git.onap.org/policy/docker/tree/policy-db-migrator/>`_ +has been in use. The migration occurs when different release data is detected. *db-migrator* will look under the *$POLICY_HOME/etc/db/migration* for databases and SQL scripts to migrate. @@ -803,81 +777,23 @@ where *<sql-file>* is of the form: <VERSION>-<pdp|feature-name>[-description](.upgrade|.downgrade).sql -The db-migrator tool syntax is - -.. code-block:: bash - - syntax: db-migrator - -s <schema-name> - [-b <migration-dir>] - [-f <from-version>] - [-t <target-version>] - -o <operations> - - where <operations>=upgrade|downgrade|auto|version|erase|report - - Configuration Options: - -s|--schema|--database: schema to operate on ('ALL' to apply on all) - -b|--basedir: overrides base DB migration directory - -f|--from: overrides current release version for operations - -t|--target: overrides target release to upgrade/downgrade +More information on DB Migrator, check :ref:`Policy DB Migrator <policy-db-migrator-label>` page. - Operations: - upgrade: upgrade operation - downgrade: performs a downgrade operation - auto: autonomous operation, determines upgrade or downgrade - version: returns current version, and in conjunction if '-f' sets the current version - erase: erase all data related <schema> (use with care) - report: migration detailed report on an schema - ok: is the migration status valid - -See the -`feature-distributed-locking sql directory <https://git.onap.org/policy/drools-pdp/tree/feature-distributed-locking/src/main/feature/db/pooling/sql>`__ -for an example of upgrade/downgrade scripts. - -The following command will provide a report on the upgrade or downgrade activies: - -.. code-block:: bash - - db-migrator -s ALL -o report - -For example in the official guilin delivery: - -.. code-block:: bash - - policy@dev-drools-0:/tmp/policy-install$ db-migrator -s ALL -o report - +---------+---------+ - | name | version | - +---------+---------+ - | pooling | 1811 | - +---------+---------+ - +-------------------------------------+-----------+---------+---------------------+ - | script | operation | success | atTime | - +-------------------------------------+-----------+---------+---------------------+ - | 1804-distributedlocking.upgrade.sql | upgrade | 1 | 2020-05-22 19:33:09 | - | 1811-distributedlocking.upgrade.sql | upgrade | 1 | 2020-05-22 19:33:09 | - +-------------------------------------+-----------+---------+---------------------+ - -In order to use the *db-migrator* tool, the system must be configured with a database. - -.. code-block:: bash - - SQL_HOST=mariadb Maven Repositories ================== The drools libraries in the PDP-D uses maven to fetch rules artifacts and software dependencies. -The default *settings.xml* file specifies the repositories to search. This configuration -can be overriden with a custom copy that would sit in a mounted configuration -directory. See an example of the OOM override +The default *settings.xml* file specifies the repositories to search. This configuration can be +overwritten with a custom copy that would sit in a mounted configuration directory. See an example +of the OOM override `settings.xml <https://github.com/onap/oom/blob/master/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/settings.xml>`_. -The default ONAP installation of the *control loop* child image *onap/policy-pdpd-cl:1.6.4* is *OFFLINE*. -In this configuration, the *rules* artifact and the *dependencies* retrieves all the artifacts from the local -maven repository. Of course, this requires that the maven dependencies are preloaded in the local -repository for it to work. +The default ONAP installation of the *control loop* child image *onap/policy-pdpd-cl:3.0.1* is +*OFFLINE*. In this configuration, the *rules* artifact and the *dependencies* retrieves all the +artifacts from the local maven repository. Of course, this requires that the maven dependencies are +preloaded in the local repository for it to work. An offline configuration requires two items: @@ -885,13 +801,13 @@ An offline configuration requires two items: - override *settings.xml* customization, see `settings.xml <https://github.com/onap/oom/blob/master/kubernetes/policy/components/policy-drools-pdp/resources/configmaps/settings.xml>`_. -The default mode in the *onap/policy-drools:1.6.3* is ONLINE instead. +The default mode in the *onap/policy-drools:3.0.1* is ONLINE instead. In *ONLINE* mode, the *controller* initialization can take a significant amount of time. -The Policy ONAP installation includes a *nexus* repository component that can be used to host any arbitrary -artifacts that an PDP-D application may require. -The following environment variables configure its location: +The Policy ONAP installation includes a *nexus* repository component that can be used to host any +arbitrary artifacts that an PDP-D application may require. The following environment variables +configure its location: .. code-block:: bash @@ -901,10 +817,10 @@ The following environment variables configure its location: RELEASE_REPOSITORY_URL=http://nexus:8080/nexus/content/repositories/releases/ REPOSITORY_OFFLINE=false -The *deploy-artifact* tool is used to deploy artifacts to the local or remote maven repositories. -It also allows for dependencies to be installed locally. The *features* tool invokes it when artifacts are -to be deployed as part of a feature. The tool can be useful for developers to test a new application -in a container. +The *deploy-artifact* tool is used to deploy artifacts to the local or remote maven repositories. It +also allows for dependencies to be installed locally. The *features* tool invokes it when artifacts +are to be deployed as part of a feature. The tool can be useful for developers to test a new +application in a container. .. code-block:: bash @@ -920,19 +836,6 @@ in a container. -s|--settings: custom settings.xml -a|--artifact: file artifact (jar or pom) to deploy and/or install -AAF -=== - -Policy can talk to AAF for authorization requests. To enable AAF set -the following environment variables: - -.. code-block:: bash - - AAF=true - AAF_NAMESPACE=org.onap.policy - AAF_HOST=aaf-locate.onap - -By default AAF is disabled. Policy Tool =========== @@ -954,31 +857,29 @@ The *status* option provides generic status of the system. [features] name version status ---- ------- ------ - healthcheck 1.6.3 enabled - distributed-locking 1.6.3 enabled - lifecycle 1.6.3 enabled - controlloop-management 1.6.4 enabled - controlloop-utils 1.6.4 enabled - controlloop-trans 1.6.4 enabled - controlloop-usecases 1.6.4 enabled + healthcheck 3.0.1 enabled + distributed-locking 3.0.1 enabled + lifecycle 3.0.1 enabled + controlloop-management 3.0.1 enabled + controlloop-utils 3.0.1 enabled + controlloop-trans 3.0.1 enabled + controlloop-usecases 3.0.1 enabled - [migration] - pooling: OK @ 1811 It contains 3 sections: - *PDP-D* running status - *features* applied -- Data migration status on a per database basis. -The *start* and *stop* commands are useful for developers testing functionality on a docker container instance. +The *start* and *stop* commands are useful for developers testing functionality on a docker +container instance. Telemetry Shell =============== -*PDP-D* offers an ample set of REST APIs to debug, introspect, and change state on a running PDP-D. This is known as the -*telemetry* API. The *telemetry* shell wraps these APIs for shell-like access using -`http-prompt <http://http-prompt.com/>`__. +*PDP-D* offers an ample set of REST APIs to debug, introspect, and change state on a running PDP-D. +This is known as the *telemetry* API. The *telemetry* shell wraps these APIs for shell-like access +using `http-prompt <http://http-prompt.com/>`_. .. code-block:: bash @@ -1008,7 +909,8 @@ Refer to the *$POLICY_HOME/bin/* directory for additional tooling. PDP-D Docker Container Configuration ==================================== -Both the PDP-D *onap/policy-drools* and *onap/policy-pdpd-cl* images can be used without other components. +Both the PDP-D *onap/policy-drools* and *onap/policy-pdpd-cl* images can be used without other +components. There are 2 types of configuration data provided to the container: @@ -1018,9 +920,9 @@ There are 2 types of configuration data provided to the container: Environment variables ~~~~~~~~~~~~~~~~~~~~~ -As it was shown in the *controller* and *endpoint* sections, PDP-D configuration can rely -on environment variables. In a container environment, these variables are set up by the user -in the host environment. +As it was shown in the *controller* and *endpoint* sections, PDP-D configuration can rely on +environment variables. In a container environment, these variables are set up by the user in the +host environment. Configuration Files and Shell Scripts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1033,16 +935,15 @@ These are the configuration items that can reside externally and override the de - **settings.xml** if working with external nexus repositories. - **standalone-settings.xml** if an external *policy* nexus repository is not available. -- ***.conf** files containing environment variables. This is an alternative to use environment variables, - as these files will be sourced in before the PDP-D starts. +- ***.conf** files containing environment variables. This is an alternative to use environment + variables, as these files will be sourced in before the PDP-D starts. - **features*.zip** to load any arbitrary feature not present in the image. - ***.pre.sh** scripts that will be executed before the PDP-D starts. - ***.post.sh** scripts that will be executed after the PDP-D starts. - **policy-keystore** to override the default PDP-D java keystore. - **policy-truststore** to override the default PDP-D java truststore. -- **aaf-cadi.keyfile** to override the default AAF CADI Key generated by AAF. -- ***.properties** to override or add any properties file for the PDP-D, this includes *controller*, *endpoint*, - *engine* or *system* configurations. +- ***.properties** to override or add any properties file for the PDP-D, this includes *controller*, + *endpoint*, *engine* or *system* configurations. - **logback*.xml** to override the default logging configuration. - ***.xml** to override other .xml configuration that may be used for example by an *application*. - ***.json** *json* configuration that may be used by an *application*. @@ -1088,13 +989,7 @@ First create an environment file (in this example *env.conf*) to configure the P SQL_USER= SQL_PASSWORD= - # AAF - - AAF=false - AAF_NAMESPACE=org.onap.policy - AAF_HOST=aaf.api.simpledemo.onap.org - - # PDP-D DMaaP configuration channel + # PDP-D configuration channel PDPD_CONFIGURATION_TOPIC=PDPD-CONFIGURATION PDPD_CONFIGURATION_API_KEY= @@ -1105,57 +1000,30 @@ First create an environment file (in this example *env.conf*) to configure the P # PAP-PDP configuration channel - POLICY_PDP_PAP_TOPIC=POLICY-PDP-PAP + POLICY_PDP_PAP_TOPIC=policy-pdp-pap POLICY_PDP_PAP_API_KEY= POLICY_PDP_PAP_API_SECRET= - # DMaaP - - DMAAP_SERVERS=localhost -Note that *SQL_HOST*, and *REPOSITORY* are empty, so the PDP-D does not attempt -to integrate with those components. +Note that *SQL_HOST*, and *REPOSITORY* are empty, so the PDP-D does not attempt to integrate with +those components. Configuration ~~~~~~~~~~~~~ -In order to avoid the noise in the logs that relate to dmaap configuration, a startup script (*noop.pre.sh*) is added -to convert *dmaap* endpoints to *noop* in the host directory to be mounted. - -noop.pre.sh -""""""""""" - -.. code-block:: bash - - #!/bin/bash -x - - sed -i "s/^dmaap/noop/g" $POLICY_HOME/config/*.properties - - -active.post.sh -"""""""""""""" - -To put the controller directly in active mode at initialization, place an *active.post.sh* script under the -mounted host directory: - -.. code-block:: bash - - #!/bin/bash -x - - bash -c "http --verify=no -a ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} PUT https://localhost:9696/policy/pdp/engine/lifecycle/state/ACTIVE" - Bring up the PDP-D ~~~~~~~~~~~~~~~~~~ .. code-block:: bash - docker run --rm -p 9696:9696 -v ${PWD}/config:/tmp/policy-install/config --env-file ${PWD}/env/env.conf -it --name PDPD -h pdpd nexus3.onap.org:10001/onap/policy-drools:1.6.3 + docker run --rm -p 9696:9696 -v ${PWD}/config:/tmp/policy-install/config --env-file ${PWD}/env/env.conf -it --name PDPD -h pdpd nexus3.onap.org:10001/onap/policy-drools:3.0.1 To run the container in detached mode, add the *-d* flag. -Note that in this command, we are opening the *9696* telemetry API port to the outside world, the config directory -(where the *noop.pre.sh* customization script resides) is mounted as /tmp/policy-install/config, -and the customization environment variables (*env/env.conf*) are passed into the container. +Note that in this command, we are opening the *9696* telemetry API port to the outside world, the +config directory (where the *noop.pre.sh* customization script resides) is mounted as +/tmp/policy-install/config, and the customization environment variables (*env/env.conf*) are passed +into the container. To open a shell into the PDP-D: @@ -1163,7 +1031,7 @@ To open a shell into the PDP-D: docker exec -it pdp-d bash -Once in the container, run tools such as *telemetry*, *db-migrator*, *policy* to look at the system state: +Once in the container, run tools such as *telemetry*, *policy* to look at the system state: To run the *telemetry shell* and other tools from the host: @@ -1171,7 +1039,6 @@ To run the *telemetry shell* and other tools from the host: docker exec -it PDPD bash -c "/opt/app/policy/bin/telemetry" docker exec -it PDPD bash -c "/opt/app/policy/bin/policy status" - docker exec -it PDPD bash -c "/opt/app/policy/bin/db-migrator -s ALL -o report" Controlled instantiation of the PDP-D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1182,7 +1049,7 @@ Sometimes a developer may want to start and stop the PDP-D manually: # start a bash - docker run --rm -p 9696:9696 -v ${PWD}/config:/tmp/policy-install/config --env-file ${PWD}/env/env.conf -it --name PDPD -h pdpd nexus3.onap.org:10001/onap/policy-drools:1.6.3 bash + docker run --rm -p 9696:9696 -v ${PWD}/config:/tmp/policy-install/config --env-file ${PWD}/env/env.conf -it --name PDPD -h pdpd nexus3.onap.org:10001/onap/policy-drools:3.0.1 bash # use this command to start policy applying host customizations from /tmp/policy-install/config @@ -1200,205 +1067,34 @@ Sometimes a developer may want to start and stop the PDP-D manually: policy start -Running PDP-D with nexus and mariadb -==================================== - -*docker-compose* can be used to test the PDP-D with other components. This is an example configuration -that brings up *nexus*, *mariadb* and the PDP-D (*docker-compose-pdp.yml*) - -docker-compose-pdp.yml -~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: bash - - version: '3' - services: - mariadb: - image: mariadb:10.2.25 - container_name: mariadb - hostname: mariadb - command: ['--lower-case-table-names=1', '--wait_timeout=28800'] - env_file: - - ${PWD}/db/db.conf - volumes: - - ${PWD}/db:/docker-entrypoint-initdb.d - ports: - - "3306:3306" - nexus: - image: sonatype/nexus:2.14.8-01 - container_name: nexus - hostname: nexus - ports: - - "8081:8081" - drools: - image: nexus3.onap.org:10001/onap/policy-drools:1.6.3 - container_name: drools - depends_on: - - mariadb - - nexus - hostname: drools - ports: - - "9696:9696" - volumes: - - ${PWD}/config:/tmp/policy-install/config - env_file: - - ${PWD}/env/env.conf - -with *${PWD}/db/db.conf*: - -db.conf -~~~~~~~ - -.. code-block:: bash - - MYSQL_ROOT_PASSWORD=secret - MYSQL_USER=policy_user - MYSQL_PASSWORD=policy_user - -and *${PWD}/db/db.sh*: - -db.sh -~~~~~ - -.. code-block:: bash - - for db in support onap_sdk log migration operationshistory10 pooling policyadmin operationshistory - do - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "CREATE DATABASE IF NOT EXISTS ${db};" - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "GRANT ALL PRIVILEGES ON \`${db}\`.* TO '${MYSQL_USER}'@'%' ;" - done - - mysql -uroot -p"${MYSQL_ROOT_PASSWORD}" --execute "FLUSH PRIVILEGES;" - -env.conf -~~~~~~~~ +Running PDP-D with docker compose +================================= -The environment file *env/env.conf* for *PDP-D* can be set up with appropriate variables to point to the *nexus* instance -and the *mariadb* database: - -.. code-block:: bash - - # SYSTEM software configuration - - POLICY_HOME=/opt/app/policy - POLICY_LOGS=/var/log/onap/policy/pdpd - KEYSTORE_PASSWD=Pol1cy_0nap - TRUSTSTORE_PASSWD=Pol1cy_0nap - - # Telemetry credentials - - TELEMETRY_PORT=9696 - TELEMETRY_HOST=0.0.0.0 - TELEMETRY_USER=demo@people.osaaf.org - TELEMETRY_PASSWORD=demo123456! - - # nexus repository - - SNAPSHOT_REPOSITORY_ID=policy-nexus-snapshots - SNAPSHOT_REPOSITORY_URL=http://nexus:8081/nexus/content/repositories/snapshots/ - RELEASE_REPOSITORY_ID=policy-nexus-releases - RELEASE_REPOSITORY_URL=http://nexus:8081/nexus/content/repositories/releases/ - REPOSITORY_USERNAME=admin - REPOSITORY_PASSWORD=admin123 - REPOSITORY_OFFLINE=false - - MVN_SNAPSHOT_REPO_URL=https://nexus.onap.org/content/repositories/snapshots/ - MVN_RELEASE_REPO_URL=https://nexus.onap.org/content/repositories/releases/ - - # Relational (SQL) DB access - - SQL_HOST=mariadb - SQL_USER=policy_user - SQL_PASSWORD=policy_user - - # AAF - - AAF=false - AAF_NAMESPACE=org.onap.policy - AAF_HOST=aaf.api.simpledemo.onap.org - - # PDP-D DMaaP configuration channel - - PDPD_CONFIGURATION_TOPIC=PDPD-CONFIGURATION - PDPD_CONFIGURATION_API_KEY= - PDPD_CONFIGURATION_API_SECRET= - PDPD_CONFIGURATION_CONSUMER_GROUP= - PDPD_CONFIGURATION_CONSUMER_INSTANCE= - PDPD_CONFIGURATION_PARTITION_KEY= - - # PAP-PDP configuration channel - - POLICY_PDP_PAP_TOPIC=POLICY-PDP-PAP - POLICY_PDP_PAP_API_KEY= - POLICY_PDP_PAP_API_SECRET= - - # DMaaP - - DMAAP_SERVERS=localhost - -prepare.pre.sh -~~~~~~~~~~~~~~ - -A pre-start script *config/prepare.pres.sh"can be added the custom config directory -to prepare the PDP-D to activate the distributed-locking feature (using the database) -and to use "noop" topics instead of *dmaap* topics: - -.. code-block:: bash - - #!/bin/bash - - bash -c "/opt/app/policy/bin/features enable distributed-locking" - sed -i "s/^dmaap/noop/g" $POLICY_HOME/config/*.properties - -active.post.sh -~~~~~~~~~~~~~~ - -A post-start script *config/active.post.sh* can place PDP-D in *active* mode at initialization: - - .. code-block:: bash - - bash -c "http --verify=no -a ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} PUT <http|https>://localhost:9696/policy/pdp/engine/lifecycle/state/ACTIVE" - -Bring up the PDP-D, nexus, and mariadb -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -To bring up the containers: - -.. code-block:: bash - - docker-compose -f docker-compose-pdpd.yaml up -d - -To take it down: - -.. code-block:: bash - - docker-compose -f docker-compose-pdpd.yaml down -v +*docker-compose* can be used to test the PDP-D with other components. +Refer to the docker usage documentation at +`policy-docker <https://github.com/onap/policy-docker/tree/master/compose>`_ Other examples ~~~~~~~~~~~~~~ -The reader can also look at the `policy/docker repository <https://github.com/onap/policy-docker/tree/master/csit>`__. +The reader can also look at the `policy/docker repository <https://github.com/onap/policy-docker/tree/master/csit>`_. More specifically, these directories have examples of other PDP-D configurations: -* `plans <https://github.com/onap/policy-docker/tree/master/compose>`__: startup & teardown scripts. -* `scripts <https://github.com/onap/policy-docker/blob/master/compose/docker-compose.yml>`__: docker-compose file. -* `tests <https://github.com/onap/policy-docker/blob/master/csit/resources/tests/drools-pdp-test.robot>`__: test plan. +* `plans <https://github.com/onap/policy-docker/tree/master/compose>`_: startup & teardown scripts. +* `scripts <https://github.com/onap/policy-docker/blob/master/compose/compose.yaml>`_: docker-compose file. +* `tests <https://github.com/onap/policy-docker/blob/master/csit/resources/tests/drools-pdp-test.robot>`_: test plan. Configuring the PDP-D in an OOM Kubernetes installation ======================================================= -The `PDP-D OOM chart <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp>`__ can be -customized at the following locations: - -* `values.yaml <https://github.com/onap/oom/blob/master/kubernetes/policy/components/policy-drools-pdp/values.yaml>`__: custom values for your installation. -* `configmaps <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp/resources/configmaps>`__: place in this directory any configuration extensions or overrides to customize the PDP-D that does not contain sensitive information. -* `secrets <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp/resources/secrets>`__: place in this directory any configuration extensions or overrides to customize the PDP-D that does contain sensitive information. +The `PDP-D OOM chart <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp>`_ +can be customized at the following locations: -The same customization techniques described in the docker sections for PDP-D, fully apply here, by placing the corresponding -files or scripts in these two directories. +* `values.yaml <https://github.com/onap/oom/blob/master/kubernetes/policy/components/policy-drools-pdp/values.yaml>`_: custom values for your installation. +* `configmaps <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp/resources/configmaps>`_: place in this directory any configuration extensions or overrides to customize the PDP-D that does not contain sensitive information. +* `secrets <https://github.com/onap/oom/tree/master/kubernetes/policy/components/policy-drools-pdp/resources/secrets>`_: place in this directory any configuration extensions or overrides to customize the PDP-D that does contain sensitive information. -Additional information -====================== +The same customization techniques described in the docker sections for PDP-D, fully apply here, by +placing the corresponding files or scripts in these two directories. -For additional information, please see the -`Drools PDP Development and Testing (In Depth) <https://wiki.onap.org/display/DW/2020-08+Frankfurt+Tutorials>`__ page. +End of Document diff --git a/docs/drools/poolingDesign.png b/docs/drools/poolingDesign.png Binary files differdeleted file mode 100644 index 8040e809..00000000 --- a/docs/drools/poolingDesign.png +++ /dev/null diff --git a/docs/index.rst b/docs/index.rst index 8dcfef33..7922c08e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -22,6 +22,5 @@ Policy Framework Architecture apex/apex distribution/distribution clamp/clamp - ui/ui system-attributes/system-attributes release-notes diff --git a/docs/installation/docker.rst b/docs/installation/docker.rst index 95957a02..5a3baca5 100644 --- a/docs/installation/docker.rst +++ b/docs/installation/docker.rst @@ -35,7 +35,6 @@ After cloning the docker repository, the scripts and compose files are under the compose config -- all the components configurations metrics -- configuration for Prometheus server and Grafana dashboards - docker-compose.gui.yml -- compose file with gui services docker-compose.yml -- compose file with policy components services, including simulator, prometheus and grafana export-ports.sh -- script to export the http ports for all components and where the images are collected from get-versions.sh -- script to get the latest SNAPSHOT version of images based on branch (master is default) @@ -48,18 +47,12 @@ Start the containers automatically ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Assuming all the scripts are being executed from the compose folder. -To start all components without Policy GUI: +To start all components: .. code-block:: bash ./start-compose.sh -To start all components with Policy GUI: - -.. code-block:: bash - - ./start-compose.sh --gui - To start all components with Grafana dashboards and Prometheus server: .. code-block:: bash @@ -148,10 +141,10 @@ Start the containers manually **Step 1:** Set the containers location and project. -For *local* images, set CONTAINER_LOCATION="", located at the `export-ports.sh` script +For *local* images, set `LOCAL_IMAGES=true`, located at the `get-versions.sh` script *You will need to build locally all the images using the steps in the previous section* -For *remote* images set CONTAINER_LOCATION="nexus3.onap.org:10001/" +Remote images are downloaded by default from "nexus3.onap.org:10001" **Step 2:** Set gerrit branch @@ -174,7 +167,7 @@ Use the script get-versions.sh .. code-block:: bash - ./start-compose.sh <component> [--grafana] [--gui] + ./start-compose.sh <component> [--grafana] The <component> input is any of the policy components available: @@ -214,7 +207,7 @@ Before the `-jar /app/pap.jar \ ` line, add the following block: -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.local.only=false \ -On `docker-compose.yml` compose file, add to the port section the mapping 5005. +On `compose.yml` file, add to the port section the mapping 5005. .. code-block:: yaml @@ -222,7 +215,6 @@ On `docker-compose.yml` compose file, add to the port section the mapping 5005. image: ${CONTAINER_LOCATION}onap/policy-pap:${POLICY_PAP_VERSION} container_name: policy-pap depends_on: - - mariadb - simulator - api hostname: policy-pap diff --git a/docs/installation/oom.rst b/docs/installation/oom.rst index d1dca3d9..263e5a2f 100644 --- a/docs/installation/oom.rst +++ b/docs/installation/oom.rst @@ -16,14 +16,15 @@ Notes Cluster Used in this Guide ************************** -* Ubuntu-based cluster using Ubuntu 20.04.1 LTS -* 3 nodes - each having 8GB RAM and 4CPU +* Ubuntu-based VM using Ubuntu 22.04.1 LTS +* VM has 16GB RAM and 150 GB HDD and 4CPU +* microk8s-based cluster is used Prerequisites ************* -* K8s Cluster capable of running kubectl commands -* Both kubectl client and the server use v1.22.4 -* Helm version v3.6.3 is installed +* Microk8s Cluster capable of running kubectl commands +* Both kubectl client and the server use v1.30.4 +* Helm version v3.15.4 is installed * There should be a running chart repo called "local" * Chartmuseum used to create the chart repo @@ -60,19 +61,19 @@ Once this is completed, we should be able to see all of the charts in the local helm search repo local - local/policy 12.0.0 ONAP Policy - local/policy-apex-pdp 12.0.0 ONAP Policy APEX PDP - local/policy-api 12.0.0 ONAP Policy Design API - local/policy-clamp-ac-a1pms-ppnt 12.0.0 ONAP Policy Clamp A1PMS Participant - local/policy-clamp-ac-http-ppnt 12.0.0 ONAP Policy Clamp Controlloop Http Participant - local/policy-clamp-ac-k8s-ppnt 12.0.0 ONAP Policy Clamp Controlloop K8s Participant - local/policy-clamp-ac-kserve-ppnt 12.0.0 ONAP Policy Clamp Kserve Participant - local/policy-clamp-ac-pf-ppnt 12.0.0 ONAP Policy Clamp Controlloop Policy Participant - local/policy-clamp-runtime-acm 12.0.0 ONAP Policy Clamp Controlloop Runtime - local/policy-distribution 12.0.0 ONAP Policy Distribution - local/policy-drools-pdp 12.0.0 ONAP Drools Policy Engine (PDP-D) - local/policy-pap 12.0.0 ONAP Policy Administration (PAP) - local/policy-xacml-pdp 12.0.0 ONAP Policy XACML PDP (PDP-X) + local/policy 14.0.5 ONAP Policy + local/policy-apex-pdp 14.0.1 ONAP Policy APEX PDP + local/policy-api 14.0.2 ONAP Policy Design API + local/policy-clamp-ac-a1pms-ppnt 14.0.1 ONAP Policy Clamp A1PMS Participant + local/policy-clamp-ac-http-ppnt 14.0.1 ONAP Policy Clamp Controlloop Http Participant + local/policy-clamp-ac-k8s-ppnt 14.0.1 ONAP Policy Clamp Controlloop K8s Participant + local/policy-clamp-ac-kserve-ppnt 14.0.1 ONAP Policy Clamp Kserve Participant + local/policy-clamp-ac-pf-ppnt 14.0.1 ONAP Policy Clamp Controlloop Policy Participant + local/policy-clamp-runtime-acm 14.0.2 ONAP Policy Clamp Controlloop Runtime + local/policy-distribution 14.0.1 ONAP Policy Distribution + local/policy-drools-pdp 14.0.2 ONAP Drools Policy Engine (PDP-D) + local/policy-pap 14.0.2 ONAP Policy Administration (PAP) + local/policy-xacml-pdp 14.0.3 ONAP Policy XACML PDP (PDP-X) .. note:: Only the policy/acm charts are shown above - there will be many others. @@ -101,7 +102,7 @@ Install Strimzi Kafka Operator .. code-block:: bash helm repo add strimzi https://strimzi.io/charts/ - helm install strimzi-kafka-operator strimzi/strimzi-kafka-operator --namespace strimzi-system --version 0.32.0 --set watchAnyNamespace=true --create-namespace + helm install strimzi-kafka-operator strimzi/strimzi-kafka-operator --namespace strimzi-system --version 0.43.0 --set watchAnyNamespace=true --create-namespace Once these are installed and running, we can move on to the installation of the policy and related helm charts @@ -113,9 +114,9 @@ At this stage, we have all the required charts that we need for either Policy Fr helm deploy dev local/onap --namespace onap -f ~/override.yaml --create-namespace -In the above **helm deploy** command we provide an override file called **override.yaml**. In this file, we can turn on/off different parts of the onap installation. we have provided 2 different override files below in the collapsable code. One is for just the policy components and requirements. One is for the ACM components and requirements. These are provided just as examples - you can adjust any way you see fit. +In the above **helm deploy** command we provide an override file called **override.yaml**. In this file, we can turn on/off different parts of the onap installation. we have provided an file below in the collapsable code. This is provided just as examples - you can adjust any way you see fit. The choice between postgres and mariadb is controlled by **global.mariadbGalera.localCluster & global.mariadbGalera.useInPolicy** for mariadb and **global.postgres.localCluster & global.postgres.useInPolicy** for postgres -.. collapse:: Policy Chart Override +.. collapse:: Policy/ACM Chart Override .. code-block:: yaml @@ -127,6 +128,35 @@ In the above **helm deploy** command we provide an override file called **overri enabled: false cmpv2Enabled: false addTestingComponents: false + useStrimziKafka: true + useStrimziKafkaPf: false + mariadbGalera: + # flag to enable the DB creation via mariadb-operator + useOperator: false + # if useOperator set to "true", set "enableServiceAccount to "false" + # as the SA is created by the Operator + enableServiceAccount: true + localCluster: true + # '&mariadbConfig' means we "store" the values for later use in the file + # with '*mariadbConfig' pointer. + config: &mariadbConfig + mysqlDatabase: policyadmin + service: &mariadbService policy-mariadb + internalPort: 3306 + nameOverride: *mariadbService + # (optional) if localCluster=false and an external secret is used set this variable + #userRootSecret: <secretName> + useInPolicy: true + prometheusEnabled: false + postgres: + localCluster: false + service: + name: pgset + name2: policy-pg-primary + name3: policy-pg-replica + container: + name: postgres + useInPolicy: false robot: enabled: false so: @@ -134,145 +164,8 @@ In the above **helm deploy** command we provide an override file called **overri cassandra: enabled: false mariadb-galera: - enabled: true - replicaCount: 1 - appc: - enabled: false - sdnc: enabled: false replicaCount: 1 - config: - enableClustering: false - aaf: - enabled: false - aai: - enabled: false - clamp: - enabled: false - cli: - enabled: false - cds: - enabled: false - consul: - enabled: false - contrib: - enabled: false - awx: - enabled: false - netbox: - enabled: false - dcaegen2: - enabled: false - pnda: - enabled: false - dmaap: - enabled: true - message-router: - enabled: true - dmaap-bc: - enabled: false - dmaap-dr-prov: - enabled: false - dmaap-dr-node: - enabled: false - dmaap-strimzi: - enabled: false - esr: - enabled: false - log: - enabled: false - sniro-emulator: - enabled: false - oof: - enabled: false - msb: - enabled: false - multicloud: - enabled: false - nbi: - enabled: false - pomba: - enabled: false - portal: - enabled: false - platform: - enabled: false - sdc: - enabled: false - uui: - enabled: false - vfc: - enabled: false - vid: - enabled: false - modeling: - enabled: false - cps: - enabled: false - vnfsdk: - enabled: false - vvp: - enabled: false - strimzi: - enabled: true - replicaCount: 1 - persistence: - kafka: - size: 1Gi - zookeeper: - size: 256Mi - strimzi-kafka-bridge: - enabled: false - policy: - enabled: true - policy-clamp-ac-a1pms-ppnt: - enabled: false - policy-clamp-ac-k8s-ppnt: - enabled: false - policy-clamp-ac-http-ppnt: - enabled: false - policy-clamp-ac-pf-ppnt: - enabled: false - policy-clamp-runtime-acm: - enabled: false - policy-gui: - enabled: false - policy-apex-pdp: - enabled: true - policy-nexus: - enabled: false - policy-api: - enabled: true - policy-pap: - enabled: true - policy-xacml-pdp: - enabled: true - policy-drools-pdp: - enabled: true - policy-distribution: - enabled: true - -.. collapse:: ACM Chart Override - - .. code-block:: yaml - - global: - repository: nexus3.onap.org:10001 - pullPolicy: IfNotPresent - masterPassword: password - serviceMesh: - enabled: false - cmpv2Enabled: false - addTestingComponents: false - robot: - enabled: false - so: - enabled: false - cassandra: - enabled: false - mariadb-galera: - enabled: true - replicaCount: 1 appc: enabled: false sdnc: @@ -303,9 +196,9 @@ In the above **helm deploy** command we provide an override file called **overri pnda: enabled: false dmaap: - enabled: true + enabled: false message-router: - enabled: true + enabled: false dmaap-bc: enabled: false dmaap-dr-prov: @@ -364,6 +257,8 @@ In the above **helm deploy** command we provide an override file called **overri enabled: true policy-clamp-ac-a1pms-ppnt: enabled: true + policy-clamp-ac-kserve-ppnt: + enabled: true policy-clamp-ac-k8s-ppnt: enabled: true policy-clamp-ac-http-ppnt: @@ -375,7 +270,7 @@ In the above **helm deploy** command we provide an override file called **overri policy-gui: enabled: false policy-apex-pdp: - enabled: false + enabled: true policy-nexus: enabled: false policy-api: @@ -383,9 +278,9 @@ In the above **helm deploy** command we provide an override file called **overri policy-pap: enabled: true policy-xacml-pdp: - enabled: false + enabled: true policy-drools-pdp: - enabled: false + enabled: true policy-distribution: enabled: false @@ -428,8 +323,8 @@ The assumption is you have cloned the charts from the OOM repository into a loca From your local copy, edit any of the values.yaml files in the policy tree to make desired changes. -The policy schema will be installed automatically as part of the database configuration using ``db-migrator``. -By default the policy schema is upgraded to the latest version. +The policy/acm schemas will be installed automatically as part of the database configuration using ``db-migrator``. +By default the policy/acm schemas is upgraded to the latest version. For more information on how to change the ``db-migrator`` setup please see :ref:`Using Policy DB Migrator <policy-db-migrator-label>`. @@ -448,8 +343,8 @@ After undeploying policy, loop on monitoring the policy pods until they go away. .. code-block:: bash - helm undeploy dev-policy - kubectl get pods -n onap | grep dev-policy + helm undeploy dev + kubectl get pods -n onap | grep dev **Step 4** Re-Deploy Policy pods @@ -458,8 +353,8 @@ After deploying policy, loop on monitoring the policy pods until they come up. .. code-block:: bash - helm deploy dev-policy local/onap --namespace onap - kubectl get pods -n onap | grep dev-policy + helm deploy dev local/onap --namespace onap -f override.yaml + kubectl get pods -n onap | grep dev .. note:: If you want to purge the existing data and start with a clean install, @@ -542,18 +437,3 @@ To *override the PDP-D keystore or trustore*, add a suitable replacement(s) unde "drools/resources/secrets". Modify the drools chart values.yaml with new credentials, and follow the procedures described at :ref:`install-upgrade-policy-label` to redeploy the chart. - -To *disable https* for the DMaaP configuration topic, add a copy of -`engine.properties <https://git.onap.org/policy/drools-pdp/tree/policy-management/src/main/server/config/engine.properties>`_ -with "dmaap.source.topics.PDPD-CONFIGURATION.https" set to "false", or alternatively -create a ".pre.sh" script (see above) that edits this file before the PDP-D is -started. - -To use *noop topics* for standalone testing, add a "noop.pre.sh" script under -oom/kubernetes/policy/charts/drools/resources/configmaps/: - -.. code-block:: bash - - #!/bin/bash - sed -i "s/^dmaap/noop/g" $POLICY_HOME/config/*.properties - diff --git a/docs/pap/InternalPapPdp.rst b/docs/pap/InternalPapPdp.rst index 132e0df1..77395f5b 100644 --- a/docs/pap/InternalPapPdp.rst +++ b/docs/pap/InternalPapPdp.rst @@ -10,20 +10,19 @@ The Internal Policy Framework PAP-PDP API .. contents:: :depth: 3 -This page describes the API between the PAP and PDPs. The APIs in this section are implemented using `DMaaP -API <https://wiki.onap.org/display/DW/DMaaP+API>`__ messaging. The APIs in this section are used for internal -communication in the Policy Framework. The APIs are NOT supported for use by components outside the Policy Framework and -are subject to revision and change at any time. +This page describes the API between the PAP and PDPs. The APIs in this section are used for internal +communication in the Policy Framework, using Kafka as messaging system. The APIs are NOT supported for +use by components outside the Policy Framework and are subject to revision and change at any time. There are three messages on the API: 1. PDP_STATUS: PDP→PAP, used by PDPs to report to the PAP -2. PDP_UPDATE: PAP→PDP, used by the PAP to update the policies running on PDPs, triggers a PDP_STATUS message with - the result of the PDP_UPDATE operation +2. PDP_UPDATE: PAP→PDP, used by the PAP to update the policies running on PDPs, triggers a PDP_STATUS + message with the result of the PDP_UPDATE operation -3. PDP_STATE_CHANGE: PAP→PDP, used by the PAP to change the state of PDPs, triggers a PDP_STATUS message with the result - of the PDP_STATE_CHANGE operation +3. PDP_STATE_CHANGE: PAP→PDP, used by the PAP to change the state of PDPs, triggers a PDP_STATUS message + with the result of the PDP_STATE_CHANGE operation The fields in the table below are valid on API calls: @@ -57,7 +56,7 @@ policiesToBeUndeployed N/A M N/A The list of policies ->(name) O M N/A The name of a TOSCA policy running on the PDP ->policy_type O M N/A The TOSCA policy type of the policyWhen a PDP starts, it commences periodic sending of *PDP_STATUS* - messages on DMaaP. The PAP receives these messages + messages. The PAP receives these messages and acts in whatever manner is appropriate. ->policy_type_version O M N/A The version of the TOSCA policy type of the policy ->properties O M N/A The properties of the policy for the XACML, Drools, @@ -95,9 +94,9 @@ type in the implementation of this API. ================== The purpose of this API is for PDPs to provide heartbeat, status, health, and statistical information to Policy Administration. There is a single *PDP_STATUS* message on this API. PDPs send this message to the PAP using the -*POLICY_PDP_PAP* DMaaP topic. The PAP listens on this topic for messages. +*POLICY_PDP_PAP* topic. The PAP listens on this topic for messages. -When a PDP starts, it commences periodic sending of *PDP_STATUS* messages on DMaaP. The PAP receives these messages and +When a PDP starts, it commences periodic sending of *PDP_STATUS* messages. The PAP receives these messages and acts in whatever manner is appropriate. *PDP_UPDATE* and *PDP_STATE_CHANGE* operations trigger a *PDP_STATUS* message as a response. @@ -133,13 +132,6 @@ sent to the PAP in a *PDP_STATUS* message is unknown to the PAP, the PAP locks t name: xacml-23d33c2a-8715-43a8-ade5-5923fc0f185c pdpGroup: defaultGroup pdpSubgroup: xacml - statistics: - policyDeployCount: 0 - policyDeploySuccessCount: 0 - policyDeployFailCount: 0 - policyExecutedCount: 123 - policyExecutedSuccessCount: 122 - policyExecutedFailCount: 1 .. code-block:: yaml @@ -160,16 +152,6 @@ sent to the PAP in a *PDP_STATUS* message is unknown to the PAP, the PAP locks t deployment_instance_info: node_address: drools_2_pod # Other deployment instance info - statistics: - policyDeployCount: 3 - policyDeploySuccessCount: 3 - policyDeployFailCount: 0 - policyExecutedCount: 123 - policyExecutedSuccessCount: 122 - policyExecutedFailCount: 1 - policyUndeployCount: 0 - policyUndeploySuccessCount: 0 - policyUndeployFailCount: 0 response: responseTo: 52117e25-f416-45c7-a955-83ed929d557f responseStatus: SUCCESSSS @@ -191,16 +173,6 @@ sent to the PAP in a *PDP_STATUS* message is unknown to the PAP, the PAP locks t policies: - name: onap.controllloop.operational.apex.bbs.EastRegion version: 1.0.0 - statistics: - policyExecutedCount: 0 - policyExecutedSuccessCount: 0 - policyExecutedFailCount: 0 - policyDeployCount: 1 - policyDeploySuccessCount: 1 - policyDeployFailCount: 0 - policyUndeployCount: 0 - policyUndeploySuccessCount: 0 - policyUndeployFailCount: 0 response: responseTo: 679fad9b-abbf-4b9b-971c-96a8372ec8af responseStatus: SUCCESS @@ -235,20 +207,13 @@ sent to the PAP in a *PDP_STATUS* message is unknown to the PAP, the PAP locks t name: xacml-23d33c2a-8715-43a8-ade5-5923fc0f185c pdpGroup: onap.pdpgroup.Monitoring pdpSubgroup: xacml - statistics: - policyDeployCount: 0 - policyDeploySuccessCount: 0 - policyDeployFailCount: 0 - policyExecutedCount: 123 - policyExecutedSuccessCount: 122 - policyExecutedFailCount: 1 2 PDP API for PAPs ================== The purpose of this API is for the PAP to load and update policies on PDPs and to change the state of PDPs. -The PAP sends *PDP_UPDATE* and *PDP_STATE_CHANGE* messages to PDPs using the *POLICY_PAP_PDP* DMaaP topic. +The PAP sends *PDP_UPDATE* and *PDP_STATE_CHANGE* messages to PDPs using the *POLICY_PAP_PDP* topic. PDPs listen on this topic for messages. The PAP can set the scope of *PDP_STATE_CHANGE* message: diff --git a/docs/pap/pap.rst b/docs/pap/pap.rst index 1515af53..ac21c786 100644 --- a/docs/pap/pap.rst +++ b/docs/pap/pap.rst @@ -97,7 +97,7 @@ The purpose of this API is to support CRUD of PDP groups and subgroups and to su policies on PDP sub groups and PDPs. This API is provided by the *PolicyAdministration* component (PAP) of the Policy Framework, see the :ref:`ONAP Policy Framework Architecture <architecture-label>` page. -PDP groups and subgroups may be prefedined in the system. Predefined groups and subgroups may be modified or deleted +PDP groups and subgroups may be predefined in the system. Predefined groups and subgroups may be modified or deleted over this API. The policies running on predefined groups or subgroups as well as the instance counts and properties may also be modified. @@ -150,8 +150,10 @@ Here is a sample notification: 2 PAP REST API Swagger ====================== -It is worth noting that we use basic authorization for access with user name and password set to *policyadmin* and -*zb!XztG34*, respectively. +.. note:: + PF uses basic authorization for access with user name and password, to be set on application.yaml + properties file. An example can be seen at + `the docker configuration papParameters.yaml <https://github.com/onap/policy-docker/blob/master/compose/config/pap/papParameters.yaml>`_ For every call, the client is encouraged to insert a uuid-type *requestID* as parameter. It is helpful for tracking each http transaction and facilitates debugging. More importantly, it complies with Logging requirements v1.2. If the client @@ -390,7 +392,7 @@ Here is a sample response: The *PolicyAdministration* component (PAP) is initialized using a configuration file: `papParameters.yaml <https://github.com/onap/policy-pap/blob/master/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml>`_ -The configuration file is a YAML file containing the relevant fields for configuring the REST server, Database and DMaaP connectivity and so on. +The configuration file is a YAML file containing the relevant fields for configuring the REST server, Database and Kafka connectivity and so on. End of Document diff --git a/docs/release-notes.rst b/docs/release-notes.rst index ce932362..8b5d4cea 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -14,6 +14,192 @@ Policy Framework Release Notes .. * Except the date and the version number, all the other sections are optional but there must be at least .. * one section describing the purpose of this new release. + +.. ========================== +.. * * * NEWDELHI * * * +.. ========================== + +Version: 14.0.0 +--------------- + +:Release Date: 2024-06-13 (Newdelhi Release) + +Artifacts released: + +.. list-table:: + :widths: 15 10 10 + :header-rows: 1 + + * - Repository + - Java Artifact + - Docker Image (if applicable) + * - policy/parent + - 4.1.4 + - N/A + * - policy/docker + - 3.1.3 + - | policy-jre-alpine + | policy-jdk-alpine + | policy-db-migrator + * - policy/common + - 2.1.3 + - N/A + * - policy/models + - 3.1.3 + - N/A + * - policy/api + - 3.1.3 + - policy-api + * - policy/pap + - 3.1.3 + - policy-pap + * - policy/apex-pdp + - 3.1.3 + - policy-apex-pdp + * - policy/drools-pdp + - 2.1.3 + - policy-drools + * - policy/xacml-pdp + - 3.1.3 + - policy-xacml-pdp + * - policy/distribution + - 3.1.3 + - policy-distribution + * - policy/clamp + - 7.1.3 + - | policy-clamp-ac-pf-ppnt + | policy-clamp-ac-k8s-ppnt + | policy-clamp-ac-http-ppnt + | policy-clamp-runtime-acm' + * - policy/gui + - 3.1.3 + - policy-gui + * - policy/drools-applications + - 2.1.3 + - policy-pdpd-cl + +Key Updates +=========== + +* Improvements to CLAMP Automation Composition Management (ACM) + + CLAMP ACM is improved with various new capabilities in newdelhi release. ACM supports tracing feature with the integration of openTelemetry for http and kafka tracing. + This provides a more efficient way of diagnosing bottlenecks and performance issues in the system. + Participant's outProperties are now retained during the restart and redeployment scenario that can be consumed by the participants. + New Regression test suite has been added to test the ACM workflow with various combinations of ACM-R and participant versions. + ACM element versions can now be upgraded during Migration. + + See: + - `POLICY-4865 <https://lf-onap.atlassian.net/browse/POLICY-4865>`_ - R14: Improvements specific to clamp + +* Backward compatibility support in ACM + + From Newdelhi release, Users can deploy a newer version of ACM-R against an older participant version maintaining the backward compatibility. + Participant intermediary provides flexibility for the users to maintain the older version participant when ACM-R is upgraded. + + See: + - `POLICY-4952 <https://lf-onap.atlassian.net/browse/POLICY-4952>`_ - R14: Backward compatibility between ACM-R and participants + +* Oparent dependency removed + + From newdelhi onwards, Policy framework can be installed without oparent maven dependency. policy-parent provides all the required dependencies and design rule configurations + for the policy components. + + See: + - `POLICY-4960 <https://lf-onap.atlassian.net/browse/POLICY-4960>`_ - R14: Remove oparent dependency from PF + +* Tracing support in clamp + + Distributed tracing of messages between acm, participants, databases, rest is available in policy clamp that helps to diagnose the bottlenecks and performance issues in the system. + A combination of OpenTelemetry and Micrometer is used to achieve this. + + See: + - `POLICY-4875 <https://lf-onap.atlassian.net/browse/POLICY-4875>`_ - R14: Add support for Open Telemetry in ACM. + +Known Limitations, Issues and Workarounds +========================================= + +System Limitations +~~~~~~~~~~~~~~~~~~ +N/A + +Known Vulnerabilities +~~~~~~~~~~~~~~~~~~~~~ +N/A + +Workarounds +~~~~~~~~~~~ +N/A + +Security Notes +============== +N/A + +Functional Improvements +======================= +| `POLICY-4865 <https://lf-onap.atlassian.net/browse/POLICY-4865>`_ - R14: Improvements specific to clamp +| `POLICY-4875 <https://lf-onap.atlassian.net/browse/POLICY-4875>`_ - Add support for Open Telemetry in ACM +| `POLICY-4908 <https://lf-onap.atlassian.net/browse/POLICY-4908>`_ - Add support for outProperties retention in restart/redeploy scenario +| `POLICY-4952 <https://lf-onap.atlassian.net/browse/POLICY-4952>`_ - Support backward compatibility between ACM and participants +| `POLICY-4915 <https://lf-onap.atlassian.net/browse/POLICY-4915>`_ - Allow element version update in Migration +| `POLICY-4869 <https://lf-onap.atlassian.net/browse/POLICY-4869>`_ - Allow semantic versioning in ACM templates and instances +| `POLICY-4934 <https://lf-onap.atlassian.net/browse/POLICY-4934>`_ - Add db migrator support for clamp database + +| `POLICY-4960 <https://lf-onap.atlassian.net/browse/POLICY-4960>`_ - Remove oparent dependency in Policy framework + + +Necessary Improvements and Bug Fixes +==================================== + +Necessary Improvements +~~~~~~~~~~~~~~~~~~~~~~ +| `POLICY-4867 <https://lf-onap.atlassian.net/browse/POLICY-4867>`_ - R14: Refactoring and removal of unused code +| `POLICY-4855 <https://lf-onap.atlassian.net/browse/POLICY-4855>`_ - Remove AAF from Policy common repository +| `POLICY-4868 <https://lf-onap.atlassian.net/browse/POLICY-4868>`_ - R14: Software (non functional) improvements +| `POLICY-4960 <https://lf-onap.atlassian.net/browse/POLICY-4960>`_ - Remove oparent dependency in Policy framework +| `POLICY-4654 <https://lf-onap.atlassian.net/browse/POLICY-4654>`_ - Add metrics for ACM-R and participants +| `POLICY-4893 <https://lf-onap.atlassian.net/browse/POLICY-4893>`_ - Update Security dependencies +| `POLICY-4895 <https://lf-onap.atlassian.net/browse/POLICY-4895>`_ - Update SLAs dashboards with spring actuator changes +| `POLICY-4987 <https://lf-onap.atlassian.net/browse/POLICY-4987>`_ - Improve CSIT scripts and dependencies updates to CSIT docker images +| `POLICY-5002 <https://lf-onap.atlassian.net/browse/POLICY-5002>`_ - Alter release scripts to include checkstyle update +| `POLICY-4865 <https://lf-onap.atlassian.net/browse/POLICY-4865>`_ - R14: Improvements specific to CLAMP +| `POLICY-4806 <https://lf-onap.atlassian.net/browse/POLICY-4806>`_ - Support stress testing of ACM with multiple compositions +| `POLICY-4870 <https://lf-onap.atlassian.net/browse/POLICY-4870>`_ - Improve descriptiveness of error messages in clamp +| `POLICY-4900 <https://lf-onap.atlassian.net/browse/POLICY-4900>`_ - Add validation in ACM for unique element Ids +| `POLICY-4918 <https://lf-onap.atlassian.net/browse/POLICY-4918>`_ - Support recursive update of properties in participant Intermediary +| `POLICY-4635 <https://lf-onap.atlassian.net/browse/POLICY-4635>`_ - R14: Enhance Policy Framework Documentation +| `POLICY-4644 <https://lf-onap.atlassian.net/browse/POLICY-4644>`_ - Development documentation for Apex +| `POLICY-4584 <https://lf-onap.atlassian.net/browse/POLICY-4584>`_ - Update property configuration mechanism documentation +| `POLICY-4585 <https://lf-onap.atlassian.net/browse/POLICY-4585>`_ - Update PAP architecture documentation +| `POLICY-4629 <https://lf-onap.atlassian.net/browse/POLICY-4629>`_ - Update policy framework upgrade documentation + +Bug Fixes +~~~~~~~~~ +| `POLICY-4946 <https://lf-onap.atlassian.net/browse/POLICY-4946>`_ - Authorization issue in jenkins merge job for policy clamp regression module +| `POLICY-4953 <https://lf-onap.atlassian.net/browse/POLICY-4953>`_ - Missing properties from participant cache during migration +| `POLICY-4961 <https://lf-onap.atlassian.net/browse/POLICY-4961>`_ - Fix AutomationComposition copy constructor +| `POLICY-4968 <https://lf-onap.atlassian.net/browse/POLICY-4968>`_ - K8s Participant gets out of sync with ChartMuseum + + +References +========== + +For more information on the ONAP London release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + - `POLICY project page`_ + - `Passing Badge information for POLICY`_ + .. ========================== .. * * * MONTREAL * * * .. ========================== @@ -87,14 +273,14 @@ Key Updates multiple messages from ACM simultaneously. ACM configuration now supports customizable element names in the compositions. See: - - `POLICY-4505 <https://jira.onap.org/browse/POLICY-4505>`_ - R13: Improvements specific to clamp + - `POLICY-4505 <https://lf-onap.atlassian.net/browse/POLICY-4505>`_ - R13: Improvements specific to clamp * Migration functionality in ACM From Montreal release, Users can migrate the deployed AC instances to a different composition definition with updated configurations without impacting the running system. See: - - `POLICY-4809 <https://jira.onap.org/browse/POLICY-4809>`_ - R13: Instance Migration/Upgrade in ACM + - `POLICY-4809 <https://lf-onap.atlassian.net/browse/POLICY-4809>`_ - R13: Instance Migration/Upgrade in ACM * Java 17 Upgrade @@ -102,14 +288,14 @@ Key Updates applications along with the latest java capabilities. Also this upgrade is very significant in removing the critical security vulnerabilities. See: - - `POLICY-4665 <https://jira.onap.org/browse/POLICY-4665>`_ - R13: Java 17 and associated dependency upgrade + - `POLICY-4665 <https://lf-onap.atlassian.net/browse/POLICY-4665>`_ - R13: Java 17 and associated dependency upgrade * Remove AAF from Policy Framework AAF project is deprecated in ONAP. Policy Framework is refactored to remove unused functionalities and configurations related to AAF. See: - - `POLICY-4592 <https://jira.onap.org/browse/POLICY-4592>`_ - R13: Remove AAF from Policy Framework + - `POLICY-4592 <https://lf-onap.atlassian.net/browse/POLICY-4592>`_ - R13: Remove AAF from Policy Framework Known Limitations, Issues and Workarounds ========================================= @@ -133,49 +319,49 @@ Policy Framework upgraded to Spring 6 and Springboot 3 and eliminated critical s Functional Improvements ======================= -| `POLICY-4505 <https://jira.onap.org/browse/POLICY-4505>`_ - R13: Improvements specific to clamp -| `POLICY-4591 <https://jira.onap.org/browse/POLICY-4591>`_ - Update properties on deployed instances -| `POLICY-4683 <https://jira.onap.org/browse/POLICY-4683>`_ - Failure handling on the ACM-R -| `POLICY-4700 <https://jira.onap.org/browse/POLICY-4700>`_ - Handle multiple messages from ACM to Participant simultaneously -| `POLICY-4716 <https://jira.onap.org/browse/POLICY-4716>`_ - Enable timeout functionality in ACM/Participants -| `POLICY-4684 <https://jira.onap.org/browse/POLICY-4684>`_ - Participant restart handling in ACM -| `POLICY-4827 <https://jira.onap.org/browse/POLICY-4827>`_ - Allow customisation of element names in composition definition -| `POLICY-4699 <https://jira.onap.org/browse/POLICY-4699>`_ - Create a mock participant for ACM testing -| `POLICY-4809 <https://jira.onap.org/browse/POLICY-4809>`_ - Instance Migration/Upgrade in ACM +| `POLICY-4505 <https://lf-onap.atlassian.net/browse/POLICY-4505>`_ - R13: Improvements specific to clamp +| `POLICY-4591 <https://lf-onap.atlassian.net/browse/POLICY-4591>`_ - Update properties on deployed instances +| `POLICY-4683 <https://lf-onap.atlassian.net/browse/POLICY-4683>`_ - Failure handling on the ACM-R +| `POLICY-4700 <https://lf-onap.atlassian.net/browse/POLICY-4700>`_ - Handle multiple messages from ACM to Participant simultaneously +| `POLICY-4716 <https://lf-onap.atlassian.net/browse/POLICY-4716>`_ - Enable timeout functionality in ACM/Participants +| `POLICY-4684 <https://lf-onap.atlassian.net/browse/POLICY-4684>`_ - Participant restart handling in ACM +| `POLICY-4827 <https://lf-onap.atlassian.net/browse/POLICY-4827>`_ - Allow customisation of element names in composition definition +| `POLICY-4699 <https://lf-onap.atlassian.net/browse/POLICY-4699>`_ - Create a mock participant for ACM testing +| `POLICY-4809 <https://lf-onap.atlassian.net/browse/POLICY-4809>`_ - Instance Migration/Upgrade in ACM Necessary Improvements and Bug Fixes ==================================== Necessary Improvements ~~~~~~~~~~~~~~~~~~~~~~ -| `POLICY-4396 <https://jira.onap.org/browse/POLICY-4396>`_ - R13: Improvements on Apex-pdp -| `POLICY-4765 <https://jira.onap.org/browse/POLICY-4765>`_ - Support for Context Albums across policy sets in Apex -| `POLICY-4645 <https://jira.onap.org/browse/POLICY-4645>`_ - Use Postgres DB in CSIT tests for Apex-pdp -| `POLICY-4505 <https://jira.onap.org/browse/POLICY-4505>`_ - R13: Improvements on clamp Acm -| `POLICY-4651 <https://jira.onap.org/browse/POLICY-4651>`_ - Extend instance deletion to request additional actions in participant -| `POLICY-4636 <https://jira.onap.org/browse/POLICY-4636>`_ - ACM manual and automation tests -| `POLICY-4774 <https://jira.onap.org/browse/POLICY-4774>`_ - Participant priming properties -| `POLICY-4762 <https://jira.onap.org/browse/POLICY-4762>`_ - Unused Property Removal in clamp/docker -| `POLICY-4802 <https://jira.onap.org/browse/POLICY-4802>`_ - Make authentication optional for prometheus metrics -| `POLICY-4808 <https://jira.onap.org/browse/POLICY-4808>`_ - Update swagger with new functionality and examples -| `POLICY-4818 <https://jira.onap.org/browse/POLICY-4818>`_ - policy endpoint allow packaging of kafka-client dependency -| `POLICY-4768 <https://jira.onap.org/browse/POLICY-4768>`_ - Update openapi.yaml to have the common headers section -| `POLICY-4763 <https://jira.onap.org/browse/POLICY-4763>`_ - Make changes to the liveness/readiness timeout in helm charts -| `POLICY-4593 <https://jira.onap.org/browse/POLICY-4593>`_ - R13: Software (non functional) improvements -| `POLICY-4615 <https://jira.onap.org/browse/POLICY-4615>`_ - Software Vulnerability discrepancies in Sonatype reports -| `POLICY-4406 <https://jira.onap.org/browse/POLICY-4406>`_ - Mitigate vulnerable dependencies in CDS -| `POLICY-4831 <https://jira.onap.org/browse/POLICY-4831>`_ - Fix Sonar issues +| `POLICY-4396 <https://lf-onap.atlassian.net/browse/POLICY-4396>`_ - R13: Improvements on Apex-pdp +| `POLICY-4765 <https://lf-onap.atlassian.net/browse/POLICY-4765>`_ - Support for Context Albums across policy sets in Apex +| `POLICY-4645 <https://lf-onap.atlassian.net/browse/POLICY-4645>`_ - Use Postgres DB in CSIT tests for Apex-pdp +| `POLICY-4505 <https://lf-onap.atlassian.net/browse/POLICY-4505>`_ - R13: Improvements on clamp Acm +| `POLICY-4651 <https://lf-onap.atlassian.net/browse/POLICY-4651>`_ - Extend instance deletion to request additional actions in participant +| `POLICY-4636 <https://lf-onap.atlassian.net/browse/POLICY-4636>`_ - ACM manual and automation tests +| `POLICY-4774 <https://lf-onap.atlassian.net/browse/POLICY-4774>`_ - Participant priming properties +| `POLICY-4762 <https://lf-onap.atlassian.net/browse/POLICY-4762>`_ - Unused Property Removal in clamp/docker +| `POLICY-4802 <https://lf-onap.atlassian.net/browse/POLICY-4802>`_ - Make authentication optional for prometheus metrics +| `POLICY-4808 <https://lf-onap.atlassian.net/browse/POLICY-4808>`_ - Update swagger with new functionality and examples +| `POLICY-4818 <https://lf-onap.atlassian.net/browse/POLICY-4818>`_ - policy endpoint allow packaging of kafka-client dependency +| `POLICY-4768 <https://lf-onap.atlassian.net/browse/POLICY-4768>`_ - Update openapi.yaml to have the common headers section +| `POLICY-4763 <https://lf-onap.atlassian.net/browse/POLICY-4763>`_ - Make changes to the liveness/readiness timeout in helm charts +| `POLICY-4593 <https://lf-onap.atlassian.net/browse/POLICY-4593>`_ - R13: Software (non functional) improvements +| `POLICY-4615 <https://lf-onap.atlassian.net/browse/POLICY-4615>`_ - Software Vulnerability discrepancies in Sonatype reports +| `POLICY-4406 <https://lf-onap.atlassian.net/browse/POLICY-4406>`_ - Mitigate vulnerable dependencies in CDS +| `POLICY-4831 <https://lf-onap.atlassian.net/browse/POLICY-4831>`_ - Fix Sonar issues Bug Fixes ~~~~~~~~~ -| `POLICY-4769 <https://jira.onap.org/browse/POLICY-4769>`_ - State change result of AC instances not updated after TIMEOUT -| `POLICY-4770 <https://jira.onap.org/browse/POLICY-4770>`_ - Participants are offline in the runtime database after registration -| `POLICY-4772 <https://jira.onap.org/browse/POLICY-4772>`_ - Restart flag in ACM instance is still true after participant is restarted -| `POLICY-4773 <https://jira.onap.org/browse/POLICY-4773>`_ - Missing validation in Delete AC instance -| `POLICY-4776 <https://jira.onap.org/browse/POLICY-4776>`_ - Participants are unable to perform deploy/undeploy/delete operations after restart -| `POLICY-4804 <https://jira.onap.org/browse/POLICY-4804>`_ - Participant Intermediary is not updating the transition state "UNDEPLOYING" in the participant status -| `POLICY-4830 <https://jira.onap.org/browse/POLICY-4830>`_ - Tosca element names are not validated if not aligned with the configured values +| `POLICY-4769 <https://lf-onap.atlassian.net/browse/POLICY-4769>`_ - State change result of AC instances not updated after TIMEOUT +| `POLICY-4770 <https://lf-onap.atlassian.net/browse/POLICY-4770>`_ - Participants are offline in the runtime database after registration +| `POLICY-4772 <https://lf-onap.atlassian.net/browse/POLICY-4772>`_ - Restart flag in ACM instance is still true after participant is restarted +| `POLICY-4773 <https://lf-onap.atlassian.net/browse/POLICY-4773>`_ - Missing validation in Delete AC instance +| `POLICY-4776 <https://lf-onap.atlassian.net/browse/POLICY-4776>`_ - Participants are unable to perform deploy/undeploy/delete operations after restart +| `POLICY-4804 <https://lf-onap.atlassian.net/browse/POLICY-4804>`_ - Participant Intermediary is not updating the transition state "UNDEPLOYING" in the participant status +| `POLICY-4830 <https://lf-onap.atlassian.net/browse/POLICY-4830>`_ - Tosca element names are not validated if not aligned with the configured values References @@ -189,7 +375,7 @@ For more information on the ONAP London release, please see: #. `ONAP Wiki Page`_ .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -272,14 +458,14 @@ Key Updates `ITU Recommendation X.731 <https://www.itu.int/rec/T-REC-X.731-199201-I/en>`_ is now supported for state reporting from rApp microservices. See: - - `POLICY-4401 <https://jira.onap.org/browse/POLICY-4401>`_ - R12: Improvements specific to clamp + - `POLICY-4401 <https://lf-onap.atlassian.net/browse/POLICY-4401>`_ - R12: Improvements specific to clamp * Improved database support in CLAMP ACM CLAMP ACM now supports MySql 8.x as a database and supports secured DB communication. See: - - `POLICY-4395 <https://jira.onap.org/browse/POLICY-4395>`_ - R12: Database related issues + - `POLICY-4395 <https://lf-onap.atlassian.net/browse/POLICY-4395>`_ - R12: Database related issues * Metadata driven API Generation @@ -288,7 +474,7 @@ Key Updates is substantially enhanced. See the `Policy Offered APIs in the documentation <https://docs.onap.org/projects/onap-policy-parent/en/london/offeredapis.html>`_. See: - - `POLICY-4123 <https://jira.onap.org/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup + - `POLICY-4123 <https://lf-onap.atlassian.net/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup * Improved Metrics and SLAs @@ -297,7 +483,7 @@ Key Updates as part of the CSIT testing that ensure the SLAs are complied with. See: - - `POLICY-4124 <https://jira.onap.org/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs + - `POLICY-4124 <https://lf-onap.atlassian.net/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs * Improved Testing @@ -308,8 +494,8 @@ Key Updates - Tests now use http rather than https See: - - `POLICY-4125 <https://jira.onap.org/browse/POLICY-4125>`_ - R12: New Test Development - - `POLICY-4126 <https://jira.onap.org/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests + - `POLICY-4125 <https://lf-onap.atlassian.net/browse/POLICY-4125>`_ - R12: New Test Development + - `POLICY-4126 <https://lf-onap.atlassian.net/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests Known Limitations, Issues and Workarounds ========================================= @@ -482,121 +668,121 @@ Security Notes ============== Upgrading to Spring 6 and Springboot 3 is required to remove security vulnerabilities above. This change requries moving to Java 17. -This change will be done in the Montreal release of the Policy Framework. See `POLICY-4665 <https://jira.onap.org/browse/POLICY-4665>`_. +This change will be done in the Montreal release of the Policy Framework. See `POLICY-4665 <https://lf-onap.atlassian.net/browse/POLICY-4665>`_. Functional Improvements ======================= -| `POLICY-4395 <https://jira.onap.org/browse/POLICY-4395>`_ - R12: Database related issues -| `POLICY-4184 <https://jira.onap.org/browse/POLICY-4184>`_ - ACM Support for MySql 8.x DB client interfaces -| `POLICY-4358 <https://jira.onap.org/browse/POLICY-4358>`_ - Support secured DB communications for CLAMP/ACM -| `POLICY-4401 <https://jira.onap.org/browse/POLICY-4401>`_ - R12: Improvements specific to clamp -| `POLICY-4282 <https://jira.onap.org/browse/POLICY-4282>`_ - Test and Verification of ACM State Management -| `POLICY-4330 <https://jira.onap.org/browse/POLICY-4330>`_ - Add Prometheus metric messages for ACM -| `POLICY-4413 <https://jira.onap.org/browse/POLICY-4413>`_ - Refactor the state machines in CLAMP ACM-R and the Participant Intermediary -| `POLICY-4418 <https://jira.onap.org/browse/POLICY-4418>`_ - Remove old implementation of statistics in ACM -| `POLICY-4458 <https://jira.onap.org/browse/POLICY-4458>`_ - Create a Participant for A1-PMS -| `POLICY-4525 <https://jira.onap.org/browse/POLICY-4525>`_ - Create a Participant for KServe -| `POLICY-4563 <https://jira.onap.org/browse/POLICY-4563>`_ - ACM manual and automation tests -| `POLICY-4639 <https://jira.onap.org/browse/POLICY-4639>`_ - UseState and OperationalState support in ACM +| `POLICY-4395 <https://lf-onap.atlassian.net/browse/POLICY-4395>`_ - R12: Database related issues +| `POLICY-4184 <https://lf-onap.atlassian.net/browse/POLICY-4184>`_ - ACM Support for MySql 8.x DB client interfaces +| `POLICY-4358 <https://lf-onap.atlassian.net/browse/POLICY-4358>`_ - Support secured DB communications for CLAMP/ACM +| `POLICY-4401 <https://lf-onap.atlassian.net/browse/POLICY-4401>`_ - R12: Improvements specific to clamp +| `POLICY-4282 <https://lf-onap.atlassian.net/browse/POLICY-4282>`_ - Test and Verification of ACM State Management +| `POLICY-4330 <https://lf-onap.atlassian.net/browse/POLICY-4330>`_ - Add Prometheus metric messages for ACM +| `POLICY-4413 <https://lf-onap.atlassian.net/browse/POLICY-4413>`_ - Refactor the state machines in CLAMP ACM-R and the Participant Intermediary +| `POLICY-4418 <https://lf-onap.atlassian.net/browse/POLICY-4418>`_ - Remove old implementation of statistics in ACM +| `POLICY-4458 <https://lf-onap.atlassian.net/browse/POLICY-4458>`_ - Create a Participant for A1-PMS +| `POLICY-4525 <https://lf-onap.atlassian.net/browse/POLICY-4525>`_ - Create a Participant for KServe +| `POLICY-4563 <https://lf-onap.atlassian.net/browse/POLICY-4563>`_ - ACM manual and automation tests +| `POLICY-4639 <https://lf-onap.atlassian.net/browse/POLICY-4639>`_ - UseState and OperationalState support in ACM Necessary Improvements and Bug Fixes ==================================== Necessary Improvements ~~~~~~~~~~~~~~~~~~~~~~ -| `POLICY-4122 <https://jira.onap.org/browse/POLICY-4122>`_ - R12: Refactoring and Removal of Unused Code -| `POLICY-4138 <https://jira.onap.org/browse/POLICY-4138>`_ - Transfer the API handling from the clamp-backend microservice to another microservice -| `POLICY-4139 <https://jira.onap.org/browse/POLICY-4139>`_ - Remove the clamp-backend microservice -| `POLICY-4140 <https://jira.onap.org/browse/POLICY-4140>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the unused code is removed -| `POLICY-4157 <https://jira.onap.org/browse/POLICY-4157>`_ - Investigation story For Server-Client in PF -| `POLICY-4123 <https://jira.onap.org/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup -| `POLICY-3368 <https://jira.onap.org/browse/POLICY-3368>`_ - Revise Rest API conventions and structure -| `POLICY-3465 <https://jira.onap.org/browse/POLICY-3465>`_ - Upgrade Swagger to io.swagger.core.v3 -| `POLICY-4143 <https://jira.onap.org/browse/POLICY-4143>`_ - Generate Contract Testing stubs from OpenAPI specifications -| `POLICY-4144 <https://jira.onap.org/browse/POLICY-4144>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the OpenAPI approach is reversed -| `POLICY-4158 <https://jira.onap.org/browse/POLICY-4158>`_ - Open API Specifications as a Source Artifacts ACM -| `POLICY-4159 <https://jira.onap.org/browse/POLICY-4159>`_ - Maven build for OpenAPI Interface Generation -| `POLICY-4160 <https://jira.onap.org/browse/POLICY-4160>`_ - Rest endpoint implementation code Acm -| `POLICY-4162 <https://jira.onap.org/browse/POLICY-4162>`_ - Spike to understand OpenAPI Adaption -| `POLICY-4404 <https://jira.onap.org/browse/POLICY-4404>`_ - Remove SpringFox from Policy Framework -| `POLICY-4448 <https://jira.onap.org/browse/POLICY-4448>`_ - Rest endpoint implementation code Api and Pap -| `POLICY-4124 <https://jira.onap.org/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs -| `POLICY-4145 <https://jira.onap.org/browse/POLICY-4145>`_ - Enable Observability and Performance Management -| `POLICY-4147 <https://jira.onap.org/browse/POLICY-4147>`_ - Add Prometheus counters for measuring APEX PDP performance SLAs -| `POLICY-4148 <https://jira.onap.org/browse/POLICY-4148>`_ - Check counter names for consistency -| `POLICY-4149 <https://jira.onap.org/browse/POLICY-4149>`_ - Verify that the counters are being produced -| `POLICY-4165 <https://jira.onap.org/browse/POLICY-4165>`_ - SLAs from Global Requirements -| `POLICY-4469 <https://jira.onap.org/browse/POLICY-4469>`_ - SLAs on REST Interfaces for Async Requests -| `POLICY-4125 <https://jira.onap.org/browse/POLICY-4125>`_ - R12: New Test Development -| `POLICY-4150 <https://jira.onap.org/browse/POLICY-4150>`_ - Add the tests to the automated test suite in the Policy Framework -| `POLICY-4151 <https://jira.onap.org/browse/POLICY-4151>`_ - Add tests that check SLA compliance -| `POLICY-4152 <https://jira.onap.org/browse/POLICY-4152>`_ - Execute the new tests -| `POLICY-4164 <https://jira.onap.org/browse/POLICY-4164>`_ - Verify SLAs on Policy Execution in PDPs -| `POLICY-4571 <https://jira.onap.org/browse/POLICY-4571>`_ - S3P Test to check multiple PDP registration -| `POLICY-4655 <https://jira.onap.org/browse/POLICY-4655>`_ - Remove k8s based csit from jenkins -| `POLICY-4126 <https://jira.onap.org/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests -| `POLICY-4111 <https://jira.onap.org/browse/POLICY-4111>`_ - S3P testing of APEX-PDP prometheus metrics -| `POLICY-4153 <https://jira.onap.org/browse/POLICY-4153>`_ - Ensure reports on SLA compliance are generated by test execution -| `POLICY-4154 <https://jira.onap.org/browse/POLICY-4154>`_ - Write a suite of automated contract tests. -| `POLICY-4155 <https://jira.onap.org/browse/POLICY-4155>`_ - Add the tests to the automated test suite in the Policy Framework -| `POLICY-4156 <https://jira.onap.org/browse/POLICY-4156>`_ - Automate the current S3P test suites in the Policy Framework -| `POLICY-4417 <https://jira.onap.org/browse/POLICY-4417>`_ - Support Policy CSIT tests in kubernetes environment with helm chart -| `POLICY-4501 <https://jira.onap.org/browse/POLICY-4501>`_ - Add ACM demo service template example in clamp -| `POLICY-4127 <https://jira.onap.org/browse/POLICY-4127>`_ - R12: Enhance Policy Framework Documentation -| `POLICY-4581 <https://jira.onap.org/browse/POLICY-4581>`_ - Policy Offered APIs -| `POLICY-4583 <https://jira.onap.org/browse/POLICY-4583>`_ - Update Policy Platform Development Tools documentation -| `POLICY-4586 <https://jira.onap.org/browse/POLICY-4586>`_ - Review and update the ACM design documentation -| `POLICY-4587 <https://jira.onap.org/browse/POLICY-4587>`_ - Write documentation for Composition and participant development in ACM -| `POLICY-4396 <https://jira.onap.org/browse/POLICY-4396>`_ - R12: Improvements specific to apex-pdp -| `POLICY-4411 <https://jira.onap.org/browse/POLICY-4411>`_ - Make apex-pdp dockerfile consistent -| `POLICY-4460 <https://jira.onap.org/browse/POLICY-4460>`_ - Add documentation for KafkaAvroSerializer support in apex-pdp -| `POLICY-4397 <https://jira.onap.org/browse/POLICY-4397>`_ - R12: Improvements specific to xacml-pdp -| `POLICY-4218 <https://jira.onap.org/browse/POLICY-4218>`_ - Add handling of references in the XACML-PDP Tutorial code to the release scripts -| `POLICY-4398 <https://jira.onap.org/browse/POLICY-4398>`_ - R12: Improvements specific to drools-pdp and drools-applications -| `POLICY-4405 <https://jira.onap.org/browse/POLICY-4405>`_ - Mitigate vulnerable dependencies in drools-pdp -| `POLICY-4399 <https://jira.onap.org/browse/POLICY-4399>`_ - R12: Improvements to api/pap and policy handling -| `POLICY-4451 <https://jira.onap.org/browse/POLICY-4451>`_ - Policy PAP hard codes topic names -| `POLICY-4455 <https://jira.onap.org/browse/POLICY-4455>`_ - Make topics in PAP configurable -| `POLICY-4463 <https://jira.onap.org/browse/POLICY-4463>`_ - Fix pap csit with topics names -| `POLICY-4407 <https://jira.onap.org/browse/POLICY-4407>`_ - R12: Software (non functional) improvements -| `POLICY-4360 <https://jira.onap.org/browse/POLICY-4360>`_ - Fix grafana compose -| `POLICY-4466 <https://jira.onap.org/browse/POLICY-4466>`_ - Move duplicate POM config for git-commit-id-maven-plugin to policy/parent -| `POLICY-4471 <https://jira.onap.org/browse/POLICY-4471>`_ - Check and repair CSIT jobs -| `POLICY-4474 <https://jira.onap.org/browse/POLICY-4474>`_ - Ensure code coverage in all components is over 80% -| `POLICY-4482 <https://jira.onap.org/browse/POLICY-4482>`_ - Mitigate Vulnerabilities in Dependencies of Policy Components -| `POLICY-4484 <https://jira.onap.org/browse/POLICY-4484>`_ - Perform Interim Release of Policy Framework for London -| `POLICY-4536 <https://jira.onap.org/browse/POLICY-4536>`_ - Fix Sonar issues in PF components -| `POLICY-4547 <https://jira.onap.org/browse/POLICY-4547>`_ - Fix issue in StartAndStop Activator Test -| `POLICY-4549 <https://jira.onap.org/browse/POLICY-4549>`_ - Improve MariaDB sqls for db-migrator -| `POLICY-4558 <https://jira.onap.org/browse/POLICY-4558>`_ - Remove Integration Docker base images from Policy Framework base images -| `POLICY-4570 <https://jira.onap.org/browse/POLICY-4570>`_ - Policy Framework Interim Release -| `POLICY-4578 <https://jira.onap.org/browse/POLICY-4578>`_ - Update vulnerabilities in Policy Components -| `POLICY-4628 <https://jira.onap.org/browse/POLICY-4628>`_ - Update sdc-distribution-client to 2.0.1 -| `POLICY-4638 <https://jira.onap.org/browse/POLICY-4638>`_ - Restructure policy-gui -| `POLICY-4648 <https://jira.onap.org/browse/POLICY-4648>`_ - Release images for M4 -| `POLICY-4680 <https://jira.onap.org/browse/POLICY-4680>`_ - Pin versions of python libraries in csit configuration -| `REQ-439 <https://jira.onap.org/browse/REQ-439>`_ - Continuation of Package Upgrades in Direct Dependencies -| `POLICY-4472 <https://jira.onap.org/browse/POLICY-4472>`_ - Packages Upgrades in Direct Dependencies for London Release +| `POLICY-4122 <https://lf-onap.atlassian.net/browse/POLICY-4122>`_ - R12: Refactoring and Removal of Unused Code +| `POLICY-4138 <https://lf-onap.atlassian.net/browse/POLICY-4138>`_ - Transfer the API handling from the clamp-backend microservice to another microservice +| `POLICY-4139 <https://lf-onap.atlassian.net/browse/POLICY-4139>`_ - Remove the clamp-backend microservice +| `POLICY-4140 <https://lf-onap.atlassian.net/browse/POLICY-4140>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the unused code is removed +| `POLICY-4157 <https://lf-onap.atlassian.net/browse/POLICY-4157>`_ - Investigation story For Server-Client in PF +| `POLICY-4123 <https://lf-onap.atlassian.net/browse/POLICY-4123>`_ - R12: OpenAPI Adaption and Swagger Cleanup +| `POLICY-3368 <https://lf-onap.atlassian.net/browse/POLICY-3368>`_ - Revise Rest API conventions and structure +| `POLICY-3465 <https://lf-onap.atlassian.net/browse/POLICY-3465>`_ - Upgrade Swagger to io.swagger.core.v3 +| `POLICY-4143 <https://lf-onap.atlassian.net/browse/POLICY-4143>`_ - Generate Contract Testing stubs from OpenAPI specifications +| `POLICY-4144 <https://lf-onap.atlassian.net/browse/POLICY-4144>`_ - Ensure that all unit tests and automated integration and S3P tests still pass when the OpenAPI approach is reversed +| `POLICY-4158 <https://lf-onap.atlassian.net/browse/POLICY-4158>`_ - Open API Specifications as a Source Artifacts ACM +| `POLICY-4159 <https://lf-onap.atlassian.net/browse/POLICY-4159>`_ - Maven build for OpenAPI Interface Generation +| `POLICY-4160 <https://lf-onap.atlassian.net/browse/POLICY-4160>`_ - Rest endpoint implementation code Acm +| `POLICY-4162 <https://lf-onap.atlassian.net/browse/POLICY-4162>`_ - Spike to understand OpenAPI Adaption +| `POLICY-4404 <https://lf-onap.atlassian.net/browse/POLICY-4404>`_ - Remove SpringFox from Policy Framework +| `POLICY-4448 <https://lf-onap.atlassian.net/browse/POLICY-4448>`_ - Rest endpoint implementation code Api and Pap +| `POLICY-4124 <https://lf-onap.atlassian.net/browse/POLICY-4124>`_ - R12: Add metrics to measure SLAs +| `POLICY-4145 <https://lf-onap.atlassian.net/browse/POLICY-4145>`_ - Enable Observability and Performance Management +| `POLICY-4147 <https://lf-onap.atlassian.net/browse/POLICY-4147>`_ - Add Prometheus counters for measuring APEX PDP performance SLAs +| `POLICY-4148 <https://lf-onap.atlassian.net/browse/POLICY-4148>`_ - Check counter names for consistency +| `POLICY-4149 <https://lf-onap.atlassian.net/browse/POLICY-4149>`_ - Verify that the counters are being produced +| `POLICY-4165 <https://lf-onap.atlassian.net/browse/POLICY-4165>`_ - SLAs from Global Requirements +| `POLICY-4469 <https://lf-onap.atlassian.net/browse/POLICY-4469>`_ - SLAs on REST Interfaces for Async Requests +| `POLICY-4125 <https://lf-onap.atlassian.net/browse/POLICY-4125>`_ - R12: New Test Development +| `POLICY-4150 <https://lf-onap.atlassian.net/browse/POLICY-4150>`_ - Add the tests to the automated test suite in the Policy Framework +| `POLICY-4151 <https://lf-onap.atlassian.net/browse/POLICY-4151>`_ - Add tests that check SLA compliance +| `POLICY-4152 <https://lf-onap.atlassian.net/browse/POLICY-4152>`_ - Execute the new tests +| `POLICY-4164 <https://lf-onap.atlassian.net/browse/POLICY-4164>`_ - Verify SLAs on Policy Execution in PDPs +| `POLICY-4571 <https://lf-onap.atlassian.net/browse/POLICY-4571>`_ - S3P Test to check multiple PDP registration +| `POLICY-4655 <https://lf-onap.atlassian.net/browse/POLICY-4655>`_ - Remove k8s based csit from jenkins +| `POLICY-4126 <https://lf-onap.atlassian.net/browse/POLICY-4126>`_ - R12: Improve Automated Testing and Policy Framework S3P Tests +| `POLICY-4111 <https://lf-onap.atlassian.net/browse/POLICY-4111>`_ - S3P testing of APEX-PDP prometheus metrics +| `POLICY-4153 <https://lf-onap.atlassian.net/browse/POLICY-4153>`_ - Ensure reports on SLA compliance are generated by test execution +| `POLICY-4154 <https://lf-onap.atlassian.net/browse/POLICY-4154>`_ - Write a suite of automated contract tests. +| `POLICY-4155 <https://lf-onap.atlassian.net/browse/POLICY-4155>`_ - Add the tests to the automated test suite in the Policy Framework +| `POLICY-4156 <https://lf-onap.atlassian.net/browse/POLICY-4156>`_ - Automate the current S3P test suites in the Policy Framework +| `POLICY-4417 <https://lf-onap.atlassian.net/browse/POLICY-4417>`_ - Support Policy CSIT tests in kubernetes environment with helm chart +| `POLICY-4501 <https://lf-onap.atlassian.net/browse/POLICY-4501>`_ - Add ACM demo service template example in clamp +| `POLICY-4127 <https://lf-onap.atlassian.net/browse/POLICY-4127>`_ - R12: Enhance Policy Framework Documentation +| `POLICY-4581 <https://lf-onap.atlassian.net/browse/POLICY-4581>`_ - Policy Offered APIs +| `POLICY-4583 <https://lf-onap.atlassian.net/browse/POLICY-4583>`_ - Update Policy Platform Development Tools documentation +| `POLICY-4586 <https://lf-onap.atlassian.net/browse/POLICY-4586>`_ - Review and update the ACM design documentation +| `POLICY-4587 <https://lf-onap.atlassian.net/browse/POLICY-4587>`_ - Write documentation for Composition and participant development in ACM +| `POLICY-4396 <https://lf-onap.atlassian.net/browse/POLICY-4396>`_ - R12: Improvements specific to apex-pdp +| `POLICY-4411 <https://lf-onap.atlassian.net/browse/POLICY-4411>`_ - Make apex-pdp dockerfile consistent +| `POLICY-4460 <https://lf-onap.atlassian.net/browse/POLICY-4460>`_ - Add documentation for KafkaAvroSerializer support in apex-pdp +| `POLICY-4397 <https://lf-onap.atlassian.net/browse/POLICY-4397>`_ - R12: Improvements specific to xacml-pdp +| `POLICY-4218 <https://lf-onap.atlassian.net/browse/POLICY-4218>`_ - Add handling of references in the XACML-PDP Tutorial code to the release scripts +| `POLICY-4398 <https://lf-onap.atlassian.net/browse/POLICY-4398>`_ - R12: Improvements specific to drools-pdp and drools-applications +| `POLICY-4405 <https://lf-onap.atlassian.net/browse/POLICY-4405>`_ - Mitigate vulnerable dependencies in drools-pdp +| `POLICY-4399 <https://lf-onap.atlassian.net/browse/POLICY-4399>`_ - R12: Improvements to api/pap and policy handling +| `POLICY-4451 <https://lf-onap.atlassian.net/browse/POLICY-4451>`_ - Policy PAP hard codes topic names +| `POLICY-4455 <https://lf-onap.atlassian.net/browse/POLICY-4455>`_ - Make topics in PAP configurable +| `POLICY-4463 <https://lf-onap.atlassian.net/browse/POLICY-4463>`_ - Fix pap csit with topics names +| `POLICY-4407 <https://lf-onap.atlassian.net/browse/POLICY-4407>`_ - R12: Software (non functional) improvements +| `POLICY-4360 <https://lf-onap.atlassian.net/browse/POLICY-4360>`_ - Fix grafana compose +| `POLICY-4466 <https://lf-onap.atlassian.net/browse/POLICY-4466>`_ - Move duplicate POM config for git-commit-id-maven-plugin to policy/parent +| `POLICY-4471 <https://lf-onap.atlassian.net/browse/POLICY-4471>`_ - Check and repair CSIT jobs +| `POLICY-4474 <https://lf-onap.atlassian.net/browse/POLICY-4474>`_ - Ensure code coverage in all components is over 80% +| `POLICY-4482 <https://lf-onap.atlassian.net/browse/POLICY-4482>`_ - Mitigate Vulnerabilities in Dependencies of Policy Components +| `POLICY-4484 <https://lf-onap.atlassian.net/browse/POLICY-4484>`_ - Perform Interim Release of Policy Framework for London +| `POLICY-4536 <https://lf-onap.atlassian.net/browse/POLICY-4536>`_ - Fix Sonar issues in PF components +| `POLICY-4547 <https://lf-onap.atlassian.net/browse/POLICY-4547>`_ - Fix issue in StartAndStop Activator Test +| `POLICY-4549 <https://lf-onap.atlassian.net/browse/POLICY-4549>`_ - Improve MariaDB sqls for db-migrator +| `POLICY-4558 <https://lf-onap.atlassian.net/browse/POLICY-4558>`_ - Remove Integration Docker base images from Policy Framework base images +| `POLICY-4570 <https://lf-onap.atlassian.net/browse/POLICY-4570>`_ - Policy Framework Interim Release +| `POLICY-4578 <https://lf-onap.atlassian.net/browse/POLICY-4578>`_ - Update vulnerabilities in Policy Components +| `POLICY-4628 <https://lf-onap.atlassian.net/browse/POLICY-4628>`_ - Update sdc-distribution-client to 2.0.1 +| `POLICY-4638 <https://lf-onap.atlassian.net/browse/POLICY-4638>`_ - Restructure policy-gui +| `POLICY-4648 <https://lf-onap.atlassian.net/browse/POLICY-4648>`_ - Release images for M4 +| `POLICY-4680 <https://lf-onap.atlassian.net/browse/POLICY-4680>`_ - Pin versions of python libraries in csit configuration +| `REQ-439 <https://lf-onap.atlassian.net/browse/REQ-439>`_ - Continuation of Package Upgrades in Direct Dependencies +| `POLICY-4472 <https://lf-onap.atlassian.net/browse/POLICY-4472>`_ - Packages Upgrades in Direct Dependencies for London Release Bug Fixes ~~~~~~~~~ -| `POLICY-4649 <https://jira.onap.org/browse/POLICY-4649>`_ - Fix postgres script syntax errors -| `POLICY-4625 <https://jira.onap.org/browse/POLICY-4625>`_ - Participant primed status is not updated correctly in the runtime -| `POLICY-4623 <https://jira.onap.org/browse/POLICY-4623>`_ - Fix Anchor installing-or-upgrading-policy in docs -| `POLICY-4576 <https://jira.onap.org/browse/POLICY-4576>`_ - Omission in release script to update oom images -| `POLICY-4575 <https://jira.onap.org/browse/POLICY-4575>`_ - Fix ClassCastException in ACM -| `POLICY-4562 <https://jira.onap.org/browse/POLICY-4562>`_ - Sonar hotspot Interrupted Exception -| `POLICY-4561 <https://jira.onap.org/browse/POLICY-4561>`_ - Fix UNDEPLOY transition in policyParticipant in ACM -| `POLICY-4560 <https://jira.onap.org/browse/POLICY-4560>`_ - Fix participantHtml issue with multi instances in ACM -| `POLICY-4537 <https://jira.onap.org/browse/POLICY-4537>`_ - Policy DB scripts are bound to fixed MariaDB version -| `POLICY-4527 <https://jira.onap.org/browse/POLICY-4527>`_ - Galera jobs must use repositoryGenerator quitQuit images -| `POLICY-4491 <https://jira.onap.org/browse/POLICY-4491>`_ - Fix PAP CSIT intermittent failure -| `POLICY-4490 <https://jira.onap.org/browse/POLICY-4490>`_ - Disable ACM CSITs due to ongoing work -| `POLICY-4486 <https://jira.onap.org/browse/POLICY-4486>`_ - Fix copy contructor in DocToscaServiceTemplate in ACM -| `POLICY-4473 <https://jira.onap.org/browse/POLICY-4473>`_ - Clamp ACM dockersuse profile not working -| `POLICY-4429 <https://jira.onap.org/browse/POLICY-4429>`_ - PDP-X guard table creation script problems with = in password -| `POLICY-4410 <https://jira.onap.org/browse/POLICY-4410>`_ - Fix ACM stability and performance jmx configuration for random failures -| `POLICY-4381 <https://jira.onap.org/browse/POLICY-4381>`_ - The REST path of ACM endpoints is not configurable via Spring properties +| `POLICY-4649 <https://lf-onap.atlassian.net/browse/POLICY-4649>`_ - Fix postgres script syntax errors +| `POLICY-4625 <https://lf-onap.atlassian.net/browse/POLICY-4625>`_ - Participant primed status is not updated correctly in the runtime +| `POLICY-4623 <https://lf-onap.atlassian.net/browse/POLICY-4623>`_ - Fix Anchor installing-or-upgrading-policy in docs +| `POLICY-4576 <https://lf-onap.atlassian.net/browse/POLICY-4576>`_ - Omission in release script to update oom images +| `POLICY-4575 <https://lf-onap.atlassian.net/browse/POLICY-4575>`_ - Fix ClassCastException in ACM +| `POLICY-4562 <https://lf-onap.atlassian.net/browse/POLICY-4562>`_ - Sonar hotspot Interrupted Exception +| `POLICY-4561 <https://lf-onap.atlassian.net/browse/POLICY-4561>`_ - Fix UNDEPLOY transition in policyParticipant in ACM +| `POLICY-4560 <https://lf-onap.atlassian.net/browse/POLICY-4560>`_ - Fix participantHtml issue with multi instances in ACM +| `POLICY-4537 <https://lf-onap.atlassian.net/browse/POLICY-4537>`_ - Policy DB scripts are bound to fixed MariaDB version +| `POLICY-4527 <https://lf-onap.atlassian.net/browse/POLICY-4527>`_ - Galera jobs must use repositoryGenerator quitQuit images +| `POLICY-4491 <https://lf-onap.atlassian.net/browse/POLICY-4491>`_ - Fix PAP CSIT intermittent failure +| `POLICY-4490 <https://lf-onap.atlassian.net/browse/POLICY-4490>`_ - Disable ACM CSITs due to ongoing work +| `POLICY-4486 <https://lf-onap.atlassian.net/browse/POLICY-4486>`_ - Fix copy contructor in DocToscaServiceTemplate in ACM +| `POLICY-4473 <https://lf-onap.atlassian.net/browse/POLICY-4473>`_ - Clamp ACM dockersuse profile not working +| `POLICY-4429 <https://lf-onap.atlassian.net/browse/POLICY-4429>`_ - PDP-X guard table creation script problems with = in password +| `POLICY-4410 <https://lf-onap.atlassian.net/browse/POLICY-4410>`_ - Fix ACM stability and performance jmx configuration for random failures +| `POLICY-4381 <https://lf-onap.atlassian.net/browse/POLICY-4381>`_ - The REST path of ACM endpoints is not configurable via Spring properties References ========== @@ -609,7 +795,7 @@ For more information on the ONAP London release, please see: #. `ONAP Wiki Page`_ .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -689,8 +875,8 @@ Key Updates A1 Policy payloads. See: - - `REQ-1212 <https://jira.onap.org/browse/REQ-1212>`_ - 5G SON use case enhancements for Kohn release - - `POLICY-4108 <https://jira.onap.org/browse/POLICY-4108>`_ Control Loop Policy for A1-based action for SON + - `REQ-1212 <https://lf-onap.atlassian.net/browse/REQ-1212>`_ - 5G SON use case enhancements for Kohn release + - `POLICY-4108 <https://lf-onap.atlassian.net/browse/POLICY-4108>`_ Control Loop Policy for A1-based action for SON Use Case @@ -703,7 +889,7 @@ Key Updates in future releases. See: - - `POLICY-4121 <https://jira.onap.org/browse/POLICY-4121>`_ - R11: DMaaP and Kafka updates + - `POLICY-4121 <https://lf-onap.atlassian.net/browse/POLICY-4121>`_ - R11: DMaaP and Kafka updates * Support for Secured Database Communication @@ -712,7 +898,7 @@ Key Updates CLAMP ACM in a future release. See: - - `POLICY-4176 <https://jira.onap.org/browse/POLICY-4176>`_ - Support Secured Database Connections + - `POLICY-4176 <https://lf-onap.atlassian.net/browse/POLICY-4176>`_ - Support Secured Database Connections * Support for MySql 8 @@ -720,7 +906,7 @@ Key Updates 8 has been added for DB-MIGRATOR, API, PAP, DROOLS-PDP, XACML-PDP, and CLAM ACM. See: - - `POLICY-4314 <https://jira.onap.org/browse/POLICY-4314>`_ - Support for MySql 8.x DB client interfaces + - `POLICY-4314 <https://lf-onap.atlassian.net/browse/POLICY-4314>`_ - Support for MySql 8.x DB client interfaces * Support for Service Mesh @@ -738,7 +924,7 @@ Key Updates - XACML tutorial updated and improved See: - - `POLICY-4049 <https://jira.onap.org/browse/POLICY-4049>`_ - R11: Improvements specific to xacml-pdp + - `POLICY-4049 <https://lf-onap.atlassian.net/browse/POLICY-4049>`_ - R11: Improvements specific to xacml-pdp * DROOLS-PDP and DROOLS-Applications improvements @@ -746,7 +932,7 @@ Key Updates - JDBC pooling libraries upgraded See: - - `POLICY-4050 <https://jira.onap.org/browse/POLICY-4050>`_ - R11: Improvements specific to drools-pdp and drools-applications + - `POLICY-4050 <https://lf-onap.atlassian.net/browse/POLICY-4050>`_ - R11: Improvements specific to drools-pdp and drools-applications * APEX-PDP Improvements @@ -755,7 +941,7 @@ Key Updates - Support for deserialization of messages encoded in Avro carried over Kafka See: - - `POLICY-4048 <https://jira.onap.org/browse/POLICY-4048>`_ - R11: Improvements specific to apex-pdp + - `POLICY-4048 <https://lf-onap.atlassian.net/browse/POLICY-4048>`_ - R11: Improvements specific to apex-pdp * Policy-Distribution Improvements @@ -763,7 +949,7 @@ Key Updates - Policy distribution re-synchs if SDC is reinstalled See: - - `POLICY-4052 <https://jira.onap.org/browse/POLICY-4052>`_ - R11: Improvements to distribution + - `POLICY-4052 <https://lf-onap.atlassian.net/browse/POLICY-4052>`_ - R11: Improvements to distribution * CLAMP Improvements @@ -771,7 +957,7 @@ Key Updates - Helm repository can be configured in the Kubernetes participant See: - - `POLICY-4053 <https://jira.onap.org/browse/POLICY-4053>`_ - R11: Improvements specific to clamp + - `POLICY-4053 <https://lf-onap.atlassian.net/browse/POLICY-4053>`_ - R11: Improvements specific to clamp * System Attribute Improvements - Demo Grafana dashboards available for policy framework components @@ -873,143 +1059,143 @@ Security Notes Functional Improvements ======================= -| `POLICY-4108 <https://jira.onap.org/browse/POLICY-4108>`_ - Control Loop Policy for A1-based action for SON Use Case -| `POLICY-4356 <https://jira.onap.org/browse/POLICY-4356>`_ - 5g son policy models changes -| `POLICY-4357 <https://jira.onap.org/browse/POLICY-4357>`_ - 5g son policy drools apps changes - -| `POLICY-4121 <https://jira.onap.org/browse/POLICY-4121>`_ - R11: DMaaP and Kafka updates -| `POLICY-4131 <https://jira.onap.org/browse/POLICY-4131>`_ - Update the DMaaP client in the Policy Framework common utility library. -| `POLICY-4132 <https://jira.onap.org/browse/POLICY-4132>`_ - Check that all asynchronous messaging continues to work with updated DMaaP client -| `POLICY-4133 <https://jira.onap.org/browse/POLICY-4133>`_ - Add a Kafka client in the Policy Framework common utility library. -| `POLICY-4134 <https://jira.onap.org/browse/POLICY-4134>`_ - Configure the Policy Framework components to use Kafka along with DMaaP -| `POLICY-4135 <https://jira.onap.org/browse/POLICY-4135>`_ - Check that all asynchronous messaging continues to work with Kafka messaging -| `POLICY-4313 <https://jira.onap.org/browse/POLICY-4313>`_ - Move kafka version management to policy/parent/integration -| `POLICY-4204 <https://jira.onap.org/browse/POLICY-4204>`_ - OOM experimentation using strimzi -| `POLICY-4146 <https://jira.onap.org/browse/POLICY-4146>`_ - Add Prometheus counters for measuring SLAs on ACM REST endpoints -| `POLICY-4163 <https://jira.onap.org/browse/POLICY-4163>`_ - SLAs on REST Interfaces -| `POLICY-4166 <https://jira.onap.org/browse/POLICY-4166>`_ - Spike to understand metrics to measure SLAs -| `POLICY-4220 <https://jira.onap.org/browse/POLICY-4220>`_ - CSIT does not display logs for some containers -| `POLICY-4086 <https://jira.onap.org/browse/POLICY-4086>`_ - Improve CSIT to use proper currentInstanceCount value in PdpGroups -| `POLICY-4338 <https://jira.onap.org/browse/POLICY-4338>`_ - Convert CSITs to use HTTP rather than HTTPS -| `POLICY-4167 <https://jira.onap.org/browse/POLICY-4167>`_ - Add build instruction in readme - -| `POLICY-4120 <https://jira.onap.org/browse/POLICY-4120>`_ - R11: SUSE flavoured images in the Policy Framework -| `POLICY-4128 <https://jira.onap.org/browse/POLICY-4128>`_ - Create an OpenSuse docker file equivalent to the existing Alpine docker file for each image in the Policy Framework -| `POLICY-4129 <https://jira.onap.org/browse/POLICY-4129>`_ - Add a build profile to each repo build to trigger generation of Suse flavoured images -| `POLICY-4130 <https://jira.onap.org/browse/POLICY-4130>`_ - Add OCI Image spec labels to both Alpine and OpenSuse docker files -| `POLICY-4208 <https://jira.onap.org/browse/POLICY-4208>`_ - Reduce size of docker images -| `POLICY-4278 <https://jira.onap.org/browse/POLICY-4278>`_ - Upgrade OpenSuse to version 15.4 -| `POLICY-4334 <https://jira.onap.org/browse/POLICY-4334>`_ - Allow setting external dockerfile - -| `POLICY-3642 <https://jira.onap.org/browse/POLICY-3642>`_ - R11: Database and TOSCA related issues -| `POLICY-1749 <https://jira.onap.org/browse/POLICY-1749>`_ - Resolve specification of policy type versions in policies in TOSCA -| `POLICY-2540 <https://jira.onap.org/browse/POLICY-2540>`_ - Proper handling of data types in policy-models and policy-api -| `POLICY-3236 <https://jira.onap.org/browse/POLICY-3236>`_ - Adjust flexibility of Tosca Service Template Handling -| `POLICY-4067 <https://jira.onap.org/browse/POLICY-4067>`_ - Fetch all versions of a policyType API returning only the latest version -| `POLICY-4176 <https://jira.onap.org/browse/POLICY-4176>`_ - Support Secured Database Connections -| `POLICY-4314 <https://jira.onap.org/browse/POLICY-4314>`_ - Support for MySql 8.x DB client interfaces -| `POLICY-3489 <https://jira.onap.org/browse/POLICY-3489>`_ - Add script to load default data into tables using db-migrator -| `POLICY-3585 <https://jira.onap.org/browse/POLICY-3585>`_ - TOSCA Handling issues -| `POLICY-4097 <https://jira.onap.org/browse/POLICY-4097>`_ - Validate policy-api redundancy with at least 2 pods using J release -| `POLICY-4098 <https://jira.onap.org/browse/POLICY-4098>`_ - Validate policy-pap redundancy with at least 2 pods using J release -| `POLICY-4099 <https://jira.onap.org/browse/POLICY-4099>`_ - Spike to determine the work in apex-pdp for redundancy support -| `POLICY-4100 <https://jira.onap.org/browse/POLICY-4100>`_ - Spike to determine the work in drools-pdp for redundancy support - -| `POLICY-4048 <https://jira.onap.org/browse/POLICY-4048>`_ - R11: Improvements specific to apex-pdp -| `POLICY-4290 <https://jira.onap.org/browse/POLICY-4290>`_ - Support JSON based event schema in apex-pdp -| `POLICY-3446 <https://jira.onap.org/browse/POLICY-3446>`_ - Change apex-pdp to use BeanValidator -| `POLICY-3810 <https://jira.onap.org/browse/POLICY-3810>`_ - Fix sonar issues in apex-pdp -| `POLICY-4084 <https://jira.onap.org/browse/POLICY-4084>`_ - Apex cli editor should generate policies with metadataSet -| `POLICY-4285 <https://jira.onap.org/browse/POLICY-4285>`_ - Remove debian packaging from apex-pdp build -| `POLICY-4324 <https://jira.onap.org/browse/POLICY-4324>`_ - Fix Docker File for Apex MyFirstExample -| `POLICY-4369 <https://jira.onap.org/browse/POLICY-4369>`_ - Support KafkaAvroDeserializer in KafkaConsumer plugin of apex-pdp - -| `POLICY-4049 <https://jira.onap.org/browse/POLICY-4049>`_ - R11: Improvements specific to xacml-pdp -| `POLICY-3762 <https://jira.onap.org/browse/POLICY-3762>`_ - Expose application level metrics in xacml-pdp -| `POLICY-4187 <https://jira.onap.org/browse/POLICY-4187>`_ - Support postgresql in Xacml PDP -| `POLICY-4317 <https://jira.onap.org/browse/POLICY-4317>`_ - PAP, PDP-X: Support DCAE tcagen2 monitoring app changes -| `POLICY-3495 <https://jira.onap.org/browse/POLICY-3495>`_ - Xacml-pdp should log to stdout -| `POLICY-4171 <https://jira.onap.org/browse/POLICY-4171>`_ - Update Docker Tag related configurations in XACML Tutorial code -| `POLICY-4275 <https://jira.onap.org/browse/POLICY-4275>`_ - Upgrade XACML PDP to use XACML 3.1 release - -| `POLICY-4050 <https://jira.onap.org/browse/POLICY-4050>`_ - R11: Improvements specific to drools-pdp and drools-applications -| `POLICY-3960 <https://jira.onap.org/browse/POLICY-3960>`_ - Add/update documents for application metrics support in drools-pdp -| `POLICY-4177 <https://jira.onap.org/browse/POLICY-4177>`_ - Support secured DB communications for PDP-D Core -| `POLICY-4197 <https://jira.onap.org/browse/POLICY-4197>`_ - PDP-D: thread dump upon detection of application stuck session -| `POLICY-4213 <https://jira.onap.org/browse/POLICY-4213>`_ - PDP-D APPS: Jenkins jobs started to fail basic builds -| `POLICY-4281 <https://jira.onap.org/browse/POLICY-4281>`_ - Upgrade JDBC pooling libraries in drools -| `POLICY-4335 <https://jira.onap.org/browse/POLICY-4335>`_ - PDP-D: Upgrade to the latest version of drools libraries - -| `POLICY-4051 <https://jira.onap.org/browse/POLICY-4051>`_ - R11: Improvements to api, pap and policy handling -| `POLICY-3887 <https://jira.onap.org/browse/POLICY-3887>`_ - Enhancement in enhanced policy health check -| `POLICY-2874 <https://jira.onap.org/browse/POLICY-2874>`_ - Investigate Policy-API S3P stability test results -| `POLICY-4288 <https://jira.onap.org/browse/POLICY-4288>`_ - Check PAP CSIT Undeploy test timeout - -| `POLICY-4052 <https://jira.onap.org/browse/POLICY-4052>`_ - R11: Improvements to distribution -| `POLICY-4110 <https://jira.onap.org/browse/POLICY-4110>`_ - Update configuration changes for distribution of ACM -| `POLICY-2103 <https://jira.onap.org/browse/POLICY-2103>`_ - policy/distribution may need to re-synch if SDC gets reinstalled - -| `POLICY-4053 <https://jira.onap.org/browse/POLICY-4053>`_ - R11: Improvements specific to clamp -| `POLICY-4078 <https://jira.onap.org/browse/POLICY-4078>`_ - Investigation of DB issue within Policy Clamp runtime -| `POLICY-4341 <https://jira.onap.org/browse/POLICY-4341>`_ - ACM Runtime pod fails to come-up referencing to wrong filepath -| `POLICY-4365 <https://jira.onap.org/browse/POLICY-4365>`_ - Increase code coverage in clamp -| `POLICY-4094 <https://jira.onap.org/browse/POLICY-4094>`_ - Add Edit functionality for instance properties in Policy GUI -| `POLICY-4105 <https://jira.onap.org/browse/POLICY-4105>`_ - Remove usage of jackson libraries from clamp runtime acm -| `POLICY-4113 <https://jira.onap.org/browse/POLICY-4113>`_ - Make the permitted helm repository protocol a configurable parameter in k8s participant -| `POLICY-4224 <https://jira.onap.org/browse/POLICY-4224>`_ - Clean up CLAMP Docker handling -| `POLICY-4225 <https://jira.onap.org/browse/POLICY-4225>`_ - Fix type version in all tosca_service_template -| `POLICY-4229 <https://jira.onap.org/browse/POLICY-4229>`_ - Fix type version in all tosca_service_template in parent documetation -| `POLICY-4237 <https://jira.onap.org/browse/POLICY-4237>`_ - Add override parameters for enabling protocol in k8s-ppnt helm chart -| `POLICY-4240 <https://jira.onap.org/browse/POLICY-4240>`_ - Update PMSH service template for ACM -| `POLICY-4286 <https://jira.onap.org/browse/POLICY-4286>`_ - Junk output in the docker build for kubernetes participant -| `POLICY-4289 <https://jira.onap.org/browse/POLICY-4289>`_ - Refactoring redundant spring libraries defined in clamp pom files -| `POLICY-4371 <https://jira.onap.org/browse/POLICY-4371>`_ - Remove policy-clamp-be from OOM deployment for Service Mesh -| `POLICY-4382 <https://jira.onap.org/browse/POLICY-4382>`_ - Update ACM document in ONAP doc for Kohn release +| `POLICY-4108 <https://lf-onap.atlassian.net/browse/POLICY-4108>`_ - Control Loop Policy for A1-based action for SON Use Case +| `POLICY-4356 <https://lf-onap.atlassian.net/browse/POLICY-4356>`_ - 5g son policy models changes +| `POLICY-4357 <https://lf-onap.atlassian.net/browse/POLICY-4357>`_ - 5g son policy drools apps changes + +| `POLICY-4121 <https://lf-onap.atlassian.net/browse/POLICY-4121>`_ - R11: DMaaP and Kafka updates +| `POLICY-4131 <https://lf-onap.atlassian.net/browse/POLICY-4131>`_ - Update the DMaaP client in the Policy Framework common utility library. +| `POLICY-4132 <https://lf-onap.atlassian.net/browse/POLICY-4132>`_ - Check that all asynchronous messaging continues to work with updated DMaaP client +| `POLICY-4133 <https://lf-onap.atlassian.net/browse/POLICY-4133>`_ - Add a Kafka client in the Policy Framework common utility library. +| `POLICY-4134 <https://lf-onap.atlassian.net/browse/POLICY-4134>`_ - Configure the Policy Framework components to use Kafka along with DMaaP +| `POLICY-4135 <https://lf-onap.atlassian.net/browse/POLICY-4135>`_ - Check that all asynchronous messaging continues to work with Kafka messaging +| `POLICY-4313 <https://lf-onap.atlassian.net/browse/POLICY-4313>`_ - Move kafka version management to policy/parent/integration +| `POLICY-4204 <https://lf-onap.atlassian.net/browse/POLICY-4204>`_ - OOM experimentation using strimzi +| `POLICY-4146 <https://lf-onap.atlassian.net/browse/POLICY-4146>`_ - Add Prometheus counters for measuring SLAs on ACM REST endpoints +| `POLICY-4163 <https://lf-onap.atlassian.net/browse/POLICY-4163>`_ - SLAs on REST Interfaces +| `POLICY-4166 <https://lf-onap.atlassian.net/browse/POLICY-4166>`_ - Spike to understand metrics to measure SLAs +| `POLICY-4220 <https://lf-onap.atlassian.net/browse/POLICY-4220>`_ - CSIT does not display logs for some containers +| `POLICY-4086 <https://lf-onap.atlassian.net/browse/POLICY-4086>`_ - Improve CSIT to use proper currentInstanceCount value in PdpGroups +| `POLICY-4338 <https://lf-onap.atlassian.net/browse/POLICY-4338>`_ - Convert CSITs to use HTTP rather than HTTPS +| `POLICY-4167 <https://lf-onap.atlassian.net/browse/POLICY-4167>`_ - Add build instruction in readme + +| `POLICY-4120 <https://lf-onap.atlassian.net/browse/POLICY-4120>`_ - R11: SUSE flavoured images in the Policy Framework +| `POLICY-4128 <https://lf-onap.atlassian.net/browse/POLICY-4128>`_ - Create an OpenSuse docker file equivalent to the existing Alpine docker file for each image in the Policy Framework +| `POLICY-4129 <https://lf-onap.atlassian.net/browse/POLICY-4129>`_ - Add a build profile to each repo build to trigger generation of Suse flavoured images +| `POLICY-4130 <https://lf-onap.atlassian.net/browse/POLICY-4130>`_ - Add OCI Image spec labels to both Alpine and OpenSuse docker files +| `POLICY-4208 <https://lf-onap.atlassian.net/browse/POLICY-4208>`_ - Reduce size of docker images +| `POLICY-4278 <https://lf-onap.atlassian.net/browse/POLICY-4278>`_ - Upgrade OpenSuse to version 15.4 +| `POLICY-4334 <https://lf-onap.atlassian.net/browse/POLICY-4334>`_ - Allow setting external dockerfile + +| `POLICY-3642 <https://lf-onap.atlassian.net/browse/POLICY-3642>`_ - R11: Database and TOSCA related issues +| `POLICY-1749 <https://lf-onap.atlassian.net/browse/POLICY-1749>`_ - Resolve specification of policy type versions in policies in TOSCA +| `POLICY-2540 <https://lf-onap.atlassian.net/browse/POLICY-2540>`_ - Proper handling of data types in policy-models and policy-api +| `POLICY-3236 <https://lf-onap.atlassian.net/browse/POLICY-3236>`_ - Adjust flexibility of Tosca Service Template Handling +| `POLICY-4067 <https://lf-onap.atlassian.net/browse/POLICY-4067>`_ - Fetch all versions of a policyType API returning only the latest version +| `POLICY-4176 <https://lf-onap.atlassian.net/browse/POLICY-4176>`_ - Support Secured Database Connections +| `POLICY-4314 <https://lf-onap.atlassian.net/browse/POLICY-4314>`_ - Support for MySql 8.x DB client interfaces +| `POLICY-3489 <https://lf-onap.atlassian.net/browse/POLICY-3489>`_ - Add script to load default data into tables using db-migrator +| `POLICY-3585 <https://lf-onap.atlassian.net/browse/POLICY-3585>`_ - TOSCA Handling issues +| `POLICY-4097 <https://lf-onap.atlassian.net/browse/POLICY-4097>`_ - Validate policy-api redundancy with at least 2 pods using J release +| `POLICY-4098 <https://lf-onap.atlassian.net/browse/POLICY-4098>`_ - Validate policy-pap redundancy with at least 2 pods using J release +| `POLICY-4099 <https://lf-onap.atlassian.net/browse/POLICY-4099>`_ - Spike to determine the work in apex-pdp for redundancy support +| `POLICY-4100 <https://lf-onap.atlassian.net/browse/POLICY-4100>`_ - Spike to determine the work in drools-pdp for redundancy support + +| `POLICY-4048 <https://lf-onap.atlassian.net/browse/POLICY-4048>`_ - R11: Improvements specific to apex-pdp +| `POLICY-4290 <https://lf-onap.atlassian.net/browse/POLICY-4290>`_ - Support JSON based event schema in apex-pdp +| `POLICY-3446 <https://lf-onap.atlassian.net/browse/POLICY-3446>`_ - Change apex-pdp to use BeanValidator +| `POLICY-3810 <https://lf-onap.atlassian.net/browse/POLICY-3810>`_ - Fix sonar issues in apex-pdp +| `POLICY-4084 <https://lf-onap.atlassian.net/browse/POLICY-4084>`_ - Apex cli editor should generate policies with metadataSet +| `POLICY-4285 <https://lf-onap.atlassian.net/browse/POLICY-4285>`_ - Remove debian packaging from apex-pdp build +| `POLICY-4324 <https://lf-onap.atlassian.net/browse/POLICY-4324>`_ - Fix Docker File for Apex MyFirstExample +| `POLICY-4369 <https://lf-onap.atlassian.net/browse/POLICY-4369>`_ - Support KafkaAvroDeserializer in KafkaConsumer plugin of apex-pdp + +| `POLICY-4049 <https://lf-onap.atlassian.net/browse/POLICY-4049>`_ - R11: Improvements specific to xacml-pdp +| `POLICY-3762 <https://lf-onap.atlassian.net/browse/POLICY-3762>`_ - Expose application level metrics in xacml-pdp +| `POLICY-4187 <https://lf-onap.atlassian.net/browse/POLICY-4187>`_ - Support postgresql in Xacml PDP +| `POLICY-4317 <https://lf-onap.atlassian.net/browse/POLICY-4317>`_ - PAP, PDP-X: Support DCAE tcagen2 monitoring app changes +| `POLICY-3495 <https://lf-onap.atlassian.net/browse/POLICY-3495>`_ - Xacml-pdp should log to stdout +| `POLICY-4171 <https://lf-onap.atlassian.net/browse/POLICY-4171>`_ - Update Docker Tag related configurations in XACML Tutorial code +| `POLICY-4275 <https://lf-onap.atlassian.net/browse/POLICY-4275>`_ - Upgrade XACML PDP to use XACML 3.1 release + +| `POLICY-4050 <https://lf-onap.atlassian.net/browse/POLICY-4050>`_ - R11: Improvements specific to drools-pdp and drools-applications +| `POLICY-3960 <https://lf-onap.atlassian.net/browse/POLICY-3960>`_ - Add/update documents for application metrics support in drools-pdp +| `POLICY-4177 <https://lf-onap.atlassian.net/browse/POLICY-4177>`_ - Support secured DB communications for PDP-D Core +| `POLICY-4197 <https://lf-onap.atlassian.net/browse/POLICY-4197>`_ - PDP-D: thread dump upon detection of application stuck session +| `POLICY-4213 <https://lf-onap.atlassian.net/browse/POLICY-4213>`_ - PDP-D APPS: Jenkins jobs started to fail basic builds +| `POLICY-4281 <https://lf-onap.atlassian.net/browse/POLICY-4281>`_ - Upgrade JDBC pooling libraries in drools +| `POLICY-4335 <https://lf-onap.atlassian.net/browse/POLICY-4335>`_ - PDP-D: Upgrade to the latest version of drools libraries + +| `POLICY-4051 <https://lf-onap.atlassian.net/browse/POLICY-4051>`_ - R11: Improvements to api, pap and policy handling +| `POLICY-3887 <https://lf-onap.atlassian.net/browse/POLICY-3887>`_ - Enhancement in enhanced policy health check +| `POLICY-2874 <https://lf-onap.atlassian.net/browse/POLICY-2874>`_ - Investigate Policy-API S3P stability test results +| `POLICY-4288 <https://lf-onap.atlassian.net/browse/POLICY-4288>`_ - Check PAP CSIT Undeploy test timeout + +| `POLICY-4052 <https://lf-onap.atlassian.net/browse/POLICY-4052>`_ - R11: Improvements to distribution +| `POLICY-4110 <https://lf-onap.atlassian.net/browse/POLICY-4110>`_ - Update configuration changes for distribution of ACM +| `POLICY-2103 <https://lf-onap.atlassian.net/browse/POLICY-2103>`_ - policy/distribution may need to re-synch if SDC gets reinstalled + +| `POLICY-4053 <https://lf-onap.atlassian.net/browse/POLICY-4053>`_ - R11: Improvements specific to clamp +| `POLICY-4078 <https://lf-onap.atlassian.net/browse/POLICY-4078>`_ - Investigation of DB issue within Policy Clamp runtime +| `POLICY-4341 <https://lf-onap.atlassian.net/browse/POLICY-4341>`_ - ACM Runtime pod fails to come-up referencing to wrong filepath +| `POLICY-4365 <https://lf-onap.atlassian.net/browse/POLICY-4365>`_ - Increase code coverage in clamp +| `POLICY-4094 <https://lf-onap.atlassian.net/browse/POLICY-4094>`_ - Add Edit functionality for instance properties in Policy GUI +| `POLICY-4105 <https://lf-onap.atlassian.net/browse/POLICY-4105>`_ - Remove usage of jackson libraries from clamp runtime acm +| `POLICY-4113 <https://lf-onap.atlassian.net/browse/POLICY-4113>`_ - Make the permitted helm repository protocol a configurable parameter in k8s participant +| `POLICY-4224 <https://lf-onap.atlassian.net/browse/POLICY-4224>`_ - Clean up CLAMP Docker handling +| `POLICY-4225 <https://lf-onap.atlassian.net/browse/POLICY-4225>`_ - Fix type version in all tosca_service_template +| `POLICY-4229 <https://lf-onap.atlassian.net/browse/POLICY-4229>`_ - Fix type version in all tosca_service_template in parent documetation +| `POLICY-4237 <https://lf-onap.atlassian.net/browse/POLICY-4237>`_ - Add override parameters for enabling protocol in k8s-ppnt helm chart +| `POLICY-4240 <https://lf-onap.atlassian.net/browse/POLICY-4240>`_ - Update PMSH service template for ACM +| `POLICY-4286 <https://lf-onap.atlassian.net/browse/POLICY-4286>`_ - Junk output in the docker build for kubernetes participant +| `POLICY-4289 <https://lf-onap.atlassian.net/browse/POLICY-4289>`_ - Refactoring redundant spring libraries defined in clamp pom files +| `POLICY-4371 <https://lf-onap.atlassian.net/browse/POLICY-4371>`_ - Remove policy-clamp-be from OOM deployment for Service Mesh +| `POLICY-4382 <https://lf-onap.atlassian.net/browse/POLICY-4382>`_ - Update ACM document in ONAP doc for Kohn release Necessary Improvements and Bug Fixes ==================================== Necessary Improvements ~~~~~~~~~~~~~~~~~~~~~~ -| `POLICY-4045 <https://jira.onap.org/browse/POLICY-4045>`_ - R11: Software (non functional) improvements -| `POLICY-3967 <https://jira.onap.org/browse/POLICY-3967>`_ - Create detailed grafana dashboards for each policy framework component -| `POLICY-4168 <https://jira.onap.org/browse/POLICY-4168>`_ - Security vulnerability when unzipping csar on distribution -| `POLICY-4169 <https://jira.onap.org/browse/POLICY-4169>`_ - Ensure all parameters in Helm Charts have default values -| `POLICY-3860 <https://jira.onap.org/browse/POLICY-3860>`_ - Analyze and improve spring boot dependencies management in PF components -| `POLICY-4207 <https://jira.onap.org/browse/POLICY-4207>`_ - Remove Jenkins jobs on Guilin branches -| `POLICY-4228 <https://jira.onap.org/browse/POLICY-4228>`_ - Add Ramesh Murugan Iyer as a committer -| `POLICY-4230 <https://jira.onap.org/browse/POLICY-4230>`_ - Update Weekly Meetings with status from daily scrums -| `POLICY-4234 <https://jira.onap.org/browse/POLICY-4234>`_ - Fix CSITs on Honolulu/Istanbul/Jakarta branches -| `POLICY-4242 <https://jira.onap.org/browse/POLICY-4242>`_ - PACKAGES UPGRADES IN DIRECT DEPENDENCIES FOR KOHN -| `POLICY-4280 <https://jira.onap.org/browse/POLICY-4280>`_ - Upgrade mariadb driver to latest 2.x version in PDP-D, and APPS -| `POLICY-4287 <https://jira.onap.org/browse/POLICY-4287>`_ - Update Docker Builds to allow for multiple architecture Docker Fille generation -| `POLICY-4308 <https://jira.onap.org/browse/POLICY-4308>`_ - Unmaintained Repos -| `POLICY-4354 <https://jira.onap.org/browse/POLICY-4354>`_ - Update INFO.yaml fine on all repos -| `POLICY-4393 <https://jira.onap.org/browse/POLICY-4393>`_ - Update dependencies to remove security vulnerabilities - -| `POLICY-4046 <https://jira.onap.org/browse/POLICY-4046>`_ - R11: Address technical debt left over from Previous Release -| `POLICY-4093 <https://jira.onap.org/browse/POLICY-4093>`_ - Update spring vesion in oparent and remove override in policy/parent +| `POLICY-4045 <https://lf-onap.atlassian.net/browse/POLICY-4045>`_ - R11: Software (non functional) improvements +| `POLICY-3967 <https://lf-onap.atlassian.net/browse/POLICY-3967>`_ - Create detailed grafana dashboards for each policy framework component +| `POLICY-4168 <https://lf-onap.atlassian.net/browse/POLICY-4168>`_ - Security vulnerability when unzipping csar on distribution +| `POLICY-4169 <https://lf-onap.atlassian.net/browse/POLICY-4169>`_ - Ensure all parameters in Helm Charts have default values +| `POLICY-3860 <https://lf-onap.atlassian.net/browse/POLICY-3860>`_ - Analyze and improve spring boot dependencies management in PF components +| `POLICY-4207 <https://lf-onap.atlassian.net/browse/POLICY-4207>`_ - Remove Jenkins jobs on Guilin branches +| `POLICY-4228 <https://lf-onap.atlassian.net/browse/POLICY-4228>`_ - Add Ramesh Murugan Iyer as a committer +| `POLICY-4230 <https://lf-onap.atlassian.net/browse/POLICY-4230>`_ - Update Weekly Meetings with status from daily scrums +| `POLICY-4234 <https://lf-onap.atlassian.net/browse/POLICY-4234>`_ - Fix CSITs on Honolulu/Istanbul/Jakarta branches +| `POLICY-4242 <https://lf-onap.atlassian.net/browse/POLICY-4242>`_ - PACKAGES UPGRADES IN DIRECT DEPENDENCIES FOR KOHN +| `POLICY-4280 <https://lf-onap.atlassian.net/browse/POLICY-4280>`_ - Upgrade mariadb driver to latest 2.x version in PDP-D, and APPS +| `POLICY-4287 <https://lf-onap.atlassian.net/browse/POLICY-4287>`_ - Update Docker Builds to allow for multiple architecture Docker Fille generation +| `POLICY-4308 <https://lf-onap.atlassian.net/browse/POLICY-4308>`_ - Unmaintained Repos +| `POLICY-4354 <https://lf-onap.atlassian.net/browse/POLICY-4354>`_ - Update INFO.yaml fine on all repos +| `POLICY-4393 <https://lf-onap.atlassian.net/browse/POLICY-4393>`_ - Update dependencies to remove security vulnerabilities + +| `POLICY-4046 <https://lf-onap.atlassian.net/browse/POLICY-4046>`_ - R11: Address technical debt left over from Previous Release +| `POLICY-4093 <https://lf-onap.atlassian.net/browse/POLICY-4093>`_ - Update spring vesion in oparent and remove override in policy/parent Bug Fixes ~~~~~~~~~ -| `POLICY-4170 <https://jira.onap.org/browse/POLICY-4170>`_ - Fix k8s-ppnt cluster role binding name in OOM -| `POLICY-4186 <https://jira.onap.org/browse/POLICY-4186>`_ - Wrong versions of policy related jar in policy-xacml-pdp latest image -| `POLICY-4226 <https://jira.onap.org/browse/POLICY-4226>`_ - policy distribution cannot disable https to SDC -| `POLICY-4236 <https://jira.onap.org/browse/POLICY-4236>`_ - K8s participant marks the deployment failed if the deployment is initiated with a delay -| `POLICY-4238 <https://jira.onap.org/browse/POLICY-4238>`_ - CLAMP ACM docker image Java logging does not work -| `POLICY-4239 <https://jira.onap.org/browse/POLICY-4239>`_ - ACM commissioning fails with 404 error when deployed in CSIT docker -| `POLICY-4241 <https://jira.onap.org/browse/POLICY-4241>`_ - Participant update list in ACM is not populated with multiple AC elements -| `POLICY-4268 <https://jira.onap.org/browse/POLICY-4268>`_ - Logging directory mismatch for policy OOM components -| `POLICY-4269 <https://jira.onap.org/browse/POLICY-4269>`_ - Clamp Backend fails without AAF in Service Mesh -| `POLICY-4270 <https://jira.onap.org/browse/POLICY-4270>`_ - CSIT fails while executing CLAMP ACM test cases -| `POLICY-4274 <https://jira.onap.org/browse/POLICY-4274>`_ - XACML-PDP raw decision API serialization is incorrect -| `POLICY-4326 <https://jira.onap.org/browse/POLICY-4326>`_ - Look into Policy-Distribution grafana chart for negative heap memory -| `POLICY-4331 <https://jira.onap.org/browse/POLICY-4331>`_ - Policy-GUI Apex Broken Tests -| `POLICY-4339 <https://jira.onap.org/browse/POLICY-4339>`_ - Clamp build fails in policy participant module while processing policies without topology template -| `POLICY-4351 <https://jira.onap.org/browse/POLICY-4351>`_ - log of Element container is not visible at Standard Output -| `POLICY-4352 <https://jira.onap.org/browse/POLICY-4352>`_ - Lob type from jpa entities casting wrongly on postgres -| `POLICY-4353 <https://jira.onap.org/browse/POLICY-4353>`_ - JSON schema plugin is not working with multiple events mentioned in apex config with | separator -| `POLICY-4355 <https://jira.onap.org/browse/POLICY-4355>`_ - PodStatus Validator is failing to check if the pod is running in K8sParticipant +| `POLICY-4170 <https://lf-onap.atlassian.net/browse/POLICY-4170>`_ - Fix k8s-ppnt cluster role binding name in OOM +| `POLICY-4186 <https://lf-onap.atlassian.net/browse/POLICY-4186>`_ - Wrong versions of policy related jar in policy-xacml-pdp latest image +| `POLICY-4226 <https://lf-onap.atlassian.net/browse/POLICY-4226>`_ - policy distribution cannot disable https to SDC +| `POLICY-4236 <https://lf-onap.atlassian.net/browse/POLICY-4236>`_ - K8s participant marks the deployment failed if the deployment is initiated with a delay +| `POLICY-4238 <https://lf-onap.atlassian.net/browse/POLICY-4238>`_ - CLAMP ACM docker image Java logging does not work +| `POLICY-4239 <https://lf-onap.atlassian.net/browse/POLICY-4239>`_ - ACM commissioning fails with 404 error when deployed in CSIT docker +| `POLICY-4241 <https://lf-onap.atlassian.net/browse/POLICY-4241>`_ - Participant update list in ACM is not populated with multiple AC elements +| `POLICY-4268 <https://lf-onap.atlassian.net/browse/POLICY-4268>`_ - Logging directory mismatch for policy OOM components +| `POLICY-4269 <https://lf-onap.atlassian.net/browse/POLICY-4269>`_ - Clamp Backend fails without AAF in Service Mesh +| `POLICY-4270 <https://lf-onap.atlassian.net/browse/POLICY-4270>`_ - CSIT fails while executing CLAMP ACM test cases +| `POLICY-4274 <https://lf-onap.atlassian.net/browse/POLICY-4274>`_ - XACML-PDP raw decision API serialization is incorrect +| `POLICY-4326 <https://lf-onap.atlassian.net/browse/POLICY-4326>`_ - Look into Policy-Distribution grafana chart for negative heap memory +| `POLICY-4331 <https://lf-onap.atlassian.net/browse/POLICY-4331>`_ - Policy-GUI Apex Broken Tests +| `POLICY-4339 <https://lf-onap.atlassian.net/browse/POLICY-4339>`_ - Clamp build fails in policy participant module while processing policies without topology template +| `POLICY-4351 <https://lf-onap.atlassian.net/browse/POLICY-4351>`_ - log of Element container is not visible at Standard Output +| `POLICY-4352 <https://lf-onap.atlassian.net/browse/POLICY-4352>`_ - Lob type from jpa entities casting wrongly on postgres +| `POLICY-4353 <https://lf-onap.atlassian.net/browse/POLICY-4353>`_ - JSON schema plugin is not working with multiple events mentioned in apex config with | separator +| `POLICY-4355 <https://lf-onap.atlassian.net/browse/POLICY-4355>`_ - PodStatus Validator is failing to check if the pod is running in K8sParticipant References ========== @@ -1022,7 +1208,7 @@ For more information on the ONAP Kohn release, please see: #. `ONAP Wiki Page`_ .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -1097,7 +1283,7 @@ Artifacts released: Key Updates =========== -* `REQ-994 <https://jira.onap.org/browse/REQ-994>`_ - Control Loop in TOSCA LCM Improvement +* `REQ-994 <https://lf-onap.atlassian.net/browse/REQ-994>`_ - Control Loop in TOSCA LCM Improvement CLAMP (Control Loop Automation Management Platform) functionalities, moved to the Policy project in the Istanbul release, provides a Control Loop Lifecycle management architecture. A control Loop is a key concept for Automation and Assurance Use Cases and remains a top priority for ONAP as an automation platform butit is not the only possible @@ -1169,117 +1355,117 @@ N/A Security Notes ============== -| `POLICY-2744 <https://jira.onap.org/browse/POLICY-2744>`_ - Use an account other than healthcheck in API and PAP components for provisioning of policies -| `POLICY-3815 <https://jira.onap.org/browse/POLICY-3815>`_ - Use an account other than healthcheck in API and PAP components for provisioning of policies - OOM Charts -| `POLICY-3862 <https://jira.onap.org/browse/POLICY-3862>`_ - Check all code for Log4J before version 2.15.0 and upgrade if necessary -| `POLICY-4085 <https://jira.onap.org/browse/POLICY-4085>`_ - Remove usage of jackson libraries from clamp runtime +| `POLICY-2744 <https://lf-onap.atlassian.net/browse/POLICY-2744>`_ - Use an account other than healthcheck in API and PAP components for provisioning of policies +| `POLICY-3815 <https://lf-onap.atlassian.net/browse/POLICY-3815>`_ - Use an account other than healthcheck in API and PAP components for provisioning of policies - OOM Charts +| `POLICY-3862 <https://lf-onap.atlassian.net/browse/POLICY-3862>`_ - Check all code for Log4J before version 2.15.0 and upgrade if necessary +| `POLICY-4085 <https://lf-onap.atlassian.net/browse/POLICY-4085>`_ - Remove usage of jackson libraries from clamp runtime Functional Improvements ======================= -| `POLICY-1837 <https://jira.onap.org/browse/POLICY-1837>`_ - Review transaction boundaries of models -| `POLICY-2715 <https://jira.onap.org/browse/POLICY-2715>`_ - Allow underlying database to be configured: MariaDB or Postgres -| `POLICY-2952 <https://jira.onap.org/browse/POLICY-2952>`_ - R10: TOSCA Control Loop Design Time -| `POLICY-2973 <https://jira.onap.org/browse/POLICY-2973>`_ - Build interaction between SDC and Design Time Catalogue -| `POLICY-3034 <https://jira.onap.org/browse/POLICY-3034>`_ - Support statistics in PDP-X -| `POLICY-3213 <https://jira.onap.org/browse/POLICY-3213>`_ - Persistence Policy Models using JPA/JDBC/Hibernate/MariaDB -| `POLICY-3498 <https://jira.onap.org/browse/POLICY-3498>`_ - Provide API to retrieve policies deployed since a given time -| `POLICY-3579 <https://jira.onap.org/browse/POLICY-3579>`_ - End to End Demo of PMSH usecase -| `POLICY-3582 <https://jira.onap.org/browse/POLICY-3582>`_ - Uber Story: Cover the full scope of LCM for Control Loops: Server Side -| `POLICY-3638 <https://jira.onap.org/browse/POLICY-3638>`_ - Change policy-gui so that all GUIs work in the same jar/JVM -| `POLICY-3745 <https://jira.onap.org/browse/POLICY-3745>`_ - PDP-D: Upgrade drools to the latest 7.x release -| `POLICY-3747 <https://jira.onap.org/browse/POLICY-3747>`_ - Support Readiness and Liveness probes on Control loop helm charts -| `POLICY-3748 <https://jira.onap.org/browse/POLICY-3748>`_ - Enable cluster admin role for k8s participant helm chart in OOM -| `POLICY-3750 <https://jira.onap.org/browse/POLICY-3750>`_ - R10: Improve runtime monitoring capabilities in policy components -| `POLICY-3753 <https://jira.onap.org/browse/POLICY-3753>`_ - Migrate policy-api component to spring boot -| `POLICY-3754 <https://jira.onap.org/browse/POLICY-3754>`_ - Migrate policy-pap component to spring boot -| `POLICY-3755 <https://jira.onap.org/browse/POLICY-3755>`_ - Create a list of application metrics to be exposed in policy framework components -| `POLICY-3756 <https://jira.onap.org/browse/POLICY-3756>`_ - Expose application level metrics in policy-api -| `POLICY-3757 <https://jira.onap.org/browse/POLICY-3757>`_ - Expose application level metrics in policy-pap -| `POLICY-3759 <https://jira.onap.org/browse/POLICY-3759>`_ - Expose application level metrics in policy-distribution -| `POLICY-3760 <https://jira.onap.org/browse/POLICY-3760>`_ - Expose application level metrics in apex-pdp -| `POLICY-3761 <https://jira.onap.org/browse/POLICY-3761>`_ - Expose application level metrics in drools-pdp -| `POLICY-3763 <https://jira.onap.org/browse/POLICY-3763>`_ - Improve policy-api & policy-pap readiness probes to handle db failures -| `POLICY-3777 <https://jira.onap.org/browse/POLICY-3777>`_ - R10: Control Loop in TOSCA LCM improvement -| `POLICY-3781 <https://jira.onap.org/browse/POLICY-3781>`_ - R10: Policy Framework Database Configurability -| `POLICY-3808 <https://jira.onap.org/browse/POLICY-3808>`_ - Commission a Control Loop Type from a Control Loop Type package/service -| `POLICY-3816 <https://jira.onap.org/browse/POLICY-3816>`_ - Support Policy Type Metadata Sets in Policy Framework -| `POLICY-3823 <https://jira.onap.org/browse/POLICY-3823>`_ - Proof of concept of Controlloop design time with SDC -| `POLICY-3835 <https://jira.onap.org/browse/POLICY-3835>`_ - Write scripts to make release of the Policy Framework easier -| `POLICY-3839 <https://jira.onap.org/browse/POLICY-3839>`_ - Migrate controlloop runtime from Eclipselink to Hibernate -| `POLICY-3865 <https://jira.onap.org/browse/POLICY-3865>`_ - PDP-D APPS: extend CDS actor VNF operations support -| `POLICY-3870 <https://jira.onap.org/browse/POLICY-3870>`_ - Add Controlloop design-time components to SDC -| `POLICY-3886 <https://jira.onap.org/browse/POLICY-3886>`_ - Create basic installation & setup for prometheus & grafana -| `POLICY-3889 <https://jira.onap.org/browse/POLICY-3889>`_ - Implement TCS Control Loops using a TOSCA appraoch -| `POLICY-3892 <https://jira.onap.org/browse/POLICY-3892>`_ - Create basic grafana dashboards for monitoring policy framework components -| `POLICY-3896 <https://jira.onap.org/browse/POLICY-3896>`_ - Change Apex Editor to use Spring Boot -| `POLICY-3902 <https://jira.onap.org/browse/POLICY-3902>`_ - Extend PDP-X statistics endpoint to support per application metrics -| `POLICY-3921 <https://jira.onap.org/browse/POLICY-3921>`_ - Align TOSCA Control Loop with Automation Composition -| `POLICY-3938 <https://jira.onap.org/browse/POLICY-3938>`_ - Rename CLAMP "TOSCA Control Loop" feature to CLAMP "Automation Composition Management" -| `POLICY-4040 <https://jira.onap.org/browse/POLICY-4040>`_ - Enable prometheus monitoring on drools-pdp charts +| `POLICY-1837 <https://lf-onap.atlassian.net/browse/POLICY-1837>`_ - Review transaction boundaries of models +| `POLICY-2715 <https://lf-onap.atlassian.net/browse/POLICY-2715>`_ - Allow underlying database to be configured: MariaDB or Postgres +| `POLICY-2952 <https://lf-onap.atlassian.net/browse/POLICY-2952>`_ - R10: TOSCA Control Loop Design Time +| `POLICY-2973 <https://lf-onap.atlassian.net/browse/POLICY-2973>`_ - Build interaction between SDC and Design Time Catalogue +| `POLICY-3034 <https://lf-onap.atlassian.net/browse/POLICY-3034>`_ - Support statistics in PDP-X +| `POLICY-3213 <https://lf-onap.atlassian.net/browse/POLICY-3213>`_ - Persistence Policy Models using JPA/JDBC/Hibernate/MariaDB +| `POLICY-3498 <https://lf-onap.atlassian.net/browse/POLICY-3498>`_ - Provide API to retrieve policies deployed since a given time +| `POLICY-3579 <https://lf-onap.atlassian.net/browse/POLICY-3579>`_ - End to End Demo of PMSH usecase +| `POLICY-3582 <https://lf-onap.atlassian.net/browse/POLICY-3582>`_ - Uber Story: Cover the full scope of LCM for Control Loops: Server Side +| `POLICY-3638 <https://lf-onap.atlassian.net/browse/POLICY-3638>`_ - Change policy-gui so that all GUIs work in the same jar/JVM +| `POLICY-3745 <https://lf-onap.atlassian.net/browse/POLICY-3745>`_ - PDP-D: Upgrade drools to the latest 7.x release +| `POLICY-3747 <https://lf-onap.atlassian.net/browse/POLICY-3747>`_ - Support Readiness and Liveness probes on Control loop helm charts +| `POLICY-3748 <https://lf-onap.atlassian.net/browse/POLICY-3748>`_ - Enable cluster admin role for k8s participant helm chart in OOM +| `POLICY-3750 <https://lf-onap.atlassian.net/browse/POLICY-3750>`_ - R10: Improve runtime monitoring capabilities in policy components +| `POLICY-3753 <https://lf-onap.atlassian.net/browse/POLICY-3753>`_ - Migrate policy-api component to spring boot +| `POLICY-3754 <https://lf-onap.atlassian.net/browse/POLICY-3754>`_ - Migrate policy-pap component to spring boot +| `POLICY-3755 <https://lf-onap.atlassian.net/browse/POLICY-3755>`_ - Create a list of application metrics to be exposed in policy framework components +| `POLICY-3756 <https://lf-onap.atlassian.net/browse/POLICY-3756>`_ - Expose application level metrics in policy-api +| `POLICY-3757 <https://lf-onap.atlassian.net/browse/POLICY-3757>`_ - Expose application level metrics in policy-pap +| `POLICY-3759 <https://lf-onap.atlassian.net/browse/POLICY-3759>`_ - Expose application level metrics in policy-distribution +| `POLICY-3760 <https://lf-onap.atlassian.net/browse/POLICY-3760>`_ - Expose application level metrics in apex-pdp +| `POLICY-3761 <https://lf-onap.atlassian.net/browse/POLICY-3761>`_ - Expose application level metrics in drools-pdp +| `POLICY-3763 <https://lf-onap.atlassian.net/browse/POLICY-3763>`_ - Improve policy-api & policy-pap readiness probes to handle db failures +| `POLICY-3777 <https://lf-onap.atlassian.net/browse/POLICY-3777>`_ - R10: Control Loop in TOSCA LCM improvement +| `POLICY-3781 <https://lf-onap.atlassian.net/browse/POLICY-3781>`_ - R10: Policy Framework Database Configurability +| `POLICY-3808 <https://lf-onap.atlassian.net/browse/POLICY-3808>`_ - Commission a Control Loop Type from a Control Loop Type package/service +| `POLICY-3816 <https://lf-onap.atlassian.net/browse/POLICY-3816>`_ - Support Policy Type Metadata Sets in Policy Framework +| `POLICY-3823 <https://lf-onap.atlassian.net/browse/POLICY-3823>`_ - Proof of concept of Controlloop design time with SDC +| `POLICY-3835 <https://lf-onap.atlassian.net/browse/POLICY-3835>`_ - Write scripts to make release of the Policy Framework easier +| `POLICY-3839 <https://lf-onap.atlassian.net/browse/POLICY-3839>`_ - Migrate controlloop runtime from Eclipselink to Hibernate +| `POLICY-3865 <https://lf-onap.atlassian.net/browse/POLICY-3865>`_ - PDP-D APPS: extend CDS actor VNF operations support +| `POLICY-3870 <https://lf-onap.atlassian.net/browse/POLICY-3870>`_ - Add Controlloop design-time components to SDC +| `POLICY-3886 <https://lf-onap.atlassian.net/browse/POLICY-3886>`_ - Create basic installation & setup for prometheus & grafana +| `POLICY-3889 <https://lf-onap.atlassian.net/browse/POLICY-3889>`_ - Implement TCS Control Loops using a TOSCA appraoch +| `POLICY-3892 <https://lf-onap.atlassian.net/browse/POLICY-3892>`_ - Create basic grafana dashboards for monitoring policy framework components +| `POLICY-3896 <https://lf-onap.atlassian.net/browse/POLICY-3896>`_ - Change Apex Editor to use Spring Boot +| `POLICY-3902 <https://lf-onap.atlassian.net/browse/POLICY-3902>`_ - Extend PDP-X statistics endpoint to support per application metrics +| `POLICY-3921 <https://lf-onap.atlassian.net/browse/POLICY-3921>`_ - Align TOSCA Control Loop with Automation Composition +| `POLICY-3938 <https://lf-onap.atlassian.net/browse/POLICY-3938>`_ - Rename CLAMP "TOSCA Control Loop" feature to CLAMP "Automation Composition Management" +| `POLICY-4040 <https://lf-onap.atlassian.net/browse/POLICY-4040>`_ - Enable prometheus monitoring on drools-pdp charts Necessary Improvements and Bug Fixes ==================================== Necessary Improvements ~~~~~~~~~~~~~~~~~~~~~~ -| `POLICY-1820 <https://jira.onap.org/browse/POLICY-1820>`_ - Transfer APEX model to use policy-models -| `POLICY-2086 <https://jira.onap.org/browse/POLICY-2086>`_ - Remove references to mariadb from resource files -| `POLICY-2587 <https://jira.onap.org/browse/POLICY-2587>`_ - CLC target locking behavior needs to be by-passed for CLC to be effective -| `POLICY-2588 <https://jira.onap.org/browse/POLICY-2588>`_ - Target Locking Implementations should be configurable -| `POLICY-2683 <https://jira.onap.org/browse/POLICY-2683>`_ - REQ-443 improve its CII Badging score by improving input validation and documenting it in their CII Badging site. -| `POLICY-3076 <https://jira.onap.org/browse/POLICY-3076>`_ - Improve code coverage in policy framework repos -| `POLICY-3259 <https://jira.onap.org/browse/POLICY-3259>`_ - Components should not crash at start-up due to dmaap issues -| `POLICY-3269 <https://jira.onap.org/browse/POLICY-3269>`_ - Allow policy to disable guard check in drools-apps -| `POLICY-3358 <https://jira.onap.org/browse/POLICY-3358>`_ - Remove Clamp GUI from Clamp Repo -| `POLICY-3380 <https://jira.onap.org/browse/POLICY-3380>`_ - Archive onap/clamp and remove any jenkins jobs -| `POLICY-3386 <https://jira.onap.org/browse/POLICY-3386>`_ - PDP-D: better liveness checks to recover from stuck sessions -| `POLICY-3540 <https://jira.onap.org/browse/POLICY-3540>`_ - Refactor Participant Interfaces and Tests -| `POLICY-3708 <https://jira.onap.org/browse/POLICY-3708>`_ - Improve Documentation for Jakarta Release -| `POLICY-3710 <https://jira.onap.org/browse/POLICY-3710>`_ - Tidy up the Policy Framework documentation -| `POLICY-3791 <https://jira.onap.org/browse/POLICY-3791>`_ - sphinx-build warnings in policy parent docs -| `POLICY-3804 <https://jira.onap.org/browse/POLICY-3804>`_ - Add gui-clamp coverage info to sonar -| `POLICY-3866 <https://jira.onap.org/browse/POLICY-3866>`_ - Tidy up Policy Framework Documentation -| `POLICY-3885 <https://jira.onap.org/browse/POLICY-3885>`_ - Document metadataSet usage in policy documentation -| `POLICY-3895 <https://jira.onap.org/browse/POLICY-3895>`_ - Improve drools pdp and drools apps logging -| `POLICY-3920 <https://jira.onap.org/browse/POLICY-3920>`_ - Write a User Guide for TOSCA Control Loops in CLAMP -| `POLICY-3927 <https://jira.onap.org/browse/POLICY-3927>`_ - Remove Unused maven dependencies in apex-editor -| `POLICY-3928 <https://jira.onap.org/browse/POLICY-3928>`_ - Remove Unused test resources in apex-editor -| `POLICY-3977 <https://jira.onap.org/browse/POLICY-3977>`_ - PDP-D: enhanced healthchecks for monitoring subcomponents -| `POLICY-3979 <https://jira.onap.org/browse/POLICY-3979>`_ - PDP-D + APPS: investigate configuration to use MySql instead of MariaDB +| `POLICY-1820 <https://lf-onap.atlassian.net/browse/POLICY-1820>`_ - Transfer APEX model to use policy-models +| `POLICY-2086 <https://lf-onap.atlassian.net/browse/POLICY-2086>`_ - Remove references to mariadb from resource files +| `POLICY-2587 <https://lf-onap.atlassian.net/browse/POLICY-2587>`_ - CLC target locking behavior needs to be by-passed for CLC to be effective +| `POLICY-2588 <https://lf-onap.atlassian.net/browse/POLICY-2588>`_ - Target Locking Implementations should be configurable +| `POLICY-2683 <https://lf-onap.atlassian.net/browse/POLICY-2683>`_ - REQ-443 improve its CII Badging score by improving input validation and documenting it in their CII Badging site. +| `POLICY-3076 <https://lf-onap.atlassian.net/browse/POLICY-3076>`_ - Improve code coverage in policy framework repos +| `POLICY-3259 <https://lf-onap.atlassian.net/browse/POLICY-3259>`_ - Components should not crash at start-up due to dmaap issues +| `POLICY-3269 <https://lf-onap.atlassian.net/browse/POLICY-3269>`_ - Allow policy to disable guard check in drools-apps +| `POLICY-3358 <https://lf-onap.atlassian.net/browse/POLICY-3358>`_ - Remove Clamp GUI from Clamp Repo +| `POLICY-3380 <https://lf-onap.atlassian.net/browse/POLICY-3380>`_ - Archive onap/clamp and remove any jenkins jobs +| `POLICY-3386 <https://lf-onap.atlassian.net/browse/POLICY-3386>`_ - PDP-D: better liveness checks to recover from stuck sessions +| `POLICY-3540 <https://lf-onap.atlassian.net/browse/POLICY-3540>`_ - Refactor Participant Interfaces and Tests +| `POLICY-3708 <https://lf-onap.atlassian.net/browse/POLICY-3708>`_ - Improve Documentation for Jakarta Release +| `POLICY-3710 <https://lf-onap.atlassian.net/browse/POLICY-3710>`_ - Tidy up the Policy Framework documentation +| `POLICY-3791 <https://lf-onap.atlassian.net/browse/POLICY-3791>`_ - sphinx-build warnings in policy parent docs +| `POLICY-3804 <https://lf-onap.atlassian.net/browse/POLICY-3804>`_ - Add gui-clamp coverage info to sonar +| `POLICY-3866 <https://lf-onap.atlassian.net/browse/POLICY-3866>`_ - Tidy up Policy Framework Documentation +| `POLICY-3885 <https://lf-onap.atlassian.net/browse/POLICY-3885>`_ - Document metadataSet usage in policy documentation +| `POLICY-3895 <https://lf-onap.atlassian.net/browse/POLICY-3895>`_ - Improve drools pdp and drools apps logging +| `POLICY-3920 <https://lf-onap.atlassian.net/browse/POLICY-3920>`_ - Write a User Guide for TOSCA Control Loops in CLAMP +| `POLICY-3927 <https://lf-onap.atlassian.net/browse/POLICY-3927>`_ - Remove Unused maven dependencies in apex-editor +| `POLICY-3928 <https://lf-onap.atlassian.net/browse/POLICY-3928>`_ - Remove Unused test resources in apex-editor +| `POLICY-3977 <https://lf-onap.atlassian.net/browse/POLICY-3977>`_ - PDP-D: enhanced healthchecks for monitoring subcomponents +| `POLICY-3979 <https://lf-onap.atlassian.net/browse/POLICY-3979>`_ - PDP-D + APPS: investigate configuration to use MySql instead of MariaDB Bug Fixes ~~~~~~~~~ -| `POLICY-3153 <https://jira.onap.org/browse/POLICY-3153>`_ - Fix Db connection issues in TOSCA control loop -| `POLICY-3589 <https://jira.onap.org/browse/POLICY-3589>`_ - Http participant unable to resolve Intermediary config during startup -| `POLICY-3743 <https://jira.onap.org/browse/POLICY-3743>`_ - APEX-PDP RestClient reports failure when response code!=200 -| `POLICY-3749 <https://jira.onap.org/browse/POLICY-3749>`_ - Drools CSITs failing due to version related problem -| `POLICY-3780 <https://jira.onap.org/browse/POLICY-3780>`_ - Update endpoints in xacml-pdp jmx files -| `POLICY-3794 <https://jira.onap.org/browse/POLICY-3794>`_ - Cannot create a new APEX policy on Policy Editor -| `POLICY-3831 <https://jira.onap.org/browse/POLICY-3831>`_ - Camel Integration Tests Failing -| `POLICY-3871 <https://jira.onap.org/browse/POLICY-3871>`_ - Fix issues in existing entity classes in policy-models -| `POLICY-3893 <https://jira.onap.org/browse/POLICY-3893>`_ - apex-pdp intermittent error in build -| `POLICY-3897 <https://jira.onap.org/browse/POLICY-3897>`_ - Fix issue with usage of GeneratedValue in PfGeneratedIdKey -| `POLICY-3905 <https://jira.onap.org/browse/POLICY-3905>`_ - drools pdp merge job failing -| `POLICY-3913 <https://jira.onap.org/browse/POLICY-3913>`_ - Fix issue where some metrics are lost in spring boot -| `POLICY-3914 <https://jira.onap.org/browse/POLICY-3914>`_ - Fix spring configuration for pap csit -| `POLICY-3929 <https://jira.onap.org/browse/POLICY-3929>`_ - Race condition in apex-editor model upload -| `POLICY-3933 <https://jira.onap.org/browse/POLICY-3933>`_ - CLAMP CSIT failing with HTTP 401 unauthorized for URL error -| `POLICY-3978 <https://jira.onap.org/browse/POLICY-3978>`_ - Changing default append on instance name -| `POLICY-3983 <https://jira.onap.org/browse/POLICY-3983>`_ - Policy-API is not using the mounted logback.xml file -| `POLICY-4030 <https://jira.onap.org/browse/POLICY-4030>`_ - PAP/API healthcheck response code not in line with the actual health report -| `POLICY-4039 <https://jira.onap.org/browse/POLICY-4039>`_ - Fix configuration issues causing automation composition issues -| `POLICY-4041 <https://jira.onap.org/browse/POLICY-4041>`_ - Duplicate log entries in policy-gui -| `POLICY-4043 <https://jira.onap.org/browse/POLICY-4043>`_ - Batch deploy/undeploy operations incrementing corresponding apex counter by only 1 -| `POLICY-4044 <https://jira.onap.org/browse/POLICY-4044>`_ - APEX-PDP engine metrics remain 0 even after execution of events -| `POLICY-4068 <https://jira.onap.org/browse/POLICY-4068>`_ - PAP consolidated healthcheck returning report with empty url for PAP -| `POLICY-4087 <https://jira.onap.org/browse/POLICY-4087>`_ - Inconsistent behaviour in APEX when PDP STATE changed to PASSIVE and then ACTIVE -| `POLICY-4088 <https://jira.onap.org/browse/POLICY-4088>`_ - PAP shows incorrect deployments counter on parallel deploy/undeploy -| `POLICY-4092 <https://jira.onap.org/browse/POLICY-4092>`_ - Modify Nssi Closed Loop Error -| `POLICY-4095 <https://jira.onap.org/browse/POLICY-4095>`_ - Failures on Daily Master tests onap-policy-clamp-runtime-acm -| `POLICY-4096 <https://jira.onap.org/browse/POLICY-4096>`_ - Policy deployment fails if prometheus operator is not installed -| `POLICY-4104 <https://jira.onap.org/browse/POLICY-4104>`_ - Issue when serialization into JSON Object which brings allot of garbage -| `POLICY-4106 <https://jira.onap.org/browse/POLICY-4106>`_ - PDP-D APPS: Network Slicing: incorrect SO operation +| `POLICY-3153 <https://lf-onap.atlassian.net/browse/POLICY-3153>`_ - Fix Db connection issues in TOSCA control loop +| `POLICY-3589 <https://lf-onap.atlassian.net/browse/POLICY-3589>`_ - Http participant unable to resolve Intermediary config during startup +| `POLICY-3743 <https://lf-onap.atlassian.net/browse/POLICY-3743>`_ - APEX-PDP RestClient reports failure when response code!=200 +| `POLICY-3749 <https://lf-onap.atlassian.net/browse/POLICY-3749>`_ - Drools CSITs failing due to version related problem +| `POLICY-3780 <https://lf-onap.atlassian.net/browse/POLICY-3780>`_ - Update endpoints in xacml-pdp jmx files +| `POLICY-3794 <https://lf-onap.atlassian.net/browse/POLICY-3794>`_ - Cannot create a new APEX policy on Policy Editor +| `POLICY-3831 <https://lf-onap.atlassian.net/browse/POLICY-3831>`_ - Camel Integration Tests Failing +| `POLICY-3871 <https://lf-onap.atlassian.net/browse/POLICY-3871>`_ - Fix issues in existing entity classes in policy-models +| `POLICY-3893 <https://lf-onap.atlassian.net/browse/POLICY-3893>`_ - apex-pdp intermittent error in build +| `POLICY-3897 <https://lf-onap.atlassian.net/browse/POLICY-3897>`_ - Fix issue with usage of GeneratedValue in PfGeneratedIdKey +| `POLICY-3905 <https://lf-onap.atlassian.net/browse/POLICY-3905>`_ - drools pdp merge job failing +| `POLICY-3913 <https://lf-onap.atlassian.net/browse/POLICY-3913>`_ - Fix issue where some metrics are lost in spring boot +| `POLICY-3914 <https://lf-onap.atlassian.net/browse/POLICY-3914>`_ - Fix spring configuration for pap csit +| `POLICY-3929 <https://lf-onap.atlassian.net/browse/POLICY-3929>`_ - Race condition in apex-editor model upload +| `POLICY-3933 <https://lf-onap.atlassian.net/browse/POLICY-3933>`_ - CLAMP CSIT failing with HTTP 401 unauthorized for URL error +| `POLICY-3978 <https://lf-onap.atlassian.net/browse/POLICY-3978>`_ - Changing default append on instance name +| `POLICY-3983 <https://lf-onap.atlassian.net/browse/POLICY-3983>`_ - Policy-API is not using the mounted logback.xml file +| `POLICY-4030 <https://lf-onap.atlassian.net/browse/POLICY-4030>`_ - PAP/API healthcheck response code not in line with the actual health report +| `POLICY-4039 <https://lf-onap.atlassian.net/browse/POLICY-4039>`_ - Fix configuration issues causing automation composition issues +| `POLICY-4041 <https://lf-onap.atlassian.net/browse/POLICY-4041>`_ - Duplicate log entries in policy-gui +| `POLICY-4043 <https://lf-onap.atlassian.net/browse/POLICY-4043>`_ - Batch deploy/undeploy operations incrementing corresponding apex counter by only 1 +| `POLICY-4044 <https://lf-onap.atlassian.net/browse/POLICY-4044>`_ - APEX-PDP engine metrics remain 0 even after execution of events +| `POLICY-4068 <https://lf-onap.atlassian.net/browse/POLICY-4068>`_ - PAP consolidated healthcheck returning report with empty url for PAP +| `POLICY-4087 <https://lf-onap.atlassian.net/browse/POLICY-4087>`_ - Inconsistent behaviour in APEX when PDP STATE changed to PASSIVE and then ACTIVE +| `POLICY-4088 <https://lf-onap.atlassian.net/browse/POLICY-4088>`_ - PAP shows incorrect deployments counter on parallel deploy/undeploy +| `POLICY-4092 <https://lf-onap.atlassian.net/browse/POLICY-4092>`_ - Modify Nssi Closed Loop Error +| `POLICY-4095 <https://lf-onap.atlassian.net/browse/POLICY-4095>`_ - Failures on Daily Master tests onap-policy-clamp-runtime-acm +| `POLICY-4096 <https://lf-onap.atlassian.net/browse/POLICY-4096>`_ - Policy deployment fails if prometheus operator is not installed +| `POLICY-4104 <https://lf-onap.atlassian.net/browse/POLICY-4104>`_ - Issue when serialization into JSON Object which brings allot of garbage +| `POLICY-4106 <https://lf-onap.atlassian.net/browse/POLICY-4106>`_ - PDP-D APPS: Network Slicing: incorrect SO operation References ========== @@ -1292,7 +1478,7 @@ For more information on the ONAP Jakarta release, please see: #. `ONAP Wiki Page`_ .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -1369,7 +1555,7 @@ Artifacts released: **Bug Fixes and Necessary Enhancements** - * `[POLICY-3862] <https://jira.onap.org/browse/POLICY-3862>`_ + * `[POLICY-3862] <https://lf-onap.atlassian.net/browse/POLICY-3862>`_ - Check all code for Log4J before version 2.15.0 and upgrade if necessary Version: 9.0.0 @@ -1443,7 +1629,7 @@ Clamp -> policy Control Loop Database -* `REQ-684 <https://jira.onap.org/browse/REQ-684>`_ - Merge CLAMP functionality into Policy Framework project +* `REQ-684 <https://lf-onap.atlassian.net/browse/REQ-684>`_ - Merge CLAMP functionality into Policy Framework project - keep CLAMP functions into ONAP - reduce ONAP footprint - consolidate the UI (Control loop UI and policy) @@ -1451,7 +1637,7 @@ Database - introduces the Spring Framework into the Policy Framework - see `the CLAMP documentation <https://docs.onap.org/projects/onap-policy-parent/en/latest/clamp/clamp.html>`_ -* `REQ-716 <https://jira.onap.org/browse/REQ-716>`_ - Control Loop in TOSCA LCM +* `REQ-716 <https://lf-onap.atlassian.net/browse/REQ-716>`_ - Control Loop in TOSCA LCM - Allows Control Loops to be defined and described in Metadata using TOSCA - Control loops can run on the fly on any component that implements a *participant* API - Control Loops can be commissioned into Policy/CLAMP, they can be parameterized, initiated on arbitrary @@ -1503,193 +1689,193 @@ N/A Security Notes ============== -| `POLICY-3169 <https://jira.onap.org/browse/POLICY-3169>`_ - Remove security issues reported by NEXUS-IQ -| `POLICY-3315 <https://jira.onap.org/browse/POLICY-3315>`_ - Review license scan issues -| `POLICY-3327 <https://jira.onap.org/browse/POLICY-3327>`_ - OOM AAF generated certificates contain invalid SANs entries -| `POLICY-3338 <https://jira.onap.org/browse/POLICY-3338>`_ - Upgrade CDS dependency to the latest version -| `POLICY-3384 <https://jira.onap.org/browse/POLICY-3384>`_ - Use signed certificates in the CSITs -| `POLICY-3431 <https://jira.onap.org/browse/POLICY-3431>`_ - Review license scan issues -| `POLICY-3516 <https://jira.onap.org/browse/POLICY-3516>`_ - Upgrade CDS dependency to the 1.1.5 version -| `POLICY-3590 <https://jira.onap.org/browse/POLICY-3590>`_ - Address security vulnerabilities and License issues in Policy Framework -| `POLICY-3697 <https://jira.onap.org/browse/POLICY-3697>`_ - Review license scan issues +| `POLICY-3169 <https://lf-onap.atlassian.net/browse/POLICY-3169>`_ - Remove security issues reported by NEXUS-IQ +| `POLICY-3315 <https://lf-onap.atlassian.net/browse/POLICY-3315>`_ - Review license scan issues +| `POLICY-3327 <https://lf-onap.atlassian.net/browse/POLICY-3327>`_ - OOM AAF generated certificates contain invalid SANs entries +| `POLICY-3338 <https://lf-onap.atlassian.net/browse/POLICY-3338>`_ - Upgrade CDS dependency to the latest version +| `POLICY-3384 <https://lf-onap.atlassian.net/browse/POLICY-3384>`_ - Use signed certificates in the CSITs +| `POLICY-3431 <https://lf-onap.atlassian.net/browse/POLICY-3431>`_ - Review license scan issues +| `POLICY-3516 <https://lf-onap.atlassian.net/browse/POLICY-3516>`_ - Upgrade CDS dependency to the 1.1.5 version +| `POLICY-3590 <https://lf-onap.atlassian.net/browse/POLICY-3590>`_ - Address security vulnerabilities and License issues in Policy Framework +| `POLICY-3697 <https://lf-onap.atlassian.net/browse/POLICY-3697>`_ - Review license scan issues Functional Improvements ======================= -| `REQ-684 <https://jira.onap.org/browse/REQ-684>`_ - Merge CLAMP functionality into Policy Framework project -| `REQ-716 <https://jira.onap.org/browse/REQ-716>`_ - Control Loop in TOSCA LCM -| `POLICY-1787 <https://jira.onap.org/browse/POLICY-1787>`_ - Support mariadb upgrade/rollback functionality -| `POLICY-2535 <https://jira.onap.org/browse/POLICY-2535>`_ - Query deployed policies by regex on the name, for a given policy type -| `POLICY-2618 <https://jira.onap.org/browse/POLICY-2618>`_ - PDP-D make legacy configuration interface (used by brmsgw) an optional feature -| `POLICY-2769 <https://jira.onap.org/browse/POLICY-2769>`_ - Support multiple PAP instances -| `POLICY-2865 <https://jira.onap.org/browse/POLICY-2865>`_ - Add support and documentation on how an application can control what info is returned in Decision API -| `POLICY-2896 <https://jira.onap.org/browse/POLICY-2896>`_ - Improve consolidated health check to include dependencies -| `POLICY-2920 <https://jira.onap.org/browse/POLICY-2920>`_ - policy-clamp ui is capable to push and existing policy(tree) into pdp -| `POLICY-2921 <https://jira.onap.org/browse/POLICY-2921>`_ - use the policy-clamp ui to manage pdp groups -| `POLICY-2923 <https://jira.onap.org/browse/POLICY-2923>`_ - use the policy-clamp ui to manage policy types -| `POLICY-2930 <https://jira.onap.org/browse/POLICY-2930>`_ - clamp-backend rest api to push policies to pdp -| `POLICY-2931 <https://jira.onap.org/browse/POLICY-2931>`_ - clamp GUI to push policy to pdp -| `POLICY-3072 <https://jira.onap.org/browse/POLICY-3072>`_ - clamp ui support multiple pdp group per policy type -| `POLICY-3107 <https://jira.onap.org/browse/POLICY-3107>`_ - Support delta policies in PDPs -| `POLICY-3165 <https://jira.onap.org/browse/POLICY-3165>`_ - Implement tree view in policies list -| `POLICY-3209 <https://jira.onap.org/browse/POLICY-3209>`_ - CLAMP Component Lifecycle Management using Spring Framework -| `POLICY-3218 <https://jira.onap.org/browse/POLICY-3218>`_ - Integrate CLAMP GUIs (Instantiation/Monitoring) in the policy-gui repo -| `POLICY-3227 <https://jira.onap.org/browse/POLICY-3227>`_ - Implementation of context album improvements in apex-pdp -| `POLICY-3228 <https://jira.onap.org/browse/POLICY-3228>`_ - Implement clamp backend part to add policy models api -| `POLICY-3229 <https://jira.onap.org/browse/POLICY-3229>`_ - Implement the front end part to add tosca model -| `POLICY-3230 <https://jira.onap.org/browse/POLICY-3230>`_ - Make default PDP-D and PDP-D-APPS work out of the box -| `POLICY-3260 <https://jira.onap.org/browse/POLICY-3260>`_ - Allow rules to specify EventManagerService -| `POLICY-3324 <https://jira.onap.org/browse/POLICY-3324>`_ - Design a solution for sending notifications to Kafka & Rest in apex-pdp policies -| `POLICY-3331 <https://jira.onap.org/browse/POLICY-3331>`_ - PAP: should allow for external configuration of groups other than defaultGroup -| `POLICY-3340 <https://jira.onap.org/browse/POLICY-3340>`_ - Create REST API's in PAP to fetch the audit information stored in DB -| `POLICY-3514 <https://jira.onap.org/browse/POLICY-3514>`_ - XACML Decision support for Multiple Requests -| `POLICY-3524 <https://jira.onap.org/browse/POLICY-3524>`_ - Explore options to integrate prometheus with policy framework components -| `POLICY-3527 <https://jira.onap.org/browse/POLICY-3527>`_ - Update query parameter names in policy audit api's -| `POLICY-3533 <https://jira.onap.org/browse/POLICY-3533>`_ - PDP-D: make DB port provisionable -| `POLICY-3538 <https://jira.onap.org/browse/POLICY-3538>`_ - Export basic metrics from policy components for prometheus -| `POLICY-3545 <https://jira.onap.org/browse/POLICY-3545>`_ - Use generic create policy url in policy/distribution -| `POLICY-3557 <https://jira.onap.org/browse/POLICY-3557>`_ - Export basic prometheus metrics from clamp +| `REQ-684 <https://lf-onap.atlassian.net/browse/REQ-684>`_ - Merge CLAMP functionality into Policy Framework project +| `REQ-716 <https://lf-onap.atlassian.net/browse/REQ-716>`_ - Control Loop in TOSCA LCM +| `POLICY-1787 <https://lf-onap.atlassian.net/browse/POLICY-1787>`_ - Support mariadb upgrade/rollback functionality +| `POLICY-2535 <https://lf-onap.atlassian.net/browse/POLICY-2535>`_ - Query deployed policies by regex on the name, for a given policy type +| `POLICY-2618 <https://lf-onap.atlassian.net/browse/POLICY-2618>`_ - PDP-D make legacy configuration interface (used by brmsgw) an optional feature +| `POLICY-2769 <https://lf-onap.atlassian.net/browse/POLICY-2769>`_ - Support multiple PAP instances +| `POLICY-2865 <https://lf-onap.atlassian.net/browse/POLICY-2865>`_ - Add support and documentation on how an application can control what info is returned in Decision API +| `POLICY-2896 <https://lf-onap.atlassian.net/browse/POLICY-2896>`_ - Improve consolidated health check to include dependencies +| `POLICY-2920 <https://lf-onap.atlassian.net/browse/POLICY-2920>`_ - policy-clamp ui is capable to push and existing policy(tree) into pdp +| `POLICY-2921 <https://lf-onap.atlassian.net/browse/POLICY-2921>`_ - use the policy-clamp ui to manage pdp groups +| `POLICY-2923 <https://lf-onap.atlassian.net/browse/POLICY-2923>`_ - use the policy-clamp ui to manage policy types +| `POLICY-2930 <https://lf-onap.atlassian.net/browse/POLICY-2930>`_ - clamp-backend rest api to push policies to pdp +| `POLICY-2931 <https://lf-onap.atlassian.net/browse/POLICY-2931>`_ - clamp GUI to push policy to pdp +| `POLICY-3072 <https://lf-onap.atlassian.net/browse/POLICY-3072>`_ - clamp ui support multiple pdp group per policy type +| `POLICY-3107 <https://lf-onap.atlassian.net/browse/POLICY-3107>`_ - Support delta policies in PDPs +| `POLICY-3165 <https://lf-onap.atlassian.net/browse/POLICY-3165>`_ - Implement tree view in policies list +| `POLICY-3209 <https://lf-onap.atlassian.net/browse/POLICY-3209>`_ - CLAMP Component Lifecycle Management using Spring Framework +| `POLICY-3218 <https://lf-onap.atlassian.net/browse/POLICY-3218>`_ - Integrate CLAMP GUIs (Instantiation/Monitoring) in the policy-gui repo +| `POLICY-3227 <https://lf-onap.atlassian.net/browse/POLICY-3227>`_ - Implementation of context album improvements in apex-pdp +| `POLICY-3228 <https://lf-onap.atlassian.net/browse/POLICY-3228>`_ - Implement clamp backend part to add policy models api +| `POLICY-3229 <https://lf-onap.atlassian.net/browse/POLICY-3229>`_ - Implement the front end part to add tosca model +| `POLICY-3230 <https://lf-onap.atlassian.net/browse/POLICY-3230>`_ - Make default PDP-D and PDP-D-APPS work out of the box +| `POLICY-3260 <https://lf-onap.atlassian.net/browse/POLICY-3260>`_ - Allow rules to specify EventManagerService +| `POLICY-3324 <https://lf-onap.atlassian.net/browse/POLICY-3324>`_ - Design a solution for sending notifications to Kafka & Rest in apex-pdp policies +| `POLICY-3331 <https://lf-onap.atlassian.net/browse/POLICY-3331>`_ - PAP: should allow for external configuration of groups other than defaultGroup +| `POLICY-3340 <https://lf-onap.atlassian.net/browse/POLICY-3340>`_ - Create REST API's in PAP to fetch the audit information stored in DB +| `POLICY-3514 <https://lf-onap.atlassian.net/browse/POLICY-3514>`_ - XACML Decision support for Multiple Requests +| `POLICY-3524 <https://lf-onap.atlassian.net/browse/POLICY-3524>`_ - Explore options to integrate prometheus with policy framework components +| `POLICY-3527 <https://lf-onap.atlassian.net/browse/POLICY-3527>`_ - Update query parameter names in policy audit api's +| `POLICY-3533 <https://lf-onap.atlassian.net/browse/POLICY-3533>`_ - PDP-D: make DB port provisionable +| `POLICY-3538 <https://lf-onap.atlassian.net/browse/POLICY-3538>`_ - Export basic metrics from policy components for prometheus +| `POLICY-3545 <https://lf-onap.atlassian.net/browse/POLICY-3545>`_ - Use generic create policy url in policy/distribution +| `POLICY-3557 <https://lf-onap.atlassian.net/browse/POLICY-3557>`_ - Export basic prometheus metrics from clamp Necessary Improvements and Bug Fixes ==================================== Necessary Improvements ~~~~~~~~~~~~~~~~~~~~~~ -| `POLICY-2418 <https://jira.onap.org/browse/POLICY-2418>`_ - Refactor XACML PDP POJO's into Bean objects in order to perform validation more simply -| `POLICY-2429 <https://jira.onap.org/browse/POLICY-2429>`_ - Mark policy/engine read-only and remove ci-management jobs for it -| `POLICY-2542 <https://jira.onap.org/browse/POLICY-2542>`_ - Improve the REST parameter validation for PAP api's -| `POLICY-2767 <https://jira.onap.org/browse/POLICY-2767>`_ - Improve error handling of drools-pdp when requestID in onset is not valid UUID -| `POLICY-2899 <https://jira.onap.org/browse/POLICY-2899>`_ - Store basic audit details of deploy/undeploy operations in PAP -| `POLICY-2996 <https://jira.onap.org/browse/POLICY-2996>`_ - Address technical debt left over from Honolulu -| `POLICY-3059 <https://jira.onap.org/browse/POLICY-3059>`_ - Fix name of target-database property in persistence.xml files -| `POLICY-3062 <https://jira.onap.org/browse/POLICY-3062>`_ - Update the ENTRYPOINT in APEX-PDP Dockerfile -| `POLICY-3078 <https://jira.onap.org/browse/POLICY-3078>`_ - Support SSL communication in Kafka IO plugin of Apex-PDP -| `POLICY-3087 <https://jira.onap.org/browse/POLICY-3087>`_ - Use sl4fj instead of EELFLogger -| `POLICY-3089 <https://jira.onap.org/browse/POLICY-3089>`_ - Cleanup logs for success/failure consumers in apex-pdp -| `POLICY-3096 <https://jira.onap.org/browse/POLICY-3096>`_ - Fix intermittent test failures in APEX -| `POLICY-3128 <https://jira.onap.org/browse/POLICY-3128>`_ - Use command command-line handler across policy repos -| `POLICY-3129 <https://jira.onap.org/browse/POLICY-3129>`_ - Refactor command-line handling across policy-repos -| `POLICY-3132 <https://jira.onap.org/browse/POLICY-3132>`_ - Apex-pdp documentation refers to missing logos.png -| `POLICY-3134 <https://jira.onap.org/browse/POLICY-3134>`_ - Use base image for policy-jdk docker images -| `POLICY-3136 <https://jira.onap.org/browse/POLICY-3136>`_ - Ignore jacoco and checkstyle when in eclipse -| `POLICY-3143 <https://jira.onap.org/browse/POLICY-3143>`_ - Remove keystore files from policy repos -| `POLICY-3145 <https://jira.onap.org/browse/POLICY-3145>`_ - HTTPS clients should not allow self-signed certificates -| `POLICY-3147 <https://jira.onap.org/browse/POLICY-3147>`_ - Xacml-pdp should not use RestServerParameters for client parameters -| `POLICY-3155 <https://jira.onap.org/browse/POLICY-3155>`_ - Use python3 for CSITs -| `POLICY-3160 <https://jira.onap.org/browse/POLICY-3160>`_ - Use "sh" instead of "ash" where possible -| `POLICY-3163 <https://jira.onap.org/browse/POLICY-3163>`_ - Remove spaces from xacml file name -| `POLICY-3166 <https://jira.onap.org/browse/POLICY-3166>`_ - Use newer onap base image in clamp -| `POLICY-3171 <https://jira.onap.org/browse/POLICY-3171>`_ - Fix sporadic error in models provider junits -| `POLICY-3175 <https://jira.onap.org/browse/POLICY-3175>`_ - Minor clean-up of drools-apps -| `POLICY-3182 <https://jira.onap.org/browse/POLICY-3182>`_ - Update npm repo -| `POLICY-3189 <https://jira.onap.org/browse/POLICY-3189>`_ - Create a new key class which uses the @GeneratedValue annotation -| `POLICY-3190 <https://jira.onap.org/browse/POLICY-3190>`_ - Investigate handling of context albums in Apex-PDP for failure responses (ex - AAI) -| `POLICY-3198 <https://jira.onap.org/browse/POLICY-3198>`_ - Remove VirtualControlLoopEvent from OperationsHistory classes -| `POLICY-3211 <https://jira.onap.org/browse/POLICY-3211>`_ - Parameter Handling and Parameter Validation -| `POLICY-3214 <https://jira.onap.org/browse/POLICY-3214>`_ - Change Monitoring UI implementation to use React -| `POLICY-3215 <https://jira.onap.org/browse/POLICY-3215>`_ - Update CLAMP Module structure to Multi Module Maven approach -| `POLICY-3221 <https://jira.onap.org/browse/POLICY-3221>`_ - wrong lifecycle state information in INFO.yaml for policy/clamp -| `POLICY-3222 <https://jira.onap.org/browse/POLICY-3222>`_ - Use existing clamp gui to set the parameters during CL instantiation -| `POLICY-3235 <https://jira.onap.org/browse/POLICY-3235>`_ - gui-editor-apex fails to start -| `POLICY-3257 <https://jira.onap.org/browse/POLICY-3257>`_ - Update csit test cases to include policy status & statistics api's -| `POLICY-3261 <https://jira.onap.org/browse/POLICY-3261>`_ - Rules need a way to release locks -| `POLICY-3262 <https://jira.onap.org/browse/POLICY-3262>`_ - Extract more common code from UsecasesEventManager -| `POLICY-3292 <https://jira.onap.org/browse/POLICY-3292>`_ - Update the XACML PDP Tutorial docker compose files to point to release Honolulu images -| `POLICY-3298 <https://jira.onap.org/browse/POLICY-3298>`_ - Add key names to IndexedXxx factory class toString() methods -| `POLICY-3299 <https://jira.onap.org/browse/POLICY-3299>`_ - Merge policy CSITs into docker/csit -| `POLICY-3300 <https://jira.onap.org/browse/POLICY-3300>`_ - PACKAGES UPGRADES IN DIRECT DEPENDENCIES FOR ISTANBUL -| `POLICY-3303 <https://jira.onap.org/browse/POLICY-3303>`_ - Update the default logback.xml in APEX to log to STDOUT -| `POLICY-3305 <https://jira.onap.org/browse/POLICY-3305>`_ - Ensure XACML PDP application/translator methods are extendable -| `POLICY-3306 <https://jira.onap.org/browse/POLICY-3306>`_ - Fix issue where apex-pdp test is failing in gitlab -| `POLICY-3307 <https://jira.onap.org/browse/POLICY-3307>`_ - Turn off frankfurt CSITs -| `POLICY-3333 <https://jira.onap.org/browse/POLICY-3333>`_ - bean validator should use SerializedName -| `POLICY-3336 <https://jira.onap.org/browse/POLICY-3336>`_ - APEX CLI/Model: multiple outputs for nextState NULL -| `POLICY-3337 <https://jira.onap.org/browse/POLICY-3337>`_ - Move clamp documentation to policy/parent -| `POLICY-3366 <https://jira.onap.org/browse/POLICY-3366>`_ - PDP-D: support configuration of overarching DMAAP https flag -| `POLICY-3367 <https://jira.onap.org/browse/POLICY-3367>`_ - oom: policy-clamp-create-tables.sql: add IF NOT EXISTS clauses -| `POLICY-3374 <https://jira.onap.org/browse/POLICY-3374>`_ - Docker registry should be defined in the parent pom -| `POLICY-3378 <https://jira.onap.org/browse/POLICY-3378>`_ - Move groovy scripts to separate/common file -| `POLICY-3382 <https://jira.onap.org/browse/POLICY-3382>`_ - Create document for policy chaining in drools-pdp -| `POLICY-3383 <https://jira.onap.org/browse/POLICY-3383>`_ - Standardize policy deployment vs undeployment count in PdpStatistics -| `POLICY-3388 <https://jira.onap.org/browse/POLICY-3388>`_ - policy/gui merge jobs failing -| `POLICY-3389 <https://jira.onap.org/browse/POLICY-3389>`_ - Use lombok annotations instead of hashCode, equals, toString, get, set -| `POLICY-3404 <https://jira.onap.org/browse/POLICY-3404>`_ - Rolling DB errors in log output for API, PAP, and DB components -| `POLICY-3419 <https://jira.onap.org/browse/POLICY-3419>`_ - Remove operationshistory10 DB -| `POLICY-3450 <https://jira.onap.org/browse/POLICY-3450>`_ - PAP should support turning on/off via configuration storing PDP statistics -| `POLICY-3456 <https://jira.onap.org/browse/POLICY-3456>`_ - Use new RestClientParameters class instead of BusTopicParams -| `POLICY-3457 <https://jira.onap.org/browse/POLICY-3457>`_ - Topic source should not go into fast-fail loop when dmaap is unreachable -| `POLICY-3459 <https://jira.onap.org/browse/POLICY-3459>`_ - Document how to turn off collection of PdpStatistics -| `POLICY-3473 <https://jira.onap.org/browse/POLICY-3473>`_ - CSIT for xacml doesn't check dmaap msg status -| `POLICY-3474 <https://jira.onap.org/browse/POLICY-3474>`_ - Delete extra simulators from policy-models -| `POLICY-3486 <https://jira.onap.org/browse/POLICY-3486>`_ - policy-jdk docker image should have at least one up to date image -| `POLICY-3499 <https://jira.onap.org/browse/POLICY-3499>`_ - Improve Apex-PDP logs to avoid printing errors for irrelevant events in multiple policy deployment -| `POLICY-3501 <https://jira.onap.org/browse/POLICY-3501>`_ - Refactor guard actor -| `POLICY-3511 <https://jira.onap.org/browse/POLICY-3511>`_ - Limit statistics record count -| `POLICY-3525 <https://jira.onap.org/browse/POLICY-3525>`_ - Improve policy/pap csit automation test cases -| `POLICY-3528 <https://jira.onap.org/browse/POLICY-3528>`_ - Update documents & postman collection for pdp statistics api's -| `POLICY-3531 <https://jira.onap.org/browse/POLICY-3531>`_ - PDP-X: initialization delays causes liveness checks to be missed under OOM deployment -| `POLICY-3532 <https://jira.onap.org/browse/POLICY-3532>`_ - Add Honolulu Maintenance Release notes to read-the-docs -| `POLICY-3539 <https://jira.onap.org/browse/POLICY-3539>`_ - Use RestServer from policy/common in apex-pdp -| `POLICY-3547 <https://jira.onap.org/browse/POLICY-3547>`_ - METADATA tables for policy/docker db-migrator should be different than counterpart in policy/drools-pdp seed -| `POLICY-3556 <https://jira.onap.org/browse/POLICY-3556>`_ - Document xacml REST server limitations -| `POLICY-3605 <https://jira.onap.org/browse/POLICY-3605>`_ - Enhance dmaap simulator to support ""/topics" endpoint -| `POLICY-3609 <https://jira.onap.org/browse/POLICY-3609>`_ - Add CSIT test case for policy consolidated health check +| `POLICY-2418 <https://lf-onap.atlassian.net/browse/POLICY-2418>`_ - Refactor XACML PDP POJO's into Bean objects in order to perform validation more simply +| `POLICY-2429 <https://lf-onap.atlassian.net/browse/POLICY-2429>`_ - Mark policy/engine read-only and remove ci-management jobs for it +| `POLICY-2542 <https://lf-onap.atlassian.net/browse/POLICY-2542>`_ - Improve the REST parameter validation for PAP api's +| `POLICY-2767 <https://lf-onap.atlassian.net/browse/POLICY-2767>`_ - Improve error handling of drools-pdp when requestID in onset is not valid UUID +| `POLICY-2899 <https://lf-onap.atlassian.net/browse/POLICY-2899>`_ - Store basic audit details of deploy/undeploy operations in PAP +| `POLICY-2996 <https://lf-onap.atlassian.net/browse/POLICY-2996>`_ - Address technical debt left over from Honolulu +| `POLICY-3059 <https://lf-onap.atlassian.net/browse/POLICY-3059>`_ - Fix name of target-database property in persistence.xml files +| `POLICY-3062 <https://lf-onap.atlassian.net/browse/POLICY-3062>`_ - Update the ENTRYPOINT in APEX-PDP Dockerfile +| `POLICY-3078 <https://lf-onap.atlassian.net/browse/POLICY-3078>`_ - Support SSL communication in Kafka IO plugin of Apex-PDP +| `POLICY-3087 <https://lf-onap.atlassian.net/browse/POLICY-3087>`_ - Use sl4fj instead of EELFLogger +| `POLICY-3089 <https://lf-onap.atlassian.net/browse/POLICY-3089>`_ - Cleanup logs for success/failure consumers in apex-pdp +| `POLICY-3096 <https://lf-onap.atlassian.net/browse/POLICY-3096>`_ - Fix intermittent test failures in APEX +| `POLICY-3128 <https://lf-onap.atlassian.net/browse/POLICY-3128>`_ - Use command command-line handler across policy repos +| `POLICY-3129 <https://lf-onap.atlassian.net/browse/POLICY-3129>`_ - Refactor command-line handling across policy-repos +| `POLICY-3132 <https://lf-onap.atlassian.net/browse/POLICY-3132>`_ - Apex-pdp documentation refers to missing logos.png +| `POLICY-3134 <https://lf-onap.atlassian.net/browse/POLICY-3134>`_ - Use base image for policy-jdk docker images +| `POLICY-3136 <https://lf-onap.atlassian.net/browse/POLICY-3136>`_ - Ignore jacoco and checkstyle when in eclipse +| `POLICY-3143 <https://lf-onap.atlassian.net/browse/POLICY-3143>`_ - Remove keystore files from policy repos +| `POLICY-3145 <https://lf-onap.atlassian.net/browse/POLICY-3145>`_ - HTTPS clients should not allow self-signed certificates +| `POLICY-3147 <https://lf-onap.atlassian.net/browse/POLICY-3147>`_ - Xacml-pdp should not use RestServerParameters for client parameters +| `POLICY-3155 <https://lf-onap.atlassian.net/browse/POLICY-3155>`_ - Use python3 for CSITs +| `POLICY-3160 <https://lf-onap.atlassian.net/browse/POLICY-3160>`_ - Use "sh" instead of "ash" where possible +| `POLICY-3163 <https://lf-onap.atlassian.net/browse/POLICY-3163>`_ - Remove spaces from xacml file name +| `POLICY-3166 <https://lf-onap.atlassian.net/browse/POLICY-3166>`_ - Use newer onap base image in clamp +| `POLICY-3171 <https://lf-onap.atlassian.net/browse/POLICY-3171>`_ - Fix sporadic error in models provider junits +| `POLICY-3175 <https://lf-onap.atlassian.net/browse/POLICY-3175>`_ - Minor clean-up of drools-apps +| `POLICY-3182 <https://lf-onap.atlassian.net/browse/POLICY-3182>`_ - Update npm repo +| `POLICY-3189 <https://lf-onap.atlassian.net/browse/POLICY-3189>`_ - Create a new key class which uses the @GeneratedValue annotation +| `POLICY-3190 <https://lf-onap.atlassian.net/browse/POLICY-3190>`_ - Investigate handling of context albums in Apex-PDP for failure responses (ex - AAI) +| `POLICY-3198 <https://lf-onap.atlassian.net/browse/POLICY-3198>`_ - Remove VirtualControlLoopEvent from OperationsHistory classes +| `POLICY-3211 <https://lf-onap.atlassian.net/browse/POLICY-3211>`_ - Parameter Handling and Parameter Validation +| `POLICY-3214 <https://lf-onap.atlassian.net/browse/POLICY-3214>`_ - Change Monitoring UI implementation to use React +| `POLICY-3215 <https://lf-onap.atlassian.net/browse/POLICY-3215>`_ - Update CLAMP Module structure to Multi Module Maven approach +| `POLICY-3221 <https://lf-onap.atlassian.net/browse/POLICY-3221>`_ - wrong lifecycle state information in INFO.yaml for policy/clamp +| `POLICY-3222 <https://lf-onap.atlassian.net/browse/POLICY-3222>`_ - Use existing clamp gui to set the parameters during CL instantiation +| `POLICY-3235 <https://lf-onap.atlassian.net/browse/POLICY-3235>`_ - gui-editor-apex fails to start +| `POLICY-3257 <https://lf-onap.atlassian.net/browse/POLICY-3257>`_ - Update csit test cases to include policy status & statistics api's +| `POLICY-3261 <https://lf-onap.atlassian.net/browse/POLICY-3261>`_ - Rules need a way to release locks +| `POLICY-3262 <https://lf-onap.atlassian.net/browse/POLICY-3262>`_ - Extract more common code from UsecasesEventManager +| `POLICY-3292 <https://lf-onap.atlassian.net/browse/POLICY-3292>`_ - Update the XACML PDP Tutorial docker compose files to point to release Honolulu images +| `POLICY-3298 <https://lf-onap.atlassian.net/browse/POLICY-3298>`_ - Add key names to IndexedXxx factory class toString() methods +| `POLICY-3299 <https://lf-onap.atlassian.net/browse/POLICY-3299>`_ - Merge policy CSITs into docker/csit +| `POLICY-3300 <https://lf-onap.atlassian.net/browse/POLICY-3300>`_ - PACKAGES UPGRADES IN DIRECT DEPENDENCIES FOR ISTANBUL +| `POLICY-3303 <https://lf-onap.atlassian.net/browse/POLICY-3303>`_ - Update the default logback.xml in APEX to log to STDOUT +| `POLICY-3305 <https://lf-onap.atlassian.net/browse/POLICY-3305>`_ - Ensure XACML PDP application/translator methods are extendable +| `POLICY-3306 <https://lf-onap.atlassian.net/browse/POLICY-3306>`_ - Fix issue where apex-pdp test is failing in gitlab +| `POLICY-3307 <https://lf-onap.atlassian.net/browse/POLICY-3307>`_ - Turn off frankfurt CSITs +| `POLICY-3333 <https://lf-onap.atlassian.net/browse/POLICY-3333>`_ - bean validator should use SerializedName +| `POLICY-3336 <https://lf-onap.atlassian.net/browse/POLICY-3336>`_ - APEX CLI/Model: multiple outputs for nextState NULL +| `POLICY-3337 <https://lf-onap.atlassian.net/browse/POLICY-3337>`_ - Move clamp documentation to policy/parent +| `POLICY-3366 <https://lf-onap.atlassian.net/browse/POLICY-3366>`_ - PDP-D: support configuration of overarching DMAAP https flag +| `POLICY-3367 <https://lf-onap.atlassian.net/browse/POLICY-3367>`_ - oom: policy-clamp-create-tables.sql: add IF NOT EXISTS clauses +| `POLICY-3374 <https://lf-onap.atlassian.net/browse/POLICY-3374>`_ - Docker registry should be defined in the parent pom +| `POLICY-3378 <https://lf-onap.atlassian.net/browse/POLICY-3378>`_ - Move groovy scripts to separate/common file +| `POLICY-3382 <https://lf-onap.atlassian.net/browse/POLICY-3382>`_ - Create document for policy chaining in drools-pdp +| `POLICY-3383 <https://lf-onap.atlassian.net/browse/POLICY-3383>`_ - Standardize policy deployment vs undeployment count in PdpStatistics +| `POLICY-3388 <https://lf-onap.atlassian.net/browse/POLICY-3388>`_ - policy/gui merge jobs failing +| `POLICY-3389 <https://lf-onap.atlassian.net/browse/POLICY-3389>`_ - Use lombok annotations instead of hashCode, equals, toString, get, set +| `POLICY-3404 <https://lf-onap.atlassian.net/browse/POLICY-3404>`_ - Rolling DB errors in log output for API, PAP, and DB components +| `POLICY-3419 <https://lf-onap.atlassian.net/browse/POLICY-3419>`_ - Remove operationshistory10 DB +| `POLICY-3450 <https://lf-onap.atlassian.net/browse/POLICY-3450>`_ - PAP should support turning on/off via configuration storing PDP statistics +| `POLICY-3456 <https://lf-onap.atlassian.net/browse/POLICY-3456>`_ - Use new RestClientParameters class instead of BusTopicParams +| `POLICY-3457 <https://lf-onap.atlassian.net/browse/POLICY-3457>`_ - Topic source should not go into fast-fail loop when dmaap is unreachable +| `POLICY-3459 <https://lf-onap.atlassian.net/browse/POLICY-3459>`_ - Document how to turn off collection of PdpStatistics +| `POLICY-3473 <https://lf-onap.atlassian.net/browse/POLICY-3473>`_ - CSIT for xacml doesn't check dmaap msg status +| `POLICY-3474 <https://lf-onap.atlassian.net/browse/POLICY-3474>`_ - Delete extra simulators from policy-models +| `POLICY-3486 <https://lf-onap.atlassian.net/browse/POLICY-3486>`_ - policy-jdk docker image should have at least one up to date image +| `POLICY-3499 <https://lf-onap.atlassian.net/browse/POLICY-3499>`_ - Improve Apex-PDP logs to avoid printing errors for irrelevant events in multiple policy deployment +| `POLICY-3501 <https://lf-onap.atlassian.net/browse/POLICY-3501>`_ - Refactor guard actor +| `POLICY-3511 <https://lf-onap.atlassian.net/browse/POLICY-3511>`_ - Limit statistics record count +| `POLICY-3525 <https://lf-onap.atlassian.net/browse/POLICY-3525>`_ - Improve policy/pap csit automation test cases +| `POLICY-3528 <https://lf-onap.atlassian.net/browse/POLICY-3528>`_ - Update documents & postman collection for pdp statistics api's +| `POLICY-3531 <https://lf-onap.atlassian.net/browse/POLICY-3531>`_ - PDP-X: initialization delays causes liveness checks to be missed under OOM deployment +| `POLICY-3532 <https://lf-onap.atlassian.net/browse/POLICY-3532>`_ - Add Honolulu Maintenance Release notes to read-the-docs +| `POLICY-3539 <https://lf-onap.atlassian.net/browse/POLICY-3539>`_ - Use RestServer from policy/common in apex-pdp +| `POLICY-3547 <https://lf-onap.atlassian.net/browse/POLICY-3547>`_ - METADATA tables for policy/docker db-migrator should be different than counterpart in policy/drools-pdp seed +| `POLICY-3556 <https://lf-onap.atlassian.net/browse/POLICY-3556>`_ - Document xacml REST server limitations +| `POLICY-3605 <https://lf-onap.atlassian.net/browse/POLICY-3605>`_ - Enhance dmaap simulator to support ""/topics" endpoint +| `POLICY-3609 <https://lf-onap.atlassian.net/browse/POLICY-3609>`_ - Add CSIT test case for policy consolidated health check Bug Fixes ~~~~~~~~~ -| `POLICY-2845 <https://jira.onap.org/browse/POLICY-2845>`_ - Policy dockers contain GPLv3 -| `POLICY-3066 <https://jira.onap.org/browse/POLICY-3066>`_ - Stackoverflow error in APEX standalone after changing to onap java image -| `POLICY-3161 <https://jira.onap.org/browse/POLICY-3161>`_ - OOM clamp BE/FE do not start properly when clamp db exists in the cluster -| `POLICY-3174 <https://jira.onap.org/browse/POLICY-3174>`_ - POLICY-APEX log does not include the DATE in STDOUT -| `POLICY-3176 <https://jira.onap.org/browse/POLICY-3176>`_ - POLICY-DROOLS log does not include the DATE in STDOUT -| `POLICY-3177 <https://jira.onap.org/browse/POLICY-3177>`_ - POLICY-PAP log does not include the DATE in STDOUT -| `POLICY-3201 <https://jira.onap.org/browse/POLICY-3201>`_ - fix CRITICAL weak-cryptography issues identified in sonarcloud -| `POLICY-3202 <https://jira.onap.org/browse/POLICY-3202>`_ - PDP-D: no locking feature: service loader not locking the no-lock-manager -| `POLICY-3203 <https://jira.onap.org/browse/POLICY-3203>`_ - Update the PDP deployment in policy window failure -| `POLICY-3204 <https://jira.onap.org/browse/POLICY-3204>`_ - Clamp UI does not accept to deploy policy to PDP -| `POLICY-3205 <https://jira.onap.org/browse/POLICY-3205>`_ - The submit operation in Clamp cannot be achieved successfully -| `POLICY-3225 <https://jira.onap.org/browse/POLICY-3225>`_ - Clamp policy UI does not send right pdp command -| `POLICY-3226 <https://jira.onap.org/browse/POLICY-3226>`_ - Clamp policy UI does 2 parallel queries to policy list -| `POLICY-3248 <https://jira.onap.org/browse/POLICY-3248>`_ - PdpHeartbeats are not getting processed by PAP -| `POLICY-3301 <https://jira.onap.org/browse/POLICY-3301>`_ - Apex Avro Event Schemas - Not support for colon ':' character in field names -| `POLICY-3322 <https://jira.onap.org/browse/POLICY-3322>`_ - gui-editor-apex doesn't contain webapp correctly -| `POLICY-3332 <https://jira.onap.org/browse/POLICY-3332>`_ - Issues around delta policy deployment in APEX -| `POLICY-3369 <https://jira.onap.org/browse/POLICY-3369>`_ - Modify NSSI closed loop not running -| `POLICY-3445 <https://jira.onap.org/browse/POLICY-3445>`_ - Version conflicts in spring boot dependency jars in CLAMP -| `POLICY-3454 <https://jira.onap.org/browse/POLICY-3454>`_ - PDP-D CL APPS: swagger mismatched libraries cause telemetry shell to fail -| `POLICY-3468 <https://jira.onap.org/browse/POLICY-3468>`_ - PDPD-CL APPS: Clean up library transitive dependencies conflicts (jackson version) from new CDS libraries -| `POLICY-3507 <https://jira.onap.org/browse/POLICY-3507>`_ - CDS Operation Policy execution runtime error -| `POLICY-3526 <https://jira.onap.org/browse/POLICY-3526>`_ - OOM start of policy-distribution fails (keyStore values) -| `POLICY-3558 <https://jira.onap.org/browse/POLICY-3558>`_ - Delete Instance Properties if Instantiation is Unitialized -| `POLICY-3600 <https://jira.onap.org/browse/POLICY-3600>`_ - Some REST calls in Clamp GUI do not include pathname -| `POLICY-3601 <https://jira.onap.org/browse/POLICY-3601>`_ - Static web resource paths in gui-editor-apex are incorrect -| `POLICY-3602 <https://jira.onap.org/browse/POLICY-3602>`_ - Context schema table is not populated in Apex Editor -| `POLICY-3603 <https://jira.onap.org/browse/POLICY-3603>`_ - gui-pdp-monitoring broken in gui docker image -| `POLICY-3608 <https://jira.onap.org/browse/POLICY-3608>`_ - LASTUPDATE column in pdp table causing Nullpointer Exception in PAP initialization -| `POLICY-3610 <https://jira.onap.org/browse/POLICY-3610>`_ - PDP-D-APPS: audit and metric logging information is incorrect -| `POLICY-3611 <https://jira.onap.org/browse/POLICY-3611>`_ - "API,PAP: decrease eclipselink verbosity in persistence.xml" -| `POLICY-3625 <https://jira.onap.org/browse/POLICY-3625>`_ - Terminated PDPs are not being removed by PAP -| `POLICY-3637 <https://jira.onap.org/browse/POLICY-3637>`_ - Policy-mariadb connection intermittently fails from PF components -| `POLICY-3639 <https://jira.onap.org/browse/POLICY-3639>`_ - CLAMP_REST_URL environment variable is not needed -| `POLICY-3647 <https://jira.onap.org/browse/POLICY-3647>`_ - Cannot create Instance from Policy GUI -| `POLICY-3649 <https://jira.onap.org/browse/POLICY-3649>`_ - SSL Handshake failure between CL participants and DMaap -| `POLICY-3650 <https://jira.onap.org/browse/POLICY-3650>`_ - Disable apex-editor and pdp-monitoring in gui docker -| `POLICY-3660 <https://jira.onap.org/browse/POLICY-3660>`_ - DB-Migrator job completes even during failed upgrade -| `POLICY-3678 <https://jira.onap.org/browse/POLICY-3678>`_ - K8s participants tests are skipped due to json parsing error. -| `POLICY-3679 <https://jira.onap.org/browse/POLICY-3679>`_ - Modify pdpstatistics to prevent duplicate keys -| `POLICY-3680 <https://jira.onap.org/browse/POLICY-3680>`_ - PDP Monitoring GUI fails to parse JSON from PAP -| `POLICY-3682 <https://jira.onap.org/browse/POLICY-3682>`_ - Unable to list the policies in Policy UI -| `POLICY-3683 <https://jira.onap.org/browse/POLICY-3683>`_ - clamp-fe & policy-gui: useless rolling logs -| `POLICY-3684 <https://jira.onap.org/browse/POLICY-3684>`_ - Unable to select a PDP group & Subgroup when configuring a control loop policy -| `POLICY-3685 <https://jira.onap.org/browse/POLICY-3685>`_ - Fix CL state change issues in runtime and participants -| `POLICY-3686 <https://jira.onap.org/browse/POLICY-3686>`_ - Update Participant Status after Commissioning -| `POLICY-3687 <https://jira.onap.org/browse/POLICY-3687>`_ - Continuous sending CONTROL_LOOP_STATE_CHANGE message -| `POLICY-3688 <https://jira.onap.org/browse/POLICY-3688>`_ - Register participant in ParticipantRegister message -| `POLICY-3689 <https://jira.onap.org/browse/POLICY-3689>`_ - Handle ParticipantRegister -| `POLICY-3691 <https://jira.onap.org/browse/POLICY-3691>`_ - Problems Parsing Service Template -| `POLICY-3695 <https://jira.onap.org/browse/POLICY-3695>`_ - Tosca Constraint "in_range" not supported by policy/models -| `POLICY-3706 <https://jira.onap.org/browse/POLICY-3706>`_ - Telemetry not working in drools-pdp -| `POLICY-3707 <https://jira.onap.org/browse/POLICY-3707>`_ - Cannot delete a loop in design state +| `POLICY-2845 <https://lf-onap.atlassian.net/browse/POLICY-2845>`_ - Policy dockers contain GPLv3 +| `POLICY-3066 <https://lf-onap.atlassian.net/browse/POLICY-3066>`_ - Stackoverflow error in APEX standalone after changing to onap java image +| `POLICY-3161 <https://lf-onap.atlassian.net/browse/POLICY-3161>`_ - OOM clamp BE/FE do not start properly when clamp db exists in the cluster +| `POLICY-3174 <https://lf-onap.atlassian.net/browse/POLICY-3174>`_ - POLICY-APEX log does not include the DATE in STDOUT +| `POLICY-3176 <https://lf-onap.atlassian.net/browse/POLICY-3176>`_ - POLICY-DROOLS log does not include the DATE in STDOUT +| `POLICY-3177 <https://lf-onap.atlassian.net/browse/POLICY-3177>`_ - POLICY-PAP log does not include the DATE in STDOUT +| `POLICY-3201 <https://lf-onap.atlassian.net/browse/POLICY-3201>`_ - fix CRITICAL weak-cryptography issues identified in sonarcloud +| `POLICY-3202 <https://lf-onap.atlassian.net/browse/POLICY-3202>`_ - PDP-D: no locking feature: service loader not locking the no-lock-manager +| `POLICY-3203 <https://lf-onap.atlassian.net/browse/POLICY-3203>`_ - Update the PDP deployment in policy window failure +| `POLICY-3204 <https://lf-onap.atlassian.net/browse/POLICY-3204>`_ - Clamp UI does not accept to deploy policy to PDP +| `POLICY-3205 <https://lf-onap.atlassian.net/browse/POLICY-3205>`_ - The submit operation in Clamp cannot be achieved successfully +| `POLICY-3225 <https://lf-onap.atlassian.net/browse/POLICY-3225>`_ - Clamp policy UI does not send right pdp command +| `POLICY-3226 <https://lf-onap.atlassian.net/browse/POLICY-3226>`_ - Clamp policy UI does 2 parallel queries to policy list +| `POLICY-3248 <https://lf-onap.atlassian.net/browse/POLICY-3248>`_ - PdpHeartbeats are not getting processed by PAP +| `POLICY-3301 <https://lf-onap.atlassian.net/browse/POLICY-3301>`_ - Apex Avro Event Schemas - Not support for colon ':' character in field names +| `POLICY-3322 <https://lf-onap.atlassian.net/browse/POLICY-3322>`_ - gui-editor-apex doesn't contain webapp correctly +| `POLICY-3332 <https://lf-onap.atlassian.net/browse/POLICY-3332>`_ - Issues around delta policy deployment in APEX +| `POLICY-3369 <https://lf-onap.atlassian.net/browse/POLICY-3369>`_ - Modify NSSI closed loop not running +| `POLICY-3445 <https://lf-onap.atlassian.net/browse/POLICY-3445>`_ - Version conflicts in spring boot dependency jars in CLAMP +| `POLICY-3454 <https://lf-onap.atlassian.net/browse/POLICY-3454>`_ - PDP-D CL APPS: swagger mismatched libraries cause telemetry shell to fail +| `POLICY-3468 <https://lf-onap.atlassian.net/browse/POLICY-3468>`_ - PDPD-CL APPS: Clean up library transitive dependencies conflicts (jackson version) from new CDS libraries +| `POLICY-3507 <https://lf-onap.atlassian.net/browse/POLICY-3507>`_ - CDS Operation Policy execution runtime error +| `POLICY-3526 <https://lf-onap.atlassian.net/browse/POLICY-3526>`_ - OOM start of policy-distribution fails (keyStore values) +| `POLICY-3558 <https://lf-onap.atlassian.net/browse/POLICY-3558>`_ - Delete Instance Properties if Instantiation is Unitialized +| `POLICY-3600 <https://lf-onap.atlassian.net/browse/POLICY-3600>`_ - Some REST calls in Clamp GUI do not include pathname +| `POLICY-3601 <https://lf-onap.atlassian.net/browse/POLICY-3601>`_ - Static web resource paths in gui-editor-apex are incorrect +| `POLICY-3602 <https://lf-onap.atlassian.net/browse/POLICY-3602>`_ - Context schema table is not populated in Apex Editor +| `POLICY-3603 <https://lf-onap.atlassian.net/browse/POLICY-3603>`_ - gui-pdp-monitoring broken in gui docker image +| `POLICY-3608 <https://lf-onap.atlassian.net/browse/POLICY-3608>`_ - LASTUPDATE column in pdp table causing Nullpointer Exception in PAP initialization +| `POLICY-3610 <https://lf-onap.atlassian.net/browse/POLICY-3610>`_ - PDP-D-APPS: audit and metric logging information is incorrect +| `POLICY-3611 <https://lf-onap.atlassian.net/browse/POLICY-3611>`_ - "API,PAP: decrease eclipselink verbosity in persistence.xml" +| `POLICY-3625 <https://lf-onap.atlassian.net/browse/POLICY-3625>`_ - Terminated PDPs are not being removed by PAP +| `POLICY-3637 <https://lf-onap.atlassian.net/browse/POLICY-3637>`_ - Policy-mariadb connection intermittently fails from PF components +| `POLICY-3639 <https://lf-onap.atlassian.net/browse/POLICY-3639>`_ - CLAMP_REST_URL environment variable is not needed +| `POLICY-3647 <https://lf-onap.atlassian.net/browse/POLICY-3647>`_ - Cannot create Instance from Policy GUI +| `POLICY-3649 <https://lf-onap.atlassian.net/browse/POLICY-3649>`_ - SSL Handshake failure between CL participants and DMaap +| `POLICY-3650 <https://lf-onap.atlassian.net/browse/POLICY-3650>`_ - Disable apex-editor and pdp-monitoring in gui docker +| `POLICY-3660 <https://lf-onap.atlassian.net/browse/POLICY-3660>`_ - DB-Migrator job completes even during failed upgrade +| `POLICY-3678 <https://lf-onap.atlassian.net/browse/POLICY-3678>`_ - K8s participants tests are skipped due to json parsing error. +| `POLICY-3679 <https://lf-onap.atlassian.net/browse/POLICY-3679>`_ - Modify pdpstatistics to prevent duplicate keys +| `POLICY-3680 <https://lf-onap.atlassian.net/browse/POLICY-3680>`_ - PDP Monitoring GUI fails to parse JSON from PAP +| `POLICY-3682 <https://lf-onap.atlassian.net/browse/POLICY-3682>`_ - Unable to list the policies in Policy UI +| `POLICY-3683 <https://lf-onap.atlassian.net/browse/POLICY-3683>`_ - clamp-fe & policy-gui: useless rolling logs +| `POLICY-3684 <https://lf-onap.atlassian.net/browse/POLICY-3684>`_ - Unable to select a PDP group & Subgroup when configuring a control loop policy +| `POLICY-3685 <https://lf-onap.atlassian.net/browse/POLICY-3685>`_ - Fix CL state change issues in runtime and participants +| `POLICY-3686 <https://lf-onap.atlassian.net/browse/POLICY-3686>`_ - Update Participant Status after Commissioning +| `POLICY-3687 <https://lf-onap.atlassian.net/browse/POLICY-3687>`_ - Continuous sending CONTROL_LOOP_STATE_CHANGE message +| `POLICY-3688 <https://lf-onap.atlassian.net/browse/POLICY-3688>`_ - Register participant in ParticipantRegister message +| `POLICY-3689 <https://lf-onap.atlassian.net/browse/POLICY-3689>`_ - Handle ParticipantRegister +| `POLICY-3691 <https://lf-onap.atlassian.net/browse/POLICY-3691>`_ - Problems Parsing Service Template +| `POLICY-3695 <https://lf-onap.atlassian.net/browse/POLICY-3695>`_ - Tosca Constraint "in_range" not supported by policy/models +| `POLICY-3706 <https://lf-onap.atlassian.net/browse/POLICY-3706>`_ - Telemetry not working in drools-pdp +| `POLICY-3707 <https://lf-onap.atlassian.net/browse/POLICY-3707>`_ - Cannot delete a loop in design state References ========== @@ -1702,7 +1888,7 @@ For more information on the ONAP Istanbul release, please see: #. `ONAP Wiki Page`_ .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -1743,24 +1929,24 @@ Artifacts released: **Bug Fixes and Necessary Enhancements** - * `[POLICY-3062] <https://jira.onap.org/browse/POLICY-3062>`_ - Update the ENTRYPOINT in APEX-PDP Dockerfile - * `[POLICY-3066] <https://jira.onap.org/browse/POLICY-3066>`_ - Stackoverflow error in APEX standalone after changing to onap java image - * `[POLICY-3078] <https://jira.onap.org/browse/POLICY-3078>`_ - Support SSL communication in Kafka IO plugin of Apex-PDP - * `[POLICY-3173] <https://jira.onap.org/browse/POLICY-3173>`_ - APEX-PDP incorrectly reports successful policy deployment to PAP - * `[POLICY-3202] <https://jira.onap.org/browse/POLICY-3202>`_ - PDP-D: no locking feature: service loader not locking the no-lock-manager - * `[POLICY-3227] <https://jira.onap.org/browse/POLICY-3227>`_ - Implementation of context album improvements in apex-pdp - * `[POLICY-3230] <https://jira.onap.org/browse/POLICY-3230>`_ - Make default PDP-D and PDP-D-APPS work out of the box - * `[POLICY-3248] <https://jira.onap.org/browse/POLICY-3248>`_ - PdpHeartbeats are not getting processed by PAP - * `[POLICY-3301] <https://jira.onap.org/browse/POLICY-3301>`_ - Apex Avro Event Schemas - Not support for colon ':' character in field names - * `[POLICY-3305] <https://jira.onap.org/browse/POLICY-3305>`_ - Ensure XACML PDP application/translator methods are extendable - * `[POLICY-3331] <https://jira.onap.org/browse/POLICY-3331>`_ - PAP: should allow for external configuration of groups other than defaultGroup - * `[POLICY-3338] <https://jira.onap.org/browse/POLICY-3338>`_ - Upgrade CDS dependency to the latest version - * `[POLICY-3366] <https://jira.onap.org/browse/POLICY-3366>`_ - PDP-D: support configuration of overarching DMAAP https flag - * `[POLICY-3450] <https://jira.onap.org/browse/POLICY-3450>`_ - PAP should support turning on/off via configuration storing PDP statistics - * `[POLICY-3454] <https://jira.onap.org/browse/POLICY-3454>`_ - PDP-D CL APPS: swagger mismatched libraries cause telemetry shell to fail - * `[POLICY-3485] <https://jira.onap.org/browse/POLICY-3485>`_ - Limit statistics record count - * `[POLICY-3507] <https://jira.onap.org/browse/POLICY-3507>`_ - CDS Operation Policy execution runtime error - * `[POLICY-3516] <https://jira.onap.org/browse/POLICY-3516>`_ - Upgrade CDS dependency to the 1.1.5 version + * `[POLICY-3062] <https://lf-onap.atlassian.net/browse/POLICY-3062>`_ - Update the ENTRYPOINT in APEX-PDP Dockerfile + * `[POLICY-3066] <https://lf-onap.atlassian.net/browse/POLICY-3066>`_ - Stackoverflow error in APEX standalone after changing to onap java image + * `[POLICY-3078] <https://lf-onap.atlassian.net/browse/POLICY-3078>`_ - Support SSL communication in Kafka IO plugin of Apex-PDP + * `[POLICY-3173] <https://lf-onap.atlassian.net/browse/POLICY-3173>`_ - APEX-PDP incorrectly reports successful policy deployment to PAP + * `[POLICY-3202] <https://lf-onap.atlassian.net/browse/POLICY-3202>`_ - PDP-D: no locking feature: service loader not locking the no-lock-manager + * `[POLICY-3227] <https://lf-onap.atlassian.net/browse/POLICY-3227>`_ - Implementation of context album improvements in apex-pdp + * `[POLICY-3230] <https://lf-onap.atlassian.net/browse/POLICY-3230>`_ - Make default PDP-D and PDP-D-APPS work out of the box + * `[POLICY-3248] <https://lf-onap.atlassian.net/browse/POLICY-3248>`_ - PdpHeartbeats are not getting processed by PAP + * `[POLICY-3301] <https://lf-onap.atlassian.net/browse/POLICY-3301>`_ - Apex Avro Event Schemas - Not support for colon ':' character in field names + * `[POLICY-3305] <https://lf-onap.atlassian.net/browse/POLICY-3305>`_ - Ensure XACML PDP application/translator methods are extendable + * `[POLICY-3331] <https://lf-onap.atlassian.net/browse/POLICY-3331>`_ - PAP: should allow for external configuration of groups other than defaultGroup + * `[POLICY-3338] <https://lf-onap.atlassian.net/browse/POLICY-3338>`_ - Upgrade CDS dependency to the latest version + * `[POLICY-3366] <https://lf-onap.atlassian.net/browse/POLICY-3366>`_ - PDP-D: support configuration of overarching DMAAP https flag + * `[POLICY-3450] <https://lf-onap.atlassian.net/browse/POLICY-3450>`_ - PAP should support turning on/off via configuration storing PDP statistics + * `[POLICY-3454] <https://lf-onap.atlassian.net/browse/POLICY-3454>`_ - PDP-D CL APPS: swagger mismatched libraries cause telemetry shell to fail + * `[POLICY-3485] <https://lf-onap.atlassian.net/browse/POLICY-3485>`_ - Limit statistics record count + * `[POLICY-3507] <https://lf-onap.atlassian.net/browse/POLICY-3507>`_ - CDS Operation Policy execution runtime error + * `[POLICY-3516] <https://lf-onap.atlassian.net/browse/POLICY-3516>`_ - Upgrade CDS dependency to the 1.1.5 version Known Limitations @@ -1852,12 +2038,12 @@ Known Vulnerabilities Workarounds ~~~~~~~~~~~ -* `POLICY-2998 <https://jira.onap.org/browse/POLICY-2998>`_ - Provide a script to periodically purge the statistics table +* `POLICY-2998 <https://lf-onap.atlassian.net/browse/POLICY-2998>`_ - Provide a script to periodically purge the statistics table Security Notes ============== -* `POLICY-3005 <https://jira.onap.org/browse/POLICY-3005>`_ - Bump direct dependency versions +* `POLICY-3005 <https://lf-onap.atlassian.net/browse/POLICY-3005>`_ - Bump direct dependency versions - Upgrade org.onap.dmaap.messagerouter.dmaapclient to 1.1.12 - Upgrade org.eclipse.persistence to 2.7.8 - Upgrade org.glassfish.jersey.containers to 2.33 @@ -1874,10 +2060,10 @@ Security Notes - Upgrade io.cucumber to 6.9.1 - Upgrade org.apache.commons:commons-lang3 to 3.11 - Upgrade commons-io to 2.8.0 -* `POLICY-2943 <https://jira.onap.org/browse/POLICY-2943>`_ - Review license scan issues +* `POLICY-2943 <https://lf-onap.atlassian.net/browse/POLICY-2943>`_ - Review license scan issues - Upgrade com.hazelcast to 4.1.1 - Upgrade io.netty to 4.1.58.Final -* `POLICY-2936 <https://jira.onap.org/browse/POLICY-2936>`_ - Upgrade to latest version of CDS API +* `POLICY-2936 <https://lf-onap.atlassian.net/browse/POLICY-2936>`_ - Upgrade to latest version of CDS API - Upgrade io.grpc to 1.35.0 - Upgrade com.google.protobuf to 3.14.0 @@ -1894,7 +2080,7 @@ For more information on the ONAP Honolulu release, please see: .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -1982,18 +2168,18 @@ Please see the Known Vulnerabilities ~~~~~~~~~~~~~~~~~~~~~ -* `POLICY-2463 <https://jira.onap.org/browse/POLICY-2463>`_ - In APEX Policy javascript task logic, JSON.stringify causing stackoverflow exceptions +* `POLICY-2463 <https://lf-onap.atlassian.net/browse/POLICY-2463>`_ - In APEX Policy javascript task logic, JSON.stringify causing stackoverflow exceptions Workarounds ~~~~~~~~~~~ -* `POLICY-2463 <https://jira.onap.org/browse/POLICY-2463>`_ - Use the stringify method of the execution context +* `POLICY-2463 <https://lf-onap.atlassian.net/browse/POLICY-2463>`_ - Use the stringify method of the execution context Security Notes ============== -* `POLICY-2878 <https://jira.onap.org/browse/POLICY-2878>`_ - Dependency upgrades +* `POLICY-2878 <https://lf-onap.atlassian.net/browse/POLICY-2878>`_ - Dependency upgrades - Upgrade com.fasterxml.jackson to 2.11.1 -* `POLICY-2387 <https://jira.onap.org/browse/POLICY-2387>`_ - Dependency upgrades +* `POLICY-2387 <https://lf-onap.atlassian.net/browse/POLICY-2387>`_ - Dependency upgrades - Upgrade org.json to 20200518 - Upgrade com.google.re2j to 1.4 - Upgrade com.thoughtworks.xstream to 1.4.12 @@ -2009,10 +2195,10 @@ Security Notes - Upgrade org.mockito to 3.3.3 - Upgrade org.awaitility to 4.0.3 - Upgrade org.onap.aaf.authz to 2.1.21 -* `POLICY-2668 <https://jira.onap.org/browse/POLICY-2668>`_ - Dependency upgrades +* `POLICY-2668 <https://lf-onap.atlassian.net/browse/POLICY-2668>`_ - Dependency upgrades - Upgrade org.java-websocket to 1.5.1 -* `POLICY-2623 <https://jira.onap.org/browse/POLICY-2623>`_ - Remove log4j dependency -* `POLICY-1996 <https://jira.onap.org/browse/POLICY-1996>`_ - Dependency upgrades +* `POLICY-2623 <https://lf-onap.atlassian.net/browse/POLICY-2623>`_ - Remove log4j dependency +* `POLICY-1996 <https://lf-onap.atlassian.net/browse/POLICY-1996>`_ - Dependency upgrades - Upgrade org.onap.dmaap.messagerouter.dmaapclient to 1.1.11 @@ -2028,7 +2214,7 @@ For more information on the ONAP Guilin release, please see: .. _`ONAP Home Page`: https://www.onap.org -.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Wiki Page`: https://lf-onap.atlassian.net/wiki .. _`ONAP Documentation`: https://docs.onap.org .. _`ONAP Release Downloads`: https://git.onap.org @@ -2061,7 +2247,7 @@ Artifacts released: **Bug Fixes** - * `[POLICY-2704] <https://jira.onap.org/browse/POLICY-2704>`_ - Legacy PDP-X and PAP stuck in PodIntializing + * `[POLICY-2704] <https://lf-onap.atlassian.net/browse/POLICY-2704>`_ - Legacy PDP-X and PAP stuck in PodIntializing **Security Notes** @@ -2069,7 +2255,7 @@ Artifacts released: *Fixed Security Issues* - * `[POLICY-2678] <https://jira.onap.org/browse/POLICY-2678>`_ - policy/engine tomcat upgrade for CVE-2020-11996 + * `[POLICY-2678] <https://lf-onap.atlassian.net/browse/POLICY-2678>`_ - policy/engine tomcat upgrade for CVE-2020-11996 Version: 6.0.0 @@ -2173,7 +2359,7 @@ POLICY-API - If there is any change in the request body, then that should be a new version. If any change is posted without a version change, then 406 error response is returned. * Known versioning issues are there in Policy Types handling. - - https://jira.onap.org/browse/POLICY-2377 covers the versioning issues in Policy. Basically, multiple versions of a Policy Type cannot be handled in TOSCA. So, in Frankfurt, the latest version of the policy type is examined. This will be further looked into in Guilin. + - https://lf-onap.atlassian.net/browse/POLICY-2377 covers the versioning issues in Policy. Basically, multiple versions of a Policy Type cannot be handled in TOSCA. So, in Frankfurt, the latest version of the policy type is examined. This will be further looked into in Guilin. * Cascaded GET of PolicyTypes and Policies - Fetching/GET PolicyType now returns all of the referenced/parent policyTypes and dataTypes as well. @@ -2200,7 +2386,7 @@ POLICY-APEX-PDP * Changed the JavaScript executor from Nashorn to Rhino as part of Java 11 upgrade. - There are minor changes in the JavaScript task logic files associated with this Rhino migration. An example for this change can be seen here: https://gerrit.onap.org/r/c/policy/apex-pdp/+/103546/2/examples/examples-onap-bbs/src/main/resources/logic/SdncResourceUpdateTask.js - - There is a known issue in Rhino javascript related to the usage of JSON.stringify. This is captured in this JIRA https://jira.onap.org/browse/POLICY-2463. + - There is a known issue in Rhino javascript related to the usage of JSON.stringify. This is captured in this JIRA https://lf-onap.atlassian.net/browse/POLICY-2463. * APEX supports multiple policy deployment in Frankfurt. - Up through El Alto APEX-PDP had the capability to take in only a single ToscaPolicy. When PAP sends a list of Tosca Policies in PdpUpdate, only the first one is taken and only that single Policy is deployed in APEX. This is fixed in Frankfurt. Now, APEX can deploy a list of Tosca Policies altogether into the engine. @@ -2287,19 +2473,19 @@ Please see the Known Vulnerabilities ~~~~~~~~~~~~~~~~~~~~~ -* `POLICY-2463 <https://jira.onap.org/browse/POLICY-2463>`_ - In APEX Policy javascript task logic, JSON.stringify causing stackoverflow exceptions -* `POLICY-2487 <https://jira.onap.org/browse/POLICY-2487>`_ - policy/api hangs in loop if preload policy does not exist +* `POLICY-2463 <https://lf-onap.atlassian.net/browse/POLICY-2463>`_ - In APEX Policy javascript task logic, JSON.stringify causing stackoverflow exceptions +* `POLICY-2487 <https://lf-onap.atlassian.net/browse/POLICY-2487>`_ - policy/api hangs in loop if preload policy does not exist Workarounds ~~~~~~~~~~~ -* `POLICY-2463 <https://jira.onap.org/browse/POLICY-2463>`_ - Parse incoming object using JSON.Parse() or cast the object to a String +* `POLICY-2463 <https://lf-onap.atlassian.net/browse/POLICY-2463>`_ - Parse incoming object using JSON.Parse() or cast the object to a String Security Notes ============== -* `POLICY-2221 <https://jira.onap.org/browse/POLICY-2221>`_ - Password removal from helm charts -* `POLICY-2064 <https://jira.onap.org/browse/POLICY-2064>`_ - Allow overriding of keystore and truststore in policy helm charts -* `POLICY-2381 <https://jira.onap.org/browse/POLICY-2381>`_ - Dependency upgrades +* `POLICY-2221 <https://lf-onap.atlassian.net/browse/POLICY-2221>`_ - Password removal from helm charts +* `POLICY-2064 <https://lf-onap.atlassian.net/browse/POLICY-2064>`_ - Allow overriding of keystore and truststore in policy helm charts +* `POLICY-2381 <https://lf-onap.atlassian.net/browse/POLICY-2381>`_ - Dependency upgrades - Upgrade drools 7.33.0 - Upgrade jquery to 3.4.1 in jquery-ui - Upgrade snakeyaml to 1.26 @@ -2342,12 +2528,12 @@ Artifacts released: **Bug Fixes** - * `[PORTAL-760] <https://jira.onap.org/browse/PORTAL-760>`_ - Access to Policy portal is impossible - * `[POLICY-2107] <https://jira.onap.org/browse/POLICY-2107>`_ - policy/distribution license issue in resource needs to be removed - * `[POLICY-2169] <https://jira.onap.org/browse/POLICY-2169>`_ - SDC client interface change caused compile error in policy distribution - * `[POLICY-2171] <https://jira.onap.org/browse/POLICY-2171>`_ - Upgrade elalto branch models and drools-applications - * `[POLICY-1509] <https://jira.onap.org/browse/POLICY-1509>`_ - Investigate Apex org.python.jython-standalone.2.7.1 - * `[POLICY-2062] <https://jira.onap.org/browse/POLICY-2062>`_ - APEX PDP logs > 4G filled local storage + * `[PORTAL-760] <https://lf-onap.atlassian.net/browse/PORTAL-760>`_ - Access to Policy portal is impossible + * `[POLICY-2107] <https://lf-onap.atlassian.net/browse/POLICY-2107>`_ - policy/distribution license issue in resource needs to be removed + * `[POLICY-2169] <https://lf-onap.atlassian.net/browse/POLICY-2169>`_ - SDC client interface change caused compile error in policy distribution + * `[POLICY-2171] <https://lf-onap.atlassian.net/browse/POLICY-2171>`_ - Upgrade elalto branch models and drools-applications + * `[POLICY-1509] <https://lf-onap.atlassian.net/browse/POLICY-1509>`_ - Investigate Apex org.python.jython-standalone.2.7.1 + * `[POLICY-2062] <https://lf-onap.atlassian.net/browse/POLICY-2062>`_ - APEX PDP logs > 4G filled local storage **Security Notes** @@ -2355,7 +2541,7 @@ Artifacts released: *Fixed Security Issues* - * `[POLICY-2475] <https://jira.onap.org/browse/POLICY-2475>`_ - Update El Alto component certificates + * `[POLICY-2475] <https://lf-onap.atlassian.net/browse/POLICY-2475>`_ - Update El Alto component certificates Version: 5.0.1 -------------- @@ -2438,28 +2624,28 @@ The El Alto release for POLICY delivered the following Epics. For a full list of The following bug fixes have been deployed with this release: - * `[POLICY-1671] <https://jira.onap.org/browse/POLICY-1671>`_ - policy/engine JUnit tests now take over 30 minutes to run - * `[POLICY-1725] <https://jira.onap.org/browse/POLICY-1725>`_ - XACML PDP returns 500 vs 400 for bad syntax JSON - * `[POLICY-1793] <https://jira.onap.org/browse/POLICY-1793>`_ - API|MODELS: Retrieving Legacy Operational Policy as a Tosca Policy with wrong version - * `[POLICY-1795] <https://jira.onap.org/browse/POLICY-1795>`_ - PAP: bounced apex and xacml pdps show deleted instance in pdp status through APIs. - * `[POLICY-1800] <https://jira.onap.org/browse/POLICY-1800>`_ - API|PAP components use different version formats - * `[POLICY-1802] <https://jira.onap.org/browse/POLICY-1802>`_ - Apex-pdp: context album is mandatory for policy model to compile - * `[POLICY-1803] <https://jira.onap.org/browse/POLICY-1803>`_ - PAP should undeploy policies when subgroup is deleted - * `[POLICY-1807] <https://jira.onap.org/browse/POLICY-1807>`_ - Latest version is always returned when using the endpoint to retrieve all versions of a particular policy - * `[POLICY-1808] <https://jira.onap.org/browse/POLICY-1808>`_ - API|PAP|PDP-X [new] should publish docker images with the following tag X.Y-SNAPSHOT-latest - * `[POLICY-1810] <https://jira.onap.org/browse/POLICY-1810>`_ - API: support "../deployed" REST API (URLs) for legacy policies - * `[POLICY-1811] <https://jira.onap.org/browse/POLICY-1811>`_ - The endpoint of retrieving the latest version of TOSCA policy does not return the latest one, especially when there are double-digit versions - * `[POLICY-1818] <https://jira.onap.org/browse/POLICY-1818>`_ - APEX does not allow arbitrary Kafka parameters to be specified - * `[POLICY-1838] <https://jira.onap.org/browse/POLICY-1838>`_ - Drools-pdp error log is missing data in ErrorDescription field - * `[POLICY-1839] <https://jira.onap.org/browse/POLICY-1839>`_ - Policy Model currently needs to be escaped - * `[POLICY-1843] <https://jira.onap.org/browse/POLICY-1843>`_ - Decision API not returning monitoring policies when calling api with policy-type - * `[POLICY-1844] <https://jira.onap.org/browse/POLICY-1844>`_ - XACML PDP does not update policy statistics - * `[POLICY-1858] <https://jira.onap.org/browse/POLICY-1858>`_ - Usecase DRL - named query should not be invoked - * `[POLICY-1859] <https://jira.onap.org/browse/POLICY-1859>`_ - Drools rules should not timeout when given timeout=0 - should be treated as infinite - * `[POLICY-1872] <https://jira.onap.org/browse/POLICY-1872>`_ - brmsgw fails building a jar - trafficgenerator dependency does not exist - * `[POLICY-2047] <https://jira.onap.org/browse/POLICY-2047>`_ - TOSCA Policy Types should be map not a list - * `[POLICY-2060] <https://jira.onap.org/browse/POLICY-2060>`_ - ToscaProperties object is missing metadata field - * `[POLICY-2156] <https://jira.onap.org/browse/POLICY-2156>`_ - missing field in create VF module request to SO + * `[POLICY-1671] <https://lf-onap.atlassian.net/browse/POLICY-1671>`_ - policy/engine JUnit tests now take over 30 minutes to run + * `[POLICY-1725] <https://lf-onap.atlassian.net/browse/POLICY-1725>`_ - XACML PDP returns 500 vs 400 for bad syntax JSON + * `[POLICY-1793] <https://lf-onap.atlassian.net/browse/POLICY-1793>`_ - API|MODELS: Retrieving Legacy Operational Policy as a Tosca Policy with wrong version + * `[POLICY-1795] <https://lf-onap.atlassian.net/browse/POLICY-1795>`_ - PAP: bounced apex and xacml pdps show deleted instance in pdp status through APIs. + * `[POLICY-1800] <https://lf-onap.atlassian.net/browse/POLICY-1800>`_ - API|PAP components use different version formats + * `[POLICY-1802] <https://lf-onap.atlassian.net/browse/POLICY-1802>`_ - Apex-pdp: context album is mandatory for policy model to compile + * `[POLICY-1803] <https://lf-onap.atlassian.net/browse/POLICY-1803>`_ - PAP should undeploy policies when subgroup is deleted + * `[POLICY-1807] <https://lf-onap.atlassian.net/browse/POLICY-1807>`_ - Latest version is always returned when using the endpoint to retrieve all versions of a particular policy + * `[POLICY-1808] <https://lf-onap.atlassian.net/browse/POLICY-1808>`_ - API|PAP|PDP-X [new] should publish docker images with the following tag X.Y-SNAPSHOT-latest + * `[POLICY-1810] <https://lf-onap.atlassian.net/browse/POLICY-1810>`_ - API: support "../deployed" REST API (URLs) for legacy policies + * `[POLICY-1811] <https://lf-onap.atlassian.net/browse/POLICY-1811>`_ - The endpoint of retrieving the latest version of TOSCA policy does not return the latest one, especially when there are double-digit versions + * `[POLICY-1818] <https://lf-onap.atlassian.net/browse/POLICY-1818>`_ - APEX does not allow arbitrary Kafka parameters to be specified + * `[POLICY-1838] <https://lf-onap.atlassian.net/browse/POLICY-1838>`_ - Drools-pdp error log is missing data in ErrorDescription field + * `[POLICY-1839] <https://lf-onap.atlassian.net/browse/POLICY-1839>`_ - Policy Model currently needs to be escaped + * `[POLICY-1843] <https://lf-onap.atlassian.net/browse/POLICY-1843>`_ - Decision API not returning monitoring policies when calling api with policy-type + * `[POLICY-1844] <https://lf-onap.atlassian.net/browse/POLICY-1844>`_ - XACML PDP does not update policy statistics + * `[POLICY-1858] <https://lf-onap.atlassian.net/browse/POLICY-1858>`_ - Usecase DRL - named query should not be invoked + * `[POLICY-1859] <https://lf-onap.atlassian.net/browse/POLICY-1859>`_ - Drools rules should not timeout when given timeout=0 - should be treated as infinite + * `[POLICY-1872] <https://lf-onap.atlassian.net/browse/POLICY-1872>`_ - brmsgw fails building a jar - trafficgenerator dependency does not exist + * `[POLICY-2047] <https://lf-onap.atlassian.net/browse/POLICY-2047>`_ - TOSCA Policy Types should be map not a list + * `[POLICY-2060] <https://lf-onap.atlassian.net/browse/POLICY-2060>`_ - ToscaProperties object is missing metadata field + * `[POLICY-2156] <https://lf-onap.atlassian.net/browse/POLICY-2156>`_ - missing field in create VF module request to SO **Security Notes** @@ -2467,41 +2653,42 @@ The following bug fixes have been deployed with this release: *Fixed Security Issues* - * `[POLICY-2115] <https://jira.onap.org/browse/POLICY-2115>`_ - Upgrade org.jgroups : jgroups : 4.0.12.Final - * `[POLICY-2084] <https://jira.onap.org/browse/POLICY-2084>`_ - Investigate pip (py2.py3-none-any) 9.0.1 (.whl) in apex-pdp - * `[POLICY-2072] <https://jira.onap.org/browse/POLICY-2072>`_ - Upgrade io.netty : netty-codec-http2 and netty-common to 4.1.39.Final - * `[POLICY-2005] <https://jira.onap.org/browse/POLICY-2005>`_ - Upgrade elastic search to 6.8.2 - * `[POLICY-2001] <https://jira.onap.org/browse/POLICY-2001>`_ - Upgrade com.thoughtworks.xstream to 1.4.11.1 - * `[POLICY-2000] <https://jira.onap.org/browse/POLICY-2000>`_ - Upgrade oparent 2.1.0-SNAPSHOT - to pull in jetty server to 9.4.20.v20190813 - * `[POLICY-1999] <https://jira.onap.org/browse/POLICY-1999>`_ - Upgrade to httpcomponents httpclient 4.5.9 - * `[POLICY-1598] <https://jira.onap.org/browse/POLICY-1598>`_ - mariadb container is outdated - * `[POLICY-1597] <https://jira.onap.org/browse/POLICY-1597>`_ - nexus container is outdated + * `[POLICY-2115] <https://lf-onap.atlassian.net/browse/POLICY-2115>`_ - Upgrade org.jgroups : jgroups : 4.0.12.Final + * `[POLICY-2084] <https://lf-onap.atlassian.net/browse/POLICY-2084>`_ - Investigate pip (py2.py3-none-any) 9.0.1 (.whl) in apex-pdp + * `[POLICY-2072] <https://lf-onap.atlassian.net/browse/POLICY-2072>`_ - Upgrade io.netty : netty-codec-http2 and netty-common to 4.1.39.Final + * `[POLICY-2005] <https://lf-onap.atlassian.net/browse/POLICY-2005>`_ - Upgrade elastic search to 6.8.2 + * `[POLICY-2001] <https://lf-onap.atlassian.net/browse/POLICY-2001>`_ - Upgrade com.thoughtworks.xstream to 1.4.11.1 + * `[POLICY-2000] <https://lf-onap.atlassian.net/browse/POLICY-2000>`_ - Upgrade oparent 2.1.0-SNAPSHOT - to pull in jetty server to 9.4.20.v20190813 + * `[POLICY-1999] <https://lf-onap.atlassian.net/browse/POLICY-1999>`_ - Upgrade to httpcomponents httpclient 4.5.9 + * `[POLICY-1598] <https://lf-onap.atlassian.net/browse/POLICY-1598>`_ - mariadb container is outdated + * `[POLICY-1597] <https://lf-onap.atlassian.net/browse/POLICY-1597>`_ - nexus container is outdated *Known Security Issues* *Known Vulnerabilities in Used Modules* -POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open Critical security vulnerabilities and their risk assessment have been documented as part of the `project (El Alto Release) <https://wiki.onap.org/pages/viewpage.action?pageId=68541992>`_. +POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open +Critical security vulnerabilities and their risk assessment have been documented as part of the project (El Alto Release). Quick Links: - `POLICY project page`_ - `Passing Badge information for POLICY`_ - - `Project Vulnerability Review Table for POLICY (El Alto Release) <https://wiki.onap.org/pages/viewpage.action?pageId=68541992>`_ **Known Issues** The following known issues will be addressed in a future release: - * `[POLICY-1276] <https://jira.onap.org/browse/POLICY-1276>`_ - JRuby interpreter shutdown fails on second and subsequent runs - * `[POLICY-1291] <https://jira.onap.org/browse/POLICY-1291>`_ - Maven Error when building Apex documentation in Windows - * `[POLICY-1578] <https://jira.onap.org/browse/POLICY-1578>`_ - PAP pushPolicies.sh in startup fails due to race condition in some environments - * `[POLICY-1832] <https://jira.onap.org/browse/POLICY-1832>`_ - API|PAP: data race condition seem to appear sometimes when creating and deploying policy - * `[POLICY-2103] <https://jira.onap.org/browse/POLICY-2103>`_ - policy/distribution may need to re-synch if SDC gets reinstalled - * `[POLICY-2062] <https://jira.onap.org/browse/POLICY-2062>`_ - APEX PDP logs > 4G filled local storage - * `[POLICY-2080] <https://jira.onap.org/browse/POLICY-2080>`_ - drools-pdp JUnit fails intermittently in feature-active-standby-management - * `[POLICY-2111] <https://jira.onap.org/browse/POLICY-2111>`_ - PDP-D APPS: AAF Cadi conflicts with Aether libraries - * `[POLICY-2158] <https://jira.onap.org/browse/POLICY-2158>`_ - PAP loses synchronization with PDPs - * `[POLICY-2159] <https://jira.onap.org/browse/POLICY-2159>`_ - PAP console (legacy): cannot edit policies with GUI + * `[POLICY-1276] <https://lf-onap.atlassian.net/browse/POLICY-1276>`_ - JRuby interpreter shutdown fails on second and subsequent runs + * `[POLICY-1291] <https://lf-onap.atlassian.net/browse/POLICY-1291>`_ - Maven Error when building Apex documentation in Windows + * `[POLICY-1578] <https://lf-onap.atlassian.net/browse/POLICY-1578>`_ - PAP pushPolicies.sh in startup fails due to race condition in some environments + * `[POLICY-1832] <https://lf-onap.atlassian.net/browse/POLICY-1832>`_ - API|PAP: data race condition seem to appear sometimes when creating and deploying policy + * `[POLICY-2103] <https://lf-onap.atlassian.net/browse/POLICY-2103>`_ - policy/distribution may need to re-synch if SDC gets reinstalled + * `[POLICY-2062] <https://lf-onap.atlassian.net/browse/POLICY-2062>`_ - APEX PDP logs > 4G filled local storage + * `[POLICY-2080] <https://lf-onap.atlassian.net/browse/POLICY-2080>`_ - drools-pdp JUnit fails intermittently in feature-active-standby-management + * `[POLICY-2111] <https://lf-onap.atlassian.net/browse/POLICY-2111>`_ - PDP-D APPS: AAF Cadi conflicts with Aether libraries + * `[POLICY-2158] <https://lf-onap.atlassian.net/browse/POLICY-2158>`_ - PAP loses synchronization with PDPs + * `[POLICY-2159] <https://lf-onap.atlassian.net/browse/POLICY-2159>`_ - PAP console (legacy): cannot edit policies with GUI .. ========================== @@ -2633,53 +2820,56 @@ The Dublin release for POLICY delivered the following Epics. For a full list of The following bug fixes have been deployed with this release: - * `[POLICY-1241] <https://jira.onap.org/browse/POLICY-1241>`_ - Test failure in drools-pdp if JAVA_HOME is not set - * `[POLICY-1289] <https://jira.onap.org/browse/POLICY-1289>`_ - Apex only considers 200 response codes as successful result codes - * `[POLICY-1437] <https://jira.onap.org/browse/POLICY-1437>`_ - Fix issues in FileSystemReceptionHandler of policy-distribution component - * `[POLICY-1501] <https://jira.onap.org/browse/POLICY-1501>`_ - policy-engine JUnit tests are not independent - * `[POLICY-1627] <https://jira.onap.org/browse/POLICY-1627>`_ - APEX does not support specification of a partitioner class for Kafka + * `[POLICY-1241] <https://lf-onap.atlassian.net/browse/POLICY-1241>`_ - Test failure in drools-pdp if JAVA_HOME is not set + * `[POLICY-1289] <https://lf-onap.atlassian.net/browse/POLICY-1289>`_ - Apex only considers 200 response codes as successful result codes + * `[POLICY-1437] <https://lf-onap.atlassian.net/browse/POLICY-1437>`_ - Fix issues in FileSystemReceptionHandler of policy-distribution component + * `[POLICY-1501] <https://lf-onap.atlassian.net/browse/POLICY-1501>`_ - policy-engine JUnit tests are not independent + * `[POLICY-1627] <https://lf-onap.atlassian.net/browse/POLICY-1627>`_ - APEX does not support specification of a partitioner class for Kafka **Security Notes** *Fixed Security Issues* - * `[OJSI-117] <https://jira.onap.org/browse/OJSI-117>`_ - In default deployment POLICY (nexus) exposes HTTP port 30236 outside of cluster. - * `[OJSI-157] <https://jira.onap.org/browse/OJSI-157>`_ - In default deployment POLICY (policy-api) exposes HTTP port 30240 outside of cluster. - * `[OJSI-118] <https://jira.onap.org/browse/OJSI-118>`_ - In default deployment POLICY (policy-apex-pdp) exposes HTTP port 30237 outside of cluster. - * `[OJSI-184] <https://jira.onap.org/browse/OJSI-184>`_ - In default deployment POLICY (brmsgw) exposes HTTP port 30216 outside of cluster. + * `[OJSI-117] <https://lf-onap.atlassian.net/browse/OJSI-117>`_ - In default deployment POLICY (nexus) exposes HTTP port 30236 outside of cluster. + * `[OJSI-157] <https://lf-onap.atlassian.net/browse/OJSI-157>`_ - In default deployment POLICY (policy-api) exposes HTTP port 30240 outside of cluster. + * `[OJSI-118] <https://lf-onap.atlassian.net/browse/OJSI-118>`_ - In default deployment POLICY (policy-apex-pdp) exposes HTTP port 30237 outside of cluster. + * `[OJSI-184] <https://lf-onap.atlassian.net/browse/OJSI-184>`_ - In default deployment POLICY (brmsgw) exposes HTTP port 30216 outside of cluster. *Known Security Issues* *Known Vulnerabilities in Used Modules* -POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open Critical security vulnerabilities and their risk assessment have been documented as part of the `project (Dublin Release) <https://wiki.onap.org/pages/viewpage.action?pageId=54723253>`_. +POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open +Critical security vulnerabilities and their risk assessment have been documented as part of the +`project (Dublin Release) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374521/Dublin+Policy+Security+Vulnerability+Report>`_. Quick Links: - `POLICY project page`_ - `Passing Badge information for POLICY`_ - - `Project Vulnerability Review Table for POLICY (Dublin Release) <https://wiki.onap.org/pages/viewpage.action?pageId=54723253>`_ + - `Project Vulnerability Review Table for POLICY (Dublin Release) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16374521/Dublin+Policy+Security+Vulnerability+Report>`_ **Known Issues** The following known issues will be addressed in a future release: - * `[POLICY-1795] - <https://jira.onap.org/browse/POLICY-1795>`_ PAP: bounced apex and xacml pdps show deleted instance in pdp status through APIs. - * `[POLICY-1810] - <https://jira.onap.org/browse/POLICY-1810>`_ API: ensure that the REST APISs (URLs) are supported and consistent regardless the type of policy: operational, guard, tosca-compliant. - * `[POLICY-1277] - <https://jira.onap.org/browse/POLICY-1277>`_ policy config takes too long time to become retrievable in PDP - * `[POLICY-1378] - <https://jira.onap.org/browse/POLICY-1378>`_ add support to append value into policyScope while one policy could be used by several services - * `[POLICY-1650] - <https://jira.onap.org/browse/POLICY-1650>`_ Policy UI doesn't show left menu or any content - * `[POLICY-1671] - <https://jira.onap.org/browse/POLICY-1671>`_ policy/engine JUnit tests now take over 30 minutes to run - * `[POLICY-1725] - <https://jira.onap.org/browse/POLICY-1725>`_ XACML PDP returns 500 vs 400 for bad syntax JSON - * `[POLICY-1793] - <https://jira.onap.org/browse/POLICY-1793>`_ API|MODELS: Retrieving Legacy Operational Policy as a Tosca Policy with wrong version - * `[POLICY-1800] - <https://jira.onap.org/browse/POLICY-1800>`_ API|PAP components use different version formats - * `[POLICY-1802] - <https://jira.onap.org/browse/POLICY-1802>`_ Apex-pdp: context album is mandatory for policy model to compile - * `[POLICY-1808] - <https://jira.onap.org/browse/POLICY-1808>`_ API|PAP|PDP-X [new] should publish docker images with the following tag X.Y-SNAPSHOT-latest - * `[POLICY-1818] - <https://jira.onap.org/browse/POLICY-1818>`_ APEX does not allow arbitrary Kafka parameters to be specified - * `[POLICY-1276] - <https://jira.onap.org/browse/POLICY-1276>`_ JRuby interpreter shutdown fails on second and subsequent runs - * `[POLICY-1803] - <https://jira.onap.org/browse/POLICY-1803>`_ PAP should undeploy policies when subgroup is deleted - * `[POLICY-1291] - <https://jira.onap.org/browse/POLICY-1291>`_ Maven Error when building Apex documentation in Windows - * `[POLICY-1872] - <https://jira.onap.org/browse/POLICY-1872>`_ brmsgw fails building a jar - trafficgenerator dependency does not exist + * `[POLICY-1795] - <https://lf-onap.atlassian.net/browse/POLICY-1795>`_ PAP: bounced apex and xacml pdps show deleted instance in pdp status through APIs. + * `[POLICY-1810] - <https://lf-onap.atlassian.net/browse/POLICY-1810>`_ API: ensure that the REST APISs (URLs) are supported and consistent regardless the type of policy: operational, guard, tosca-compliant. + * `[POLICY-1277] - <https://lf-onap.atlassian.net/browse/POLICY-1277>`_ policy config takes too long time to become retrievable in PDP + * `[POLICY-1378] - <https://lf-onap.atlassian.net/browse/POLICY-1378>`_ add support to append value into policyScope while one policy could be used by several services + * `[POLICY-1650] - <https://lf-onap.atlassian.net/browse/POLICY-1650>`_ Policy UI doesn't show left menu or any content + * `[POLICY-1671] - <https://lf-onap.atlassian.net/browse/POLICY-1671>`_ policy/engine JUnit tests now take over 30 minutes to run + * `[POLICY-1725] - <https://lf-onap.atlassian.net/browse/POLICY-1725>`_ XACML PDP returns 500 vs 400 for bad syntax JSON + * `[POLICY-1793] - <https://lf-onap.atlassian.net/browse/POLICY-1793>`_ API|MODELS: Retrieving Legacy Operational Policy as a Tosca Policy with wrong version + * `[POLICY-1800] - <https://lf-onap.atlassian.net/browse/POLICY-1800>`_ API|PAP components use different version formats + * `[POLICY-1802] - <https://lf-onap.atlassian.net/browse/POLICY-1802>`_ Apex-pdp: context album is mandatory for policy model to compile + * `[POLICY-1808] - <https://lf-onap.atlassian.net/browse/POLICY-1808>`_ API|PAP|PDP-X [new] should publish docker images with the following tag X.Y-SNAPSHOT-latest + * `[POLICY-1818] - <https://lf-onap.atlassian.net/browse/POLICY-1818>`_ APEX does not allow arbitrary Kafka parameters to be specified + * `[POLICY-1276] - <https://lf-onap.atlassian.net/browse/POLICY-1276>`_ JRuby interpreter shutdown fails on second and subsequent runs + * `[POLICY-1803] - <https://lf-onap.atlassian.net/browse/POLICY-1803>`_ PAP should undeploy policies when subgroup is deleted + * `[POLICY-1291] - <https://lf-onap.atlassian.net/browse/POLICY-1291>`_ Maven Error when building Apex documentation in Windows + * `[POLICY-1872] - <https://lf-onap.atlassian.net/browse/POLICY-1872>`_ brmsgw fails building a jar - trafficgenerator dependency does not exist .. ========================== @@ -2709,7 +2899,7 @@ The following items were deployed with the Casablanca Maintenance Release: The following known issue will be addressed in a future release. - * `[POLICY-1650] <https://jira.onap.org/browse/POLICY-1277>`_ - Policy UI doesn't show left menu or any content + * `[POLICY-1650] <https://lf-onap.atlassian.net/browse/POLICY-1277>`_ - Policy UI doesn't show left menu or any content A workaround for this issue consists in bypassing the Portal UI when accessing the Policy UI. See the **PAP recipes** documentation for the specific procedure. @@ -2729,8 +2919,8 @@ The following items were deployed with the Casablanca Maintenance Release: **Bug Fixes** - * `[POLICY-1282] <https://jira.onap.org/browse/POLICY-1282>`_ - Policy format with some problems - * `[POLICY-1395] <https://jira.onap.org/browse/POLICY-1395>`_ - Apex PDP does not preserve context on model upgrade + * `[POLICY-1282] <https://lf-onap.atlassian.net/browse/POLICY-1282>`_ - Policy format with some problems + * `[POLICY-1395] <https://lf-onap.atlassian.net/browse/POLICY-1395>`_ - Apex PDP does not preserve context on model upgrade Version: 3.0.0 @@ -2793,29 +2983,32 @@ The Casablanca release for POLICY delivered the following Epics. For a full list The following bug fixes have been deployed with this release: - * `[POLICY-799] <https://jira.onap.org/browse/POLICY-799>`_ - Policy API Validation Does Not Validate Required Parent Attributes in the Model - * `[POLICY-869] <https://jira.onap.org/browse/POLICY-869>`_ - Control Loop Drools Rules should not have exceptions as well as die upon an exception - * `[POLICY-872] <https://jira.onap.org/browse/POLICY-872>`_ - investigate potential race conditions during rules version upgrades during call loads - * `[POLICY-878] <https://jira.onap.org/browse/POLICY-878>`_ - pdp-d: feature-pooling disables policy-controllers preventing processing of onset events - * `[POLICY-909] <https://jira.onap.org/browse/POLICY-909>`_ - get_ZoneDictionaryDataByName class type error - * `[POLICY-920] <https://jira.onap.org/browse/POLICY-920>`_ - Hard-coded path in junit test - * `[POLICY-921] <https://jira.onap.org/browse/POLICY-921>`_ - XACML Junit test cannot find property file - * `[POLICY-1083] <https://jira.onap.org/browse/POLICY-1083>`_ - Mismatch in action cases between Policy and APPC + * `[POLICY-799] <https://lf-onap.atlassian.net/browse/POLICY-799>`_ - Policy API Validation Does Not Validate Required Parent Attributes in the Model + * `[POLICY-869] <https://lf-onap.atlassian.net/browse/POLICY-869>`_ - Control Loop Drools Rules should not have exceptions as well as die upon an exception + * `[POLICY-872] <https://lf-onap.atlassian.net/browse/POLICY-872>`_ - investigate potential race conditions during rules version upgrades during call loads + * `[POLICY-878] <https://lf-onap.atlassian.net/browse/POLICY-878>`_ - pdp-d: feature-pooling disables policy-controllers preventing processing of onset events + * `[POLICY-909] <https://lf-onap.atlassian.net/browse/POLICY-909>`_ - get_ZoneDictionaryDataByName class type error + * `[POLICY-920] <https://lf-onap.atlassian.net/browse/POLICY-920>`_ - Hard-coded path in junit test + * `[POLICY-921] <https://lf-onap.atlassian.net/browse/POLICY-921>`_ - XACML Junit test cannot find property file + * `[POLICY-1083] <https://lf-onap.atlassian.net/browse/POLICY-1083>`_ - Mismatch in action cases between Policy and APPC **Security Notes** -POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open Critical security vulnerabilities and their risk assessment have been documented as part of the `project (Casablanca Release) <https://wiki.onap.org/pages/viewpage.action?pageId=45300864>`_. +POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open +Critical security vulnerabilities and their risk assessment have been documented as part of the +`project (Casablanca Release) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_. Quick Links: - `POLICY project page`_ - `Passing Badge information for POLICY`_ - - `Project Vulnerability Review Table for POLICY (Casablanca Release) <https://wiki.onap.org/pages/viewpage.action?pageId=45300864>`_ + - `Project Vulnerability Review Table for POLICY (Casablanca Release) <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16315131/Casablanca+CLAMP+Security+Vulnerability+Report>`_ **Known Issues** - * `[POLICY-1277] <https://jira.onap.org/browse/POLICY-1277>`_ - policy config takes too long time to become retrievable in PDP - * `[POLICY-1282] <https://jira.onap.org/browse/POLICY-1282>`_ - Policy format with some problems + * `[POLICY-1277] <https://lf-onap.atlassian.net/browse/POLICY-1277>`_ - policy config takes too long time to become retrievable in PDP + * `[POLICY-1282] <https://lf-onap.atlassian.net/browse/POLICY-1282>`_ - Policy format with some problems @@ -2894,44 +3087,47 @@ The Beijing release for POLICY delivered the following Epics. For a full list of The following bug fixes have been deployed with this release: - * `[POLICY-484] <https://jira.onap.org/browse/POLICY-484>`_ - Extend election handler run window and clean up error messages - * `[POLICY-494] <https://jira.onap.org/browse/POLICY-494>`_ - POLICY EELF Audit.log not in ECOMP Standards Compliance - * `[POLICY-501] <https://jira.onap.org/browse/POLICY-501>`_ - Fix issues blocking election handler and add directed interface for opstate - * `[POLICY-509] <https://jira.onap.org/browse/POLICY-509>`_ - Add IntelliJ file to .gitingore - * `[POLICY-510] <https://jira.onap.org/browse/POLICY-510>`_ - Do not enforce hostname validation - * `[POLICY-518] <https://jira.onap.org/browse/POLICY-518>`_ - StateManagement creation of EntityManagers. - * `[POLICY-519] <https://jira.onap.org/browse/POLICY-519>`_ - Correctly initialize the value of allSeemsWell in DroolsPdpsElectionHandler - * `[POLICY-629] <https://jira.onap.org/browse/POLICY-629>`_ - Fixed a bug on editor screen - * `[POLICY-684] <https://jira.onap.org/browse/POLICY-684>`_ - Fix regex for brmsgw dependency handling - * `[POLICY-707] <https://jira.onap.org/browse/POLICY-707>`_ - ONAO-PAP-REST unit tests fail on first build on clean checkout - * `[POLICY-717] <https://jira.onap.org/browse/POLICY-717>`_ - Fix a bug in checking required fields if the object has include function - * `[POLICY-734] <https://jira.onap.org/browse/POLICY-734>`_ - Fix Fortify Header Manipulation Issue - * `[POLICY-743] <https://jira.onap.org/browse/POLICY-743>`_ - Fixed data name since its name was changed on server side - * `[POLICY-753] <https://jira.onap.org/browse/POLICY-753>`_ - Policy Health Check failed with multi-node cluster - * `[POLICY-765] <https://jira.onap.org/browse/POLICY-765>`_ - junit test for guard fails intermittently + * `[POLICY-484] <https://lf-onap.atlassian.net/browse/POLICY-484>`_ - Extend election handler run window and clean up error messages + * `[POLICY-494] <https://lf-onap.atlassian.net/browse/POLICY-494>`_ - POLICY EELF Audit.log not in ECOMP Standards Compliance + * `[POLICY-501] <https://lf-onap.atlassian.net/browse/POLICY-501>`_ - Fix issues blocking election handler and add directed interface for opstate + * `[POLICY-509] <https://lf-onap.atlassian.net/browse/POLICY-509>`_ - Add IntelliJ file to .gitingore + * `[POLICY-510] <https://lf-onap.atlassian.net/browse/POLICY-510>`_ - Do not enforce hostname validation + * `[POLICY-518] <https://lf-onap.atlassian.net/browse/POLICY-518>`_ - StateManagement creation of EntityManagers. + * `[POLICY-519] <https://lf-onap.atlassian.net/browse/POLICY-519>`_ - Correctly initialize the value of allSeemsWell in DroolsPdpsElectionHandler + * `[POLICY-629] <https://lf-onap.atlassian.net/browse/POLICY-629>`_ - Fixed a bug on editor screen + * `[POLICY-684] <https://lf-onap.atlassian.net/browse/POLICY-684>`_ - Fix regex for brmsgw dependency handling + * `[POLICY-707] <https://lf-onap.atlassian.net/browse/POLICY-707>`_ - ONAO-PAP-REST unit tests fail on first build on clean checkout + * `[POLICY-717] <https://lf-onap.atlassian.net/browse/POLICY-717>`_ - Fix a bug in checking required fields if the object has include function + * `[POLICY-734] <https://lf-onap.atlassian.net/browse/POLICY-734>`_ - Fix Fortify Header Manipulation Issue + * `[POLICY-743] <https://lf-onap.atlassian.net/browse/POLICY-743>`_ - Fixed data name since its name was changed on server side + * `[POLICY-753] <https://lf-onap.atlassian.net/browse/POLICY-753>`_ - Policy Health Check failed with multi-node cluster + * `[POLICY-765] <https://lf-onap.atlassian.net/browse/POLICY-765>`_ - junit test for guard fails intermittently **Security Notes** -POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=25437092>`_. +POLICY code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The POLICY open +Critical security vulnerabilities and their risk assessment have been documented as part of +the `project <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16272941/Policy+R2+Beijing+Security+Vulnerability+Threat+Template>`_. Quick Links: - `POLICY project page`_ - `Passing Badge information for POLICY`_ - - `Project Vulnerability Review Table for POLICY <https://wiki.onap.org/pages/viewpage.action?pageId=25437092>`_ + - `Project Vulnerability Review Table for POLICY <https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16272941/Policy+R2+Beijing+Security+Vulnerability+Threat+Template>`_ **Known Issues** The following known issues will be addressed in a future release: - * `[POLICY-522] <https://jira.onap.org/browse/POLICY-522>`_ - PAP REST APIs undesired HTTP response body for 500 responses - * `[POLICY-608] <https://jira.onap.org/browse/POLICY-608>`_ - xacml components : remove hardcoded secret key from source code - * `[POLICY-764] <https://jira.onap.org/browse/POLICY-764>`_ - Policy Engine PIP Configuration JUnit Test fails intermittently - * `[POLICY-776] <https://jira.onap.org/browse/POLICY-776>`_ - OOF Policy TOSCA models are not correctly rendered - * `[POLICY-799] <https://jira.onap.org/browse/POLICY-799>`_ - Policy API Validation Does Not Validate Required Parent Attributes in the Model - * `[POLICY-801] <https://jira.onap.org/browse/POLICY-801>`_ - fields mismatch for OOF flavorFeatures between implementation and wiki - * `[POLICY-869] <https://jira.onap.org/browse/POLICY-869>`_ - Control Loop Drools Rules should not have exceptions as well as die upon an exception - * `[POLICY-872] <https://jira.onap.org/browse/POLICY-872>`_ - investigate potential race conditions during rules version upgrades during call loads + * `[POLICY-522] <https://lf-onap.atlassian.net/browse/POLICY-522>`_ - PAP REST APIs undesired HTTP response body for 500 responses + * `[POLICY-608] <https://lf-onap.atlassian.net/browse/POLICY-608>`_ - xacml components : remove hardcoded secret key from source code + * `[POLICY-764] <https://lf-onap.atlassian.net/browse/POLICY-764>`_ - Policy Engine PIP Configuration JUnit Test fails intermittently + * `[POLICY-776] <https://lf-onap.atlassian.net/browse/POLICY-776>`_ - OOF Policy TOSCA models are not correctly rendered + * `[POLICY-799] <https://lf-onap.atlassian.net/browse/POLICY-799>`_ - Policy API Validation Does Not Validate Required Parent Attributes in the Model + * `[POLICY-801] <https://lf-onap.atlassian.net/browse/POLICY-801>`_ - fields mismatch for OOF flavorFeatures between implementation and wiki + * `[POLICY-869] <https://lf-onap.atlassian.net/browse/POLICY-869>`_ - Control Loop Drools Rules should not have exceptions as well as die upon an exception + * `[POLICY-872] <https://lf-onap.atlassian.net/browse/POLICY-872>`_ - investigate potential race conditions during rules version upgrades during call loads @@ -2945,7 +3141,7 @@ Version: 1.0.2 The following fixes were deployed with the Amsterdam Maintenance Release: - * `[POLICY-486] <https://jira.onap.org/browse/POLICY-486>`_ - pdp-x api pushPolicy fails to push latest version + * `[POLICY-486] <https://lf-onap.atlassian.net/browse/POLICY-486>`_ - pdp-x api pushPolicy fails to push latest version Version: 1.0.1 @@ -3030,15 +3226,15 @@ The Amsterdam release continued evolving the design driven architecture of and f .. Links to jira release notes -.. _JiraPolicyElAlto: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10728 -.. _JiraPolicyDublin: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10464 -.. _JiraPolicyCasablanca: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10446 -.. _JiraPolicyBeijing: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10349 -.. _JiraPolicyAmsterdam: https://jira.onap.org/secure/ReleaseNote.jspa?projectId=10106&version=10300 +.. _JiraPolicyElAlto: https://lf-onap.atlassian.net/secure/ReleaseNote.jspa?projectId=10106&version=10728 +.. _JiraPolicyDublin: https://lf-onap.atlassian.net/secure/ReleaseNote.jspa?projectId=10106&version=10464 +.. _JiraPolicyCasablanca: https://lf-onap.atlassian.net/secure/ReleaseNote.jspa?projectId=10106&version=10446 +.. _JiraPolicyBeijing: https://lf-onap.atlassian.net/secure/ReleaseNote.jspa?projectId=10106&version=10349 +.. _JiraPolicyAmsterdam: https://lf-onap.atlassian.net/secure/ReleaseNote.jspa?projectId=10106&version=10300 .. Links to Project related pages -.. _POLICY project page: https://wiki.onap.org/display/DW/Policy+Framework+Project +.. _POLICY project page: https://lf-onap.atlassian.net/wiki/display/DW/Policy+Framework+Project .. _Passing Badge information for POLICY: https://bestpractices.coreinfrastructure.org/en/projects/1614 diff --git a/docs/system-attributes/policy-db-migrator.rst b/docs/system-attributes/policy-db-migrator.rst index 840137e9..351f4852 100644 --- a/docs/system-attributes/policy-db-migrator.rst +++ b/docs/system-attributes/policy-db-migrator.rst @@ -8,7 +8,7 @@ Using Policy DB Migrator ######################## Policy DB Migrator is a set of shell scripts used to -install the database tables required to run ONAP Policy Framework. +install the database tables required to run ONAP Policy Framework and ACM. .. note:: Currently the Istanbul versions of the PAP and API components require @@ -53,13 +53,13 @@ These script can take up to four parameters: - upgrade/downgrade/report * - schema - -s - - policyadmin + - schema_name * - to - -t - - 0800/0900 + - target_version (latest is 1600) * - from - -f - - 0800/0900 + - origin_version (earliest is 0800) The container also consists of several sql files which are used to upgrade/downgrade the policy database. @@ -76,7 +76,7 @@ to run and connect to the database. * - SQL_HOST - mariadb * - SQL_DB - - policyadmin + - policyadmin clampacm etc [one or more schema separated by space] * - SQL_USER - policy_user * - SQL_PASSWORD @@ -98,7 +98,7 @@ to run and connect to the database. * - SQL_HOST - postgres * - SQL_DB - - policyadmin + - policyadmin clampacm etc [one or more schema separated by space] * - SQL_USER - policy_user * - SQL_PASSWORD @@ -119,7 +119,7 @@ Prior to upgrading the following script is run: /opt/app/policy/bin/prepare_upgrade.sh <SCHEMA NAME> -This will copy the upgrade files from ``/home/policy/${SCRIPT_DIRECTORY}`` to ``$POLICY_HOME/etc/db/migration/<SCHEMA NAME>/${SCRIPT_DIRECTORY}/`` +This will copy the upgrade files from ``/home/${SCHEMA}/${SCRIPT_DIRECTORY}`` to ``$POLICY_HOME/etc/db/migration/<SCHEMA NAME>/${SCRIPT_DIRECTORY}/`` Each individual sql file that makes up that release will be run as part of the upgrade. @@ -132,7 +132,7 @@ Prior to downgrading the following script is run: /opt/app/policy/bin/prepare_downgrade.sh <SCHEMA NAME> -This will copy the downgrade files from ``/home/policy/${SCRIPT_DIRECTORY}`` to ``$POLICY_HOME/etc/db/migration/<SCHEMA NAME>/${SCRIPT_DIRECTORY}/`` +This will copy the downgrade files from ``/home/${SCHEMA}/${SCRIPT_DIRECTORY}`` to ``$POLICY_HOME/etc/db/migration/<SCHEMA NAME>/${SCRIPT_DIRECTORY}/`` Each individual sql file that makes up that release will be run as part of the downgrade. @@ -199,7 +199,7 @@ Console output will also show the sql script command as in the example below: migration schema ================ -The migration schema contains two tables which belong to ``db-migrator``. +The migration schema contains three tables which belong to ``db-migrator``. * schema_versions - table to store the schema version currently installed by ``db-migrator`` @@ -210,7 +210,9 @@ The migration schema contains two tables which belong to ``db-migrator``. * - name - version * - policyadmin - - 0900 + - 1400 + * - clampacm + - 1400 * policyadmin_schema_changelog - table which stores a record of each sql file that has been run @@ -235,6 +237,29 @@ The migration schema contains two tables which belong to ``db-migrator``. - 1 - 2021-09-13 09:09:26 +* clampacm_schema_changelog - table which stores a record of each sql file that has been run + +.. list-table:: + :widths: 10 40 10 10 10 20 10 20 + :header-rows: 1 + + * - ID + - script + - operation + - from_version + - to_version + - tag + - success + - atTime + * - 1 + - 0100-automationcomposition.sql + - upgrade + - 0 + - 1400 + - 1309210909250800u + - 1 + - 2024-04-24 09:09:26 + * ID: Sequence number of the operation * script: name of the sql script which was run * operation: operation type - upgrade/downgrade @@ -340,10 +365,10 @@ If the target version of your upgrade or downgrade is the same as the current ve no sql files are run. If an upgrade is run on a database where tables already exist in the policy schema, the -current schema version is set to 0800 and only sql scripts from later versions are run. +current schema version is set to 1300 and only sql scripts from later versions are run. .. note:: It is advisable to take a backup of your database prior to running this utility. - Please refer to the mariadb documentation on how to do this. + Please refer to the mariadb or postgres documentation on how to do this. End of Document diff --git a/docs/ui/designtime-ui/apex-policy-editor.rst b/docs/ui/designtime-ui/apex-policy-editor.rst deleted file mode 100644 index 6a5ecb95..00000000 --- a/docs/ui/designtime-ui/apex-policy-editor.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _apex-policy-editor-label: - -The Policy Framework Apex Policy Editor -####################################### - -.. contents:: - :depth: 4 - -The Apex Policy Editor allows a user to create and edit an Apex policy. It's UI is shown in the image below. - -.. image:: ../images/ApexPolicyEditorUI.png - -See the :ref:`My-First-Policy Example <apex-myFirstExample>` for an example of using the Apex policy editor. - diff --git a/docs/ui/designtime-ui/designtime-ui.rst b/docs/ui/designtime-ui/designtime-ui.rst deleted file mode 100644 index da9e6d98..00000000 --- a/docs/ui/designtime-ui/designtime-ui.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _designtime-ui-label: - -The Policy Framework Designtime User Interface -############################################## - -The Policy Framework Designtime UI is shown in the image below. It is, at present, a plain HTML page. - -.. image:: ../images/DesigntimeUI.png - -The pages below describe the elements of the Policy Framework Designtime UI. - -.. toctree:: - :maxdepth: 2 - - apex-policy-editor diff --git a/docs/ui/images/ApexPolicyEditorUI.png b/docs/ui/images/ApexPolicyEditorUI.png Binary files differdeleted file mode 100644 index 54c3b86f..00000000 --- a/docs/ui/images/ApexPolicyEditorUI.png +++ /dev/null diff --git a/docs/ui/images/DesigntimeUI.png b/docs/ui/images/DesigntimeUI.png Binary files differdeleted file mode 100644 index 16cacf10..00000000 --- a/docs/ui/images/DesigntimeUI.png +++ /dev/null diff --git a/docs/ui/images/MainUI.png b/docs/ui/images/MainUI.png Binary files differdeleted file mode 100644 index b9337834..00000000 --- a/docs/ui/images/MainUI.png +++ /dev/null diff --git a/docs/ui/images/RuntimeUI.png b/docs/ui/images/RuntimeUI.png Binary files differdeleted file mode 100644 index 1214f538..00000000 --- a/docs/ui/images/RuntimeUI.png +++ /dev/null diff --git a/docs/ui/images/UIArchitecture.drawio b/docs/ui/images/UIArchitecture.drawio deleted file mode 100644 index b715fb72..00000000 --- a/docs/ui/images/UIArchitecture.drawio +++ /dev/null @@ -1 +0,0 @@ -<mxfile host="Electron" modified="2022-11-07T16:58:18.463Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/19.0.2 Chrome/102.0.5005.63 Electron/19.0.3 Safari/537.36" etag="YSBAXs5JROLyrZci8Pr5" version="19.0.2" type="device"><diagram id="4LS_t8i9Lp9fYecXpLbe" name="Page-1">7Vtbb+I4FP41PLbyJddHetsZ7a3azmg7fVmZxIDVJEbGFJhfvw4xkNih0EISWk2lqvFx7MTf99nn+MTt4et08Zsgk/GfPKZJD4F40cM3PYSgEyL1J7cstQUBp7CMBIu1bWt4YD+pNgJtnbGYTis3Ss4TySZVY8SzjEayYiNC8Hn1tiFPqk+dkBG1DA8RSWzrvyyW48KKMPa2FV8oG43Xj/ZcPcCUrO/WQ5mOScznJRO+7eFrwbksrtLFNU1y+NbAFO3udtRu3kzQTB7S4K9Ykqeb78nkP9oPBk8/+0/s6wXSb/tCkpke8j1PWLRUtjtBUjrn4lldf/+a95TlqKrfqxxYKvS45HKNluCzLKb580APX83HTNKHCYny2rkSiLKNZZqoElSXQ55JTTgMVfmFCskU8v2EjTJllDxvMGRJcs0TLlZPwMPhEEWRsk+l4M+0VBN7A8/1VI0ekOqNLnZCBTcEKO1SnlIp8iHrBjjQnGnZbuQ432rAxbrbcYl+5GtdEK270abvLTPqQpPzFqKwRdTvswEVGZVqfjRKxIBLyVObCwpjl/p1XISej8mJuIAAVsmAoU0GdoFNBsagITKgxcUNneZgIfCNpfQ4OnbDX+LJs+mICQ2GtVPDiwI6GJ5oaoTg0q1ODtfmA7k1kwPCpvhAFh//zDL5yZnwAdzLw2auVBYp0NQiZa9Ra2fiJerhVwPlMrxRfnUbM8nFCReuOhpcGsROHQ0BGmDvROuTAwxf4SGbBlhDg9vUbHAtFvozpVsiGc9sJq55OuFTVl/ZBk3DIfV2uHQ/HABwGppc9E6a/KZo8iya7pjCF4GH5VTS1MJcxY+T/DJaJkyBL/B+5AcFTX8MNgYSPY9W5P09k6obqu1TTY9bQ9d5hQMuNP3Phtkyk0HduoeaotK3qNzNHhHx26eM5geBrlY516lOH9ezQa/zNRA0hXnQIeYtLVmugbnfNebh59e5Z2AedI352id9ZqH7Bug1O7yWQbd3eLsi2VKWxKzqK8c5JJG046ePPkuM/IgHOifM3gJaoNMs7ucpwRz3hEynLKrCXA1qTdDpgsnHvO7S1aUful1+fbPQzVaFpS4Ur0BjK8doAK1ek89ERF8bYHGfJGJE5b6o0iaunLh6ZS8iaKK2CS/V160jSz/hnjM1kI0uQqe6JfU9Y6dZDFO3QqVcpdlRaHQEjY4KHKyOVtrZDPsIOdk72cbk5IGgJCjwqqCUbMTysVz4sZVkXtw2W5WWpU7uqWAKFypOL07vQHGiLsXpGPkSx0yDHCpOx/EvQVj6qXYbgEvsWLVtCdfO509WjuuCTJgl4a1E4QfJtkCEjX08Ruv9YHn/h2p05DXmfOyMiwZ9okD8hKDjcwDdzp+QKL0QexO/x6PeTlRsoe6cA+p2qmM0YxdTKl5e/R54Aqm3klSH4BylfkCuozYamSpvI48JUo4INx5L0XHRCq0D5+aDZf/AgKRwl52Fy8a+1/f8tdbeGpNAYOS3fWj11XTocUB26AOo9AxF6nYpUgiNlBh2369SZKSRkY9aVul6mnxwlfpnKNNOUw8QGospPmIxRUbmHQWty9ROQL4m04znn/KuYjIdb8KtkjJz+z2Rau+frSwI4E0gtT7WhvYq+HBR7U8EdJoJgNDIXzrmR96DlWL2pFa0tpWCLKV8+fbt3s5Gc2Hb8jsfLGGp8FlWBVSNubXaygG6NhH9jThSisgTTdbH45TFcf6Y2s3AIfI7LrqH5sSGddG9VyO9xs6SITt58BEdUmv+CB3qjvxfUdPpFhk72fKp3FGnWgkNqTjhO72R2ZF14KVpldjJoV+uaIcrCs08NujaD9lJpl2fvPtxyjKmiNBHCg3OPt4ZTt/4bnn44UCnKTbsZMq7D3G2SFc7mXGTLlx38vlEdKni9l90ioVy+69O+PZ/</diagram></mxfile>
\ No newline at end of file diff --git a/docs/ui/images/UIArchitecture.png b/docs/ui/images/UIArchitecture.png Binary files differdeleted file mode 100644 index e60dd5a6..00000000 --- a/docs/ui/images/UIArchitecture.png +++ /dev/null diff --git a/docs/ui/runtime-ui/gui-server.rst b/docs/ui/runtime-ui/gui-server.rst deleted file mode 100644 index ffb0f9f9..00000000 --- a/docs/ui/runtime-ui/gui-server.rst +++ /dev/null @@ -1,143 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _gui-server-label: - -The Policy Framework GUI Server -############################### - -The **gui-server** microservice serves the GUI code to the browser for Policy Framework UI. In addition, it acts as -a single point of reference for the REST interfaces provided by **policy-api**, **policy-pap**, and **acm-runtime**. -It can also be used as a HTTPS gatewy for REST references into a Policy Framework deployment in a Kubernetes cluster. - -.. contents:: - :depth: 2 - -The **gui-server** is a regular microservice, and it is packaged, delivered and configured as a docker image. It is -a Spring application and therefore uses a normal Spring-style *applciation.yaml* approach to configuration. - -Definitive example configurations are available in the codebase: - -- `application_http.yaml <https://github.com/onap/policy-gui/blob/master/gui-server/src/test/resources/application_http.yaml>`_ - showing how to configure gui-server for HTTP access -- `application_https.yaml <https://github.com/onap/policy-gui/blob/master/gui-server/src/test/resources/application_https.yaml>`_ - showing how to configure gui-server for HTTPS access - -The configuration parameters are explained in the sections below - -Server Configuration --------------------- - -Configuration for HTTP access to gui-server:: - - server: - port: 2443 - ssl: - enabled: false - -Start gui-server on port 2443 and disable SSL. - -Configuration for HTTPS access to gui-server:: - - server: - port: 2443 - ssl: - enabled: true - enabled-protocols: TLSv1.2 - client-auth: want - key-store: file:./src/test/resources/helloworld-keystore.jks - key-store-password: changeit - trust-store: file:./src/test/resources/helloworld-truststore.jks - trust-store-password: changeit - -Start gui-server on port 2443 and enable SSL with the parameters specified above - -Note that other standard Spring **server** configuraiton parameters as -documented -`on the Spring website <https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html>`_ -are supported. - -Runtime Adaptation Configuration --------------------------------- - -You can configure the adaptation for **policy-api**, **policy-pap**, and **runtime-acm**. In other words, you can map -the URL that the GUI produced or that you want to use in a REST tool such as *postman* or *curl* in the **runtime-ui** -part of the aaplication.yaml file:: - - runtime-ui: - policy-api: - mapping-path: "/runtime-ui/policy-api/restservices/" - url: http://localhost:30440 - disable-ssl-validation: true - disable-ssl-hostname-check: true - policy-pap: - mapping-path: "/runtime-ui/policy-pap/restservices/" - url: http://localhost:30442 - disable-ssl-validation: true - disable-ssl-hostname-check: true - acm: - mapping-path: "/runtime-ui/acm/restservices/" - url: http://localhost:30258 - disable-ssl-validation: true - disable-ssl-hostname-check: true - -The parameters under the **policy-api**, **policy-pap**, and **acm** sections are identical. - -mapping-path and url -++++++++++++++++++++ - -The **mapping-path** is the root part of the path that will be replaced by the **url**, the **url** replaces the -**mapping-path**. - -Therefore, using the configuration above for policy-api, the following mapping occurs:: - - http://localhost:2443/runtime-ui/policy-api/restservices/policy/api/v1/healthcheck - - maps to - - http://localhost:30440/policy/api/v1/healthcheck - -and:: - - https://localhost:2443/runtime-ui/acm/restservices/onap/policy/clamp/acm/v2/commission - - maps to - - http://localhost:30258/onap/policy/clamp/acm/v2/commission - -disable-ssl-validation and disable-ssl-hostname-check -+++++++++++++++++++++++++++++++++++++++++++++++++++++ - -The **disable-ssl-validation** **disable-ssl-hostname-check** are boolean values. If the target server (policy-api, -policy-pap, or runtime-acm) is using http, these values should be set to **false**. If the target server is using -HTTPS, set the values as **true** so that the **gui-server** transfers and forwards certificates to target servers. - -Spring Boot Acuator Monitoring ------------------------------- - -The **gui-server** supports regular -`Spring Boot Actuator monitoring <https://docs.spring.io/spring-boot/docs/1.4.0.M2/reference/html/production-ready-monitoring.html>`_ -and monitoring over `prometheus <https://prometheus.io/>`_. - -The following section of the *application.yaml** file is an example of how to enable monitoring:: - - management: - endpoints: - web: - base-path: / - exposure: - include: health,metrics,prometheus - path-mapping.metrics: plain-metrics - path-mapping.prometheus: metrics - -The configuration above enables the following URLs:: - - # Health Check - http://localhost:2443/health - - # Plain Metrics - http://localhost:2443/plain-metrics - - # Prometheus Metrics - http://localhost:2443/metrics - - diff --git a/docs/ui/runtime-ui/runtime-ui.rst b/docs/ui/runtime-ui/runtime-ui.rst deleted file mode 100644 index b77607dc..00000000 --- a/docs/ui/runtime-ui/runtime-ui.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _runtime-ui-label: - -The Policy Framework Runtime User Interface -########################################### - -The Policy Framework Runtime UI is shown in the image below. It is, at present, a plain HTML page. - -.. image:: ../images/RuntimeUI.png - -The pages below describe the elements of the Policy Framework Runtime UI. - -.. toctree:: - :maxdepth: 2 - - gui-server diff --git a/docs/ui/ui.rst b/docs/ui/ui.rst deleted file mode 100644 index b4b2d33f..00000000 --- a/docs/ui/ui.rst +++ /dev/null @@ -1,43 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. - -.. _ui-label: - -The Policy Framework User Interfaces -#################################### - -The Policy Framework has a demonstration user interface that supports design time and runtime activities for the Policy -Framework. - -Design time activities are offline activities such as policy editing and ACM composition preparation. The design time UI -works with offline files, producing artifacts that can be consumed by the runtime Policy Framework APIs. - -Runtime operations include creating and updating policy types and policies, deploying policies as well as working with -Automation Compositions. The runtime UI works towards the REST APIs published by the Policy Framework. - -.. image:: images/UIArchitecture.png - -.. note:: - The policy framework UI is developed for use in demonstrations. It is a work in progress. As such, it does not cover - all the features and functions that are avaiable on the Policy Framework REST APIs. - -A Policy Framework installation in Kubernetes is shown in the figure above. The **policy-api**, **policy-pap** and -**acm-runtime** microservices publish REST interfaces. In a Service Mesh installation, these interfaces are exposed -over HTTP and are available inside the Service Mesh. Alternatively, the interfaces may be exposed publicly over HTTPS. - -The **gui-server** microservice serves the GUI code to the browser for Policy Framework UI. In addition, it acts as -a single point of reference for the REST interfaces provided by **policy-api**, **policy-pap**, and **acm-runtime**. -It can also be used as a HTTPS gatewy for REST references into a Policy Framework deployment in a Kubernetes cluster. - -The Policy Framework UI runs in a browser as a Web application. It has a **designtime** and a **runtime** part. - -.. image:: images/MainUI.png - -The Policy Framework main UI is shown in the image above. It is, at present, a plain HTML page. - -The pages below describe the elements of the Policy Framework UI. - -.. toctree:: - :maxdepth: 4 - - designtime-ui/designtime-ui - runtime-ui/runtime-ui diff --git a/integration/pom.xml b/integration/pom.xml index d86de59a..1dfd3d28 100644 --- a/integration/pom.xml +++ b/integration/pom.xml @@ -2,7 +2,7 @@ ============LICENSE_START======================================================= Copyright (C) 2018 Ericsson. All rights reserved. Modifications Copyright (C) 2018-2023 AT&T. All rights reserved. - Modifications Copyright (C) 2019-2024 Nordix Foundation. + Modifications Copyright (C) 2019-2025 Nordix Foundation. Modifications Copyright (C) 2020-2022 Bell Canada. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,7 +29,7 @@ <parent> <groupId>org.onap.policy.parent</groupId> <artifactId>policy-parent</artifactId> - <version>5.0.0-SNAPSHOT</version> + <version>5.1.1-SNAPSHOT</version> </parent> <artifactId>integration</artifactId> <packaging>pom</packaging> @@ -38,7 +38,8 @@ <properties> <java.version>17</java.version> <!-- Note Well: For RELEASE/SNAPSHOT always set to the project version --> - <version.parent.resources>5.0.0-SNAPSHOT</version.parent.resources> + <version.parent.resources>5.1.1-SNAPSHOT</version.parent.resources> + <version.parent.checkstyle>[4.1.2,)</version.parent.checkstyle> <jacoco.destFile>${project.build.directory}/code-coverage/jacoco-ut.exec</jacoco.destFile> <!-- Default Sonar configuration --> <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin> @@ -58,39 +59,44 @@ <version.drools>8.40.1.Final</version.drools> <version.frontend.maven>1.13.4</version.frontend.maven> <version.guava>33.0.0-jre</version.guava> - <version.httpclient>5.3.1</version.httpclient> - <version.io.prometheus>0.16.0</version.io.prometheus> - <version.jackson>2.16.1</version.jackson> + <version.hamcrest>3.0</version.hamcrest> + <version.httpclient>5.4.1</version.httpclient> + <version.httpcore>5.3.2</version.httpcore> + <version.io.prometheus>1.3.5</version.io.prometheus> + <version.jackson>2.17.2</version.jackson> <version.jacoco>0.8.11</version.jacoco> <version.jaxb>4.0.5</version.jaxb> - <version.jersey>3.1.5</version.jersey> - <version.jetty>11.0.20</version.jetty> - <version.jupiter>5.10.2</version.jupiter> - <version.kafka>3.6.1</version.kafka> - <version.kotlin>1.9.23</version.kotlin> + <version.jersey>3.1.9</version.jersey> + <version.jetty>11.0.24</version.jetty> + <version.jexl3>3.2.1</version.jexl3> + <version.json-path>2.9.0</version.json-path> + <version.json-schema-friend>0.12.4</version.json-schema-friend> + <version.json-schema-validator>1.5.0</version.json-schema-validator> + <version.jupiter>5.11.3</version.jupiter> + <version.kafka>3.8.1</version.kafka> + <version.kotlin>2.0.20</version.kotlin> <version.log4j>2.23.1</version.log4j> - <version.logback>1.4.14</version.logback> + <version.logback>1.5.15</version.logback> <version.maven-checkstyle-plugin>3.3.1</version.maven-checkstyle-plugin> <version.maven-remote-resources-plugin>3.1.0</version.maven-remote-resources-plugin> - <version.medeia.validator>1.1.1</version.medeia.validator> - <version.micrometer>1.11.10</version.micrometer> + <version.micrometer>1.14.3</version.micrometer> <version.mockito>5.5.0</version.mockito> <version.mockserver>5.15.0</version.mockserver> <version.netty>4.1.100.Final</version.netty> <version.nsa-cambria>1.2.1-oss</version.nsa-cambria> <version.nsa-sa-client>1.3.0-oss</version.nsa-sa-client> - <version.opentel>1.25.0</version.opentel> + <version.opentel>1.43.0</version.opentel> <version.plexus>3.5.0</version.plexus> <version.sdc-dist>2.1.1</version.sdc-dist> <version.sdc-tosca>1.9.0</version.sdc-tosca> - <version.slf4j>2.0.12</version.slf4j> - <version.spring>6.0.18</version.spring> - <version.springboot>3.1.10</version.springboot> - <version.spring-security>6.1.8</version.spring-security> + <version.slf4j>2.0.13</version.slf4j> + <version.spring>6.1.16</version.spring> + <version.springboot>3.3.7</version.springboot> + <version.spring-data>3.3.7</version.spring-data> + <version.spring-security>6.3.6</version.spring-security> <version.sonar>3.11.0.3922</version.sonar> <version.swagger.codegen.v3>3.0.52</version.swagger.codegen.v3> - <version.swagger.core.v3>2.2.20</version.swagger.core.v3> - <version.tomcat>10.1.19</version.tomcat> + <version.swagger.core.v3>2.2.25</version.swagger.core.v3> <surefireArgLine> --add-opens java.base/java.time=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED @@ -110,6 +116,47 @@ <artifactId>policy-parent-resources</artifactId> <version>${version.parent.resources}</version> </dependency> + + <!-- ONAP dependencies --> + <dependency> + <groupId>org.onap.ccsdk.cds.blueprintsprocessor.modules</groupId> + <artifactId>blueprint-proto</artifactId> + <version>${version.ccsdk}</version> + </dependency> + <dependency> + <groupId>org.onap.sdc.sdc-distribution-client</groupId> + <artifactId>sdc-distribution-client</artifactId> + <version>${version.sdc-dist}</version> + </dependency> + <dependency> + <groupId>org.onap.sdc.sdc-tosca</groupId> + <artifactId>sdc-tosca</artifactId> + <version>${version.sdc-tosca}</version> + </dependency> + + <!-- AT&T dependencies --> + <dependency> + <groupId>com.att.nsa</groupId> + <artifactId>cambriaClient</artifactId> + <version>${version.nsa-cambria}</version> + </dependency> + <dependency> + <groupId>com.att.nsa</groupId> + <artifactId>saClientLibrary</artifactId> + <version>${version.nsa-sa-client}</version> + </dependency> + + <!-- All 3pp dependencies --> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-classic</artifactId> + <version>${version.logback}</version> + </dependency> + <dependency> + <groupId>ch.qos.logback</groupId> + <artifactId>logback-core</artifactId> + <version>${version.logback}</version> + </dependency> <dependency> <groupId>com.fasterxml.jackson</groupId> <artifactId>jackson-bom</artifactId> @@ -123,146 +170,196 @@ <version>${version.jackson}</version> </dependency> <dependency> - <groupId>org.glassfish.jersey.containers</groupId> - <artifactId>jersey-container-servlet</artifactId> - <version>${version.jersey}</version> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.10.1</version> </dependency> <dependency> - <groupId>org.glassfish.jersey.inject</groupId> - <artifactId>jersey-hk2</artifactId> - <version>${version.jersey}</version> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>${version.guava}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <version>${version.jetty}</version> + <groupId>com.google.re2j</groupId> + <artifactId>re2j</artifactId> + <version>1.7</version> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-security</artifactId> - <version>${version.jetty}</version> + <groupId>com.jayway.jsonpath</groupId> + <artifactId>json-path</artifactId> + <version>${version.json-path}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-util</artifactId> - <version>${version.jetty}</version> + <groupId>com.networknt</groupId> + <artifactId>json-schema-validator</artifactId> + <version>${version.json-schema-validator}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-http</artifactId> - <version>${version.jetty}</version> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-core</artifactId> + <version>${version.jaxb}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlet</artifactId> - <version>${version.jetty}</version> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-impl</artifactId> + <version>${version.jaxb}</version> </dependency> - - <!-- Prometheus Client Libraries --> <dependency> - <groupId>io.prometheus</groupId> - <artifactId>simpleclient</artifactId> - <version>${version.io.prometheus}</version> + <groupId>com.sun.xml.bind</groupId> + <artifactId>jaxb-xjc</artifactId> + <version>${version.jaxb}</version> </dependency> <dependency> - <groupId>io.prometheus</groupId> - <artifactId>simpleclient_hotspot</artifactId> - <version>${version.io.prometheus}</version> + <groupId>commons-beanutils</groupId> + <artifactId>commons-beanutils</artifactId> + <version>${version.beanutils}</version> </dependency> <dependency> - <groupId>io.prometheus</groupId> - <artifactId>simpleclient_servlet_jakarta</artifactId> - <version>${version.io.prometheus}</version> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>1.5.0</version> </dependency> <dependency> - <groupId>io.prometheus</groupId> - <artifactId>simpleclient_logback</artifactId> - <version>${version.io.prometheus}</version> + <groupId>commons-codec</groupId> + <artifactId>commons-codec</artifactId> + <version>1.16.0</version> </dependency> <dependency> - <groupId>io.prometheus</groupId> - <artifactId>simpleclient_httpserver</artifactId> - <version>${version.io.prometheus}</version> + <groupId>commons-fileupload</groupId> + <artifactId>commons-fileupload</artifactId> + <version>1.5</version> </dependency> <dependency> - <groupId>com.google.re2j</groupId> - <artifactId>re2j</artifactId> - <version>1.7</version> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.17.0</version> </dependency> <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>${version.guava}</version> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.3.4</version> </dependency> - - <!-- Jakarta dependencies --> <dependency> - <groupId>jakarta.xml.bind</groupId> - <artifactId>jakarta.xml.bind-api</artifactId> - <version>4.0.2</version> + <groupId>commons-net</groupId> + <artifactId>commons-net</artifactId> + <version>3.9.0</version> </dependency> <dependency> - <groupId>com.sun.xml.bind</groupId> - <artifactId>jaxb-impl</artifactId> - <version>${version.jaxb}</version> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-core</artifactId> + <version>${version.micrometer}</version> </dependency> <dependency> - <groupId>com.sun.xml.bind</groupId> - <artifactId>jaxb-core</artifactId> - <version>${version.jaxb}</version> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-observation</artifactId> + <version>${version.micrometer}</version> + <exclusions> + <exclusion> + <groupId>javax.servlet</groupId> + <artifactId>javax.servlet-api</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-core</artifactId> - <version>${version.jaxb}</version> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-registry-prometheus</artifactId> + <version>${version.micrometer}</version> </dependency> <dependency> - <groupId>org.glassfish.jaxb</groupId> - <artifactId>jaxb-runtime</artifactId> - <version>${version.jaxb}</version> - <scope>compile</scope> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-tracing-bridge-otel</artifactId> + <version>1.4.2</version> </dependency> <dependency> - <groupId>com.sun.xml.bind</groupId> - <artifactId>jaxb-xjc</artifactId> - <version>${version.jaxb}</version> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.servlet</groupId> - <artifactId>jakarta.servlet-api</artifactId> - <version>6.0.0</version> + <groupId>io.netty</groupId> + <artifactId>netty-buffer</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.validation</groupId> - <artifactId>jakarta.validation-api</artifactId> - <version>3.0.2</version> + <groupId>io.netty</groupId> + <artifactId>netty-codec</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.ws.rs</groupId> - <artifactId>jakarta.ws.rs-api</artifactId> - <version>3.1.0</version> + <groupId>io.netty</groupId> + <artifactId>netty-codec-http2</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.activation</groupId> - <artifactId>jakarta.activation-api</artifactId> - <version>2.1.2</version> + <groupId>io.netty</groupId> + <artifactId>netty-common</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.inject</groupId> - <artifactId>jakarta.inject-api</artifactId> - <version>2.0.1</version> + <groupId>io.netty</groupId> + <artifactId>netty-handler</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.persistence</groupId> - <artifactId>jakarta.persistence-api</artifactId> - <version>3.1.0</version> + <groupId>io.netty</groupId> + <artifactId>netty-handler-proxy</artifactId> + <version>${version.netty}</version> </dependency> <dependency> - <groupId>jakarta.transaction</groupId> - <artifactId>jakarta.transaction-api</artifactId> - <version>2.0.1</version> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-api</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-context</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-exporter-otlp</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-sdk-extension-jaeger-remote-sampler</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry</groupId> + <artifactId>opentelemetry-sdk-trace</artifactId> + <version>${version.opentel}</version> + </dependency> + <dependency> + <groupId>io.opentelemetry.instrumentation</groupId> + <artifactId>opentelemetry-kafka-clients-2.6</artifactId> + <version>2.7.0-alpha</version> + </dependency> + <dependency> + <groupId>io.prometheus</groupId> + <artifactId>prometheus-metrics-core</artifactId> + <version>${version.io.prometheus}</version> + </dependency> + <dependency> + <groupId>io.prometheus</groupId> + <artifactId>prometheus-metrics-instrumentation-jvm</artifactId> + <version>${version.io.prometheus}</version> + </dependency> + <dependency> + <groupId>io.prometheus</groupId> + <artifactId>prometheus-metrics-exporter-httpserver</artifactId> + <version>${version.io.prometheus}</version> + </dependency> + <dependency> + <groupId>io.prometheus</groupId> + <artifactId>prometheus-metrics-exporter-servlet-jakarta</artifactId> + <version>${version.io.prometheus}</version> </dependency> - <!-- Swagger --> <dependency> <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-annotations</artifactId> @@ -270,6 +367,16 @@ </dependency> <dependency> <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-annotations-jakarta</artifactId> + <version>${version.swagger.core.v3}</version> + </dependency> + <dependency> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-core</artifactId> + <version>${version.swagger.core.v3}</version> + </dependency> + <dependency> + <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-jaxrs2-jakarta</artifactId> <version>${version.swagger.core.v3}</version> </dependency> @@ -279,109 +386,104 @@ <version>${version.swagger.core.v3}</version> </dependency> <dependency> + <groupId>io.swagger.core.v3</groupId> + <artifactId>swagger-models-jakarta</artifactId> + <version>${version.swagger.core.v3}</version> + </dependency> + <dependency> <groupId>io.swagger.parser.v3</groupId> <artifactId>swagger-parser</artifactId> <version>2.1.16</version> </dependency> - - <!-- Test --> - <!-- MariaDB --> <dependency> - <groupId>org.mariadb.jdbc</groupId> - <artifactId>mariadb-java-client</artifactId> - <version>3.3.3</version> + <groupId>jakarta.activation</groupId> + <artifactId>jakarta.activation-api</artifactId> + <version>2.1.2</version> </dependency> - <!-- Postgres --> <dependency> - <groupId>org.postgresql</groupId> - <artifactId>postgresql</artifactId> - <version>42.7.2</version> + <groupId>jakarta.annotation</groupId> + <artifactId>jakarta.annotation-api</artifactId> + <version>3.0.0</version> </dependency> - <!-- Kafka --> <dependency> - <groupId>org.apache.kafka</groupId> - <artifactId>kafka-clients</artifactId> - <version>${version.kafka}</version> + <groupId>jakarta.inject</groupId> + <artifactId>jakarta.inject-api</artifactId> + <version>2.0.1</version> </dependency> - <!-- HttpComponents Core (blocking I/O) --> <dependency> - <groupId>org.apache.httpcomponents.core5</groupId> - <artifactId>httpcore5</artifactId> - <version>5.2.4</version> + <groupId>jakarta.persistence</groupId> + <artifactId>jakarta.persistence-api</artifactId> + <version>3.1.0</version> </dependency> <dependency> - <groupId>org.apache.httpcomponents.client5</groupId> - <artifactId>httpclient5</artifactId> - <version>${version.httpclient}</version> + <groupId>jakarta.servlet</groupId> + <artifactId>jakarta.servlet-api</artifactId> + <version>6.1.0</version> </dependency> <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpcore</artifactId> - <version>4.4.16</version> + <groupId>jakarta.transaction</groupId> + <artifactId>jakarta.transaction-api</artifactId> + <version>2.0.1</version> </dependency> <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.5.14</version> + <groupId>jakarta.validation</groupId> + <artifactId>jakarta.validation-api</artifactId> + <version>3.0.2</version> </dependency> - - <!-- JSON marshalling and unmarshalling --> <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.10.1</version> + <groupId>jakarta.ws.rs</groupId> + <artifactId>jakarta.ws.rs-api</artifactId> + <version>4.0.0</version> </dependency> <dependency> - <groupId>org.json</groupId> - <artifactId>json</artifactId> - <version>20240303</version> + <groupId>jakarta.xml.bind</groupId> + <artifactId>jakarta.xml.bind-api</artifactId> + <version>4.0.2</version> </dependency> <dependency> - <groupId>com.worldturner.medeia</groupId> - <artifactId>medeia-validator-gson</artifactId> - <version>${version.medeia.validator}</version> + <groupId>net.jimblackler.jsonschemafriend</groupId> + <artifactId>core</artifactId> + <version>${version.json-schema-friend}</version> </dependency> <dependency> - <groupId>com.worldturner.medeia</groupId> - <artifactId>medeia-validator-core</artifactId> - <version>${version.medeia.validator}</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + <version>4.5.0-M2</version> </dependency> <dependency> - <groupId>com.jayway.jsonpath</groupId> - <artifactId>json-path</artifactId> - <version>2.9.0</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-jexl3</artifactId> + <version>${version.jexl3}</version> </dependency> - <!-- Lombok --> <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>1.18.30</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.14.0</version> </dependency> - <!-- Logging --> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>${version.slf4j}</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-math3</artifactId> + <version>3.6.1</version> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-ext</artifactId> - <version>${version.slf4j}</version> + <groupId>org.apache.commons</groupId> + <artifactId>commons-text</artifactId> + <version>1.10.0</version> </dependency> <dependency> - <groupId>org.slf4j</groupId> - <artifactId>jcl-over-slf4j</artifactId> - <version>${version.slf4j}</version> + <groupId>org.apache.httpcomponents.client5</groupId> + <artifactId>httpclient5</artifactId> + <version>${version.httpclient}</version> </dependency> <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - <version>${version.logback}</version> + <groupId>org.apache.httpcomponents.core5</groupId> + <artifactId>httpcore5</artifactId> + <version>${version.httpcore}</version> </dependency> <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <version>${version.logback}</version> + <groupId>org.apache.kafka</groupId> + <artifactId>kafka-clients</artifactId> + <version>${version.kafka}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> @@ -393,76 +495,30 @@ <artifactId>log4j-to-slf4j</artifactId> <version>${version.log4j}</version> </dependency> - <!-- CDS dependencies --> - <dependency> - <groupId>org.onap.ccsdk.cds.blueprintsprocessor.modules</groupId> - <artifactId>blueprint-proto</artifactId> - <version>${version.ccsdk}</version> - <exclusions> - <exclusion> - <groupId>io.springfox</groupId> - <artifactId>springfox-boot-starter</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-to-slf4j</artifactId> - </exclusion> - </exclusions> - </dependency> - <!-- Client library for Cambria event routing API --> <dependency> - <groupId>com.att.nsa</groupId> - <artifactId>cambriaClient</artifactId> - <version>${version.nsa-cambria}</version> + <groupId>org.apache.tomcat.embed</groupId> + <artifactId>tomcat-embed-core</artifactId> + <version>10.1.34</version> </dependency> <dependency> - <groupId>com.att.nsa</groupId> - <artifactId>saClientLibrary</artifactId> - <version>${version.nsa-sa-client}</version> + <groupId>org.aspectj</groupId> + <artifactId>aspectjweaver</artifactId> + <version>1.9.22</version> </dependency> - <!-- SnakeYAML --> <dependency> - <groupId>org.yaml</groupId> - <artifactId>snakeyaml</artifactId> - <version>2.2</version> + <groupId>org.bouncycastle</groupId> + <artifactId>bcpkix-fips</artifactId> + <version>2.0.7</version> </dependency> - <!-- Drools --> - <!-- - Security Issues: 1 of 2 - This dependency is trying to upgrade security fixes - identified. If it is removed or manipulated then please - fix the 2nd change as noted below. - --> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-utils</artifactId> <version>${version.plexus}</version> </dependency> <dependency> - <groupId>org.kie</groupId> - <artifactId>kie-api</artifactId> - <version>${version.drools}</version> - </dependency> - <dependency> - <groupId>org.kie</groupId> - <artifactId>kie-ci</artifactId> + <groupId>org.drools</groupId> + <artifactId>drools-compiler</artifactId> <version>${version.drools}</version> - <!-- - Issue: 2 of 2 - Excluding these 2 dependencies in order to force upgrade security fixes - identified. As declared above. Any changes here should be reflected above - and vice versa. - --> - <exclusions> - <exclusion> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-utils</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.drools</groupId> @@ -476,281 +532,177 @@ </dependency> <dependency> <groupId>org.drools</groupId> - <artifactId>drools-xml-support</artifactId> - <version>${version.drools}</version> - </dependency> - <dependency> - <groupId>org.drools</groupId> <artifactId>drools-persistence-jpa</artifactId> <version>${version.drools}</version> </dependency> <dependency> <groupId>org.drools</groupId> - <artifactId>drools-compiler</artifactId> + <artifactId>drools-verifier-api</artifactId> <version>${version.drools}</version> </dependency> <dependency> <groupId>org.drools</groupId> - <artifactId>drools-verifier-drl</artifactId> + <artifactId>drools-verifier-core</artifactId> <version>${version.drools}</version> </dependency> <dependency> <groupId>org.drools</groupId> - <artifactId>drools-verifier-api</artifactId> + <artifactId>drools-verifier-drl</artifactId> <version>${version.drools}</version> </dependency> <dependency> <groupId>org.drools</groupId> - <artifactId>drools-verifier-core</artifactId> + <artifactId>drools-xml-support</artifactId> <version>${version.drools}</version> </dependency> - <!-- Mockserver --> - <dependency> - <groupId>org.mock-server</groupId> - <artifactId>mockserver-netty</artifactId> - <version>${version.mockserver}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mock-server</groupId> - <artifactId>mockserver-client-java</artifactId> - <version>${version.mockserver}</version> - <scope>test</scope> - </dependency> - <!-- Springdoc --> - <dependency> - <groupId>org.springdoc</groupId> - <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> - <version>2.1.0</version> - </dependency> - <!-- SDC --> - <dependency> - <groupId>org.onap.sdc.sdc-distribution-client</groupId> - <artifactId>sdc-distribution-client</artifactId> - <version>${version.sdc-dist}</version> - </dependency> - <dependency> - <groupId>org.onap.sdc.sdc-tosca</groupId> - <artifactId>sdc-tosca</artifactId> - <version>${version.sdc-tosca}</version> - </dependency> - - <!-- Test dependencies --> - <!-- In memory Database Engine --> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <version>2.2.224</version> - <scope>test</scope> - </dependency> - <!-- JUNIT --> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.13.2</version> - <scope>test</scope> - </dependency> <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter-engine</artifactId> - <version>${version.jupiter}</version> - <scope>test</scope> - </dependency> - <!-- Junit vintage --> - <dependency> - <groupId>org.junit.vintage</groupId> - <artifactId>junit-vintage-engine</artifactId> - <version>${version.jupiter}</version> - <scope>test</scope> - </dependency> - <!-- Cucumber Tests --> - <dependency> - <groupId>io.cucumber</groupId> - <artifactId>cucumber-java</artifactId> - <version>${version.cucumber}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>io.cucumber</groupId> - <artifactId>cucumber-junit</artifactId> - <version>${version.cucumber}</version> - <scope>test</scope> - </dependency> - <!-- Exception testing --> - <dependency> - <groupId>org.assertj</groupId> - <artifactId>assertj-core</artifactId> - <version>3.25.3</version> - <scope>test</scope> - </dependency> - <!-- Mock libraries --> - <dependency> - <groupId>com.openpojo</groupId> - <artifactId>openpojo</artifactId> - <version>0.9.1</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-core</artifactId> - <version>${version.mockito}</version> - <scope>test</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-http</artifactId> + <version>${version.jetty}</version> </dependency> <dependency> - <groupId>org.mockito</groupId> - <artifactId>mockito-junit-jupiter</artifactId> - <version>${version.mockito}</version> - <scope>test</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-security</artifactId> + <version>${version.jetty}</version> </dependency> - <!-- Awaitility --> <dependency> - <groupId>org.awaitility</groupId> - <artifactId>awaitility</artifactId> - <version>4.2.0</version> - <scope>test</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-server</artifactId> + <version>${version.jetty}</version> </dependency> - <!-- Netty --> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <version>${version.netty}</version> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-servlet</artifactId> + <version>${version.jetty}</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-common</artifactId> - <version>${version.netty}</version> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-util</artifactId> + <version>${version.jetty}</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-codec-http2</artifactId> - <version>${version.netty}</version> + <groupId>org.eclipse.jetty.toolchain</groupId> + <artifactId>jetty-jakarta-servlet-api</artifactId> + <version>5.0.2</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-handler-proxy</artifactId> - <version>${version.netty}</version> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-core</artifactId> + <version>${version.jaxb}</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-buffer</artifactId> - <version>${version.netty}</version> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-runtime</artifactId> + <version>${version.jaxb}</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-codec</artifactId> - <version>${version.netty}</version> + <groupId>org.glassfish.jersey.containers</groupId> + <artifactId>jersey-container-servlet</artifactId> + <version>${version.jersey}</version> </dependency> <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-handler</artifactId> - <version>${version.netty}</version> + <groupId>org.glassfish.jersey.core</groupId> + <artifactId>jersey-client</artifactId> + <version>${version.jersey}</version> </dependency> - - <!-- Apache Commons --> <dependency> - <groupId>commons-cli</groupId> - <artifactId>commons-cli</artifactId> - <version>1.5.0</version> + <groupId>org.glassfish.jersey.inject</groupId> + <artifactId>jersey-hk2</artifactId> + <version>${version.jersey}</version> </dependency> <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.16.0</version> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest</artifactId> + <version>${version.hamcrest}</version> </dependency> <dependency> - <groupId>commons-fileupload</groupId> - <artifactId>commons-fileupload</artifactId> - <version>1.5</version> + <groupId>org.hibernate.orm</groupId> + <artifactId>hibernate-core</artifactId> + <version>6.5.3.Final</version> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-collections4</artifactId> - <version>4.4</version> + <groupId>org.hibernate.validator</groupId> + <artifactId>hibernate-validator</artifactId> + <version>8.0.1.Final</version> </dependency> <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>2.13.0</version> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-reflect</artifactId> + <version>${version.kotlin}</version> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-lang3</artifactId> - <version>3.14.0</version> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-stdlib</artifactId> + <version>${version.kotlin}</version> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-math3</artifactId> - <version>3.6.1</version> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-stdlib-common</artifactId> + <version>${version.kotlin}</version> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-text</artifactId> - <version>1.10.0</version> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-stdlib-jdk7</artifactId> + <version>${version.kotlin}</version> </dependency> <dependency> - <groupId>commons-logging</groupId> - <artifactId>commons-logging</artifactId> - <version>1.2</version> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-stdlib-jdk8</artifactId> + <version>${version.kotlin}</version> </dependency> <dependency> - <groupId>commons-net</groupId> - <artifactId>commons-net</artifactId> - <version>3.9.0</version> + <groupId>org.json</groupId> + <artifactId>json</artifactId> + <version>20240303</version> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-jexl3</artifactId> - <version>3.2.1</version> + <groupId>org.kie</groupId> + <artifactId>kie-api</artifactId> + <version>${version.drools}</version> </dependency> <dependency> - <groupId>commons-beanutils</groupId> - <artifactId>commons-beanutils</artifactId> - <version>${version.beanutils}</version> + <groupId>org.kie</groupId> + <artifactId>kie-ci</artifactId> + <version>${version.drools}</version> </dependency> - <!-- Github --> <dependency> - <groupId>com.github.docker-java</groupId> - <artifactId>docker-java-core</artifactId> - <version>${version.docker-java}</version> - <scope>test</scope> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>42.7.2</version> </dependency> <dependency> - <groupId>com.github.docker-java</groupId> - <artifactId>docker-java</artifactId> - <version>${version.docker-java}</version> - <scope>test</scope> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>1.18.30</version> </dependency> - <!-- Hibernate --> <dependency> - <groupId>org.hibernate.orm</groupId> - <artifactId>hibernate-core</artifactId> - <version>6.3.2.Final</version> + <groupId>org.slf4j</groupId> + <artifactId>jcl-over-slf4j</artifactId> + <version>${version.slf4j}</version> </dependency> <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-core-jakarta</artifactId> - <version>5.6.15.Final</version> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>${version.slf4j}</version> </dependency> <dependency> - <groupId>org.hibernate.common</groupId> - <artifactId>hibernate-commons-annotations</artifactId> - <version>6.0.6.Final</version> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-ext</artifactId> + <version>${version.slf4j}</version> </dependency> <dependency> - <groupId>org.hibernate.validator</groupId> - <artifactId>hibernate-validator</artifactId> - <version>8.0.1.Final</version> + <groupId>org.springdoc</groupId> + <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> + <version>2.1.0</version> </dependency> - - <!-- Spring --> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> + <artifactId>spring-aop</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> + <artifactId>spring-aspects</artifactId> <version>${version.spring}</version> </dependency> <dependency> @@ -760,12 +712,12 @@ </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-jcl</artifactId> + <artifactId>spring-context</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-web</artifactId> + <artifactId>spring-core</artifactId> <version>${version.spring}</version> </dependency> <dependency> @@ -775,7 +727,7 @@ </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-webmvc</artifactId> + <artifactId>spring-jcl</artifactId> <version>${version.spring}</version> </dependency> <dependency> @@ -785,70 +737,63 @@ </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-webflux</artifactId> + <artifactId>spring-orm</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-aspects</artifactId> + <artifactId>spring-tx</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-orm</artifactId> + <artifactId>spring-web</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-tx</artifactId> + <artifactId>spring-webflux</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> - <artifactId>spring-aop</artifactId> + <artifactId>spring-webmvc</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-web</artifactId> + <artifactId>spring-boot</artifactId> <version>${version.springboot}</version> - <!-- Exclude the default Jackson dependency --> - <exclusions> - <exclusion> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-json</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-webflux</artifactId> + <artifactId>spring-boot-autoconfigure</artifactId> <version>${version.springboot}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-tomcat</artifactId> + <artifactId>spring-boot-starter-actuator</artifactId> <version>${version.springboot}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-security</artifactId> + <artifactId>spring-boot-starter-aop</artifactId> <version>${version.springboot}</version> </dependency> <dependency> - <groupId>org.springframework.security</groupId> - <artifactId>spring-security-web</artifactId> - <version>${version.spring-security}</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-jpa</artifactId> + <version>${version.springboot}</version> </dependency> <dependency> - <groupId>org.springframework.security</groupId> - <artifactId>spring-security-config</artifactId> - <version>${version.spring-security}</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-security</artifactId> + <version>${version.springboot}</version> </dependency> <dependency> - <groupId>org.springframework.security</groupId> - <artifactId>spring-security-test</artifactId> - <version>${version.spring-security}</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-tomcat</artifactId> + <version>${version.springboot}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -857,157 +802,181 @@ </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-actuator</artifactId> + <artifactId>spring-boot-starter-web</artifactId> <version>${version.springboot}</version> + <!-- Exclude the default Jackson dependency --> + <exclusions> + <exclusion> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-json</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-data-jpa</artifactId> + <artifactId>spring-boot-starter-webflux</artifactId> <version>${version.springboot}</version> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-autoconfigure</artifactId> - <version>${version.springboot}</version> + <groupId>org.springframework.data</groupId> + <artifactId>spring-data-commons</artifactId> + <version>${version.spring-data}</version> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-aop</artifactId> - <version>${version.springboot}</version> + <groupId>org.springframework.data</groupId> + <artifactId>spring-data-jpa</artifactId> + <version>${version.spring-data}</version> </dependency> <dependency> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-starter-test</artifactId> - <version>${version.springboot}</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>com.vaadin.external.google</groupId> - <artifactId>android-json</artifactId> - </exclusion> - </exclusions> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-core</artifactId> + <version>${version.spring-security}</version> </dependency> <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-core</artifactId> - <version>10.1.19</version> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-config</artifactId> + <version>${version.spring-security}</version> </dependency> <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-test</artifactId> - <version>${version.spring}</version> - <scope>test</scope> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-test</artifactId> + <version>${version.spring-security}</version> </dependency> <dependency> - <groupId>io.micrometer</groupId> - <artifactId>micrometer-registry-prometheus</artifactId> - <version>${version.micrometer}</version> - <scope>runtime</scope> + <groupId>org.springframework.security</groupId> + <artifactId>spring-security-web</artifactId> + <version>${version.spring-security}</version> </dependency> <dependency> - <groupId>io.micrometer</groupId> - <artifactId>micrometer-observation</artifactId> - <version>${version.micrometer}</version> + <groupId>org.yaml</groupId> + <artifactId>snakeyaml</artifactId> + <version>2.3</version> </dependency> <dependency> - <groupId>io.micrometer</groupId> - <artifactId>micrometer-core</artifactId> - <version>${version.micrometer}</version> + <groupId>com.github.docker-java</groupId> + <artifactId>docker-java</artifactId> + <version>${version.docker-java}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.bouncycastle</groupId> - <artifactId>bcpkix-fips</artifactId> - <version>1.0.7</version> + <groupId>com.github.docker-java</groupId> + <artifactId>docker-java-core</artifactId> + <version>${version.docker-java}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.micrometer</groupId> - <artifactId>micrometer-tracing-bridge-otel</artifactId> - <version>1.1.8</version> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>2.2.224</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry.instrumentation</groupId> - <artifactId>opentelemetry-kafka-clients-2.6</artifactId> - <version>${version.opentel}-alpha</version> + <groupId>com.openpojo</groupId> + <artifactId>openpojo</artifactId> + <version>0.9.1</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-exporter-otlp</artifactId> - <version>${version.opentel}</version> + <groupId>io.cucumber</groupId> + <artifactId>cucumber-java</artifactId> + <version>${version.cucumber}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId> - <version>${version.opentel}-alpha</version> + <groupId>io.cucumber</groupId> + <artifactId>cucumber-junit</artifactId> + <version>${version.cucumber}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-sdk-extension-jaeger-remote-sampler</artifactId> - <version>${version.opentel}</version> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <version>3.25.3</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-context</artifactId> - <version>${version.opentel}</version> + <groupId>org.awaitility</groupId> + <artifactId>awaitility</artifactId> + <version>4.2.0</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.opentelemetry</groupId> - <artifactId>opentelemetry-api</artifactId> - <version>${version.opentel}</version> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter</artifactId> + <version>${version.jupiter}</version> + <scope>test</scope> </dependency> - - <!-- Kotlin dependencies --> <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-stdlib</artifactId> - <version>${version.kotlin}</version> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>${version.jupiter}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-stdlib-jdk8</artifactId> - <version>${version.kotlin}</version> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-engine</artifactId> + <version>${version.jupiter}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-stdlib-jdk7</artifactId> - <version>${version.kotlin}</version> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <version>${version.jupiter}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-reflect</artifactId> - <version>${version.kotlin}</version> + <groupId>org.mock-server</groupId> + <artifactId>mockserver-client-java</artifactId> + <version>${version.mockserver}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-stdlib-common</artifactId> - <version>${version.kotlin}</version> + <groupId>org.mock-server</groupId> + <artifactId>mockserver-netty</artifactId> + <version>${version.mockserver}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${version.mockito}</version> + <scope>test</scope> </dependency> - - <!-- Transient dependencies --> <dependency> - <groupId>com.squareup.okhttp3</groupId> - <artifactId>okhttp</artifactId> - <version>4.12.0</version> + <groupId>org.mockito</groupId> + <artifactId>mockito-junit-jupiter</artifactId> + <version>${version.mockito}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>io.projectreactor</groupId> - <artifactId>reactor-core</artifactId> - <version>3.6.5</version> + <groupId>org.springframework</groupId> + <artifactId>spring-test</artifactId> + <version>${version.spring}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>net.bytebuddy</groupId> - <artifactId>byte-buddy</artifactId> - <version>${version.bytebuddy}</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <version>${version.springboot}</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>com.vaadin.external.google</groupId> + <artifactId>android-json</artifactId> + </exclusion> + </exclusions> </dependency> <dependency> - <groupId>net.bytebuddy</groupId> - <artifactId>byte-buddy-agent</artifactId> - <version>${version.bytebuddy}</version> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-test</artifactId> + <version>${version.springboot}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.jboss.logging</groupId> - <artifactId>jboss-logging</artifactId> - <version>3.5.3.Final</version> - <scope>runtime</scope> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-test-autoconfigure</artifactId> + <version>${version.springboot}</version> + <scope>test</scope> </dependency> </dependencies> </dependencyManagement> @@ -1015,7 +984,7 @@ <connection>scm:git:ssh://git.onap.org:29418/${project.groupId}</connection> <developerConnection>scm:git:ssh://git.onap.org:29418/${project.groupId}</developerConnection> <tag>HEAD</tag> - <url>https://wiki.onap.org/display/DW/Integration+Project</url> + <url>https://lf-onap.atlassian.net/wiki/spaces/DW/pages/16230649/Integration+Project</url> </scm> <profiles> <profile> @@ -1170,7 +1139,7 @@ <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> - <version>9.1.0</version> + <version>10.0.3</version> <executions> <execution> <goals> @@ -1487,7 +1456,7 @@ <dependency> <groupId>org.onap.policy.parent</groupId> <artifactId>checkstyle</artifactId> - <version>[4.1.2,)</version> + <version>${version.parent.checkstyle}</version> <scope>compile</scope> </dependency> </dependencies> @@ -1502,10 +1471,6 @@ <goal>integration-test</goal> <goal>verify</goal> </goals> - <configuration> - <!-- Sets the VM argument line used when integration tests are run. --> - <argLine>${failsafeArgLine}</argLine> - </configuration> </execution> </executions> </plugin> diff --git a/integration/src/main/resources/release/15.0.0-ONAP_pf_release_data.csv b/integration/src/main/resources/release/15.0.0-ONAP_pf_release_data.csv new file mode 100644 index 00000000..9a0dd41b --- /dev/null +++ b/integration/src/main/resources/release/15.0.0-ONAP_pf_release_data.csv @@ -0,0 +1,13 @@ +Repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images +policy/parent,5.0.1,5.0.2-SNAPSHOT,0, +policy/docker,4.0.1,4.0.2-SNAPSHOT,1,'policy-jre-alpine':'policy-jdk-alpine':'policy-db-migrator' +policy/common,3.0.1,3.0.2-SNAPSHOT,0, +policy/models,4.0.1,4.0.2-SNAPSHOT,2,'policy-models-simulator' +policy/api,4.0.1,4.0.2-SNAPSHOT,1,'policy-api' +policy/pap,4.0.1,4.0.2-SNAPSHOT,1,'policy-pap' +policy/apex-pdp,4.0.1,4.0.2-SNAPSHOT,1,'policy-apex-pdp' +policy/drools-pdp,3.0.1,3.0.2-SNAPSHOT,1,'policy-drools' +policy/xacml-pdp,4.0.1,4.0.2-SNAPSHOT,1,'policy-xacml-pdp' +policy/distribution,4.0.1,4.0.2-SNAPSHOT,1,'policy-distribution' +policy/clamp,8.0.1,8.0.2-SNAPSHOT,8,'policy-clamp-ac-pf-ppnt':'policy-clamp-ac-k8s-ppnt':'policy-clamp-ac-http-ppnt':'policy-clamp-ac-a1pms-ppnt':'policy-clamp-runtime-acm':'policy-clamp-acm-element-impl':'policy-clamp-ac-kserve-ppnt':'policy-clamp-ac-sim-ppnt' +policy/drools-applications,3.0.1,3.0.2-SNAPSHOT,0,'policy-pdpd-cl' diff --git a/integration/src/main/resources/release/15.0.0-PF-In_release_data.csv b/integration/src/main/resources/release/15.0.0-PF-In_release_data.csv new file mode 100644 index 00000000..4527c2f6 --- /dev/null +++ b/integration/src/main/resources/release/15.0.0-PF-In_release_data.csv @@ -0,0 +1,14 @@ +Repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images +policy/parent,5.0.0,5.0.1-SNAPSHOT,0, +policy/docker,4.0.0,4.0.1-SNAPSHOT,1,'policy-jre-alpine':'policy-jdk-alpine':'policy-db-migrator' +policy/common,3.0.0,3.0.1-SNAPSHOT,0, +policy/models,4.0.0,4.0.1-SNAPSHOT,2,'policy-models-simulator' +policy/api,4.0.0,4.0.1-SNAPSHOT,1,'policy-api' +policy/pap,4.0.0,4.0.1-SNAPSHOT,1,'policy-pap' +policy/apex-pdp,4.0.0,4.0.1-SNAPSHOT,1,'policy-apex-pdp' +policy/drools-pdp,3.0.0,3.0.1-SNAPSHOT,1,'policy-drools' +policy/xacml-pdp,4.0.0,4.0.1-SNAPSHOT,1,'policy-xacml-pdp' +policy/distribution,4.0.0,4.0.1-SNAPSHOT,1,'policy-distribution' +policy/clamp,8.0.0,8.0.1-SNAPSHOT,8,'policy-clamp-ac-pf-ppnt':'policy-clamp-ac-k8s-ppnt':'policy-clamp-ac-http-ppnt':'policy-clamp-ac-a1pms-ppnt':'policy-clamp-runtime-acm':'policy-clamp-acm-element-impl':'policy-clamp-ac-kserve-ppnt':'policy-clamp-ac-sim-ppnt' +policy/gui,4.0.0,4.0.1-SNAPSHOT,1,'policy-gui' +policy/drools-applications,3.0.0,3.0.1-SNAPSHOT,0,'policy-pdpd-cl' diff --git a/integration/src/main/resources/release/16.0.0-PF-I1_pf_release_data.csv b/integration/src/main/resources/release/16.0.0-PF-I1_pf_release_data.csv new file mode 100644 index 00000000..b486e87f --- /dev/null +++ b/integration/src/main/resources/release/16.0.0-PF-I1_pf_release_data.csv @@ -0,0 +1,14 @@ +Repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images +policy/parent,5.1.0,5.1.1-SNAPSHOT,0, +policy/docker,4.1.0,4.1.1-SNAPSHOT,1,'policy-jre-alpine':'policy-jdk-alpine':'policy-db-migrator' +policy/common,3.1.0,3.1.1-SNAPSHOT,0, +policy/models,4.1.0,4.1.1-SNAPSHOT,2,'policy-models-simulator' +policy/api,4.1.0,4.1.1-SNAPSHOT,1,'policy-api' +policy/pap,4.1.0,4.1.1-SNAPSHOT,1,'policy-pap' +policy/apex-pdp,4.1.0,4.1.1-SNAPSHOT,1,'policy-apex-pdp' +policy/drools-pdp,3.1.0,3.1.1-SNAPSHOT,1,'policy-drools' +policy/xacml-pdp,4.1.0,4.1.1-SNAPSHOT,1,'policy-xacml-pdp' +policy/distribution,4.1.0,4.1.1-SNAPSHOT,1,'policy-distribution' +policy/clamp,8.1.0,8.1.1-SNAPSHOT,8,'policy-clamp-ac-pf-ppnt':'policy-clamp-ac-k8s-ppnt':'policy-clamp-ac-http-ppnt':'policy-clamp-ac-a1pms-ppnt':'policy-clamp-runtime-acm':'policy-clamp-acm-element-impl':'policy-clamp-ac-kserve-ppnt':'policy-clamp-ac-sim-ppnt' +policy/drools-applications,3.1.0,3.1.1-SNAPSHOT,0,'policy-pdpd-cl' +policy/opa-pdp,1.0.0,1.0.1-SNAPSHOT,1,'policy-opa-pdp' diff --git a/integration/src/main/resources/release/pf_release_data.csv b/integration/src/main/resources/release/pf_release_data.csv index 4322b176..b486e87f 100644 --- a/integration/src/main/resources/release/pf_release_data.csv +++ b/integration/src/main/resources/release/pf_release_data.csv @@ -1,14 +1,14 @@ Repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images -policy/parent,4.1.4,4.1.5-SNAPSHOT,0, -policy/docker,3.1.3,3.1.4-SNAPSHOT,1,'policy-jre-alpine':'policy-jdk-alpine':'policy-db-migrator' -policy/common,2.1.3,2.1.4-SNAPSHOT,0, -policy/models,3.1.3,3.1.4-SNAPSHOT,2,'policy-models-simulator' -policy/api,3.1.3,3.1.4-SNAPSHOT,1,'policy-api' -policy/pap,3.1.3,3.1.4-SNAPSHOT,1,'policy-pap' -policy/apex-pdp,3.1.3,3.1.4-SNAPSHOT,1,'policy-apex-pdp' -policy/drools-pdp,2.1.3,2.1.4-SNAPSHOT,1,'policy-drools' -policy/xacml-pdp,3.1.3,3.1.4-SNAPSHOT,1,'policy-xacml-pdp' -policy/distribution,3.1.3,3.1.4-SNAPSHOT,1,'policy-distribution' -policy/clamp,7.1.3,7.1.4-SNAPSHOT,8,'policy-clamp-ac-pf-ppnt':'policy-clamp-ac-k8s-ppnt':'policy-clamp-ac-http-ppnt':'policy-clamp-ac-a1pms-ppnt':'policy-clamp-runtime-acm':'policy-clamp-acm-element-impl':'policy-clamp-ac-kserve-ppnt':'policy-clamp-ac-sim-ppnt' -policy/gui,3.1.3,3.1.4-SNAPSHOT,2,'policy-gui' -policy/drools-applications,2.1.3,2.1.4-SNAPSHOT,1,'policy-pdpd-cl' +policy/parent,5.1.0,5.1.1-SNAPSHOT,0, +policy/docker,4.1.0,4.1.1-SNAPSHOT,1,'policy-jre-alpine':'policy-jdk-alpine':'policy-db-migrator' +policy/common,3.1.0,3.1.1-SNAPSHOT,0, +policy/models,4.1.0,4.1.1-SNAPSHOT,2,'policy-models-simulator' +policy/api,4.1.0,4.1.1-SNAPSHOT,1,'policy-api' +policy/pap,4.1.0,4.1.1-SNAPSHOT,1,'policy-pap' +policy/apex-pdp,4.1.0,4.1.1-SNAPSHOT,1,'policy-apex-pdp' +policy/drools-pdp,3.1.0,3.1.1-SNAPSHOT,1,'policy-drools' +policy/xacml-pdp,4.1.0,4.1.1-SNAPSHOT,1,'policy-xacml-pdp' +policy/distribution,4.1.0,4.1.1-SNAPSHOT,1,'policy-distribution' +policy/clamp,8.1.0,8.1.1-SNAPSHOT,8,'policy-clamp-ac-pf-ppnt':'policy-clamp-ac-k8s-ppnt':'policy-clamp-ac-http-ppnt':'policy-clamp-ac-a1pms-ppnt':'policy-clamp-runtime-acm':'policy-clamp-acm-element-impl':'policy-clamp-ac-kserve-ppnt':'policy-clamp-ac-sim-ppnt' +policy/drools-applications,3.1.0,3.1.1-SNAPSHOT,0,'policy-pdpd-cl' +policy/opa-pdp,1.0.0,1.0.1-SNAPSHOT,1,'policy-opa-pdp' diff --git a/integration/src/main/scripts/release/bumpSnapshots.sh b/integration/src/main/scripts/release/bumpSnapshots.sh index 73eccd9e..e24cf0e9 100755 --- a/integration/src/main/scripts/release/bumpSnapshots.sh +++ b/integration/src/main/scripts/release/bumpSnapshots.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2021-2022 Nordix Foundation. +# Copyright (C) 2021-2022,2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ declare -a pf_repos=( "policy/apex-pdp" "policy/xacml-pdp" "policy/distribution" - "policy/gui" "policy/clamp" "policy/drools-applications" ) diff --git a/integration/src/main/scripts/release/getReleaseData.sh b/integration/src/main/scripts/release/getReleaseData.sh index 4ebcdb62..36045f1d 100755 --- a/integration/src/main/scripts/release/getReleaseData.sh +++ b/integration/src/main/scripts/release/getReleaseData.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2021-2022 Nordix Foundation. +# Copyright (C) 2021-2022,2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,6 @@ declare -a pf_repos=( "policy/xacml-pdp" "policy/distribution" "policy/clamp" - "policy/gui" "policy/drools-applications" ) diff --git a/integration/src/main/scripts/release/newReleaseSnapshots.sh b/integration/src/main/scripts/release/newReleaseSnapshots.sh index 49277d11..47b66886 100755 --- a/integration/src/main/scripts/release/newReleaseSnapshots.sh +++ b/integration/src/main/scripts/release/newReleaseSnapshots.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2022-2023 Nordix Foundation. +# Copyright (C) 2022-2023,2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ declare -a pf_repos=( "policy/apex-pdp" "policy/xacml-pdp" "policy/distribution" - "policy/gui" "policy/clamp" "policy/drools-applications" ) diff --git a/integration/src/main/scripts/release/releasePhase.sh b/integration/src/main/scripts/release/releasePhase.sh index 800768e3..be3b1083 100755 --- a/integration/src/main/scripts/release/releasePhase.sh +++ b/integration/src/main/scripts/release/releasePhase.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2022 Nordix Foundation. +# Copyright (C) 2022,2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -334,7 +334,7 @@ release_phase_10() { } release_phase_11() { - echo "Updating snapshots for repos, updating references on policy/drools-applications, policy/gui . . ." + echo "Updating snapshots for repos, updating references on policy/drools-applications . . ." bumpSnapshots.sh \ -d "$release_data_file" \ -l "$repo_location" \ @@ -344,47 +344,34 @@ release_phase_11() { -d "$release_data_file" \ -l "$repo_location" \ -r "policy/drools-applications" - updateRefs.sh \ - -pcmxk \ - -d "$release_data_file" \ - -l "$repo_location" \ - -r "policy/gui" generateCommit.sh \ -l "$repo_location" \ -r "policy/drools-applications" \ -i "$issue_id" \ -e "update references in policy/drools-applications pom" \ -m "updated references in the policy/drools-applications pom" - generateCommit.sh \ - -l "$repo_location" \ - -r "policy/gui" \ - -i "$issue_id" \ - -e "update references in policy/gui pom" \ - -m "updated references in the policy/gui pom" - echo "Updated snapshots for repos, updated references on policy/drools-applications, policy/gui" + echo "Updated snapshots for repos, updated references on policy/drools-applications" } release_phase_12() { echo "Generating artifact release yaml file and commit for policy/drools-applications . . ." releaseRepo.sh -d "$release_data_file" -l "$repo_location" -r policy/drools-applications -i "$issue_id" - releaseRepo.sh -d "$release_data_file" -l "$repo_location" -r policy/gui -i "$issue_id" echo "Generated artifact release yaml file and commit for policy/drools-applications" } release_phase_13() { echo "Generating docker release yaml file and commit for policy/drools-applications . . ." releaseRepoImages.sh -d "$release_data_file" -l "$repo_location" -r policy/drools-applications -i "$issue_id" - releaseRepoImages.sh -d "$release_data_file" -l "$repo_location" -r policy/gui -i "$issue_id" echo "Generated docker release yaml file and commit for policy/drools-applications" } release_phase_14() { - echo "Updating snapshots on policy/drools-applications and policy/gui . . ." + echo "Updating snapshots on policy/drools-applications . . ." bumpSnapshots.sh \ -d "$release_data_file" \ -l "$repo_location" \ -i "$issue_id" - echo "Updated snapshots on policy/drools-applications and policy/gui" + echo "Updated snapshots on policy/drools-applications" } release_phase_15() { diff --git a/integration/src/main/scripts/release/resolveRefs.sh b/integration/src/main/scripts/release/resolveRefs.sh index 5124db72..f62b90cc 100755 --- a/integration/src/main/scripts/release/resolveRefs.sh +++ b/integration/src/main/scripts/release/resolveRefs.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2023 Nordix Foundation. +# Copyright (C) 2023-2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ declare -a pf_repos=( "policy/apex-pdp" "policy/xacml-pdp" "policy/distribution" - "policy/gui" "policy/clamp" "policy/drools-applications" ) diff --git a/integration/src/main/scripts/release/updateOomImages.sh b/integration/src/main/scripts/release/updateOomImages.sh index 38fe5c3b..fb4166d4 100755 --- a/integration/src/main/scripts/release/updateOomImages.sh +++ b/integration/src/main/scripts/release/updateOomImages.sh @@ -4,7 +4,7 @@ # ============LICENSE_START================================================ # ONAP # ========================================================================= -# Copyright (C) 2021-2022 Nordix Foundation. +# Copyright (C) 2021-2022,2024 Nordix Foundation. # ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,6 @@ declare -a pf_repos=( "policy/apex-pdp" "policy/xacml-pdp" "policy/distribution" - "policy/gui" "policy/clamp" "policy/drools-applications" ) @@ -24,7 +24,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.onap.policy.parent</groupId> <artifactId>policy-parent</artifactId> - <version>5.0.0-SNAPSHOT</version> + <version>5.1.1-SNAPSHOT</version> <packaging>pom</packaging> <properties> @@ -65,7 +65,7 @@ <plugin> <groupId>net.revelc.code.formatter</groupId> <artifactId>formatter-maven-plugin</artifactId> - <version>2.11.0</version> + <version>2.24.1</version> <configuration> <configFile>${project.basedir}/onap-java-formatter.xml</configFile> </configuration> @@ -76,7 +76,7 @@ <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> - <version>1.26.1</version> + <version>2.43.0</version> <configuration> <java> <importOrder> diff --git a/releases/5.0.0.yaml b/releases/5.0.0.yaml new file mode 100644 index 00000000..0cad4ff5 --- /dev/null +++ b/releases/5.0.0.yaml @@ -0,0 +1,4 @@ +distribution_type: 'maven' +version: '5.0.0' +project: 'policy-parent' +log_dir: 'policy-parent-maven-stage-master/1417/' diff --git a/releases/5.0.1.yaml b/releases/5.0.1.yaml new file mode 100644 index 00000000..ffd9a357 --- /dev/null +++ b/releases/5.0.1.yaml @@ -0,0 +1,4 @@ +distribution_type: 'maven' +version: '5.0.1' +project: 'policy-parent' +log_dir: 'policy-parent-maven-stage-master/1418/' diff --git a/releases/5.1.0.yaml b/releases/5.1.0.yaml new file mode 100644 index 00000000..381ee6f9 --- /dev/null +++ b/releases/5.1.0.yaml @@ -0,0 +1,4 @@ +distribution_type: 'maven' +version: '5.1.0' +project: 'policy-parent' +log_dir: 'policy-parent-maven-stage-master/1420/' diff --git a/resources/pom.xml b/resources/pom.xml index 2648a57c..37f77c8c 100644 --- a/resources/pom.xml +++ b/resources/pom.xml @@ -25,7 +25,7 @@ <parent> <groupId>org.onap.policy.parent</groupId> <artifactId>policy-parent</artifactId> - <version>5.0.0-SNAPSHOT</version> + <version>5.1.1-SNAPSHOT</version> </parent> <artifactId>policy-parent-resources</artifactId> diff --git a/version.properties b/version.properties index 295674ed..98a488c3 100644 --- a/version.properties +++ b/version.properties @@ -3,8 +3,8 @@ # because they are used in Jenkins, whose plug-in doesn't support major=5 -minor=0 -patch=0 +minor=1 +patch=1 base_version=${major}.${minor}.${patch} |