Testing Assumptions
A single VES Collector will be pre-deployed for all flows
DCAE project will generate a blueprint for TCA deployment using Kubernetes
SDC will not generate the blueprint programmatically
CLAMP will deploy an instance of TCA microservice for each use case (vCPE, vFirewall, etc.)
CLAMP will create the initial configuration policy for TCA and make any subsequent updates to it through API to Policy
Initial TCA configuration policy and subsequent updates will be sent by policy to DCAE policy handler
TCA microservice will process updates to its configuration policy
TCA microservice will not be capable of processing multiple configuration policies
Preparation for Testing
DCAE
Deploy VES Blueprint to DCAE which will deploy the VES collector
Generate TCA Blueprint
Generate TCA Policy model
Policy
Policy model for TCA is uploaded to Policy GUI
CLAMP
Store policy model for TCA in local repository
Testing Flow
Flow 1: Design and Distribute First Control Loop
@startuml
title This is the design flow that will be tested in Beijing
actor SDC_Tester
participant SDC
participant CLAMP
participant Policy
box "DCAE controller"
participant SCH
database Inventory
end box
autonumber
SDC_Tester -> SDC : Create vCPE service composed\nof one VNF resource
note left
Closed loop 1
end note
SDC_Tester -> SDC : Upload DCAE TCA blueprint\nas artifact
SDC_Tester -> SDC : Test, Certify, Distribute Service
SDC -> CLAMP : Blueprint distribution
SDC -> SCH : Blueprint distribution
SCH -> Inventory : Save blueprint
@enduml
@startuml
title This is the install flow that will be tested in Beijing
actor CLAMP_Tester
participant CLAMP
participant Policy
box "DCAE controller"
database Inventory
participant "Deployment-handler" as DH
control Cloudify
participant "Policy-handler" as PH
database "Consul-kv" as consul
participant "Config-binding service" as CBS
end box
participant TCA_Instance
autonumber
hnote right CLAMP_Tester: decided to install TCA
CLAMP_Tester -> CLAMP : Configure thresholds\n of control loop
note left
Closed loop 1
end note
CLAMP_Tester -> CLAMP : Configure actions\n of control loop
CLAMP -> Policy : Create Configuration\n and Operational Policies
CLAMP -> Inventory : Get DCAE Service Id\n based on Distributed Parameters
group install TCA_Instance
CLAMP -> DH : install instance of TCA with policy_id as input
activate DH
DH -> Inventory : get blueprint for TCA
Inventory --> DH : blueprint for TCA
DH -> Cloudify : install TCA_Instance
activate Cloudify
DH -> CLAMP : response--started installation of TCA_Instance
deactivate DH
Cloudify -> PH : get policy\n by policy_id
PH -> Policy : /getConfig policy for policyName = policy_id
Policy --> PH : return found policy
PH --> Cloudify : policy by policy_id
Cloudify -> consul: store config with policies\n for TCA_Instance
create TCA_Instance
Cloudify -> TCA_Instance: create instance of TCA
deactivate Cloudify
activate TCA_Instance
TCA_Instance -> CBS: get Config\n and policies
CBS -> consul: get Config\n and policies
consul --> CBS: Config\n and policies
CBS --> TCA_Instance: Config and policies
TCA_Instance -->]: continue
deactivate TCA_Instance
end group
@enduml
Flow 3: Run Control Loop
Repeat this flow for all control loop use-cases (vCPE, vFirewall, vDNS)
@startuml
title This is the flow that will be tested in Beijing
participant VNF
participant VES_Collector
participant TCA_Instance1
participant Policy
participant AppC
autonumber
VNF -> VES_Collector : VES Message\nmeasurementsForVfScaling
VES_Collector -> TCA_Instance1 : VES Message\nmeasurementsForVfScaling
TCA_Instance1 -> Policy : Signature ONSET Message
Policy -> AppC : Action
AppC -> VNF : Action
note left
VNF action taken which
corrects the condition
end note
VNF -> VES_Collector : VES Message\nmeasurementsForVfScaling
note left
Time passes until next
message
end note
VES_Collector -> TCA_Instance1 : VES Message\nmeasurementsForVfScaling
TCA_Instance1 -> Policy : Signature ABATE Message
@enduml
Flow 4: Update Control Loop by Reconfiguring TCA
@startuml
title This is the policy-update flow that will be tested in Beijing
actor CLAMP_Tester
participant CLAMP
participant Policy
box "DCAE controller"
participant "Policy-handler" as PH
participant "Deployment-handler" as DH
control Cloudify
database "Consul-kv" as consul
participant "Config-binding service" as CBS
end box
participant TCA_Instance
autonumber
CLAMP_Tester -> CLAMP : Update control loop settings
CLAMP -> Policy: update policy
group policy update
Policy -> PH : updated policy\n with policyName = policy_id
activate PH
PH -> Policy : /getConfig latest\n policy for\n policyName = policy_id
Policy --> PH : return found policy
PH -> DH : policy updated
deactivate PH
activate DH
DH -> Cloudify : get components
Cloudify --> DH : components and\n run-time properties
DH -> DH : find TCA_Instance\n by policy_id
DH -> Cloudify : policy updated\n on TCA_Instance
deactivate DH
activate Cloudify
Cloudify -> consul: store updated policies\n for TCA_Instance
Cloudify -> TCA_Instance: notify about updated policies through script
deactivate Cloudify
activate TCA_Instance
hnote over TCA_Instance: policy changed
TCA_Instance -> TCA_Instance: act on\n changed policy
TCA_Instance -->]: continue
deactivate TCA_Instance
end
|||
==alternative to acting on the push-notification through script from DCAE-Controller==
|||
group polling for policy changes
TCA_Instance -> CBS: get Config\n and policies
activate TCA_Instance
CBS -> consul: get Config\n and policies
consul --> CBS: Config\n and policies
CBS --> TCA_Instance: Config and policies
hnote over TCA_Instance: policy might have changed
TCA_Instance -->]: continue
deactivate TCA_Instance
end
@enduml
Run Control Loop Again
After the control loop is reconfigured, we test that the changes have taken effect. This is done by running the control loop again. For example, if the threshold value was increased, we would initiate an event with the old threshold value, and see that the signature is no longer produced.
Flow 5: Stop and Restart Control Loop
@startuml
participant CLAMP
actor CLAMP_Tester
participant Policy
autonumber
CLAMP_Tester -> CLAMP : Stop operation\nof control loop
CLAMP -> Policy : Disable Operational Policy
participant VNF
participant VES_Collector
participant TCA_Instance1
participant AppC
autonumber
group Runtime Test
VNF -> VES_Collector : VES Message\nmeasurementsForVfScaling
VES_Collector -> TCA_Instance1 : VES Message\nmeasurementsForVfScaling
TCA_Instance1 -> Policy : Signature ONSET Message
end
CLAMP_Tester -> CLAMP : Restart operation\nof control loop
CLAMP -> Policy : Enable Operational Policy
participant VNF
participant VES_Collector
participant TCA_Instance1
participant AppC
autonumber
group Runtime Test
VNF -> VES_Collector : VES Message\nmeasurementsForVfScaling
VES_Collector -> TCA_Instance1 : VES Message\nmeasurementsForVfScaling
TCA_Instance1 -> Policy : Signature ONSET Message
Policy -> AppC : Action
AppC -> VNF : Action
VNF -> VES_Collector : VES Message\nmeasurementsForVfScaling
VES_Collector -> TCA_Instance1 : VES Message\nmeasurementsForVfScaling
TCA_Instance1 -> Policy : Signature ABATE Message
end
@enduml
Dashboard