diff options
50 files changed, 4521 insertions, 4251 deletions
diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 64b43ab8c..d9a0b8279 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -4,13 +4,13 @@ "version" : "5.0.0-SNAPSHOT", "title" : "Clamp Rest API" }, - "host" : "localhost:37295", + "host" : "localhost:39099", "basePath" : "/restservices/clds/", "schemes" : [ "http" ], "paths" : { "/v2/dictionary" : { "get" : { - "operationId" : "route18", + "operationId" : "route49", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -20,11 +20,11 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route18" + "x-camelContextId" : "camel-2", + "x-routeId" : "route49" }, "put" : { - "operationId" : "route20", + "operationId" : "route51", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -43,8 +43,8 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route20" + "x-camelContextId" : "camel-2", + "x-routeId" : "route51" } }, "/v2/dictionary/{dictionaryName}" : { @@ -64,7 +64,7 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, @@ -93,11 +93,11 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null }, "delete" : { - "operationId" : "route22", + "operationId" : "route53", "produces" : [ "application/json" ], "parameters" : [ { "name" : "name", @@ -108,8 +108,8 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route22" + "x-camelContextId" : "camel-2", + "x-routeId" : "route53" } }, "/v2/dictionary/{name}/elements/{shortName}" : { @@ -129,7 +129,7 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, @@ -147,13 +147,13 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, "/v2/loop/{loopName}" : { "get" : { - "operationId" : "route3", + "operationId" : "route34", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -169,13 +169,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route3" + "x-camelContextId" : "camel-2", + "x-routeId" : "route34" } }, "/v2/loop/delete/{loopName}" : { "put" : { - "operationId" : "route14", + "operationId" : "route45", "parameters" : [ { "name" : "loopName", "in" : "path", @@ -185,13 +185,13 @@ "responses" : { "200" : { } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route14" + "x-camelContextId" : "camel-2", + "x-routeId" : "route45" } }, "/v2/loop/deploy/{loopName}" : { "put" : { - "operationId" : "route8", + "operationId" : "route39", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -207,13 +207,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route8" + "x-camelContextId" : "camel-2", + "x-routeId" : "route39" } }, "/v2/loop/getAllNames" : { "get" : { - "operationId" : "route2", + "operationId" : "route33", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -226,13 +226,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route2" + "x-camelContextId" : "camel-2", + "x-routeId" : "route33" } }, "/v2/loop/getstatus/{loopName}" : { "get" : { - "operationId" : "route15", + "operationId" : "route46", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -248,13 +248,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route15" + "x-camelContextId" : "camel-2", + "x-routeId" : "route46" } }, "/v2/loop/refreshOpPolicyJsonSchema/{loopName}" : { "put" : { - "operationId" : "route9", + "operationId" : "route40", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -270,13 +270,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route9" + "x-camelContextId" : "camel-2", + "x-routeId" : "route40" } }, "/v2/loop/restart/{loopName}" : { "put" : { - "operationId" : "route12", + "operationId" : "route43", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -292,13 +292,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route12" + "x-camelContextId" : "camel-2", + "x-routeId" : "route43" } }, "/v2/loop/stop/{loopName}" : { "put" : { - "operationId" : "route11", + "operationId" : "route42", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -314,13 +314,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route11" + "x-camelContextId" : "camel-2", + "x-routeId" : "route42" } }, "/v2/loop/submit/{loopName}" : { "put" : { - "operationId" : "route13", + "operationId" : "route44", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -336,13 +336,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route13" + "x-camelContextId" : "camel-2", + "x-routeId" : "route44" } }, "/v2/loop/svgRepresentation/{loopName}" : { "get" : { - "operationId" : "route4", + "operationId" : "route35", "produces" : [ "application/xml" ], "parameters" : [ { "name" : "loopName", @@ -358,13 +358,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route4" + "x-camelContextId" : "camel-2", + "x-routeId" : "route35" } }, "/v2/loop/undeploy/{loopName}" : { "put" : { - "operationId" : "route10", + "operationId" : "route41", "produces" : [ "application/json" ], "parameters" : [ { "name" : "loopName", @@ -380,13 +380,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route10" + "x-camelContextId" : "camel-2", + "x-routeId" : "route41" } }, "/v2/loop/updateGlobalProperties/{loopName}" : { "post" : { - "operationId" : "route5", + "operationId" : "route36", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -410,13 +410,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route5" + "x-camelContextId" : "camel-2", + "x-routeId" : "route36" } }, "/v2/loop/updateMicroservicePolicy/{loopName}" : { "post" : { - "operationId" : "route7", + "operationId" : "route38", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -440,13 +440,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route7" + "x-camelContextId" : "camel-2", + "x-routeId" : "route38" } }, "/v2/loop/updateOperationalPolicies/{loopName}" : { "post" : { - "operationId" : "route6", + "operationId" : "route37", "consumes" : [ "application/json" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -470,13 +470,13 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route6" + "x-camelContextId" : "camel-2", + "x-routeId" : "route37" } }, "/v2/policyToscaModels" : { "get" : { - "operationId" : "route25", + "operationId" : "route56", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -486,8 +486,8 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route25" + "x-camelContextId" : "camel-2", + "x-routeId" : "route56" } }, "/v2/policyToscaModels/{policyModelType}" : { @@ -507,11 +507,11 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null }, "put" : { - "operationId" : "route26", + "operationId" : "route57", "consumes" : [ "plain/text" ], "produces" : [ "application/json" ], "parameters" : [ { @@ -535,8 +535,8 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route26" + "x-camelContextId" : "camel-2", + "x-routeId" : "route57" } }, "/v2/policyToscaModels/yaml/{policyModelType}" : { @@ -556,13 +556,13 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, "/v2/templates" : { "get" : { - "operationId" : "route29", + "operationId" : "route60", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -572,8 +572,8 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route29" + "x-camelContextId" : "camel-2", + "x-routeId" : "route60" } }, "/v2/templates/{templateName}" : { @@ -593,7 +593,7 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, @@ -611,13 +611,13 @@ } } }, - "x-camelContextId" : "camel-1", + "x-camelContextId" : "camel-2", "x-routeId" : null } }, "/v1/healthcheck" : { "get" : { - "operationId" : "route30", + "operationId" : "route61", "produces" : [ "application/json" ], "responses" : { "200" : { @@ -627,19 +627,19 @@ } } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route30" + "x-camelContextId" : "camel-2", + "x-routeId" : "route61" } }, "/v1/user/getUser" : { "get" : { - "operationId" : "route31", + "operationId" : "route62", "produces" : [ "text/plain" ], "responses" : { "200" : { } }, - "x-camelContextId" : "camel-1", - "x-routeId" : "route31" + "x-camelContextId" : "camel-2", + "x-routeId" : "route62" } } }, @@ -803,34 +803,31 @@ "JsonPrimitive" : { "type" : "object", "properties" : { - "asBoolean" : { - "type" : "boolean" + "asInt" : { + "type" : "integer", + "format" : "int32" }, - "number" : { + "asDouble" : { + "type" : "number", + "format" : "double" + }, + "asLong" : { + "type" : "integer", + "format" : "int64" + }, + "boolean" : { "type" : "boolean" }, - "asString" : { - "type" : "string" + "asBoolean" : { + "type" : "boolean" }, "asNumber" : { "$ref" : "#/definitions/Number" }, - "asDouble" : { - "type" : "number", - "format" : "double" - }, "asFloat" : { "type" : "number", "format" : "float" }, - "asLong" : { - "type" : "integer", - "format" : "int64" - }, - "asInt" : { - "type" : "integer", - "format" : "int32" - }, "asByte" : { "type" : "string", "format" : "byte" @@ -848,22 +845,28 @@ "type" : "integer", "format" : "int32" }, - "boolean" : { + "number" : { "type" : "boolean" }, + "asString" : { + "type" : "string" + }, "string" : { "type" : "boolean" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" + "asJsonNull" : { + "$ref" : "#/definitions/JsonNull" + }, + "jsonObject" : { + "type" : "boolean" }, "asJsonObject" : { "$ref" : "#/definitions/JsonObject" }, - "jsonArray" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonObject" : { + "jsonArray" : { "type" : "boolean" }, "jsonPrimitive" : { @@ -874,9 +877,6 @@ }, "asJsonPrimitive" : { "$ref" : "#/definitions/JsonPrimitive" - }, - "asJsonNull" : { - "$ref" : "#/definitions/JsonNull" } } }, @@ -912,6 +912,9 @@ "pdpSubGroup" : { "type" : "string" }, + "policyModel" : { + "$ref" : "#/definitions/PolicyModel" + }, "name" : { "type" : "string" }, @@ -939,9 +942,6 @@ }, "dcaeBlueprintId" : { "type" : "string" - }, - "policyModel" : { - "$ref" : "#/definitions/PolicyModel" } }, "x-className" : { @@ -952,55 +952,31 @@ "JsonObject" : { "type" : "object", "properties" : { - "asBoolean" : { - "type" : "boolean" - }, - "asString" : { - "type" : "string" - }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, - "asJsonObject" : { - "$ref" : "#/definitions/JsonObject" - }, - "jsonArray" : { - "type" : "boolean" + "asInt" : { + "type" : "integer", + "format" : "int32" }, - "jsonObject" : { - "type" : "boolean" + "asDouble" : { + "type" : "number", + "format" : "double" }, - "jsonPrimitive" : { - "type" : "boolean" + "asLong" : { + "type" : "integer", + "format" : "int64" }, - "jsonNull" : { + "asBoolean" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" }, "asNumber" : { "$ref" : "#/definitions/Number" }, - "asDouble" : { - "type" : "number", - "format" : "double" - }, "asFloat" : { "type" : "number", "format" : "float" }, - "asLong" : { - "type" : "integer", - "format" : "int64" - }, - "asInt" : { - "type" : "integer", - "format" : "int32" - }, "asByte" : { "type" : "string", "format" : "byte" @@ -1017,6 +993,30 @@ "asShort" : { "type" : "integer", "format" : "int32" + }, + "jsonObject" : { + "type" : "boolean" + }, + "asJsonObject" : { + "$ref" : "#/definitions/JsonObject" + }, + "asString" : { + "type" : "string" + }, + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" + }, + "jsonArray" : { + "type" : "boolean" + }, + "jsonPrimitive" : { + "type" : "boolean" + }, + "jsonNull" : { + "type" : "boolean" + }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" } }, "x-className" : { @@ -1136,69 +1136,48 @@ "pdpSubGroup" : { "type" : "string" }, + "policyModel" : { + "$ref" : "#/definitions/PolicyModel" + }, "name" : { "type" : "string" }, "loop" : { "$ref" : "#/definitions/Loop" }, - "policyModel" : { - "$ref" : "#/definitions/PolicyModel" + "legacy" : { + "type" : "boolean" } } }, "JsonNull" : { "type" : "object", "properties" : { - "asBoolean" : { - "type" : "boolean" - }, - "asString" : { - "type" : "string" - }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" - }, - "asJsonObject" : { - "$ref" : "#/definitions/JsonObject" - }, - "jsonArray" : { - "type" : "boolean" + "asInt" : { + "type" : "integer", + "format" : "int32" }, - "jsonObject" : { - "type" : "boolean" + "asDouble" : { + "type" : "number", + "format" : "double" }, - "jsonPrimitive" : { - "type" : "boolean" + "asLong" : { + "type" : "integer", + "format" : "int64" }, - "jsonNull" : { + "asBoolean" : { "type" : "boolean" }, - "asJsonPrimitive" : { - "$ref" : "#/definitions/JsonPrimitive" - }, "asJsonNull" : { "$ref" : "#/definitions/JsonNull" }, "asNumber" : { "$ref" : "#/definitions/Number" }, - "asDouble" : { - "type" : "number", - "format" : "double" - }, "asFloat" : { "type" : "number", "format" : "float" }, - "asLong" : { - "type" : "integer", - "format" : "int64" - }, - "asInt" : { - "type" : "integer", - "format" : "int32" - }, "asByte" : { "type" : "string", "format" : "byte" @@ -1215,36 +1194,57 @@ "asShort" : { "type" : "integer", "format" : "int32" + }, + "jsonObject" : { + "type" : "boolean" + }, + "asJsonObject" : { + "$ref" : "#/definitions/JsonObject" + }, + "asString" : { + "type" : "string" + }, + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" + }, + "jsonArray" : { + "type" : "boolean" + }, + "jsonPrimitive" : { + "type" : "boolean" + }, + "jsonNull" : { + "type" : "boolean" + }, + "asJsonPrimitive" : { + "$ref" : "#/definitions/JsonPrimitive" } } }, "JsonArray" : { "type" : "object", "properties" : { - "asBoolean" : { - "type" : "boolean" - }, - "asString" : { - "type" : "string" - }, - "asNumber" : { - "$ref" : "#/definitions/Number" + "asInt" : { + "type" : "integer", + "format" : "int32" }, "asDouble" : { "type" : "number", "format" : "double" }, - "asFloat" : { - "type" : "number", - "format" : "float" - }, "asLong" : { "type" : "integer", "format" : "int64" }, - "asInt" : { - "type" : "integer", - "format" : "int32" + "asBoolean" : { + "type" : "boolean" + }, + "asNumber" : { + "$ref" : "#/definitions/Number" + }, + "asFloat" : { + "type" : "number", + "format" : "float" }, "asByte" : { "type" : "string", @@ -1263,16 +1263,22 @@ "type" : "integer", "format" : "int32" }, - "asJsonArray" : { - "$ref" : "#/definitions/JsonArray" + "asString" : { + "type" : "string" + }, + "asJsonNull" : { + "$ref" : "#/definitions/JsonNull" + }, + "jsonObject" : { + "type" : "boolean" }, "asJsonObject" : { "$ref" : "#/definitions/JsonObject" }, - "jsonArray" : { - "type" : "boolean" + "asJsonArray" : { + "$ref" : "#/definitions/JsonArray" }, - "jsonObject" : { + "jsonArray" : { "type" : "boolean" }, "jsonPrimitive" : { @@ -1283,9 +1289,6 @@ }, "asJsonPrimitive" : { "$ref" : "#/definitions/JsonPrimitive" - }, - "asJsonNull" : { - "$ref" : "#/definitions/JsonNull" } }, "x-className" : { diff --git a/docs/swagger/swagger.pdf b/docs/swagger/swagger.pdf index 394b7c625..d992107ee 100644 --- a/docs/swagger/swagger.pdf +++ b/docs/swagger/swagger.pdf @@ -4,16 +4,16 @@ << /Title (Clamp Rest API) /Creator (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) /Producer (Asciidoctor PDF 1.5.0.alpha.10, based on Prawn 1.3.0) -/CreationDate (D:20200227150954-08'00') -/ModDate (D:20200227150954-08'00') +/CreationDate (D:20200302132601-08'00') +/ModDate (D:20200302132601-08'00') >> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R /Names 20 0 R -/Outlines 590 0 R -/PageLabels 734 0 R +/Outlines 589 0 R +/PageLabels 733 0 R /PageMode /UseOutlines /OpenAction [7 0 R /FitH 793.0] /ViewerPreferences << /DisplayDocTitle true @@ -23,7 +23,7 @@ endobj 3 0 obj << /Type /Pages /Count 33 -/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 27 0 R 43 0 R 58 0 R 72 0 R 84 0 R 97 0 R 110 0 R 123 0 R 137 0 R 151 0 R 165 0 R 179 0 R 192 0 R 208 0 R 215 0 R 221 0 R 229 0 R 235 0 R 240 0 R 249 0 R 256 0 R 266 0 R 272 0 R 278 0 R 286 0 R 296 0 R 303 0 R] +/Kids [7 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 27 0 R 43 0 R 58 0 R 72 0 R 84 0 R 97 0 R 110 0 R 124 0 R 137 0 R 151 0 R 165 0 R 178 0 R 192 0 R 207 0 R 214 0 R 220 0 R 228 0 R 234 0 R 239 0 R 248 0 R 255 0 R 265 0 R 271 0 R 277 0 R 285 0 R 294 0 R 301 0 R] >> endobj 4 0 obj @@ -80,11 +80,11 @@ endobj << /Type /Font /BaseFont /AAAAAA+NotoSerif /Subtype /TrueType -/FontDescriptor 736 0 R +/FontDescriptor 735 0 R /FirstChar 32 /LastChar 255 -/Widths 738 0 R -/ToUnicode 737 0 R +/Widths 737 0 R +/ToUnicode 736 0 R >> endobj 9 0 obj @@ -1559,7 +1559,7 @@ endobj /F1.0 8 0 R >> >> -/Annots [307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R] +/Annots [306 0 R 307 0 R 308 0 R 309 0 R 310 0 R 311 0 R 312 0 R 313 0 R 314 0 R 315 0 R 316 0 R 317 0 R 318 0 R 319 0 R 320 0 R 321 0 R 322 0 R 323 0 R 324 0 R 325 0 R 326 0 R 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R 344 0 R 345 0 R 346 0 R 347 0 R 348 0 R 349 0 R 350 0 R 351 0 R 352 0 R 353 0 R 354 0 R 355 0 R 356 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R] >> endobj 11 0 obj @@ -3102,7 +3102,7 @@ endobj /Font << /F1.0 8 0 R >> >> -/Annots [379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R 454 0 R] +/Annots [378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R 398 0 R 399 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R 423 0 R 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R 434 0 R 435 0 R 436 0 R 437 0 R 438 0 R 439 0 R 440 0 R 441 0 R 442 0 R 443 0 R 444 0 R 445 0 R 446 0 R 447 0 R 448 0 R 449 0 R 450 0 R 451 0 R 452 0 R 453 0 R] >> endobj 13 0 obj @@ -4645,7 +4645,7 @@ endobj /Font << /F1.0 8 0 R >> >> -/Annots [455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R 530 0 R] +/Annots [454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R 461 0 R 462 0 R 463 0 R 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R 469 0 R 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R 475 0 R 476 0 R 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R 483 0 R 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R 490 0 R 491 0 R 492 0 R 493 0 R 494 0 R 495 0 R 496 0 R 497 0 R 498 0 R 499 0 R 500 0 R 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R 526 0 R 527 0 R 528 0 R 529 0 R] >> endobj 15 0 obj @@ -5828,7 +5828,7 @@ endobj /Font << /F1.0 8 0 R >> >> -/Annots [531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R] +/Annots [530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R] >> endobj 17 0 obj @@ -5910,7 +5910,7 @@ ET BT 71.30850000000001 592.176 Td /F1.0 10.5 Tf -<203a206c6f63616c686f73743a3337323935> Tj +<203a206c6f63616c686f73743a3339303939> Tj ET 0.000 0.000 0.000 SCN @@ -6011,7 +6011,7 @@ endobj /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> >> @@ -6025,18 +6025,18 @@ endobj >> endobj 21 0 obj -<< /Kids [53 0 R 247 0 R 160 0 R 87 0 R 130 0 R 198 0 R 54 0 R 128 0 R 195 0 R 82 0 R 170 0 R] +<< /Kids [53 0 R 246 0 R 160 0 R 87 0 R 130 0 R 197 0 R 54 0 R 187 0 R 116 0 R 82 0 R] >> endobj 22 0 obj << /Type /Font /BaseFont /AAAAAB+NotoSerif-Bold /Subtype /TrueType -/FontDescriptor 740 0 R +/FontDescriptor 739 0 R /FirstChar 32 /LastChar 255 -/Widths 742 0 R -/ToUnicode 741 0 R +/Widths 741 0 R +/ToUnicode 740 0 R >> endobj 23 0 obj @@ -6046,11 +6046,11 @@ endobj << /Type /Font /BaseFont /AAAAAC+NotoSerif-Italic /Subtype /TrueType -/FontDescriptor 744 0 R +/FontDescriptor 743 0 R /FirstChar 32 /LastChar 255 -/Widths 746 0 R -/ToUnicode 745 0 R +/Widths 745 0 R +/ToUnicode 744 0 R >> endobj 25 0 obj @@ -6950,7 +6950,7 @@ endobj /F1.0 8 0 R /F4.0 33 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [31 0 R 39 0 R] @@ -6980,11 +6980,11 @@ endobj << /Type /Font /BaseFont /AAAAAD+mplus1mn-regular /Subtype /TrueType -/FontDescriptor 748 0 R +/FontDescriptor 747 0 R /FirstChar 32 /LastChar 255 -/Widths 750 0 R -/ToUnicode 749 0 R +/Widths 749 0 R +/ToUnicode 748 0 R >> endobj 34 0 obj @@ -8225,7 +8225,7 @@ endobj /F1.0 8 0 R /F4.0 33 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [45 0 R 47 0 R] @@ -8270,12 +8270,12 @@ endobj endobj 53 0 obj << /Limits [(_cldshealthcheck) (_dictionaryelement)] -/Names [(_cldshealthcheck) 210 0 R (_consumes) 48 0 R (_consumes_2) 67 0 R (_consumes_3) 143 0 R (_consumes_4) 152 0 R (_consumes_5) 159 0 R (_consumes_6) 189 0 R (_definitions) 209 0 R (_dictionary) 211 0 R (_dictionaryelement) 213 0 R] +/Names [(_cldshealthcheck) 209 0 R (_consumes) 48 0 R (_consumes_2) 67 0 R (_consumes_3) 143 0 R (_consumes_4) 152 0 R (_consumes_5) 159 0 R (_consumes_6) 189 0 R (_definitions) 208 0 R (_dictionary) 210 0 R (_dictionaryelement) 212 0 R] >> endobj 54 0 obj -<< /Limits [(_responses_10) (_responses_2)] -/Names [(_responses_10) 81 0 R (_responses_11) 88 0 R (_responses_12) 92 0 R (_responses_13) 98 0 R (_responses_14) 103 0 R (_responses_15) 108 0 R (_responses_16) 115 0 R (_responses_17) 120 0 R (_responses_18) 127 0 R (_responses_19) 133 0 R (_responses_2) 35 0 R] +<< /Limits [(_responses_10) (_responses_19)] +/Names [(_responses_10) 81 0 R (_responses_11) 88 0 R (_responses_12) 92 0 R (_responses_13) 98 0 R (_responses_14) 103 0 R (_responses_15) 108 0 R (_responses_16) 115 0 R (_responses_17) 121 0 R (_responses_18) 128 0 R (_responses_19) 133 0 R] >> endobj 55 0 obj @@ -9630,7 +9630,7 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [60 0 R 64 0 R 66 0 R] @@ -10824,7 +10824,7 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> >> @@ -10857,8 +10857,8 @@ endobj [72 0 R /XYZ 0 108.12000000000052 null] endobj 82 0 obj -<< /Limits [(_route15) (_route4)] -/Names [(_route15) 94 0 R (_route18) 37 0 R (_route2) 91 0 R (_route20) 41 0 R (_route22) 69 0 R (_route25) 169 0 R (_route26) 185 0 R (_route29) 193 0 R (_route3) 162 0 R (_route30) 29 0 R (_route31) 34 0 R (_route4) 125 0 R] +<< /Limits [(_route46) (_version_information)] +/Names [(_route46) 94 0 R (_route49) 37 0 R (_route51) 41 0 R (_route53) 69 0 R (_route56) 169 0 R (_route57) 184 0 R (_route60) 193 0 R (_route61) 29 0 R (_route62) 34 0 R (_service) 303 0 R (_uri_scheme) 25 0 R (_v2_dictionary_dictionaryname_get) 55 0 R (_v2_dictionary_name_elements_shortname_delete) 75 0 R (_v2_dictionary_name_put) 62 0 R (_v2_dictionary_secondary_names_get) 50 0 R (_v2_policytoscamodels_policymodeltype_get) 179 0 R (_v2_policytoscamodels_yaml_policymodeltype_get) 173 0 R (_v2_templates_names_get) 198 0 R (_v2_templates_templatename_get) 201 0 R (_version_information) 23 0 R] >> endobj 83 0 obj @@ -12192,7 +12192,7 @@ endobj /F3.0 24 0 R /F4.0 33 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [89 0 R] @@ -12206,7 +12206,7 @@ endobj endobj 87 0 obj << /Limits [(_parameters_8) (_produces_15)] -/Names [(_parameters_8) 95 0 R (_parameters_9) 102 0 R (_paths) 28 0 R (_policymodel) 299 0 R (_produces) 32 0 R (_produces_10) 90 0 R (_produces_11) 93 0 R (_produces_12) 100 0 R (_produces_13) 105 0 R (_produces_14) 112 0 R (_produces_15) 117 0 R] +/Names [(_parameters_8) 95 0 R (_parameters_9) 102 0 R (_paths) 28 0 R (_policymodel) 298 0 R (_produces) 32 0 R (_produces_10) 90 0 R (_produces_11) 93 0 R (_produces_12) 100 0 R (_produces_13) 105 0 R (_produces_14) 112 0 R (_produces_15) 118 0 R] >> endobj 88 0 obj @@ -13432,7 +13432,7 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [99 0 R 104 0 R] @@ -14902,10 +14902,10 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [111 0 R 116 0 R 121 0 R] +/Annots [111 0 R 117 0 R 122 0 R] >> endobj 111 0 obj @@ -14929,6 +14929,11 @@ endobj [110 0 R /XYZ 0 481.68000000000046 null] endobj 116 0 obj +<< /Limits [(_responses_5) (_route45)] +/Names [(_responses_5) 51 0 R (_responses_6) 59 0 R (_responses_7) 65 0 R (_responses_8) 73 0 R (_responses_9) 77 0 R (_route33) 91 0 R (_route34) 162 0 R (_route35) 126 0 R (_route36) 138 0 R (_route37) 154 0 R (_route38) 145 0 R (_route39) 85 0 R (_route40) 101 0 R (_route41) 131 0 R (_route42) 113 0 R (_route43) 106 0 R (_route44) 119 0 R (_route45) 79 0 R] +>> +endobj +117 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -14936,19 +14941,19 @@ endobj /Type /Annot >> endobj -117 0 obj +118 0 obj [110 0 R /XYZ 0 376.5600000000004 null] endobj -118 0 obj +119 0 obj [110 0 R /XYZ 0 320.28000000000037 null] endobj -119 0 obj +120 0 obj [110 0 R /XYZ 0 280.20000000000033 null] endobj -120 0 obj +121 0 obj [110 0 R /XYZ 0 175.08000000000033 null] endobj -121 0 obj +122 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -14956,7 +14961,7 @@ endobj /Type /Annot >> endobj -122 0 obj +123 0 obj << /Length 16227 >> stream @@ -16146,56 +16151,51 @@ Q endstream endobj -123 0 obj +124 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 122 0 R +/Contents 123 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F1.0 8 0 R /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [134 0 R] >> endobj -124 0 obj -[123 0 R /XYZ 0 792.0 null] -endobj 125 0 obj -[123 0 R /XYZ 0 702.1200000000001 null] +[124 0 R /XYZ 0 792.0 null] endobj 126 0 obj -[123 0 R /XYZ 0 662.0400000000002 null] +[124 0 R /XYZ 0 702.1200000000001 null] endobj 127 0 obj -[123 0 R /XYZ 0 556.9200000000003 null] +[124 0 R /XYZ 0 662.0400000000002 null] endobj 128 0 obj -<< /Limits [(_responses_20) (_responses_3)] -/Names [(_responses_20) 141 0 R (_responses_21) 148 0 R (_responses_22) 157 0 R (_responses_23) 166 0 R (_responses_24) 171 0 R (_responses_25) 176 0 R (_responses_26) 182 0 R (_responses_27) 187 0 R (_responses_28) 194 0 R (_responses_29) 200 0 R (_responses_3) 38 0 R] ->> +[124 0 R /XYZ 0 556.9200000000003 null] endobj 129 0 obj -[123 0 R /XYZ 0 451.8000000000004 null] +[124 0 R /XYZ 0 451.8000000000004 null] endobj 130 0 obj << /Limits [(_produces_16) (_produces_24)] -/Names [(_produces_16) 124 0 R (_produces_17) 129 0 R (_produces_18) 135 0 R (_produces_19) 144 0 R (_produces_2) 36 0 R (_produces_20) 153 0 R (_produces_21) 161 0 R (_produces_22) 168 0 R (_produces_23) 173 0 R (_produces_24) 177 0 R] +/Names [(_produces_16) 125 0 R (_produces_17) 129 0 R (_produces_18) 135 0 R (_produces_19) 144 0 R (_produces_2) 36 0 R (_produces_20) 153 0 R (_produces_21) 161 0 R (_produces_22) 168 0 R (_produces_23) 172 0 R (_produces_24) 176 0 R] >> endobj 131 0 obj -[123 0 R /XYZ 0 395.5200000000004 null] +[124 0 R /XYZ 0 395.5200000000004 null] endobj 132 0 obj -[123 0 R /XYZ 0 355.44000000000034 null] +[124 0 R /XYZ 0 355.44000000000034 null] endobj 133 0 obj -[123 0 R /XYZ 0 250.32000000000033 null] +[124 0 R /XYZ 0 250.32000000000033 null] endobj 134 0 obj << /Border [0 0 0] @@ -16206,7 +16206,7 @@ endobj >> endobj 135 0 obj -[123 0 R /XYZ 0 145.2000000000003 null] +[124 0 R /XYZ 0 145.2000000000003 null] endobj 136 0 obj << /Length 19642 @@ -17665,7 +17665,7 @@ endobj /F1.0 8 0 R /F4.0 33 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [140 0 R 142 0 R 147 0 R 149 0 R] @@ -18861,7 +18861,7 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> /Annots [156 0 R 158 0 R] @@ -18903,7 +18903,7 @@ endobj endobj 160 0 obj << /Limits [(_parameters_13) (_parameters_7)] -/Names [(_parameters_13) 126 0 R (_parameters_14) 132 0 R (_parameters_15) 139 0 R (_parameters_16) 146 0 R (_parameters_17) 155 0 R (_parameters_18) 163 0 R (_parameters_19) 175 0 R (_parameters_2) 56 0 R (_parameters_20) 181 0 R (_parameters_21) 186 0 R (_parameters_22) 203 0 R (_parameters_3) 63 0 R (_parameters_4) 70 0 R (_parameters_5) 76 0 R (_parameters_6) 80 0 R (_parameters_7) 86 0 R] +/Names [(_parameters_13) 127 0 R (_parameters_14) 132 0 R (_parameters_15) 139 0 R (_parameters_16) 146 0 R (_parameters_17) 155 0 R (_parameters_18) 163 0 R (_parameters_19) 174 0 R (_parameters_2) 56 0 R (_parameters_20) 180 0 R (_parameters_21) 185 0 R (_parameters_22) 202 0 R (_parameters_3) 63 0 R (_parameters_4) 70 0 R (_parameters_5) 76 0 R (_parameters_6) 80 0 R (_parameters_7) 86 0 R] >> endobj 161 0 obj @@ -20130,10 +20130,10 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [167 0 R 172 0 R] +/Annots [167 0 R 171 0 R] >> endobj 166 0 obj @@ -20154,14 +20154,9 @@ endobj [165 0 R /XYZ 0 597.0000000000003 null] endobj 170 0 obj -<< /Limits [(_route5) (_version_information)] -/Names [(_route5) 138 0 R (_route6) 154 0 R (_route7) 145 0 R (_route8) 85 0 R (_route9) 101 0 R (_service) 304 0 R (_uri_scheme) 25 0 R (_v2_dictionary_dictionaryname_get) 55 0 R (_v2_dictionary_name_elements_shortname_delete) 75 0 R (_v2_dictionary_name_put) 62 0 R (_v2_dictionary_secondary_names_get) 50 0 R (_v2_policytoscamodels_policymodeltype_get) 180 0 R (_v2_policytoscamodels_yaml_policymodeltype_get) 174 0 R (_v2_templates_names_get) 199 0 R (_v2_templates_templatename_get) 202 0 R (_version_information) 23 0 R] ->> -endobj -171 0 obj [165 0 R /XYZ 0 556.9200000000004 null] endobj -172 0 obj +171 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -20169,22 +20164,22 @@ endobj /Type /Annot >> endobj -173 0 obj +172 0 obj [165 0 R /XYZ 0 451.8000000000005 null] endobj -174 0 obj +173 0 obj [165 0 R /XYZ 0 395.5200000000005 null] endobj -175 0 obj +174 0 obj [165 0 R /XYZ 0 327.36000000000047 null] endobj -176 0 obj +175 0 obj [165 0 R /XYZ 0 222.2400000000004 null] endobj -177 0 obj +176 0 obj [165 0 R /XYZ 0 117.12000000000037 null] endobj -178 0 obj +177 0 obj << /Length 18056 >> stream @@ -21511,33 +21506,33 @@ Q endstream endobj -179 0 obj +178 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 178 0 R +/Contents 177 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R /F4.0 33 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [183 0 R 188 0 R] +/Annots [182 0 R 188 0 R] >> endobj +179 0 obj +[178 0 R /XYZ 0 792.0 null] +endobj 180 0 obj -[179 0 R /XYZ 0 792.0 null] +[178 0 R /XYZ 0 718.32 null] endobj 181 0 obj -[179 0 R /XYZ 0 718.32 null] +[178 0 R /XYZ 0 613.2000000000003 null] endobj 182 0 obj -[179 0 R /XYZ 0 613.2000000000003 null] -endobj -183 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -21545,17 +21540,22 @@ endobj /Type /Annot >> endobj +183 0 obj +[178 0 R /XYZ 0 508.0800000000004 null] +endobj 184 0 obj -[179 0 R /XYZ 0 508.0800000000004 null] +[178 0 R /XYZ 0 451.80000000000035 null] endobj 185 0 obj -[179 0 R /XYZ 0 451.80000000000035 null] +[178 0 R /XYZ 0 411.7200000000003 null] endobj 186 0 obj -[179 0 R /XYZ 0 411.7200000000003 null] +[178 0 R /XYZ 0 269.04000000000025 null] endobj 187 0 obj -[179 0 R /XYZ 0 269.04000000000025 null] +<< /Limits [(_responses_2) (_responses_4)] +/Names [(_responses_2) 35 0 R (_responses_20) 141 0 R (_responses_21) 148 0 R (_responses_22) 157 0 R (_responses_23) 166 0 R (_responses_24) 170 0 R (_responses_25) 175 0 R (_responses_26) 181 0 R (_responses_27) 186 0 R (_responses_28) 194 0 R (_responses_29) 199 0 R (_responses_3) 38 0 R (_responses_30) 203 0 R (_responses_4) 46 0 R] +>> endobj 188 0 obj << /Border [0 0 0] @@ -21566,10 +21566,10 @@ endobj >> endobj 189 0 obj -[179 0 R /XYZ 0 163.92000000000024 null] +[178 0 R /XYZ 0 163.92000000000024 null] endobj 190 0 obj -[179 0 R /XYZ 0 107.64000000000021 null] +[178 0 R /XYZ 0 107.64000000000021 null] endobj 191 0 obj << /Length 16516 @@ -22786,10 +22786,10 @@ endobj /F4.0 33 0 R /F3.0 24 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [196 0 R 205 0 R] +/Annots [195 0 R 204 0 R] >> endobj 193 0 obj @@ -22799,11 +22799,6 @@ endobj [192 0 R /XYZ 0 718.32 null] endobj 195 0 obj -<< /Limits [(_responses_30) (_route14)] -/Names [(_responses_30) 204 0 R (_responses_4) 46 0 R (_responses_5) 51 0 R (_responses_6) 59 0 R (_responses_7) 65 0 R (_responses_8) 73 0 R (_responses_9) 77 0 R (_route10) 131 0 R (_route11) 113 0 R (_route12) 106 0 R (_route13) 118 0 R (_route14) 79 0 R] ->> -endobj -196 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -22811,33 +22806,33 @@ endobj /Type /Annot >> endobj -197 0 obj +196 0 obj [192 0 R /XYZ 0 613.2000000000003 null] endobj -198 0 obj +197 0 obj << /Limits [(_produces_25) (_responses)] -/Names [(_produces_25) 184 0 R (_produces_26) 190 0 R (_produces_27) 197 0 R (_produces_28) 201 0 R (_produces_29) 206 0 R (_produces_3) 40 0 R (_produces_4) 49 0 R (_produces_5) 52 0 R (_produces_6) 61 0 R (_produces_7) 68 0 R (_produces_8) 74 0 R (_produces_9) 78 0 R (_responses) 30 0 R] +/Names [(_produces_25) 183 0 R (_produces_26) 190 0 R (_produces_27) 196 0 R (_produces_28) 200 0 R (_produces_29) 205 0 R (_produces_3) 40 0 R (_produces_4) 49 0 R (_produces_5) 52 0 R (_produces_6) 61 0 R (_produces_7) 68 0 R (_produces_8) 74 0 R (_produces_9) 78 0 R (_responses) 30 0 R] >> endobj -199 0 obj +198 0 obj [192 0 R /XYZ 0 556.9200000000004 null] endobj -200 0 obj +199 0 obj [192 0 R /XYZ 0 516.8400000000005 null] endobj -201 0 obj +200 0 obj [192 0 R /XYZ 0 411.7200000000005 null] endobj -202 0 obj +201 0 obj [192 0 R /XYZ 0 355.44000000000045 null] endobj -203 0 obj +202 0 obj [192 0 R /XYZ 0 315.3600000000004 null] endobj -204 0 obj +203 0 obj [192 0 R /XYZ 0 210.2400000000004 null] endobj -205 0 obj +204 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -22845,10 +22840,10 @@ endobj /Type /Annot >> endobj -206 0 obj +205 0 obj [192 0 R /XYZ 0 105.12000000000037 null] endobj -207 0 obj +206 0 obj << /Length 16082 >> stream @@ -24091,32 +24086,32 @@ Q endstream endobj -208 0 obj +207 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 207 0 R +/Contents 206 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [212 0 R] +/Annots [211 0 R] >> endobj +208 0 obj +[207 0 R /XYZ 0 792.0 null] +endobj 209 0 obj -[208 0 R /XYZ 0 792.0 null] +[207 0 R /XYZ 0 712.0799999999999 null] endobj 210 0 obj -[208 0 R /XYZ 0 712.0799999999999 null] +[207 0 R /XYZ 0 524.04 null] endobj 211 0 obj -[208 0 R /XYZ 0 524.04 null] -endobj -212 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link @@ -24124,10 +24119,10 @@ endobj /Type /Annot >> endobj -213 0 obj -[208 0 R /XYZ 0 148.19999999999993 null] +212 0 obj +[207 0 R /XYZ 0 148.19999999999993 null] endobj -214 0 obj +213 0 obj << /Length 20298 >> stream @@ -25704,23 +25699,23 @@ Q endstream endobj -215 0 obj +214 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 214 0 R +/Contents 213 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [216 0 R 218 0 R] +/Annots [215 0 R 217 0 R] >> endobj -216 0 obj +215 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link @@ -25728,10 +25723,10 @@ endobj /Type /Annot >> endobj -217 0 obj -[215 0 R /XYZ 0 345.11999999999995 null] +216 0 obj +[214 0 R /XYZ 0 345.11999999999995 null] endobj -218 0 obj +217 0 obj << /Border [0 0 0] /Dest (_externalcomponentstate) /Subtype /Link @@ -25739,10 +25734,10 @@ endobj /Type /Annot >> endobj -219 0 obj -[215 0 R /XYZ 0 194.6399999999999 null] +218 0 obj +[214 0 R /XYZ 0 194.6399999999999 null] endobj -220 0 obj +219 0 obj << /Length 21931 >> stream @@ -27420,26 +27415,26 @@ Q endstream endobj -221 0 obj +220 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 220 0 R +/Contents 219 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [223 0 R 224 0 R 225 0 R 226 0 R 227 0 R] +/Annots [222 0 R 223 0 R 224 0 R 225 0 R 226 0 R] >> endobj -222 0 obj -[221 0 R /XYZ 0 683.1600000000001 null] +221 0 obj +[220 0 R /XYZ 0 683.1600000000001 null] endobj -223 0 obj +222 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -27447,7 +27442,7 @@ endobj /Type /Annot >> endobj -224 0 obj +223 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -27455,7 +27450,7 @@ endobj /Type /Annot >> endobj -225 0 obj +224 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -27463,7 +27458,7 @@ endobj /Type /Annot >> endobj -226 0 obj +225 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -27471,7 +27466,7 @@ endobj /Type /Annot >> endobj -227 0 obj +226 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -27479,7 +27474,7 @@ endobj /Type /Annot >> endobj -228 0 obj +227 0 obj << /Length 21512 >> stream @@ -29141,26 +29136,26 @@ Q endstream endobj -229 0 obj +228 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 228 0 R +/Contents 227 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [231 0 R 232 0 R 233 0 R] +/Annots [230 0 R 231 0 R 232 0 R] >> endobj -230 0 obj -[229 0 R /XYZ 0 532.9200000000003 null] +229 0 obj +[228 0 R /XYZ 0 532.9200000000003 null] endobj -231 0 obj +230 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -29168,7 +29163,7 @@ endobj /Type /Annot >> endobj -232 0 obj +231 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -29176,7 +29171,7 @@ endobj /Type /Annot >> endobj -233 0 obj +232 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -29184,7 +29179,7 @@ endobj /Type /Annot >> endobj -234 0 obj +233 0 obj << /Length 21163 >> stream @@ -30838,23 +30833,23 @@ Q endstream endobj -235 0 obj +234 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 234 0 R +/Contents 233 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [236 0 R 237 0 R] +/Annots [235 0 R 236 0 R] >> endobj -236 0 obj +235 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -30862,7 +30857,7 @@ endobj /Type /Annot >> endobj -237 0 obj +236 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -30870,10 +30865,10 @@ endobj /Type /Annot >> endobj -238 0 obj -[235 0 R /XYZ 0 382.68000000000023 null] +237 0 obj +[234 0 R /XYZ 0 382.68000000000023 null] endobj -239 0 obj +238 0 obj << /Length 21656 >> stream @@ -32551,23 +32546,23 @@ Q endstream endobj -240 0 obj +239 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 239 0 R +/Contents 238 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [241 0 R 242 0 R 243 0 R 244 0 R 245 0 R] +/Annots [240 0 R 241 0 R 242 0 R 243 0 R 244 0 R] >> endobj -241 0 obj +240 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -32575,7 +32570,7 @@ endobj /Type /Annot >> endobj -242 0 obj +241 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -32583,7 +32578,7 @@ endobj /Type /Annot >> endobj -243 0 obj +242 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -32591,7 +32586,7 @@ endobj /Type /Annot >> endobj -244 0 obj +243 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -32599,7 +32594,7 @@ endobj /Type /Annot >> endobj -245 0 obj +244 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -32607,15 +32602,15 @@ endobj /Type /Annot >> endobj -246 0 obj -[240 0 R /XYZ 0 232.44000000000023 null] +245 0 obj +[239 0 R /XYZ 0 232.44000000000023 null] endobj -247 0 obj +246 0 obj << /Limits [(_externalcomponent) (_parameters_12)] -/Names [(_externalcomponent) 217 0 R (_externalcomponentstate) 219 0 R (_jsonarray) 222 0 R (_jsonnull) 230 0 R (_jsonobject) 238 0 R (_jsonprimitive) 246 0 R (_loop) 257 0 R (_loopelementmodel) 267 0 R (_looplog) 270 0 R (_looptemplate) 274 0 R (_looptemplateloopelementmodel) 279 0 R (_microservicepolicy) 282 0 R (_number) 290 0 R (_operationalpolicy) 291 0 R (_overview) 19 0 R (_parameters) 44 0 R (_parameters_10) 107 0 R (_parameters_11) 114 0 R (_parameters_12) 119 0 R] +/Names [(_externalcomponent) 216 0 R (_externalcomponentstate) 218 0 R (_jsonarray) 221 0 R (_jsonnull) 229 0 R (_jsonobject) 237 0 R (_jsonprimitive) 245 0 R (_loop) 256 0 R (_loopelementmodel) 266 0 R (_looplog) 269 0 R (_looptemplate) 273 0 R (_looptemplateloopelementmodel) 278 0 R (_microservicepolicy) 281 0 R (_number) 289 0 R (_operationalpolicy) 290 0 R (_overview) 19 0 R (_parameters) 44 0 R (_parameters_10) 107 0 R (_parameters_11) 114 0 R (_parameters_12) 120 0 R] >> endobj -248 0 obj +247 0 obj << /Length 22690 >> stream @@ -34384,23 +34379,23 @@ Q endstream endobj -249 0 obj +248 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 248 0 R +/Contents 247 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [250 0 R 251 0 R 252 0 R 253 0 R 254 0 R] +/Annots [249 0 R 250 0 R 251 0 R 252 0 R 253 0 R] >> endobj -250 0 obj +249 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -34408,7 +34403,7 @@ endobj /Type /Annot >> endobj -251 0 obj +250 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -34416,7 +34411,7 @@ endobj /Type /Annot >> endobj -252 0 obj +251 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -34424,7 +34419,7 @@ endobj /Type /Annot >> endobj -253 0 obj +252 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -34432,7 +34427,7 @@ endobj /Type /Annot >> endobj -254 0 obj +253 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -34440,7 +34435,7 @@ endobj /Type /Annot >> endobj -255 0 obj +254 0 obj << /Length 23337 >> stream @@ -36197,26 +36192,26 @@ Q endstream endobj -256 0 obj +255 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 255 0 R +/Contents 254 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R 264 0 R] +/Annots [257 0 R 258 0 R 259 0 R 260 0 R 261 0 R 262 0 R 263 0 R] >> endobj -257 0 obj -[256 0 R /XYZ 0 645.6000000000001 null] +256 0 obj +[255 0 R /XYZ 0 645.6000000000001 null] endobj -258 0 obj +257 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link @@ -36224,7 +36219,7 @@ endobj /Type /Annot >> endobj -259 0 obj +258 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -36232,7 +36227,7 @@ endobj /Type /Annot >> endobj -260 0 obj +259 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link @@ -36240,7 +36235,7 @@ endobj /Type /Annot >> endobj -261 0 obj +260 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -36248,7 +36243,7 @@ endobj /Type /Annot >> endobj -262 0 obj +261 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link @@ -36256,7 +36251,7 @@ endobj /Type /Annot >> endobj -263 0 obj +262 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link @@ -36264,7 +36259,7 @@ endobj /Type /Annot >> endobj -264 0 obj +263 0 obj << /Border [0 0 0] /Dest (_operationalpolicy) /Subtype /Link @@ -36272,7 +36267,7 @@ endobj /Type /Annot >> endobj -265 0 obj +264 0 obj << /Length 20640 >> stream @@ -37863,26 +37858,26 @@ Q endstream endobj -266 0 obj +265 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 265 0 R +/Contents 264 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [268 0 R 269 0 R] +/Annots [267 0 R 268 0 R] >> endobj -267 0 obj -[266 0 R /XYZ 0 645.6000000000001 null] +266 0 obj +[265 0 R /XYZ 0 645.6000000000001 null] endobj -268 0 obj +267 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -37890,7 +37885,7 @@ endobj /Type /Annot >> endobj -269 0 obj +268 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link @@ -37898,10 +37893,10 @@ endobj /Type /Annot >> endobj -270 0 obj -[266 0 R /XYZ 0 157.08000000000015 null] +269 0 obj +[265 0 R /XYZ 0 157.08000000000015 null] endobj -271 0 obj +270 0 obj << /Length 21650 >> stream @@ -39577,23 +39572,23 @@ Q endstream endobj -272 0 obj +271 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 271 0 R +/Contents 270 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [273 0 R 275 0 R 276 0 R] +/Annots [272 0 R 274 0 R 275 0 R] >> endobj -273 0 obj +272 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -39601,10 +39596,10 @@ endobj /Type /Annot >> endobj -274 0 obj -[272 0 R /XYZ 0 532.9200000000001 null] +273 0 obj +[271 0 R /XYZ 0 532.9200000000001 null] endobj -275 0 obj +274 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link @@ -39612,7 +39607,7 @@ endobj /Type /Annot >> endobj -276 0 obj +275 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link @@ -39620,7 +39615,7 @@ endobj /Type /Annot >> endobj -277 0 obj +276 0 obj << /Length 20753 >> stream @@ -41199,26 +41194,26 @@ Q endstream endobj -278 0 obj +277 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 277 0 R +/Contents 276 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [280 0 R 281 0 R 283 0 R 284 0 R] +/Annots [279 0 R 280 0 R 282 0 R 283 0 R] >> endobj -279 0 obj -[278 0 R /XYZ 0 645.6000000000001 null] +278 0 obj +[277 0 R /XYZ 0 645.6000000000001 null] endobj -280 0 obj +279 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link @@ -41226,7 +41221,7 @@ endobj /Type /Annot >> endobj -281 0 obj +280 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -41234,10 +41229,10 @@ endobj /Type /Annot >> endobj -282 0 obj -[278 0 R /XYZ 0 457.56000000000023 null] +281 0 obj +[277 0 R /XYZ 0 457.56000000000023 null] endobj -283 0 obj +282 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -41245,7 +41240,7 @@ endobj /Type /Annot >> endobj -284 0 obj +283 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -41253,8 +41248,8 @@ endobj /Type /Annot >> endobj -285 0 obj -<< /Length 20394 +284 0 obj +<< /Length 20228 >> stream q @@ -42723,7 +42718,7 @@ S BT 51.24 84.97300000000011 Td /F2.0 10.5 Tf -<6c6f6f70> Tj +<6c6567616379> Tj ET @@ -42766,21 +42761,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 77.83300000000011 Td /F1.0 10.5 Tf -<4c6f6f70> Tj +<626f6f6c65616e> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn q 0.000 0.000 0.000 scn @@ -42806,23 +42793,23 @@ Q endstream endobj -286 0 obj +285 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 285 0 R +/Contents 284 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [287 0 R 288 0 R 289 0 R 292 0 R 293 0 R 294 0 R] +/Annots [286 0 R 287 0 R 288 0 R 291 0 R 292 0 R] >> endobj -287 0 obj +286 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link @@ -42830,7 +42817,7 @@ endobj /Type /Annot >> endobj -288 0 obj +287 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -42838,7 +42825,7 @@ endobj /Type /Annot >> endobj -289 0 obj +288 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -42846,13 +42833,13 @@ endobj /Type /Annot >> endobj +289 0 obj +[285 0 R /XYZ 0 382.68000000000023 null] +endobj 290 0 obj -[286 0 R /XYZ 0 382.68000000000023 null] +[285 0 R /XYZ 0 314.82000000000016 null] endobj 291 0 obj -[286 0 R /XYZ 0 314.82000000000016 null] -endobj -292 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -42860,7 +42847,7 @@ endobj /Type /Annot >> endobj -293 0 obj +292 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -42868,16 +42855,8 @@ endobj /Type /Annot >> endobj -294 0 obj -<< /Border [0 0 0] -/Dest (_loop) -/Subtype /Link -/Rect [272.17692192000004 74.76700000000011 297.27192192000007 89.04700000000011] -/Type /Annot ->> -endobj -295 0 obj -<< /Length 21773 +293 0 obj +<< /Length 21473 >> stream q @@ -42946,6 +42925,14 @@ f 269.177 469.800 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 432.240 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 432.240 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -43048,7 +43035,7 @@ S BT 51.24 716.473 Td /F2.0 10.5 Tf -<6c6f6f70456c656d656e744d6f64656c> Tj +<6c6f6f70> Tj ET @@ -43101,7 +43088,7 @@ S BT 272.17692192000004 709.333 Td /F1.0 10.5 Tf -<4c6f6f70456c656d656e744d6f64656c> Tj +<4c6f6f70> Tj ET 0.000 0.000 0.000 SCN @@ -43138,7 +43125,7 @@ S BT 51.24 678.913 Td /F2.0 10.5 Tf -<6e616d65> Tj +<6c6f6f70456c656d656e744d6f64656c> Tj ET @@ -43181,13 +43168,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 671.773 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4c6f6f70456c656d656e744d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43220,7 +43215,7 @@ S BT 51.24 641.3530000000001 Td /F2.0 10.5 Tf -<70647047726f7570> Tj +<6e616d65> Tj ET @@ -43302,7 +43297,7 @@ S BT 51.24 603.7929999999999 Td /F2.0 10.5 Tf -<70647053756247726f7570> Tj +<70647047726f7570> Tj ET @@ -43384,7 +43379,7 @@ S BT 51.24 566.233 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c> Tj +<70647053756247726f7570> Tj ET @@ -43427,21 +43422,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 559.093 Td /F1.0 10.5 Tf -<506f6c6963794d6f64656c> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43474,7 +43461,7 @@ S BT 51.24 528.673 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<706f6c6963794d6f64656c> Tj ET @@ -43517,13 +43504,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 521.533 Td /F1.0 10.5 Tf -<737472696e67> Tj +<506f6c6963794d6f64656c> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -43556,7 +43551,7 @@ S BT 51.24 491.113 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET @@ -43603,6 +43598,88 @@ S BT 272.17692192000004 483.973 Td /F1.0 10.5 Tf +<737472696e67> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 469.800 m +269.177 469.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 432.240 m +269.177 432.240 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 470.050 m +48.240 431.990 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 470.050 m +269.177 431.990 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 453.553 Td +/F2.0 10.5 Tf +<7570646174656444617465> Tj +ET + + +BT +51.24 439.273 Td +ET + + +BT +51.24 439.273 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 469.800 m +563.760 469.800 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 432.240 m +563.760 432.240 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 470.050 m +269.177 431.990 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 470.050 m +563.760 431.990 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 446.413 Td +/F1.0 10.5 Tf <696e74656765722028696e74363429> Tj ET @@ -43611,7 +43688,7 @@ ET 0.200 0.200 0.200 SCN BT -48.24 434.37600000000003 Td +48.24 396.81600000000003 Td /F2.0 18 Tf <332e31382e20506f6c6963794d6f64656c> Tj ET @@ -43619,177 +43696,99 @@ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 394.440 220.937 23.280 re -f -0.000 0.000 0.000 scn -1.000 1.000 1.000 scn -269.177 394.440 294.583 23.280 re +48.240 356.880 220.937 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 356.880 220.937 37.560 re +269.177 356.880 294.583 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 356.880 294.583 37.560 re -f -0.000 0.000 0.000 scn -0.976 0.976 0.976 scn 48.240 319.320 220.937 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 269.177 319.320 294.583 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 48.240 281.760 220.937 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 269.177 281.760 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 48.240 244.200 220.937 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 269.177 244.200 294.583 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 48.240 206.640 220.937 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 269.177 206.640 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 48.240 169.080 220.937 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 269.177 169.080 294.583 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 48.240 131.520 220.937 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 269.177 131.520 294.583 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 48.240 93.960 220.937 37.560 re f 0.000 0.000 0.000 scn -0.976 0.976 0.976 scn +1.000 1.000 1.000 scn 269.177 93.960 294.583 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 48.240 56.400 220.937 37.560 re f 0.000 0.000 0.000 scn -1.000 1.000 1.000 scn +0.976 0.976 0.976 scn 269.177 56.400 294.583 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 417.720 m -269.177 417.720 l +48.240 380.160 m +269.177 380.160 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -48.240 417.970 m -48.240 393.690 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 417.970 m -269.177 393.690 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -51.24 401.97299999999996 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -269.177 417.720 m -563.760 417.720 l -S -[ ] 0 d -1.5 w -0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -269.177 417.970 m -269.177 393.690 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN -563.760 417.970 m -563.760 393.690 l -S -[ ] 0 d -1 w -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -272.17692192000004 401.97299999999996 Td -/F2.0 10.5 Tf -<536368656d61> Tj -ET - -0.000 0.000 0.000 scn -0.5 w -0.867 0.867 0.867 SCN -48.240 394.440 m -269.177 394.440 l -S -[ ] 0 d -0.5 w -0.867 0.867 0.867 SCN 48.240 356.880 m 269.177 356.880 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 394.690 m -48.240 356.630 l +48.240 380.410 m +48.240 356.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 380.410 m +269.177 356.130 l S [ ] 0 d 1 w @@ -43797,31 +43796,19 @@ S 0.200 0.200 0.200 scn BT -51.24 378.1929999999999 Td +51.24 364.41299999999995 Td /F2.0 10.5 Tf -[<6372656174656442> 20.01953125 <79>] TJ -ET - - -BT -51.24 363.9129999999999 Td -ET - - -BT -51.24 363.9129999999999 Td -/F3.0 10.5 Tf -<6f7074696f6e616c> Tj +<4e616d65> Tj ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 394.440 m -563.760 394.440 l +269.177 380.160 m +563.760 380.160 l S [ ] 0 d -0.5 w +1.5 w 0.867 0.867 0.867 SCN 269.177 356.880 m 563.760 356.880 l @@ -43829,14 +43816,14 @@ S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 394.690 m -269.177 356.630 l +269.177 380.410 m +269.177 356.130 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 394.690 m -563.760 356.630 l +563.760 380.410 m +563.760 356.130 l S [ ] 0 d 1 w @@ -43844,9 +43831,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 371.05299999999994 Td -/F1.0 10.5 Tf -<737472696e67> Tj +272.17692192000004 364.41299999999995 Td +/F2.0 10.5 Tf +<536368656d61> Tj ET 0.000 0.000 0.000 scn @@ -43881,7 +43868,7 @@ S BT 51.24 340.633 Td /F2.0 10.5 Tf -<6372656174656444617465> Tj +[<6372656174656442> 20.01953125 <79>] TJ ET @@ -43928,7 +43915,7 @@ S BT 272.17692192000004 333.493 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -43963,7 +43950,7 @@ S BT 51.24 303.0729999999999 Td /F2.0 10.5 Tf -[<706f6c69637941> 20.01953125 <63726f6e> 20.01953125 <796d>] TJ +<6372656174656444617465> Tj ET @@ -44010,7 +43997,7 @@ S BT 272.17692192000004 295.93299999999994 Td /F1.0 10.5 Tf -<737472696e67> Tj +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -44045,7 +44032,7 @@ S BT 51.24 265.513 Td /F2.0 10.5 Tf -[<706f6c6963794d6f64656c54> 29.78515625 <6f736361>] TJ +[<706f6c69637941> 20.01953125 <63726f6e> 20.01953125 <796d>] TJ ET @@ -44127,7 +44114,7 @@ S BT 51.24 227.95299999999997 Td /F2.0 10.5 Tf -<706f6c6963794d6f64656c54797065> Tj +[<706f6c6963794d6f64656c54> 29.78515625 <6f736361>] TJ ET @@ -44209,7 +44196,7 @@ S BT 51.24 190.39299999999997 Td /F2.0 10.5 Tf -<706f6c69637950647047726f7570> Tj +<706f6c6963794d6f64656c54797065> Tj ET @@ -44252,21 +44239,13 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN BT 272.17692192000004 183.25299999999996 Td /F1.0 10.5 Tf -<4a736f6e4f626a656374> Tj +<737472696e67> Tj ET -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -44299,7 +44278,7 @@ S BT 51.24 152.83299999999997 Td /F2.0 10.5 Tf -[<7570646174656442> 20.01953125 <79>] TJ +<706f6c69637950647047726f7570> Tj ET @@ -44342,13 +44321,21 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN BT 272.17692192000004 145.69299999999996 Td /F1.0 10.5 Tf -<737472696e67> Tj +<4a736f6e4f626a656374> Tj ET +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN @@ -44379,19 +44366,19 @@ S 0.200 0.200 0.200 scn BT -51.24 115.27299999999993 Td +51.24 115.27299999999995 Td /F2.0 10.5 Tf -<7570646174656444617465> Tj +[<7570646174656442> 20.01953125 <79>] TJ ET BT -51.24 100.99299999999992 Td +51.24 100.99299999999995 Td ET BT -51.24 100.99299999999992 Td +51.24 100.99299999999995 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44426,9 +44413,9 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 108.13299999999992 Td +272.17692192000004 108.13299999999995 Td /F1.0 10.5 Tf -<696e74656765722028696e74363429> Tj +<737472696e67> Tj ET 0.000 0.000 0.000 scn @@ -44463,7 +44450,7 @@ S BT 51.24 77.71299999999992 Td /F2.0 10.5 Tf -[<7573656442> 20.01953125 <79456c656d656e744d6f64656c73>] TJ +<7570646174656444617465> Tj ET @@ -44506,33 +44493,11 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn BT 272.17692192000004 70.57299999999992 Td /F1.0 10.5 Tf -<3c20> Tj -ET - -0.259 0.545 0.792 scn -0.259 0.545 0.792 SCN - -BT -280.76592192000004 70.57299999999992 Td -/F1.0 10.5 Tf -<4c6f6f70456c656d656e744d6f64656c> Tj -ET - -0.000 0.000 0.000 SCN -0.200 0.200 0.200 scn - -BT -378.47892192000006 70.57299999999992 Td -/F1.0 10.5 Tf -[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +<696e74656765722028696e74363429> Tj ET 0.000 0.000 0.000 scn @@ -44560,59 +44525,59 @@ Q endstream endobj -296 0 obj +294 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 295 0 R +/Contents 293 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [297 0 R 298 0 R 300 0 R 301 0 R] +/Annots [295 0 R 296 0 R 297 0 R 299 0 R] >> endobj -297 0 obj +295 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_loop) /Subtype /Link -/Rect [272.17692192000004 706.267 369.88992192000006 720.547] +/Rect [272.17692192000004 706.267 297.27192192000007 720.547] /Type /Annot >> endobj -298 0 obj +296 0 obj << /Border [0 0 0] -/Dest (_policymodel) +/Dest (_loopelementmodel) /Subtype /Link -/Rect [272.17692192000004 556.027 333.47592192 570.307] +/Rect [272.17692192000004 668.7070000000001 369.88992192000006 682.9870000000001] /Type /Annot >> endobj -299 0 obj -[296 0 R /XYZ 0 457.8 null] -endobj -300 0 obj +297 0 obj << /Border [0 0 0] -/Dest (_jsonobject) +/Dest (_policymodel) /Subtype /Link -/Rect [272.17692192000004 180.18699999999998 325.32792192000005 194.46699999999998] +/Rect [272.17692192000004 518.4670000000001 333.47592192 532.7470000000001] /Type /Annot >> endobj -301 0 obj +298 0 obj +[294 0 R /XYZ 0 420.24 null] +endobj +299 0 obj << /Border [0 0 0] -/Dest (_loopelementmodel) +/Dest (_jsonobject) /Subtype /Link -/Rect [280.76592192000004 67.50699999999992 378.47892192000006 81.78699999999992] +/Rect [272.17692192000004 142.62699999999998 325.32792192000005 156.90699999999998] /Type /Annot >> endobj -302 0 obj -<< /Length 9726 +300 0 obj +<< /Length 11146 >> stream q @@ -44633,6 +44598,14 @@ f 269.177 695.160 294.583 37.560 re f 0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +48.240 657.600 220.937 37.560 re +f +0.000 0.000 0.000 scn +0.976 0.976 0.976 scn +269.177 657.600 294.583 37.560 re +f +0.000 0.000 0.000 scn 0.5 w /DeviceRGB CS 0.867 0.867 0.867 SCN @@ -44733,19 +44706,19 @@ S 0.200 0.200 0.200 scn BT -51.24 716.4730000000002 Td +51.24 716.473 Td /F2.0 10.5 Tf -<76657273696f6e> Tj +[<7573656442> 20.01953125 <79456c656d656e744d6f64656c73>] TJ ET BT -51.24 702.1930000000001 Td +51.24 702.193 Td ET BT -51.24 702.1930000000001 Td +51.24 702.193 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44778,9 +44751,113 @@ S 1 w 0.000 0.000 0.000 SCN 0.200 0.200 0.200 scn +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn BT -272.17692192000004 709.3330000000001 Td +272.17692192000004 709.333 Td +/F1.0 10.5 Tf +<3c20> Tj +ET + +0.259 0.545 0.792 scn +0.259 0.545 0.792 SCN + +BT +280.76592192000004 709.333 Td +/F1.0 10.5 Tf +<4c6f6f70456c656d656e744d6f64656c> Tj +ET + +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +378.47892192000006 709.333 Td +/F1.0 10.5 Tf +[<203e20617272> 20.01953125 <61> 20.01953125 <79>] TJ +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +48.240 695.160 m +269.177 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 657.600 m +269.177 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +48.240 695.410 m +48.240 657.350 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 695.410 m +269.177 657.350 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +51.24 678.913 Td +/F2.0 10.5 Tf +<76657273696f6e> Tj +ET + + +BT +51.24 664.6329999999999 Td +ET + + +BT +51.24 664.6329999999999 Td +/F3.0 10.5 Tf +<6f7074696f6e616c> Tj +ET + +0.000 0.000 0.000 scn +0.5 w +0.867 0.867 0.867 SCN +269.177 695.160 m +563.760 695.160 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 657.600 m +563.760 657.600 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +269.177 695.410 m +269.177 657.350 l +S +[ ] 0 d +0.5 w +0.867 0.867 0.867 SCN +563.760 695.410 m +563.760 657.350 l +S +[ ] 0 d +1 w +0.000 0.000 0.000 SCN +0.200 0.200 0.200 scn + +BT +272.17692192000004 671.7729999999999 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -44790,7 +44867,7 @@ ET 0.200 0.200 0.200 SCN BT -48.24 659.7360000000001 Td +48.24 622.1759999999999 Td /F2.0 18 Tf <332e31392e2053657276696365> Tj ET @@ -44798,75 +44875,75 @@ ET 0.000 0.000 0.000 SCN 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 619.800 220.937 23.280 re +48.240 582.240 220.937 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 619.800 294.583 23.280 re +269.177 582.240 294.583 23.280 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 582.240 220.937 37.560 re +48.240 544.680 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 582.240 294.583 37.560 re +269.177 544.680 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 544.680 220.937 37.560 re +48.240 507.120 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 544.680 294.583 37.560 re +269.177 507.120 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 507.120 220.937 37.560 re +48.240 469.560 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 507.120 294.583 37.560 re +269.177 469.560 294.583 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -48.240 469.560 220.937 37.560 re +48.240 432.000 220.937 37.560 re f 0.000 0.000 0.000 scn 0.976 0.976 0.976 scn -269.177 469.560 294.583 37.560 re +269.177 432.000 294.583 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -48.240 432.000 220.937 37.560 re +48.240 394.440 220.937 37.560 re f 0.000 0.000 0.000 scn 1.000 1.000 1.000 scn -269.177 432.000 294.583 37.560 re +269.177 394.440 294.583 37.560 re f 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 643.080 m -269.177 643.080 l +48.240 605.520 m +269.177 605.520 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -48.240 619.800 m -269.177 619.800 l +48.240 582.240 m +269.177 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 643.330 m -48.240 619.050 l +48.240 605.770 m +48.240 581.490 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 643.330 m -269.177 619.050 l +269.177 605.770 m +269.177 581.490 l S [ ] 0 d 1 w @@ -44874,7 +44951,7 @@ S 0.200 0.200 0.200 scn BT -51.24 627.3330000000001 Td +51.24 589.7729999999999 Td /F2.0 10.5 Tf <4e616d65> Tj ET @@ -44882,26 +44959,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 643.080 m -563.760 643.080 l +269.177 605.520 m +563.760 605.520 l S [ ] 0 d 1.5 w 0.867 0.867 0.867 SCN -269.177 619.800 m -563.760 619.800 l +269.177 582.240 m +563.760 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 643.330 m -269.177 619.050 l +269.177 605.770 m +269.177 581.490 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 643.330 m -563.760 619.050 l +563.760 605.770 m +563.760 581.490 l S [ ] 0 d 1 w @@ -44909,7 +44986,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 627.3330000000001 Td +272.17692192000004 589.7729999999999 Td /F2.0 10.5 Tf <536368656d61> Tj ET @@ -44917,26 +44994,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 619.800 m -269.177 619.800 l +48.240 582.240 m +269.177 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 620.050 m -48.240 581.990 l +48.240 582.490 m +48.240 544.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.050 m -269.177 581.990 l +269.177 582.490 m +269.177 544.430 l S [ ] 0 d 1 w @@ -44944,19 +45021,19 @@ S 0.200 0.200 0.200 scn BT -51.24 603.5530000000001 Td +51.24 565.9929999999999 Td /F2.0 10.5 Tf <6e616d65> Tj ET BT -51.24 589.2730000000001 Td +51.24 551.713 Td ET BT -51.24 589.2730000000001 Td +51.24 551.713 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -44964,26 +45041,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 619.800 m -563.760 619.800 l +269.177 582.240 m +563.760 582.240 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 620.050 m -269.177 581.990 l +269.177 582.490 m +269.177 544.430 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 620.050 m -563.760 581.990 l +563.760 582.490 m +563.760 544.430 l S [ ] 0 d 1 w @@ -44991,7 +45068,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 596.4130000000001 Td +272.17692192000004 558.853 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -44999,26 +45076,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 582.240 m -269.177 582.240 l +48.240 544.680 m +269.177 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 582.490 m -48.240 544.430 l +48.240 544.930 m +48.240 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 1 w @@ -45026,19 +45103,19 @@ S 0.200 0.200 0.200 scn BT -51.24 565.9930000000002 Td +51.24 528.433 Td /F2.0 10.5 Tf <7265736f7572636544657461696c73> Tj ET BT -51.24 551.7130000000001 Td +51.24 514.1529999999999 Td ET BT -51.24 551.7130000000001 Td +51.24 514.1529999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45046,26 +45123,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 582.240 m -563.760 582.240 l +269.177 544.680 m +563.760 544.680 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 582.490 m -269.177 544.430 l +269.177 544.930 m +269.177 506.870 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 582.490 m -563.760 544.430 l +563.760 544.930 m +563.760 506.870 l S [ ] 0 d 1 w @@ -45079,7 +45156,7 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 558.8530000000001 Td +272.17692192000004 521.2929999999999 Td /F1.0 10.5 Tf <4a736f6e4f626a656374> Tj ET @@ -45089,26 +45166,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 544.680 m -269.177 544.680 l +48.240 507.120 m +269.177 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 544.930 m -48.240 506.870 l +48.240 507.370 m +48.240 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 1 w @@ -45116,19 +45193,19 @@ S 0.200 0.200 0.200 scn BT -51.24 528.4330000000002 Td +51.24 490.873 Td /F2.0 10.5 Tf <7365727669636544657461696c73> Tj ET BT -51.24 514.1530000000001 Td +51.24 476.59299999999996 Td ET BT -51.24 514.1530000000001 Td +51.24 476.59299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45136,26 +45213,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 544.680 m -563.760 544.680 l +269.177 507.120 m +563.760 507.120 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 544.930 m -269.177 506.870 l +269.177 507.370 m +269.177 469.310 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 544.930 m -563.760 506.870 l +563.760 507.370 m +563.760 469.310 l S [ ] 0 d 1 w @@ -45169,7 +45246,7 @@ S 0.259 0.545 0.792 SCN BT -272.17692192000004 521.2930000000001 Td +272.17692192000004 483.733 Td /F1.0 10.5 Tf <4a736f6e4f626a656374> Tj ET @@ -45179,26 +45256,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 507.120 m -269.177 507.120 l +48.240 469.560 m +269.177 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 507.370 m -48.240 469.310 l +48.240 469.810 m +48.240 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 1 w @@ -45206,19 +45283,19 @@ S 0.200 0.200 0.200 scn BT -51.24 490.8730000000001 Td +51.24 453.31299999999993 Td /F2.0 10.5 Tf <7365727669636555756964> Tj ET BT -51.24 476.5930000000001 Td +51.24 439.0329999999999 Td ET BT -51.24 476.5930000000001 Td +51.24 439.0329999999999 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45226,26 +45303,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 507.120 m -563.760 507.120 l +269.177 469.560 m +563.760 469.560 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 507.370 m -269.177 469.310 l +269.177 469.810 m +269.177 431.750 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 507.370 m -563.760 469.310 l +563.760 469.810 m +563.760 431.750 l S [ ] 0 d 1 w @@ -45253,7 +45330,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 483.7330000000001 Td +272.17692192000004 446.17299999999994 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -45261,26 +45338,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -48.240 469.560 m -269.177 469.560 l +48.240 432.000 m +269.177 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 432.000 m -269.177 432.000 l +48.240 394.440 m +269.177 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -48.240 469.810 m -48.240 431.750 l +48.240 432.250 m +48.240 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 1 w @@ -45288,19 +45365,19 @@ S 0.200 0.200 0.200 scn BT -51.24 453.31300000000016 Td +51.24 415.753 Td /F2.0 10.5 Tf <76657273696f6e> Tj ET BT -51.24 439.03300000000013 Td +51.24 401.47299999999996 Td ET BT -51.24 439.03300000000013 Td +51.24 401.47299999999996 Td /F3.0 10.5 Tf <6f7074696f6e616c> Tj ET @@ -45308,26 +45385,26 @@ ET 0.000 0.000 0.000 scn 0.5 w 0.867 0.867 0.867 SCN -269.177 469.560 m -563.760 469.560 l +269.177 432.000 m +563.760 432.000 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 432.000 m -563.760 432.000 l +269.177 394.440 m +563.760 394.440 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -269.177 469.810 m -269.177 431.750 l +269.177 432.250 m +269.177 394.190 l S [ ] 0 d 0.5 w 0.867 0.867 0.867 SCN -563.760 469.810 m -563.760 431.750 l +563.760 432.250 m +563.760 394.190 l S [ ] 0 d 1 w @@ -45335,7 +45412,7 @@ S 0.200 0.200 0.200 scn BT -272.17692192000004 446.1730000000002 Td +272.17692192000004 408.613 Td /F1.0 10.5 Tf <737472696e67> Tj ET @@ -45365,42 +45442,50 @@ Q endstream endobj -303 0 obj +301 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612.0 792.0] -/Contents 302 0 R +/Contents 300 0 R /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] /Font << /F2.0 22 0 R /F3.0 24 0 R /F1.0 8 0 R >> -/XObject << /Stamp1 589 0 R +/XObject << /Stamp1 588 0 R >> >> -/Annots [305 0 R 306 0 R] +/Annots [302 0 R 304 0 R 305 0 R] >> endobj -304 0 obj -[303 0 R /XYZ 0 683.1600000000001 null] +302 0 obj +<< /Border [0 0 0] +/Dest (_loopelementmodel) +/Subtype /Link +/Rect [280.76592192000004 706.267 378.47892192000006 720.547] +/Type /Annot +>> endobj -305 0 obj +303 0 obj +[301 0 R /XYZ 0 645.5999999999999 null] +endobj +304 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 555.7870000000001 325.32792192000005 570.0670000000001] +/Rect [272.17692192000004 518.227 325.32792192000005 532.507] /Type /Annot >> endobj -306 0 obj +305 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link -/Rect [272.17692192000004 518.2270000000002 325.32792192000005 532.5070000000002] +/Rect [272.17692192000004 480.667 325.32792192000005 494.947] /Type /Annot >> endobj -307 0 obj +306 0 obj << /Border [0 0 0] /Dest (_overview) /Subtype /Link @@ -45408,7 +45493,7 @@ endobj /Type /Annot >> endobj -308 0 obj +307 0 obj << /Border [0 0 0] /Dest (_overview) /Subtype /Link @@ -45416,7 +45501,7 @@ endobj /Type /Annot >> endobj -309 0 obj +308 0 obj << /Border [0 0 0] /Dest (_version_information) /Subtype /Link @@ -45424,7 +45509,7 @@ endobj /Type /Annot >> endobj -310 0 obj +309 0 obj << /Border [0 0 0] /Dest (_version_information) /Subtype /Link @@ -45432,7 +45517,7 @@ endobj /Type /Annot >> endobj -311 0 obj +310 0 obj << /Border [0 0 0] /Dest (_uri_scheme) /Subtype /Link @@ -45440,7 +45525,7 @@ endobj /Type /Annot >> endobj -312 0 obj +311 0 obj << /Border [0 0 0] /Dest (_uri_scheme) /Subtype /Link @@ -45448,7 +45533,7 @@ endobj /Type /Annot >> endobj -313 0 obj +312 0 obj << /Border [0 0 0] /Dest (_paths) /Subtype /Link @@ -45456,7 +45541,7 @@ endobj /Type /Annot >> endobj -314 0 obj +313 0 obj << /Border [0 0 0] /Dest (_paths) /Subtype /Link @@ -45464,23 +45549,23 @@ endobj /Type /Annot >> endobj -315 0 obj +314 0 obj << /Border [0 0 0] -/Dest (_route30) +/Dest (_route61) /Subtype /Link /Rect [60.24000000000001 621.7799999999997 181.64100000000002 636.0599999999998] /Type /Annot >> endobj -316 0 obj +315 0 obj << /Border [0 0 0] -/Dest (_route30) +/Dest (_route61) /Subtype /Link /Rect [557.8905 621.7799999999997 563.76 636.0599999999998] /Type /Annot >> endobj -317 0 obj +316 0 obj << /Border [0 0 0] /Dest (_responses) /Subtype /Link @@ -45488,7 +45573,7 @@ endobj /Type /Annot >> endobj -318 0 obj +317 0 obj << /Border [0 0 0] /Dest (_responses) /Subtype /Link @@ -45496,7 +45581,7 @@ endobj /Type /Annot >> endobj -319 0 obj +318 0 obj << /Border [0 0 0] /Dest (_produces) /Subtype /Link @@ -45504,7 +45589,7 @@ endobj /Type /Annot >> endobj -320 0 obj +319 0 obj << /Border [0 0 0] /Dest (_produces) /Subtype /Link @@ -45512,23 +45597,23 @@ endobj /Type /Annot >> endobj -321 0 obj +320 0 obj << /Border [0 0 0] -/Dest (_route31) +/Dest (_route62) /Subtype /Link /Rect [60.24000000000001 566.3399999999997 183.8775 580.6199999999998] /Type /Annot >> endobj -322 0 obj +321 0 obj << /Border [0 0 0] -/Dest (_route31) +/Dest (_route62) /Subtype /Link /Rect [557.8905 566.3399999999997 563.76 580.6199999999998] /Type /Annot >> endobj -323 0 obj +322 0 obj << /Border [0 0 0] /Dest (_responses_2) /Subtype /Link @@ -45536,7 +45621,7 @@ endobj /Type /Annot >> endobj -324 0 obj +323 0 obj << /Border [0 0 0] /Dest (_responses_2) /Subtype /Link @@ -45544,7 +45629,7 @@ endobj /Type /Annot >> endobj -325 0 obj +324 0 obj << /Border [0 0 0] /Dest (_produces_2) /Subtype /Link @@ -45552,7 +45637,7 @@ endobj /Type /Annot >> endobj -326 0 obj +325 0 obj << /Border [0 0 0] /Dest (_produces_2) /Subtype /Link @@ -45560,23 +45645,23 @@ endobj /Type /Annot >> endobj -327 0 obj +326 0 obj << /Border [0 0 0] -/Dest (_route18) +/Dest (_route49) /Subtype /Link /Rect [60.24000000000001 510.89999999999975 172.716 525.1799999999997] /Type /Annot >> endobj -328 0 obj +327 0 obj << /Border [0 0 0] -/Dest (_route18) +/Dest (_route49) /Subtype /Link /Rect [557.8905 510.89999999999975 563.76 525.1799999999997] /Type /Annot >> endobj -329 0 obj +328 0 obj << /Border [0 0 0] /Dest (_responses_3) /Subtype /Link @@ -45584,7 +45669,7 @@ endobj /Type /Annot >> endobj -330 0 obj +329 0 obj << /Border [0 0 0] /Dest (_responses_3) /Subtype /Link @@ -45592,7 +45677,7 @@ endobj /Type /Annot >> endobj -331 0 obj +330 0 obj << /Border [0 0 0] /Dest (_produces_3) /Subtype /Link @@ -45600,7 +45685,7 @@ endobj /Type /Annot >> endobj -332 0 obj +331 0 obj << /Border [0 0 0] /Dest (_produces_3) /Subtype /Link @@ -45608,23 +45693,23 @@ endobj /Type /Annot >> endobj -333 0 obj +332 0 obj << /Border [0 0 0] -/Dest (_route20) +/Dest (_route51) /Subtype /Link /Rect [60.24000000000001 455.4599999999997 172.548 469.73999999999967] /Type /Annot >> endobj -334 0 obj +333 0 obj << /Border [0 0 0] -/Dest (_route20) +/Dest (_route51) /Subtype /Link /Rect [557.8905 455.4599999999997 563.76 469.73999999999967] /Type /Annot >> endobj -335 0 obj +334 0 obj << /Border [0 0 0] /Dest (_parameters) /Subtype /Link @@ -45632,7 +45717,7 @@ endobj /Type /Annot >> endobj -336 0 obj +335 0 obj << /Border [0 0 0] /Dest (_parameters) /Subtype /Link @@ -45640,7 +45725,7 @@ endobj /Type /Annot >> endobj -337 0 obj +336 0 obj << /Border [0 0 0] /Dest (_responses_4) /Subtype /Link @@ -45648,7 +45733,7 @@ endobj /Type /Annot >> endobj -338 0 obj +337 0 obj << /Border [0 0 0] /Dest (_responses_4) /Subtype /Link @@ -45656,7 +45741,7 @@ endobj /Type /Annot >> endobj -339 0 obj +338 0 obj << /Border [0 0 0] /Dest (_consumes) /Subtype /Link @@ -45664,7 +45749,7 @@ endobj /Type /Annot >> endobj -340 0 obj +339 0 obj << /Border [0 0 0] /Dest (_consumes) /Subtype /Link @@ -45672,7 +45757,7 @@ endobj /Type /Annot >> endobj -341 0 obj +340 0 obj << /Border [0 0 0] /Dest (_produces_4) /Subtype /Link @@ -45680,7 +45765,7 @@ endobj /Type /Annot >> endobj -342 0 obj +341 0 obj << /Border [0 0 0] /Dest (_produces_4) /Subtype /Link @@ -45688,7 +45773,7 @@ endobj /Type /Annot >> endobj -343 0 obj +342 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_secondary_names_get) /Subtype /Link @@ -45696,7 +45781,7 @@ endobj /Type /Annot >> endobj -344 0 obj +343 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_secondary_names_get) /Subtype /Link @@ -45704,7 +45789,7 @@ endobj /Type /Annot >> endobj -345 0 obj +344 0 obj << /Border [0 0 0] /Dest (_responses_5) /Subtype /Link @@ -45712,7 +45797,7 @@ endobj /Type /Annot >> endobj -346 0 obj +345 0 obj << /Border [0 0 0] /Dest (_responses_5) /Subtype /Link @@ -45720,7 +45805,7 @@ endobj /Type /Annot >> endobj -347 0 obj +346 0 obj << /Border [0 0 0] /Dest (_produces_5) /Subtype /Link @@ -45728,7 +45813,7 @@ endobj /Type /Annot >> endobj -348 0 obj +347 0 obj << /Border [0 0 0] /Dest (_produces_5) /Subtype /Link @@ -45736,7 +45821,7 @@ endobj /Type /Annot >> endobj -349 0 obj +348 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_dictionaryname_get) /Subtype /Link @@ -45744,7 +45829,7 @@ endobj /Type /Annot >> endobj -350 0 obj +349 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_dictionaryname_get) /Subtype /Link @@ -45752,7 +45837,7 @@ endobj /Type /Annot >> endobj -351 0 obj +350 0 obj << /Border [0 0 0] /Dest (_parameters_2) /Subtype /Link @@ -45760,7 +45845,7 @@ endobj /Type /Annot >> endobj -352 0 obj +351 0 obj << /Border [0 0 0] /Dest (_parameters_2) /Subtype /Link @@ -45768,7 +45853,7 @@ endobj /Type /Annot >> endobj -353 0 obj +352 0 obj << /Border [0 0 0] /Dest (_responses_6) /Subtype /Link @@ -45776,7 +45861,7 @@ endobj /Type /Annot >> endobj -354 0 obj +353 0 obj << /Border [0 0 0] /Dest (_responses_6) /Subtype /Link @@ -45784,7 +45869,7 @@ endobj /Type /Annot >> endobj -355 0 obj +354 0 obj << /Border [0 0 0] /Dest (_produces_6) /Subtype /Link @@ -45792,7 +45877,7 @@ endobj /Type /Annot >> endobj -356 0 obj +355 0 obj << /Border [0 0 0] /Dest (_produces_6) /Subtype /Link @@ -45800,7 +45885,7 @@ endobj /Type /Annot >> endobj -357 0 obj +356 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_name_put) /Subtype /Link @@ -45808,7 +45893,7 @@ endobj /Type /Annot >> endobj -358 0 obj +357 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_name_put) /Subtype /Link @@ -45816,7 +45901,7 @@ endobj /Type /Annot >> endobj -359 0 obj +358 0 obj << /Border [0 0 0] /Dest (_parameters_3) /Subtype /Link @@ -45824,7 +45909,7 @@ endobj /Type /Annot >> endobj -360 0 obj +359 0 obj << /Border [0 0 0] /Dest (_parameters_3) /Subtype /Link @@ -45832,7 +45917,7 @@ endobj /Type /Annot >> endobj -361 0 obj +360 0 obj << /Border [0 0 0] /Dest (_responses_7) /Subtype /Link @@ -45840,7 +45925,7 @@ endobj /Type /Annot >> endobj -362 0 obj +361 0 obj << /Border [0 0 0] /Dest (_responses_7) /Subtype /Link @@ -45848,7 +45933,7 @@ endobj /Type /Annot >> endobj -363 0 obj +362 0 obj << /Border [0 0 0] /Dest (_consumes_2) /Subtype /Link @@ -45856,7 +45941,7 @@ endobj /Type /Annot >> endobj -364 0 obj +363 0 obj << /Border [0 0 0] /Dest (_consumes_2) /Subtype /Link @@ -45864,7 +45949,7 @@ endobj /Type /Annot >> endobj -365 0 obj +364 0 obj << /Border [0 0 0] /Dest (_produces_7) /Subtype /Link @@ -45872,7 +45957,7 @@ endobj /Type /Annot >> endobj -366 0 obj +365 0 obj << /Border [0 0 0] /Dest (_produces_7) /Subtype /Link @@ -45880,23 +45965,23 @@ endobj /Type /Annot >> endobj -367 0 obj +366 0 obj << /Border [0 0 0] -/Dest (_route22) +/Dest (_route53) /Subtype /Link /Rect [60.24000000000001 141.29999999999953 232.70250000000001 155.57999999999953] /Type /Annot >> endobj -368 0 obj +367 0 obj << /Border [0 0 0] -/Dest (_route22) +/Dest (_route53) /Subtype /Link /Rect [557.8905 141.29999999999953 563.76 155.57999999999953] /Type /Annot >> endobj -369 0 obj +368 0 obj << /Border [0 0 0] /Dest (_parameters_4) /Subtype /Link @@ -45904,7 +45989,7 @@ endobj /Type /Annot >> endobj -370 0 obj +369 0 obj << /Border [0 0 0] /Dest (_parameters_4) /Subtype /Link @@ -45912,7 +45997,7 @@ endobj /Type /Annot >> endobj -371 0 obj +370 0 obj << /Border [0 0 0] /Dest (_responses_8) /Subtype /Link @@ -45920,7 +46005,7 @@ endobj /Type /Annot >> endobj -372 0 obj +371 0 obj << /Border [0 0 0] /Dest (_responses_8) /Subtype /Link @@ -45928,7 +46013,7 @@ endobj /Type /Annot >> endobj -373 0 obj +372 0 obj << /Border [0 0 0] /Dest (_produces_8) /Subtype /Link @@ -45936,7 +46021,7 @@ endobj /Type /Annot >> endobj -374 0 obj +373 0 obj << /Border [0 0 0] /Dest (_produces_8) /Subtype /Link @@ -45944,7 +46029,7 @@ endobj /Type /Annot >> endobj -375 0 obj +374 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_name_elements_shortname_delete) /Subtype /Link @@ -45952,7 +46037,7 @@ endobj /Type /Annot >> endobj -376 0 obj +375 0 obj << /Border [0 0 0] /Dest (_v2_dictionary_name_elements_shortname_delete) /Subtype /Link @@ -45960,7 +46045,7 @@ endobj /Type /Annot >> endobj -377 0 obj +376 0 obj << /Border [0 0 0] /Dest (_parameters_5) /Subtype /Link @@ -45968,7 +46053,7 @@ endobj /Type /Annot >> endobj -378 0 obj +377 0 obj << /Border [0 0 0] /Dest (_parameters_5) /Subtype /Link @@ -45976,7 +46061,7 @@ endobj /Type /Annot >> endobj -379 0 obj +378 0 obj << /Border [0 0 0] /Dest (_responses_9) /Subtype /Link @@ -45984,7 +46069,7 @@ endobj /Type /Annot >> endobj -380 0 obj +379 0 obj << /Border [0 0 0] /Dest (_responses_9) /Subtype /Link @@ -45992,7 +46077,7 @@ endobj /Type /Annot >> endobj -381 0 obj +380 0 obj << /Border [0 0 0] /Dest (_produces_9) /Subtype /Link @@ -46000,7 +46085,7 @@ endobj /Type /Annot >> endobj -382 0 obj +381 0 obj << /Border [0 0 0] /Dest (_produces_9) /Subtype /Link @@ -46008,23 +46093,23 @@ endobj /Type /Annot >> endobj -383 0 obj +382 0 obj << /Border [0 0 0] -/Dest (_route14) +/Dest (_route45) /Subtype /Link /Rect [60.24000000000001 704.7599999999999 245.15550000000002 719.04] /Type /Annot >> endobj -384 0 obj +383 0 obj << /Border [0 0 0] -/Dest (_route14) +/Dest (_route45) /Subtype /Link /Rect [557.8905 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -385 0 obj +384 0 obj << /Border [0 0 0] /Dest (_parameters_6) /Subtype /Link @@ -46032,7 +46117,7 @@ endobj /Type /Annot >> endobj -386 0 obj +385 0 obj << /Border [0 0 0] /Dest (_parameters_6) /Subtype /Link @@ -46040,7 +46125,7 @@ endobj /Type /Annot >> endobj -387 0 obj +386 0 obj << /Border [0 0 0] /Dest (_responses_10) /Subtype /Link @@ -46048,7 +46133,7 @@ endobj /Type /Annot >> endobj -388 0 obj +387 0 obj << /Border [0 0 0] /Dest (_responses_10) /Subtype /Link @@ -46056,23 +46141,23 @@ endobj /Type /Annot >> endobj -389 0 obj +388 0 obj << /Border [0 0 0] -/Dest (_route8) +/Dest (_route39) /Subtype /Link /Rect [60.24000000000001 649.3199999999998 248.431294921875 663.5999999999999] /Type /Annot >> endobj -390 0 obj +389 0 obj << /Border [0 0 0] -/Dest (_route8) +/Dest (_route39) /Subtype /Link /Rect [557.8905 649.3199999999998 563.76 663.5999999999999] /Type /Annot >> endobj -391 0 obj +390 0 obj << /Border [0 0 0] /Dest (_parameters_7) /Subtype /Link @@ -46080,7 +46165,7 @@ endobj /Type /Annot >> endobj -392 0 obj +391 0 obj << /Border [0 0 0] /Dest (_parameters_7) /Subtype /Link @@ -46088,7 +46173,7 @@ endobj /Type /Annot >> endobj -393 0 obj +392 0 obj << /Border [0 0 0] /Dest (_responses_11) /Subtype /Link @@ -46096,7 +46181,7 @@ endobj /Type /Annot >> endobj -394 0 obj +393 0 obj << /Border [0 0 0] /Dest (_responses_11) /Subtype /Link @@ -46104,7 +46189,7 @@ endobj /Type /Annot >> endobj -395 0 obj +394 0 obj << /Border [0 0 0] /Dest (_produces_10) /Subtype /Link @@ -46112,7 +46197,7 @@ endobj /Type /Annot >> endobj -396 0 obj +395 0 obj << /Border [0 0 0] /Dest (_produces_10) /Subtype /Link @@ -46120,23 +46205,23 @@ endobj /Type /Annot >> endobj -397 0 obj +396 0 obj << /Border [0 0 0] -/Dest (_route2) +/Dest (_route33) /Subtype /Link /Rect [60.24000000000001 575.3999999999997 214.8735 589.6799999999998] /Type /Annot >> endobj -398 0 obj +397 0 obj << /Border [0 0 0] -/Dest (_route2) +/Dest (_route33) /Subtype /Link /Rect [557.8905 575.3999999999997 563.76 589.6799999999998] /Type /Annot >> endobj -399 0 obj +398 0 obj << /Border [0 0 0] /Dest (_responses_12) /Subtype /Link @@ -46144,7 +46229,7 @@ endobj /Type /Annot >> endobj -400 0 obj +399 0 obj << /Border [0 0 0] /Dest (_responses_12) /Subtype /Link @@ -46152,7 +46237,7 @@ endobj /Type /Annot >> endobj -401 0 obj +400 0 obj << /Border [0 0 0] /Dest (_produces_11) /Subtype /Link @@ -46160,7 +46245,7 @@ endobj /Type /Annot >> endobj -402 0 obj +401 0 obj << /Border [0 0 0] /Dest (_produces_11) /Subtype /Link @@ -46168,23 +46253,23 @@ endobj /Type /Annot >> endobj -403 0 obj +402 0 obj << /Border [0 0 0] -/Dest (_route15) +/Dest (_route46) /Subtype /Link /Rect [60.24000000000001 519.9599999999998 259.467 534.2399999999998] /Type /Annot >> endobj -404 0 obj +403 0 obj << /Border [0 0 0] -/Dest (_route15) +/Dest (_route46) /Subtype /Link /Rect [557.8905 519.9599999999998 563.76 534.2399999999998] /Type /Annot >> endobj -405 0 obj +404 0 obj << /Border [0 0 0] /Dest (_parameters_8) /Subtype /Link @@ -46192,7 +46277,7 @@ endobj /Type /Annot >> endobj -406 0 obj +405 0 obj << /Border [0 0 0] /Dest (_parameters_8) /Subtype /Link @@ -46200,7 +46285,7 @@ endobj /Type /Annot >> endobj -407 0 obj +406 0 obj << /Border [0 0 0] /Dest (_responses_13) /Subtype /Link @@ -46208,7 +46293,7 @@ endobj /Type /Annot >> endobj -408 0 obj +407 0 obj << /Border [0 0 0] /Dest (_responses_13) /Subtype /Link @@ -46216,7 +46301,7 @@ endobj /Type /Annot >> endobj -409 0 obj +408 0 obj << /Border [0 0 0] /Dest (_produces_12) /Subtype /Link @@ -46224,7 +46309,7 @@ endobj /Type /Annot >> endobj -410 0 obj +409 0 obj << /Border [0 0 0] /Dest (_produces_12) /Subtype /Link @@ -46232,23 +46317,23 @@ endobj /Type /Annot >> endobj -411 0 obj +410 0 obj << /Border [0 0 0] -/Dest (_route9) +/Dest (_route40) /Subtype /Link /Rect [60.24000000000001 446.03999999999974 355.8885 460.3199999999997] /Type /Annot >> endobj -412 0 obj +411 0 obj << /Border [0 0 0] -/Dest (_route9) +/Dest (_route40) /Subtype /Link /Rect [557.8905 446.03999999999974 563.76 460.3199999999997] /Type /Annot >> endobj -413 0 obj +412 0 obj << /Border [0 0 0] /Dest (_parameters_9) /Subtype /Link @@ -46256,7 +46341,7 @@ endobj /Type /Annot >> endobj -414 0 obj +413 0 obj << /Border [0 0 0] /Dest (_parameters_9) /Subtype /Link @@ -46264,7 +46349,7 @@ endobj /Type /Annot >> endobj -415 0 obj +414 0 obj << /Border [0 0 0] /Dest (_responses_14) /Subtype /Link @@ -46272,7 +46357,7 @@ endobj /Type /Annot >> endobj -416 0 obj +415 0 obj << /Border [0 0 0] /Dest (_responses_14) /Subtype /Link @@ -46280,7 +46365,7 @@ endobj /Type /Annot >> endobj -417 0 obj +416 0 obj << /Border [0 0 0] /Dest (_produces_13) /Subtype /Link @@ -46288,7 +46373,7 @@ endobj /Type /Annot >> endobj -418 0 obj +417 0 obj << /Border [0 0 0] /Dest (_produces_13) /Subtype /Link @@ -46296,23 +46381,23 @@ endobj /Type /Annot >> endobj -419 0 obj +418 0 obj << /Border [0 0 0] -/Dest (_route12) +/Dest (_route43) /Subtype /Link /Rect [60.24000000000001 372.11999999999966 248.45250000000001 386.39999999999964] /Type /Annot >> endobj -420 0 obj +419 0 obj << /Border [0 0 0] -/Dest (_route12) +/Dest (_route43) /Subtype /Link /Rect [557.8905 372.11999999999966 563.76 386.39999999999964] /Type /Annot >> endobj -421 0 obj +420 0 obj << /Border [0 0 0] /Dest (_parameters_10) /Subtype /Link @@ -46320,7 +46405,7 @@ endobj /Type /Annot >> endobj -422 0 obj +421 0 obj << /Border [0 0 0] /Dest (_parameters_10) /Subtype /Link @@ -46328,7 +46413,7 @@ endobj /Type /Annot >> endobj -423 0 obj +422 0 obj << /Border [0 0 0] /Dest (_responses_15) /Subtype /Link @@ -46336,7 +46421,7 @@ endobj /Type /Annot >> endobj -424 0 obj +423 0 obj << /Border [0 0 0] /Dest (_responses_15) /Subtype /Link @@ -46344,7 +46429,7 @@ endobj /Type /Annot >> endobj -425 0 obj +424 0 obj << /Border [0 0 0] /Dest (_produces_14) /Subtype /Link @@ -46352,7 +46437,7 @@ endobj /Type /Annot >> endobj -426 0 obj +425 0 obj << /Border [0 0 0] /Dest (_produces_14) /Subtype /Link @@ -46360,23 +46445,23 @@ endobj /Type /Annot >> endobj -427 0 obj +426 0 obj << /Border [0 0 0] -/Dest (_route11) +/Dest (_route42) /Subtype /Link /Rect [60.24000000000001 298.1999999999996 235.842 312.47999999999956] /Type /Annot >> endobj -428 0 obj +427 0 obj << /Border [0 0 0] -/Dest (_route11) +/Dest (_route42) /Subtype /Link /Rect [557.8905 298.1999999999996 563.76 312.47999999999956] /Type /Annot >> endobj -429 0 obj +428 0 obj << /Border [0 0 0] /Dest (_parameters_11) /Subtype /Link @@ -46384,7 +46469,7 @@ endobj /Type /Annot >> endobj -430 0 obj +429 0 obj << /Border [0 0 0] /Dest (_parameters_11) /Subtype /Link @@ -46392,7 +46477,7 @@ endobj /Type /Annot >> endobj -431 0 obj +430 0 obj << /Border [0 0 0] /Dest (_responses_16) /Subtype /Link @@ -46400,7 +46485,7 @@ endobj /Type /Annot >> endobj -432 0 obj +431 0 obj << /Border [0 0 0] /Dest (_responses_16) /Subtype /Link @@ -46408,7 +46493,7 @@ endobj /Type /Annot >> endobj -433 0 obj +432 0 obj << /Border [0 0 0] /Dest (_produces_15) /Subtype /Link @@ -46416,7 +46501,7 @@ endobj /Type /Annot >> endobj -434 0 obj +433 0 obj << /Border [0 0 0] /Dest (_produces_15) /Subtype /Link @@ -46424,23 +46509,23 @@ endobj /Type /Annot >> endobj -435 0 obj +434 0 obj << /Border [0 0 0] -/Dest (_route13) +/Dest (_route44) /Subtype /Link /Rect [60.24000000000001 224.27999999999952 249.70200000000003 238.55999999999952] /Type /Annot >> endobj -436 0 obj +435 0 obj << /Border [0 0 0] -/Dest (_route13) +/Dest (_route44) /Subtype /Link /Rect [557.8905 224.27999999999952 563.76 238.55999999999952] /Type /Annot >> endobj -437 0 obj +436 0 obj << /Border [0 0 0] /Dest (_parameters_12) /Subtype /Link @@ -46448,7 +46533,7 @@ endobj /Type /Annot >> endobj -438 0 obj +437 0 obj << /Border [0 0 0] /Dest (_parameters_12) /Subtype /Link @@ -46456,7 +46541,7 @@ endobj /Type /Annot >> endobj -439 0 obj +438 0 obj << /Border [0 0 0] /Dest (_responses_17) /Subtype /Link @@ -46464,7 +46549,7 @@ endobj /Type /Annot >> endobj -440 0 obj +439 0 obj << /Border [0 0 0] /Dest (_responses_17) /Subtype /Link @@ -46472,7 +46557,7 @@ endobj /Type /Annot >> endobj -441 0 obj +440 0 obj << /Border [0 0 0] /Dest (_produces_16) /Subtype /Link @@ -46480,7 +46565,7 @@ endobj /Type /Annot >> endobj -442 0 obj +441 0 obj << /Border [0 0 0] /Dest (_produces_16) /Subtype /Link @@ -46488,23 +46573,23 @@ endobj /Type /Annot >> endobj -443 0 obj +442 0 obj << /Border [0 0 0] -/Dest (_route4) +/Dest (_route35) /Subtype /Link /Rect [60.24000000000001 150.35999999999956 307.641 164.63999999999956] /Type /Annot >> endobj -444 0 obj +443 0 obj << /Border [0 0 0] -/Dest (_route4) +/Dest (_route35) /Subtype /Link /Rect [557.8905 150.35999999999956 563.76 164.63999999999956] /Type /Annot >> endobj -445 0 obj +444 0 obj << /Border [0 0 0] /Dest (_parameters_13) /Subtype /Link @@ -46512,7 +46597,7 @@ endobj /Type /Annot >> endobj -446 0 obj +445 0 obj << /Border [0 0 0] /Dest (_parameters_13) /Subtype /Link @@ -46520,7 +46605,7 @@ endobj /Type /Annot >> endobj -447 0 obj +446 0 obj << /Border [0 0 0] /Dest (_responses_18) /Subtype /Link @@ -46528,7 +46613,7 @@ endobj /Type /Annot >> endobj -448 0 obj +447 0 obj << /Border [0 0 0] /Dest (_responses_18) /Subtype /Link @@ -46536,7 +46621,7 @@ endobj /Type /Annot >> endobj -449 0 obj +448 0 obj << /Border [0 0 0] /Dest (_produces_17) /Subtype /Link @@ -46544,7 +46629,7 @@ endobj /Type /Annot >> endobj -450 0 obj +449 0 obj << /Border [0 0 0] /Dest (_produces_17) /Subtype /Link @@ -46552,23 +46637,23 @@ endobj /Type /Annot >> endobj -451 0 obj +450 0 obj << /Border [0 0 0] -/Dest (_route10) +/Dest (_route41) /Subtype /Link /Rect [60.24000000000001 76.4399999999996 261.860794921875 90.7199999999996] /Type /Annot >> endobj -452 0 obj +451 0 obj << /Border [0 0 0] -/Dest (_route10) +/Dest (_route41) /Subtype /Link /Rect [557.8905 76.4399999999996 563.76 90.7199999999996] /Type /Annot >> endobj -453 0 obj +452 0 obj << /Border [0 0 0] /Dest (_parameters_14) /Subtype /Link @@ -46576,7 +46661,7 @@ endobj /Type /Annot >> endobj -454 0 obj +453 0 obj << /Border [0 0 0] /Dest (_parameters_14) /Subtype /Link @@ -46584,7 +46669,7 @@ endobj /Type /Annot >> endobj -455 0 obj +454 0 obj << /Border [0 0 0] /Dest (_responses_19) /Subtype /Link @@ -46592,7 +46677,7 @@ endobj /Type /Annot >> endobj -456 0 obj +455 0 obj << /Border [0 0 0] /Dest (_responses_19) /Subtype /Link @@ -46600,7 +46685,7 @@ endobj /Type /Annot >> endobj -457 0 obj +456 0 obj << /Border [0 0 0] /Dest (_produces_18) /Subtype /Link @@ -46608,7 +46693,7 @@ endobj /Type /Annot >> endobj -458 0 obj +457 0 obj << /Border [0 0 0] /Dest (_produces_18) /Subtype /Link @@ -46616,23 +46701,23 @@ endobj /Type /Annot >> endobj -459 0 obj +458 0 obj << /Border [0 0 0] -/Dest (_route5) +/Dest (_route36) /Subtype /Link /Rect [60.24000000000001 704.7599999999999 339.560794921875 719.04] /Type /Annot >> endobj -460 0 obj +459 0 obj << /Border [0 0 0] -/Dest (_route5) +/Dest (_route36) /Subtype /Link /Rect [552.021 704.7599999999999 563.76 719.04] /Type /Annot >> endobj -461 0 obj +460 0 obj << /Border [0 0 0] /Dest (_parameters_15) /Subtype /Link @@ -46640,7 +46725,7 @@ endobj /Type /Annot >> endobj -462 0 obj +461 0 obj << /Border [0 0 0] /Dest (_parameters_15) /Subtype /Link @@ -46648,7 +46733,7 @@ endobj /Type /Annot >> endobj -463 0 obj +462 0 obj << /Border [0 0 0] /Dest (_responses_20) /Subtype /Link @@ -46656,7 +46741,7 @@ endobj /Type /Annot >> endobj -464 0 obj +463 0 obj << /Border [0 0 0] /Dest (_responses_20) /Subtype /Link @@ -46664,7 +46749,7 @@ endobj /Type /Annot >> endobj -465 0 obj +464 0 obj << /Border [0 0 0] /Dest (_consumes_3) /Subtype /Link @@ -46672,7 +46757,7 @@ endobj /Type /Annot >> endobj -466 0 obj +465 0 obj << /Border [0 0 0] /Dest (_consumes_3) /Subtype /Link @@ -46680,7 +46765,7 @@ endobj /Type /Annot >> endobj -467 0 obj +466 0 obj << /Border [0 0 0] /Dest (_produces_19) /Subtype /Link @@ -46688,7 +46773,7 @@ endobj /Type /Annot >> endobj -468 0 obj +467 0 obj << /Border [0 0 0] /Dest (_produces_19) /Subtype /Link @@ -46696,23 +46781,23 @@ endobj /Type /Annot >> endobj -469 0 obj +468 0 obj << /Border [0 0 0] -/Dest (_route7) +/Dest (_route38) /Subtype /Link /Rect [60.24000000000001 612.3599999999998 350.38629492187505 626.6399999999999] /Type /Annot >> endobj -470 0 obj +469 0 obj << /Border [0 0 0] -/Dest (_route7) +/Dest (_route38) /Subtype /Link /Rect [552.021 612.3599999999998 563.76 626.6399999999999] /Type /Annot >> endobj -471 0 obj +470 0 obj << /Border [0 0 0] /Dest (_parameters_16) /Subtype /Link @@ -46720,7 +46805,7 @@ endobj /Type /Annot >> endobj -472 0 obj +471 0 obj << /Border [0 0 0] /Dest (_parameters_16) /Subtype /Link @@ -46728,7 +46813,7 @@ endobj /Type /Annot >> endobj -473 0 obj +472 0 obj << /Border [0 0 0] /Dest (_responses_21) /Subtype /Link @@ -46736,7 +46821,7 @@ endobj /Type /Annot >> endobj -474 0 obj +473 0 obj << /Border [0 0 0] /Dest (_responses_21) /Subtype /Link @@ -46744,7 +46829,7 @@ endobj /Type /Annot >> endobj -475 0 obj +474 0 obj << /Border [0 0 0] /Dest (_consumes_4) /Subtype /Link @@ -46752,7 +46837,7 @@ endobj /Type /Annot >> endobj -476 0 obj +475 0 obj << /Border [0 0 0] /Dest (_consumes_4) /Subtype /Link @@ -46760,7 +46845,7 @@ endobj /Type /Annot >> endobj -477 0 obj +476 0 obj << /Border [0 0 0] /Dest (_produces_20) /Subtype /Link @@ -46768,7 +46853,7 @@ endobj /Type /Annot >> endobj -478 0 obj +477 0 obj << /Border [0 0 0] /Dest (_produces_20) /Subtype /Link @@ -46776,23 +46861,23 @@ endobj /Type /Annot >> endobj -479 0 obj +478 0 obj << /Border [0 0 0] -/Dest (_route6) +/Dest (_route37) /Subtype /Link /Rect [60.24000000000001 519.9599999999998 352.81158984375 534.2399999999998] /Type /Annot >> endobj -480 0 obj +479 0 obj << /Border [0 0 0] -/Dest (_route6) +/Dest (_route37) /Subtype /Link /Rect [552.021 519.9599999999998 563.76 534.2399999999998] /Type /Annot >> endobj -481 0 obj +480 0 obj << /Border [0 0 0] /Dest (_parameters_17) /Subtype /Link @@ -46800,7 +46885,7 @@ endobj /Type /Annot >> endobj -482 0 obj +481 0 obj << /Border [0 0 0] /Dest (_parameters_17) /Subtype /Link @@ -46808,7 +46893,7 @@ endobj /Type /Annot >> endobj -483 0 obj +482 0 obj << /Border [0 0 0] /Dest (_responses_22) /Subtype /Link @@ -46816,7 +46901,7 @@ endobj /Type /Annot >> endobj -484 0 obj +483 0 obj << /Border [0 0 0] /Dest (_responses_22) /Subtype /Link @@ -46824,7 +46909,7 @@ endobj /Type /Annot >> endobj -485 0 obj +484 0 obj << /Border [0 0 0] /Dest (_consumes_5) /Subtype /Link @@ -46832,7 +46917,7 @@ endobj /Type /Annot >> endobj -486 0 obj +485 0 obj << /Border [0 0 0] /Dest (_consumes_5) /Subtype /Link @@ -46840,7 +46925,7 @@ endobj /Type /Annot >> endobj -487 0 obj +486 0 obj << /Border [0 0 0] /Dest (_produces_21) /Subtype /Link @@ -46848,7 +46933,7 @@ endobj /Type /Annot >> endobj -488 0 obj +487 0 obj << /Border [0 0 0] /Dest (_produces_21) /Subtype /Link @@ -46856,23 +46941,23 @@ endobj /Type /Annot >> endobj -489 0 obj +488 0 obj << /Border [0 0 0] -/Dest (_route3) +/Dest (_route34) /Subtype /Link /Rect [60.24000000000001 427.5599999999997 212.0595 441.8399999999997] /Type /Annot >> endobj -490 0 obj +489 0 obj << /Border [0 0 0] -/Dest (_route3) +/Dest (_route34) /Subtype /Link /Rect [552.021 427.5599999999997 563.76 441.8399999999997] /Type /Annot >> endobj -491 0 obj +490 0 obj << /Border [0 0 0] /Dest (_parameters_18) /Subtype /Link @@ -46880,7 +46965,7 @@ endobj /Type /Annot >> endobj -492 0 obj +491 0 obj << /Border [0 0 0] /Dest (_parameters_18) /Subtype /Link @@ -46888,7 +46973,7 @@ endobj /Type /Annot >> endobj -493 0 obj +492 0 obj << /Border [0 0 0] /Dest (_responses_23) /Subtype /Link @@ -46896,7 +46981,7 @@ endobj /Type /Annot >> endobj -494 0 obj +493 0 obj << /Border [0 0 0] /Dest (_responses_23) /Subtype /Link @@ -46904,7 +46989,7 @@ endobj /Type /Annot >> endobj -495 0 obj +494 0 obj << /Border [0 0 0] /Dest (_produces_22) /Subtype /Link @@ -46912,7 +46997,7 @@ endobj /Type /Annot >> endobj -496 0 obj +495 0 obj << /Border [0 0 0] /Dest (_produces_22) /Subtype /Link @@ -46920,23 +47005,23 @@ endobj /Type /Annot >> endobj -497 0 obj +496 0 obj << /Border [0 0 0] -/Dest (_route25) +/Dest (_route56) /Subtype /Link /Rect [60.24000000000001 353.63999999999965 221.091755859375 367.9199999999996] /Type /Annot >> endobj -498 0 obj +497 0 obj << /Border [0 0 0] -/Dest (_route25) +/Dest (_route56) /Subtype /Link /Rect [552.021 353.63999999999965 563.76 367.9199999999996] /Type /Annot >> endobj -499 0 obj +498 0 obj << /Border [0 0 0] /Dest (_responses_24) /Subtype /Link @@ -46944,7 +47029,7 @@ endobj /Type /Annot >> endobj -500 0 obj +499 0 obj << /Border [0 0 0] /Dest (_responses_24) /Subtype /Link @@ -46952,7 +47037,7 @@ endobj /Type /Annot >> endobj -501 0 obj +500 0 obj << /Border [0 0 0] /Dest (_produces_23) /Subtype /Link @@ -46960,7 +47045,7 @@ endobj /Type /Annot >> endobj -502 0 obj +501 0 obj << /Border [0 0 0] /Dest (_produces_23) /Subtype /Link @@ -46968,7 +47053,7 @@ endobj /Type /Annot >> endobj -503 0 obj +502 0 obj << /Border [0 0 0] /Dest (_v2_policytoscamodels_yaml_policymodeltype_get) /Subtype /Link @@ -46976,7 +47061,7 @@ endobj /Type /Annot >> endobj -504 0 obj +503 0 obj << /Border [0 0 0] /Dest (_v2_policytoscamodels_yaml_policymodeltype_get) /Subtype /Link @@ -46984,7 +47069,7 @@ endobj /Type /Annot >> endobj -505 0 obj +504 0 obj << /Border [0 0 0] /Dest (_parameters_19) /Subtype /Link @@ -46992,7 +47077,7 @@ endobj /Type /Annot >> endobj -506 0 obj +505 0 obj << /Border [0 0 0] /Dest (_parameters_19) /Subtype /Link @@ -47000,7 +47085,7 @@ endobj /Type /Annot >> endobj -507 0 obj +506 0 obj << /Border [0 0 0] /Dest (_responses_25) /Subtype /Link @@ -47008,7 +47093,7 @@ endobj /Type /Annot >> endobj -508 0 obj +507 0 obj << /Border [0 0 0] /Dest (_responses_25) /Subtype /Link @@ -47016,7 +47101,7 @@ endobj /Type /Annot >> endobj -509 0 obj +508 0 obj << /Border [0 0 0] /Dest (_produces_24) /Subtype /Link @@ -47024,7 +47109,7 @@ endobj /Type /Annot >> endobj -510 0 obj +509 0 obj << /Border [0 0 0] /Dest (_produces_24) /Subtype /Link @@ -47032,7 +47117,7 @@ endobj /Type /Annot >> endobj -511 0 obj +510 0 obj << /Border [0 0 0] /Dest (_v2_policytoscamodels_policymodeltype_get) /Subtype /Link @@ -47040,7 +47125,7 @@ endobj /Type /Annot >> endobj -512 0 obj +511 0 obj << /Border [0 0 0] /Dest (_v2_policytoscamodels_policymodeltype_get) /Subtype /Link @@ -47048,7 +47133,7 @@ endobj /Type /Annot >> endobj -513 0 obj +512 0 obj << /Border [0 0 0] /Dest (_parameters_20) /Subtype /Link @@ -47056,7 +47141,7 @@ endobj /Type /Annot >> endobj -514 0 obj +513 0 obj << /Border [0 0 0] /Dest (_parameters_20) /Subtype /Link @@ -47064,7 +47149,7 @@ endobj /Type /Annot >> endobj -515 0 obj +514 0 obj << /Border [0 0 0] /Dest (_responses_26) /Subtype /Link @@ -47072,7 +47157,7 @@ endobj /Type /Annot >> endobj -516 0 obj +515 0 obj << /Border [0 0 0] /Dest (_responses_26) /Subtype /Link @@ -47080,7 +47165,7 @@ endobj /Type /Annot >> endobj -517 0 obj +516 0 obj << /Border [0 0 0] /Dest (_produces_25) /Subtype /Link @@ -47088,7 +47173,7 @@ endobj /Type /Annot >> endobj -518 0 obj +517 0 obj << /Border [0 0 0] /Dest (_produces_25) /Subtype /Link @@ -47096,23 +47181,23 @@ endobj /Type /Annot >> endobj -519 0 obj +518 0 obj << /Border [0 0 0] -/Dest (_route26) +/Dest (_route57) /Subtype /Link /Rect [60.24000000000001 150.35999999999956 318.73125585937504 164.63999999999956] /Type /Annot >> endobj -520 0 obj +519 0 obj << /Border [0 0 0] -/Dest (_route26) +/Dest (_route57) /Subtype /Link /Rect [552.021 150.35999999999956 563.76 164.63999999999956] /Type /Annot >> endobj -521 0 obj +520 0 obj << /Border [0 0 0] /Dest (_parameters_21) /Subtype /Link @@ -47120,7 +47205,7 @@ endobj /Type /Annot >> endobj -522 0 obj +521 0 obj << /Border [0 0 0] /Dest (_parameters_21) /Subtype /Link @@ -47128,7 +47213,7 @@ endobj /Type /Annot >> endobj -523 0 obj +522 0 obj << /Border [0 0 0] /Dest (_responses_27) /Subtype /Link @@ -47136,7 +47221,7 @@ endobj /Type /Annot >> endobj -524 0 obj +523 0 obj << /Border [0 0 0] /Dest (_responses_27) /Subtype /Link @@ -47144,7 +47229,7 @@ endobj /Type /Annot >> endobj -525 0 obj +524 0 obj << /Border [0 0 0] /Dest (_consumes_6) /Subtype /Link @@ -47152,7 +47237,7 @@ endobj /Type /Annot >> endobj -526 0 obj +525 0 obj << /Border [0 0 0] /Dest (_consumes_6) /Subtype /Link @@ -47160,7 +47245,7 @@ endobj /Type /Annot >> endobj -527 0 obj +526 0 obj << /Border [0 0 0] /Dest (_produces_26) /Subtype /Link @@ -47168,7 +47253,7 @@ endobj /Type /Annot >> endobj -528 0 obj +527 0 obj << /Border [0 0 0] /Dest (_produces_26) /Subtype /Link @@ -47176,23 +47261,23 @@ endobj /Type /Annot >> endobj -529 0 obj +528 0 obj << /Border [0 0 0] -/Dest (_route29) +/Dest (_route60) /Subtype /Link /Rect [60.24000000000001 57.95999999999961 175.8555 72.23999999999961] /Type /Annot >> endobj -530 0 obj +529 0 obj << /Border [0 0 0] -/Dest (_route29) +/Dest (_route60) /Subtype /Link /Rect [552.021 57.95999999999961 563.76 72.23999999999961] /Type /Annot >> endobj -531 0 obj +530 0 obj << /Border [0 0 0] /Dest (_responses_28) /Subtype /Link @@ -47200,7 +47285,7 @@ endobj /Type /Annot >> endobj -532 0 obj +531 0 obj << /Border [0 0 0] /Dest (_responses_28) /Subtype /Link @@ -47208,7 +47293,7 @@ endobj /Type /Annot >> endobj -533 0 obj +532 0 obj << /Border [0 0 0] /Dest (_produces_27) /Subtype /Link @@ -47216,7 +47301,7 @@ endobj /Type /Annot >> endobj -534 0 obj +533 0 obj << /Border [0 0 0] /Dest (_produces_27) /Subtype /Link @@ -47224,7 +47309,7 @@ endobj /Type /Annot >> endobj -535 0 obj +534 0 obj << /Border [0 0 0] /Dest (_v2_templates_names_get) /Subtype /Link @@ -47232,7 +47317,7 @@ endobj /Type /Annot >> endobj -536 0 obj +535 0 obj << /Border [0 0 0] /Dest (_v2_templates_names_get) /Subtype /Link @@ -47240,7 +47325,7 @@ endobj /Type /Annot >> endobj -537 0 obj +536 0 obj << /Border [0 0 0] /Dest (_responses_29) /Subtype /Link @@ -47248,7 +47333,7 @@ endobj /Type /Annot >> endobj -538 0 obj +537 0 obj << /Border [0 0 0] /Dest (_responses_29) /Subtype /Link @@ -47256,7 +47341,7 @@ endobj /Type /Annot >> endobj -539 0 obj +538 0 obj << /Border [0 0 0] /Dest (_produces_28) /Subtype /Link @@ -47264,7 +47349,7 @@ endobj /Type /Annot >> endobj -540 0 obj +539 0 obj << /Border [0 0 0] /Dest (_produces_28) /Subtype /Link @@ -47272,7 +47357,7 @@ endobj /Type /Annot >> endobj -541 0 obj +540 0 obj << /Border [0 0 0] /Dest (_v2_templates_templatename_get) /Subtype /Link @@ -47280,7 +47365,7 @@ endobj /Type /Annot >> endobj -542 0 obj +541 0 obj << /Border [0 0 0] /Dest (_v2_templates_templatename_get) /Subtype /Link @@ -47288,7 +47373,7 @@ endobj /Type /Annot >> endobj -543 0 obj +542 0 obj << /Border [0 0 0] /Dest (_parameters_22) /Subtype /Link @@ -47296,7 +47381,7 @@ endobj /Type /Annot >> endobj -544 0 obj +543 0 obj << /Border [0 0 0] /Dest (_parameters_22) /Subtype /Link @@ -47304,7 +47389,7 @@ endobj /Type /Annot >> endobj -545 0 obj +544 0 obj << /Border [0 0 0] /Dest (_responses_30) /Subtype /Link @@ -47312,7 +47397,7 @@ endobj /Type /Annot >> endobj -546 0 obj +545 0 obj << /Border [0 0 0] /Dest (_responses_30) /Subtype /Link @@ -47320,7 +47405,7 @@ endobj /Type /Annot >> endobj -547 0 obj +546 0 obj << /Border [0 0 0] /Dest (_produces_29) /Subtype /Link @@ -47328,7 +47413,7 @@ endobj /Type /Annot >> endobj -548 0 obj +547 0 obj << /Border [0 0 0] /Dest (_produces_29) /Subtype /Link @@ -47336,7 +47421,7 @@ endobj /Type /Annot >> endobj -549 0 obj +548 0 obj << /Border [0 0 0] /Dest (_definitions) /Subtype /Link @@ -47344,7 +47429,7 @@ endobj /Type /Annot >> endobj -550 0 obj +549 0 obj << /Border [0 0 0] /Dest (_definitions) /Subtype /Link @@ -47352,7 +47437,7 @@ endobj /Type /Annot >> endobj -551 0 obj +550 0 obj << /Border [0 0 0] /Dest (_cldshealthcheck) /Subtype /Link @@ -47360,7 +47445,7 @@ endobj /Type /Annot >> endobj -552 0 obj +551 0 obj << /Border [0 0 0] /Dest (_cldshealthcheck) /Subtype /Link @@ -47368,7 +47453,7 @@ endobj /Type /Annot >> endobj -553 0 obj +552 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link @@ -47376,7 +47461,7 @@ endobj /Type /Annot >> endobj -554 0 obj +553 0 obj << /Border [0 0 0] /Dest (_dictionary) /Subtype /Link @@ -47384,7 +47469,7 @@ endobj /Type /Annot >> endobj -555 0 obj +554 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link @@ -47392,7 +47477,7 @@ endobj /Type /Annot >> endobj -556 0 obj +555 0 obj << /Border [0 0 0] /Dest (_dictionaryelement) /Subtype /Link @@ -47400,7 +47485,7 @@ endobj /Type /Annot >> endobj -557 0 obj +556 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link @@ -47408,7 +47493,7 @@ endobj /Type /Annot >> endobj -558 0 obj +557 0 obj << /Border [0 0 0] /Dest (_externalcomponent) /Subtype /Link @@ -47416,7 +47501,7 @@ endobj /Type /Annot >> endobj -559 0 obj +558 0 obj << /Border [0 0 0] /Dest (_externalcomponentstate) /Subtype /Link @@ -47424,7 +47509,7 @@ endobj /Type /Annot >> endobj -560 0 obj +559 0 obj << /Border [0 0 0] /Dest (_externalcomponentstate) /Subtype /Link @@ -47432,7 +47517,7 @@ endobj /Type /Annot >> endobj -561 0 obj +560 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -47440,7 +47525,7 @@ endobj /Type /Annot >> endobj -562 0 obj +561 0 obj << /Border [0 0 0] /Dest (_jsonarray) /Subtype /Link @@ -47448,7 +47533,7 @@ endobj /Type /Annot >> endobj -563 0 obj +562 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -47456,7 +47541,7 @@ endobj /Type /Annot >> endobj -564 0 obj +563 0 obj << /Border [0 0 0] /Dest (_jsonnull) /Subtype /Link @@ -47464,7 +47549,7 @@ endobj /Type /Annot >> endobj -565 0 obj +564 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -47472,7 +47557,7 @@ endobj /Type /Annot >> endobj -566 0 obj +565 0 obj << /Border [0 0 0] /Dest (_jsonobject) /Subtype /Link @@ -47480,7 +47565,7 @@ endobj /Type /Annot >> endobj -567 0 obj +566 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -47488,7 +47573,7 @@ endobj /Type /Annot >> endobj -568 0 obj +567 0 obj << /Border [0 0 0] /Dest (_jsonprimitive) /Subtype /Link @@ -47496,7 +47581,7 @@ endobj /Type /Annot >> endobj -569 0 obj +568 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -47504,7 +47589,7 @@ endobj /Type /Annot >> endobj -570 0 obj +569 0 obj << /Border [0 0 0] /Dest (_loop) /Subtype /Link @@ -47512,7 +47597,7 @@ endobj /Type /Annot >> endobj -571 0 obj +570 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link @@ -47520,7 +47605,7 @@ endobj /Type /Annot >> endobj -572 0 obj +571 0 obj << /Border [0 0 0] /Dest (_loopelementmodel) /Subtype /Link @@ -47528,7 +47613,7 @@ endobj /Type /Annot >> endobj -573 0 obj +572 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link @@ -47536,7 +47621,7 @@ endobj /Type /Annot >> endobj -574 0 obj +573 0 obj << /Border [0 0 0] /Dest (_looplog) /Subtype /Link @@ -47544,7 +47629,7 @@ endobj /Type /Annot >> endobj -575 0 obj +574 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -47552,7 +47637,7 @@ endobj /Type /Annot >> endobj -576 0 obj +575 0 obj << /Border [0 0 0] /Dest (_looptemplate) /Subtype /Link @@ -47560,7 +47645,7 @@ endobj /Type /Annot >> endobj -577 0 obj +576 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link @@ -47568,7 +47653,7 @@ endobj /Type /Annot >> endobj -578 0 obj +577 0 obj << /Border [0 0 0] /Dest (_looptemplateloopelementmodel) /Subtype /Link @@ -47576,7 +47661,7 @@ endobj /Type /Annot >> endobj -579 0 obj +578 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link @@ -47584,7 +47669,7 @@ endobj /Type /Annot >> endobj -580 0 obj +579 0 obj << /Border [0 0 0] /Dest (_microservicepolicy) /Subtype /Link @@ -47592,7 +47677,7 @@ endobj /Type /Annot >> endobj -581 0 obj +580 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -47600,7 +47685,7 @@ endobj /Type /Annot >> endobj -582 0 obj +581 0 obj << /Border [0 0 0] /Dest (_number) /Subtype /Link @@ -47608,7 +47693,7 @@ endobj /Type /Annot >> endobj -583 0 obj +582 0 obj << /Border [0 0 0] /Dest (_operationalpolicy) /Subtype /Link @@ -47616,7 +47701,7 @@ endobj /Type /Annot >> endobj -584 0 obj +583 0 obj << /Border [0 0 0] /Dest (_operationalpolicy) /Subtype /Link @@ -47624,7 +47709,7 @@ endobj /Type /Annot >> endobj -585 0 obj +584 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -47632,7 +47717,7 @@ endobj /Type /Annot >> endobj -586 0 obj +585 0 obj << /Border [0 0 0] /Dest (_policymodel) /Subtype /Link @@ -47640,7 +47725,7 @@ endobj /Type /Annot >> endobj -587 0 obj +586 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link @@ -47648,7 +47733,7 @@ endobj /Type /Annot >> endobj -588 0 obj +587 0 obj << /Border [0 0 0] /Dest (_service) /Subtype /Link @@ -47656,7 +47741,7 @@ endobj /Type /Annot >> endobj -589 0 obj +588 0 obj << /Type /XObject /Subtype /Form /BBox [0 0 612.0 792.0] @@ -47684,1299 +47769,1299 @@ Q endstream endobj -590 0 obj +589 0 obj << /Type /Outlines /Count 143 -/First 591 0 R -/Last 714 0 R +/First 590 0 R +/Last 713 0 R >> endobj -591 0 obj +590 0 obj << /Title <feff0043006c0061006d0070002000520065007300740020004100500049> -/Parent 590 0 R +/Parent 589 0 R /Count 0 -/Next 592 0 R +/Next 591 0 R /Dest [7 0 R /XYZ 0 792.0 null] >> endobj -592 0 obj +591 0 obj << /Title <feff005400610062006c00650020006f006600200043006f006e00740065006e00740073> -/Parent 590 0 R +/Parent 589 0 R /Count 0 -/Next 593 0 R -/Prev 591 0 R +/Next 592 0 R +/Prev 590 0 R /Dest [10 0 R /XYZ 0 792.0 null] >> endobj -593 0 obj +592 0 obj << /Title <feff004300680061007000740065007200200031002e0020004f0076006500720076006900650077> -/Parent 590 0 R +/Parent 589 0 R /Count 2 -/First 594 0 R -/Last 595 0 R -/Next 596 0 R -/Prev 592 0 R +/First 593 0 R +/Last 594 0 R +/Next 595 0 R +/Prev 591 0 R /Dest [18 0 R /XYZ 0 792.0 null] >> endobj -594 0 obj +593 0 obj << /Title <feff0031002e0031002e002000560065007200730069006f006e00200069006e0066006f0072006d006100740069006f006e> -/Parent 593 0 R +/Parent 592 0 R /Count 0 -/Next 595 0 R +/Next 594 0 R /Dest [18 0 R /XYZ 0 712.0799999999999 null] >> endobj -595 0 obj +594 0 obj << /Title <feff0031002e0032002e002000550052004900200073006300680065006d0065> -/Parent 593 0 R +/Parent 592 0 R /Count 0 -/Prev 594 0 R +/Prev 593 0 R /Dest [18 0 R /XYZ 0 644.22 null] >> endobj -596 0 obj +595 0 obj << /Title <feff004300680061007000740065007200200032002e002000500061007400680073> -/Parent 590 0 R +/Parent 589 0 R /Count 117 -/First 597 0 R -/Last 710 0 R -/Next 714 0 R -/Prev 593 0 R +/First 596 0 R +/Last 709 0 R +/Next 713 0 R +/Prev 592 0 R /Dest [27 0 R /XYZ 0 792.0 null] >> endobj -597 0 obj +596 0 obj << /Title <feff0032002e0031002e00200047004500540020002f00760031002f006800650061006c007400680063006800650063006b> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 598 0 R -/Last 599 0 R -/Next 600 0 R +/First 597 0 R +/Last 598 0 R +/Next 599 0 R /Dest [27 0 R /XYZ 0 712.0799999999999 null] >> endobj -598 0 obj +597 0 obj << /Title <feff0032002e0031002e0031002e00200052006500730070006f006e007300650073> -/Parent 597 0 R +/Parent 596 0 R /Count 0 -/Next 599 0 R +/Next 598 0 R /Dest [27 0 R /XYZ 0 672.0 null] >> endobj -599 0 obj +598 0 obj << /Title <feff0032002e0031002e0032002e002000500072006f00640075006300650073> -/Parent 597 0 R +/Parent 596 0 R /Count 0 -/Prev 598 0 R +/Prev 597 0 R /Dest [27 0 R /XYZ 0 566.8800000000001 null] >> endobj -600 0 obj +599 0 obj << /Title <feff0032002e0032002e00200047004500540020002f00760031002f0075007300650072002f0067006500740055007300650072> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 601 0 R -/Last 602 0 R -/Next 603 0 R -/Prev 597 0 R +/First 600 0 R +/Last 601 0 R +/Next 602 0 R +/Prev 596 0 R /Dest [27 0 R /XYZ 0 510.60000000000025 null] >> endobj -601 0 obj +600 0 obj << /Title <feff0032002e0032002e0031002e00200052006500730070006f006e007300650073> -/Parent 600 0 R +/Parent 599 0 R /Count 0 -/Next 602 0 R +/Next 601 0 R /Dest [27 0 R /XYZ 0 470.5200000000002 null] >> endobj -602 0 obj +601 0 obj << /Title <feff0032002e0032002e0032002e002000500072006f00640075006300650073> -/Parent 600 0 R +/Parent 599 0 R /Count 0 -/Prev 601 0 R +/Prev 600 0 R /Dest [27 0 R /XYZ 0 379.6800000000002 null] >> endobj -603 0 obj +602 0 obj << /Title <feff0032002e0033002e00200047004500540020002f00760032002f00640069006300740069006f006e006100720079> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 604 0 R -/Last 605 0 R -/Next 606 0 R -/Prev 600 0 R +/First 603 0 R +/Last 604 0 R +/Next 605 0 R +/Prev 599 0 R /Dest [27 0 R /XYZ 0 323.40000000000015 null] >> endobj -604 0 obj +603 0 obj << /Title <feff0032002e0033002e0031002e00200052006500730070006f006e007300650073> -/Parent 603 0 R +/Parent 602 0 R /Count 0 -/Next 605 0 R +/Next 604 0 R /Dest [27 0 R /XYZ 0 283.3200000000001 null] >> endobj -605 0 obj +604 0 obj << /Title <feff0032002e0033002e0032002e002000500072006f00640075006300650073> -/Parent 603 0 R +/Parent 602 0 R /Count 0 -/Prev 604 0 R +/Prev 603 0 R /Dest [27 0 R /XYZ 0 178.2000000000001 null] >> endobj -606 0 obj +605 0 obj << /Title <feff0032002e0034002e00200050005500540020002f00760032002f00640069006300740069006f006e006100720079> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 607 0 R -/Last 610 0 R -/Next 611 0 R -/Prev 603 0 R +/First 606 0 R +/Last 609 0 R +/Next 610 0 R +/Prev 602 0 R /Dest [27 0 R /XYZ 0 121.92000000000007 null] >> endobj -607 0 obj +606 0 obj << /Title <feff0032002e0034002e0031002e00200050006100720061006d00650074006500720073> -/Parent 606 0 R +/Parent 605 0 R /Count 0 -/Next 608 0 R +/Next 607 0 R /Dest [43 0 R /XYZ 0 792.0 null] >> endobj -608 0 obj +607 0 obj << /Title <feff0032002e0034002e0032002e00200052006500730070006f006e007300650073> -/Parent 606 0 R +/Parent 605 0 R /Count 0 -/Next 609 0 R -/Prev 607 0 R +/Next 608 0 R +/Prev 606 0 R /Dest [43 0 R /XYZ 0 653.2800000000002 null] >> endobj -609 0 obj +608 0 obj << /Title <feff0032002e0034002e0033002e00200043006f006e00730075006d00650073> -/Parent 606 0 R +/Parent 605 0 R /Count 0 -/Next 610 0 R -/Prev 608 0 R +/Next 609 0 R +/Prev 607 0 R /Dest [43 0 R /XYZ 0 548.1600000000003 null] >> endobj -610 0 obj +609 0 obj << /Title <feff0032002e0034002e0034002e002000500072006f00640075006300650073> -/Parent 606 0 R +/Parent 605 0 R /Count 0 -/Prev 609 0 R +/Prev 608 0 R /Dest [43 0 R /XYZ 0 491.88000000000045 null] >> endobj -611 0 obj +610 0 obj << /Title <feff0032002e0035002e00200047004500540020002f00760032002f00640069006300740069006f006e006100720079002f007300650063006f006e0064006100720079002f006e0061006d00650073> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 612 0 R -/Last 613 0 R -/Next 614 0 R -/Prev 606 0 R +/First 611 0 R +/Last 612 0 R +/Next 613 0 R +/Prev 605 0 R /Dest [43 0 R /XYZ 0 435.6000000000004 null] >> endobj -612 0 obj +611 0 obj << /Title <feff0032002e0035002e0031002e00200052006500730070006f006e007300650073> -/Parent 611 0 R +/Parent 610 0 R /Count 0 -/Next 613 0 R +/Next 612 0 R /Dest [43 0 R /XYZ 0 395.5200000000004 null] >> endobj -613 0 obj +612 0 obj << /Title <feff0032002e0035002e0032002e002000500072006f00640075006300650073> -/Parent 611 0 R +/Parent 610 0 R /Count 0 -/Prev 612 0 R +/Prev 611 0 R /Dest [43 0 R /XYZ 0 290.4000000000003 null] >> endobj -614 0 obj +613 0 obj << /Title <feff0032002e0036002e00200047004500540020002f00760032002f00640069006300740069006f006e006100720079002f007b00640069006300740069006f006e006100720079004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 615 0 R -/Last 617 0 R -/Next 618 0 R -/Prev 611 0 R +/First 614 0 R +/Last 616 0 R +/Next 617 0 R +/Prev 610 0 R /Dest [43 0 R /XYZ 0 234.1200000000003 null] >> endobj -615 0 obj +614 0 obj << /Title <feff0032002e0036002e0031002e00200050006100720061006d00650074006500720073> -/Parent 614 0 R +/Parent 613 0 R /Count 0 -/Next 616 0 R +/Next 615 0 R /Dest [43 0 R /XYZ 0 194.04000000000028 null] >> endobj -616 0 obj +615 0 obj << /Title <feff0032002e0036002e0032002e00200052006500730070006f006e007300650073> -/Parent 614 0 R +/Parent 613 0 R /Count 0 -/Next 617 0 R -/Prev 615 0 R +/Next 616 0 R +/Prev 614 0 R /Dest [58 0 R /XYZ 0 792.0 null] >> endobj -617 0 obj +616 0 obj << /Title <feff0032002e0036002e0033002e002000500072006f00640075006300650073> -/Parent 614 0 R +/Parent 613 0 R /Count 0 -/Prev 616 0 R +/Prev 615 0 R /Dest [58 0 R /XYZ 0 653.2800000000002 null] >> endobj -618 0 obj +617 0 obj << /Title <feff0032002e0037002e00200050005500540020002f00760032002f00640069006300740069006f006e006100720079002f007b006e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 619 0 R -/Last 622 0 R -/Next 623 0 R -/Prev 614 0 R +/First 618 0 R +/Last 621 0 R +/Next 622 0 R +/Prev 613 0 R /Dest [58 0 R /XYZ 0 597.0000000000003 null] >> endobj -619 0 obj +618 0 obj << /Title <feff0032002e0037002e0031002e00200050006100720061006d00650074006500720073> -/Parent 618 0 R +/Parent 617 0 R /Count 0 -/Next 620 0 R +/Next 619 0 R /Dest [58 0 R /XYZ 0 556.9200000000004 null] >> endobj -620 0 obj +619 0 obj << /Title <feff0032002e0037002e0032002e00200052006500730070006f006e007300650073> -/Parent 618 0 R +/Parent 617 0 R /Count 0 -/Next 621 0 R -/Prev 619 0 R +/Next 620 0 R +/Prev 618 0 R /Dest [58 0 R /XYZ 0 414.2400000000005 null] >> endobj -621 0 obj +620 0 obj << /Title <feff0032002e0037002e0033002e00200043006f006e00730075006d00650073> -/Parent 618 0 R +/Parent 617 0 R /Count 0 -/Next 622 0 R -/Prev 620 0 R +/Next 621 0 R +/Prev 619 0 R /Dest [58 0 R /XYZ 0 309.12000000000046 null] >> endobj -622 0 obj +621 0 obj << /Title <feff0032002e0037002e0034002e002000500072006f00640075006300650073> -/Parent 618 0 R +/Parent 617 0 R /Count 0 -/Prev 621 0 R +/Prev 620 0 R /Dest [58 0 R /XYZ 0 252.84000000000043 null] >> endobj -623 0 obj +622 0 obj << /Title <feff0032002e0038002e002000440045004c0045005400450020002f00760032002f00640069006300740069006f006e006100720079002f007b006e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 624 0 R -/Last 626 0 R -/Next 627 0 R -/Prev 618 0 R +/First 623 0 R +/Last 625 0 R +/Next 626 0 R +/Prev 617 0 R /Dest [58 0 R /XYZ 0 196.5600000000004 null] >> endobj -624 0 obj +623 0 obj << /Title <feff0032002e0038002e0031002e00200050006100720061006d00650074006500720073> -/Parent 623 0 R +/Parent 622 0 R /Count 0 -/Next 625 0 R +/Next 624 0 R /Dest [58 0 R /XYZ 0 156.4800000000004 null] >> endobj -625 0 obj +624 0 obj << /Title <feff0032002e0038002e0032002e00200052006500730070006f006e007300650073> -/Parent 623 0 R +/Parent 622 0 R /Count 0 -/Next 626 0 R -/Prev 624 0 R +/Next 625 0 R +/Prev 623 0 R /Dest [72 0 R /XYZ 0 792.0 null] >> endobj -626 0 obj +625 0 obj << /Title <feff0032002e0038002e0033002e002000500072006f00640075006300650073> -/Parent 623 0 R +/Parent 622 0 R /Count 0 -/Prev 625 0 R +/Prev 624 0 R /Dest [72 0 R /XYZ 0 667.5600000000002 null] >> endobj -627 0 obj +626 0 obj << /Title <feff0032002e0039002e002000440045004c0045005400450020002f00760032002f00640069006300740069006f006e006100720079002f007b006e0061006d0065007d002f0065006c0065006d0065006e00740073002f007b00730068006f00720074004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 628 0 R -/Last 630 0 R -/Next 631 0 R -/Prev 623 0 R +/First 627 0 R +/Last 629 0 R +/Next 630 0 R +/Prev 622 0 R /Dest [72 0 R /XYZ 0 611.2800000000003 null] >> endobj -628 0 obj +627 0 obj << /Title <feff0032002e0039002e0031002e00200050006100720061006d00650074006500720073> -/Parent 627 0 R +/Parent 626 0 R /Count 0 -/Next 629 0 R +/Next 628 0 R /Dest [72 0 R /XYZ 0 543.1200000000005 null] >> endobj -629 0 obj +628 0 obj << /Title <feff0032002e0039002e0032002e00200052006500730070006f006e007300650073> -/Parent 627 0 R +/Parent 626 0 R /Count 0 -/Next 630 0 R -/Prev 628 0 R +/Next 629 0 R +/Prev 627 0 R /Dest [72 0 R /XYZ 0 400.44000000000057 null] >> endobj -630 0 obj +629 0 obj << /Title <feff0032002e0039002e0033002e002000500072006f00640075006300650073> -/Parent 627 0 R +/Parent 626 0 R /Count 0 -/Prev 629 0 R +/Prev 628 0 R /Dest [72 0 R /XYZ 0 309.6000000000006 null] >> endobj -631 0 obj +630 0 obj << /Title <feff0032002e00310030002e00200050005500540020002f00760032002f006c006f006f0070002f00640065006c006500740065002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 632 0 R -/Last 633 0 R -/Next 634 0 R -/Prev 627 0 R +/First 631 0 R +/Last 632 0 R +/Next 633 0 R +/Prev 626 0 R /Dest [72 0 R /XYZ 0 253.32000000000056 null] >> endobj -632 0 obj +631 0 obj << /Title <feff0032002e00310030002e0031002e00200050006100720061006d00650074006500720073> -/Parent 631 0 R +/Parent 630 0 R /Count 0 -/Next 633 0 R +/Next 632 0 R /Dest [72 0 R /XYZ 0 213.24000000000055 null] >> endobj -633 0 obj +632 0 obj << /Title <feff0032002e00310030002e0032002e00200052006500730070006f006e007300650073> -/Parent 631 0 R +/Parent 630 0 R /Count 0 -/Prev 632 0 R +/Prev 631 0 R /Dest [72 0 R /XYZ 0 108.12000000000052 null] >> endobj -634 0 obj +633 0 obj << /Title <feff0032002e00310031002e00200050005500540020002f00760032002f006c006f006f0070002f006400650070006c006f0079002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 635 0 R -/Last 637 0 R -/Next 638 0 R -/Prev 631 0 R +/First 634 0 R +/Last 636 0 R +/Next 637 0 R +/Prev 630 0 R /Dest [84 0 R /XYZ 0 697.44 null] >> endobj -635 0 obj +634 0 obj << /Title <feff0032002e00310031002e0031002e00200050006100720061006d00650074006500720073> -/Parent 634 0 R +/Parent 633 0 R /Count 0 -/Next 636 0 R +/Next 635 0 R /Dest [84 0 R /XYZ 0 657.3600000000001 null] >> endobj -636 0 obj +635 0 obj << /Title <feff0032002e00310031002e0032002e00200052006500730070006f006e007300650073> -/Parent 634 0 R +/Parent 633 0 R /Count 0 -/Next 637 0 R -/Prev 635 0 R +/Next 636 0 R +/Prev 634 0 R /Dest [84 0 R /XYZ 0 552.2400000000002 null] >> endobj -637 0 obj +636 0 obj << /Title <feff0032002e00310031002e0033002e002000500072006f00640075006300650073> -/Parent 634 0 R +/Parent 633 0 R /Count 0 -/Prev 636 0 R +/Prev 635 0 R /Dest [84 0 R /XYZ 0 447.12000000000035 null] >> endobj -638 0 obj +637 0 obj << /Title <feff0032002e00310032002e00200047004500540020002f00760032002f006c006f006f0070002f0067006500740041006c006c004e0061006d00650073> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 639 0 R -/Last 640 0 R -/Next 641 0 R -/Prev 634 0 R +/First 638 0 R +/Last 639 0 R +/Next 640 0 R +/Prev 633 0 R /Dest [84 0 R /XYZ 0 390.8400000000003 null] >> endobj -639 0 obj +638 0 obj << /Title <feff0032002e00310032002e0031002e00200052006500730070006f006e007300650073> -/Parent 638 0 R +/Parent 637 0 R /Count 0 -/Next 640 0 R +/Next 639 0 R /Dest [84 0 R /XYZ 0 350.7600000000003 null] >> endobj -640 0 obj +639 0 obj << /Title <feff0032002e00310032002e0032002e002000500072006f00640075006300650073> -/Parent 638 0 R +/Parent 637 0 R /Count 0 -/Prev 639 0 R +/Prev 638 0 R /Dest [84 0 R /XYZ 0 245.6400000000002 null] >> endobj -641 0 obj +640 0 obj << /Title <feff0032002e00310033002e00200047004500540020002f00760032002f006c006f006f0070002f006700650074007300740061007400750073002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 642 0 R -/Last 644 0 R -/Next 645 0 R -/Prev 638 0 R +/First 641 0 R +/Last 643 0 R +/Next 644 0 R +/Prev 637 0 R /Dest [84 0 R /XYZ 0 189.36000000000018 null] >> endobj -642 0 obj +641 0 obj << /Title <feff0032002e00310033002e0031002e00200050006100720061006d00650074006500720073> -/Parent 641 0 R +/Parent 640 0 R /Count 0 -/Next 643 0 R +/Next 642 0 R /Dest [84 0 R /XYZ 0 149.28000000000017 null] >> endobj -643 0 obj +642 0 obj << /Title <feff0032002e00310033002e0032002e00200052006500730070006f006e007300650073> -/Parent 641 0 R +/Parent 640 0 R /Count 0 -/Next 644 0 R -/Prev 642 0 R +/Next 643 0 R +/Prev 641 0 R /Dest [97 0 R /XYZ 0 792.0 null] >> endobj -644 0 obj +643 0 obj << /Title <feff0032002e00310033002e0033002e002000500072006f00640075006300650073> -/Parent 641 0 R +/Parent 640 0 R /Count 0 -/Prev 643 0 R +/Prev 642 0 R /Dest [97 0 R /XYZ 0 653.2800000000002 null] >> endobj -645 0 obj +644 0 obj << /Title <feff0032002e00310034002e00200050005500540020002f00760032002f006c006f006f0070002f0072006500660072006500730068004f00700050006f006c006900630079004a0073006f006e0053006300680065006d0061002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 646 0 R -/Last 648 0 R -/Next 649 0 R -/Prev 641 0 R +/First 645 0 R +/Last 647 0 R +/Next 648 0 R +/Prev 640 0 R /Dest [97 0 R /XYZ 0 597.0000000000003 null] >> endobj -646 0 obj +645 0 obj << /Title <feff0032002e00310034002e0031002e00200050006100720061006d00650074006500720073> -/Parent 645 0 R +/Parent 644 0 R /Count 0 -/Next 647 0 R +/Next 646 0 R /Dest [97 0 R /XYZ 0 528.8400000000005 null] >> endobj -647 0 obj +646 0 obj << /Title <feff0032002e00310034002e0032002e00200052006500730070006f006e007300650073> -/Parent 645 0 R +/Parent 644 0 R /Count 0 -/Next 648 0 R -/Prev 646 0 R +/Next 647 0 R +/Prev 645 0 R /Dest [97 0 R /XYZ 0 423.72000000000054 null] >> endobj -648 0 obj +647 0 obj << /Title <feff0032002e00310034002e0033002e002000500072006f00640075006300650073> -/Parent 645 0 R +/Parent 644 0 R /Count 0 -/Prev 647 0 R +/Prev 646 0 R /Dest [97 0 R /XYZ 0 318.6000000000005 null] >> endobj -649 0 obj +648 0 obj << /Title <feff0032002e00310035002e00200050005500540020002f00760032002f006c006f006f0070002f0072006500730074006100720074002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 650 0 R -/Last 652 0 R -/Next 653 0 R -/Prev 645 0 R +/First 649 0 R +/Last 651 0 R +/Next 652 0 R +/Prev 644 0 R /Dest [97 0 R /XYZ 0 262.32000000000045 null] >> endobj -650 0 obj +649 0 obj << /Title <feff0032002e00310035002e0031002e00200050006100720061006d00650074006500720073> -/Parent 649 0 R +/Parent 648 0 R /Count 0 -/Next 651 0 R +/Next 650 0 R /Dest [97 0 R /XYZ 0 222.24000000000046 null] >> endobj -651 0 obj +650 0 obj << /Title <feff0032002e00310035002e0032002e00200052006500730070006f006e007300650073> -/Parent 649 0 R +/Parent 648 0 R /Count 0 -/Next 652 0 R -/Prev 650 0 R +/Next 651 0 R +/Prev 649 0 R /Dest [97 0 R /XYZ 0 117.12000000000043 null] >> endobj -652 0 obj +651 0 obj << /Title <feff0032002e00310035002e0033002e002000500072006f00640075006300650073> -/Parent 649 0 R +/Parent 648 0 R /Count 0 -/Prev 651 0 R +/Prev 650 0 R /Dest [110 0 R /XYZ 0 683.1600000000001 null] >> endobj -653 0 obj +652 0 obj << /Title <feff0032002e00310036002e00200050005500540020002f00760032002f006c006f006f0070002f00730074006f0070002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 654 0 R -/Last 656 0 R -/Next 657 0 R -/Prev 649 0 R +/First 653 0 R +/Last 655 0 R +/Next 656 0 R +/Prev 648 0 R /Dest [110 0 R /XYZ 0 626.8800000000002 null] >> endobj -654 0 obj +653 0 obj << /Title <feff0032002e00310036002e0031002e00200050006100720061006d00650074006500720073> -/Parent 653 0 R +/Parent 652 0 R /Count 0 -/Next 655 0 R +/Next 654 0 R /Dest [110 0 R /XYZ 0 586.8000000000003 null] >> endobj -655 0 obj +654 0 obj << /Title <feff0032002e00310036002e0032002e00200052006500730070006f006e007300650073> -/Parent 653 0 R +/Parent 652 0 R /Count 0 -/Next 656 0 R -/Prev 654 0 R +/Next 655 0 R +/Prev 653 0 R /Dest [110 0 R /XYZ 0 481.68000000000046 null] >> endobj -656 0 obj +655 0 obj << /Title <feff0032002e00310036002e0033002e002000500072006f00640075006300650073> -/Parent 653 0 R +/Parent 652 0 R /Count 0 -/Prev 655 0 R +/Prev 654 0 R /Dest [110 0 R /XYZ 0 376.5600000000004 null] >> endobj -657 0 obj +656 0 obj << /Title <feff0032002e00310037002e00200050005500540020002f00760032002f006c006f006f0070002f007300750062006d00690074002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 658 0 R -/Last 660 0 R -/Next 661 0 R -/Prev 653 0 R +/First 657 0 R +/Last 659 0 R +/Next 660 0 R +/Prev 652 0 R /Dest [110 0 R /XYZ 0 320.28000000000037 null] >> endobj -658 0 obj +657 0 obj << /Title <feff0032002e00310037002e0031002e00200050006100720061006d00650074006500720073> -/Parent 657 0 R +/Parent 656 0 R /Count 0 -/Next 659 0 R +/Next 658 0 R /Dest [110 0 R /XYZ 0 280.20000000000033 null] >> endobj -659 0 obj +658 0 obj << /Title <feff0032002e00310037002e0032002e00200052006500730070006f006e007300650073> -/Parent 657 0 R +/Parent 656 0 R /Count 0 -/Next 660 0 R -/Prev 658 0 R +/Next 659 0 R +/Prev 657 0 R /Dest [110 0 R /XYZ 0 175.08000000000033 null] >> endobj -660 0 obj +659 0 obj << /Title <feff0032002e00310037002e0033002e002000500072006f00640075006300650073> -/Parent 657 0 R +/Parent 656 0 R /Count 0 -/Prev 659 0 R -/Dest [123 0 R /XYZ 0 792.0 null] +/Prev 658 0 R +/Dest [124 0 R /XYZ 0 792.0 null] >> endobj -661 0 obj +660 0 obj << /Title <feff0032002e00310038002e00200047004500540020002f00760032002f006c006f006f0070002f0073007600670052006500700072006500730065006e0074006100740069006f006e002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 662 0 R -/Last 664 0 R -/Next 665 0 R -/Prev 657 0 R -/Dest [123 0 R /XYZ 0 702.1200000000001 null] +/First 661 0 R +/Last 663 0 R +/Next 664 0 R +/Prev 656 0 R +/Dest [124 0 R /XYZ 0 702.1200000000001 null] >> endobj -662 0 obj +661 0 obj << /Title <feff0032002e00310038002e0031002e00200050006100720061006d00650074006500720073> -/Parent 661 0 R +/Parent 660 0 R /Count 0 -/Next 663 0 R -/Dest [123 0 R /XYZ 0 662.0400000000002 null] +/Next 662 0 R +/Dest [124 0 R /XYZ 0 662.0400000000002 null] >> endobj -663 0 obj +662 0 obj << /Title <feff0032002e00310038002e0032002e00200052006500730070006f006e007300650073> -/Parent 661 0 R +/Parent 660 0 R /Count 0 -/Next 664 0 R -/Prev 662 0 R -/Dest [123 0 R /XYZ 0 556.9200000000003 null] +/Next 663 0 R +/Prev 661 0 R +/Dest [124 0 R /XYZ 0 556.9200000000003 null] >> endobj -664 0 obj +663 0 obj << /Title <feff0032002e00310038002e0033002e002000500072006f00640075006300650073> -/Parent 661 0 R +/Parent 660 0 R /Count 0 -/Prev 663 0 R -/Dest [123 0 R /XYZ 0 451.8000000000004 null] +/Prev 662 0 R +/Dest [124 0 R /XYZ 0 451.8000000000004 null] >> endobj -665 0 obj +664 0 obj << /Title <feff0032002e00310039002e00200050005500540020002f00760032002f006c006f006f0070002f0075006e006400650070006c006f0079002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 666 0 R -/Last 668 0 R -/Next 669 0 R -/Prev 661 0 R -/Dest [123 0 R /XYZ 0 395.5200000000004 null] +/First 665 0 R +/Last 667 0 R +/Next 668 0 R +/Prev 660 0 R +/Dest [124 0 R /XYZ 0 395.5200000000004 null] >> endobj -666 0 obj +665 0 obj << /Title <feff0032002e00310039002e0031002e00200050006100720061006d00650074006500720073> -/Parent 665 0 R +/Parent 664 0 R /Count 0 -/Next 667 0 R -/Dest [123 0 R /XYZ 0 355.44000000000034 null] +/Next 666 0 R +/Dest [124 0 R /XYZ 0 355.44000000000034 null] >> endobj -667 0 obj +666 0 obj << /Title <feff0032002e00310039002e0032002e00200052006500730070006f006e007300650073> -/Parent 665 0 R +/Parent 664 0 R /Count 0 -/Next 668 0 R -/Prev 666 0 R -/Dest [123 0 R /XYZ 0 250.32000000000033 null] +/Next 667 0 R +/Prev 665 0 R +/Dest [124 0 R /XYZ 0 250.32000000000033 null] >> endobj -668 0 obj +667 0 obj << /Title <feff0032002e00310039002e0033002e002000500072006f00640075006300650073> -/Parent 665 0 R +/Parent 664 0 R /Count 0 -/Prev 667 0 R -/Dest [123 0 R /XYZ 0 145.2000000000003 null] +/Prev 666 0 R +/Dest [124 0 R /XYZ 0 145.2000000000003 null] >> endobj -669 0 obj +668 0 obj << /Title <feff0032002e00320030002e00200050004f005300540020002f00760032002f006c006f006f0070002f0075007000640061007400650047006c006f00620061006c00500072006f0070006500720074006900650073002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 670 0 R -/Last 673 0 R -/Next 674 0 R -/Prev 665 0 R +/First 669 0 R +/Last 672 0 R +/Next 673 0 R +/Prev 664 0 R /Dest [137 0 R /XYZ 0 792.0 null] >> endobj -670 0 obj +669 0 obj << /Title <feff0032002e00320030002e0031002e00200050006100720061006d00650074006500720073> -/Parent 669 0 R +/Parent 668 0 R /Count 0 -/Next 671 0 R +/Next 670 0 R /Dest [137 0 R /XYZ 0 718.32 null] >> endobj -671 0 obj +670 0 obj << /Title <feff0032002e00320030002e0032002e00200052006500730070006f006e007300650073> -/Parent 669 0 R +/Parent 668 0 R /Count 0 -/Next 672 0 R -/Prev 670 0 R +/Next 671 0 R +/Prev 669 0 R /Dest [137 0 R /XYZ 0 575.6400000000001 null] >> endobj -672 0 obj +671 0 obj << /Title <feff0032002e00320030002e0033002e00200043006f006e00730075006d00650073> -/Parent 669 0 R +/Parent 668 0 R /Count 0 -/Next 673 0 R -/Prev 671 0 R +/Next 672 0 R +/Prev 670 0 R /Dest [137 0 R /XYZ 0 470.5200000000002 null] >> endobj -673 0 obj +672 0 obj << /Title <feff0032002e00320030002e0034002e002000500072006f00640075006300650073> -/Parent 669 0 R +/Parent 668 0 R /Count 0 -/Prev 672 0 R +/Prev 671 0 R /Dest [137 0 R /XYZ 0 414.2400000000002 null] >> endobj -674 0 obj +673 0 obj << /Title <feff0032002e00320031002e00200050004f005300540020002f00760032002f006c006f006f0070002f007500700064006100740065004d006900630072006f00730065007200760069006300650050006f006c006900630079002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 675 0 R -/Last 678 0 R -/Next 679 0 R -/Prev 669 0 R +/First 674 0 R +/Last 677 0 R +/Next 678 0 R +/Prev 668 0 R /Dest [137 0 R /XYZ 0 357.96000000000015 null] >> endobj -675 0 obj +674 0 obj << /Title <feff0032002e00320031002e0031002e00200050006100720061006d00650074006500720073> -/Parent 674 0 R +/Parent 673 0 R /Count 0 -/Next 676 0 R +/Next 675 0 R /Dest [137 0 R /XYZ 0 289.8000000000001 null] >> endobj -676 0 obj +675 0 obj << /Title <feff0032002e00320031002e0032002e00200052006500730070006f006e007300650073> -/Parent 674 0 R +/Parent 673 0 R /Count 0 -/Next 677 0 R -/Prev 675 0 R +/Next 676 0 R +/Prev 674 0 R /Dest [137 0 R /XYZ 0 147.1200000000001 null] >> endobj -677 0 obj +676 0 obj << /Title <feff0032002e00320031002e0033002e00200043006f006e00730075006d00650073> -/Parent 674 0 R +/Parent 673 0 R /Count 0 -/Next 678 0 R -/Prev 676 0 R +/Next 677 0 R +/Prev 675 0 R /Dest [151 0 R /XYZ 0 792.0 null] >> endobj -678 0 obj +677 0 obj << /Title <feff0032002e00320031002e0034002e002000500072006f00640075006300650073> -/Parent 674 0 R +/Parent 673 0 R /Count 0 -/Prev 677 0 R +/Prev 676 0 R /Dest [151 0 R /XYZ 0 702.1200000000001 null] >> endobj -679 0 obj +678 0 obj << /Title <feff0032002e00320032002e00200050004f005300540020002f00760032002f006c006f006f0070002f007500700064006100740065004f007000650072006100740069006f006e0061006c0050006f006c00690063006900650073002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 680 0 R -/Last 683 0 R -/Next 684 0 R -/Prev 674 0 R +/First 679 0 R +/Last 682 0 R +/Next 683 0 R +/Prev 673 0 R /Dest [151 0 R /XYZ 0 645.8400000000003 null] >> endobj -680 0 obj +679 0 obj << /Title <feff0032002e00320032002e0031002e00200050006100720061006d00650074006500720073> -/Parent 679 0 R +/Parent 678 0 R /Count 0 -/Next 681 0 R +/Next 680 0 R /Dest [151 0 R /XYZ 0 577.6800000000004 null] >> endobj -681 0 obj +680 0 obj << /Title <feff0032002e00320032002e0032002e00200052006500730070006f006e007300650073> -/Parent 679 0 R +/Parent 678 0 R /Count 0 -/Next 682 0 R -/Prev 680 0 R +/Next 681 0 R +/Prev 679 0 R /Dest [151 0 R /XYZ 0 435.0000000000005 null] >> endobj -682 0 obj +681 0 obj << /Title <feff0032002e00320032002e0033002e00200043006f006e00730075006d00650073> -/Parent 679 0 R +/Parent 678 0 R /Count 0 -/Next 683 0 R -/Prev 681 0 R +/Next 682 0 R +/Prev 680 0 R /Dest [151 0 R /XYZ 0 329.88000000000045 null] >> endobj -683 0 obj +682 0 obj << /Title <feff0032002e00320032002e0034002e002000500072006f00640075006300650073> -/Parent 679 0 R +/Parent 678 0 R /Count 0 -/Prev 682 0 R +/Prev 681 0 R /Dest [151 0 R /XYZ 0 273.6000000000004 null] >> endobj -684 0 obj +683 0 obj << /Title <feff0032002e00320033002e00200047004500540020002f00760032002f006c006f006f0070002f007b006c006f006f0070004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 685 0 R -/Last 687 0 R -/Next 688 0 R -/Prev 679 0 R +/First 684 0 R +/Last 686 0 R +/Next 687 0 R +/Prev 678 0 R /Dest [151 0 R /XYZ 0 217.32000000000042 null] >> endobj -685 0 obj +684 0 obj << /Title <feff0032002e00320033002e0031002e00200050006100720061006d00650074006500720073> -/Parent 684 0 R +/Parent 683 0 R /Count 0 -/Next 686 0 R +/Next 685 0 R /Dest [151 0 R /XYZ 0 177.2400000000004 null] >> endobj -686 0 obj +685 0 obj << /Title <feff0032002e00320033002e0032002e00200052006500730070006f006e007300650073> -/Parent 684 0 R +/Parent 683 0 R /Count 0 -/Next 687 0 R -/Prev 685 0 R +/Next 686 0 R +/Prev 684 0 R /Dest [165 0 R /XYZ 0 792.0 null] >> endobj -687 0 obj +686 0 obj << /Title <feff0032002e00320033002e0033002e002000500072006f00640075006300650073> -/Parent 684 0 R +/Parent 683 0 R /Count 0 -/Prev 686 0 R +/Prev 685 0 R /Dest [165 0 R /XYZ 0 653.2800000000002 null] >> endobj -688 0 obj +687 0 obj << /Title <feff0032002e00320034002e00200047004500540020002f00760032002f0070006f006c0069006300790054006f007300630061004d006f00640065006c0073> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 689 0 R -/Last 690 0 R -/Next 691 0 R -/Prev 684 0 R +/First 688 0 R +/Last 689 0 R +/Next 690 0 R +/Prev 683 0 R /Dest [165 0 R /XYZ 0 597.0000000000003 null] >> endobj -689 0 obj +688 0 obj << /Title <feff0032002e00320034002e0031002e00200052006500730070006f006e007300650073> -/Parent 688 0 R +/Parent 687 0 R /Count 0 -/Next 690 0 R +/Next 689 0 R /Dest [165 0 R /XYZ 0 556.9200000000004 null] >> endobj -690 0 obj +689 0 obj << /Title <feff0032002e00320034002e0032002e002000500072006f00640075006300650073> -/Parent 688 0 R +/Parent 687 0 R /Count 0 -/Prev 689 0 R +/Prev 688 0 R /Dest [165 0 R /XYZ 0 451.8000000000005 null] >> endobj -691 0 obj +690 0 obj << /Title <feff0032002e00320035002e00200047004500540020002f00760032002f0070006f006c0069006300790054006f007300630061004d006f00640065006c0073002f00790061006d006c002f007b0070006f006c006900630079004d006f00640065006c0054007900700065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 692 0 R -/Last 694 0 R -/Next 695 0 R -/Prev 688 0 R +/First 691 0 R +/Last 693 0 R +/Next 694 0 R +/Prev 687 0 R /Dest [165 0 R /XYZ 0 395.5200000000005 null] >> endobj -692 0 obj +691 0 obj << /Title <feff0032002e00320035002e0031002e00200050006100720061006d00650074006500720073> -/Parent 691 0 R +/Parent 690 0 R /Count 0 -/Next 693 0 R +/Next 692 0 R /Dest [165 0 R /XYZ 0 327.36000000000047 null] >> endobj -693 0 obj +692 0 obj << /Title <feff0032002e00320035002e0032002e00200052006500730070006f006e007300650073> -/Parent 691 0 R +/Parent 690 0 R /Count 0 -/Next 694 0 R -/Prev 692 0 R +/Next 693 0 R +/Prev 691 0 R /Dest [165 0 R /XYZ 0 222.2400000000004 null] >> endobj -694 0 obj +693 0 obj << /Title <feff0032002e00320035002e0033002e002000500072006f00640075006300650073> -/Parent 691 0 R +/Parent 690 0 R /Count 0 -/Prev 693 0 R +/Prev 692 0 R /Dest [165 0 R /XYZ 0 117.12000000000037 null] >> endobj -695 0 obj +694 0 obj << /Title <feff0032002e00320036002e00200047004500540020002f00760032002f0070006f006c0069006300790054006f007300630061004d006f00640065006c0073002f007b0070006f006c006900630079004d006f00640065006c0054007900700065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 696 0 R -/Last 698 0 R -/Next 699 0 R -/Prev 691 0 R -/Dest [179 0 R /XYZ 0 792.0 null] +/First 695 0 R +/Last 697 0 R +/Next 698 0 R +/Prev 690 0 R +/Dest [178 0 R /XYZ 0 792.0 null] >> endobj -696 0 obj +695 0 obj << /Title <feff0032002e00320036002e0031002e00200050006100720061006d00650074006500720073> -/Parent 695 0 R +/Parent 694 0 R /Count 0 -/Next 697 0 R -/Dest [179 0 R /XYZ 0 718.32 null] +/Next 696 0 R +/Dest [178 0 R /XYZ 0 718.32 null] >> endobj -697 0 obj +696 0 obj << /Title <feff0032002e00320036002e0032002e00200052006500730070006f006e007300650073> -/Parent 695 0 R +/Parent 694 0 R /Count 0 -/Next 698 0 R -/Prev 696 0 R -/Dest [179 0 R /XYZ 0 613.2000000000003 null] +/Next 697 0 R +/Prev 695 0 R +/Dest [178 0 R /XYZ 0 613.2000000000003 null] >> endobj -698 0 obj +697 0 obj << /Title <feff0032002e00320036002e0033002e002000500072006f00640075006300650073> -/Parent 695 0 R +/Parent 694 0 R /Count 0 -/Prev 697 0 R -/Dest [179 0 R /XYZ 0 508.0800000000004 null] +/Prev 696 0 R +/Dest [178 0 R /XYZ 0 508.0800000000004 null] >> endobj -699 0 obj +698 0 obj << /Title <feff0032002e00320037002e00200050005500540020002f00760032002f0070006f006c0069006300790054006f007300630061004d006f00640065006c0073002f007b0070006f006c006900630079004d006f00640065006c0054007900700065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 4 -/First 700 0 R -/Last 703 0 R -/Next 704 0 R -/Prev 695 0 R -/Dest [179 0 R /XYZ 0 451.80000000000035 null] +/First 699 0 R +/Last 702 0 R +/Next 703 0 R +/Prev 694 0 R +/Dest [178 0 R /XYZ 0 451.80000000000035 null] >> endobj -700 0 obj +699 0 obj << /Title <feff0032002e00320037002e0031002e00200050006100720061006d00650074006500720073> -/Parent 699 0 R +/Parent 698 0 R +/Count 0 +/Next 700 0 R +/Dest [178 0 R /XYZ 0 411.7200000000003 null] +>> +endobj +700 0 obj +<< /Title <feff0032002e00320037002e0032002e00200052006500730070006f006e007300650073> +/Parent 698 0 R /Count 0 /Next 701 0 R -/Dest [179 0 R /XYZ 0 411.7200000000003 null] +/Prev 699 0 R +/Dest [178 0 R /XYZ 0 269.04000000000025 null] >> endobj 701 0 obj -<< /Title <feff0032002e00320037002e0032002e00200052006500730070006f006e007300650073> -/Parent 699 0 R +<< /Title <feff0032002e00320037002e0033002e00200043006f006e00730075006d00650073> +/Parent 698 0 R /Count 0 /Next 702 0 R /Prev 700 0 R -/Dest [179 0 R /XYZ 0 269.04000000000025 null] +/Dest [178 0 R /XYZ 0 163.92000000000024 null] >> endobj 702 0 obj -<< /Title <feff0032002e00320037002e0033002e00200043006f006e00730075006d00650073> -/Parent 699 0 R +<< /Title <feff0032002e00320037002e0034002e002000500072006f00640075006300650073> +/Parent 698 0 R /Count 0 -/Next 703 0 R /Prev 701 0 R -/Dest [179 0 R /XYZ 0 163.92000000000024 null] +/Dest [178 0 R /XYZ 0 107.64000000000021 null] >> endobj 703 0 obj -<< /Title <feff0032002e00320037002e0034002e002000500072006f00640075006300650073> -/Parent 699 0 R -/Count 0 -/Prev 702 0 R -/Dest [179 0 R /XYZ 0 107.64000000000021 null] ->> -endobj -704 0 obj << /Title <feff0032002e00320038002e00200047004500540020002f00760032002f00740065006d0070006c0061007400650073> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 705 0 R -/Last 706 0 R -/Next 707 0 R -/Prev 699 0 R +/First 704 0 R +/Last 705 0 R +/Next 706 0 R +/Prev 698 0 R /Dest [192 0 R /XYZ 0 792.0 null] >> endobj -705 0 obj +704 0 obj << /Title <feff0032002e00320038002e0031002e00200052006500730070006f006e007300650073> -/Parent 704 0 R +/Parent 703 0 R /Count 0 -/Next 706 0 R +/Next 705 0 R /Dest [192 0 R /XYZ 0 718.32 null] >> endobj -706 0 obj +705 0 obj << /Title <feff0032002e00320038002e0032002e002000500072006f00640075006300650073> -/Parent 704 0 R +/Parent 703 0 R /Count 0 -/Prev 705 0 R +/Prev 704 0 R /Dest [192 0 R /XYZ 0 613.2000000000003 null] >> endobj -707 0 obj +706 0 obj << /Title <feff0032002e00320039002e00200047004500540020002f00760032002f00740065006d0070006c0061007400650073002f006e0061006d00650073> -/Parent 596 0 R +/Parent 595 0 R /Count 2 -/First 708 0 R -/Last 709 0 R -/Next 710 0 R -/Prev 704 0 R +/First 707 0 R +/Last 708 0 R +/Next 709 0 R +/Prev 703 0 R /Dest [192 0 R /XYZ 0 556.9200000000004 null] >> endobj -708 0 obj +707 0 obj << /Title <feff0032002e00320039002e0031002e00200052006500730070006f006e007300650073> -/Parent 707 0 R +/Parent 706 0 R /Count 0 -/Next 709 0 R +/Next 708 0 R /Dest [192 0 R /XYZ 0 516.8400000000005 null] >> endobj -709 0 obj +708 0 obj << /Title <feff0032002e00320039002e0032002e002000500072006f00640075006300650073> -/Parent 707 0 R +/Parent 706 0 R /Count 0 -/Prev 708 0 R +/Prev 707 0 R /Dest [192 0 R /XYZ 0 411.7200000000005 null] >> endobj -710 0 obj +709 0 obj << /Title <feff0032002e00330030002e00200047004500540020002f00760032002f00740065006d0070006c0061007400650073002f007b00740065006d0070006c006100740065004e0061006d0065007d> -/Parent 596 0 R +/Parent 595 0 R /Count 3 -/First 711 0 R -/Last 713 0 R -/Prev 707 0 R +/First 710 0 R +/Last 712 0 R +/Prev 706 0 R /Dest [192 0 R /XYZ 0 355.44000000000045 null] >> endobj -711 0 obj +710 0 obj << /Title <feff0032002e00330030002e0031002e00200050006100720061006d00650074006500720073> -/Parent 710 0 R +/Parent 709 0 R /Count 0 -/Next 712 0 R +/Next 711 0 R /Dest [192 0 R /XYZ 0 315.3600000000004 null] >> endobj -712 0 obj +711 0 obj << /Title <feff0032002e00330030002e0032002e00200052006500730070006f006e007300650073> -/Parent 710 0 R +/Parent 709 0 R /Count 0 -/Next 713 0 R -/Prev 711 0 R +/Next 712 0 R +/Prev 710 0 R /Dest [192 0 R /XYZ 0 210.2400000000004 null] >> endobj -713 0 obj +712 0 obj << /Title <feff0032002e00330030002e0033002e002000500072006f00640075006300650073> -/Parent 710 0 R +/Parent 709 0 R /Count 0 -/Prev 712 0 R +/Prev 711 0 R /Dest [192 0 R /XYZ 0 105.12000000000037 null] >> endobj -714 0 obj +713 0 obj << /Title <feff004300680061007000740065007200200033002e00200044006500660069006e006900740069006f006e0073> -/Parent 590 0 R +/Parent 589 0 R /Count 19 -/First 715 0 R -/Last 733 0 R -/Prev 596 0 R -/Dest [208 0 R /XYZ 0 792.0 null] +/First 714 0 R +/Last 732 0 R +/Prev 595 0 R +/Dest [207 0 R /XYZ 0 792.0 null] >> endobj -715 0 obj +714 0 obj << /Title <feff0033002e0031002e00200043006c00640073004800650061006c007400680043006800650063006b> -/Parent 714 0 R +/Parent 713 0 R +/Count 0 +/Next 715 0 R +/Dest [207 0 R /XYZ 0 712.0799999999999 null] +>> +endobj +715 0 obj +<< /Title <feff0033002e0032002e002000440069006300740069006f006e006100720079> +/Parent 713 0 R /Count 0 /Next 716 0 R -/Dest [208 0 R /XYZ 0 712.0799999999999 null] +/Prev 714 0 R +/Dest [207 0 R /XYZ 0 524.04 null] >> endobj 716 0 obj -<< /Title <feff0033002e0032002e002000440069006300740069006f006e006100720079> -/Parent 714 0 R +<< /Title <feff0033002e0033002e002000440069006300740069006f006e0061007200790045006c0065006d0065006e0074> +/Parent 713 0 R /Count 0 /Next 717 0 R /Prev 715 0 R -/Dest [208 0 R /XYZ 0 524.04 null] +/Dest [207 0 R /XYZ 0 148.19999999999993 null] >> endobj 717 0 obj -<< /Title <feff0033002e0033002e002000440069006300740069006f006e0061007200790045006c0065006d0065006e0074> -/Parent 714 0 R +<< /Title <feff0033002e0034002e002000450078007400650072006e0061006c0043006f006d0070006f006e0065006e0074> +/Parent 713 0 R /Count 0 /Next 718 0 R /Prev 716 0 R -/Dest [208 0 R /XYZ 0 148.19999999999993 null] +/Dest [214 0 R /XYZ 0 345.11999999999995 null] >> endobj 718 0 obj -<< /Title <feff0033002e0034002e002000450078007400650072006e0061006c0043006f006d0070006f006e0065006e0074> -/Parent 714 0 R +<< /Title <feff0033002e0035002e002000450078007400650072006e0061006c0043006f006d0070006f006e0065006e007400530074006100740065> +/Parent 713 0 R /Count 0 /Next 719 0 R /Prev 717 0 R -/Dest [215 0 R /XYZ 0 345.11999999999995 null] +/Dest [214 0 R /XYZ 0 194.6399999999999 null] >> endobj 719 0 obj -<< /Title <feff0033002e0035002e002000450078007400650072006e0061006c0043006f006d0070006f006e0065006e007400530074006100740065> -/Parent 714 0 R +<< /Title <feff0033002e0036002e0020004a0073006f006e00410072007200610079> +/Parent 713 0 R /Count 0 /Next 720 0 R /Prev 718 0 R -/Dest [215 0 R /XYZ 0 194.6399999999999 null] +/Dest [220 0 R /XYZ 0 683.1600000000001 null] >> endobj 720 0 obj -<< /Title <feff0033002e0036002e0020004a0073006f006e00410072007200610079> -/Parent 714 0 R +<< /Title <feff0033002e0037002e0020004a0073006f006e004e0075006c006c> +/Parent 713 0 R /Count 0 /Next 721 0 R /Prev 719 0 R -/Dest [221 0 R /XYZ 0 683.1600000000001 null] +/Dest [228 0 R /XYZ 0 532.9200000000003 null] >> endobj 721 0 obj -<< /Title <feff0033002e0037002e0020004a0073006f006e004e0075006c006c> -/Parent 714 0 R +<< /Title <feff0033002e0038002e0020004a0073006f006e004f0062006a006500630074> +/Parent 713 0 R /Count 0 /Next 722 0 R /Prev 720 0 R -/Dest [229 0 R /XYZ 0 532.9200000000003 null] +/Dest [234 0 R /XYZ 0 382.68000000000023 null] >> endobj 722 0 obj -<< /Title <feff0033002e0038002e0020004a0073006f006e004f0062006a006500630074> -/Parent 714 0 R +<< /Title <feff0033002e0039002e0020004a0073006f006e005000720069006d00690074006900760065> +/Parent 713 0 R /Count 0 /Next 723 0 R /Prev 721 0 R -/Dest [235 0 R /XYZ 0 382.68000000000023 null] +/Dest [239 0 R /XYZ 0 232.44000000000023 null] >> endobj 723 0 obj -<< /Title <feff0033002e0039002e0020004a0073006f006e005000720069006d00690074006900760065> -/Parent 714 0 R +<< /Title <feff0033002e00310030002e0020004c006f006f0070> +/Parent 713 0 R /Count 0 /Next 724 0 R /Prev 722 0 R -/Dest [240 0 R /XYZ 0 232.44000000000023 null] +/Dest [255 0 R /XYZ 0 645.6000000000001 null] >> endobj 724 0 obj -<< /Title <feff0033002e00310030002e0020004c006f006f0070> -/Parent 714 0 R +<< /Title <feff0033002e00310031002e0020004c006f006f00700045006c0065006d0065006e0074004d006f00640065006c> +/Parent 713 0 R /Count 0 /Next 725 0 R /Prev 723 0 R -/Dest [256 0 R /XYZ 0 645.6000000000001 null] +/Dest [265 0 R /XYZ 0 645.6000000000001 null] >> endobj 725 0 obj -<< /Title <feff0033002e00310031002e0020004c006f006f00700045006c0065006d0065006e0074004d006f00640065006c> -/Parent 714 0 R +<< /Title <feff0033002e00310032002e0020004c006f006f0070004c006f0067> +/Parent 713 0 R /Count 0 /Next 726 0 R /Prev 724 0 R -/Dest [266 0 R /XYZ 0 645.6000000000001 null] +/Dest [265 0 R /XYZ 0 157.08000000000015 null] >> endobj 726 0 obj -<< /Title <feff0033002e00310032002e0020004c006f006f0070004c006f0067> -/Parent 714 0 R +<< /Title <feff0033002e00310033002e0020004c006f006f007000540065006d0070006c006100740065> +/Parent 713 0 R /Count 0 /Next 727 0 R /Prev 725 0 R -/Dest [266 0 R /XYZ 0 157.08000000000015 null] +/Dest [271 0 R /XYZ 0 532.9200000000001 null] >> endobj 727 0 obj -<< /Title <feff0033002e00310033002e0020004c006f006f007000540065006d0070006c006100740065> -/Parent 714 0 R +<< /Title <feff0033002e00310034002e0020004c006f006f007000540065006d0070006c006100740065004c006f006f00700045006c0065006d0065006e0074004d006f00640065006c> +/Parent 713 0 R /Count 0 /Next 728 0 R /Prev 726 0 R -/Dest [272 0 R /XYZ 0 532.9200000000001 null] +/Dest [277 0 R /XYZ 0 645.6000000000001 null] >> endobj 728 0 obj -<< /Title <feff0033002e00310034002e0020004c006f006f007000540065006d0070006c006100740065004c006f006f00700045006c0065006d0065006e0074004d006f00640065006c> -/Parent 714 0 R +<< /Title <feff0033002e00310035002e0020004d006900630072006f00530065007200760069006300650050006f006c006900630079> +/Parent 713 0 R /Count 0 /Next 729 0 R /Prev 727 0 R -/Dest [278 0 R /XYZ 0 645.6000000000001 null] +/Dest [277 0 R /XYZ 0 457.56000000000023 null] >> endobj 729 0 obj -<< /Title <feff0033002e00310035002e0020004d006900630072006f00530065007200760069006300650050006f006c006900630079> -/Parent 714 0 R +<< /Title <feff0033002e00310036002e0020004e0075006d006200650072> +/Parent 713 0 R /Count 0 /Next 730 0 R /Prev 728 0 R -/Dest [278 0 R /XYZ 0 457.56000000000023 null] +/Dest [285 0 R /XYZ 0 382.68000000000023 null] >> endobj 730 0 obj -<< /Title <feff0033002e00310036002e0020004e0075006d006200650072> -/Parent 714 0 R +<< /Title <feff0033002e00310037002e0020004f007000650072006100740069006f006e0061006c0050006f006c006900630079> +/Parent 713 0 R /Count 0 /Next 731 0 R /Prev 729 0 R -/Dest [286 0 R /XYZ 0 382.68000000000023 null] +/Dest [285 0 R /XYZ 0 314.82000000000016 null] >> endobj 731 0 obj -<< /Title <feff0033002e00310037002e0020004f007000650072006100740069006f006e0061006c0050006f006c006900630079> -/Parent 714 0 R +<< /Title <feff0033002e00310038002e00200050006f006c006900630079004d006f00640065006c> +/Parent 713 0 R /Count 0 /Next 732 0 R /Prev 730 0 R -/Dest [286 0 R /XYZ 0 314.82000000000016 null] +/Dest [294 0 R /XYZ 0 420.24 null] >> endobj 732 0 obj -<< /Title <feff0033002e00310038002e00200050006f006c006900630079004d006f00640065006c> -/Parent 714 0 R +<< /Title <feff0033002e00310039002e00200053006500720076006900630065> +/Parent 713 0 R /Count 0 -/Next 733 0 R /Prev 731 0 R -/Dest [296 0 R /XYZ 0 457.8 null] +/Dest [301 0 R /XYZ 0 645.5999999999999 null] >> endobj 733 0 obj -<< /Title <feff0033002e00310039002e00200053006500720076006900630065> -/Parent 714 0 R -/Count 0 -/Prev 732 0 R -/Dest [303 0 R /XYZ 0 683.1600000000001 null] ->> -endobj -734 0 obj << /Nums [0 << /P (i) >> 1 << /P (ii) >> 2 << /P (iii) @@ -49012,7 +49097,7 @@ endobj >>] >> endobj -735 0 obj +734 0 obj << /Length1 12112 /Length 7776 /Filter [/FlateDecode] @@ -49045,10 +49130,10 @@ G)DzÎÿl ”a•dç4äft†#Ëe=<¥òª¦'½ýcÞɕߪù‘좼pNƒ/(i€À$šVô·(ý.½°Œÿ¾>Ö½t`jxp\5=àÛàÛ¥¬›Ž³€×X©wÚ«šŸ rèWõΪVÙö‡°-…/M³sœ6C,”é€C¬ÁÐT¨Ä«6 endstream endobj -736 0 obj +735 0 obj << /Type /FontDescriptor /FontName /AAAAAA+NotoSerif -/FontFile2 735 0 R +/FontFile2 734 0 R /FontBBox [-212 -250 1246 1047] /Flags 6 /StemV 0 @@ -49059,7 +49144,7 @@ endobj /XHeight 1098 >> endobj -737 0 obj +736 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49069,10 +49154,10 @@ xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ +ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýí ¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçÎœñJ¼Y³e¼Y†Œ7+|œÆx‹oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ–-㌋·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eãÓ«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9Jñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã
{HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî;¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…>¼M†ÁBi2.Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ? endstream endobj -738 0 obj +737 0 obj [259 1000 1000 1000 1000 1000 1000 1000 346 346 1000 1000 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 1000 559 1000 559 1000 1000 705 653 613 727 623 589 713 792 367 356 1000 623 937 763 742 604 1000 655 543 612 716 674 1046 1000 625 1000 1000 1000 1000 1000 458 1000 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 1000 471 451 352 634 579 861 578 564 1000 428 1000 428 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -739 0 obj +738 0 obj << /Length1 11308 /Length 7514 /Filter [/FlateDecode] @@ -49103,10 +49188,10 @@ fé27®!Ľ8˜o¥‘žU2e‰±0yådÈ]a” ¤“_ý,SÎãr’RE)ùÉUBüžRmÓ©Eô7þþÓIVêlj.Ñ¥*' \ïLBCŒXÇdô0Âj§äõÁsñ«ÕïØ€²Ö‘ÝŒ#¯Xc‹À19=ìŒÆQÌ8ë*ªš;ªìŠ[¯·o…Tpž:A«+¥Ï endstream endobj -740 0 obj +739 0 obj << /Type /FontDescriptor /FontName /AAAAAB+NotoSerif-Bold -/FontFile2 739 0 R +/FontFile2 738 0 R /FontBBox [-212 -250 1306 1058] /Flags 6 /StemV 0 @@ -49117,7 +49202,7 @@ endobj /XHeight 1098 >> endobj -741 0 obj +740 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49127,10 +49212,10 @@ xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ +ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýí ¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçÎœñJ¼Y³e¼Y†Œ7+|œÆx‹oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ–-㌋·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eãÓ«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9Jñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã
{HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî;¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…>¼M†ÁBi2.Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ? endstream endobj -742 0 obj +741 0 obj [259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 293 288 559 559 559 559 559 559 559 559 559 559 1000 1000 1000 1000 1000 1000 1000 752 671 667 767 652 621 769 818 400 368 1000 653 952 788 787 638 1000 707 585 652 747 698 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 345 636 352 985 666 612 645 647 522 487 404 666 605 855 645 579 1000 441 1000 441 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -743 0 obj +742 0 obj << /Length1 5116 /Length 3170 /Filter [/FlateDecode] @@ -49150,10 +49235,10 @@ aÙR÷Ÿâör×ÿrŠÌš±ãø±m'™²ÏOr׸ÜóG‰š¸ÝMÖÝ #8çMî¾nzº95“ƒ6GðÑ`#%ýà xH‚¢±Å+ÅhžQrÍD ÿ:´2õ]Û^Ô5 w,¥Âº*›Ó‹Œ58«mÖg·±nkÞÄ7cÙÞB4èÆa¯ÅÊD[NaéU‹<V¥Éó`ØÉ@V΋š{KÙÀ—r¿ËS«¯ ðêó3³§e'ó(×ÚÏ«-{S}`-õy÷¢¦/²±ò‹ð79à]èp$xrë’¤ÏÊÃ'ý›"ZÞé³/izïþ›]’Wâ~ ïÝ–þ&ÌÁT endstream endobj -744 0 obj +743 0 obj << /Type /FontDescriptor /FontName /AAAAAC+NotoSerif-Italic -/FontFile2 743 0 R +/FontFile2 742 0 R /FontBBox [-254 -250 1238 1047] /Flags 70 /StemV 0 @@ -49164,7 +49249,7 @@ endobj /XHeight 1098 >> endobj -745 0 obj +744 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49174,10 +49259,10 @@ xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ +ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýí ¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçÎœñJ¼Y³e¼Y†Œ7+|œÆx‹oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ–-㌋·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eãÓ«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9Jñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã
{HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî;¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…>¼M†ÁBi2.Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ? endstream endobj -746 0 obj +745 0 obj [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 653 1000 1000 1000 1000 1000 792 1000 1000 1000 1000 1000 1000 1000 620 1000 1000 543 612 1000 674 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 579 1000 486 579 493 1000 1000 599 304 1000 1000 304 895 599 574 577 560 467 463 368 599 1000 1000 1000 527 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj -747 0 obj +746 0 obj << /Length1 3280 /Length 2112 /Filter [/FlateDecode] @@ -49192,10 +49277,10 @@ xœµV{L›×?ç³±yûyš’Ï|„<üÛ„b^ì ˆ‡¶€$W´¦ö"k8À
VšÛi<êí!‹§–N..ðͶ&W+uXœ¶—¨:‹’j³†Z;Ù×cžOÎ-/²UFN¤ÓÉ6»][§)å%ÛÒâr*Ÿf©Ûf“RÓTó6°Óß<Qsäz‰B–Ó^"KD/“çùŸÞ)ƒ~™’¹T¾^õ‡i9šít-Ñ£\î‚céúìw='4‡î‚9÷F|ðÂBìßëVbCAÿWAþö}½‚[Ï‹¸1?¾ˆøbä¢Oe›Dm$ BD<yBT™'ÂÑ`Á"BY@Ü‹þS„ÃU´nH²g#ü‡"–Ùª¬"Zø›b±Ù*r–@(Ü+DLVQa9YÅ‹Þ Áz#VQia¦&ÁôLøOÆßDŒ¤~`ü{Ä(˜Ä<sXôŠH‘áåYJ&Ƭ¢Êr±WÉ;¿:1a`Ô–‹
’È»#Ê·èuü»U,°ðÏ2'W †»^T6úE†3ñL”gD«ÑdŠ3ÊqÌaa.:Qk"Ä"CJ§ØÂÛE5„çû_t–óS“9¦WÂ<“k>Ã÷e|Q!ÃgÉÀÀE/iR~L zãŒ!›RÉSûz•Édä×3T2 hŽÊ±™$5Eà×eçŒM"FÂJh@È|f #D™A΄-VQËŽAOqëXŒÐÿG¶Ñ٧΄™–Y(‰Ì÷YÙüSBF-òÁð!ãû´c°¼^ôvuaàŠ–Ú[š™òÑ0›Caa’¢ºŒ´ ÐE•÷†Â—¨¯»c]—GZD>&VÇk·}•[D’R]h²²ß‘zÖóé?+wú_½î“ä endstream endobj -748 0 obj +747 0 obj << /Type /FontDescriptor /FontName /AAAAAD+mplus1mn-regular -/FontFile2 747 0 R +/FontFile2 746 0 R /FontBBox [0 -230 1000 860] /Flags 4 /StemV 0 @@ -49206,7 +49291,7 @@ endobj /XHeight 0 >> endobj -749 0 obj +748 0 obj << /Length 1286 /Filter [/FlateDecode] >> @@ -49216,11 +49301,11 @@ xœe×ËnÛF†á½®BËtHs&Ã@‘n¼èu{stÔ’ +ß}ù½¤i Æ/‰œy¾_Ã!uøôôÓÓùtß~»]ês¿ïÇéÜnýí ¿âíJ¼âíJ¼â특âíâ¬x»¯x»¯x‡+Þ!Êw¹âB®x‡b®x‡+ÞïrÅ;àà2äÍkçÎœñJ¼Y³e¼Y†Œ7+|œÆx‹oSŠŒ7+[Æ›ețךyÞ¢oVûòæµ–-㌋·é€"¯åþR¦W*–Ó4Xq”êC™^Jú[(£à®^ƒ1»¢y]•¡Èk¹}¼YM-x¥úëÈVæz·ÌþÊ[YEãV¼Y³ÕÙ_}/7×*¯Y%«ê¯eãÓ«q+ýÝ:÷Ý.â¿7™Jã‹ÈÛE¡/‰3Y(Y™*AˆW RõÝVJSƒª‚¶á:(u@c¡ðD±]a*Õíf)¤9Jñæ)¥o,#Ú\ØZ>MU¡Û\ØjPSã
{HSãçMª•ôj»ˆ·’{fk”Œ°yGá‰m[z*EïsaëÝ>Š&îÓ«Óúôj%u¼Üî;¥2^ÆWÃ[Õßήòvú[¾Ïþ2î쯲uú[•¢³Pš:ÙçÂVÌ¡§Õ…>¼M†ÁBi2.Ħ‰ÇÜèÔ‡!¯áñdÈk¹`†¼–=oÌ‘qWÞ•wdJF(”L164ÞU Ñ)™x0Eú~êñZ? endstream endobj -750 0 obj +749 0 obj [1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 1000 500 1000 1000 1000 500 500 1000 500 500 500 500 500 1000 1000 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] endobj xref -0 751 +0 750 0000000000 65535 f 0000000015 00000 n 0000000264 00000 n @@ -49243,740 +49328,739 @@ xref 0000127807 00000 n 0000127850 00000 n 0000127899 00000 n -0000128013 00000 n -0000128186 00000 n -0000128241 00000 n -0000128416 00000 n -0000128460 00000 n -0000140641 00000 n -0000140902 00000 n -0000140945 00000 n -0000141000 00000 n -0000141043 00000 n -0000141215 00000 n -0000141270 00000 n -0000141445 00000 n -0000141501 00000 n -0000141556 00000 n -0000141611 00000 n -0000141667 00000 n -0000141722 00000 n -0000141880 00000 n -0000141935 00000 n -0000141991 00000 n -0000158351 00000 n -0000158625 00000 n -0000158668 00000 n -0000158822 00000 n -0000158877 00000 n -0000159033 00000 n -0000159088 00000 n -0000159144 00000 n -0000159199 00000 n -0000159254 00000 n -0000159309 00000 n -0000159619 00000 n -0000159949 00000 n -0000160004 00000 n -0000160060 00000 n -0000178217 00000 n -0000178498 00000 n -0000178541 00000 n -0000178697 00000 n -0000178752 00000 n -0000178807 00000 n -0000178862 00000 n -0000179016 00000 n -0000179071 00000 n -0000179227 00000 n -0000179283 00000 n -0000179339 00000 n -0000179394 00000 n -0000179449 00000 n -0000194772 00000 n -0000195022 00000 n -0000195065 00000 n -0000195120 00000 n -0000195175 00000 n -0000195230 00000 n -0000195286 00000 n -0000195341 00000 n -0000195397 00000 n -0000195453 00000 n -0000195509 00000 n -0000195789 00000 n -0000213656 00000 n -0000213923 00000 n -0000213967 00000 n -0000214022 00000 n -0000214335 00000 n -0000214390 00000 n -0000214552 00000 n -0000214608 00000 n -0000214663 00000 n -0000214718 00000 n -0000214773 00000 n -0000214829 00000 n -0000214885 00000 n -0000231049 00000 n -0000231324 00000 n -0000231367 00000 n -0000231528 00000 n -0000231584 00000 n -0000231640 00000 n -0000231696 00000 n -0000231753 00000 n -0000231915 00000 n -0000231971 00000 n -0000232028 00000 n -0000232085 00000 n -0000232142 00000 n -0000251266 00000 n -0000251552 00000 n -0000251704 00000 n -0000251761 00000 n -0000251818 00000 n -0000251875 00000 n -0000251933 00000 n -0000252096 00000 n -0000252153 00000 n -0000252211 00000 n -0000252269 00000 n -0000252327 00000 n -0000252490 00000 n -0000268772 00000 n -0000269042 00000 n -0000269087 00000 n -0000269144 00000 n -0000269201 00000 n -0000269258 00000 n -0000269593 00000 n -0000269650 00000 n -0000269950 00000 n -0000270007 00000 n -0000270065 00000 n -0000270123 00000 n -0000270287 00000 n -0000270344 00000 n -0000290041 00000 n -0000290335 00000 n -0000290380 00000 n -0000290426 00000 n -0000290581 00000 n -0000290638 00000 n -0000290801 00000 n -0000290858 00000 n -0000290915 00000 n -0000290973 00000 n -0000291030 00000 n -0000291195 00000 n -0000291252 00000 n -0000291429 00000 n -0000306939 00000 n -0000307217 00000 n -0000307262 00000 n -0000307319 00000 n -0000307376 00000 n -0000307433 00000 n -0000307591 00000 n -0000307648 00000 n -0000307811 00000 n -0000307869 00000 n -0000308332 00000 n -0000308389 00000 n -0000308447 00000 n -0000308504 00000 n -0000324978 00000 n -0000325256 00000 n -0000325301 00000 n -0000325463 00000 n -0000325520 00000 n -0000325577 00000 n -0000326170 00000 n -0000326227 00000 n -0000326388 00000 n -0000326445 00000 n -0000326502 00000 n -0000326560 00000 n -0000326617 00000 n -0000326675 00000 n -0000344786 00000 n -0000345064 00000 n -0000345109 00000 n -0000345155 00000 n -0000345212 00000 n -0000345371 00000 n -0000345428 00000 n -0000345486 00000 n -0000345543 00000 n -0000345601 00000 n -0000345762 00000 n -0000345820 00000 n -0000345878 00000 n -0000362449 00000 n -0000362727 00000 n -0000362772 00000 n -0000362818 00000 n -0000363137 00000 n -0000363307 00000 n -0000363364 00000 n -0000363716 00000 n -0000363773 00000 n -0000363830 00000 n -0000363887 00000 n -0000363945 00000 n -0000364002 00000 n -0000364059 00000 n -0000364230 00000 n -0000364288 00000 n -0000380425 00000 n -0000380682 00000 n -0000380727 00000 n -0000380784 00000 n -0000380830 00000 n -0000381007 00000 n -0000381065 00000 n -0000401418 00000 n -0000401683 00000 n -0000401847 00000 n -0000401905 00000 n -0000402088 00000 n -0000402145 00000 n -0000424131 00000 n -0000424420 00000 n -0000424477 00000 n -0000424645 00000 n -0000424812 00000 n -0000424982 00000 n -0000425154 00000 n -0000425314 00000 n -0000446881 00000 n -0000447154 00000 n -0000447211 00000 n -0000447380 00000 n -0000447549 00000 n -0000447718 00000 n -0000468936 00000 n -0000469201 00000 n -0000469352 00000 n -0000469491 00000 n -0000469549 00000 n -0000491260 00000 n -0000491549 00000 n -0000491717 00000 n -0000491864 00000 n -0000492013 00000 n -0000492164 00000 n -0000492303 00000 n -0000492361 00000 n -0000492911 00000 n -0000515656 00000 n -0000515945 00000 n -0000516113 00000 n -0000516260 00000 n -0000516409 00000 n -0000516560 00000 n -0000516699 00000 n -0000540091 00000 n -0000540396 00000 n -0000540453 00000 n -0000540623 00000 n -0000540794 00000 n -0000540962 00000 n -0000541135 00000 n -0000541314 00000 n -0000541476 00000 n -0000541654 00000 n -0000562349 00000 n -0000562614 00000 n -0000562671 00000 n -0000562840 00000 n -0000563029 00000 n -0000563087 00000 n -0000584792 00000 n -0000585065 00000 n -0000585228 00000 n -0000585285 00000 n -0000585472 00000 n -0000585634 00000 n -0000606442 00000 n -0000606723 00000 n -0000606780 00000 n -0000606955 00000 n -0000607127 00000 n -0000607185 00000 n -0000607355 00000 n -0000607524 00000 n -0000627973 00000 n -0000628270 00000 n -0000628445 00000 n -0000628609 00000 n -0000628773 00000 n -0000628831 00000 n -0000628889 00000 n -0000629060 00000 n -0000629231 00000 n -0000629394 00000 n -0000651222 00000 n -0000651503 00000 n -0000651658 00000 n -0000651802 00000 n -0000651847 00000 n -0000652018 00000 n -0000652193 00000 n -0000661973 00000 n -0000662238 00000 n -0000662295 00000 n -0000662464 00000 n -0000662633 00000 n -0000662777 00000 n -0000662922 00000 n -0000663087 00000 n -0000663243 00000 n -0000663401 00000 n -0000663548 00000 n -0000663710 00000 n -0000663852 00000 n -0000664017 00000 n -0000664161 00000 n -0000664318 00000 n -0000664464 00000 n -0000664620 00000 n -0000664765 00000 n -0000664920 00000 n -0000665064 00000 n -0000665223 00000 n -0000665371 00000 n -0000665529 00000 n -0000665676 00000 n -0000665831 00000 n -0000665976 00000 n -0000666136 00000 n -0000666285 00000 n -0000666443 00000 n -0000666590 00000 n -0000666745 00000 n -0000666890 00000 n -0000667059 00000 n -0000667207 00000 n -0000667368 00000 n -0000667518 00000 n -0000667674 00000 n -0000667820 00000 n -0000667978 00000 n -0000668125 00000 n -0000668316 00000 n -0000668486 00000 n -0000668646 00000 n -0000668795 00000 n -0000668955 00000 n -0000669104 00000 n -0000669295 00000 n -0000669465 00000 n -0000669636 00000 n -0000669786 00000 n -0000669945 00000 n -0000670093 00000 n -0000670253 00000 n -0000670402 00000 n -0000670573 00000 n -0000670734 00000 n -0000670904 00000 n -0000671053 00000 n -0000671212 00000 n -0000671360 00000 n -0000671517 00000 n -0000671664 00000 n -0000671824 00000 n -0000671973 00000 n -0000672140 00000 n -0000672286 00000 n -0000672458 00000 n -0000672609 00000 n -0000672770 00000 n -0000672920 00000 n -0000673079 00000 n -0000673227 00000 n -0000673419 00000 n -0000673600 00000 n -0000673770 00000 n -0000673919 00000 n -0000674066 00000 n -0000674202 00000 n -0000674349 00000 n -0000674485 00000 n -0000674639 00000 n +0000128005 00000 n +0000128178 00000 n +0000128233 00000 n +0000128408 00000 n +0000128452 00000 n +0000140633 00000 n +0000140894 00000 n +0000140937 00000 n +0000140992 00000 n +0000141035 00000 n +0000141207 00000 n +0000141262 00000 n +0000141437 00000 n +0000141493 00000 n +0000141548 00000 n +0000141603 00000 n +0000141659 00000 n +0000141714 00000 n +0000141872 00000 n +0000141927 00000 n +0000141983 00000 n +0000158343 00000 n +0000158617 00000 n +0000158660 00000 n +0000158814 00000 n +0000158869 00000 n +0000159025 00000 n +0000159080 00000 n +0000159136 00000 n +0000159191 00000 n +0000159246 00000 n +0000159301 00000 n +0000159611 00000 n +0000159920 00000 n +0000159975 00000 n +0000160031 00000 n +0000178188 00000 n +0000178469 00000 n +0000178512 00000 n +0000178668 00000 n +0000178723 00000 n +0000178778 00000 n +0000178833 00000 n +0000178987 00000 n +0000179042 00000 n +0000179198 00000 n +0000179254 00000 n +0000179310 00000 n +0000179365 00000 n +0000179420 00000 n +0000194743 00000 n +0000194993 00000 n +0000195036 00000 n +0000195091 00000 n +0000195146 00000 n +0000195201 00000 n +0000195257 00000 n +0000195312 00000 n +0000195368 00000 n +0000195424 00000 n +0000195480 00000 n +0000196149 00000 n +0000214016 00000 n +0000214283 00000 n +0000214327 00000 n +0000214382 00000 n +0000214695 00000 n +0000214750 00000 n +0000214912 00000 n +0000214968 00000 n +0000215023 00000 n +0000215078 00000 n +0000215133 00000 n +0000215189 00000 n +0000215245 00000 n +0000231409 00000 n +0000231684 00000 n +0000231727 00000 n +0000231888 00000 n +0000231944 00000 n +0000232000 00000 n +0000232056 00000 n +0000232113 00000 n +0000232275 00000 n +0000232331 00000 n +0000232388 00000 n +0000232445 00000 n +0000232502 00000 n +0000251626 00000 n +0000251912 00000 n +0000252064 00000 n +0000252121 00000 n +0000252178 00000 n +0000252235 00000 n +0000252293 00000 n +0000252715 00000 n +0000252878 00000 n +0000252935 00000 n +0000252993 00000 n +0000253051 00000 n +0000253109 00000 n +0000253272 00000 n +0000269554 00000 n +0000269824 00000 n +0000269869 00000 n +0000269926 00000 n +0000269983 00000 n +0000270040 00000 n +0000270097 00000 n +0000270397 00000 n +0000270454 00000 n +0000270512 00000 n +0000270570 00000 n +0000270734 00000 n +0000270791 00000 n +0000290488 00000 n +0000290782 00000 n +0000290827 00000 n +0000290873 00000 n +0000291028 00000 n +0000291085 00000 n +0000291248 00000 n +0000291305 00000 n +0000291362 00000 n +0000291420 00000 n +0000291477 00000 n +0000291642 00000 n +0000291699 00000 n +0000291876 00000 n +0000307386 00000 n +0000307664 00000 n +0000307709 00000 n +0000307766 00000 n +0000307823 00000 n +0000307880 00000 n +0000308038 00000 n +0000308095 00000 n +0000308258 00000 n +0000308316 00000 n +0000308779 00000 n +0000308836 00000 n +0000308894 00000 n +0000308951 00000 n +0000325425 00000 n +0000325703 00000 n +0000325748 00000 n +0000325910 00000 n +0000325967 00000 n +0000326024 00000 n +0000326081 00000 n +0000326242 00000 n +0000326299 00000 n +0000326356 00000 n +0000326414 00000 n +0000326471 00000 n +0000326529 00000 n +0000344640 00000 n +0000344918 00000 n +0000344963 00000 n +0000345009 00000 n +0000345066 00000 n +0000345225 00000 n +0000345282 00000 n +0000345340 00000 n +0000345397 00000 n +0000345455 00000 n +0000345857 00000 n +0000346018 00000 n +0000346076 00000 n +0000346134 00000 n +0000362705 00000 n +0000362983 00000 n +0000363028 00000 n +0000363074 00000 n +0000363244 00000 n +0000363301 00000 n +0000363653 00000 n +0000363710 00000 n +0000363767 00000 n +0000363824 00000 n +0000363882 00000 n +0000363939 00000 n +0000363996 00000 n +0000364167 00000 n +0000364225 00000 n +0000380362 00000 n +0000380619 00000 n +0000380664 00000 n +0000380721 00000 n +0000380767 00000 n +0000380944 00000 n +0000381002 00000 n +0000401355 00000 n +0000401620 00000 n +0000401784 00000 n +0000401842 00000 n +0000402025 00000 n +0000402082 00000 n +0000424068 00000 n +0000424357 00000 n +0000424414 00000 n +0000424582 00000 n +0000424749 00000 n +0000424919 00000 n +0000425091 00000 n +0000425251 00000 n +0000446818 00000 n +0000447091 00000 n +0000447148 00000 n +0000447317 00000 n +0000447486 00000 n +0000447655 00000 n +0000468873 00000 n +0000469138 00000 n +0000469289 00000 n +0000469428 00000 n +0000469486 00000 n +0000491197 00000 n +0000491486 00000 n +0000491654 00000 n +0000491801 00000 n +0000491950 00000 n +0000492101 00000 n +0000492240 00000 n +0000492298 00000 n +0000492848 00000 n +0000515593 00000 n +0000515882 00000 n +0000516050 00000 n +0000516197 00000 n +0000516346 00000 n +0000516497 00000 n +0000516636 00000 n +0000540028 00000 n +0000540333 00000 n +0000540390 00000 n +0000540560 00000 n +0000540731 00000 n +0000540899 00000 n +0000541072 00000 n +0000541251 00000 n +0000541413 00000 n +0000541591 00000 n +0000562286 00000 n +0000562551 00000 n +0000562608 00000 n +0000562777 00000 n +0000562966 00000 n +0000563024 00000 n +0000584729 00000 n +0000585002 00000 n +0000585165 00000 n +0000585222 00000 n +0000585409 00000 n +0000585571 00000 n +0000606379 00000 n +0000606660 00000 n +0000606717 00000 n +0000606892 00000 n +0000607064 00000 n +0000607122 00000 n +0000607292 00000 n +0000607461 00000 n +0000627744 00000 n +0000628033 00000 n +0000628208 00000 n +0000628372 00000 n +0000628536 00000 n +0000628594 00000 n +0000628652 00000 n +0000628823 00000 n +0000628994 00000 n +0000650522 00000 n +0000650803 00000 n +0000650946 00000 n +0000651121 00000 n +0000651285 00000 n +0000651331 00000 n +0000651502 00000 n +0000662703 00000 n +0000662976 00000 n +0000663131 00000 n +0000663188 00000 n +0000663337 00000 n +0000663486 00000 n +0000663630 00000 n +0000663775 00000 n +0000663940 00000 n +0000664096 00000 n +0000664254 00000 n +0000664401 00000 n +0000664563 00000 n +0000664705 00000 n +0000664870 00000 n +0000665014 00000 n +0000665171 00000 n +0000665317 00000 n +0000665473 00000 n +0000665618 00000 n +0000665773 00000 n +0000665917 00000 n +0000666076 00000 n +0000666224 00000 n +0000666382 00000 n +0000666529 00000 n +0000666684 00000 n +0000666829 00000 n +0000666989 00000 n +0000667138 00000 n +0000667296 00000 n +0000667443 00000 n +0000667598 00000 n +0000667743 00000 n +0000667912 00000 n +0000668060 00000 n +0000668221 00000 n +0000668371 00000 n +0000668527 00000 n +0000668673 00000 n +0000668831 00000 n +0000668978 00000 n +0000669169 00000 n +0000669339 00000 n +0000669499 00000 n +0000669648 00000 n +0000669808 00000 n +0000669957 00000 n +0000670148 00000 n +0000670318 00000 n +0000670489 00000 n +0000670639 00000 n +0000670798 00000 n +0000670946 00000 n +0000671106 00000 n +0000671255 00000 n +0000671426 00000 n +0000671587 00000 n +0000671757 00000 n +0000671906 00000 n +0000672065 00000 n +0000672213 00000 n +0000672370 00000 n +0000672517 00000 n +0000672677 00000 n +0000672826 00000 n +0000672993 00000 n +0000673139 00000 n +0000673311 00000 n +0000673462 00000 n +0000673623 00000 n +0000673773 00000 n +0000673932 00000 n +0000674080 00000 n +0000674272 00000 n +0000674453 00000 n +0000674623 00000 n 0000674772 00000 n -0000674931 00000 n -0000675069 00000 n -0000675228 00000 n -0000675377 00000 n -0000675539 00000 n -0000675682 00000 n -0000675852 00000 n -0000676001 00000 n -0000676160 00000 n -0000676309 00000 n -0000676478 00000 n -0000676626 00000 n -0000676780 00000 n -0000676923 00000 n -0000677082 00000 n -0000677231 00000 n -0000677400 00000 n -0000677548 00000 n -0000677702 00000 n -0000677846 00000 n -0000678016 00000 n -0000678165 00000 n -0000678325 00000 n -0000678475 00000 n -0000678645 00000 n -0000678794 00000 n -0000678949 00000 n -0000679093 00000 n -0000679263 00000 n -0000679412 00000 n -0000679571 00000 n -0000679720 00000 n -0000679890 00000 n -0000680039 00000 n -0000680206 00000 n -0000680352 00000 n -0000680524 00000 n -0000680675 00000 n -0000680834 00000 n -0000680983 00000 n -0000681152 00000 n -0000681300 00000 n -0000681455 00000 n -0000681600 00000 n -0000681772 00000 n -0000681923 00000 n -0000682083 00000 n -0000682233 00000 n -0000682402 00000 n -0000682550 00000 n -0000682717 00000 n -0000682863 00000 n -0000683036 00000 n -0000683188 00000 n -0000683349 00000 n -0000683500 00000 n -0000683671 00000 n -0000683821 00000 n -0000683976 00000 n -0000684121 00000 n -0000684294 00000 n -0000684446 00000 n -0000684607 00000 n -0000684758 00000 n -0000684928 00000 n -0000685077 00000 n -0000685238 00000 n -0000685380 00000 n -0000685551 00000 n -0000685701 00000 n -0000685848 00000 n -0000685985 00000 n -0000686143 00000 n -0000686280 00000 n -0000686431 00000 n +0000674919 00000 n +0000675055 00000 n +0000675202 00000 n +0000675338 00000 n +0000675492 00000 n +0000675625 00000 n +0000675784 00000 n +0000675922 00000 n +0000676081 00000 n +0000676230 00000 n +0000676393 00000 n +0000676537 00000 n +0000676707 00000 n +0000676856 00000 n +0000677015 00000 n +0000677164 00000 n +0000677333 00000 n +0000677481 00000 n +0000677636 00000 n +0000677780 00000 n +0000677939 00000 n +0000678088 00000 n +0000678257 00000 n +0000678405 00000 n +0000678559 00000 n +0000678703 00000 n +0000678873 00000 n +0000679022 00000 n +0000679182 00000 n +0000679332 00000 n +0000679502 00000 n +0000679651 00000 n +0000679807 00000 n +0000679952 00000 n +0000680122 00000 n +0000680271 00000 n +0000680430 00000 n +0000680579 00000 n +0000680749 00000 n +0000680898 00000 n +0000681065 00000 n +0000681211 00000 n +0000681383 00000 n +0000681534 00000 n +0000681693 00000 n +0000681842 00000 n +0000682011 00000 n +0000682159 00000 n +0000682314 00000 n +0000682459 00000 n +0000682631 00000 n +0000682782 00000 n +0000682942 00000 n +0000683092 00000 n +0000683261 00000 n +0000683409 00000 n +0000683576 00000 n +0000683722 00000 n +0000683895 00000 n +0000684047 00000 n +0000684208 00000 n +0000684359 00000 n +0000684530 00000 n +0000684680 00000 n +0000684836 00000 n +0000684982 00000 n +0000685155 00000 n +0000685307 00000 n +0000685468 00000 n +0000685619 00000 n +0000685789 00000 n +0000685938 00000 n +0000686099 00000 n +0000686241 00000 n +0000686412 00000 n 0000686562 00000 n -0000686722 00000 n -0000686860 00000 n -0000687019 00000 n -0000687167 00000 n -0000687325 00000 n -0000687471 00000 n -0000687640 00000 n -0000687787 00000 n -0000687951 00000 n -0000688093 00000 n -0000688264 00000 n -0000688413 00000 n -0000688572 00000 n -0000688720 00000 n -0000688878 00000 n -0000689024 00000 n -0000689193 00000 n -0000689340 00000 n -0000689501 00000 n -0000689643 00000 n -0000689814 00000 n -0000689963 00000 n -0000690123 00000 n -0000690272 00000 n -0000690431 00000 n -0000690578 00000 n -0000690748 00000 n -0000690896 00000 n -0000691050 00000 n -0000691192 00000 n -0000691363 00000 n -0000691512 00000 n -0000691672 00000 n -0000691821 00000 n -0000691992 00000 n -0000692141 00000 n -0000692305 00000 n -0000692449 00000 n -0000692608 00000 n -0000692756 00000 n -0000692925 00000 n -0000693072 00000 n -0000693274 00000 n -0000693456 00000 n -0000693628 00000 n -0000693778 00000 n -0000693938 00000 n -0000694087 00000 n -0000694256 00000 n -0000694403 00000 n -0000694603 00000 n -0000694781 00000 n -0000694954 00000 n -0000695105 00000 n -0000695266 00000 n -0000695416 00000 n -0000695587 00000 n -0000695736 00000 n -0000695903 00000 n -0000696048 00000 n -0000696221 00000 n -0000696372 00000 n -0000696533 00000 n -0000696683 00000 n -0000696842 00000 n -0000696989 00000 n -0000697156 00000 n -0000697301 00000 n -0000697456 00000 n -0000697599 00000 n -0000697746 00000 n -0000697882 00000 n -0000698040 00000 n -0000698176 00000 n -0000698334 00000 n -0000698481 00000 n -0000698629 00000 n -0000698766 00000 n -0000698935 00000 n -0000699082 00000 n -0000699269 00000 n -0000699434 00000 n -0000699605 00000 n -0000699754 00000 n -0000699913 00000 n -0000700061 00000 n -0000700230 00000 n -0000700377 00000 n -0000700546 00000 n -0000700693 00000 n -0000700866 00000 n -0000701017 00000 n -0000701175 00000 n -0000701321 00000 n -0000701486 00000 n -0000701639 00000 n -0000701803 00000 n -0000701956 00000 n -0000702137 00000 n -0000702296 00000 n -0000702464 00000 n -0000702610 00000 n -0000702777 00000 n -0000702922 00000 n -0000703090 00000 n -0000703236 00000 n -0000703396 00000 n -0000703545 00000 n -0000703708 00000 n -0000703849 00000 n -0000704014 00000 n -0000704168 00000 n -0000704334 00000 n -0000704478 00000 n -0000704648 00000 n -0000704796 00000 n -0000704980 00000 n -0000705144 00000 n -0000705321 00000 n -0000705476 00000 n -0000705641 00000 n -0000705784 00000 n -0000705960 00000 n -0000706114 00000 n -0000706283 00000 n -0000706430 00000 n -0000706597 00000 n -0000706742 00000 n -0000707027 00000 n -0000707106 00000 n -0000707270 00000 n -0000707461 00000 n -0000707689 00000 n -0000707906 00000 n -0000708076 00000 n -0000708294 00000 n -0000708540 00000 n -0000708713 00000 n -0000708894 00000 n -0000709159 00000 n -0000709344 00000 n -0000709525 00000 n -0000709782 00000 n -0000709967 00000 n -0000710148 00000 n -0000710405 00000 n -0000710582 00000 n -0000710781 00000 n -0000710976 00000 n -0000711158 00000 n -0000711478 00000 n -0000711663 00000 n -0000711844 00000 n -0000712168 00000 n -0000712358 00000 n -0000712545 00000 n -0000712726 00000 n -0000713010 00000 n -0000713199 00000 n -0000713398 00000 n -0000713594 00000 n -0000713776 00000 n -0000714072 00000 n -0000714261 00000 n -0000714448 00000 n -0000714629 00000 n -0000715009 00000 n -0000715198 00000 n -0000715398 00000 n -0000715579 00000 n -0000715888 00000 n -0000716082 00000 n -0000716272 00000 n -0000716569 00000 n -0000716762 00000 n -0000716965 00000 n -0000717151 00000 n -0000717435 00000 n -0000717624 00000 n -0000717809 00000 n -0000718130 00000 n -0000718324 00000 n -0000718515 00000 n -0000718700 00000 n -0000719084 00000 n -0000719277 00000 n -0000719481 00000 n -0000719666 00000 n -0000719979 00000 n -0000720173 00000 n -0000720377 00000 n -0000720563 00000 n -0000720864 00000 n -0000721058 00000 n -0000721263 00000 n -0000721449 00000 n -0000721759 00000 n -0000721954 00000 n -0000722159 00000 n -0000722333 00000 n -0000722686 00000 n -0000722880 00000 n -0000723084 00000 n -0000723270 00000 n -0000723587 00000 n -0000723782 00000 n -0000723987 00000 n -0000724173 00000 n -0000724538 00000 n -0000724721 00000 n -0000724925 00000 n -0000725125 00000 n -0000725311 00000 n -0000725697 00000 n -0000725891 00000 n -0000726095 00000 n -0000726283 00000 n -0000726469 00000 n -0000726858 00000 n -0000727052 00000 n -0000727256 00000 n -0000727457 00000 n -0000727643 00000 n -0000727925 00000 n -0000728119 00000 n -0000728311 00000 n -0000728497 00000 n -0000728786 00000 n -0000728976 00000 n -0000729162 00000 n -0000729543 00000 n -0000729738 00000 n -0000729942 00000 n -0000730129 00000 n -0000730478 00000 n -0000730661 00000 n -0000730865 00000 n -0000731051 00000 n -0000731413 00000 n -0000731607 00000 n -0000731812 00000 n -0000732013 00000 n -0000732200 00000 n -0000732445 00000 n -0000732624 00000 n -0000732810 00000 n -0000733091 00000 n -0000733281 00000 n -0000733467 00000 n -0000733771 00000 n -0000733965 00000 n -0000734169 00000 n -0000734356 00000 n -0000734584 00000 n -0000734786 00000 n -0000734971 00000 n -0000735196 00000 n -0000735421 00000 n -0000735665 00000 n -0000735857 00000 n -0000736045 00000 n -0000736242 00000 n -0000736451 00000 n -0000736627 00000 n -0000736851 00000 n -0000737040 00000 n -0000737248 00000 n -0000737520 00000 n -0000737753 00000 n -0000737938 00000 n -0000738167 00000 n -0000738359 00000 n -0000738533 00000 n -0000739088 00000 n -0000746956 00000 n -0000747172 00000 n -0000748535 00000 n -0000749604 00000 n -0000757210 00000 n -0000757431 00000 n -0000758794 00000 n -0000759873 00000 n -0000763134 00000 n -0000763360 00000 n -0000764723 00000 n -0000765839 00000 n -0000768042 00000 n -0000768256 00000 n -0000769619 00000 n +0000686709 00000 n +0000686846 00000 n +0000687004 00000 n +0000687141 00000 n +0000687293 00000 n +0000687425 00000 n +0000687585 00000 n +0000687723 00000 n +0000687882 00000 n +0000688030 00000 n +0000688188 00000 n +0000688334 00000 n +0000688503 00000 n +0000688650 00000 n +0000688815 00000 n +0000688958 00000 n +0000689129 00000 n +0000689278 00000 n +0000689437 00000 n +0000689585 00000 n +0000689743 00000 n +0000689889 00000 n +0000690058 00000 n +0000690205 00000 n +0000690367 00000 n +0000690510 00000 n +0000690681 00000 n +0000690830 00000 n +0000690990 00000 n +0000691139 00000 n +0000691298 00000 n +0000691445 00000 n +0000691615 00000 n +0000691763 00000 n +0000691918 00000 n +0000692061 00000 n +0000692232 00000 n +0000692381 00000 n +0000692541 00000 n +0000692690 00000 n +0000692861 00000 n +0000693010 00000 n +0000693174 00000 n +0000693318 00000 n +0000693477 00000 n +0000693625 00000 n +0000693794 00000 n +0000693941 00000 n +0000694143 00000 n +0000694325 00000 n +0000694497 00000 n +0000694647 00000 n +0000694807 00000 n +0000694956 00000 n +0000695125 00000 n +0000695272 00000 n +0000695472 00000 n +0000695650 00000 n +0000695823 00000 n +0000695974 00000 n +0000696135 00000 n +0000696285 00000 n +0000696456 00000 n +0000696605 00000 n +0000696772 00000 n +0000696917 00000 n +0000697090 00000 n +0000697241 00000 n +0000697402 00000 n +0000697552 00000 n +0000697711 00000 n +0000697858 00000 n +0000698025 00000 n +0000698170 00000 n +0000698325 00000 n +0000698468 00000 n +0000698615 00000 n +0000698751 00000 n +0000698909 00000 n +0000699045 00000 n +0000699203 00000 n +0000699350 00000 n +0000699498 00000 n +0000699635 00000 n +0000699804 00000 n +0000699951 00000 n +0000700138 00000 n +0000700303 00000 n +0000700474 00000 n +0000700623 00000 n +0000700782 00000 n +0000700930 00000 n +0000701099 00000 n +0000701246 00000 n +0000701415 00000 n +0000701562 00000 n +0000701735 00000 n +0000701886 00000 n +0000702044 00000 n +0000702190 00000 n +0000702355 00000 n +0000702508 00000 n +0000702672 00000 n +0000702825 00000 n +0000703006 00000 n +0000703165 00000 n +0000703333 00000 n +0000703479 00000 n +0000703646 00000 n +0000703791 00000 n +0000703959 00000 n +0000704105 00000 n +0000704265 00000 n +0000704414 00000 n +0000704577 00000 n +0000704718 00000 n +0000704883 00000 n +0000705037 00000 n +0000705203 00000 n +0000705347 00000 n +0000705517 00000 n +0000705665 00000 n +0000705849 00000 n +0000706013 00000 n +0000706190 00000 n +0000706345 00000 n +0000706510 00000 n +0000706653 00000 n +0000706829 00000 n +0000706983 00000 n +0000707152 00000 n +0000707299 00000 n +0000707466 00000 n +0000707611 00000 n +0000707896 00000 n +0000707975 00000 n +0000708139 00000 n +0000708330 00000 n +0000708558 00000 n +0000708775 00000 n +0000708945 00000 n +0000709163 00000 n +0000709409 00000 n +0000709582 00000 n +0000709763 00000 n +0000710028 00000 n +0000710213 00000 n +0000710394 00000 n +0000710651 00000 n +0000710836 00000 n +0000711017 00000 n +0000711274 00000 n +0000711451 00000 n +0000711650 00000 n +0000711845 00000 n +0000712027 00000 n +0000712347 00000 n +0000712532 00000 n +0000712713 00000 n +0000713037 00000 n +0000713227 00000 n +0000713414 00000 n +0000713595 00000 n +0000713879 00000 n +0000714068 00000 n +0000714267 00000 n +0000714463 00000 n +0000714645 00000 n +0000714941 00000 n +0000715130 00000 n +0000715317 00000 n +0000715498 00000 n +0000715878 00000 n +0000716067 00000 n +0000716267 00000 n +0000716448 00000 n +0000716757 00000 n +0000716951 00000 n +0000717141 00000 n +0000717438 00000 n +0000717631 00000 n +0000717834 00000 n +0000718020 00000 n +0000718304 00000 n +0000718493 00000 n +0000718678 00000 n +0000718999 00000 n +0000719193 00000 n +0000719384 00000 n +0000719569 00000 n +0000719953 00000 n +0000720146 00000 n +0000720350 00000 n +0000720535 00000 n +0000720848 00000 n +0000721042 00000 n +0000721246 00000 n +0000721432 00000 n +0000721733 00000 n +0000721927 00000 n +0000722132 00000 n +0000722318 00000 n +0000722628 00000 n +0000722823 00000 n +0000723028 00000 n +0000723202 00000 n +0000723555 00000 n +0000723749 00000 n +0000723953 00000 n +0000724139 00000 n +0000724456 00000 n +0000724651 00000 n +0000724856 00000 n +0000725042 00000 n +0000725407 00000 n +0000725590 00000 n +0000725794 00000 n +0000725994 00000 n +0000726180 00000 n +0000726566 00000 n +0000726760 00000 n +0000726964 00000 n +0000727152 00000 n +0000727338 00000 n +0000727727 00000 n +0000727921 00000 n +0000728125 00000 n +0000728326 00000 n +0000728512 00000 n +0000728794 00000 n +0000728988 00000 n +0000729180 00000 n +0000729366 00000 n +0000729655 00000 n +0000729845 00000 n +0000730031 00000 n +0000730412 00000 n +0000730607 00000 n +0000730811 00000 n +0000730998 00000 n +0000731347 00000 n +0000731530 00000 n +0000731734 00000 n +0000731920 00000 n +0000732282 00000 n +0000732476 00000 n +0000732681 00000 n +0000732882 00000 n +0000733069 00000 n +0000733314 00000 n +0000733493 00000 n +0000733679 00000 n +0000733960 00000 n +0000734150 00000 n +0000734336 00000 n +0000734640 00000 n +0000734834 00000 n +0000735038 00000 n +0000735225 00000 n +0000735453 00000 n +0000735655 00000 n +0000735840 00000 n +0000736065 00000 n +0000736290 00000 n +0000736534 00000 n +0000736726 00000 n +0000736914 00000 n +0000737111 00000 n +0000737320 00000 n +0000737496 00000 n +0000737720 00000 n +0000737909 00000 n +0000738117 00000 n +0000738389 00000 n +0000738622 00000 n +0000738807 00000 n +0000739036 00000 n +0000739229 00000 n +0000739403 00000 n +0000739958 00000 n +0000747826 00000 n +0000748042 00000 n +0000749405 00000 n +0000750474 00000 n +0000758080 00000 n +0000758301 00000 n +0000759664 00000 n +0000760743 00000 n +0000764004 00000 n +0000764230 00000 n +0000765593 00000 n +0000766709 00000 n +0000768912 00000 n +0000769126 00000 n +0000770489 00000 n trailer -<< /Size 751 +<< /Size 750 /Root 2 0 R /Info 1 0 R >> startxref -770744 +771614 %%EOF diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql index 2a7f4c1cc..b4c5bf309 100644 --- a/extra/sql/bulkload/create-tables.sql +++ b/extra/sql/bulkload/create-tables.sql @@ -143,9 +143,9 @@ pdp_group varchar(255), pdp_sub_group varchar(255), loop_element_model_id varchar(255), - loop_id varchar(255) not null, policy_model_type varchar(255), policy_model_version varchar(255), + loop_id varchar(255) not null, primary key (name) ) engine=InnoDB; @@ -247,11 +247,11 @@ references loop_element_models (name); alter table operational_policies - add constraint FK1ddoggk9ni2bnqighv6ecmuwu - foreign key (loop_id) - references loops (name); - - alter table operational_policies add constraint FKlsyhfkoqvkwj78ofepxhoctip foreign key (policy_model_type, policy_model_version) references policy_models (policy_model_type, version); + + alter table operational_policies + add constraint FK1ddoggk9ni2bnqighv6ecmuwu + foreign key (loop_id) + references loops (name); diff --git a/extra/sql/dump/test-data.sql b/extra/sql/dump/test-data.sql index 41ca89a70..1dfa208a9 100644 --- a/extra/sql/dump/test-data.sql +++ b/extra/sql/dump/test-data.sql @@ -63,7 +63,7 @@ UNLOCK TABLES; LOCK TABLES `loop_element_models` WRITE; /*!40000 ALTER TABLE `loop_element_models` DISABLE KEYS */; -INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-02-27 15:08:46.764261','Not found','2020-02-27 15:08:48.172681',NULL,NULL,'MICRO_SERVICE_TYPE',NULL); +INSERT INTO `loop_element_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app',NULL,'2020-03-02 13:24:51.453602','Not found','2020-03-02 13:24:52.167202',NULL,NULL,'MICRO_SERVICE_TYPE',NULL); /*!40000 ALTER TABLE `loop_element_models` ENABLE KEYS */; UNLOCK TABLES; @@ -82,9 +82,9 @@ UNLOCK TABLES; LOCK TABLES `loop_templates` WRITE; /*!40000 ALTER TABLE `loop_templates` DISABLE KEYS */; -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName1_tca','Not found','2020-02-27 15:08:47.793512','Not found','2020-02-27 15:08:47.793512','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-49bf6c16-46a7-4962-a667-8be63b66f549',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-1a5feff5-6b1c-4099-9abe-991ed90d0385\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-3ce74d04-7349-4318-ac9e-7e002fe56ec0\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-ae12f7f4-adf7-40d7-86d5-8e5d28171a89\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName1_tca_3','Not found','2020-02-27 15:08:47.303168','Not found','2020-02-27 15:08:47.303168','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-41007420-32ac-4d57-8541-12faa3554315',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-5b934835-48c1-42f0-aad0-36908cbea8d3\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-b0f3df35-6549-4de0-95d3-f274ed3e16f3\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-d73cb3bb-6f38-4edd-89a9-004c3fb11c01\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); -INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName2_tca_2','Not found','2020-02-27 15:08:46.692894','Not found','2020-02-27 15:08:46.692894','CLOSED','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-e3a75307-db43-4d5a-869d-75ff38d86dda',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-d29c82c3-4632-4f4a-8817-19b82649e34c\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-a05e8625-c40d-4d24-b50c-2c65734399ea\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-412a95e2-554a-4f62-9887-21105c8d0bb8\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName1_tca','Not found','2020-03-02 13:24:52.069749','Not found','2020-03-02 13:24:52.069749','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\nimports:\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\ninputs:\n location_id:\n type: string\n service_id:\n type: string\n policy_id:\n type: string\nnode_templates:\n policy_0:\n type: dcae.nodes.policy\n properties:\n policy_id: \n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n cdap_host_host:\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\n properties:\n location_id:\n get_input: location_id\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\n interfaces:\n cloudify.interfaces.lifecycle: {\n }\n tca_tca:\n type: dcae.nodes.MicroService.cdap\n properties:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n publisherContentType: application/json\n publisherHostName: mrlocal-mtnjftle01.onap.org\n publisherHostPort: \'3905\'\n publisherMaxBatchSize: \'10\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: https\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\n publisherUserName: test@tca.af.dcae.onap.org\n publisherUserPassword: password\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName: mrlocal-mtnjftle01.onap.org\n subscriberHostPort: \'3905\'\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'20000\'\n subscriberProtocol: https\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\n subscriberUserName: test@tca.af.dcae.onap.org\n subscriberUserPassword: password\n tca_policy: null\n artifact_name: dcae-analytics-tca\n artifact_version: 1.0.0\n connections:\n streams_publishes: [\n ]\n streams_subscribes: [\n ]\n jar_url: http://somejar\n location_id:\n get_input: location_id\n namespace: cdap_tca_hi_lo\n programs:\n - program_id: TCAVESCollectorFlow\n program_type: flows\n - program_id: TCADMaaPMRSubscriberWorker\n program_type: workers\n - program_id: TCADMaaPMRPublisherWorker\n program_type: workers\n service_component_type: cdap_app_tca\n service_id:\n get_input: service_id\n streamname: TCASubscriberOutputStream\n relationships:\n - target: topic0\n type: dcae.relationships.subscribe_to_events\n - target: topic1\n type: dcae.relationships.publish_events\n - target: cdap_host_host\n type: dcae.relationships.component_contained_in\n - target: policy_0\n type: dcae.relationships.depends_on\n topic0:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n topic1:\n type: dcae.nodes.Topic\n properties:\n topic_name: \'\'\n \n','typeId-7f559db8-bce7-4ae8-af3a-a0601330ef61',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-3fc207ac-7b3a-44ce-9a3e-a498b5397b53\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-9a3a9505-ffa6-4c23-b5a1-1a87ce04e748\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-ec28bc33-e13a-4c46-95ab-73ee067cb9bd\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName1_tca_3','Not found','2020-03-02 13:24:51.821227','Not found','2020-03-02 13:24:51.821227','CLOSED','tosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap.svc.cluster.local\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest\"\n consul_host:\n type: string\n default: consul-server.onap.svc.cluster.local\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-service.dcae.svc.cluster.local\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"none\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-c12\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n tca_policy: \'\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: dcae.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \n get_input: policy_model_id\n','typeId-4ccd66a3-88f2-4882-97bd-867590f69092',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-357046a5-ae45-46b4-88cc-cae1606e06d7\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-62ca7302-7e01-4875-9523-d16196a5b850\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-a2d73510-27f4-426a-8ad1-e3c6f48b11a4\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); +INSERT INTO `loop_templates` VALUES ('LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName2_tca_2','Not found','2020-03-02 13:24:51.431617','Not found','2020-03-02 13:24:51.431617','CLOSED','#\n# ============LICENSE_START====================================================\n# =============================================================================\n# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.\n# =============================================================================\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n# ============LICENSE_END======================================================\n\ntosca_definitions_version: cloudify_dsl_1_3\n\ndescription: >\n This blueprint deploys/manages the TCA module as a Docker container\n\nimports:\n - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml\n# - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml\n - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml\ninputs:\n aaiEnrichmentHost:\n type: string\n default: \"aai.onap.svc.cluster.local\"\n aaiEnrichmentPort:\n type: string\n default: \"8443\"\n enableAAIEnrichment:\n type: string\n default: true\n dmaap_host:\n type: string\n default: message-router.onap\n dmaap_port:\n type: string\n default: \"3904\"\n enableRedisCaching:\n type: string\n default: false\n redisHosts:\n type: string\n default: dcae-redis.onap.svc.cluster.local:6379\n tag_version:\n type: string\n default: \"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1\"\n consul_host:\n type: string\n default: consul-server.onap\n consul_port:\n type: string\n default: \"8500\"\n cbs_host:\n type: string\n default: \"config-binding-servicel\"\n cbs_port:\n type: string\n default: \"10000\"\n policy_id:\n type: string\n default: \"onap.restart.tca\"\n external_port:\n type: string\n description: Kubernetes node port on which CDAPgui is exposed\n default: \"32012\"\n policy_model_id:\n type: string\n default: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\nnode_templates:\n tca_k8s:\n type: dcae.nodes.ContainerizedServiceComponent\n relationships:\n - target: tca_policy\n type: cloudify.relationships.depends_on\n properties:\n service_component_type: \'dcaegen2-analytics-tca\'\n application_config: {}\n docker_config: {}\n image:\n get_input: tag_version\n log_info:\n log_directory: \"/opt/app/TCAnalytics/logs\"\n application_config:\n app_config:\n appDescription: DCAE Analytics Threshold Crossing Alert Application\n appName: dcae-tca\n tcaAlertsAbatementTableName: TCAAlertsAbatementTable\n tcaAlertsAbatementTableTTLSeconds: \'1728000\'\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\n tcaVESAlertsTableName: TCAVESAlertsTable\n tcaVESAlertsTableTTLSeconds: \'1728000\'\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\n tcaVESMessageStatusTableTTLSeconds: \'86400\'\n thresholdCalculatorFlowletInstances: \'2\'\n app_preferences:\n aaiEnrichmentHost:\n get_input: aaiEnrichmentHost\n aaiEnrichmentIgnoreSSLCertificateErrors: \'true\'\n aaiEnrichmentPortNumber: \'8443\'\n aaiEnrichmentProtocol: https\n aaiEnrichmentUserName: dcae@dcae.onap.org\n aaiEnrichmentUserPassword: demo123456!\n aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query\n aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf\n enableAAIEnrichment:\n get_input: enableAAIEnrichment\n enableRedisCaching:\n get_input: enableRedisCaching\n redisHosts:\n get_input: redisHosts\n enableAlertCEFFormat: \'false\'\n publisherContentType: application/json\n publisherHostName:\n get_input: dmaap_host\n publisherHostPort:\n get_input: dmaap_port\n publisherMaxBatchSize: \'1\'\n publisherMaxRecoveryQueueSize: \'100000\'\n publisherPollingInterval: \'20000\'\n publisherProtocol: http\n publisherTopicName: unauthenticated.DCAE_CL_OUTPUT\n subscriberConsumerGroup: OpenDCAE-clamp\n subscriberConsumerId: c12\n subscriberContentType: application/json\n subscriberHostName:\n get_input: dmaap_host\n subscriberHostPort:\n get_input: dmaap_port\n subscriberMessageLimit: \'-1\'\n subscriberPollingInterval: \'30000\'\n subscriberProtocol: http\n subscriberTimeoutMS: \'-1\'\n subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT\n# tca_policy: \'{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":700,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\",\"thresholdValue\":300,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]},{\"eventName\":\"Measurement_vGMUX\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"DCAE.Config_tca-hi-lo\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ABATED\"},{\"closedLoopControlName\":\"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\",\"thresholdValue\":0,\"direction\":\"GREATER\",\"severity\":\"CRITICAL\",\"closedLoopEventStatus\":\"ONSET\"}]}]}\'\n service_component_type: dcaegen2-analytics_tca\n interfaces:\n cloudify.interfaces.lifecycle:\n start:\n inputs:\n envs:\n DMAAPHOST:\n { get_input: dmaap_host }\n DMAAPPORT:\n { get_input: dmaap_port }\n DMAAPPUBTOPIC: \"unauthenticated.DCAE_CL_OUTPUT\"\n DMAAPSUBTOPIC: \"unauthenticated.VES_MEASUREMENT_OUTPUT\"\n AAIHOST:\n { get_input: aaiEnrichmentHost }\n AAIPORT:\n { get_input: aaiEnrichmentPort }\n CONSUL_HOST:\n { get_input: consul_host }\n CONSUL_PORT:\n { get_input: consul_port }\n CBS_HOST:\n { get_input: cbs_host }\n CBS_PORT:\n { get_input: cbs_port }\n CONFIG_BINDING_SERVICE: \"config_binding_service\"\n ports:\n - concat: [\"11011:\", { get_input: external_port }]\n tca_policy:\n type: clamp.nodes.policy\n properties:\n policy_id:\n get_input: policy_id\n policy_model_id: \"onap.policies.monitoring.cdap.tca.hi.lo.app\"\n','typeId-4d04b1b1-9331-47c5-88ad-9ae89c231b97',0,'<svg xmlns=\"http://www.w3.org/2000/svg\"><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"start-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><circle fill=\"none\" r=\"17\" cx=\"18\" cy=\"41\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-550c063a-9a2f-46a9-9063-546d3a84f5f4\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"35\" x2=\"123\" y1=\"41\"/><polygon fill=\"none\" points=\" 121 39 121 43 125 41\"/><polygon points=\" 121 39 121 43 125 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"VES\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"127\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"127\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"177.5\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">VES</text><line y2=\"83\" fill=\"none\" x1=\"147\" x2=\"147\" y1=\"1\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-96cea148-fd6d-4ebf-96e4-eb88d47906b5\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"250\" x2=\"338\" y1=\"41\"/><polygon fill=\"none\" points=\" 336 39 336 43 340 41\"/><polygon points=\" 336 39 336 43 340 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"onap.policies.monitoring.cdap.tca.hi.lo.app\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><rect fill=\"none\" x=\"342\" width=\"123\" y=\"1\" height=\"82\"/></g><g fill-opacity=\"0\" fill=\"rgb(0,0,0)\" text-rendering=\"optimizeQuality\" shape-rendering=\"geometricPrecision\" stroke=\"rgb(0,0,0)\" stroke-opacity=\"0\" stroke-width=\"2\"><rect x=\"342\" width=\"123\" y=\"1\" height=\"82\" stroke=\"none\"/></g><g text-rendering=\"optimizeQuality\" stroke-width=\"2\" shape-rendering=\"geometricPrecision\" font-family=\"sans-serif\"><text x=\"393\" xml:space=\"preserve\" y=\"46.5\" stroke=\"none\">app</text><line y2=\"61\" fill=\"none\" x1=\"342\" x2=\"465\" y1=\"61\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"Arrow-3fd9565f-388c-4922-ba53-38663f82267c\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"2\"><line y2=\"41\" fill=\"none\" x1=\"465\" x2=\"553\" y1=\"41\"/><polygon fill=\"none\" points=\" 551 39 551 43 555 41\"/><polygon points=\" 551 39 551 43 555 41\" stroke=\"none\"/></g></g></g><g fill-opacity=\"1\" color-rendering=\"auto\" color-interpolation=\"auto\" text-rendering=\"auto\" stroke=\"black\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" shape-rendering=\"auto\" stroke-opacity=\"1\" fill=\"black\" stroke-dasharray=\"none\" font-weight=\"normal\" stroke-width=\"1\" font-family=\"\'Dialog\'\" font-style=\"normal\" data-element-id=\"stop-circle\" stroke-linejoin=\"miter\" font-size=\"12px\" image-rendering=\"auto\" stroke-dashoffset=\"0\"><!--Generated by the Batik Graphics2D SVG Generator--><defs id=\"genericDefs\"/><g><g shape-rendering=\"geometricPrecision\" text-rendering=\"optimizeQuality\" stroke-width=\"4\"><circle fill=\"none\" r=\"17\" cx=\"574\" cy=\"41\"/></g></g></g></svg>',1,'63cac700-ab9a-4115-a74f-7eac85e3fce0'); /*!40000 ALTER TABLE `loop_templates` ENABLE KEYS */; UNLOCK TABLES; @@ -122,9 +122,9 @@ UNLOCK TABLES; LOCK TABLES `looptemplates_to_loopelementmodels` WRITE; /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` DISABLE KEYS */; -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName1_tca',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName1_tca_3',0); -INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_lCoAC_v1_0_ResourceInstanceName2_tca_2',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName1_tca',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName1_tca_3',0); +INSERT INTO `looptemplates_to_loopelementmodels` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','LOOP_TEMPLATE_OlECc_v1_0_ResourceInstanceName2_tca_2',0); /*!40000 ALTER TABLE `looptemplates_to_loopelementmodels` ENABLE KEYS */; UNLOCK TABLES; @@ -152,15 +152,13 @@ UNLOCK TABLES; LOCK TABLES `policy_models` WRITE; /*!40000 ALTER TABLE `policy_models` DISABLE KEYS */; -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.Guard','1.0.0','Not found','2020-02-27 15:09:20.557489','Not found','2020-02-27 15:09:21.051644','Guard','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"xacml\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.Blacklist','1.0.0','Not found','2020-02-27 15:09:20.518533','Not found','2020-02-27 15:09:20.518533','Blacklist','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.FrequencyLimiter','1.0.0','Not found','2020-02-27 15:09:20.386878','Not found','2020-02-27 15:09:20.386878','FrequencyLimiter','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.MinMax','1.0.0','Not found','2020-02-27 15:09:20.483188','Not found','2020-02-27 15:09:20.483188','MinMax','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.Operational','1.0.0','Not found','2020-02-27 15:09:20.358225','Not found','2020-02-27 15:09:21.072743','Operational','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n','{\n \"supportedPdpGroups\": [\n {\n \"controlloop\": [\n \"apex\",\n \"drools\"\n ]\n }\n ]\n}'); -INSERT INTO `policy_models` VALUES ('onap.policies.controloop.operational.Apex','1.0.0','Not found','2020-02-27 15:09:20.354431','Not found','2020-02-27 15:09:20.354431','Apex','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.controloop.operational.Drools','1.0.0','Not found','2020-02-27 15:09:20.354507','Not found','2020-02-27 15:09:20.354507','Drools','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.Monitoring','1.0.0','Not found','2020-02-27 15:09:20.514460','Not found','2020-02-27 15:09:20.514460','Monitoring','',NULL); -INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0','Not found','2020-02-27 15:08:46.796072','Not found','2020-02-27 15:09:21.107687','app','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n description: a base policy type for all policies that governs monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold\n','{\n \"supportedPdpGroups\": [\n {\n \"monitoring\": [\n \"xacml\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.Blacklist','1.0.0','Not found','2020-03-02 13:25:10.047752','Not found','2020-03-02 13:25:10.047752','Blacklist','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.controlloop.Guard:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: Guard Policies for Control Loop Operational Policies\n onap.policies.controlloop.guard.Blacklist:\n derived_from: onap.policies.controlloop.Guard\n version: 1.0.0\n description: Supports blacklist of VNF\'s from performing control loop actions on.\n properties:\n blacklist_policy:\n type: map\n description: null\n entry_schema:\n type: onap.datatypes.guard.Blacklist\ndata_types:\n onap.datatypes.guard.Blacklist:\n derived_from: tosca.datatypes.Root\n properties:\n actor:\n type: string\n description: Specifies the Actor\n required: true\n recipe:\n type: string\n description: Specified the Recipe\n required: true\n time_range:\n type: tosca.datatypes.TimeInterval\n description: An optional range of time during the day the blacklist is valid for.\n required: false\n controlLoopName:\n type: string\n description: An optional specific control loop to apply this guard to.\n required: false\n blacklist:\n type: list\n description: List of VNF\'s\n required: true',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.FrequencyLimiter','1.0.0','Not found','2020-03-02 13:25:09.987158','Not found','2020-03-02 13:25:09.987158','FrequencyLimiter','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.controlloop.Guard:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: Guard Policies for Control Loop Operational Policies\n onap.policies.controlloop.guard.FrequencyLimiter:\n derived_from: onap.policies.controlloop.Guard\n version: 1.0.0\n description: Supports limiting the frequency of actions being taken by a Actor.\n properties:\n frequency_policy:\n type: map\n description: null\n entry_schema:\n type: onap.datatypes.guard.FrequencyLimiter\ndata_types:\n onap.datatypes.guard.FrequencyLimiter:\n derived_from: tosca.datatypes.Root\n properties:\n actor:\n type: string\n description: Specifies the Actor\n required: true\n recipe:\n type: string\n description: Specified the Recipe\n required: true\n time_window:\n type: scalar-unit.time\n description: The time window to count the actions against.\n required: true\n limit:\n type: integer\n description: The limit\n required: true\n constraints:\n - greater_than: 0\n time_range:\n type: tosca.datatypes.TimeInterval\n description: An optional range of time during the day the frequency is valid for.\n required: false\n controlLoopName:\n type: string\n description: An optional specific control loop to apply this guard to.\n required: false\n target:\n type: string\n description: An optional specific VNF to apply this guard to.\n required: false',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.guard.MinMax','2.0.0','Not found','2020-03-02 13:25:09.987757','Not found','2020-03-02 13:25:09.987757','MinMax','',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.Apex','1.0.0','Not found','2020-03-02 13:25:09.987152','Not found','2020-03-02 13:25:09.987152','Apex','',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.controlloop.operational.Drools','1.0.0','Not found','2020-03-02 13:25:09.992687','Not found','2020-03-02 13:25:09.992687','Drools','',NULL); +INSERT INTO `policy_models` VALUES ('onap.policies.monitoring.cdap.tca.hi.lo.app','1.0.0','Not found','2020-03-02 13:24:51.467136','Not found','2020-03-02 13:25:10.569587','app','tosca_definitions_version: tosca_simple_yaml_1_0_0\npolicy_types:\n onap.policies.Monitoring:\n derived_from: tosca.policies.Root\n version: 1.0.0\n description: a base policy type for all policies that govern monitoring provisioning\n onap.policies.monitoring.cdap.tca.hi.lo.app:\n derived_from: onap.policies.Monitoring\n version: 1.0.0\n properties:\n tca_policy:\n type: map\n description: TCA Policy JSON\n entry_schema:\n type: onap.datatypes.monitoring.tca_policy\ndata_types:\n onap.datatypes.monitoring.metricsPerEventName:\n derived_from: tosca.datatypes.Root\n properties:\n controlLoopSchemaType:\n type: string\n required: true\n description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM\n constraints:\n - valid_values:\n - VM\n - VNF\n eventName:\n type: string\n required: true\n description: Event name to which thresholds need to be applied\n policyName:\n type: string\n required: true\n description: TCA Policy Scope Name\n policyScope:\n type: string\n required: true\n description: TCA Policy Scope\n policyVersion:\n type: string\n required: true\n description: TCA Policy Scope Version\n thresholds:\n type: list\n required: true\n description: Thresholds associated with eventName\n entry_schema:\n type: onap.datatypes.monitoring.thresholds\n onap.datatypes.monitoring.tca_policy:\n derived_from: tosca.datatypes.Root\n properties:\n domain:\n type: string\n required: true\n description: Domain name to which TCA needs to be applied\n default: measurementsForVfScaling\n constraints:\n - equal: measurementsForVfScaling\n metricsPerEventName:\n type: list\n required: true\n description: Contains eventName and threshold details that need to be applied to given eventName\n entry_schema:\n type: onap.datatypes.monitoring.metricsPerEventName\n onap.datatypes.monitoring.thresholds:\n derived_from: tosca.datatypes.Root\n properties:\n closedLoopControlName:\n type: string\n required: true\n description: Closed Loop Control Name associated with the threshold\n closedLoopEventStatus:\n type: string\n required: true\n description: Closed Loop Event Status of the threshold\n constraints:\n - valid_values:\n - ONSET\n - ABATED\n direction:\n type: string\n required: true\n description: Direction of the threshold\n constraints:\n - valid_values:\n - LESS\n - LESS_OR_EQUAL\n - GREATER\n - GREATER_OR_EQUAL\n - EQUAL\n fieldPath:\n type: string\n required: true\n description: Json field Path as per CEF message which needs to be analyzed for TCA\n constraints:\n - valid_values:\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated\n - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait\n - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage\n - $.event.measurementsForVfScalingFields.meanRequestLatency\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree\n - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed\n - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value\n severity:\n type: string\n required: true\n description: Threshold Event Severity\n constraints:\n - valid_values:\n - CRITICAL\n - MAJOR\n - MINOR\n - WARNING\n - NORMAL\n thresholdValue:\n type: integer\n required: true\n description: Threshold value for the field Path inside CEF message\n version:\n type: string\n required: true\n description: Version number associated with the threshold','{\n \"supportedPdpGroups\": [\n {\n \"monitoring\": [\n \"xacml\"\n ]\n }\n ]\n}'); +INSERT INTO `policy_models` VALUES ('onap.policies.operational.legacy','1.0.0','Not found','2020-03-02 13:24:26.818795','Not found','2020-03-02 13:24:26.818795','OperationalPolicyLegacy','',NULL); /*!40000 ALTER TABLE `policy_models` ENABLE KEYS */; UNLOCK TABLES; @@ -182,4 +180,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2020-02-27 23:10:22 +-- Dump completed on 2020-03-02 21:26:34 diff --git a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java index 8eae9066d..0b5c951bf 100644 --- a/src/main/java/org/onap/clamp/clds/config/ClampProperties.java +++ b/src/main/java/org/onap/clamp/clds/config/ClampProperties.java @@ -23,14 +23,10 @@ package org.onap.clamp.clds.config; -import com.google.gson.JsonElement; - import java.io.IOException; import java.net.URL; import java.nio.charset.StandardCharsets; - import org.apache.commons.io.IOUtils; -import org.onap.clamp.clds.util.JsonUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; @@ -75,38 +71,6 @@ public class ClampProperties { } /** - * Return json as objects that can be updated. The value obtained from the - * clds-reference file will be used as a filename. - * - * @param key The key that will be used to access the clds-reference file - * @return A jsonNode - * @throws IOException In case of issues with the JSON parser - */ - public JsonElement getJsonTemplate(String key) throws IOException { - String fileReference = getStringValue(key); - return (fileReference != null) - ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) - : null; - } - - /** - * Return json as objects that can be updated. First try with combo key (key1 + - * "." + key2), otherwise default to just key1. The value obtained from the - * clds-reference file will be used as a filename. - * - * @param key1 The first key - * @param key2 The second key after a dot - * @return A JsonNode - * @throws IOException In case of issues with the JSON parser - */ - public JsonElement getJsonTemplate(String key1, String key2) throws IOException { - String fileReference = getStringValue(key1, key2); - return (fileReference != null) - ? JsonUtils.GSON.fromJson(getFileContentFromPath(fileReference), JsonElement.class) - : null; - } - - /** * Return the file content. The value obtained from the clds-reference file will * be used as a filename. * diff --git a/src/main/java/org/onap/clamp/clds/config/LegacyOperationalPolicy.java b/src/main/java/org/onap/clamp/clds/config/LegacyOperationalPolicy.java new file mode 100644 index 000000000..7d4b5f8fe --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/config/LegacyOperationalPolicy.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2020 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * + */ + +package org.onap.clamp.clds.config; + +import javax.annotation.PostConstruct; +import org.onap.clamp.loop.template.PolicyModel; +import org.onap.clamp.loop.template.PolicyModelsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +@Configuration +@Profile("legacy-operational-policy") +public class LegacyOperationalPolicy { + + @Autowired + PolicyModelsService policyModelService; + + public static final String OPERATIONAL_POLICY_LEGACY = "onap.policies.operational.legacy"; + + @PostConstruct + public void init() { + policyModelService.saveOrUpdatePolicyModel(new PolicyModel(OPERATIONAL_POLICY_LEGACY, "", "1.0.0", + "OperationalPolicyLegacy")); + } +} + diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 122b4c77f..f185460cf 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -48,6 +48,7 @@ import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; +import org.apache.commons.lang3.RandomStringUtils; import org.hibernate.annotations.SortNatural; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; @@ -62,6 +63,7 @@ import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.LoopTemplate; +import org.onap.clamp.policy.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -168,12 +170,18 @@ public class Loop extends AuditEntity implements Serializable { this.setModelService(loopTemplate.getModelService()); loopTemplate.getLoopElementModelsUsed().forEach(element -> { if (LoopElementModel.MICRO_SERVICE_TYPE.equals(element.getLoopElementModel().getLoopElementType())) { - this.addMicroServicePolicy(new MicroServicePolicy(name, + this.addMicroServicePolicy(new MicroServicePolicy(Policy.generatePolicyName("MICROSERVICE_", + loopTemplate.getModelService().getName(),loopTemplate.getModelService().getVersion(), + RandomStringUtils.randomAlphanumeric(3),RandomStringUtils.randomAlphanumeric(3)), element.getLoopElementModel().getPolicyModels().first(), false, element.getLoopElementModel())); } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE .equals(element.getLoopElementModel().getLoopElementType())) { - this.addOperationalPolicy(new OperationalPolicy(name, null, new JsonObject(), - element.getLoopElementModel().getPolicyModels().first(), element.getLoopElementModel(), null, null)); + this.addOperationalPolicy(new OperationalPolicy(Policy.generatePolicyName("OPERATIONAL_", + loopTemplate.getModelService().getName(),loopTemplate.getModelService().getVersion(), + RandomStringUtils.randomAlphanumeric(3),RandomStringUtils.randomAlphanumeric(3)), null, + new JsonObject(), + element.getLoopElementModel().getPolicyModels().first(), element.getLoopElementModel(), + null,null)); } }); } diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index 59b97e1a2..1a67455e8 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -38,11 +38,9 @@ import org.springframework.stereotype.Controller; public class LoopController { private final LoopService loopService; - private static final Type OPERATIONAL_POLICY_TYPE = new TypeToken<List<OperationalPolicy>>() { - }.getType(); + private static final Type OPERATIONAL_POLICY_TYPE = new TypeToken<List<OperationalPolicy>>() {}.getType(); - private static final Type MICROSERVICE_POLICY_TYPE = new TypeToken<List<MicroServicePolicy>>() { - }.getType(); + private static final Type MICROSERVICE_POLICY_TYPE = new TypeToken<List<MicroServicePolicy>>() {}.getType(); @Autowired public LoopController(LoopService loopService) { diff --git a/src/main/java/org/onap/clamp/policy/Policy.java b/src/main/java/org/onap/clamp/policy/Policy.java index 47dee1ae9..ebeb84fd6 100644 --- a/src/main/java/org/onap/clamp/policy/Policy.java +++ b/src/main/java/org/onap/clamp/policy/Policy.java @@ -23,28 +23,40 @@ package org.onap.clamp.policy; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; import java.io.UnsupportedEncodingException; - +import java.util.Map; import javax.persistence.Column; import javax.persistence.FetchType; import javax.persistence.JoinColumn; +import javax.persistence.JoinColumns; import javax.persistence.ManyToOne; import javax.persistence.MappedSuperclass; - +import javax.persistence.Transient; import org.hibernate.annotations.Type; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; +import org.json.JSONObject; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.common.AuditEntity; import org.onap.clamp.loop.template.LoopElementModel; +import org.onap.clamp.loop.template.PolicyModel; +import org.yaml.snakeyaml.Yaml; @MappedSuperclass @TypeDefs({@TypeDef(name = "json", typeClass = StringJsonUserType.class)}) public abstract class Policy extends AuditEntity { + @Transient + private static final EELFLogger logger = EELFManager.getInstance().getLogger(Policy.class); + @Expose @Type(type = "json") @Column(columnDefinition = "json", name = "json_representation", nullable = false) @@ -72,7 +84,67 @@ public abstract class Policy extends AuditEntity { @Column(name = "pdp_sub_group") private String pdpSubgroup; - public abstract String createPolicyPayload() throws UnsupportedEncodingException; + @Expose + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"), + @JoinColumn(name = "policy_model_version", referencedColumnName = "version")}) + private PolicyModel policyModel; + + private JsonObject createJsonFromPolicyTosca() { + Map<String, Object> map = + new Yaml().load(this.getPolicyModel() != null ? this.getPolicyModel().getPolicyModelTosca() : ""); + JSONObject jsonObject = new JSONObject(map); + return new Gson().fromJson(jsonObject.toString(), JsonObject.class); + } + + private String getModelPropertyNameFromTosca(JsonObject object, String policyModelType) { + return object.getAsJsonObject("policy_types").getAsJsonObject(policyModelType) + .getAsJsonObject( + "properties") + .keySet().toArray(new String[1])[0]; + } + + /** + * This method create the policy payload that must be sent to PEF. + * + * @return A String containing the payload + * @throws UnsupportedEncodingException In case of failure + */ + public String createPolicyPayload() throws UnsupportedEncodingException { + JsonObject toscaJson = createJsonFromPolicyTosca(); + + JsonObject policyPayloadResult = new JsonObject(); + + policyPayloadResult.add("tosca_definitions_version", toscaJson.get("tosca_definitions_version")); + + JsonObject topologyTemplateNode = new JsonObject(); + policyPayloadResult.add("topology_template", topologyTemplateNode); + + JsonArray policiesArray = new JsonArray(); + topologyTemplateNode.add("policies", policiesArray); + + JsonObject thisPolicy = new JsonObject(); + policiesArray.add(thisPolicy); + + JsonObject policyDetails = new JsonObject(); + thisPolicy.add(this.getName(), policyDetails); + policyDetails.addProperty("type", this.getPolicyModel().getPolicyModelType()); + policyDetails.addProperty("version", this.getPolicyModel().getVersion()); + + JsonObject policyMetadata = new JsonObject(); + policyDetails.add("metadata", policyMetadata); + policyMetadata.addProperty("policy-id", this.getName()); + + JsonObject policyProperties = new JsonObject(); + policyDetails.add("properties", policyProperties); + policyProperties + .add(this.getModelPropertyNameFromTosca(toscaJson, this.getPolicyModel().getPolicyModelType()), + this.getConfigurationsJson()); + String policyPayload = new GsonBuilder().setPrettyPrinting().create().toJson(policyPayloadResult); + logger.info("Policy payload: " + policyPayload); + return policyPayload; + } + /** * Name getter. @@ -105,6 +177,24 @@ public abstract class Policy extends AuditEntity { } /** + * policyModel getter. + * + * @return the policyModel + */ + public PolicyModel getPolicyModel() { + return policyModel; + } + + /** + * policyModel setter. + * + * @param policyModel The new policyModel + */ + public void setPolicyModel(PolicyModel policyModel) { + this.policyModel = policyModel; + } + + /** * configurationsJson getter. * * @return The configurationsJson @@ -160,7 +250,7 @@ public abstract class Policy extends AuditEntity { /** * pdpSubgroup getter. - * + * * @return the pdpSubgroup */ public String getPdpSubgroup() { @@ -169,7 +259,7 @@ public abstract class Policy extends AuditEntity { /** * pdpSubgroup setter. - * + * * @param pdpSubgroup the pdpSubgroup to set */ public void setPdpSubgroup(String pdpSubgroup) { diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java index 7fd752c31..c4037ffb6 100644 --- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java +++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java @@ -25,28 +25,20 @@ package org.onap.clamp.policy.microservice; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; import java.io.Serializable; import java.util.HashSet; -import java.util.Map; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinColumns; import javax.persistence.ManyToMany; -import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; -import org.json.JSONObject; import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; @@ -54,7 +46,6 @@ import org.onap.clamp.loop.Loop; import org.onap.clamp.loop.template.LoopElementModel; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.Policy; -import org.yaml.snakeyaml.Yaml; @Entity @Table(name = "micro_service_policies") @@ -100,12 +91,6 @@ public class MicroServicePolicy extends Policy implements Serializable { @Column(name = "dcae_blueprint_id") private String dcaeBlueprintId; - @Expose - @ManyToOne(fetch = FetchType.EAGER) - @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"), - @JoinColumn(name = "policy_model_version", referencedColumnName = "version")}) - private PolicyModel policyModel; - public MicroServicePolicy() { // serialization } @@ -119,20 +104,15 @@ public class MicroServicePolicy extends Policy implements Serializable { * @param shared The flag indicate whether the MicroService is shared */ public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared, LoopElementModel loopElementModel) { - this(name,policyModel,shared,JsonUtils.GSON_JPA_MODEL + this(name, policyModel, shared, JsonUtils.GSON_JPA_MODEL .fromJson(new ToscaYamlToJsonConvertor().parseToscaYaml(policyModel.getPolicyModelTosca(), - policyModel.getPolicyModelType()), JsonObject.class),loopElementModel, null, null); - } - - private JsonObject createJsonFromPolicyTosca() { - Map<String, Object> map = new Yaml().load(this.getPolicyModel().getPolicyModelTosca()); - JSONObject jsonObject = new JSONObject(map); - return new Gson().fromJson(jsonObject.toString(), JsonObject.class); + policyModel.getPolicyModelType()), JsonObject.class), loopElementModel,null,null); } /** * The constructor that does not make use of ToscaYamlToJsonConvertor but take * the jsonRepresentation instead. + * * @param name The name of the MicroService * @param policyModel The policy model type of the MicroService * @param shared The flag indicate whether the MicroService is @@ -145,7 +125,7 @@ public class MicroServicePolicy extends Policy implements Serializable { public MicroServicePolicy(String name, PolicyModel policyModel, Boolean shared, JsonObject jsonRepresentation, LoopElementModel loopElementModel, String pdpGroup, String pdpSubgroup) { this.name = name; - this.policyModel = policyModel; + this.setPolicyModel(policyModel); this.shared = shared; this.setJsonRepresentation(jsonRepresentation); this.setLoopElementModel(loopElementModel); @@ -200,14 +180,6 @@ public class MicroServicePolicy extends Policy implements Serializable { this.deviceTypeScope = deviceTypeScope; } - public PolicyModel getPolicyModel() { - return policyModel; - } - - public void setPolicyModel(PolicyModel policyModel) { - this.policyModel = policyModel; - } - /** * dcaeDeploymentId getter. * @@ -288,48 +260,7 @@ public class MicroServicePolicy extends Policy implements Serializable { } } else if (!name.equals(other.name)) { return false; - } return true; - } - - private String getMicroServicePropertyNameFromTosca(JsonObject object) { - return object.getAsJsonObject("policy_types").getAsJsonObject(this.getPolicyModel().getPolicyModelType()) - .getAsJsonObject( - "properties") - .keySet().toArray(new String[1])[0]; - } - - @Override - public String createPolicyPayload() { - JsonObject toscaJson = createJsonFromPolicyTosca(); - - JsonObject policyPayloadResult = new JsonObject(); - - policyPayloadResult.add("tosca_definitions_version", toscaJson.get("tosca_definitions_version")); - - JsonObject topologyTemplateNode = new JsonObject(); - policyPayloadResult.add("topology_template", topologyTemplateNode); - - JsonArray policiesArray = new JsonArray(); - topologyTemplateNode.add("policies", policiesArray); - - JsonObject thisPolicy = new JsonObject(); - policiesArray.add(thisPolicy); - - JsonObject policyDetails = new JsonObject(); - thisPolicy.add(this.getName(), policyDetails); - policyDetails.addProperty("type", this.getPolicyModel().getPolicyModelType()); - policyDetails.addProperty("version", this.getPolicyModel().getVersion()); - - JsonObject policyMetadata = new JsonObject(); - policyDetails.add("metadata", policyMetadata); - policyMetadata.addProperty("policy-id", this.getName()); - - JsonObject policyProperties = new JsonObject(); - policyDetails.add("properties", policyProperties); - policyProperties.add(this.getMicroServicePropertyNameFromTosca(toscaJson), this.getConfigurationsJson()); - String policyPayload = new GsonBuilder().setPrettyPrinting().create().toJson(policyPayloadResult); - logger.info("Micro service policy payload: " + policyPayload); - return policyPayload; + } + return true; } - } diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java index 7cf06dcfc..b0e8b0c3d 100644 --- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java +++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java @@ -51,6 +51,8 @@ import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDefs; +import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor; +import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.dao.model.jsontype.StringJsonUserType; import org.onap.clamp.loop.Loop; import org.onap.clamp.loop.template.LoopElementModel; @@ -80,12 +82,6 @@ public class OperationalPolicy extends Policy implements Serializable { @JoinColumn(name = "loop_id", nullable = false) private Loop loop; - @Expose - @ManyToOne(fetch = FetchType.EAGER) - @JoinColumns({@JoinColumn(name = "policy_model_type", referencedColumnName = "policy_model_type"), - @JoinColumn(name = "policy_model_version", referencedColumnName = "version")}) - private PolicyModel policyModel; - public OperationalPolicy() { // Serialization } @@ -111,16 +107,32 @@ public class OperationalPolicy extends Policy implements Serializable { this.setPdpGroup(pdpGroup); this.setPdpSubgroup(pdpSubgroup); this.setLoopElementModel(loopElementModel); - if (policyModel != null && policyModel.getPolicyModelType().contains("legacy")) { - LegacyOperationalPolicy.preloadConfiguration(configurationsJson, loop); + this.setJsonRepresentation(this.generateJsonRepresentation(policyModel)); + + } + + private JsonObject generateJsonRepresentation(PolicyModel policyModel) { + JsonObject jsonReturned = new JsonObject(); + if (policyModel == null) { + return new JsonObject(); } try { - this.setJsonRepresentation( - OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService())); + if (isLegacy()) { + // Op policy Legacy case + LegacyOperationalPolicy.preloadConfiguration(jsonReturned, loop); + this.setJsonRepresentation( + OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService())); + } else { + // Generic Case + this.setJsonRepresentation(JsonUtils.GSON + .fromJson(new ToscaYamlToJsonConvertor().parseToscaYaml(policyModel.getPolicyModelTosca(), + policyModel.getPolicyModelType()), JsonObject.class)); + } } catch (JsonSyntaxException | IOException | NullPointerException e) { logger.error("Unable to generate the operational policy Schema ... ", e); this.setJsonRepresentation(new JsonObject()); } + return jsonReturned; } public void setLoop(Loop loopName) { @@ -146,24 +158,6 @@ public class OperationalPolicy extends Policy implements Serializable { this.name = name; } - /** - * policyModel getter. - * - * @return the policyModel - */ - public PolicyModel getPolicyModel() { - return policyModel; - } - - /** - * policyModel setter. - * - * @param policyModel the policyModel to set - */ - public void setPolicyModel(PolicyModel policyModel) { - this.policyModel = policyModel; - } - @Override public int hashCode() { final int prime = 31; @@ -194,6 +188,10 @@ public class OperationalPolicy extends Policy implements Serializable { return true; } + public Boolean isLegacy() { + return (this.getPolicyModel() != null) && this.getPolicyModel().getPolicyModelType().contains("legacy"); + } + /** * Create policy Yaml from json defined here. * @@ -236,17 +234,22 @@ public class OperationalPolicy extends Policy implements Serializable { @Override public String createPolicyPayload() throws UnsupportedEncodingException { - // Now using the legacy payload fo Dublin - JsonObject payload = new JsonObject(); - payload.addProperty("policy-id", this.getName()); - payload.addProperty("content", - URLEncoder.encode( - LegacyOperationalPolicy - .createPolicyPayloadYamlLegacy(this.getConfigurationsJson().get("operational_policy")), - StandardCharsets.UTF_8.toString())); - String opPayload = new GsonBuilder().setPrettyPrinting().create().toJson(payload); - logger.info("Operational policy payload: " + opPayload); - return opPayload; + if (isLegacy()) { + // Now using the legacy payload fo Dublin + JsonObject payload = new JsonObject(); + payload.addProperty("policy-id", this.getName()); + payload.addProperty("content", + URLEncoder.encode( + LegacyOperationalPolicy + .createPolicyPayloadYamlLegacy( + this.getConfigurationsJson().get("operational_policy")), + StandardCharsets.UTF_8.toString())); + String opPayload = new GsonBuilder().setPrettyPrinting().create().toJson(payload); + logger.info("Operational policy payload: " + opPayload); + return opPayload; + } else { + return super.createPolicyPayload(); + } } /** diff --git a/src/main/resources/META-INF/resources/swagger.html b/src/main/resources/META-INF/resources/swagger.html index 23844cb23..9c4c9fff2 100644 --- a/src/main/resources/META-INF/resources/swagger.html +++ b/src/main/resources/META-INF/resources/swagger.html @@ -444,25 +444,25 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </li> <li><a href="#_paths">2. Paths</a> <ul class="sectlevel2"> -<li><a href="#_route30">2.1. GET /v1/healthcheck</a> +<li><a href="#_route61">2.1. GET /v1/healthcheck</a> <ul class="sectlevel3"> <li><a href="#_responses">2.1.1. Responses</a></li> <li><a href="#_produces">2.1.2. Produces</a></li> </ul> </li> -<li><a href="#_route31">2.2. GET /v1/user/getUser</a> +<li><a href="#_route62">2.2. GET /v1/user/getUser</a> <ul class="sectlevel3"> <li><a href="#_responses_2">2.2.1. Responses</a></li> <li><a href="#_produces_2">2.2.2. Produces</a></li> </ul> </li> -<li><a href="#_route18">2.3. GET /v2/dictionary</a> +<li><a href="#_route49">2.3. GET /v2/dictionary</a> <ul class="sectlevel3"> <li><a href="#_responses_3">2.3.1. Responses</a></li> <li><a href="#_produces_3">2.3.2. Produces</a></li> </ul> </li> -<li><a href="#_route20">2.4. PUT /v2/dictionary</a> +<li><a href="#_route51">2.4. PUT /v2/dictionary</a> <ul class="sectlevel3"> <li><a href="#_parameters">2.4.1. Parameters</a></li> <li><a href="#_responses_4">2.4.2. Responses</a></li> @@ -491,7 +491,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_7">2.7.4. Produces</a></li> </ul> </li> -<li><a href="#_route22">2.8. DELETE /v2/dictionary/{name}</a> +<li><a href="#_route53">2.8. DELETE /v2/dictionary/{name}</a> <ul class="sectlevel3"> <li><a href="#_parameters_4">2.8.1. Parameters</a></li> <li><a href="#_responses_8">2.8.2. Responses</a></li> @@ -505,75 +505,75 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_9">2.9.3. Produces</a></li> </ul> </li> -<li><a href="#_route14">2.10. PUT /v2/loop/delete/{loopName}</a> +<li><a href="#_route45">2.10. PUT /v2/loop/delete/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_6">2.10.1. Parameters</a></li> <li><a href="#_responses_10">2.10.2. Responses</a></li> </ul> </li> -<li><a href="#_route8">2.11. PUT /v2/loop/deploy/{loopName}</a> +<li><a href="#_route39">2.11. PUT /v2/loop/deploy/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_7">2.11.1. Parameters</a></li> <li><a href="#_responses_11">2.11.2. Responses</a></li> <li><a href="#_produces_10">2.11.3. Produces</a></li> </ul> </li> -<li><a href="#_route2">2.12. GET /v2/loop/getAllNames</a> +<li><a href="#_route33">2.12. GET /v2/loop/getAllNames</a> <ul class="sectlevel3"> <li><a href="#_responses_12">2.12.1. Responses</a></li> <li><a href="#_produces_11">2.12.2. Produces</a></li> </ul> </li> -<li><a href="#_route15">2.13. GET /v2/loop/getstatus/{loopName}</a> +<li><a href="#_route46">2.13. GET /v2/loop/getstatus/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_8">2.13.1. Parameters</a></li> <li><a href="#_responses_13">2.13.2. Responses</a></li> <li><a href="#_produces_12">2.13.3. Produces</a></li> </ul> </li> -<li><a href="#_route9">2.14. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}</a> +<li><a href="#_route40">2.14. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_9">2.14.1. Parameters</a></li> <li><a href="#_responses_14">2.14.2. Responses</a></li> <li><a href="#_produces_13">2.14.3. Produces</a></li> </ul> </li> -<li><a href="#_route12">2.15. PUT /v2/loop/restart/{loopName}</a> +<li><a href="#_route43">2.15. PUT /v2/loop/restart/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_10">2.15.1. Parameters</a></li> <li><a href="#_responses_15">2.15.2. Responses</a></li> <li><a href="#_produces_14">2.15.3. Produces</a></li> </ul> </li> -<li><a href="#_route11">2.16. PUT /v2/loop/stop/{loopName}</a> +<li><a href="#_route42">2.16. PUT /v2/loop/stop/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_11">2.16.1. Parameters</a></li> <li><a href="#_responses_16">2.16.2. Responses</a></li> <li><a href="#_produces_15">2.16.3. Produces</a></li> </ul> </li> -<li><a href="#_route13">2.17. PUT /v2/loop/submit/{loopName}</a> +<li><a href="#_route44">2.17. PUT /v2/loop/submit/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_12">2.17.1. Parameters</a></li> <li><a href="#_responses_17">2.17.2. Responses</a></li> <li><a href="#_produces_16">2.17.3. Produces</a></li> </ul> </li> -<li><a href="#_route4">2.18. GET /v2/loop/svgRepresentation/{loopName}</a> +<li><a href="#_route35">2.18. GET /v2/loop/svgRepresentation/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_13">2.18.1. Parameters</a></li> <li><a href="#_responses_18">2.18.2. Responses</a></li> <li><a href="#_produces_17">2.18.3. Produces</a></li> </ul> </li> -<li><a href="#_route10">2.19. PUT /v2/loop/undeploy/{loopName}</a> +<li><a href="#_route41">2.19. PUT /v2/loop/undeploy/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_14">2.19.1. Parameters</a></li> <li><a href="#_responses_19">2.19.2. Responses</a></li> <li><a href="#_produces_18">2.19.3. Produces</a></li> </ul> </li> -<li><a href="#_route5">2.20. POST /v2/loop/updateGlobalProperties/{loopName}</a> +<li><a href="#_route36">2.20. POST /v2/loop/updateGlobalProperties/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_15">2.20.1. Parameters</a></li> <li><a href="#_responses_20">2.20.2. Responses</a></li> @@ -581,7 +581,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_19">2.20.4. Produces</a></li> </ul> </li> -<li><a href="#_route7">2.21. POST /v2/loop/updateMicroservicePolicy/{loopName}</a> +<li><a href="#_route38">2.21. POST /v2/loop/updateMicroservicePolicy/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_16">2.21.1. Parameters</a></li> <li><a href="#_responses_21">2.21.2. Responses</a></li> @@ -589,7 +589,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_20">2.21.4. Produces</a></li> </ul> </li> -<li><a href="#_route6">2.22. POST /v2/loop/updateOperationalPolicies/{loopName}</a> +<li><a href="#_route37">2.22. POST /v2/loop/updateOperationalPolicies/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_17">2.22.1. Parameters</a></li> <li><a href="#_responses_22">2.22.2. Responses</a></li> @@ -597,14 +597,14 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_21">2.22.4. Produces</a></li> </ul> </li> -<li><a href="#_route3">2.23. GET /v2/loop/{loopName}</a> +<li><a href="#_route34">2.23. GET /v2/loop/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_18">2.23.1. Parameters</a></li> <li><a href="#_responses_23">2.23.2. Responses</a></li> <li><a href="#_produces_22">2.23.3. Produces</a></li> </ul> </li> -<li><a href="#_route25">2.24. GET /v2/policyToscaModels</a> +<li><a href="#_route56">2.24. GET /v2/policyToscaModels</a> <ul class="sectlevel3"> <li><a href="#_responses_24">2.24.1. Responses</a></li> <li><a href="#_produces_23">2.24.2. Produces</a></li> @@ -624,7 +624,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_25">2.26.3. Produces</a></li> </ul> </li> -<li><a href="#_route26">2.27. PUT /v2/policyToscaModels/{policyModelType}</a> +<li><a href="#_route57">2.27. PUT /v2/policyToscaModels/{policyModelType}</a> <ul class="sectlevel3"> <li><a href="#_parameters_21">2.27.1. Parameters</a></li> <li><a href="#_responses_27">2.27.2. Responses</a></li> @@ -632,7 +632,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <li><a href="#_produces_26">2.27.4. Produces</a></li> </ul> </li> -<li><a href="#_route29">2.28. GET /v2/templates</a> +<li><a href="#_route60">2.28. GET /v2/templates</a> <ul class="sectlevel3"> <li><a href="#_responses_28">2.28.1. Responses</a></li> <li><a href="#_produces_27">2.28.2. Produces</a></li> @@ -692,7 +692,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <div class="sect2"> <h3 id="_uri_scheme"><a class="anchor" href="#_uri_scheme"></a><a class="link" href="#_uri_scheme">1.2. URI scheme</a></h3> <div class="paragraph"> -<p><em>Host</em> : localhost:37295<br> +<p><em>Host</em> : localhost:39099<br> <em>BasePath</em> : /restservices/clds/<br> <em>Schemes</em> : HTTP</p> </div> @@ -703,7 +703,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <h2 id="_paths"><a class="anchor" href="#_paths"></a><a class="link" href="#_paths">2. Paths</a></h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_route30"><a class="anchor" href="#_route30"></a><a class="link" href="#_route30">2.1. GET /v1/healthcheck</a></h3> +<h3 id="_route61"><a class="anchor" href="#_route61"></a><a class="link" href="#_route61">2.1. GET /v1/healthcheck</a></h3> <div class="sect3"> <h4 id="_responses"><a class="anchor" href="#_responses"></a><a class="link" href="#_responses">2.1.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -740,7 +740,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route31"><a class="anchor" href="#_route31"></a><a class="link" href="#_route31">2.2. GET /v1/user/getUser</a></h3> +<h3 id="_route62"><a class="anchor" href="#_route62"></a><a class="link" href="#_route62">2.2. GET /v1/user/getUser</a></h3> <div class="sect3"> <h4 id="_responses_2"><a class="anchor" href="#_responses_2"></a><a class="link" href="#_responses_2">2.2.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -774,7 +774,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route18"><a class="anchor" href="#_route18"></a><a class="link" href="#_route18">2.3. GET /v2/dictionary</a></h3> +<h3 id="_route49"><a class="anchor" href="#_route49"></a><a class="link" href="#_route49">2.3. GET /v2/dictionary</a></h3> <div class="sect3"> <h4 id="_responses_3"><a class="anchor" href="#_responses_3"></a><a class="link" href="#_responses_3">2.3.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -811,7 +811,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route20"><a class="anchor" href="#_route20"></a><a class="link" href="#_route20">2.4. PUT /v2/dictionary</a></h3> +<h3 id="_route51"><a class="anchor" href="#_route51"></a><a class="link" href="#_route51">2.4. PUT /v2/dictionary</a></h3> <div class="sect3"> <h4 id="_parameters"><a class="anchor" href="#_parameters"></a><a class="link" href="#_parameters">2.4.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1060,7 +1060,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route22"><a class="anchor" href="#_route22"></a><a class="link" href="#_route22">2.8. DELETE /v2/dictionary/{name}</a></h3> +<h3 id="_route53"><a class="anchor" href="#_route53"></a><a class="link" href="#_route53">2.8. DELETE /v2/dictionary/{name}</a></h3> <div class="sect3"> <h4 id="_parameters_4"><a class="anchor" href="#_parameters_4"></a><a class="link" href="#_parameters_4">2.8.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1184,7 +1184,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route14"><a class="anchor" href="#_route14"></a><a class="link" href="#_route14">2.10. PUT /v2/loop/delete/{loopName}</a></h3> +<h3 id="_route45"><a class="anchor" href="#_route45"></a><a class="link" href="#_route45">2.10. PUT /v2/loop/delete/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_6"><a class="anchor" href="#_parameters_6"></a><a class="link" href="#_parameters_6">2.10.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1233,7 +1233,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route8"><a class="anchor" href="#_route8"></a><a class="link" href="#_route8">2.11. PUT /v2/loop/deploy/{loopName}</a></h3> +<h3 id="_route39"><a class="anchor" href="#_route39"></a><a class="link" href="#_route39">2.11. PUT /v2/loop/deploy/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_7"><a class="anchor" href="#_parameters_7"></a><a class="link" href="#_parameters_7">2.11.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1295,7 +1295,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route2"><a class="anchor" href="#_route2"></a><a class="link" href="#_route2">2.12. GET /v2/loop/getAllNames</a></h3> +<h3 id="_route33"><a class="anchor" href="#_route33"></a><a class="link" href="#_route33">2.12. GET /v2/loop/getAllNames</a></h3> <div class="sect3"> <h4 id="_responses_12"><a class="anchor" href="#_responses_12"></a><a class="link" href="#_responses_12">2.12.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1332,7 +1332,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route15"><a class="anchor" href="#_route15"></a><a class="link" href="#_route15">2.13. GET /v2/loop/getstatus/{loopName}</a></h3> +<h3 id="_route46"><a class="anchor" href="#_route46"></a><a class="link" href="#_route46">2.13. GET /v2/loop/getstatus/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_8"><a class="anchor" href="#_parameters_8"></a><a class="link" href="#_parameters_8">2.13.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1394,7 +1394,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route9"><a class="anchor" href="#_route9"></a><a class="link" href="#_route9">2.14. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}</a></h3> +<h3 id="_route40"><a class="anchor" href="#_route40"></a><a class="link" href="#_route40">2.14. PUT /v2/loop/refreshOpPolicyJsonSchema/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_9"><a class="anchor" href="#_parameters_9"></a><a class="link" href="#_parameters_9">2.14.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1456,7 +1456,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route12"><a class="anchor" href="#_route12"></a><a class="link" href="#_route12">2.15. PUT /v2/loop/restart/{loopName}</a></h3> +<h3 id="_route43"><a class="anchor" href="#_route43"></a><a class="link" href="#_route43">2.15. PUT /v2/loop/restart/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_10"><a class="anchor" href="#_parameters_10"></a><a class="link" href="#_parameters_10">2.15.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1518,7 +1518,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route11"><a class="anchor" href="#_route11"></a><a class="link" href="#_route11">2.16. PUT /v2/loop/stop/{loopName}</a></h3> +<h3 id="_route42"><a class="anchor" href="#_route42"></a><a class="link" href="#_route42">2.16. PUT /v2/loop/stop/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_11"><a class="anchor" href="#_parameters_11"></a><a class="link" href="#_parameters_11">2.16.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1580,7 +1580,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route13"><a class="anchor" href="#_route13"></a><a class="link" href="#_route13">2.17. PUT /v2/loop/submit/{loopName}</a></h3> +<h3 id="_route44"><a class="anchor" href="#_route44"></a><a class="link" href="#_route44">2.17. PUT /v2/loop/submit/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_12"><a class="anchor" href="#_parameters_12"></a><a class="link" href="#_parameters_12">2.17.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1642,7 +1642,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route4"><a class="anchor" href="#_route4"></a><a class="link" href="#_route4">2.18. GET /v2/loop/svgRepresentation/{loopName}</a></h3> +<h3 id="_route35"><a class="anchor" href="#_route35"></a><a class="link" href="#_route35">2.18. GET /v2/loop/svgRepresentation/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_13"><a class="anchor" href="#_parameters_13"></a><a class="link" href="#_parameters_13">2.18.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1704,7 +1704,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route10"><a class="anchor" href="#_route10"></a><a class="link" href="#_route10">2.19. PUT /v2/loop/undeploy/{loopName}</a></h3> +<h3 id="_route41"><a class="anchor" href="#_route41"></a><a class="link" href="#_route41">2.19. PUT /v2/loop/undeploy/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_14"><a class="anchor" href="#_parameters_14"></a><a class="link" href="#_parameters_14">2.19.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1766,7 +1766,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route5"><a class="anchor" href="#_route5"></a><a class="link" href="#_route5">2.20. POST /v2/loop/updateGlobalProperties/{loopName}</a></h3> +<h3 id="_route36"><a class="anchor" href="#_route36"></a><a class="link" href="#_route36">2.20. POST /v2/loop/updateGlobalProperties/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_15"><a class="anchor" href="#_parameters_15"></a><a class="link" href="#_parameters_15">2.20.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1844,7 +1844,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route7"><a class="anchor" href="#_route7"></a><a class="link" href="#_route7">2.21. POST /v2/loop/updateMicroservicePolicy/{loopName}</a></h3> +<h3 id="_route38"><a class="anchor" href="#_route38"></a><a class="link" href="#_route38">2.21. POST /v2/loop/updateMicroservicePolicy/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_16"><a class="anchor" href="#_parameters_16"></a><a class="link" href="#_parameters_16">2.21.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -1922,7 +1922,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route6"><a class="anchor" href="#_route6"></a><a class="link" href="#_route6">2.22. POST /v2/loop/updateOperationalPolicies/{loopName}</a></h3> +<h3 id="_route37"><a class="anchor" href="#_route37"></a><a class="link" href="#_route37">2.22. POST /v2/loop/updateOperationalPolicies/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_17"><a class="anchor" href="#_parameters_17"></a><a class="link" href="#_parameters_17">2.22.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -2000,7 +2000,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route3"><a class="anchor" href="#_route3"></a><a class="link" href="#_route3">2.23. GET /v2/loop/{loopName}</a></h3> +<h3 id="_route34"><a class="anchor" href="#_route34"></a><a class="link" href="#_route34">2.23. GET /v2/loop/{loopName}</a></h3> <div class="sect3"> <h4 id="_parameters_18"><a class="anchor" href="#_parameters_18"></a><a class="link" href="#_parameters_18">2.23.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -2062,7 +2062,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route25"><a class="anchor" href="#_route25"></a><a class="link" href="#_route25">2.24. GET /v2/policyToscaModels</a></h3> +<h3 id="_route56"><a class="anchor" href="#_route56"></a><a class="link" href="#_route56">2.24. GET /v2/policyToscaModels</a></h3> <div class="sect3"> <h4 id="_responses_24"><a class="anchor" href="#_responses_24"></a><a class="link" href="#_responses_24">2.24.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -2223,7 +2223,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route26"><a class="anchor" href="#_route26"></a><a class="link" href="#_route26">2.27. PUT /v2/policyToscaModels/{policyModelType}</a></h3> +<h3 id="_route57"><a class="anchor" href="#_route57"></a><a class="link" href="#_route57">2.27. PUT /v2/policyToscaModels/{policyModelType}</a></h3> <div class="sect3"> <h4 id="_parameters_21"><a class="anchor" href="#_parameters_21"></a><a class="link" href="#_parameters_21">2.27.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -2301,7 +2301,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route29"><a class="anchor" href="#_route29"></a><a class="link" href="#_route29">2.28. GET /v2/templates</a></h3> +<h3 id="_route60"><a class="anchor" href="#_route60"></a><a class="link" href="#_route60">2.28. GET /v2/templates</a></h3> <div class="sect3"> <h4 id="_responses_28"><a class="anchor" href="#_responses_28"></a><a class="link" href="#_responses_28">2.28.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> @@ -3617,6 +3617,11 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_jsonobject">JsonObject</a></p></td> </tr> <tr> +<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>legacy</strong><br> +<em>optional</em></p></td> +<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td> +</tr> +<tr> <td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>loop</strong><br> <em>optional</em></p></td> <td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_loop">Loop</a></p></td> diff --git a/src/main/resources/application-noaaf.properties b/src/main/resources/application-noaaf.properties index 69d16875c..320e0c2a3 100644 --- a/src/main/resources/application-noaaf.properties +++ b/src/main/resources/application-noaaf.properties @@ -21,11 +21,6 @@ # ### -info.build.artifact=@project.artifactId@ -info.build.name=@project.name@ -info.build.description=@project.description@ -info.build.version=@project.version@ - ### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time). ### (See below for the parameter 'server.http.port' if you want to have both enabled) ### To have only HTTP, keep the lines server.ssl.* commented @@ -73,7 +68,7 @@ clamp.config.keyFile=classpath:/clds/aaf/org.onap.clamp.keyfile server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller +spring.profiles.active=clamp-default,clamp-default-user,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller,legacy-operational-policy spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool @@ -145,12 +140,7 @@ clamp.config.files.cldsUsers=classpath:/clds/clds-users.json clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json -# Properties for Clamp -# DCAE request build properties -# -clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json -clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json -# + # # Configuration Settings for Policy Engine Components clamp.config.policy.api.url=http4://localhost:8085 @@ -160,36 +150,9 @@ clamp.config.policy.pap.url=http4://localhost:8085 clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 -# TCA MicroService Policy request build properties -# -clamp.config.tca.policyid.prefix=DCAE.Config_ -clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json -clamp.config.tca.template=classpath:/clds/templates/tca-template.json -clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json - -# -# -# Operational Policy request build properties -# -clamp.config.op.policyDescription=from CLAMP -# default -clamp.config.op.templateName=ClosedLoopControlName -clamp.config.op.operationTopic=APPC-CL -clamp.config.op.notificationTopic=POLICY-CL-MGT -clamp.config.op.controller=amsterdam -clamp.config.op.policy.appc=APPC # # Sdc service properties clamp.config.sdc.csarFolder = /tmp/sdc-controllers -clamp.config.sdc.blueprint.parser.mapping = classpath:/clds/blueprint-parser-mapping.json -# -clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -clamp.config.action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -clamp.config.action.insert.test.event=false -clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties clamp.config.dcae.inventory.url=http4://localhost:8085 diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3abbcd57a..ed7f4ef4a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -73,7 +73,7 @@ server.ssl.trust-store-password=enc:iDnPBBLq_EMidXlMa1FEuBR8TZzYxrCg66vq_XfLHdJ server.servlet.context-path=/ #Modified engine-rest applicationpath -spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller +spring.profiles.active=clamp-default,clamp-aaf-authentication,clamp-sdc-controller,clamp-ssl-config,clamp-policy-controller,legacy-operational-policy spring.http.converters.preferred-json-mapper=gson #The max number of active threads in this pool @@ -143,12 +143,6 @@ clamp.config.files.cldsUsers=classpath:/clds/clds-users.json clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json -# Properties for Clamp -# DCAE request build properties -# -clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json -clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json -# # # Configuration Settings for Policy Engine Components clamp.config.policy.api.url=http4://policy.api.simpledemo.onap.org:6969 @@ -158,36 +152,9 @@ clamp.config.policy.pap.url=http4://policy.api.simpledemo.onap.org:6969 clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 -# TCA MicroService Policy request build properties -# -clamp.config.tca.policyid.prefix=DCAE.Config_ -clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json -clamp.config.tca.template=classpath:/clds/templates/tca-template.json -clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json - -# -# -# Operational Policy request build properties -# -clamp.config.op.policyDescription=from CLAMP -# default -clamp.config.op.templateName=ClosedLoopControlName -clamp.config.op.operationTopic=APPC-CL -clamp.config.op.notificationTopic=POLICY-CL-MGT -clamp.config.op.controller=amsterdam -clamp.config.op.policy.appc=APPC # # Sdc service properties clamp.config.sdc.csarFolder = /tmp/sdc-controllers -clamp.config.sdc.blueprint.parser.mapping = classpath:/clds/blueprint-parser-mapping.json -# -clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -clamp.config.action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -clamp.config.action.insert.test.event=false -clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties clamp.config.dcae.inventory.url=http4://dcae.api.simpledemo.onap.org:8080 diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index 3ed272e7c..fbf90712a 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -377,51 +377,56 @@ <split> <simple>${exchangeProperty[loopObject].getMicroServicePolicies()} </simple> - <setProperty propertyName="microServicePolicy"> + <setProperty propertyName="policy"> <simple>${body}</simple> </setProperty> <log loggingLevel="INFO" - message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" /> + message="Processing Micro Service Policy: ${exchangeProperty[policy].getName()}" /> <setProperty propertyName="raiseHttpExceptionFlag"> <simple resultType="java.lang.Boolean">false</simple> </setProperty> - <to uri="direct:delete-micro-service-policy" /> - <to uri="direct:create-micro-service-policy" /> + <to uri="direct:delete-policy" /> + <to uri="direct:create-policy" /> </split> <log loggingLevel="INFO" message="Processing all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}" /> <split> <simple>${exchangeProperty[loopObject].getOperationalPolicies()} </simple> - <setProperty propertyName="operationalPolicy"> + <setProperty propertyName="policy"> <simple>${body}</simple> </setProperty> <log loggingLevel="INFO" - message="Processing Operational Policy: ${exchangeProperty[operationalPolicy].getName()}" /> + message="Processing Operational Policy: ${exchangeProperty[policy].getName()}" /> <setProperty propertyName="raiseHttpExceptionFlag"> <simple resultType="java.lang.Boolean">false</simple> </setProperty> - <to uri="direct:delete-operational-policy" /> - <to uri="direct:create-operational-policy" /> - - <log loggingLevel="INFO" - message="Processing all GUARD policies defined in loop ${exchangeProperty[loopObject].getName()}" /> - <split> - <simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} - </simple> - <setProperty propertyName="guardPolicy"> - <simple>${body}</simple> - </setProperty> - <log loggingLevel="INFO" - message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" /> + <to uri="direct:delete-policy" /> + <to uri="direct:create-policy" /> + <choice> + <when> + <simple>${exchangeProperty['policy'].isLegacy()} == true + </simple> + <log loggingLevel="INFO" + message="Processing all GUARD policies (LEGACY) defined in loop ${exchangeProperty[loopObject].getName()}" /> + <split> + <simple>${exchangeProperty[operationalPolicy].createGuardPolicyPayloads().entrySet()} + </simple> + <setProperty propertyName="guardPolicy"> + <simple>${body}</simple> + </setProperty> + <log loggingLevel="INFO" + message="Processing Guard Policy: ${exchangeProperty[guardPolicy].getKey()}" /> - <setProperty propertyName="raiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">false</simple> - </setProperty> - <to uri="direct:delete-guard-policy" /> - <to uri="direct:create-guard-policy" /> - </split> + <setProperty propertyName="raiseHttpExceptionFlag"> + <simple resultType="java.lang.Boolean">false</simple> + </setProperty> + <to uri="direct:delete-guard-policy" /> + <to uri="direct:create-guard-policy" /> + </split> + </when> + </choice> </split> <delay> diff --git a/src/main/resources/clds/camel/routes/policy-flows.xml b/src/main/resources/clds/camel/routes/policy-flows.xml index afc5f952a..48e518da9 100644 --- a/src/main/resources/clds/camel/routes/policy-flows.xml +++ b/src/main/resources/clds/camel/routes/policy-flows.xml @@ -183,6 +183,102 @@ </doFinally> </doTry> </route> + <route id="create-policy"> + <from uri="direct:create-policy"/> + <doTry> + <log loggingLevel="INFO" + message="Creating Policy: ${exchangeProperty[policy].getName()}"/> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Create Policy')"/> + <setBody> + <simple>${exchangeProperty[policy].createPolicyPayload()} + </simple> + </setBody> + <setHeader headerName="CamelHttpMethod"> + <constant>POST</constant> + </setHeader> + <setHeader headerName="Content-Type"> + <constant>application/json</constant> + </setHeader> + <setHeader headerName="X-ONAP-RequestID"> + <simple>${exchangeProperty[X-ONAP-RequestID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-InvocationID"> + <simple>${exchangeProperty[X-ONAP-InvocationID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-PartnerName"> + <simple>${exchangeProperty[X-ONAP-PartnerName]} + </simple> + </setHeader> + <log loggingLevel="INFO" + message="Endpoint to create policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies"></log> + <toD + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies?bridgeEndpoint=true&useSystemProperties=true&mapHttpMessageHeaders=false&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> + <doFinally> + <to uri="direct:reset-raise-http-exception-flag"/> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/> + <setProperty propertyName="logMessage"> + <simple>${exchangeProperty[policy].getName()} creation + status + </simple> + </setProperty> + <setProperty propertyName="logComponent"> + <simple>POLICY</simple> + </setProperty> + <to uri="direct:dump-loop-log-http-response"/> + </doFinally> + </doTry> + </route> + + <route id="delete-policy"> + <from uri="direct:delete-policy"/> + <doTry> + <log loggingLevel="INFO" + message="Deleting Policy: ${exchangeProperty[policy].getName()}"/> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Policy')"/> + <setBody> + <constant>null</constant> + </setBody> + <setHeader headerName="CamelHttpMethod"> + <constant>DELETE</constant> + </setHeader> + <setHeader headerName="X-ONAP-RequestID"> + <simple>${exchangeProperty[X-ONAP-RequestID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-InvocationID"> + <simple>${exchangeProperty[X-ONAP-InvocationID]} + </simple> + </setHeader> + <setHeader headerName="X-ONAP-PartnerName"> + <simple>${exchangeProperty[X-ONAP-PartnerName]} + </simple> + </setHeader> + <log loggingLevel="INFO" + message="Endpoint to delete microservice policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/1.0.0"></log> + <toD + uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/1.0.0?bridgeEndpoint=true&useSystemProperties=true&mapHttpMessageHeaders=false&throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&deleteWithBody=false&mapHttpMessageBody=false&mapHttpMessageFormUrlEncodedBody=false&authUsername={{clamp.config.policy.api.userName}}&authPassword={{clamp.config.policy.api.password}}&connectionTimeToLive=5000&httpClient.connectTimeout=10000&httpClient.socketTimeout=20000&authenticationPreemptive=true&connectionClose=true"/> + + <doFinally> + <to uri="direct:reset-raise-http-exception-flag"/> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/> + <setProperty propertyName="logMessage"> + <simple>${exchangeProperty[policy].getName()} removal + status + </simple> + </setProperty> + <setProperty propertyName="logComponent"> + <simple>POLICY</simple> + </setProperty> + <to uri="direct:dump-loop-log-http-response"/> + </doFinally> + </doTry> + </route> <route id="create-micro-service-policy"> <from uri="direct:create-micro-service-policy"/> <doTry> diff --git a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java index c25415ecc..4bf2de030 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/CldsReferencePropertiesItCase.java @@ -24,17 +24,11 @@ package org.onap.clamp.clds.it.config; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import com.google.gson.JsonElement; - import java.io.IOException; - import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.config.ClampProperties; +import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @@ -57,37 +51,6 @@ public class CldsReferencePropertiesItCase { assertEquals("healthcheck", refProp.getStringValue("policy.api.userName")); } - @Test - public void shouldReturnJsonFromTemplate() throws IOException { - // when - JsonElement root = refProp.getJsonTemplate("ui.location.default"); - - // then - assertNotNull(root); - assertTrue(root.isJsonObject()); - assertEquals("Data Center 1", root.getAsJsonObject().get("DC1").getAsString()); - } - - @Test - public void shouldReturnJsonFromTemplate_2() throws IOException { - // when - JsonElement root = refProp.getJsonTemplate("ui.location", "default"); - - // then - assertNotNull(root); - assertTrue(root.isJsonObject()); - assertEquals("Data Center 1", root.getAsJsonObject().get("DC1").getAsString()); - } - - @Test - public void shouldReturnNullIfPropertyNotFound() throws IOException { - // when - JsonElement root = refProp.getJsonTemplate("ui.location", ""); - - // then - assertNull(root); - } - /** * Test getting prop value as a JSON Node / template. * @@ -95,12 +58,9 @@ public class CldsReferencePropertiesItCase { */ @Test public void testGetFileContent() throws IOException { - String location = "{\n\t\"DC1\": \"Data Center 1\"," - + "\n\t\"DC2\": \"Data Center 2\",\n\t\"DC3\": \"Data Center 3\"\n}\n"; - String content = refProp.getFileContent("ui.location.default"); - assertEquals(location, content); + String users = ResourceFileUtil.getResourceAsString("clds/clds-users.json"); + assertEquals(users, refProp.getFileContent("files.cldsUsers")); // Test composite key - content = refProp.getFileContent("ui.location", "default"); - assertEquals(location, content); + assertEquals(users, refProp.getFileContent("files", "cldsUsers")); } } diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java index a1499f720..fd215dd39 100644 --- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java +++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java @@ -34,9 +34,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; - import javax.transaction.Transactional; - import org.apache.commons.lang3.RandomStringUtils; import org.json.JSONException; import org.junit.Assert; @@ -44,6 +42,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.onap.clamp.clds.Application; +import org.onap.clamp.clds.config.LegacyOperationalPolicy; import org.onap.clamp.clds.exception.sdc.controller.BlueprintParserException; import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; @@ -74,7 +73,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller") +@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller,legacy-operational-policy") public class CsarInstallerItCase { private static final String CSAR_ARTIFACT_NAME = "example/sdc/service_Vloadbalancerms_csar.csar"; @@ -162,6 +161,13 @@ public class CsarInstallerItCase { @Test @Transactional + public void testPolicyModelAddedAtStartup() { + assertThat(policyModelsRepository.findByPolicyModelType( + LegacyOperationalPolicy.OPERATIONAL_POLICY_LEGACY).get(0)).isNotNull(); + } + + @Test + @Transactional public void testGetPolicyModelYaml() throws IOException, SdcToscaParserException, CsarHandlerException { INotificationData notificationData = Mockito.mock(INotificationData.class); IArtifactInfo serviceArtifacts = Mockito.mock(IArtifactInfo.class); diff --git a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java index 47b4b65c3..164625fef 100644 --- a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java @@ -90,7 +90,8 @@ public class LoopRepositoriesItCase { } private OperationalPolicy getOperationalPolicy(String configJson, String name, PolicyModel policyModel) { - return new OperationalPolicy(name, null, new Gson().fromJson(configJson, JsonObject.class), policyModel, null, null, null); + return new OperationalPolicy(name, null, new Gson().fromJson(configJson, JsonObject.class), policyModel, + null, null, null); } private LoopElementModel getLoopElementModel(String yaml, String name, String policyType, String createdBy, @@ -105,11 +106,13 @@ public class LoopRepositoriesItCase { return new PolicyModel(policyType, policyModelTosca, version, policyAcronym); } - private LoopTemplate getLoopTemplate(String name, String blueprint, String svgRepresentation, String createdBy, - Integer maxInstancesAllowed) { + private LoopTemplate getLoopTemplates(String name, String blueprint, String svgRepresentation, String createdBy, + Integer maxInstancesAllowed) { LoopTemplate template = new LoopTemplate(name, blueprint, svgRepresentation, maxInstancesAllowed, null); template.addLoopElementModel(getLoopElementModel("yaml", "microService1", "org.onap.policy.drools", createdBy, getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools"))); + template.addLoopElementModel(getLoopElementModel("yaml", "oppolicy1", "org.onap.policy.drools.legacy", + createdBy, getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "DroolsLegacy"))); loopTemplateRepository.save(template); return template; } @@ -123,7 +126,7 @@ public class LoopRepositoriesItCase { loop.setLastComputedState(LoopState.DESIGN); loop.setDcaeDeploymentId(dcaeId); loop.setDcaeDeploymentStatusUrl(dcaeUrl); - loop.setLoopTemplate(getLoopTemplate("templateName", "yaml", "svg", "toto", 1)); + loop.setLoopTemplate(getLoopTemplates("templateName", "yaml", "svg", "toto", 1)); return loop; } @@ -149,7 +152,7 @@ public class LoopRepositoriesItCase { Loop loopTest = getLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}", "123456789", "https://dcaetest.org", "UUID-blueprint"); OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest", - getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools")); + getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "DroolsLegacy")); loopTest.addOperationalPolicy(opPolicy); MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "{\"configtype\":\"json\"}", "{\"param1\":\"value1\"}", true, getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools")); diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java index de2ef145a..6c7836e50 100644 --- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java +++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java @@ -37,6 +37,7 @@ import java.util.Random; import org.junit.Test; import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.loop.components.external.PolicyComponent; import org.onap.clamp.loop.log.LogType; import org.onap.clamp.loop.log.LoopLog; import org.onap.clamp.loop.service.Service; @@ -45,6 +46,7 @@ import org.onap.clamp.loop.template.LoopTemplate; import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.operational.OperationalPolicy; +import org.skyscreamer.jsonassert.JSONAssert; public class LoopToJsonTest { @@ -52,7 +54,7 @@ public class LoopToJsonTest { private OperationalPolicy getOperationalPolicy(String configJson, String name) { return new OperationalPolicy(name, null, gson.fromJson(configJson, JsonObject.class), - getPolicyModel("org.onap.policy.drools", "yaml", "1.0.0", "Drools", "type1"), null, null, null); + getPolicyModel("org.onap.policy.drools.legacy", "yaml", "1.0.0", "Drools", "type1"), null,null,null); } private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson, diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java index 370c319b3..89d3e6172 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java @@ -24,9 +24,9 @@ package org.onap.clamp.loop; import static org.assertj.core.api.Assertions.assertThat; + import com.google.gson.Gson; import com.google.gson.JsonObject; - import java.io.IOException; import java.util.HashSet; import org.apache.camel.Exchange; @@ -44,13 +44,13 @@ import org.onap.clamp.policy.operational.OperationalPolicy; public class PolicyComponentTest { /** - * Test the computeState method. - * oldState newState expectedFinalState - * NOT_SENT SENT_AND_DEPLOYED NOT_SENT - * NOT_SENT SENT NOT_SENT - * NOT_SENT NOT_SENT NOT_SENT - * NOT_SENT IN_ERROR IN_ERROR - */ + * Test the computeState method. + * oldState newState expectedFinalState + * NOT_SENT SENT_AND_DEPLOYED NOT_SENT + * NOT_SENT SENT NOT_SENT + * NOT_SENT NOT_SENT NOT_SENT + * NOT_SENT IN_ERROR IN_ERROR + */ @Test public void computeStateTestOriginalStateUnknown() { Exchange exchange = Mockito.mock(Exchange.class); @@ -81,14 +81,15 @@ public class PolicyComponentTest { ExternalComponentState state3 = policy.computeState(exchange); assertThat(state3.getStateName()).isEqualTo("IN_ERROR"); } + /** - * Test the computeState method. - * oldState newState expectedFinalState - * NOT_SENT SENT_AND_DEPLOYED NOT_SENT - * NOT_SENT SENT NOT_SENT - * NOT_SENT NOT_SENT NOT_SENT - * NOT_SENT IN_ERROR IN_ERROR - */ + * Test the computeState method. + * oldState newState expectedFinalState + * NOT_SENT SENT_AND_DEPLOYED NOT_SENT + * NOT_SENT SENT NOT_SENT + * NOT_SENT NOT_SENT NOT_SENT + * NOT_SENT IN_ERROR IN_ERROR + */ @Test public void computeStateTestOriginalStateNotSent() { Exchange exchange = Mockito.mock(Exchange.class); @@ -124,13 +125,13 @@ public class PolicyComponentTest { /** - * Test the computeState method. - * oldState newState expectedFinalState - * SENT SENT SENT - * SENT SENT_AND_DEPLOYED SENT - * SENT IN_ERROR IN_ERROR - * SENT NOT_SENT NOT_SENT - */ + * Test the computeState method. + * oldState newState expectedFinalState + * SENT SENT SENT + * SENT SENT_AND_DEPLOYED SENT + * SENT IN_ERROR IN_ERROR + * SENT NOT_SENT NOT_SENT + */ @Test public void computeStateTestOriginalStateSent() throws IOException { Exchange exchange = Mockito.mock(Exchange.class); @@ -166,13 +167,13 @@ public class PolicyComponentTest { } /** - * Test the computeState method. - * oldState newState expectedFinalState - * SENT_AND_DEPLOYED SENT_AND_DEPLOYED SENT_AND_DEPLOYED - * SENT_AND_DEPLOYED SENT SENT - * SENT_AND_DEPLOYED IN_ERROR IN_ERROR - * SENT_AND_DEPLOYED NOT_SENT NOT_SENT - */ + * Test the computeState method. + * oldState newState expectedFinalState + * SENT_AND_DEPLOYED SENT_AND_DEPLOYED SENT_AND_DEPLOYED + * SENT_AND_DEPLOYED SENT SENT + * SENT_AND_DEPLOYED IN_ERROR IN_ERROR + * SENT_AND_DEPLOYED NOT_SENT NOT_SENT + */ @Test public void computeStateTestOriginalStateSentAndDeployed() throws IOException { Exchange exchange = Mockito.mock(Exchange.class); @@ -209,13 +210,13 @@ public class PolicyComponentTest { /** - * Test the computeState method. - * oldState newState expectedFinalState - * IN_ERROR SENT_AND_DEPLOYED IN_ERROR - * IN_ERROR SENT IN_ERROR - * IN_ERROR IN_ERROR IN_ERROR - * IN_ERROR NOT_SENT IN_ERROR - */ + * Test the computeState method. + * oldState newState expectedFinalState + * IN_ERROR SENT_AND_DEPLOYED IN_ERROR + * IN_ERROR SENT IN_ERROR + * IN_ERROR IN_ERROR IN_ERROR + * IN_ERROR NOT_SENT IN_ERROR + */ @Test public void computeStateTestOriginalStateInError() throws IOException { Exchange exchange = Mockito.mock(Exchange.class); @@ -265,7 +266,8 @@ public class PolicyComponentTest { PolicyModel policyModel2 = new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0"); OperationalPolicy opPolicy = new OperationalPolicy("opPolicy", loopTest, - new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), policyModel2, null, "pdpGroup2", "pdpSubgroup2"); + new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), policyModel2, null, "pdpGroup2", + "pdpSubgroup2"); loopTest.addOperationalPolicy(opPolicy); LoopTemplate loopTemplate = new LoopTemplate("test", "yaml", "svg", 1, null); diff --git a/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java index d918a8e6d..b16aa558d 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java +++ b/src/test/java/org/onap/clamp/loop/PolicyModelServiceItCase.java @@ -119,7 +119,7 @@ public class PolicyModelServiceItCase { /** * This tests a create Policy Model from Tosca. * - * @throws IOException + * @throws IOException In case of failure */ @Test @Transactional @@ -137,7 +137,7 @@ public class PolicyModelServiceItCase { /** * This tests a update Policy Model. * - * @throws IOException + * @throws IOException In case of failure */ @Test @Transactional diff --git a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java index 3f502ff78..2cd301850 100644 --- a/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/policy/downloader/PolicyEngineControllerTestItCase.java @@ -68,9 +68,12 @@ public class PolicyEngineControllerTestItCase { Instant firstExecution = policyController.getLastInstantExecuted(); assertThat(firstExecution).isNotNull(); List<PolicyModel> policyModelsList = policyModelsRepository.findAll(); - assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(8); - assertThat(policyModelsList).contains(new PolicyModel("onap.policies.Monitoring", null, "1.0.0")); - assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0")); + assertThat(policyModelsList.size()).isGreaterThanOrEqualTo(5); + assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.operational.Drools", null, "1.0.0")); + assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.operational.Apex", null, "1.0.0")); + assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.guard.FrequencyLimiter", null, "1.0.0")); + assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.guard.Blacklist", null, "1.0.0")); + assertThat(policyModelsList).contains(new PolicyModel("onap.policies.controlloop.guard.MinMax", null, "2.0.0")); // Re-do it to check that there is no issue with duplicate key policyController.synchronizeAllPolicies(); diff --git a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java index 5686bc161..4b8eee921 100644 --- a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java +++ b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.util.Map; import org.junit.Test; import org.onap.clamp.clds.util.ResourceFileUtil; +import org.onap.clamp.loop.template.PolicyModel; import org.onap.clamp.policy.operational.LegacyOperationalPolicy; import org.onap.clamp.policy.operational.OperationalPolicy; import org.skyscreamer.jsonassert.JSONAssert; @@ -38,10 +39,11 @@ import org.skyscreamer.jsonassert.JSONAssert; public class OperationalPolicyPayloadTest { @Test - public void testOperationalPolicyPayloadConstruction() throws IOException { + public void testOperationalPolicyLegacyPayloadConstruction() throws IOException { JsonObject jsonConfig = new GsonBuilder().create().fromJson( ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class); - OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig, null, null, null, null); + OperationalPolicy policy = new OperationalPolicy("testPolicy.legacy", null, jsonConfig, + new PolicyModel("onap.policies.controlloop.Operational.legacy","","1.0.0","test"), null,null,null); assertThat(policy.createPolicyPayloadYaml()) .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.yaml")); diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 4f1a845c3..54ba0900c 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -128,12 +128,6 @@ clamp.config.files.cldsUsers=classpath:/clds/clds-users.json clamp.config.files.globalProperties=classpath:/clds/templates/globalProperties.json clamp.config.files.sdcController=classpath:/clds/sdc-controllers-config.json -# Properties for Clamp -# DCAE request build properties -# -clamp.config.dcae.template=classpath:/clds/templates/dcae-template.json -clamp.config.dcae.deployment.template=classpath:/clds/templates/dcae-deployment-template.json -# # # Configuration Settings for Policy Engine Components clamp.config.policy.api.url=http4://localhost:${docker.http-cache.port.host} @@ -143,37 +137,9 @@ clamp.config.policy.pap.url=http4://localhost:${docker.http-cache.port.host} clamp.config.policy.pap.userName=healthcheck clamp.config.policy.pap.password=zb!XztG34 -# TCA MicroService Policy request build properties -# -clamp.config.tca.policyid.prefix=DCAE.Config_ -clamp.config.tca.policy.template=classpath:/clds/templates/tca-policy-template.json -clamp.config.tca.template=classpath:/clds/templates/tca-template.json -clamp.config.tca.thresholds.template=classpath:/clds/templates/tca-thresholds-template.json - -# -# -# Operational Policy request build properties -# -clamp.config.op.policyDescription=from clds -# default -clamp.config.op.templateName=ClosedLoopControlName -clamp.config.op.operationTopic=APPC-CL -clamp.config.op.notificationTopic=POLICY-CL-MGT -clamp.config.op.controller=amsterdam -clamp.config.op.policy.appc=APPC -# # Sdc service properties # clamp.config.sdc.csarFolder = ${project.build.directory}/sdc-tests -clamp.config.sdc.blueprint.parser.mapping = classpath:/clds/blueprint-parser-mapping.json -# -clamp.config.ui.location.default=classpath:/clds/templates/ui-location-default.json -# -# if action.test.override is true, then any action will be marked as test=true (even if incoming action request had test=false); otherwise, test flag will be unchanged on the action request -clamp.config.action.test.override=false -# if action.insert.test.event is true, then insert event even if the action is set to test -clamp.config.action.insert.test.event=false -clamp.config.clds.service.cache.invalidate.after.seconds=120 #DCAE Inventory Url Properties clamp.config.dcae.inventory.url=http4://localhost:${docker.http-cache.port.host} diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes?connectionTimeToLive=5000/.file index ab3b40e2f..4b27438cc 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes?connectionTimeToLive=5000/.file @@ -1,40 +1,19 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: - - onap.policies.Monitoring: - version: 1.0.0 - description: A base policy type for all policies that govern monitoring provision - derived_from: tosca.policies.Root - properties: - # Omitted for brevity, see Section 1 - - - onap.policies.controlloop.Operational: - version: 1.0.0 - description: Operational Policy for Control Loops - derived_from: tosca.policies.Root - properties: - # Omitted for brevity, see Section 1 - - - onap.policies.controloop.operational.Drools: + - onap.policies.controlloop.operational.Drools: version: 1.0.0 description: Operational Policy for Control Loops using the Drools PDP - derived_from: onap.policies.controlloop.Operational + derived_from: onapy.policies.controlloop.Operational properties: # Omitted for brevity, see Section 1 - - onap.policies.controloop.operational.Apex: + - onap.policies.controlloop.operational.Apex: version: 1.0.0 description: Operational Policy for Control Loops using the APEX PDP derived_from: onap.policies.controlloop.Operational properties: # Omitted for brevity, see Section 1 - - onap.policies.controlloop.Guard: - version: 1.0.0 - description: Operational Policy for Control Loops - derived_from: tosca.policies.Root - properties: - # Omitted for brevity, see Section 1 - - onap.policies.controlloop.guard.FrequencyLimiter: version: 1.0.0 description: Supports limiting the frequency of actions being taken by a Actor. @@ -50,7 +29,7 @@ policy_types: # Omitted for brevity, see Section 1 - onap.policies.controlloop.guard.MinMax: - version: 1.0.0 + version: 2.0.0 description: Supports Min/Max number of VF Modules derived_from: onap.policies.controlloop.Guard properties: diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.file deleted file mode 100644 index b0119f887..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.file +++ /dev/null @@ -1,158 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_0_0 -policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy -data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.header b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.header deleted file mode 100644 index 6a280d972..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0?connectionTimeToLive=5000/.header +++ /dev/null @@ -1 +0,0 @@ -{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"}
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.file deleted file mode 100644 index b0119f887..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.file +++ /dev/null @@ -1,158 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_0_0 -policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy -data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.header b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.header deleted file mode 100644 index 6a280d972..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0?connectionTimeToLive=5000/.header +++ /dev/null @@ -1 +0,0 @@ -{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"}
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.Blacklist/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.Blacklist/versions/1.0.0?connectionTimeToLive=5000/.file index b0119f887..91a825212 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.Blacklist/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.Blacklist/versions/1.0.0?connectionTimeToLive=5000/.file @@ -1,158 +1,40 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy + onap.policies.controlloop.Guard: + derived_from: tosca.policies.Root + version: 1.0.0 + description: Guard Policies for Control Loop Operational Policies + onap.policies.controlloop.guard.Blacklist: + derived_from: onap.policies.controlloop.Guard + version: 1.0.0 + description: Supports blacklist of VNF's from performing control loop actions on. + properties: + blacklist_policy: + type: map + description: null + entry_schema: + type: onap.datatypes.guard.Blacklist data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold + onap.datatypes.guard.Blacklist: + derived_from: tosca.datatypes.Root + properties: + actor: + type: string + description: Specifies the Actor + required: true + recipe: + type: string + description: Specified the Recipe + required: true + time_range: + type: tosca.datatypes.TimeInterval + description: An optional range of time during the day the blacklist is valid for. + required: false + controlLoopName: + type: string + description: An optional specific control loop to apply this guard to. + required: false + blacklist: + type: list + description: List of VNF's + required: true
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.FrequencyLimiter/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.FrequencyLimiter/versions/1.0.0?connectionTimeToLive=5000/.file index b0119f887..45e5471fc 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.FrequencyLimiter/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.FrequencyLimiter/versions/1.0.0?connectionTimeToLive=5000/.file @@ -1,158 +1,50 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy + onap.policies.controlloop.Guard: + derived_from: tosca.policies.Root + version: 1.0.0 + description: Guard Policies for Control Loop Operational Policies + onap.policies.controlloop.guard.FrequencyLimiter: + derived_from: onap.policies.controlloop.Guard + version: 1.0.0 + description: Supports limiting the frequency of actions being taken by a Actor. + properties: + frequency_policy: + type: map + description: null + entry_schema: + type: onap.datatypes.guard.FrequencyLimiter data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold + onap.datatypes.guard.FrequencyLimiter: + derived_from: tosca.datatypes.Root + properties: + actor: + type: string + description: Specifies the Actor + required: true + recipe: + type: string + description: Specified the Recipe + required: true + time_window: + type: scalar-unit.time + description: The time window to count the actions against. + required: true + limit: + type: integer + description: The limit + required: true + constraints: + - greater_than: 0 + time_range: + type: tosca.datatypes.TimeInterval + description: An optional range of time during the day the frequency is valid for. + required: false + controlLoopName: + type: string + description: An optional specific control loop to apply this guard to. + required: false + target: + type: string + description: An optional specific VNF to apply this guard to. + required: false
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.MinMax/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.MinMax/versions/1.0.0?connectionTimeToLive=5000/.file index b0119f887..54c4204e2 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.MinMax/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controlloop.guard.MinMax/versions/1.0.0?connectionTimeToLive=5000/.file @@ -1,158 +1,44 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy + onap.policies.controlloop.Guard: + derived_from: tosca.policies.Root + version: 1.0.0 + description: Guard Policies for Control Loop Operational Policies + onap.policies.controlloop.guard.MinMax: + derived_from: onap.policies.controlloop.Guard + version: 1.0.0 + description: Supports Min/Max number of VF Modules + properties: + minmax_policy: + type: map + description: null + entry_schema: + type: onap.datatypes.guard.MinMax data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold + onap.datatypes.guard.MinMax: + derived_from: tosca.datatypes.Root + properties: + actor: + type: string + description: Specifies the Actor + required: true + recipe: + type: string + description: Specified the Recipe + required: true + time_range: + type: tosca.datatypes.TimeInterval + description: An optional range of time during the day the Min/Max limit is valid for. + required: false + controlLoopName: + type: string + description: An optional specific control loop to apply this guard to. + required: false + min_vf_module_instances: + type: integer + required: true + description: The minimum instances of this VF-Module + max_vf_module_instances: + type: integer + required: false + description: The maximum instances of this VF-Module
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.file deleted file mode 100644 index b0119f887..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.file +++ /dev/null @@ -1,158 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_0_0 -policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy -data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.header b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.header deleted file mode 100644 index 6a280d972..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Apex/versions/1.0.0?connectionTimeToLive=5000/.header +++ /dev/null @@ -1 +0,0 @@ -{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"}
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.file deleted file mode 100644 index b0119f887..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.file +++ /dev/null @@ -1,158 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_0_0 -policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy -data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.header b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.header deleted file mode 100644 index 6a280d972..000000000 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.controloop.operational.Drools/versions/1.0.0?connectionTimeToLive=5000/.header +++ /dev/null @@ -1 +0,0 @@ -{"Transfer-Encoding": "chunked", "Set-Cookie": "JSESSIONID=158qxkdtdobkd1umr3ikkgrmlx;Path=/", "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", "Server": "Jetty(9.3.21.v20170918)", "Content-Type": "application/json", "X-ECOMP-RequestID": "e2ddb3c8-994f-47df-b4dc-097d4fb55c08"}
\ No newline at end of file diff --git a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?connectionTimeToLive=5000/.file b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?connectionTimeToLive=5000/.file index b0119f887..5fa4308db 100644 --- a/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?connectionTimeToLive=5000/.file +++ b/src/test/resources/http-cache/example/policy/api/v1/policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app/versions/1.0.0?connectionTimeToLive=5000/.file @@ -1,158 +1,159 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 policy_types: - onap.policies.Monitoring: - derived_from: tosca.policies.Root - description: a base policy type for all policies that governs monitoring provisioning - onap.policies.monitoring.cdap.tca.hi.lo.app: - derived_from: onap.policies.Monitoring - version: 1.0.0 - properties: - tca_policy: - type: map - description: TCA Policy JSON - entry_schema: - type: onap.datatypes.monitoring.tca_policy + onap.policies.Monitoring: + derived_from: tosca.policies.Root + version: 1.0.0 + description: a base policy type for all policies that govern monitoring provisioning + onap.policies.monitoring.cdap.tca.hi.lo.app: + derived_from: onap.policies.Monitoring + version: 1.0.0 + properties: + tca_policy: + type: map + description: TCA Policy JSON + entry_schema: + type: onap.datatypes.monitoring.tca_policy data_types: - onap.datatypes.monitoring.metricsPerEventName: - derived_from: tosca.datatypes.Root - properties: - controlLoopSchemaType: - type: string - required: true - description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM - constraints: - - valid_values: - - VM - - VNF - eventName: - type: string - required: true - description: Event name to which thresholds need to be applied - policyName: - type: string - required: true - description: TCA Policy Scope Name - policyScope: - type: string - required: true - description: TCA Policy Scope - policyVersion: - type: string - required: true - description: TCA Policy Scope Version - thresholds: - type: list - required: true - description: Thresholds associated with eventName - entry_schema: - type: onap.datatypes.monitoring.thresholds - onap.datatypes.monitoring.tca_policy: - derived_from: tosca.datatypes.Root - properties: - domain: - type: string - required: true - description: Domain name to which TCA needs to be applied - default: measurementsForVfScaling - constraints: - - equal: measurementsForVfScaling - metricsPerEventName: - type: list - required: true - description: Contains eventName and threshold details that need to be applied to given eventName - entry_schema: - type: onap.datatypes.monitoring.metricsPerEventName - onap.datatypes.monitoring.thresholds: - derived_from: tosca.datatypes.Root - properties: - closedLoopControlName: - type: string - required: true - description: Closed Loop Control Name associated with the threshold - closedLoopEventStatus: - type: string - required: true - description: Closed Loop Event Status of the threshold - constraints: - - valid_values: - - ONSET - - ABATED - direction: - type: string - required: true - description: Direction of the threshold - constraints: - - valid_values: - - LESS - - LESS_OR_EQUAL - - GREATER - - GREATER_OR_EQUAL - - EQUAL - fieldPath: - type: string - required: true - description: Json field Path as per CEF message which needs to be analyzed for TCA - constraints: - - valid_values: - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated - - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait - - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage - - $.event.measurementsForVfScalingFields.meanRequestLatency - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree - - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed - - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value - severity: - type: string - required: true - description: Threshold Event Severity - constraints: - - valid_values: - - CRITICAL - - MAJOR - - MINOR - - WARNING - - NORMAL - thresholdValue: - type: integer - required: true - description: Threshold value for the field Path inside CEF message - version: - type: string - required: true - description: Version number associated with the threshold + onap.datatypes.monitoring.metricsPerEventName: + derived_from: tosca.datatypes.Root + properties: + controlLoopSchemaType: + type: string + required: true + description: Specifies Control Loop Schema Type for the event Name e.g. VNF, VM + constraints: + - valid_values: + - VM + - VNF + eventName: + type: string + required: true + description: Event name to which thresholds need to be applied + policyName: + type: string + required: true + description: TCA Policy Scope Name + policyScope: + type: string + required: true + description: TCA Policy Scope + policyVersion: + type: string + required: true + description: TCA Policy Scope Version + thresholds: + type: list + required: true + description: Thresholds associated with eventName + entry_schema: + type: onap.datatypes.monitoring.thresholds + onap.datatypes.monitoring.tca_policy: + derived_from: tosca.datatypes.Root + properties: + domain: + type: string + required: true + description: Domain name to which TCA needs to be applied + default: measurementsForVfScaling + constraints: + - equal: measurementsForVfScaling + metricsPerEventName: + type: list + required: true + description: Contains eventName and threshold details that need to be applied to given eventName + entry_schema: + type: onap.datatypes.monitoring.metricsPerEventName + onap.datatypes.monitoring.thresholds: + derived_from: tosca.datatypes.Root + properties: + closedLoopControlName: + type: string + required: true + description: Closed Loop Control Name associated with the threshold + closedLoopEventStatus: + type: string + required: true + description: Closed Loop Event Status of the threshold + constraints: + - valid_values: + - ONSET + - ABATED + direction: + type: string + required: true + description: Direction of the threshold + constraints: + - valid_values: + - LESS + - LESS_OR_EQUAL + - GREATER + - GREATER_OR_EQUAL + - EQUAL + fieldPath: + type: string + required: true + description: Json field Path as per CEF message which needs to be analyzed for TCA + constraints: + - valid_values: + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated + - $.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait + - $.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage + - $.event.measurementsForVfScalingFields.meanRequestLatency + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree + - $.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed + - $.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value + severity: + type: string + required: true + description: Threshold Event Severity + constraints: + - valid_values: + - CRITICAL + - MAJOR + - MINOR + - WARNING + - NORMAL + thresholdValue: + type: integer + required: true + description: Threshold value for the field Path inside CEF message + version: + type: string + required: true + description: Version number associated with the threshold
\ No newline at end of file diff --git a/src/test/resources/tosca/operational-policy-payload.json b/src/test/resources/tosca/operational-policy-payload.json index bfb109ec1..033eecd17 100644 --- a/src/test/resources/tosca/operational-policy-payload.json +++ b/src/test/resources/tosca/operational-policy-payload.json @@ -1,4 +1,4 @@ { - "policy-id": "testPolicy", + "policy-id": "testPolicy.legacy", "content": "controlLoop%3A%0A++abatement%3A+true%0A++controlLoopName%3A+LOOP_ASJOy_v1_0_ResourceInstanceName1_tca%0A++timeout%3A+0%0A++trigger_policy%3A+policy1%0Apolicies%3A%0A-+actor%3A+APPC%0A++failure%3A+policy2%0A++failure_exception%3A+final_failure_exception%0A++failure_guard%3A+final_failure_guard%0A++failure_retries%3A+final_failure_retries%0A++failure_timeout%3A+final_failure_timeout%0A++id%3A+policy1%0A++payload%3A%0A++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B10%5D.value%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B15%5D.value%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B22%5D.value%22%7D%5D%27%0A++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++recipe%3A+Restart%0A++retry%3A+0%0A++success%3A+final_success%0A++target%3A%0A++++resourceID%3A+vLoadBalancerMS%0A++++type%3A+VNF%0A++timeout%3A+0%0A-+actor%3A+SO%0A++failure%3A+final_failure%0A++failure_exception%3A+final_failure_exception%0A++failure_guard%3A+final_failure_guard%0A++failure_retries%3A+final_failure_retries%0A++failure_timeout%3A+final_failure_timeout%0A++id%3A+policy2%0A++recipe%3A+VF+Module+Create%0A++retry%3A+0%0A++success%3A+final_success%0A++target%3A%0A++++modelCustomizationId%3A+1bffdc31-a37d-4dee-b65c-dde623a76e52%0A++++modelInvariantId%3A+ca052563-eb92-4b5b-ad41-9111768ce043%0A++++modelName%3A+Vloadbalancerms..vpkg..module-1%0A++++modelVersion%3A+1%0A++++modelVersionId%3A+1e725ccc-b823-4f67-82b9-4f4367070dbc%0A++++resourceID%3A+Vloadbalancerms..vpkg..module-1%0A++++type%3A+VFMODULE%0A++timeout%3A+0%0A" }
\ No newline at end of file diff --git a/src/test/resources/tosca/operational-policy-payload.yaml b/src/test/resources/tosca/operational-policy-payload.yaml index 553a8afd4..69c86cc84 100644 --- a/src/test/resources/tosca/operational-policy-payload.yaml +++ b/src/test/resources/tosca/operational-policy-payload.yaml @@ -1,11 +1,11 @@ tosca_definitions_version: tosca_simple_yaml_1_0_0 topology_template: policies: - - testPolicy: + - testPolicy.legacy: type: onap.policies.controlloop.Operational version: 1.0.0 metadata: - policy-id: testPolicy + policy-id: testPolicy.legacy properties: controlLoop: timeout: '0' diff --git a/ui-react/src/LoopUI.js b/ui-react/src/LoopUI.js index 471e87200..bc3f2355e 100644 --- a/ui-react/src/LoopUI.js +++ b/ui-react/src/LoopUI.js @@ -49,6 +49,7 @@ import LoopService from './api/LoopService'; import UploadToscaPolicyModal from './components/dialogs/Tosca/UploadToscaPolicyModal'; import ViewToscaPolicyModal from './components/dialogs/Tosca/ViewToscaPolicyModal'; import ViewLoopTemplatesModal from './components/dialogs/Tosca/ViewLoopTemplatesModal'; +import ManageDictionaries from './components/dialogs/ManageDictionaries/ManageDictionaries'; import PerformAction from './components/dialogs/PerformActions'; import RefreshStatus from './components/dialogs/RefreshStatus'; import DeployLoopModal from './components/dialogs/Loop/DeployLoopModal'; @@ -255,6 +256,7 @@ export default class LoopUI extends React.Component { <Route path="/uploadToscaPolicyModal" render={(routeProps) => (<UploadToscaPolicyModal {...routeProps} />)} /> <Route path="/viewToscaPolicyModal" render={(routeProps) => (<ViewToscaPolicyModal {...routeProps} />)} /> <Route path="/ViewLoopTemplatesModal" render={(routeProps) => (<ViewLoopTemplatesModal {...routeProps} />)} /> + <Route path="/ManageDictionaries" render={(routeProps) => (<ManageDictionaries {...routeProps} />)} /> <Route path="/operationalPolicyModal" render={(routeProps) => (<OperationalPolicyModal {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} /> <Route path="/policyModal/:policyInstanceType/:policyName" render={(routeProps) => (<PolicyModal {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop}/>)} /> diff --git a/ui-react/src/__snapshots__/LoopUI.test.js.snap b/ui-react/src/__snapshots__/LoopUI.test.js.snap index 7d2c4467e..9de232dd6 100644 --- a/ui-react/src/__snapshots__/LoopUI.test.js.snap +++ b/ui-react/src/__snapshots__/LoopUI.test.js.snap @@ -17,6 +17,10 @@ exports[`Verify LoopUI Test the render method 1`] = ` render={[Function]} /> <Route + path="/ManageDictionaries" + render={[Function]} + /> + <Route path="/operationalPolicyModal" render={[Function]} /> diff --git a/ui-react/src/__snapshots__/OnapClamp.test.js.snap b/ui-react/src/__snapshots__/OnapClamp.test.js.snap index e195523b9..91812b7c5 100644 --- a/ui-react/src/__snapshots__/OnapClamp.test.js.snap +++ b/ui-react/src/__snapshots__/OnapClamp.test.js.snap @@ -42,6 +42,10 @@ exports[`Verify OnapClamp Test the render method 1`] = ` render={[Function]} /> <Route + path="/ManageDictionaries" + render={[Function]} + /> + <Route path="/operationalPolicyModal" render={[Function]} /> diff --git a/ui-react/src/api/TemplateService.js b/ui-react/src/api/TemplateService.js index 6a65d9a04..124d29c27 100644 --- a/ui-react/src/api/TemplateService.js +++ b/ui-react/src/api/TemplateService.js @@ -38,20 +38,159 @@ export default class TemplateService { }); } - static getBlueprintMicroServiceTemplates() { - return fetch('restservices/clds/v2/templates', { method: 'GET', credentials: 'same-origin', }) - .then(function (response) { - console.debug("getBlueprintMicroServiceTemplates response received: ", response.status); - if (response.ok) { - return response.json(); - } else { - console.error("getBlueprintMicroServiceTemplates query failed"); - return {}; - } - }) - .catch(function (error) { - console.error("getBlueprintMicroServiceTemplates error received", error); - return {}; - }); - } -} + static getBlueprintMicroServiceTemplates() { + return fetch('restservices/clds/v2/templates', { method: 'GET', credentials: 'same-origin', }) + .then(function (response) { + console.debug("getBlueprintMicroServiceTemplates response received: ", response.status); + if (response.ok) { + return response.json(); + } else { + console.error("getBlueprintMicroServiceTemplates query failed"); + return {}; + } + }) + .catch(function (error) { + console.error("getBlueprintMicroServiceTemplates error received", error); + return {}; + }); + } + + static getDictionary() { + return fetch('restservices/clds/v2/dictionary/', { method: 'GET', credentials: 'same-origin', }) + .then(function (response) { + console.debug("getDictionary response received: ", response.status); + if (response.ok) { + return response.json(); + } else { + console.error("getDictionary query failed"); + return {}; + } + }) + .catch(function (error) { + console.error("getDictionary error received", error); + return {}; + }); + } + + static getDictionaryElements(dictionaryName) { + return fetch('restservices/clds/v2/dictionary/' + dictionaryName, { + method: 'GET', + headers: { + "Content-Type": "application/json", + }, + credentials: 'same-origin', + }) + .then(function (response) { + console.debug("getDictionaryElements response received: ", response.status); + if (response.ok) { + return response.json(); + } else { + console.error("getDictionaryElements query failed"); + return {}; + } + }) + .catch(function (error) { + console.error("getDictionaryElements error received", error); + return {}; + }); + } + + static insDictionary(jsonData) { + console.log("dictionaryName is", jsonData.name) + return fetch('/restservices/clds/v2/dictionary/', { + method: 'PUT', + credentials: 'same-origin', + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(jsonData) + }) + .then(function (response) { + console.debug("insDictionary response received: ", response.status); + if (response.ok) { + return response.status; + } else { + var errorMessage = response.status; + console.error("insDictionary query failed", response.status); + return errorMessage; + } + }) + .catch(function (error) { + console.error("insDictionary error received", error); + return ""; + }); + } + + static insDictionaryElements(jsonData) { + console.log("dictionaryName is", jsonData.name) + return fetch('/restservices/clds/v2/dictionary/' + jsonData.name, { + method: 'PUT', + credentials: 'same-origin', + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(jsonData) + }) + .then(function (response) { + console.debug("insDictionary response received: ", response.status); + if (response.ok) { + return response.status; + } else { + var errorMessage = response.status; + console.error("insDictionary query failed", response.status); + return errorMessage; + } + }) + .catch(function (error) { + console.error("insDictionary error received", error); + return ""; + }); + } + + static deleteDictionary(dictionaryName) { + console.log("inside templaemenu service", dictionaryName) + return fetch('restservices/clds/v2/dictionary/' + dictionaryName, { + method: 'DELETE', + headers: { + "Content-Type": "application/json", + }, + credentials: 'same-origin', + }) + .then(function (response) { + console.debug("deleteDictionary response received: ", response.status); + if (response.ok) { + return response.status; + } else { + console.error("deleteDictionary query failed"); + return {}; + } + }) + .catch(function (error) { + console.error("deleteDictionary error received", error); + return {}; + }); + } + + static deleteDictionaryElements(dictionaryData) { + return fetch('restservices/clds/v2/dictionary/' + dictionaryData.name + '/elements/' + dictionaryData.shortName , { + method: 'DELETE', + headers: { + "Content-Type": "application/json", + }, + credentials: 'same-origin', + }) + .then(function (response) { + console.debug("deleteDictionary response received: ", response.status); + if (response.ok) { + return response.status; + } else { + console.error("deleteDictionary query failed"); + return {}; + } + }) + .catch(function (error) { + console.error("deleteDictionary error received", error); + return {}; + }); + } + } diff --git a/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js b/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js new file mode 100644 index 000000000..189523765 --- /dev/null +++ b/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.js @@ -0,0 +1,559 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * + */ + + +import React from 'react'; +import Button from 'react-bootstrap/Button'; +import Modal from 'react-bootstrap/Modal'; +import styled from 'styled-components'; +import TemplateMenuService from '../../../api/TemplateService'; +import MaterialTable, {MTableToolbar} from "material-table"; +import IconButton from '@material-ui/core/IconButton'; +import Tooltip from '@material-ui/core/Tooltip'; +import Grid from '@material-ui/core/Grid'; +import { forwardRef } from 'react'; +import AddBox from '@material-ui/icons/AddBox'; +import ArrowUpward from '@material-ui/icons/ArrowUpward'; +import Check from '@material-ui/icons/Check'; +import ChevronLeft from '@material-ui/icons/ChevronLeft'; +import VerticalAlignTopIcon from '@material-ui/icons/VerticalAlignTop'; +import VerticalAlignBottomIcon from '@material-ui/icons/VerticalAlignBottom'; +import ChevronRight from '@material-ui/icons/ChevronRight'; +import Clear from '@material-ui/icons/Clear'; +import DeleteOutline from '@material-ui/icons/DeleteOutline'; +import Edit from '@material-ui/icons/Edit'; +import FilterList from '@material-ui/icons/FilterList'; +import FirstPage from '@material-ui/icons/FirstPage'; +import LastPage from '@material-ui/icons/LastPage'; +import Remove from '@material-ui/icons/Remove'; +import Search from '@material-ui/icons/Search'; +import ViewColumn from '@material-ui/icons/ViewColumn'; + + +const ModalStyled = styled(Modal)` + background-color: transparent; +` +const cellStyle = { border: '1px solid black' }; +const headerStyle = { backgroundColor: '#ddd', border: '2px solid black' }; +const rowHeaderStyle = {backgroundColor:'#ddd', fontSize: '15pt', text: 'bold', border: '1px solid black'}; +var dictList = []; + +function SelectSubDictType(props) { + const {onChange} = props; + const selectedValues = (e) => { + var options = e.target.options; + var SelectedDictTypes = ''; + for (var dictType = 0, values = options.length; dictType < values; dictType++) { + if (options[dictType].selected) { + SelectedDictTypes = SelectedDictTypes.concat(options[dictType].value); + SelectedDictTypes = SelectedDictTypes.concat('|'); + } + } + SelectedDictTypes = SelectedDictTypes.slice(0,-1); + onChange(SelectedDictTypes); + } + return( + <div> + <select multiple={true} onChange={selectedValues}> + <option value="string">string</option> + <option value="number">number</option> + <option value="datetime">datetime</option> + <option value="map">map</option> + <option value="json">json</option> + </select> + </div> + ) +} + +function SubDict(props) { + const {onChange} = props; + const subDicts = []; + subDicts.push('Default'); + for(var item in dictList) { + if(dictList[item].secondLevelDictionary === 1) { + subDicts.push(dictList[item].name); + } + }; + subDicts.push(''); + var optionItems = subDicts.map( + (item) => <option key={item}>{item}</option> + ); + function selectedValue (e) { + onChange(e.target.value); + } + return( + <select onChange={selectedValue} > + {optionItems} + </select> + ) +} + +export default class ManageDictionaries extends React.Component { + constructor(props, context) { + super(props, context); + this.handleClose = this.handleClose.bind(this); + this.getDictionary = this.getDictionary.bind(this); + this.getDictionaryElements = this.getDictionaryElements.bind(this); + this.clickHandler = this.clickHandler.bind(this); + this.addDictionary = this.addDictionary.bind(this); + this.deleteDictionary = this.deleteDictionary.bind(this); + this.fileSelectedHandler = this.fileSelectedHandler.bind(this); + this.state = { + show: true, + selectedFile: '', + dictNameFlag: false, + exportFilename: '', + content: null, + newDict: '', + newDictItem: '', + delDictItem: '', + addDict: false, + delData: '', + delDict: false, + validImport: false, + dictionaryNames: [], + dictionaryElements: [], + tableIcons: { + Add: forwardRef((props, ref) => <AddBox {...props} ref={ref} />), + Check: forwardRef((props, ref) => <Check {...props} ref={ref} />), + Clear: forwardRef((props, ref) => <Clear {...props} ref={ref} />), + Delete: forwardRef((props, ref) => <DeleteOutline {...props} ref={ref} />), + DetailPanel: forwardRef((props, ref) => <ChevronRight {...props} ref={ref} />), + Edit: forwardRef((props, ref) => <Edit {...props} ref={ref} />), + Export: forwardRef((props, ref) => <VerticalAlignBottomIcon {...props} ref={ref} />), + Filter: forwardRef((props, ref) => <FilterList {...props} ref={ref} />), + FirstPage: forwardRef((props, ref) => <FirstPage {...props} ref={ref} />), + LastPage: forwardRef((props, ref) => <LastPage {...props} ref={ref} />), + NextPage: forwardRef((props, ref) => <ChevronRight {...props} ref={ref} />), + PreviousPage: forwardRef((props, ref) => <ChevronLeft {...props} ref={ref} />), + ResetSearch: forwardRef((props, ref) => <Clear {...props} ref={ref} />), + Search: forwardRef((props, ref) => <Search {...props} ref={ref} />), + SortArrow: forwardRef((props, ref) => <ArrowUpward {...props} ref={ref} />), + ThirdStateCheck: forwardRef((props, ref) => <Remove {...props} ref={ref} />), + ViewColumn: forwardRef((props, ref) => <ViewColumn {...props} ref={ref} />) + }, + dictColumns: [ + { + title: "Dictionary Name", field: "name",editable: 'onAdd', + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Sub Dictionary ?", field: "secondLevelDictionary", lookup: {0: 'No', 1: 'Yes'}, + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Dictionary Type", field: "subDictionaryType",lookup: {string: 'string', number: 'number'}, + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Updated By", field: "updatedBy", editable: 'never', + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Last Updated Date", field: "updatedDate", editable: 'never', + cellStyle: cellStyle, + headerStyle: headerStyle + } + ], + dictElementColumns: [ + { + title: "Element Short Name", field: "shortName",editable: 'onAdd', + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Element Name", field: "name", + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Element Description", field: "description", + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Element Type", field: "type", + editComponent: props => ( + <div> + <SelectSubDictType value={props.value} onChange={props.onChange} /> + </div> + ), + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Sub-Dictionary", field: "subDictionary", + editComponent: props => ( + <div> + <SubDict value={props.value} onChange={props.onChange} /> + </div> + ), + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Updated By", field: "updatedBy", editable: 'never', + cellStyle: cellStyle, + headerStyle: headerStyle + }, + { + title: "Updated Date", field: "updatedDate", editable: 'never', + cellStyle: cellStyle, + headerStyle: headerStyle + } + ] + } + } + + componentWillMount() { + this.getDictionary(); + } + + getDictionary() { + TemplateMenuService.getDictionary().then(dictionaryNames => { + this.setState({ dictionaryNames: dictionaryNames }) + }); + var dictNamesingetDict = this.state.dictionaryNames; + } + + getDictionaryElements(dictionaryName) { + TemplateMenuService.getDictionaryElements(dictionaryName).then(dictionaryElements => { + dictList = this.state.dictionaryNames; + this.setState({ dictionaryElements: dictionaryElements.dictionaryElements}); + }); + } + + clickHandler(rowData) { + this.setState({ + dictNameFlag: false, + addDict: false, + }); + } + + handleClose() { + this.setState({ show: false }); + this.props.history.push('/'); + } + + addDictionary() { + var modifiedData = []; + if(this.state.newDict !== '') { + modifiedData = this.state.newDict; + } else { + modifiedData = {"name": this.state.dictionaryName, 'dictionaryElements': this.state.newDictItem}; + } + if(this.state.newDictItem === '') { + TemplateMenuService.insDictionary(modifiedData).then(resp => { + }); + } else { + TemplateMenuService.insDictionaryElements(modifiedData).then(resp => { + }); + } + } + + deleteDictionary() { + var modifiedData = []; + if(this.state.delData !== '') { + modifiedData = this.state.delData.name; + } else { + modifiedData = {"name": this.state.dictionaryName, "shortName": this.state.delDictItem.shortName}; + } + if(this.state.delDictItem === '') { + TemplateMenuService.deleteDictionary(modifiedData).then(resp => { + }); + } else { + TemplateMenuService.deleteDictionaryElements(modifiedData).then(resp => { + }); + } + } + + fileSelectedHandler = (event) => { + const text = this; + var dictionaryElements = []; + if (event.target.files[0].type === 'text/csv' ) { + if (event.target.files && event.target.files[0]) { + let reader = new FileReader(); + reader.onload = function(e) { + var dictElems = reader.result.split('\n'); + var jsonObj = []; + var headers = dictElems[0].split(','); + for(var i = 0; i < dictElems.length; i++) { + var data = dictElems[i].split(','); + var obj = {}; + for(var j = 0; j < data.length; j++) { + obj[headers[j].trim()] = data[j].trim(); + } + jsonObj.push(obj); + } + JSON.stringify(jsonObj); + const dictKeys = ['Element Short Name','Element Name','Element Description','Element Type','Sub-Dictionary']; + const mandatoryKeys = [ 'Element Short Name', 'Element Name', 'Element Type' ]; + const validTypes = ['string','number','datetime','json','map']; + if (!dictElems){ + + text.setState({validData: false}); + } else if (headers.length !== dictKeys.length){ + text.setState({validImport: false}); + } else { + var subDictionaries = []; + for(var item in dictList) { + if(dictList[item].secondLevelDictionary === 1) { + subDictionaries.push(dictList[item].name); + } + }; + subDictionaries = subDictionaries.toString(); + var row = 0; + for (var dictElem of jsonObj){ + ++row; + for (var itemKey in dictElem){ + var value = dictElem[itemKey].trim(); + if (dictKeys.indexOf(itemKey) < 0){ + var errorMessage = 'unknown field name of, ' + itemKey + ', found in CSV header'; + text.setState({validImport: false}); + alert(errorMessage); + break; + } else if (value === "" && mandatoryKeys.indexOf(itemKey) >= 0){ + errorMessage = 'value for ' + itemKey + ', at row #, ' + row + ', is empty but required'; + text.setState({validImport: false}); + alert(errorMessage); + break; + } else if (itemKey === 'Element Type' && validTypes.indexOf(value) < 0 && row > 1) { + errorMessage = 'invalid dictElemenType of ' + value + ' at row #' + row; + text.setState({validImport: false}); + alert(errorMessage); + break; + } else if (value !== "" && itemKey === 'Sub-Dictionary' && subDictionaries.indexOf(value) < 0 && row > 1) { + errorMessage = 'invalid subDictionary of ' + value + ' at row #' + row; + text.setState({validImport: false}); + alert(errorMessage); + } + } + } + } + const headerKeys = ['shortName','name','description','type','subDictionary']; + + for(i = 1; i < dictElems.length; i++) { + data = dictElems[i].split(','); + obj = {}; + for(j = 0; j < data.length; j++) { + obj[headerKeys[j].trim()] = data[j].trim(); + } + dictionaryElements.push(obj); + } + text.setState({newDictItem: dictionaryElements, addDict: true}); + } + reader.readAsText(event.target.files[0]); + } + this.setState({selectedFile: event.target.files[0]}) + } else { + text.setState({validImport: false}); + alert('Please upload .csv extention files only.'); + } + + } + + render() { + return ( + <ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}> + <Modal.Header closeButton> + <Modal.Title>Manage Dictionaries</Modal.Title> + </Modal.Header> + <Modal.Body> + {!this.state.dictNameFlag? <MaterialTable + title={"Dictionary List"} + data={this.state.dictionaryNames} + columns={this.state.dictColumns} + icons={this.state.tableIcons} + onRowClick={(event, rowData) => {this.getDictionaryElements(rowData.name);this.setState({dictNameFlag: true, exportFilename: rowData.name, dictionaryName: rowData.name})}} + options={{ + headerStyle: rowHeaderStyle, + }} + editable={{ + onRowAdd: newData => + new Promise((resolve, reject) => { + setTimeout(() => { + { + const dictionaryNames = this.state.dictionaryNames; + var validData = true; + if(/[^a-zA-Z0-9-_.]/.test(newData.name)) { + validData = false; + alert('Please enter alphanumberic input. Only allowed special characters are:(period, hyphen, underscore)'); + } + for (var i = 0; i < this.state.dictionaryNames.length; i++) { + if (this.state.dictionaryNames[i].name === newData.name) { + validData = false; + alert(newData.name + ' dictionary name already exists') + } + } + if(validData){ + dictionaryNames.push(newData); + this.setState({ dictionaryNames }, () => resolve()); + this.setState({addDict: true, newDict: newData}); + } + } + resolve(); + }, 1000); + }), + onRowUpdate: (newData, oldData) => + new Promise((resolve, reject) => { + setTimeout(() => { + { + const dictionaryNames = this.state.dictionaryNames; + var validData = true; + if(/[^a-zA-Z0-9-_.]/.test(newData.name)) { + validData = false; + alert('Please enter alphanumberic input. Only allowed special characters are:(period, hyphen, underscore)'); + } + if(validData){ + const index = dictionaryNames.indexOf(oldData); + dictionaryNames[index] = newData; + this.setState({ dictionaryNames }, () => resolve()); + this.setState({addDict: true, newDict: newData}); + } + } + resolve(); + }, 1000); + }), + onRowDelete: oldData => + new Promise((resolve, reject) => { + setTimeout(() => { + { + let data = this.state.dictionaryNames; + const index = data.indexOf(oldData); + data.splice(index, 1); + this.setState({ data }, () => resolve()); + this.setState({delDict: true, delData: oldData}) + } + resolve() + }, 1000) + }) + }} + />:"" + } + {this.state.dictNameFlag? <MaterialTable + title={"Dictionary Elements List"} + data={this.state.dictionaryElements} + columns={this.state.dictElementColumns} + icons={this.state.tableIcons} + options={{ + exportButton: true, + exportFileName: this.state.exportFilename, + headerStyle:{backgroundColor:'white', fontSize: '15pt', text: 'bold', border: '1px solid black'} + }} + components={{ + Toolbar: props => ( + <div> + <MTableToolbar {...props} /> + <div> + <Grid item container xs={12} alignItems="flex-end" direction="column" justify="flex-end"> + <Tooltip title="Import" placement = "bottom"> + <IconButton aria-label="import" onClick={() => this.fileUpload.click()}> + <VerticalAlignTopIcon /> + </IconButton> + </Tooltip> + </Grid> + </div> + <input type="file" ref={(fileUpload) => {this.fileUpload = fileUpload;}} style={{ visibility: 'hidden'}} onChange={this.fileSelectedHandler} /> + </div> + ) + }} + editable={{ + onRowAdd: newData => + new Promise((resolve, reject) => { + setTimeout(() => { + { + const dictionaryElements = this.state.dictionaryElements; + var validData = true; + for (var i = 0; i < this.state.dictionaryElements.length; i++) { + if (this.state.dictionaryElements[i].shortName === newData.shortName) { + validData = false; + alert(newData.shortname + 'short name already exists') + } + } + if(/[^a-zA-Z0-9-_.]/.test(newData.shortName)) { + validData = false; + alert('Please enter alphanumberic input. Only allowed special characters are:(period, hyphen, underscore)'); + } + if(!newData.type){ + validData = false; + alert('Element Type cannot be null'); + } + if(validData){ + dictionaryElements.push(newData); + this.setState({ dictionaryElements }, () => resolve()); + this.setState({addDict: true, newDictItem: [newData]}); + } + } + resolve(); + }, 1000); + }), + onRowUpdate: (newData, oldData) => + new Promise((resolve, reject) => { + setTimeout(() => { + { + const dictionaryElements = this.state.dictionaryElements; + var validData = true; + if(!newData.type){ + validData = false; + alert('Element Type cannot be null'); + } + if(validData){ + const index = dictionaryElements.indexOf(oldData); + dictionaryElements[index] = newData; + this.setState({ dictionaryElements }, () => resolve()); + this.setState({addDict: true, newDictItem: [newData]}); + } + } + resolve(); + }, 1000); + }), + onRowDelete: oldData => + new Promise((resolve, reject) => { + setTimeout(() => { + { + let data = this.state.dictionaryElements; + const index = data.indexOf(oldData); + data.splice(index, 1); + this.setState({ data }, () => resolve()); + this.setState({delDict: true, delDictItem: oldData}) + } + resolve() + }, 1000) + }) + }} + />:"" + } + {this.state.dictNameFlag?<button onClick={this.clickHandler} style={{marginTop: '25px'}}>Go Back to Dictionaries List</button>:""} + {this.state.addDict && this.addDictionary()} + {this.state.delDict && this.deleteDictionary()} + </Modal.Body> + <Modal.Footer> + <Button variant="secondary" type="null" onClick={this.handleClose}>Close</Button> + </Modal.Footer> + </ModalStyled> + ); + } +} diff --git a/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js b/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js new file mode 100644 index 000000000..4363da923 --- /dev/null +++ b/ui-react/src/components/dialogs/ManageDictionaries/ManageDictionaries.test.js @@ -0,0 +1,202 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * + */ +import React from 'react'; +import { shallow } from 'enzyme'; +import { mount } from 'enzyme'; +import { render } from 'enzyme'; +import ManageDictionaries from './ManageDictionaries'; +import TemplateMenuService from '../../../api/TemplateService' + +describe('Verify ManageDictionaries', () => { + beforeEach(() => { + fetch.resetMocks(); + }); + + it('Test API Successful', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "name": "vtest", + "secondLevelDictionary": "1", + "subDictionaryType": "string", + "updatedBy": "test", + "updatedDate": "05-07-2019 19:09:42" + }); + } + }); + }); + const component = shallow(<ManageDictionaries />); + expect(component).toMatchSnapshot(); + }); + + it('Test API Exception', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: false, + status: 500, + json: () => { + return Promise.resolve({ + "name": "vtest", + "secondLevelDictionary": "1", + "subDictionaryType": "string", + "updatedBy": "test", + "updatedDate": "05-07-2019 19:09:42" + }); + } + }); + }); + const component = shallow(<ManageDictionaries />); + }); + + it('Test API Rejection', () => { + const myMockFunc = fetch.mockImplementationOnce(() => Promise.reject('error')); + setTimeout( () => myMockFunc().catch(e => { + console.log(e); + }), + 100 + ); + new Promise(resolve => setTimeout(resolve, 200)); + const component = shallow(<ManageDictionaries />); + expect(myMockFunc.mock.calls.length).toBe(1); + }); + + it('Test Table icons', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "name": "vtest", + "secondLevelDictionary": "1", + "subDictionaryType": "string", + "updatedBy": "test", + "updatedDate": "05-07-2019 19:09:42" + }); + } + }); + }); + const component = mount(<ManageDictionaries />); + expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy(); + }); + + test('Test get dictionaryNames/dictionaryElements, add/delete dictionary functions', async () => { + const historyMock = { push: jest.fn() }; + TemplateMenuService.getDictionary = jest.fn().mockImplementation(() => { + return Promise.resolve("test"); + }); + TemplateMenuService.getDictionaryElements = jest.fn().mockImplementation(() => { + return Promise.resolve({dictionaryElements:"testitem"}); + }); + TemplateMenuService.insDictionary = jest.fn().mockImplementation(() => { + return Promise.resolve(200); + }); + TemplateMenuService.deleteDictionary = jest.fn().mockImplementation(() => { + return Promise.resolve(200); + }); + const flushPromises = () => new Promise(setImmediate); + const component = shallow(<ManageDictionaries history={historyMock} />) + component.setState({ newDict: { + "name": "test", + "secondLevelDictionary": "0", + "subDictionaryType": "string" + } + }); + component.setState({ delData: { + "name": "test", + "secondLevelDictionary": "0", + "subDictionaryType": "string" + } + }); + const instance = component.instance(); + instance.getDictionaryElements("test"); + instance.clickHandler(); + instance.addDictionary(); + instance.deleteDictionary(); + await flushPromises(); + expect(component.state('dictionaryNames')).toEqual("test"); + expect(component.state('dictionaryElements')).toEqual("testitem"); + expect(component.state('dictNameFlag')).toEqual(false); + }); + + test('Test adding and deleting dictionaryelements', async () => { + const historyMock = { push: jest.fn() }; + TemplateMenuService.getDictionary = jest.fn().mockImplementation(() => { + return Promise.resolve("test"); + }); + TemplateMenuService.insDictionaryElements = jest.fn().mockImplementation(() => { + return Promise.resolve(200); + }); + TemplateMenuService.deleteDictionaryElements = jest.fn().mockImplementation(() => { + return Promise.resolve(200); + }); + const flushPromises = () => new Promise(setImmediate); + const component = shallow(<ManageDictionaries history={historyMock}/>) + component.setState({ newDictItem: { + "name": "test", + "dictionaryElements" : { + "shortName": "shorttest", + } + }}); + component.setState({ delDictItem: { + "name": "test", + "dictionaryElements" : { + "shortName": "shortTest", + } + }}); + const instance = component.instance(); + instance.addDictionary(); + instance.deleteDictionary(); + await flushPromises(); + expect(component.state('dictionaryNames')).toEqual("test"); + }); + + it('Test handleClose', () => { + fetch.mockImplementationOnce(() => { + return Promise.resolve({ + ok: true, + status: 200, + json: () => { + return Promise.resolve({ + "name": "vtest", + "secondLevelDictionary": "1", + "subDictionaryType": "string", + "updatedBy": "test", + "updatedDate": "05-07-2019 19:09:42" + }); + } + }); + }); + const historyMock = { push: jest.fn() }; + const handleClose = jest.spyOn(ManageDictionaries.prototype,'handleClose'); + const component = shallow(<ManageDictionaries history={historyMock} />) + component.find('[variant="secondary"]').prop('onClick')(); + expect(handleClose).toHaveBeenCalledTimes(1); + expect(component.state('show')).toEqual(false); + expect(historyMock.push.mock.calls[0]).toEqual([ '/']); + handleClose.mockClear(); + }); +}); diff --git a/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap b/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap new file mode 100644 index 000000000..e78292216 --- /dev/null +++ b/ui-react/src/components/dialogs/ManageDictionaries/__snapshots__/ManageDictionaries.test.js.snap @@ -0,0 +1,195 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Verify ManageDictionaries Test API Successful 1`] = ` +<Styled(Bootstrap(Modal)) + onHide={[Function]} + show={true} + size="xl" +> + <ModalHeader + closeButton={true} + closeLabel="Close" + > + <ModalTitle> + Manage Dictionaries + </ModalTitle> + </ModalHeader> + <ModalBody> + <WithStyles(Component) + columns={ + Array [ + Object { + "cellStyle": Object { + "border": "1px solid black", + }, + "editable": "onAdd", + "field": "name", + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "2px solid black", + }, + "title": "Dictionary Name", + }, + Object { + "cellStyle": Object { + "border": "1px solid black", + }, + "field": "secondLevelDictionary", + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "2px solid black", + }, + "lookup": Object { + "0": "No", + "1": "Yes", + }, + "title": "Sub Dictionary ?", + }, + Object { + "cellStyle": Object { + "border": "1px solid black", + }, + "field": "subDictionaryType", + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "2px solid black", + }, + "lookup": Object { + "number": "number", + "string": "string", + }, + "title": "Dictionary Type", + }, + Object { + "cellStyle": Object { + "border": "1px solid black", + }, + "editable": "never", + "field": "updatedBy", + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "2px solid black", + }, + "title": "Updated By", + }, + Object { + "cellStyle": Object { + "border": "1px solid black", + }, + "editable": "never", + "field": "updatedDate", + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "2px solid black", + }, + "title": "Last Updated Date", + }, + ] + } + data={Array []} + editable={ + Object { + "onRowAdd": [Function], + "onRowDelete": [Function], + "onRowUpdate": [Function], + } + } + icons={ + Object { + "Add": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Check": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Clear": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Delete": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "DetailPanel": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Edit": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Export": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Filter": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "FirstPage": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "LastPage": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "NextPage": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "PreviousPage": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "ResetSearch": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "Search": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "SortArrow": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "ThirdStateCheck": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + "ViewColumn": Object { + "$$typeof": Symbol(react.forward_ref), + "render": [Function], + }, + } + } + onRowClick={[Function]} + options={ + Object { + "headerStyle": Object { + "backgroundColor": "#ddd", + "border": "1px solid black", + "fontSize": "15pt", + "text": "bold", + }, + } + } + title="Dictionary List" + /> + </ModalBody> + <ModalFooter> + <Button + active={false} + disabled={false} + onClick={[Function]} + type="null" + variant="secondary" + > + Close + </Button> + </ModalFooter> +</Styled(Bootstrap(Modal))> +`; diff --git a/ui-react/src/components/loop_viewer/svg/LoopComponentConverter.js b/ui-react/src/components/loop_viewer/svg/LoopComponentConverter.js index 5b0dc1e01..29422a1f5 100644 --- a/ui-react/src/components/loop_viewer/svg/LoopComponentConverter.js +++ b/ui-react/src/components/loop_viewer/svg/LoopComponentConverter.js @@ -9,11 +9,7 @@ export default class LoopComponentConverter { } if (typeof (loopCache.getOperationalPolicies()) !== "undefined") { loopCache.getOperationalPolicies().forEach(op => { - if (op.name.includes("legacy")) { - componentsMap.set(op.name,"/operationalPolicyModal"); - } else { - componentsMap.set(op.name, "/policyModal/OPERATIONAL-POLICY/"+op.name); - } + componentsMap.set(op.name, "/policyModal/OPERATIONAL-POLICY/"+op.name); }) } return componentsMap; diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js index 92380ab6c..4eafaa448 100644 --- a/ui-react/src/components/menu/MenuBar.js +++ b/ui-react/src/components/menu/MenuBar.js @@ -94,6 +94,9 @@ export default class MenuBar extends React.Component { <NavDropdown.Item as={StyledLink} to="/uploadToscaPolicyModal">Upload Tosca Model</NavDropdown.Item> <NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Models</NavDropdown.Item> </StyledNavDropdown> + <StyledNavDropdown title="Dictionaries"> + <NavDropdown.Item as={StyledLink} to="/ManageDictionaries">Manage Dictionaries</NavDropdown.Item> + </StyledNavDropdown> <StyledNavDropdown title="Loop Instance"> <NavDropdown.Item as={StyledLink} to="/createLoop">Create</NavDropdown.Item> <NavDropdown.Item as={StyledLink} to="/openLoop">Open</NavDropdown.Item> diff --git a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap index dfc6a5682..9070e87e9 100644 --- a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap +++ b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap @@ -164,6 +164,61 @@ exports[`Verify MenuBar Test the render method 1`] = ` </DropdownItem> </Styled(NavDropdown)> <Styled(NavDropdown) + title="Dictionaries" + > + <DropdownItem + as={ + Object { + "$$typeof": Symbol(react.forward_ref), + "attrs": Array [], + "componentStyle": ComponentStyle { + "componentId": "sc-bdVaJa", + "isStatic": false, + "rules": Array [ + " + color: ", + [Function], + "; + background-color: ", + [Function], + "; + font-weight: normal; + display: block; + width: 100%; + padding: .25rem 1.5rem; + clear: both; + text-align: inherit; + white-space: nowrap; + border: 0; + :hover { + text-decoration: none; + background-color: ", + [Function], + "; + color: ", + [Function], + "; + } +", + ], + }, + "displayName": "Styled(Link)", + "foldedComponentIds": Array [], + "render": [Function], + "styledComponentId": "sc-bdVaJa", + "target": [Function], + "toString": [Function], + "warnTooManyClasses": [Function], + "withComponent": [Function], + } + } + disabled={false} + to="/ManageDictionaries" + > + Manage Dictionaries + </DropdownItem> + </Styled(NavDropdown)> + <Styled(NavDropdown) title="Loop Instance" > <DropdownItem |