blob: eaa805d87900ab65de2ccee68aedf89d3ac51abd [file] [log] [blame]
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2.. http://creativecommons.org/licenses/by/4.0
elinuxhenrik0a4c38b2020-04-14 10:59:36 +02003.. Copyright (C) 2020 Nordix
elinuxhenrike0fab9a2020-03-31 17:59:49 +02004
5.. |nbsp| unicode:: 0xA0
6 :trim:
7
8.. |nbh| unicode:: 0x2011
9 :trim:
10
11.. _policy-agent-api:
12
elinuxhenrikd64e33d2020-04-22 18:05:07 +020013################################
14A1 Policy Management Service API
15################################
elinuxhenrike0fab9a2020-03-31 17:59:49 +020016
17
18*******************************************
19A1 Policy Management Service - Introduction
20*******************************************
21
maximessond7b91672020-05-14 16:09:57 +020022The A1 Policy Management Service ("Policy Agent") is an SMO/NONRTRIC service above the NONRTRIC A1 Adapter/Controller
elinuxhenrike0fab9a2020-03-31 17:59:49 +020023that provides:
24
25* Unified REST & DMAAP APIs for managing A1 Policies in all Near |nbh| RT |nbsp| RICs
26* Synchronized view of registered "services" (e.g. R-APP, GUI, etc)
27* Synchronized view of policy instances for each "service"
28* Synchronized view of policy instances in all Near |nbh| RT |nbsp| RICs
29* Synchronized view of policy types in all Near |nbh| RT |nbsp| RICs
30* Policy Query API (e.g. per Near |nbh| RT |nbsp| RIC, per "service", per policy type)
31* An initial interface for unified Near |nbh| RT |nbsp| RIC ID to Near |nbh| RT |nbsp| RIC address mapping.
maximessond7b91672020-05-14 16:09:57 +020032 (Note: may also later act as adapter to A&AI, CMDBs etc. to "find" Near |nbh| RT |nbsp| RICs - TBC)
elinuxhenrike0fab9a2020-03-31 17:59:49 +020033* An Initial "O1 ManagedElement" mapping database & interface to find appropriate Near |nbh| RT |nbsp| RIC for RAN elements.
maximessond7b91672020-05-14 16:09:57 +020034 (Note: may also later act as adapter to A&AI, RuntimeDB, other CMDBs etc. - TBC)
elinuxhenrike0fab9a2020-03-31 17:59:49 +020035* Monitors all Near |nbh| RT |nbsp| RICs and recovers from inconsistencies (Note: e.g. Near |nbh| RT |nbsp| RIC restarts)
36* Support for different Southbound connectors on a per Near |nbh| RT |nbsp| RIC basis. (Note: e.g. different A1
37 versions, different Near |nbh| RT |nbsp| RIC versions, different A1 adapters, different or proprietary A1
38 controllers/EMSs)
39
40***************************************
41A1 Policy Management Service - REST NBI
42***************************************
43
44This is the north bound API of the A1 Policy Management Service ("Policy Agent"). This API allows *services* to interact
45with the Policy Agent using REST.
46
47By registering with the Policy Agent, the Policy Agent takes responsibility for synchronizing the policies created by
48the service in the Near |nbh| RT |nbsp| RICs. This means that if a Near |nbh| RT |nbsp| RIC restarts, the Policy Agent
49will try to recreate all the policies residing in the Near |nbh| RT |nbsp| RIC once it is started again. If this is not
50possible, it will remove all policies belonging to the Near |nbh| RT |nbsp| RIC.
51
52The Policy Agent also keeps an updated view of the policy types available, and which Near |nbh| RT |nbsp| RICs that
53support which types. Also, the Policy Agent can tell if a Managed Element is managed by a certain
54Near |nbh| RT |nbsp| RIC.
55
elinuxhenrikd64e33d2020-04-22 18:05:07 +020056The Policy Agent NBI has five distinct parts, described in the sections below:
elinuxhenrike0fab9a2020-03-31 17:59:49 +020057
58* Service Management
elinuxhenrikd64e33d2020-04-22 18:05:07 +020059* Policy Types
elinuxhenrike0fab9a2020-03-31 17:59:49 +020060* Policy Management
61* Near-RT RIC Repository
62* Health Check
63
elinuxhenrikd64e33d2020-04-22 18:05:07 +020064******************
elinuxhenrike0fab9a2020-03-31 17:59:49 +020065Service Management
elinuxhenrikd64e33d2020-04-22 18:05:07 +020066******************
elinuxhenrike0fab9a2020-03-31 17:59:49 +020067
68A service can register itself in the Policy Agent.
69
70By providing a callback URL the service can get notifications from the Policy Agent.
71
72A service can also register a "*Keep Alive Interval*", in seconds. By doing this the service promises to call the
73Policy Agent's "*Keep Alive*" method, or else create or delete policies, more often than the "*Keep Alive Interval*"
74measured in seconds. If the service, for some reason, is not able to do this, the Policy Agent will consider that the
75service has died or vanished and will then delete all its policies, both in the internal repository and in the
76Near |nbh| RT |nbsp| RICs where they were earlier created. **Note!** |nbsp| If the service does not provide a value for
77"*Keep Alive Interval*", then the service maintains full responsibility to delete all of its policies when they are no
78longer needed.
79
elinuxhenrike0fab9a2020-03-31 17:59:49 +020080/service
81~~~~~~~~
82
83PUT
84+++
85
elinuxhenrikfea065a2020-04-20 16:46:26 +020086Register a service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +020087
elinuxhenrikd64e33d2020-04-22 18:05:07 +020088Definition
89""""""""""
90
elinuxhenrikfea065a2020-04-20 16:46:26 +020091**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +020092
93/service
elinuxhenrike0fab9a2020-03-31 17:59:49 +020094
elinuxhenrikfea065a2020-04-20 16:46:26 +020095**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +020096
97None.
elinuxhenrike0fab9a2020-03-31 17:59:49 +020098
elinuxhenrikfea065a2020-04-20 16:46:26 +020099**Body:** (*Required*)
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200100
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200101A JSON object (ServiceRegistrationInfo): ::
102
103 {
104 "callbackUrl": "string", (An empty string means the service will never get any callbacks.)
105 "keepAliveIntervalSeconds": 0, (0 means the service will always be considered alive.)
106 "serviceName": "string" (Required, must be unique.)
107 }
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200108
elinuxhenrikfea065a2020-04-20 16:46:26 +0200109**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200110
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200111200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200112
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200113Service updated.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200114
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200115201:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200116
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200117Service created.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200118
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200119400:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200120
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200121The ServiceRegistrationInfo is not accepted.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200122
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200123Examples
124""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200125
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200126**Call**: ::
127
128 curl -X PUT "http://localhost:8081/service" -H "Content-Type: application/json" -d '{
129 "callbackUrl": "URL",
130 "keepAliveIntervalSeconds": 0,
131 "serviceName": "existing"
132 }'
133
134**Result**:
135
136201: ::
137
138 OK
139
140**Call**: ::
141
142 curl -X PUT "http://localhost:8081/service" -H "Content-Type: application/json" -d "{}"
143
144**Result**:
145
146400: ::
147
148 Missing mandatory parameter 'serviceName'
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200149
150/services
151~~~~~~~~~
152
153GET
154+++
155
elinuxhenrikfea065a2020-04-20 16:46:26 +0200156Query service information.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200157
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200158Definition
159""""""""""
160
elinuxhenrikfea065a2020-04-20 16:46:26 +0200161**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200162
163/services?name=<service-name>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200164
elinuxhenrikfea065a2020-04-20 16:46:26 +0200165**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200166
167name: (*Optional*)
168
169The name of the service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200170
elinuxhenrikfea065a2020-04-20 16:46:26 +0200171**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200172
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200173200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200174
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200175Array of JSON objects (ServiceStatus). ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200176
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200177 {
178 "callbackUrl": "string", (Callback URL)
179 "keepAliveIntervalSeconds": 0, (Policy keep alive interval)
180 "serviceName": "string", (Identity of the service)
181 "timeSinceLastActivitySeconds": 0 (Time since last invocation by the service)
182 }
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200183
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200184404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200185
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200186Service is not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200187
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200188Examples
189""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200190
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200191**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200192
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200193 curl -X GET "http://localhost:8081/services?name=existing"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200194
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200195**Result**:
196
197200: ::
198
199 [
200 {
201 "serviceName":"existing",
202 "keepAliveIntervalSeconds":0,
203 "timeSinceLastActivitySeconds":7224,
204 "callbackUrl":"URL"
205 }
206 ]
207
208**Call**: ::
209
210 curl -X GET "http://localhost:8081/services?name=nonexistent"
211
212Result:
213
214404: ::
215
216 Service not found
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200217
218DELETE
219++++++
220
elinuxhenrikfea065a2020-04-20 16:46:26 +0200221Delete a service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200222
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200223Definition
224""""""""""
225
elinuxhenrikfea065a2020-04-20 16:46:26 +0200226**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200227
228/services?name=<service-name>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200229
elinuxhenrikfea065a2020-04-20 16:46:26 +0200230**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200231
232name: (*Required*)
233
234The name of the service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200235
elinuxhenrikfea065a2020-04-20 16:46:26 +0200236**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200237
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200238204:
239 OK
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200240
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200241404:
242 Service not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200243
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200244Examples
245""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200246
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200247**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200248
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200249 curl -X DELETE "http://localhost:8081/services?name=existing"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200250
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200251**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200252
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200253204: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200254
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200255 OK
256
257**Call**: ::
258
259 curl -X DELETE "http://localhost:8081/services?name=nonexistent"
260
261Result:
262
263404: ::
264
265 Could not find service: nonexistent
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200266
267/services/keepalive
268~~~~~~~~~~~~~~~~~~~
269
elinuxhenrik3d0aa332020-04-08 08:15:59 +0200270PUT
271+++
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200272
elinuxhenrikfea065a2020-04-20 16:46:26 +0200273Heart beat from a service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200274
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200275Definition
276""""""""""
277
elinuxhenrikfea065a2020-04-20 16:46:26 +0200278**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200279
280/services/keepalive?name=<service-name>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200281
elinuxhenrikfea065a2020-04-20 16:46:26 +0200282**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200283
284name: (*Required*)
285
286The name of the service.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200287
elinuxhenrikfea065a2020-04-20 16:46:26 +0200288**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200289
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200290200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200291
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200292OK
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200293
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200294404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200295
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200296Service is not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200297
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200298Examples
299""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200300
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200301**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200302
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200303 curl -X PUT "http://localhost:8081/services/keepalive?name=existing"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200304
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200305**Result**:
306
307200: ::
308
309 OK
310
311**Call**: ::
312
313 curl -X PUT "http://localhost:8081/services/keepalive?name=nonexistent"
314
315**Result**:
316
317404: ::
318
319 Could not find service: nonexistent
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200320
321.. _policy-management:
322
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200323************
324Policy Types
325************
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200326
327Policies are based on types. The set of available policy types is determined by the set of policy types supported by
328Near |nbh| RT |nbsp| RICs. At startup, the Policy Agent queries all Near |nbh| RT |nbsp| RICs for their supported types
329and stores them in its internal repository. It then checks this at regular intervals to keep the repository of types up
330to date. Policy types cannot be created, updated or deleted using this interface since this must be done via the
331Near |nbh| RT |nbsp| RICs.
332
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200333A policy type defines a name and a JSON schema that constrains the content of a policy of that type.
334
335/policy_types
336~~~~~~~~~~~~~
337
338GET
339+++
340
elinuxhenrikfea065a2020-04-20 16:46:26 +0200341Query policy type names.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200342
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200343Definition
344""""""""""
345
elinuxhenrikfea065a2020-04-20 16:46:26 +0200346**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200347
348/policy_types?ric=<name-of-ric>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200349
elinuxhenrikfea065a2020-04-20 16:46:26 +0200350**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200351
352ric: (*Optional*)
353
354The name of the Near |nbh| RT |nbsp| RIC to get types for.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200355
elinuxhenrikfea065a2020-04-20 16:46:26 +0200356**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200357
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200358200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200359
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200360 Array of policy type names.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200361
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200362404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200363
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200364 Near |nbh| RT |nbsp| RIC is not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200365
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200366Examples
367""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200368
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200369**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200370
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200371 curl -X GET "http://localhost:8081/policy_types"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200372
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200373**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200374
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200375200: ::
376
377 [
378 "STD_PolicyModelUnconstrained_0.2.0",
379 "Example_QoETarget_1.0.0",
380 "ERIC_QoSNudging_0.2.0"
381 ]
382
383**Call**: ::
384
385 curl -X GET "http://localhost:8081/policy_types?ric=nonexistent"
386
387**Result**:
388
389404: ::
390
391 org.oransc.policyagent.exceptions.ServiceException: Could not find ric: nonexistent
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200392
393/policy_schema
394~~~~~~~~~~~~~~
395
396GET
397+++
398
elinuxhenrikfea065a2020-04-20 16:46:26 +0200399Returns one policy type schema definition.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200400
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200401Definition
402""""""""""
403
elinuxhenrikfea065a2020-04-20 16:46:26 +0200404**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200405
406/policy_schema?id=<name-of-type>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200407
elinuxhenrikfea065a2020-04-20 16:46:26 +0200408**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200409
410id: (*Required*)
411
412The ID of the policy type to get the definition for.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200413
elinuxhenrikfea065a2020-04-20 16:46:26 +0200414**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200415
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200416200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200417
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200418Policy schema as JSON schema.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200419
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200420404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200421
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200422Policy type is not found.
423
424Examples
425""""""""
426
427**Call**: ::
428
429 curl -X GET "http://localhost:8081/policy_schema?id=STD_PolicyModelUnconstrained_0.2.0"
430
431**Result**:
432
433200: ::
434
435 {
436 "$schema": "http://json-schema.org/draft-07/schema#",
437 "title": "STD_PolicyModelUnconstrained_0.2.0",
438 "description": "Standard model of a policy with unconstrained scope id combinations",
439 "type": "object",
440 "properties": {
441 "scope": {
elinuxhenrikfea065a2020-04-20 16:46:26 +0200442 "type": "object",
443 "properties": {
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200444 "ueId": {"type": "string"},
445 "groupId": {"type": "string"}
elinuxhenrikfea065a2020-04-20 16:46:26 +0200446 },
447 "minProperties": 1,
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200448 "additionalProperties": false
449 },
450 "qosObjectives": {
451 "type": "object",
452 "properties": {
453 "gfbr": {"type": "number"},
454 "mfbr": {"type": "number"}
455 },
456 "additionalProperties": false
457 },
458 "resources": {
459 "type": "array",
460 "items": {
461 "type": "object",
462 "properties": {
463 "cellIdList": {
464 "type": "array",
465 "minItems": 1,
466 "uniqueItems": true,
467 "items": {
468 "type": "string"
469 }
470 },
471 "additionalProperties": false,
472 "required": ["cellIdList"]
473 }
elinuxhenrikfea065a2020-04-20 16:46:26 +0200474 }
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200475 },
476 "minProperties": 1,
477 "additionalProperties": false,
478 "required": ["scope"]
479 }
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200480
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200481**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200482
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200483 curl -X GET "http://localhost:8081/policy_schema?id=nonexistent"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200484
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200485**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200486
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200487404: ::
488
489 org.oransc.policyagent.exceptions.ServiceException: Could not find type: nonexistent
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200490
491/policy_schemas
492~~~~~~~~~~~~~~~
493
494GET
495+++
496
elinuxhenrikfea065a2020-04-20 16:46:26 +0200497Returns policy type schema definitions.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200498
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200499Definition
500""""""""""
501
elinuxhenrikfea065a2020-04-20 16:46:26 +0200502**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200503
504/policy_schemas?ric=<name-of-ric>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200505
elinuxhenrikfea065a2020-04-20 16:46:26 +0200506**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200507
508ric: (*Optional*)
509
510The name of the Near |nbh| RT |nbsp| RIC to get the definitions for.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200511
elinuxhenrikfea065a2020-04-20 16:46:26 +0200512**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200513
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200514200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200515
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200516An array of policy schemas as JSON schemas.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200517
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200518404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200519
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200520Near |nbh| RT |nbsp| RIC is not found.
521
522Examples
523""""""""
524
525**Call**: ::
526
527 curl -X GET "http://localhost:8081/policy_schemas"
528
529**Result**:
530
531200: ::
532
533 [
534 {
535 "$schema": "http://json-schema.org/draft-07/schema#",
536 "title": "STD_PolicyModelUnconstrained_0.2.0",
537 "description": "Standard model of a policy with unconstrained scope id combinations",
538 "type": "object",
539 "properties": {
540 "scope": {
541 "type": "object",
elinuxhenrikfea065a2020-04-20 16:46:26 +0200542 .
543 .
544 .
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200545 }
elinuxhenrikfea065a2020-04-20 16:46:26 +0200546 "additionalProperties": false,
547 "required": ["scope"]
548 },
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200549 .
550 .
551 .
elinuxhenrikfea065a2020-04-20 16:46:26 +0200552 {
553 "$schema": "http://json-schema.org/draft-07/schema#",
554 "title": "Example_QoETarget_1.0.0",
555 "description": "Example QoE Target policy type",
556 "type": "object",
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200557 "properties": {
558 "scope": {
559 "type": "object",
560 .
561 .
562 .
563 }
564 "additionalProperties": false,
565 "required": ["scope"]
566 }
567 }
568 }
569 ]
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200570
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200571**Call**: ::
elinuxhenrik53e46042020-04-21 15:14:04 +0200572
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200573 curl -X GET "http://localhost:8081/policy_schemas?ric=nonexistent"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200574
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200575**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200576
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200577404: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200578
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200579 org.oransc.policyagent.exceptions.ServiceException: Could not find ric: nonexistent
580
581*****************
582Policy Management
583*****************
584
585Policies can be queried, created, updated, and deleted. A policy is always created in a specific
586Near |nbh| RT |nbsp| RIC.
587
maximessond7b91672020-05-14 16:09:57 +0200588A policy is defined by its policy type schema.
589
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200590When a policy is created, the Policy Agent stores information about it in its internal repository. At regular intervals,
591it then checks with all Near |nbh| RT |nbsp| RICs that this repository is synchronized. If, for some reason, there is an
maximessond7b91672020-05-14 16:09:57 +0200592inconsistency, the Policy Agent will start a synchronization job and try to inconsistency, the Policy Agent will start a
593synchronization job and try to reset the Near |nbh| RT |nbsp| RIC to its last-known-good status. If this fails, the
594Policy Agent will clear all policies for the specific Near |nbh| RT |nbsp| RIC in the internal repository and set its
595state to *UNKNOWN*. This means that no interaction with the Near |nbh| RT |nbsp| RIC is possible until the Policy Agent
596has been able to contact it again and re-synchronize its state in the repository.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200597
maximessond7b91672020-05-14 16:09:57 +0200598Once a service has created a policy, it is the service's responsibility to maintain its life cycle. When a Near |nbh| RT
599|nbsp| RIC has been restarted, the Policy Agent will try to recreate policies in the Near |nbh| RT |nbsp| RIC according
600to the policies maintained in its local repository.
601This means that the service must delete any policies it has created.
602A policy may be created as a "transient policy", whereby if this policy "disappears" at any stage it will not be
603re-synchronized to the Near |nbh| RT |nbsp| RIC.
604For example, this is useful if the policy should not survive a restart of the Near |nbh| RT |nbsp| RIC.
605A non-transient policy will continue to be maintained in the Near |nbh| RT |nbsp| RIC until it is explicitly deleted
606(or the service that created it fails to update its Keep Alive status).
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200607
maximessond7b91672020-05-14 16:09:57 +0200608There are some exceptions where policy instances are not re-synchronized after a Near |nbh| RT |nbsp| RIC restart or
609when some inconsistency is identified:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200610
maximessond7b91672020-05-14 16:09:57 +0200611- The service has registered a "*Keep Alive Interval*", but the service then fails to update its Keep Alive status.
612- The Policy Agent completely fails to synchronize with a Near |nbh| RT |nbsp| RIC, as described above.
613- Policies that are marked as transient policies.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200614
615/policies
616~~~~~~~~~
617
618GET
619+++
620
elinuxhenrikfea065a2020-04-20 16:46:26 +0200621Query policies.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200622
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200623Definition
624""""""""""
625
elinuxhenrikfea065a2020-04-20 16:46:26 +0200626**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200627
628/policies?ric=<name-of-ric>&service=<name-of-service>&type=<name-of-type>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200629
elinuxhenrikfea065a2020-04-20 16:46:26 +0200630**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200631
632ric: (*Optional*)
633
634The name of the Near |nbh| RT |nbsp| RIC to get policies for.
635
636service: (*Optional*)
637
638The name of the service to get policies for.
639
640type: (*Optional*)
641
642The name of the policy type to get policies for.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200643
elinuxhenrikfea065a2020-04-20 16:46:26 +0200644**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200645
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200646200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200647
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200648Array of JSON objects (PolicyInfo). ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200649
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200650 {
651 "id": "string", (Identity of the policy)
652 "json": "object", (The configuration of the policy)
653 "lastModified": "string", (Timestamp, last modification time)
654 "ric": "string", (Identity of the target Near |nbh| RT |nbsp| RIC)
655 "service": "string", (The name of the service owning the policy)
656 "type": "string" (Name of the policy type)
657 }
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200658
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200659404:
660 Near |nbh| RT |nbsp| RIC or policy type not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200661
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200662Examples
663""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200664
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200665**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200666
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200667 curl -X GET "http://localhost:8081/policies?ric=existing"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200668
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200669**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200670
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200671200: ::
672
673 [
674 {
675 "id": "Policy 1",
676 "json": {
677 "scope": {
678 "ueId": "UE 1",
679 "groupId": "Group 1"
680 },
681 "qosObjectives": {
682 "gfbr": 1,
683 "mfbr": 2
684 },
685 "cellId": "Cell 1"
686 },
687 "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT",
688 "ric": "existing",
689 "service": "Service 1",
690 "type": "STD_PolicyModelUnconstrained_0.2.0"
691 },
692 {
693 "id": "Policy 2",
694 "json": {
695 .
696 .
697 .
698 },
699 "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT",
700 "ric": "existing",
701 "service": "Service 2",
702 "type": "Example_QoETarget_1.0.0"
703 }
704 ]
705
706**Call**: ::
707
708 curl -X GET "http://localhost:8081/policies?type=nonexistent"
709
710**Result**:
711
712404: ::
713
714 Policy type not found
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200715
716/policy
717~~~~~~~
718
719GET
720+++
721
elinuxhenrikfea065a2020-04-20 16:46:26 +0200722Returns a policy configuration.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200723
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200724Definition
725""""""""""
726
elinuxhenrikfea065a2020-04-20 16:46:26 +0200727**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200728
729/policy?id=<policy-id>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200730
elinuxhenrikfea065a2020-04-20 16:46:26 +0200731**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200732
733id: (*Required*)
734
735The ID of the policy instance.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200736
elinuxhenrikfea065a2020-04-20 16:46:26 +0200737**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200738
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200739200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200740
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200741JSON object containing policy information. ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200742
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200743 {
744 "id": "string", (ID of policy)
745 "json": "object", (JSON with policy data speified by the type)
746 "ownerServiceName": "string", (Name of the service that created the policy)
747 "ric": "string", (Name of the Near |nbh| RT |nbsp| RIC where the policy resides)
748 "type": "string", (Name of the policy type of the policy)
749 "lastModified" (Timestamp, last modification time)
750 }
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200751
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200752404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200753
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200754Policy is not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200755
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200756Examples
757""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200758
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200759**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200760
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200761 curl -X GET "http://localhost:8081/policy?id=Policy 1"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200762
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200763**Result**:
764
765200: ::
766
767 {
768 "id": "Policy 1",
769 "json", {
770 "scope": {
771 "ueId": "UE1 ",
772 "cellId": "Cell 1"
773 },
774 "qosObjectives": {
775 "gfbr": 319.5,
776 "mfbr": 782.75,
777 "priorityLevel": 268.5,
778 "pdb": 44.0
779 },
780 "qoeObjectives": {
781 "qoeScore": 329.0,
782 "initialBuffering": 27.75,
783 "reBuffFreq": 539.0,
784 "stallRatio": 343.0
785 },
786 "resources": []
787 },
788 "ownerServiceName": "Service 1",
789 "ric": "ric1",
790 "type": "STD_PolicyModelUnconstrained_0.2.0",
791 "lastModified": "Wed, 01 Apr 2020 07:45:45 GMT"
792 }
793
794**Call**: ::
795
796 curl -X GET "http://localhost:8081/policy?id=nonexistent"
797
798**Result**:
799
800404: ::
801
802 Policy is not found
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200803
804PUT
805+++
806
elinuxhenrikfea065a2020-04-20 16:46:26 +0200807Create/Update a policy. **Note!** Calls to this method will also trigger "*Keep Alive*" for a service which has a
808"*Keep Alive Interval*" registered.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200809
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200810Definition
811""""""""""
812
elinuxhenrikfea065a2020-04-20 16:46:26 +0200813**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200814
815/policy?id=<policy-id>&ric=<name-of-ric>&service=<name-of-service>&type=<name-of-policy-type>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200816
elinuxhenrikfea065a2020-04-20 16:46:26 +0200817**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200818
819id: (*Required*)
820
821The ID of the policy instance.
822
823ric: (*Required*)
824
825The name of the Near |nbh| RT |nbsp| RIC where the policy will be created.
826
827service: (*Required*)
828
829The name of the service creating the policy.
830
maximessond7b91672020-05-14 16:09:57 +0200831transient: (*Optional*)
832
833If the policy is transient or not (boolean defaulted to false).
834A policy is transient if it will be forgotten when the service needs to reconnect to the Near |nbh| RT |nbsp| RIC.
835
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200836type: (*Optional*)
837
838The name of the policy type.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200839
elinuxhenrikfea065a2020-04-20 16:46:26 +0200840**Body:** (*Required*)
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200841
842A JSON object containing the data specified by the type.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200843
elinuxhenrikfea065a2020-04-20 16:46:26 +0200844**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200845
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200846200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200847
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200848Policy updated.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200849
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200850201:
851
852Policy created.
853
854404:
855
856Near |nbh| RT |nbsp| RIC or policy type is not found.
857
858423:
859
860Near |nbh| RT |nbsp| RIC is not operational.
861
862Examples
863""""""""
864
865**Call**: ::
866
867 curl -X PUT "http://localhost:8081/policy?id=Policy%201&ric=ric1&service=Service%201&type=STD_PolicyModelUnconstrained_0.2.0"
868 -H "Content-Type: application/json"
869 -d '{
870 "scope": {
871 "ueId": "UE 1",
872 "cellId": "Cell 1"
873 },
874 "qosObjectives": {
875 "gfbr": 319.5,
876 "mfbr": 782.75,
877 "priorityLevel": 268.5,
878 "pdb": 44.0
879 },
880 "qoeObjectives": {
881 "qoeScore": 329.0,
882 "initialBuffering": 27.75,
883 "reBuffFreq": 539.0,
884 "stallRatio": 343.0
885 },
886 "resources": []
887 }'
888
889**Result**:
890
891200
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200892
893DELETE
894++++++
895
elinuxhenrikfea065a2020-04-20 16:46:26 +0200896Deletes a policy. **Note!** Calls to this method will also trigger "*Keep Alive*" for a service which has a
897"*Keep Alive Interval*" registered.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200898
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200899Definition
900""""""""""
901
elinuxhenrikfea065a2020-04-20 16:46:26 +0200902**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200903
904/policy?id=<policy-id>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200905
elinuxhenrikfea065a2020-04-20 16:46:26 +0200906**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200907
908id: (*Required*)
909
910The ID of the policy instance.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200911
elinuxhenrikfea065a2020-04-20 16:46:26 +0200912**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200913
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200914204:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200915
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200916Policy deleted.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200917
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200918404:
919
920Policy is not found.
921
922423:
923
924Near |nbh| RT |nbsp| RIC is not operational.
925
926Examples
927""""""""
928
929**Call**: ::
930
931 curl -X DELETE "http://localhost:8081/policy?id=Policy 1"
932
933**Result**:
934
935204
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200936
937/policy_ids
938~~~~~~~~~~~
939
940GET
941+++
942
elinuxhenrikfea065a2020-04-20 16:46:26 +0200943Query policy type IDs.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200944
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200945Definition
946""""""""""
947
elinuxhenrikfea065a2020-04-20 16:46:26 +0200948**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200949
950/policy_ids?ric=<name-of-ric>&service=<name-of-service>&type=<name-of-policy-type>
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200951
elinuxhenrikfea065a2020-04-20 16:46:26 +0200952**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200953
954ric: (*Optional*)
955
956The name of the Near |nbh| RT |nbsp| RIC to get policies for.
957
958service: (*Optional*)
959
960The name of the service to get policies for.
961
962type: (*Optional*)
963
964The name of the policy type to get policies for.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200965
elinuxhenrikfea065a2020-04-20 16:46:26 +0200966**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200967
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200968200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200969
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200970Array of policy type names.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200971
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200972404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200973
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200974RIC or policy type not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200975
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200976Examples
977""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200978
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200979**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200980
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200981 curl -X GET "http://localhost:8081/policy_ids"
elinuxhenrike0fab9a2020-03-31 17:59:49 +0200982
elinuxhenrikd64e33d2020-04-22 18:05:07 +0200983**Result**:
984
985200: ::
986
987 [
988 "Policy 1",
989 "Policy 2",
990 "Policy 3"
991 ]
992
993**Call**: ::
994
995 curl -X GET "http://localhost:8081/policy_ids?ric=nonexistent"
996
997**Result**:
998
999404: ::
1000
1001 Ric not found
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001002
1003/policy_status
1004~~~~~~~~~~~~~~
1005
1006GET
1007+++
1008
elinuxhenrikfea065a2020-04-20 16:46:26 +02001009Returns the status of a policy.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001010
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001011Definition
1012""""""""""
1013
elinuxhenrikfea065a2020-04-20 16:46:26 +02001014**URL path:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001015
1016/policy_status?id=<policy-id>
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001017
elinuxhenrikfea065a2020-04-20 16:46:26 +02001018**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001019
1020id: (*Required*)
1021
1022The ID of the policy.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001023
elinuxhenrikfea065a2020-04-20 16:46:26 +02001024**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001025
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001026200:
1027
1028JSON object with policy status.
1029
1030404:
1031
1032Policy not found.
1033
1034**********************
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001035Near-RT RIC Repository
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001036**********************
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001037
1038The Policy Agent keeps an updated view of the Near |nbh| RT |nbsp| RICs that are available in the system. A service can
1039find out which Near |nbh| RT |nbsp| RIC that manages a specific element in the network or which
1040Near |nbh| RT |nbsp| RICs that support a specific policy type.
1041
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001042/ric
1043~~~~
1044
1045GET
1046+++
1047
elinuxhenrikfea065a2020-04-20 16:46:26 +02001048Returns the name of a Near |nbh| RT |nbsp| RIC managing a specific Mananged Element.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001049
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001050Definition
1051""""""""""
1052
1053**URL path:**
1054
1055/ric?managedElementId=<id-of-managed-element>
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001056
elinuxhenrikfea065a2020-04-20 16:46:26 +02001057**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001058
1059managedElementId: (*Required*)
1060
1061The ID of the Managed Element.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001062
elinuxhenrikfea065a2020-04-20 16:46:26 +02001063**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001064
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001065200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001066
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001067Name of the Near |nbh| RT |nbsp| RIC managing the Managed Element.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001068
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001069404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001070
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001071No Near |nbh| RT |nbsp| RIC manages the given Managed Element.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001072
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001073Examples
1074""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001075
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001076**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001077
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001078 curl -X GET "http://localhost:8081/ric?managedElementId=Node 1"
1079
1080**Result**:
1081
1082200: ::
1083
1084 Ric 1
1085
1086**Call**: ::
1087
1088 curl -X GET "http://localhost:8081/ric?managedElementId=notmanaged"
1089
1090**Result**:
1091
1092404
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001093
1094/rics
1095~~~~~
1096
1097GET
1098+++
1099
elinuxhenrikfea065a2020-04-20 16:46:26 +02001100Query Near |nbh| RT |nbsp| RIC information.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001101
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001102Definition
1103""""""""""
1104
1105**URL path:**
1106
1107/rics?policyType=<name-of-policy-type>
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001108
elinuxhenrikfea065a2020-04-20 16:46:26 +02001109**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001110
1111policyType: (*Optional*)
1112
1113The name of the policy type.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001114
elinuxhenrikfea065a2020-04-20 16:46:26 +02001115**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001116
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001117200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001118
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001119Array of JSON objects containing Near |nbh| RT |nbsp| RIC information. ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001120
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001121 [
1122 {
1123 "managedElementIds": [
1124 "string"
1125 ],
1126 "policyTypes": [
1127 "string"
1128 ],
1129 "ricName": "string",
1130 "state": "string"
1131 }
1132 ]
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001133
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001134404:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001135
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001136Policy type is not found.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001137
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001138Examples
1139""""""""
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001140
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001141**Call**: ::
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001142
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001143 curl -X GET "http://localhost:8081/rics?policyType=STD_PolicyModelUnconstrained_0.2.0"
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001144
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001145**Result**:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001146
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001147200: ::
1148
1149 [
1150 {
1151 "managedElementIds": [
1152 "ME 1",
1153 "ME 2"
1154 ],
1155 "policyTypes": [
1156 "STD_PolicyModelUnconstrained_0.2.0",
1157 "Example_QoETarget_1.0.0",
1158 "ERIC_QoSNudging_0.2.0"
1159 ],
1160 "ricName": "Ric 1",
1161 "state": "AVAILABLE"
1162 },
1163 .
1164 .
1165 .
1166 {
1167 "managedElementIds": [
1168 "ME 3"
1169 ],
1170 "policyTypes": [
1171 "STD_PolicyModelUnconstrained_0.2.0"
1172 ],
1173 "ricName": "Ric X",
1174 "state": "UNAVAILABLE"
1175 }
1176 ]
1177
1178**Call**: ::
1179
1180 curl -X GET "http://localhost:8081/rics?policyType=nonexistent"
1181
1182**Result**:
1183
1184404: ::
1185
1186 Policy type not found
1187
1188************
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001189Health Check
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001190************
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001191
1192The status of the Policy Agent.
1193
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001194/status
1195~~~~~~~
1196
1197GET
1198+++
1199
elinuxhenrikfea065a2020-04-20 16:46:26 +02001200Returns the status of the Policy Agent.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001201
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001202Definition
1203""""""""""
1204
1205**URL path:**
1206
1207/status
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001208
elinuxhenrikfea065a2020-04-20 16:46:26 +02001209**Parameters:**
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001210
1211None.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001212
elinuxhenrikfea065a2020-04-20 16:46:26 +02001213**Responses:**
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001214
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001215200:
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001216
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001217Service is living.
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001218
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001219Examples
1220""""""""
1221
1222**Call**: ::
1223
1224 curl -X GET "http://localhost:8081/status"
1225
1226**Result**:
1227
1228200
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001229
1230****************
1231A1 through DMaaP
1232****************
1233
1234The Policy Agent also provides the possibility to use DMaap to handle policies according to the A1 specification. The
1235Policy Agent polls the DMaaP Message Router regularly and processes any messages targeted to it. The response is then
1236published back to the DMaaP Message Router with the result of the call.
1237
1238Send Message
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001239~~~~~~~~~~~~
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001240
1241The message to send is a JSON like the one below. The "*url*" is one of the URLs described under
1242:ref:`policy-management`. The "*target*" must always be "*policy-agent*" for the message to be processed by the Policy
1243Agent. The "*operation*" can be one of the following: "*GET | PUT | POST | DELETE*". ::
1244
1245 {
1246 "type": "string",
1247 "correlationId": "string",
1248 "target": "string",
1249 "timestamp": "timestamp",
1250 "apiVersion": "string",
1251 "originatorId": "string",
1252 "requestId": "string",
1253 "operation": "string",
1254 "url": "string"
1255 }
1256
1257Example
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001258+++++++
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001259
1260To get all policy types for a specific Near |nbh| RT |nbsp| RIC the following message should be sent to DMaaP Message
1261Router: ::
1262
1263 {
1264 "type":"request",
1265 "correlationId":"c09ac7d1-de62-0016-2000-e63701125557-201",
1266 "target":"policy-agent",
1267 "timestamp":"2019-05-14T11:44:51.36Z",
1268 "apiVersion":"1.0",
1269 "originatorId":"849e6c6b420",
1270 "requestId":"23343221",
1271 "operation":"GET",
1272 "url":"/policy_schemas?ric=ric_ric-simulator_1"
1273 }
1274
1275Receive Message
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001276~~~~~~~~~~~~~~~
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001277
1278The message the Policy Agent sends back to the DMaaP Message Router is a JSON like the one below. The "*requestId*"
1279"*correlationId*", and "*originatorId*" are the same as in the message sent to DMaaP MR. ::
1280
1281 {
1282 "requestId": "string",
1283 "correlationId": "string",
1284 "originatorId": "string",
1285 "type": "string",
1286 "message": "string",
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001287 "type": "string",
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001288 "timestamp": "string",
1289 "status": "string"
1290 }
1291
1292Example
elinuxhenrikd64e33d2020-04-22 18:05:07 +02001293+++++++
elinuxhenrike0fab9a2020-03-31 17:59:49 +02001294
1295The response containing all policy types for a specific Near |nbh| RT |nbsp| RIC sent to the DMaaP Message Router from
1296the Policy Agent: ::
1297
1298 {
1299 \"requestId\":\"23343221\",
1300 \"correlationId\":\"c09ac7d1-de62-0016-2000-e63701125557-201\",
1301 \"originatorId\":\"849e6c6b420\",
1302 \"type\":\"response\",
1303 \"message\":\"[
1304 {
1305 \\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\",
1306 \\\"description\\\":\\\"QoS policy type\\\",
1307 \\\"title\\\":\\\"STD_QoSNudging_0.2.0\\\",
1308 \\\"type\\\":\\\"object\\\",
1309 \\\"properties\\\":{\\\"scope\\\":{\\\"additionalProperties\\\":true,
1310 \\\"type\\\":\\\"object\\\",
1311 \\\"properties\\\":{\\\"qosId\\\":{\\\"type\\\":\\\"string\\\"},
1312 \\\"ueId\\\":{\\\"type\\\":\\\"string\\\"}},
1313 \\\"required\\\":[\\\"ueId\\\",
1314 \\\"qosId\\\"]},
1315 \\\"statement\\\":{\\\"additionalProperties\\\":false,
1316 \\\"type\\\":\\\"object\\\",
1317 \\\"properties\\\":{\\\"priorityLevel\\\":{\\\"type\\\":\\\"number\\\"}},
1318 \\\"required\\\":[\\\"priorityLevel\\\"]}}
1319 }
1320 ]\",
1321 \"timestamp\":\"2019-05-14T11:44:51.36Z\",
1322 \"status\":\"200 OK\"
1323 }