Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Below is the policy type defined to support native apex policies.

Below is an example of TOSCA policy for native Drools rules2.1.2 TOSCA Policy for Native Apex policy type

Code Block
languageyml
titlePolicy Type for Native Apex PolicyExample TOSCA policy for native apex policy type
linenumberstrue
collapsetrue
tosca_definitions_version: tosca_simple_yaml_1_0_0,
policy_types:
    onap.policies.Native:
        derived_from: tosca.policies.Root
        description: a base policy type for all native PDP policies
        version: 1.0.0
    onap.policies.native.Apex:
        derived_from: onap.policies.Native
        description: a policy type for native apex policies
        version: 1.0.0
        properties:
            engine_service:
                type: onap.datatypes.native.apex.EngineService
description: APEX Engine Service Parameters inputs: type: map description: Inputs for handling events coming  into thedescription: APEX engine
entry_schema:
type: onap.datatypes.native.apex.EventHandler
outputs:Engine Service Parameters
            inputs:
                type: map
                description: OutputsInputs for handling events goingcoming outinto of the APEX engine
                entry_schema:
                    type: onap.datatypes.native.apex.EventHandler
environment:  type: list description: Envioronmental parameters for the APEX engine entry_schema: typeoutputs:
onap.datatypes.native.apex.Environment  data_types:
onap.datatypes.native.apex.EngineService:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
description: Specifies the engine name
required: false
default: "ApexEngineService"
version:
type: string
description: Specifies the engine version in double dotted format
required: false
default: "1.0.0"
id:
type: int
description: Specifies the engine id
required: true
instance_count:
type: int
description: Specifies the number of engine threads that should be run
required: true
deployment_port:
type: int
description: Specifies the port to connect to for engine administration
required: false
default: 1
policy_model_file_name:
type: string
description: The name of the file from which to read the APEX policy model
required: false
default: ""
policy_type_impl:
type: string
description: The policy type implementation from which to read the APEX policy model
required: false
default: ""
periodic_event_period:
type: string
description: The time interval in milliseconds for the periodic scanning event, 0 means don't scan
required: false
default: 0
engine:              type: map
                description: Outputs for handling events going out of the APEX engine
                entry_schema:
                    type: onap.datatypes.native.apex.EventHandler
            environment:
                type: list
                description: Envioronmental parameters for the APEX engine
                entry_schema:
                    type: onap.datatypes.native.apex.engineservice.Engine
descriptionEnvironment

data_types:
The parameters for all engines in the APEX engine service
required: true
onap.datatypes.native.apex.EventHandlerEngineService:
        derived_from: tosca.datatypes.Root
        properties:
 name:
type: string
description: Specifies the event handler name, if not specified this is set to the key name
required: false
carrier_technology:
type: onap.datatypes.native.apex.CarrierTechnology           name:
                type: string
                description: Specifies the carrier technology of the event handler (such as REST/Web Socket/Kafka)
required: true
event_protocol:
type: onap.datatypes.native.apex.EventProtocol
description: Specifies the event protocol of events for the event handler (such as Yaml/JSON/XML/POJO)
required: true
event_name:
type: string
 engine name
                required: false
                default: "ApexEngineService"
            version:
                type: string
                description: Specifies the engine version in double dotted format
                required: false
                default: "1.0.0"
            id:
                type: int
                description: Specifies the engine id
                required: true
            instance_count:
                type: int
                description: Specifies the number of engine threads that should be run
                required: true
            deployment_port:
                type: int
                description: Specifies the port to connect to for engine administration
                required: false
                default: 1
            policy_model_file_name:
                type: string
                description: The name of the file from which to read the APEX policy model
                required: false
                default: ""
            policy_type_impl:
                type: string
                description: The policy type implementation from which to read the APEX policy model
                required: false
                default: ""
            periodic_event_period:
                type: string
                description: The time interval in milliseconds for the periodic scanning event, 0 means don't scan
                required: false
                default: 0
            engine:
                type: onap.datatypes.native.apex.engineservice.Engine
                description: The parameters for all engines in the APEX engine service
                required: true
    onap.datatypes.native.apex.EventHandler:
        derived_from: tosca.datatypes.Root
        properties:
            name:
                type: string
                description: Specifies the event handler name, if not specified this is set to the key name
                required: false
            carrier_technology:
                type: onap.datatypes.native.apex.CarrierTechnology
                description: Specifies the carrier technology of the event handler (such as REST/Web Socket/Kafka)
                required: true
            event_protocol:
                type: onap.datatypes.native.apex.EventProtocol
                description: Specifies the event protocol of events for the event handler (such as Yaml/JSON/XML/POJO)
                required: true
            event_name:
                type: string
                description: Specifies the event name for events on this event handler, if not specified, the event name is read from or written to the event being received or sent
                required: false
            event_name_filter:
                type: string
                description: Specifies a filter as a regular expression, events that do not match the filter are dropped, the default is to let all events through
                required: false
            synchronous_mode:
                type: bool
                description: Specifies the event handler is syncronous (receive event and send response)
                required: false
                default: false
            synchronous_peer:
                type: string
                description: The peer event handler (output for input or input for output) of this event handler in synchronous mode, this parameter is mandatory if the event handler is in synchronous mode
                required: false
                default: ""
            synchronous_timeout:
                type: int
                description: The timeout in milliseconds for responses to be issued by APEX torequests, this parameter is mandatory if the event handler is in synchronous mode
                required: false
                default: ""
            requestor_mode:
                type: bool
                description: Specifies the event namehandler is forin eventsrequestor onmode this(send event handler, if not specified, the event name is read from or written to the event being received or sent and wait for response mode)
                required: false
