9 The scope of the present document is to describe the VNFM Driver exposed API specification.
\r
11 **2. Terms, Definitions and Abbreviations**
\r
12 =============================================
\r
14 For the purposes of the present document, the following abbreviations apply:
\r
16 +-------------+-----------------------------------------------+
\r
18 +-------------+-----------------------------------------------+
\r
19 |NFVO |Network Functions Virtualization Orchestrator |
\r
20 +-------------+-----------------------------------------------+
\r
21 |VNFM |Virtual Network Function Manager |
\r
22 +-------------+-----------------------------------------------+
\r
23 |VNF |Virtual Network Function |
\r
24 +-------------+-----------------------------------------------+
\r
26 Table 2-1 abbreviations
\r
29 **3. Interfaces provided by VNFM Driver**
\r
30 ===========================================
\r
32 Interfaces use RESTful API and the format is as follows:
\r
33 http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfm_id}/[……]
\r
39 **3.1 Instantiate VNF**
\r
40 ------------------------
\r
42 +--------------+--------------------------------------------------------------+
\r
43 |If Definition | Description |
\r
44 +==============+==============================================================+
\r
45 |URI | http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs |
\r
46 +--------------+--------------------------------------------------------------+
\r
48 +--------------+--------------------------------------------------------------+
\r
49 |Direction | NSLCM->VNFMDriver |
\r
50 +--------------+--------------------------------------------------------------+
\r
54 +-----------------------+------------+-------------+----------+------------------------------+
\r
55 | Parameter | Qualifier | Cardinality | Content | Description |
\r
56 +=======================+============+=============+==========+==============================+
\r
57 | vnfInstanceName | M | 1 | String | Human-readable name of the |
\r
58 | | | | | VNF instance to be created. |
\r
59 +-----------------------+------------+-------------+----------+------------------------------+
\r
60 | vnfPackageId | M | 1 | String | VNF packageId |
\r
61 +-----------------------+------------+-------------+----------+------------------------------+
\r
62 | vnfDescriptorId | M | 1 | String | Information sufficient to |
\r
63 | | | | | identify the VNF Descriptor |
\r
64 | | | | | which defines the VNF to |
\r
65 | | | | | be created. |
\r
66 +-----------------------+------------+-------------+----------+------------------------------+
\r
67 | flavourId | M | 0..1 | String | Reserved |
\r
68 +-----------------------+------------+-------------+----------+------------------------------+
\r
69 |vnfInstanceDescription | M | 0..1 | String | Human-readable |
\r
70 | | | | | description of the VNF |
\r
71 | | | | | instance to be created. |
\r
72 +-----------------------+------------+-------------+----------+------------------------------+
\r
73 | extVirtualLink | M | 0..N | String | References to external |
\r
74 | | | | | virtual links to connect the |
\r
76 +-----------------------+------------+-------------+----------+------------------------------+
\r
77 | additionalParam | M | 0..N | String |Additional parameters |
\r
78 | | | | |passed by the NFVO as |
\r
79 | | | | |input to the instantiation |
\r
80 | | | | |process, specific to the |
\r
81 | | | | |VNF being instantiated. |
\r
82 +-----------------------+------------+-------------+----------+------------------------------+
\r
84 **ExtVirtualLinkData:**
\r
86 +--------------+------------+-------------+----------+----------------------------------------+
\r
87 | Attribute | Qualifier | Cardinality | Content | Description |
\r
88 +==============+============+=============+==========+========================================+
\r
89 | vlInstanceId | M | 0..1 | String | Identifier of the VL instance |
\r
90 +--------------+------------+-------------+----------+----------------------------------------+
\r
91 | vim | CM | 0..1 | VimInfo | Information about the VIM that |
\r
92 | | | | | manages this resource. |
\r
93 | | | | | This attribute shall be supported |
\r
94 | | | | | and present if VNF-related resource |
\r
95 | | | | | management in direct applicable. |
\r
96 +--------------+------------+-------------+----------+----------------------------------------+
\r
97 | networkId | M | 1 | String | The network UUID of VIM |
\r
98 +--------------+------------+-------------+----------+----------------------------------------+
\r
99 | cpdId | M | 0..1 | String | Identifier of the external CPD in VNFD |
\r
100 +--------------+------------+-------------+----------+----------------------------------------+
\r
104 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
105 | Attribute | Qualifier | Cardinality | Content | Description |
\r
106 +==================+============+=============+==============+================================================+
\r
107 | vimInfoId | M | 1 | Identifier | The identifier of this VimInfo instance, |
\r
108 | | | | | for the purpose of referencing it from |
\r
109 | | | | | other information elements. |
\r
110 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
111 | vimId | M | 1 | Identifier | The identifier of the VIM. |
\r
112 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
113 | interfaceInfo | M | 0..N | KeyValuePair | Information about the interface to the |
\r
114 | | | | | VIM, including VIM provider type, API |
\r
115 | | | | | version, and protocol type. |
\r
116 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
117 | accessInfo | M | 0..N | KeyValuePair | Authentication credentials for accessing the |
\r
118 | | | | | VIM. Examples may include those to support |
\r
119 | | | | | different authentication schemes, e.g., OAuth, |
\r
120 | | | | | Token, etc. |
\r
121 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
122 |interfaceEndpoint | M | 1 | String | Information about the interface endpoint. An |
\r
123 | | | | | example is a URL. |
\r
124 +------------------+------------+-------------+--------------+------------------------------------------------+
\r
129 +--------------+------------+-------------+----------+-------------------------------+
\r
130 | Attribute | Qualifier | Cardinality | Content | Description |
\r
131 +==============+============+=============+==========+===============================+
\r
132 | vimType | M | 1 | String | vim |
\r
133 +--------------+------------+-------------+----------+-------------------------------+
\r
134 | apiVersion | M | 1 | String | |
\r
135 +--------------+------------+-------------+----------+-------------------------------+
\r
136 | protocolType | M | 1 | String | http, https |
\r
137 +--------------+------------+-------------+----------+-------------------------------+
\r
142 +--------------+------------+-------------+----------+-------------------------------+
\r
143 | Attribute | Qualifier | Cardinality | Content | Description |
\r
144 +==============+============+=============+==========+===============================+
\r
145 | tenant | M | 1 | String | Tenant Name of tenant |
\r
146 +--------------+------------+-------------+----------+-------------------------------+
\r
147 | username | M | 1 | String | Username for login |
\r
148 +--------------+------------+-------------+----------+-------------------------------+
\r
149 | password | M | 1 | String | Password of login user |
\r
150 +--------------+------------+-------------+----------+-------------------------------+
\r
153 "vnfInstanceName":"vFW",
\r
154 "vnfPackageId":"1",
\r
155 "vnfDescriptorId":"1",
\r
156 "vnfInstanceDescription":"vFW_1",
\r
157 "extVirtualLinkLink":[
\r
159 "vlInstanceId":"1",
\r
160 "resourceId":"1246" ,
\r
169 "protocolType":"http"
\r
172 "tenant":"tenant_vCPE",
\r
174 "password":"vCPE_321"
\r
176 "interfaceEndpoint":"http://10.43.21.105:80/"
\r
180 "additionalParam":{
\r
188 +--------------+------------+-------------+-----------+-------------------------------+
\r
189 | Parameter | Qualifier | Cardinality | Content | Description |
\r
190 +==============+============+=============+===========+===============================+
\r
191 | jobId | M | 1 | Identifier| Tenant Name of tenant |
\r
192 | | | | | operation occurrence. |
\r
194 | | | | | [lifecycleOperationOccurren |
\r
196 +--------------+------------+-------------+-----------+-------------------------------+
\r
197 | password | M | 1 | String | Password of login user |
\r
198 +--------------+------------+-------------+-----------+-------------------------------+
\r
202 "vnfInstanceId":"1"
\r
205 **3.2 Terminate VNF**
\r
206 -----------------------
\r
208 +---------------+------------------------------------------------------------------+
\r
209 | IF Definition | Description |
\r
210 +===============+==================================================================+
\r
211 | URI | http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ |
\r
212 | | {vnfInstanceId}/terminate |
\r
213 +---------------+------------------------------------------------------------------+
\r
214 | Operation | POST |
\r
215 +---------------+------------------------------------------------------------------+
\r
216 | Direction | NSLCM->VNFMDriver |
\r
217 +---------------+------------------------------------------------------------------+
\r
221 +-----------------+------------+-------------+-----------+----------------------------------+
\r
222 | Parameter | Qualifier | Cardinality | Content | Description |
\r
223 +=================+============+=============+===========+==================================+
\r
224 | terminationType | M | 1 | Enum | Signals whether forceful or |
\r
225 | | | | | graceful termination is |
\r
226 | | | | | requested. |
\r
227 | | | | | In case of forceful termination, |
\r
228 | | | | | the VNF is shut down |
\r
229 | | | | | immediately, and resources are |
\r
230 | | | | | released. Note that if the VNF |
\r
231 | | | | | is still in service, this may |
\r
232 | | | | | adversely impact network |
\r
233 | | | | | service, and therefore, operator |
\r
234 | | | | | policies apply to determine if |
\r
235 | | | | | forceful termination is allowed |
\r
236 | | | | | in the particular situation. |
\r
238 | | | | | In case of graceful termination, |
\r
239 | | | | | the VNFM first arranges to take |
\r
240 | | | | | the VNF out of service (by |
\r
241 | | | | | means out of scope of the |
\r
242 | | | | | present specification, e.g. |
\r
243 | | | | | involving interaction with EM, |
\r
244 | | | | | if required). Once this was |
\r
245 | | | | | successful, or after a timeout, |
\r
246 | | | | | the VNFM shuts down the VNF |
\r
247 | | | | | and releases the resources. |
\r
248 +-----------------+------------+-------------+-----------+----------------------------------+
\r
249 | graceful | M | 0..1 | Time | The time interval (second) to |
\r
250 | Termination | | | Duration | wait for the VNF to be taken out |
\r
251 | Timeout | | | | of service during graceful |
\r
252 | | | | | termination, before shutting |
\r
253 | | | | | down the VNF and releasing the |
\r
254 | | | | | resources. |
\r
255 | | | | | If not given, it is expected |
\r
256 | | | | | that the VNFM waits for the |
\r
257 | | | | | successful taking out of service |
\r
258 | | | | | of the VNF, no matter how long |
\r
259 | | | | | it takes, before shutting down |
\r
260 | | | | | the VNF and releasing the |
\r
261 | | | | | resources (see note). |
\r
263 | | | | | Minimum timeout or timeout |
\r
264 | | | | | range are specified by the VNF |
\r
265 | | | | | Provider (e.g. defined in the |
\r
266 | | | | | VNFD or communicated by |
\r
267 | | | | | other means). |
\r
269 | | | | | Not relevant in case of forceful |
\r
270 | | | | | termination. |
\r
271 +-----------------+------------+-------------+-----------+----------------------------------+
\r
274 "vnfInstanceId":"1",
\r
275 "terminationType":"graceful",
\r
276 "gracefulTerminationTimeout":"60"
\r
281 +--------------+------------+-------------+-----------+--------------------------------+
\r
282 | Parameter | Qualifier | Cardinality | Content | Description |
\r
283 +==============+============+=============+===========+================================+
\r
284 | jobId | M | 1 | Identifier| Identifier of the VNF lifecycle|
\r
285 | | | | | operation occurrence. |
\r
287 | | | | | [lifecycleOperationOccurren |
\r
289 +--------------+------------+-------------+-----------+--------------------------------+
\r
299 +---------------+------------------------------------------------------------------+
\r
300 | IF Definition | Description |
\r
301 +===============+==================================================================+
\r
302 | URI | http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ |
\r
303 | | {vnfInstanceId} |
\r
304 +---------------+------------------------------------------------------------------+
\r
305 | Operation | GET |
\r
306 +---------------+------------------------------------------------------------------+
\r
307 | Direction | NSLCM->VNFMDriver |
\r
308 +---------------+------------------------------------------------------------------+
\r
312 VNF filter: vnfInstanceId via url [R1]
\r
316 +--------------+------------+-------------+-----------+---------------------------------+
\r
317 | Parameter | Qualifier | Cardinality | Content | Description |
\r
318 +==============+============+=============+===========+=================================+
\r
319 | vnfInfo | M | o..N | vnfInfo | The information items about the |
\r
320 | | | | | selected VNF instance(s) that |
\r
321 | | | | | are returned. |
\r
323 | | | | | If attributeSelector is present,|
\r
324 | | | | | only the attributes listed in |
\r
325 | | | | | attributeSelector will be |
\r
326 | | | | | returned for the selected |
\r
327 | | | | | VNF instance(s). |
\r
328 | | | | | See note. |
\r
329 +--------------+------------+-------------+-----------+---------------------------------+
\r
333 +-----------------+------------+-------------+----------+---------------------------------+
\r
334 | Attribute | Qualifier | Cardinality | Content | Description |
\r
335 +=================+============+=============+==========+=================================+
\r
336 | vnfInstanceId | M | 1 | String | VNF instance identifier. |
\r
337 +-----------------+------------+-------------+----------+---------------------------------+
\r
338 | vnfInstanceName | M | o..1 | String | VNF instance name. See note. |
\r
339 +-----------------+------------+-------------+----------+---------------------------------+
\r
340 | vnfInstance | M | o..1 | String | Human-readable description of |
\r
341 | Description | | | | the VNF instance. |
\r
342 +-----------------+------------+-------------+----------+---------------------------------+
\r
343 | vnfdId | M | 1 | String | Identifier of the VNFD on which |
\r
344 | | | | | the VNF instance is based. |
\r
345 +-----------------+------------+-------------+----------+---------------------------------+
\r
346 | vnfPackageId | M | o..1 | String | Identifier of the VNF Package |
\r
347 | | | | | used to manage the lifecycle of |
\r
348 | | | | | the VNF instance. See note. |
\r
349 | | | | | Shall be present for an |
\r
350 | | | | | instantiated VNF instance. |
\r
351 +-----------------+------------+-------------+----------+---------------------------------+
\r
352 | version | M | 1 | String | Version of the VNF. |
\r
353 +-----------------+------------+-------------+----------+---------------------------------+
\r
354 | vnfProvider | M | 1 | String | Name of the person or company |
\r
355 | | | | | providing the VNF. |
\r
356 +-----------------+------------+-------------+----------+---------------------------------+
\r
357 | vnfType | M | 1 | String | VNF Application Type |
\r
358 +-----------------+------------+-------------+----------+---------------------------------+
\r
359 | vnfStatus | M | 1 | Enum | The instantiation state of the |
\r
360 | | | | | VNF. Possible values: |
\r
361 | | | | | INACTIVE (Vnf is terminated or |
\r
362 | | | | | not instantiated ), |
\r
363 | | | | | ACTIVE (Vnf is instantiated). |
\r
364 | | | | | [instantiationState] |
\r
365 +-----------------+------------+-------------+----------+---------------------------------+
\r
370 "nfInstanceId":"1",
\r
371 "vnfInstanceName":"vFW",
\r
372 "vnfInstanceDescription":"vFW in Nanjing TIC Edge",
\r
374 "vnfPackageId":"1",
\r
376 "vnfProvider":"ZTE",
\r
378 "vnfStatus":" ACTIVE",
\r
382 **3.4 Get operation status**
\r
383 -----------------------------
\r
385 +---------------+------------------------------------------------------------------+
\r
386 | IF Definition | Description |
\r
387 +===============+==================================================================+
\r
388 | URI | http(s)://[hostname][:port]/api/{vnfmtype} |
\r
389 | | /v1/{vnfmid}/jobs/{jobid}&responseId={ responseId } |
\r
390 +---------------+------------------------------------------------------------------+
\r
391 | Operation | GET |
\r
392 +---------------+------------------------------------------------------------------+
\r
393 | Direction | NSLCM->VNFMDriver |
\r
394 +---------------+------------------------------------------------------------------+
\r
402 +--------------------+------------+-------------+-------------+---------------------------------+
\r
403 | Parameter | Qualifier | Cardinality | Content | Description |
\r
404 +====================+============+=============+=============+=================================+
\r
405 | jobId | M | 1 | String | Job ID |
\r
406 +--------------------+------------+-------------+-------------+---------------------------------+
\r
407 | responseDescriptor | M | 1 | - | Including: |
\r
408 | | | | | vnfStatus, statusDescription, |
\r
409 | | | | | errorCode,progress, |
\r
410 | | | | | responseHistoryList, responseId |
\r
411 +--------------------+------------+-------------+-------------+---------------------------------+
\r
412 | status | M | 1 | String | JOB status |
\r
413 | | | | | started |
\r
414 | | | | | processing |
\r
415 | | | | | finished |
\r
417 +--------------------+------------+-------------+-------------+---------------------------------+
\r
418 | progress | M | 1 | Integer | progress (1-100) |
\r
419 +--------------------+------------+-------------+-------------+---------------------------------+
\r
420 | statusDescription | M | 1 | String | Progress Description |
\r
421 +--------------------+------------+-------------+-------------+---------------------------------+
\r
422 | errorCode | M | 1 | Integer | Errorcode |
\r
423 +--------------------+------------+-------------+-------------+---------------------------------+
\r
424 | responseId | M | 1 | Integer | Response Identifier |
\r
425 +--------------------+------------+-------------+-------------+---------------------------------+
\r
426 | response | M | o..N | ArrayList<> | History Response Messages |
\r
427 | HistoryList | | | | from the requested |
\r
428 | | | | | responseId to lastest one. |
\r
429 | | | | | Including fields: |
\r
430 | | | | | vnfStatus, |
\r
431 | | | | | statusDescription, |
\r
432 | | | | | errorCode, |
\r
433 | | | | | progress, |
\r
434 | | | | | responseId |
\r
435 +--------------------+------------+-------------+-------------+---------------------------------+
\r
438 "jobId" : "1234566",
\r
439 "responseDescriptor" : {
\r
441 "status" : "proccessing",
\r
442 "statusDescription" : "OMC VMs are decommissioned in VIM",
\r
443 "errorCode" : null,
\r
444 "responseId" : "42",
\r
445 "responseHistoryList" : [{
\r
447 "status" : "proccessing",
\r
448 "statusDescription" : "OMC VMs are decommissioned in VIM",
\r
449 "errorCode" : null,
\r
453 "status" : "proccessing",
\r
454 "statusDescription" : "OMC VMs are decommissioned in VIM",
\r
455 "errorCode" : null,
\r
465 +---------------+------------------------------------------------------------------+
\r
466 | IF Definition | Description |
\r
467 +===============+==================================================================+
\r
468 | URI | http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs/ |
\r
469 | | {vnfInstanceId}/scale |
\r
470 +---------------+------------------------------------------------------------------+
\r
471 | Operation | POST |
\r
472 +---------------+------------------------------------------------------------------+
\r
473 | Direction | NSLCM->VNFMDriver |
\r
474 +---------------+------------------------------------------------------------------+
\r
478 +---------------+------------+-------------+-------------+---------------------------------------------+
\r
479 | Parameter | Qualifier | Cardinality | Content | Description |
\r
480 +===============+============+=============+=============+=============================================+
\r
481 | type | M | 1 | Enum | Defines the type of the scale operation |
\r
482 | | | | | requested (scale out, scale in). The set of |
\r
483 | | | | | types actually supported depends on the |
\r
484 | | | | | capabilities of the VNF being managed, as |
\r
485 | | | | | declared in the VNFD. See note 1. |
\r
486 +---------------+------------+-------------+-------------+---------------------------------------------+
\r
487 | aspectId | M | 1 | Identifier | Identifies the aspect of the VNF that is |
\r
488 | | | | | requested to be scaled, as declared in the |
\r
489 +---------------+------------+-------------+-------------+---------------------------------------------+
\r
490 | numberOfSteps | M | 1 | Integer | Number of scaling steps to be executed as |
\r
491 | | | | | part of this ScaleVnf operation. It shall |
\r
492 | | | | | be a positive number. |
\r
493 | | | | | Defaults to 1. |
\r
494 | | | | | The VNF Provider defines in the VNFD |
\r
495 | | | | | whether or not a particular VNF supports |
\r
496 | | | | | performing more than one step at a time. |
\r
497 | | | | | Such a property in the VNFD applies for all |
\r
498 +--------------------+------------+-------------+-------------+----------------------------------------+
\r
499 | additional | M | 1 |KeyValuePair | Additional parameters passed by the NFVO |
\r
500 | Param | | | | as input to the scaling proccess, specific |
\r
501 | | | | | to the VNF being scaled. |
\r
502 | | | | | Reserved |
\r
503 +---------------+------------+-------------+-------------+---------------------------------------------+
\r
504 | NOTE 1: ETSI GS NFV-IFA 010 [2] specifies that the lifecycle management operations that expand |
\r
505 | or contract a VNF instance include scale in, scale out, scale up and scale down. Vertical |
\r
506 | scaling (scale up, scale down) is not supported in the present document. |
\r
507 | SCALE_IN designates scaling in. |
\r
508 | SCALE_OUT 1 designates scaling out. |
\r
509 | NOTE 2: A scaling step is the smallest unit by which a VNF can be scaled w.r.t a particular scaling |
\r
511 +------------------------------------------------------------------------------------------------------+
\r
514 "vnfInstanceId":"5",
\r
515 "type":" SCALE_OUT",
\r
517 "numberOfSteps":"1",
\r
518 "additionalParam":{
\r
525 +--------------------+------------+-------------+-------------+---------------------------------+
\r
526 | Parameter | Qualifier | Cardinality | Content | Description |
\r
527 +====================+============+=============+=============+=================================+
\r
528 | jobId | M | 1 | String | The identifier of the VNF |
\r
529 | | | | | lifecycle operation occurrence. |
\r
530 +--------------------+------------+-------------+-------------+---------------------------------+
\r
539 +---------------+------------------------------------------------------------------+
\r
540 | IF Definition | Description |
\r
541 +===============+==================================================================+
\r
542 | URI | http(s)://[hostname][:port]/api/{vnfmtype}/v1/{vnfmid}/vnfs |
\r
543 | | {vnfInstanceId}/heal |
\r
544 +---------------+------------------------------------------------------------------+
\r
545 | Operation | POST |
\r
546 +---------------+------------------------------------------------------------------+
\r
547 | Direction | NSLCM->VNFMDriver |
\r
548 +---------------+------------------------------------------------------------------+
\r
552 +--------------------+------------+-------------+-------------+---------------------------------+
\r
553 | Parameter | Qualifier | Cardinality | Content | Description |
\r
554 +====================+============+=============+=============+=================================+
\r
555 | action | M | 1 | String | Indicates the action to be done |
\r
556 | | | | | upon the given virtual machine. |
\r
557 | | | | | Only "vmReset" is supported |
\r
558 | | | | | currently. |
\r
559 +--------------------+------------+-------------+-------------+---------------------------------+
\r
560 | affectedvm | M | 1 | AffectedVm | Defines the information of |
\r
561 | | | | | virtual machines. |
\r
562 +--------------------+------------+-------------+-------------+---------------------------------+
\r
566 +--------------------+------------+-------------+-------------+---------------------------------+
\r
567 | Parameter | Qualifier | Cardinality | Content | Description |
\r
568 +====================+============+=============+=============+=================================+
\r
569 | vimid | M | 1 | String | Defines the UUID of virtual |
\r
570 | | | | | machine. |
\r
571 +--------------------+------------+-------------+-------------+---------------------------------+
\r
572 | vduid | M | 1 | String | Defines the id of vdu. |
\r
573 +--------------------+------------+-------------+-------------+---------------------------------+
\r
574 | vmname | M | 1 | | Defines the name of virtual |
\r
575 | | | | | machines. |
\r
576 +--------------------+------------+-------------+-------------+---------------------------------+
\r
579 "action": "vmReset",
\r
582 "vmid": "804cca71-9ae9-4511-8e30-d1387718caff",
\r
583 "vduid": "vdu_100",
\r
584 "vmname": "ZTE_SSS_111_PP_2_L"
\r
590 +--------------------+------------+-------------+-------------+---------------------------------+
\r
591 | Parameter | Qualifier | Cardinality | Content | Description |
\r
592 +====================+============+=============+=============+=================================+
\r
593 | jobId | M | 1 | Identifier | The identifier of the VNF |
\r
594 | | | | | healing operation occurrence. |
\r
595 +--------------------+------------+-------------+-------------+---------------------------------+
\r