diff --git a/README.md b/README.md index 2b6bea12..7d1b5ae9 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,12 @@ Internal data structure of prepared performance data follows ONF information mod ## Latest Update +### v1.1.1 + +This release adds changes for bugs, findings and still outstanding items observed during implementation of v1.0.0 and v1.1.0. + +Details on changes are found in [DPMDP v1.1.1_spec](https://github.com/openBackhaul/DevicePerformanceManagementDataProcessor/milestone/8). + ### v1.1.0 This release adds new functionality and changes inner workings of DPMDP. diff --git a/spec/DevicePerformanceManagementDataProcessor+config.json b/spec/DevicePerformanceManagementDataProcessor+config.json index 45e693cc..921a8106 100644 --- a/spec/DevicePerformanceManagementDataProcessor+config.json +++ b/spec/DevicePerformanceManagementDataProcessor+config.json @@ -1754,7 +1754,7 @@ "profile-name": "function-profile-1-0:PROFILE_NAME_TYPE_FUNCTION_PROFILE", "function-profile-1-0:function-profile-pac": { "function-profile-capability": { - "function-name": "p1CalculateUtilization", + "function-name": "p2CalculateUtilization", "function-description": "Calculates utilization of the aggregated physical resources in a performance data slice", "parameter-list": [], "sub-function-list": [] diff --git a/spec/DevicePerformanceManagementDataProcessor+profileInstances.yaml b/spec/DevicePerformanceManagementDataProcessor+profileInstances.yaml index 64546b49..7c03e5d6 100644 --- a/spec/DevicePerformanceManagementDataProcessor+profileInstances.yaml +++ b/spec/DevicePerformanceManagementDataProcessor+profileInstances.yaml @@ -1100,11 +1100,11 @@ profile-instances: string-value: '-1' - # p1CalculateUtilization + # p2CalculateUtilization - profile-name: 'FunctionProfile' uuid: 'dpmdp-1-1-0-function-p-500' capability: - function-name: 'p1CalculateUtilization' + function-name: 'p2CalculateUtilization' function-description: 'Calculates utilization of the aggregated physical resources in a performance data slice' parameter-list: sub-function-list: diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/1.0.0/interface.yaml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/1.0.0/interface.yaml index a37f39af..10f1d0bf 100644 --- a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/1.0.0/interface.yaml +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/1.0.0/interface.yaml @@ -373,7 +373,6 @@ x-javascript-interface: required: - parameters - historical-performance-data-list - - aggregation-group - result-cc properties: parameters: diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/interface.yaml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/interface.yaml index 537a9a11..61d31dfa 100644 --- a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/interface.yaml +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/interface.yaml @@ -15,7 +15,6 @@ x-javascript-interface: required: - parameters - historical-performance-data-list - - aggregation-group - result-cc properties: parameters: @@ -165,7 +164,6 @@ x-javascript-interface: type: object required: - historical-performance-data - - aggregation-group - result-cc properties: historical-performance-data: diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/variables.yaml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/variables.yaml index 466af942..2fe2a049 100644 --- a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/variables.yaml +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/1.0.0/variables.yaml @@ -3,7 +3,6 @@ iterate-ec-pm-slices: required: - parameters - historical-performance-data-list - - aggregation-group - result-cc properties: parameters: diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md similarity index 86% rename from spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md rename to spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md index dd5f3226..ff91e2b4 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/README.md @@ -1,24 +1,27 @@ -# p1CalculateUtilization - -Calculates the utilization of the aggregated physical TX resources in a performance data slice. - -Sums up the interval capacity of all AirInterfaces in the aggregation group that is transporting the EthernetContainer. -Divides the totalBytesOutput by the aggregated interval capacity to get the utilization in %. - -## Diagram - -

- p1CalculateUtilization -