event_name_filter: type: string description: Specifies a filter as a regular expression, events that do not match thedefault: filterfalse
are dropped, the default is to let all events through required: false synchronousrequestor_mode:
type: bool
description: Specifies the event handler is syncronous (receive event and send response)
required: false
default: false
synchronous_peer:
type: stringpeer:
                type: string
                description: The peer event handler (output for input or input for output) of this event handler in synchronousrequestor mode, this parameter is mandatory if the event handler is in synchronousrequestor mode
required: false default: "" synchronous_timeout: type: int description: The timeout in milliseconds for responses to be issuedrequired: byfalse
APEX torequests, this parameter is mandatory if the event handler is in synchronous mode required: false default: ""
requestor_mode:
type: bool
description: Specifies the event handler
is in requestor mode (send event and wait for response mode) required: false default: false requestor_peer:
type: string
description: The peer event handler (output for input or input for output) of this event handler in requestor mode, this parameter is mandatory if the event handler is in requestor mode
required: false
default: ""
requestor_timeout:
type: inttimeout:
                type: int
                description: The timeout in milliseconds for wait for responses to requests, this parameter is mandatory if the event handler is in requestor mode
                required: false
                default: ""
    onap.datatypes.native.apex.CarrierTechnology:
        derived_from: tosca.datatypes.Root
properties:
label:
type: string.Root
        properties:
            label:
                type: string
                description: The label (name) of the carrier technology (such as REST, Kafka, WebSocket)
required:    true plugin_parameter_class_name: type: string description: The class name of the class that overridesrequired: defaulttrue
handling of event input or output for this carrier technology, defaults to the supplied input or output class
required: false
onap.datatypes.native.apex.EventProtocol:
derived_from: tosca.datatypes.Root
properties:
label:
type: string
description: The label (name) of the event protocol (such as Yaml, JSON, XML, or POJO)
required: true
event_protocol_plugin_class:
type: string plugin_parameter_class_name:
                type: string
                description: The class name of the class that overrides default handling of theevent input eventor protocoloutput for this carrier technology, defaults to the supplied eventinput or protocoloutput class
required: false onap.datatypes.native.apex.Environmental: derived_from: tosca.datatypes.Root properties: name: type: string description: The name of the environment variable required: true
value:
type: string
description: The value of the environment variable
required: truefalse
    onap.datatypes.native.apex.engineservice.Engine:EventProtocol:
        derived_from: tosca.datatypes.Root
properties: context: type: onap.datatypes.native.apex.engineservice.engine.Context description: The properties for handlingproperties:
context in APEX engines, defaults to using Java maps for context required: false executorslabel:
type: map
description: The plugins for policy executors used in engines such as javascript, MVEL, Jython required: true entry_schema: descriptiontype: Thestring
plugin class path for this policy executor type: string onap.datatypes.native.apex.engineservice.engine.Context: derived_from: tosca.datatypes.Root properties: distributor: type: onap.datatypes.native.apex.Plugin description: The label plugin(name) toof bethe usedevent forprotocol distributing(such contextas betweenYaml, APEXJSON, PDPsXML, ator runtimePOJO)
required: false schemas: type: map description: The plugins for context schemas available in APEX PDPs such asrequired: Javatrue
and Avro required: false entry_schema: type: onap.datatypes.native.apex.Plugin locking: type: onap.datatypes.native.apex.plugin description: The event_protocol_plugin_class:
to be used for locking context in and between APEX PDPs at runtime required: false persistence: type: onap.datatypes.native.apex.Plugin
description: The plugin to be used for persisting context for APEX PDPs at runtime
required: false
onap.datatypes.native.apex.Plugin:
derived_from: tosca.datatypes.Root
properties:
name:
type: string
description: The name of the executor such as Javascript, Jython or MVEL
required: true
plugin_class_name:
type: string
description: The class path of the plugin class for this executor