- -## Interface - -Please find a detailed description of the [interface](./interface.yaml). - -## Variables - -Please find a detailed description of the [variables](./variables.yaml). - -## NPM Module - -[mw-sdn-p1-calculate-utilization](https://www.npmjs.com/package/mw-sdn-p1-calculate-utilization) +# p1CalculateUtilization + +Calculates the utilization of the aggregated physical TX resources in a performance data slice. + +Sums up the interval capacity of all AirInterfaces in the aggregation group that is transporting the EthernetContainer. +Divides the totalBytesOutput by the aggregated interval capacity to get the utilization in %. + +### Diagram + +

+ p1CalculateUtilization +

+ + +### Interface + +Please find a detailed description of the [interface](./interface.yaml). + + +### Variables + +Please find a detailed description of the [variables](./variables.yaml). + + +### NPM Module + +[mw-sdn-p1-calculate-utilization](https://www.npmjs.com/package/mw-sdn-p1-calculate-utilization) diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml new file mode 100644 index 00000000..31f5fa51 --- /dev/null +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml @@ -0,0 +1,177 @@ +openapi: 3.0.0 +info: + title: p1CalculateUtilization + version: 1.0.0 + +x-javascript-interface: + p1CalculateUtilization: + summary: 'Calculates utilization of the aggregated physical resources in a performance data slice' + input: + required: true + content: + application/json: + schema: + type: object + required: + - historical-performance-data + - result-cc + properties: + historical-performance-data: + type: object + description: > + 'historicalPerformanceData set' + aggregation-group: + type: object + description: > + 'aggregationGroup' + result-cc: + type: object + description: > + 'resultCc' + output: + success: + description: 'Utilization added' + content: + application/json: + schema: + type: object + required: + - historical-performance-data + properties: + historical-performance-data: + type: object + description: > + 'historicalPerformanceData + from [/calculate-utilization/historical-performance-data]' + error: + description: 'Utilization could not be added' + content: + application/json: + schema: + type: string + enum: + - 'historicalPerformanceData not provided' + - 'historicalPerformanceData invalid' + - 'aggregationGroup invalid' + - 'result-cc not provided' + - 'result-cc invalid' + - 'Utilization could not be added' + - 'General processing error' + processing: + calculateTotalAirInterfaceIntervalCapacity: + summary: 'Aggregates the interval capacity of all transporting AirInterfaces' + input: + required: true + content: + application/json: + schema: + required: + - logical-termination-point + - physical-server-ltp-list + - period-end-time + properties: + logical-termination-point: + type: array + description: > + 'logicalTerminationPoint list + from [/calculate-utilization/result-cc/logical-termination-point]' + physical-server-ltp-list: + type: array + description: > + 'List of UUIDs of transporting PhysicalServerLTPs + from [/calculate-utilization/aggregation-group/physical-server-ltp-list]' + period-end-time: + type: string + description: > + 'Period end time of the performance data slice + from [/calculate-utilization/historical-performance-data/period-end-time]' + output: + success: + description: 'totalAirInterfaceIntervalCapacity provided' + content: + application/json: + schema: + properties: + type: object + properties: + total-air-interface-interval-capacity: + type: integer + description: > + 'Sum of the intervalCapacity of all AirInterfaces in the aggregation group that is transporting this EthernetContainer in kbps + from [sum of all {[/logical-termination-point={physical-server-ltp-list[*]}/layer-protocol=*/air-interface-2-0:air-interface-pac/air-interface-historical-performances/historical-performance-data-list={$input.period-end-time}/performance-data/interval-capacity}] + with {[/logical-termination-point={physical-server-ltp-list[*]}/layer-protocol=*/air-interface-2-0:air-interface-pac/air-interface-historical-performances/historical-performance-data-list={$input.period-end-time}/granularity-period]}==air-interface-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN' + error: + description: 'totalAirInterfaceIntervalCapacity could not be provided' + content: + application/json: + schema: + type: string + enum: + - 'logicalTerminationPoint list not provided' + - 'logicalTerminationPoint list invalid' + - 'physicalServerLtpList not provided' + - 'physicalServerLtpList invalid' + - 'periodEndTime not provided' + - 'periodEndTime invalid' + - 'totalAirInterfaceIntervalCapacity could not be provided' + - 'General processing error' + calculateUtilization: + summary: 'Calculates the utilization' + input: + required: true + content: + application/json: + schema: + required: + - total-bytes-output + - total-air-interface-interval-capacity + - time-period + properties: + total-bytes-output: + type: string + description: > + 'totalBytesOutput + from [/calculate-utilization/historical-performance-data/performance-data/total-bytes-output]' + total-air-interface-interval-capacity: + type: integer + description: > + 'totalAirInterfaceIntervalCapacity + from [/calculate-utilization/historical-performance-data/performance-data/total-air-interface-interval-capacity]' + time-period: + type: integer + description: > + 'Length of the measurement interval in seconds + from [/calculate-utilization/historical-performance-data/performance-data/time-period]' + output: + success: + description: 'utilization provided' + content: + application/json: + schema: + properties: + type: object + properties: + utilization: + type: integer + description: > + 'Interval utilization in % + from [ {total-bytes-output}*8 / ( {total-air-interface-interval-capacity}*1000 * {time-period} ) ]' + error: + description: 'utilization could not be provided' + content: + application/json: + schema: + type: string + enum: + - 'totalBytesOutput not provided' + - 'totalBytesOutput invalid' + - 'totalAirInterfaceIntervalCapacity not provided' + - 'totalAirInterfaceIntervalCapacity invalid' + - 'timePeriod not provided' + - 'timePeriod invalid' + - 'utilization could not be provided' + - 'General processing error' + +paths: + /: + description: 'no rest path provided by this module' \ No newline at end of file diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml similarity index 71% rename from spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml rename to spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml index 4c4d05db..68b46aec 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.plantuml @@ -1,49 +1,43 @@ -@startuml p1CalculateUtilization -skinparam responseMessageBelowArrow true - -title - p1CalculateUtilization -end title - -participant "p2IterateEcPmSlices\n" as requestor -participant "p1CalculateUtilization\n" as p1CalcUtil - - -requestor -> p1CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc},\nuuidOfEthernetContainer } -activate p1CalcUtil - - note over p1CalcUtil - IF /historical-performance-data/granularity-period == '15min' - end note - - note left p1CalcUtil - ELSE - end note - requestor <-- p1CalcUtil : { {historical-performance-data} } - - note over p1CalcUtil - THEN - end note - - note over p1CalcUtil - derive [physicalServerLtpList] from - either {aggregationGroup} (if link aggregation) - or {EthernetContainerLtp} (if 1+0 configuration) - end note - - loop FOR physicalServerLtpList[*] - note over p1CalcUtil - totalAirInterfaceIntervalCapacity += AirInterfaceIntervalCapacity - end note - end loop - - note over p1CalcUtil - utilization = totalBytesOutput / totalAirInterfaceIntervalCapacity - end note - -requestor <-- p1CalcUtil : { {historical-performance-data} } -deactivate p1CalcUtil - -deactivate requestor - -@enduml +@startuml p1CalculateUtilization +skinparam responseMessageBelowArrow true + +title + p1CalculateUtilization +end title + +participant "p1IterateEcPmSlices\n" as requestor +participant "p1CalculateUtilization\n" as p1CalcUtil + + +requestor -> p1CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc} } +activate p1CalcUtil + + note over p1CalcUtil + IF /historical-performance-data/granularity-period == '15min' + end note + + note left p1CalcUtil + ELSE + end note + requestor <-- p1CalcUtil : { {historical-performance-data} } + + note over p1CalcUtil + THEN + end note + + loop FOR /aggregation-group/physical-server-ltp-list[*] + note over p1CalcUtil + totalAirInterfaceIntervalCapacity += AirInterfaceIntervalCapacity + end note + end loop + + note over p1CalcUtil + utilization = totalBytesOutput / totalAirInterfaceIntervalCapacity + end note + +requestor <-- p1CalcUtil : { {historical-performance-data} } +deactivate p1CalcUtil + +deactivate requestor + +@enduml \ No newline at end of file diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png new file mode 100644 index 00000000..dfb6b711 Binary files /dev/null and b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png differ diff --git a/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/variables.yaml b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/variables.yaml new file mode 100644 index 00000000..68f7df99 --- /dev/null +++ b/spec/Functions/p1StreamPmData/p1ProcessDevice/p1CreateResultCc/p1IterateEcPmSlices/p1CalculateUtilization/1.0.0/variables.yaml @@ -0,0 +1,110 @@ +calculate-utilization: + type: object + required: + - historical-performance-data + - result-cc + properties: + historical-performance-data: + type: object + description: > + 'historicalPerformanceData set + from {$input#/historical-performance-data} + ! simplified representation !' + properties: + granularity-period: + type: string + description: > + 'Granularity period of the historical performance data slice + IF NOT ethernet-container-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN THEN terminate without change or error message' + enum: + - 'ethernet-container-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN' + - 'ethernet-container-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-24-HOURS' + - 'ethernet-container-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-UNKNOWN' + - 'ethernet-container-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-NOT_YET_DEFINED' + period-end-time: + type: string + performance-data: + type: object + properties: + total-bytes-output: + type: string + description: 'String representation of int64 value' + time-period: + type: integer + description: 'Length of the measurement interval in seconds' + total-air-interface-interval-capacity: + type: integer + description: > + 'Sum of the intervalCapacity of all AirInterfaces in the aggregation group that is transporting this EthernetContainer in kbps + from {$calculateTotalAirInterfaceIntervalCapacity.output#/total-air-interface-interval-capacity}' + utilization: + type: integer + description: > + 'Interval utilization in % + from {$calculateUtilization.output#/utilization}' + aggregation-group: + type: object + description: > + 'aggregationGroup + from {$input#/aggregation-group} + ! simplified representation !' + properties: + physical-server-ltp-list: + type: array + description: > + 'List of UUIDs of transporting AirInterface and WireInterface LTPs' + items: + type: string + result-cc: + type: object + description: > + 'resultCc + from {$input#/result-cc} + ! simplified representation !' + properties: + logical-termination-point: + type: array + x-key: uuid + items: + type: object + properties: + uuid: + type: string + layer-protocol: + type: array + x-key: local-id + items: + type: object + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'air-interface-2-0:LAYER_PROTOCOL_NAME_TYPE_AIR_LAYER' + air-interface-2-0:air-interface-pac: + type: object + properties: + air-interface-historical-performances: + type: object + properties: + historical-performance-data-list: + type: array + x-key: period-end-time + items: + type: object + properties: + granularity-period: + type: string + enum: + - 'air-interface-2-0:GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN' + period-end-time: + type: string + performance-data: + type: object + properties: + interval-capacity: + type: integer + description: > + 'AirInterface capacity weighted by duration of operation of the respective transmission mode in kbps + requires {$p1PrepareTxModes}' \ No newline at end of file diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/1.0.0/variables.yaml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/1.0.0/variables.yaml index 13a69c7b..0e9ffd9b 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/1.0.0/variables.yaml +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/1.0.0/variables.yaml @@ -379,12 +379,12 @@ create-result-cc: type: integer description: > 'Sum of the intervalCapacity of all AirInterfaces in the aggregation group that is transporting this EthernetContainer in kbps - requires {$p2IterateEcPmSlices} and {p1CalculateUtilization}' + requires {$p2IterateEcPmSlices} and {p2CalculateUtilization}' utilization: type: integer description: > 'Interval utilization (=totalBytesOutput/totalAirInterfaceIntervalCapacity) in % - requires {$p2IterateEcPmSlices} and {p1CalculateUtilization}' + requires {$p2IterateEcPmSlices} and {p2CalculateUtilization}' time-period: type: integer transmit-traffic: diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/interface.yaml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/interface.yaml index 250a51fe..2e67b41c 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/interface.yaml +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/interface.yaml @@ -166,7 +166,7 @@ x-javascript-interface: application/json: schema: type: string - p1CalculateUtilization: + p2CalculateUtilization: summary: 'Calculates utilization of the aggregated physical resources in a performance data slice' input: required: true diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.plantuml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.plantuml index 32d752af..524d7d31 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.plantuml +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.plantuml @@ -10,7 +10,7 @@ participant "p2CreateResultCc\n" as cur participant "p2IterateEcPmSlices\n" as iterateSlices participant "p1Calculate\nEthernetKpis" as intCC participant "p1Remove\nDefaultValues" as p1RemDefault -participant "p1Calculate\nUtilization" as p1CalcUtil +participant "p2Calculate\nUtilization" as p2CalcUtil participant "p1CategorizeDataVolume\n" as p1CatDataVo participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH @@ -45,13 +45,13 @@ activate iterateSlices end note - iterateSlices -> p1CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc},\nuuidOfEthernetContainer } - activate p1CalcUtil - note over p1CalcUtil + iterateSlices -> p2CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc},\nuuidOfEthernetContainer } + activate p2CalcUtil + note over p2CalcUtil Adds utilization end note - iterateSlices <-- p1CalcUtil: { {historical-performance-data} } - deactivate p1CalcUtil + iterateSlices <-- p2CalcUtil: { {historical-performance-data} } + deactivate p2CalcUtil note over iterateSlices IF granularityPeriod == 15-MIN diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.png b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.png index 39ac857a..7fe88b2f 100644 Binary files a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.png and b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/p2IterateEcPmSlices.png differ diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/variables.yaml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/variables.yaml index 0671ed25..621dd626 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/variables.yaml +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0/variables.yaml @@ -23,7 +23,7 @@ iterate-ec-pm-slices: type: object description: > 'historicalPerformanceData - overwritten by {$p1CalculateUtilization.output#/historical-performance-data} + overwritten by {$p2CalculateUtilization.output#/historical-performance-data} properties: granularity-period: type: string diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png deleted file mode 100644 index 9ae90858..00000000 Binary files a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/p1CalculateUtilization.png and /dev/null differ diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/README.md b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/README.md new file mode 100644 index 00000000..81cf42ee --- /dev/null +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/README.md @@ -0,0 +1,24 @@ +# p2CalculateUtilization + +Calculates the utilization of the aggregated physical TX resources in a performance data slice. + +Sums up the interval capacity of all AirInterfaces in the aggregation group that is transporting the EthernetContainer. +Divides the totalBytesOutput by the aggregated interval capacity to get the utilization in %. + +## Diagram + +