2.1.2 TOSCA Policy for Native Drools Rules

Below is an example of TOSCA policy for native Drools rules

Code Block
languageyml
titleExample TOSCA policy for native Drools rules
linenumberstrue
collapsetrue
tosca_definitions_version: tosca_simple_yaml_1_0_0
topology_template:
  policies:
    - string
                description: The class name of the class that overrides default handling of the event protocol for this carrier technology, defaults to the supplied event protocol class
                required: false
    onap.datatypes.native.apex.Environmental:
        Examplederived_policy_namefrom: tosca.datatypes.Root
         properties:
 type: onap.policies.native.Drools          name:
  version: 1.0.0             metadatatype: string
                policy-iddescription: The Example_policy_name of the    environment variable
     properties:           required: true
    rule_artifact:        value:
            groupId: org.onap.policy.native   type: string
                artifactIddescription: The example_controlloopvalue of the environment variable
                versionrequired: 1.0.0-SNAPSHOTtrue
    onap.datatypes.native.apex.engineservice.Engine:
           drools_controllerderived_from: tosca.datatypes.Root
        properties:
          controllerName: example_controller_name context:
                   isNewController: truetype: onap.datatypes.native.apex.engineservice.engine.Context
                    sourceTopicsdescription: The properties for handling context in APEX engines, defaults to using Java maps for context
          -      required: false
            executors:
        topicName: POLICY_INPUT       type: map
                description: The plugins for serialization:policy executors used in engines such as javascript, MVEL, Jython
                required: true
     -           entry_schema:
                    description: The plugin class path for eventCanonicalName: org.onap.policy.controlloop.event.ControlLoopEvent
this policy executor
                    type: string
    onap.datatypes.native.apex.engineservice.engine.Context:
        eventFilterderived_from: [?($.closedLoopControlName == 'example_controlloop_name')]tosca.datatypes.Root
        properties:
            distributor:
                customSerializertype: org.onap.policydatatypes.controlloopnative.utilsapex.serializer,gsonPlugin
                description: The plugin to be used for distributing -context between APEX PDPs at runtime
                required: false
     topicName: SDNR_TO_POLICY      schemas:
                      serialization:
           type: map
                description: The plugins for -context schemas available in APEX PDPs such as Java and Avro
                required: false
         eventCanonicalName: org.onap.policy.controlloop.event.Response      entry_schema:
                    type: onap.datatypes.native.apex.Plugin
        eventFilter: [?($.closedLoopControlName == 'example_controlloop_name' && $.action == 'example_action')] locking:
                type: onap.datatypes.native.apex.plugin
                description: The plugin to be customSerializer: org.onap.policy.controlloop.utils.serializer,gson
         used for locking context in and between APEX PDPs at runtime
          sinkTopics:      required: false
            persistence:
     -           type: onap.datatypes.native.apex.Plugin
                topicNamedescription: POLICY_TO_SDNRThe plugin to be used for persisting context for APEX PDPs at runtime
                serializationrequired: false
    onap.datatypes.native.apex.Plugin:
        derived_from: tosca.datatypes.Root
        properties:
         -   name:
                type: string
                eventCanonicalNamedescription: org.onap.policy.controlloop.event.Request
         The name of the executor such as Javascript, Jython or MVEL
                required: true
         eventFilter: [?($.closedLoopControlName == 'exampleplugin_controlloopclass_name' && $.action == 'example_action')]:
                type: string
                description: The class path of the plugin class for customSerializer: org.onap.policy.controlloop.utils.serializer,gsonthis executor

3. PAP Enhancements

PDP Engines must now register with PAP the new policy types for native policies they support in order for policies to be deployed by PAP to the PDP's. This will require an additional entry to be added into supported policy types list to indicate which native policy type each specific PDP engine can support.

...