+ p2CalculateUtilization +

+ +## Interface + +Please find a detailed description of the [interface](./interface.yaml). + +## Variables + +Please find a detailed description of the [variables](./variables.yaml). + +## NPM Module + +[mw-sdn-p2-calculate-utilization](https://www.npmjs.com/package/mw-sdn-p2-calculate-utilization) diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/interface.yaml similarity index 99% rename from spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml rename to spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/interface.yaml index d090bad6..c960d1ec 100644 --- a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/interface.yaml +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/interface.yaml @@ -1,10 +1,10 @@ openapi: 3.0.0 info: - title: p1CalculateUtilization + title: p2CalculateUtilization version: 1.0.0 x-javascript-interface: - p1CalculateUtilization: + p2CalculateUtilization: summary: 'Calculates utilization of the aggregated physical resources in a performance data slice' input: required: true diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.plantuml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.plantuml new file mode 100644 index 00000000..e671a5bf --- /dev/null +++ b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.plantuml @@ -0,0 +1,49 @@ +@startuml p2CalculateUtilization +skinparam responseMessageBelowArrow true + +title + p2CalculateUtilization +end title + +participant "p2IterateEcPmSlices\n" as requestor +participant "p2CalculateUtilization\n" as p2CalcUtil + + +requestor -> p2CalcUtil : { {historical-performance-data},\n{aggregation-group},\n{result-cc},\nuuidOfEthernetContainer } +activate p2CalcUtil + + note over p2CalcUtil + IF /historical-performance-data/granularity-period == '15min' + end note + + note left p2CalcUtil + ELSE + end note + requestor <-- p2CalcUtil : { {historical-performance-data} } + + note over p2CalcUtil + THEN + end note + + note over p2CalcUtil + derive [physicalServerLtpList] from + either {aggregationGroup} (if link aggregation) + or {EthernetContainerLtp} (if 1+0 configuration) + end note + + loop FOR physicalServerLtpList[*] + note over p2CalcUtil + totalAirInterfaceIntervalCapacity += AirInterfaceIntervalCapacity + end note + end loop + + note over p2CalcUtil + utilization = totalBytesOutput / totalAirInterfaceIntervalCapacity + end note + +requestor <-- p2CalcUtil : { {historical-performance-data} } +deactivate p2CalcUtil + +deactivate requestor + +@enduml diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.png b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.png new file mode 100644 index 00000000..5b0610d2 Binary files /dev/null and b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/p2CalculateUtilization.png differ diff --git a/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/variables.yaml b/spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/variables.yaml similarity index 100% rename from spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0/variables.yaml rename to spec/Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0/variables.yaml diff --git a/spec/README.md b/spec/README.md index c8e2f6e8..d1b2097c 100644 --- a/spec/README.md +++ b/spec/README.md @@ -116,7 +116,7 @@ Lot 8: Red - [p2IterateEcPmSlices](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/1.0.0) - [p1CalculateEthernetKpis](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateEthernetKpis/1.0.0) - [p1RemoveDefaultValues](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateAiPmSlices/p1RemoveDefaultValues/1.0.0) - - [p1CalculateUtilization](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateUtilization/1.0.0) + - [p2CalculateUtilization](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p2CalculateUtilization/1.0.0) - [p1CategorizeDataVolume](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CategorizeDataVolume/1.0.0) - [p1CalculateBusyHourPerformanceIndicators](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p2IterateEcPmSlices/p1CalculateBusyHourPerformanceIndicators/1.0.0) - [p1RemoveOutOfRangeTemperatures](./Functions/p2StreamPmData/p2ProcessDevice/p2CreateResultCc/p1RemoveOutOfRangeTemperature/1.0.0) diff --git a/spec/diagrams/hl_sequence.plantuml b/spec/diagrams/hl_sequence.plantuml index 68c5bd99..981cf7f9 100644 --- a/spec/diagrams/hl_sequence.plantuml +++ b/spec/diagrams/hl_sequence.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Utils #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -312,15 +312,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence.png b/spec/diagrams/hl_sequence.png index 421153b4..0e44f02f 100644 Binary files a/spec/diagrams/hl_sequence.png and b/spec/diagrams/hl_sequence.png differ diff --git a/spec/diagrams/hl_sequence_bh_changes.plantuml b/spec/diagrams/hl_sequence_bh_changes.plantuml index 62c76646..88774e7b 100644 --- a/spec/diagrams/hl_sequence_bh_changes.plantuml +++ b/spec/diagrams/hl_sequence_bh_changes.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -389,15 +389,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence_bh_changes.png b/spec/diagrams/hl_sequence_bh_changes.png index c16d8993..0cfdf4a6 100644 Binary files a/spec/diagrams/hl_sequence_bh_changes.png and b/spec/diagrams/hl_sequence_bh_changes.png differ diff --git a/spec/diagrams/hl_sequence_other_changes.plantuml b/spec/diagrams/hl_sequence_other_changes.plantuml index b459db70..a3638d6b 100644 --- a/spec/diagrams/hl_sequence_other_changes.plantuml +++ b/spec/diagrams/hl_sequence_other_changes.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -337,15 +337,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence_other_changes.png b/spec/diagrams/hl_sequence_other_changes.png index 282503c1..58c822ab 100644 Binary files a/spec/diagrams/hl_sequence_other_changes.png and b/spec/diagrams/hl_sequence_other_changes.png differ diff --git a/spec/diagrams/hl_sequence_poison_pill_changes.plantuml b/spec/diagrams/hl_sequence_poison_pill_changes.plantuml index 7cbdfb56..1efca081 100644 --- a/spec/diagrams/hl_sequence_poison_pill_changes.plantuml +++ b/spec/diagrams/hl_sequence_poison_pill_changes.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -384,15 +384,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence_poison_pill_changes.png b/spec/diagrams/hl_sequence_poison_pill_changes.png index 97c198b6..86874152 100644 Binary files a/spec/diagrams/hl_sequence_poison_pill_changes.png and b/spec/diagrams/hl_sequence_poison_pill_changes.png differ diff --git a/spec/diagrams/hl_sequence_quality_changes.plantuml b/spec/diagrams/hl_sequence_quality_changes.plantuml index fb9d673a..6df2a339 100644 --- a/spec/diagrams/hl_sequence_quality_changes.plantuml +++ b/spec/diagrams/hl_sequence_quality_changes.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -365,15 +365,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence_quality_changes.png b/spec/diagrams/hl_sequence_quality_changes.png index 6bfddb35..76be6ee6 100644 Binary files a/spec/diagrams/hl_sequence_quality_changes.png and b/spec/diagrams/hl_sequence_quality_changes.png differ diff --git a/spec/diagrams/hl_sequence_service_changes.plantuml b/spec/diagrams/hl_sequence_service_changes.plantuml index eda33ccf..b33fcb43 100644 --- a/spec/diagrams/hl_sequence_service_changes.plantuml +++ b/spec/diagrams/hl_sequence_service_changes.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightYellow participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util #LightYellow participant "p1Categorize\nDataVolume" as p1CatDV #LightSalmon participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #LightSalmon participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT diff --git a/spec/diagrams/hl_sequence_service_changes.png b/spec/diagrams/hl_sequence_service_changes.png index 48f1227a..25d29e44 100644 Binary files a/spec/diagrams/hl_sequence_service_changes.png and b/spec/diagrams/hl_sequence_service_changes.png differ diff --git a/spec/diagrams/hl_sequence_v11_lots.plantuml b/spec/diagrams/hl_sequence_v11_lots.plantuml index c7fc3964..201fbf2f 100644 --- a/spec/diagrams/hl_sequence_v11_lots.plantuml +++ b/spec/diagrams/hl_sequence_v11_lots.plantuml @@ -32,7 +32,7 @@ participant "p1RemoveOutOf\nRangeLevels" as p1RORL participant "p1Remove\nDefaultValues" as p1RemDefault participant "p2IterateEc\nPmSlices" as ecSlices #LightSkyBlue participant "p1Calculate\nEthernetKpis" as p1EthKpi -participant "p1Calculate\nUtilization" as p1Util +participant "p2Calculate\nUtilization" as p2Util participant "p1Categorize\nDataVolume" as p1CatDV #Orange participant "p1CalculateBusyHour\nPerformanceIndicators" as p1CalcBH #Orange participant "p1RemoveOutOf\nRangeTemperature" as p1ROoRT @@ -312,15 +312,15 @@ activate p2StreamPm deactivate p1RemDefault ' Utilization - ecSlices -> p1Util - activate p1Util + ecSlices -> p2Util + activate p2Util - note over p1Util + note over p2Util Add utilization end note - ecSlices <-- p1Util - deactivate p1Util + ecSlices <-- p2Util + deactivate p2Util ' categorizeDataVolume ecSlices -> p1CatDV diff --git a/spec/diagrams/hl_sequence_v11_lots.png b/spec/diagrams/hl_sequence_v11_lots.png index 3b1a5ab2..53a3d5cc 100644 Binary files a/spec/diagrams/hl_sequence_v11_lots.png and b/spec/diagrams/hl_sequence_v11_lots.png differ