Applying license changes to all files
[appc.git] / appc-provider / appc-provider-model / src / main / yang / appc-provider-lcm.yang
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * 
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 /*
26  * Yang model for the Application Controller (APP-C) component of ECOMP
27  *
28  * This model is used to define the data and services of the Application Controller
29  * component of ECOMP.  The APP-C controller initiates the processing of directed
30  * graphs, which define the actual process implementations used.  The name of the
31  * directed graph is set by properties and cannot be changed dynamically.
32  *
33  * The services exposed by this provider are:
34  *
35  * restart-vnf:
36  *    Used to request a restart of a virtual network function (a VM).
37  *
38  * rebuild-vnf:
39  *    Used to request a rebuild of a virtual network function (a VM).
40  *
41  */
42
43 module appc-provider-lcm {
44
45     yang-version 1;
46     namespace "org:openecomp:appc:lcm";
47     prefix appc-provider-lcm;
48     organization "Copyright 2017 AT&T Intellectual Property.";
49
50     description
51       "Defines the services and request/response requirements for the ECOMP APP-C component.";
52
53     /*
54      * Note, the revision changes the package name of the generated java code.  Do not
55      * change the revision unless you also update all references to the bindings.
56      */
57     revision "2016-01-08" {
58       description
59         "APP-C interface version 1.0.48";
60     }
61
62     /**********************************************************************************
63      * Data type definitions
64      *
65      * The following data type definitions are used to define common data structures,
66      * define constraints, or to impart special meanings to data objects related to the
67      * APP-C controller functions.
68      **********************************************************************************/
69
70    
71
72     typedef ZULU {
73         description "Define a common definition of a time stamp (expressed as a formatted
74                 string) as follows yyyy-MM-ddTHH:mm:ss.SSSSSSSSZ";
75         type string {
76             length "16..28";
77             pattern "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}.[0-9]{1,6}Z";
78         }
79     }
80
81     typedef payload {
82            type string ;
83            description "The payload can be any valid JSON string value. Json escape characters need to be added when required to include an inner json within the payload to make it a valid json string value";
84     }
85
86     typedef action {
87         type enumeration {
88             enum "Restart";
89             enum "Rebuild";
90             enum "Migrate";
91             enum "Evacuate";
92             enum "Snapshot";
93             enum "Rollback";
94             enum "Sync";
95             enum "Audit";
96             enum "Stop";
97             enum "Start";
98             enum "Terminate";
99             enum "SoftwareUpload";
100             enum "HealthCheck";
101             enum "LiveUpgrade";
102             enum "Lock";
103             enum "Unlock";
104             enum "Test";
105             enum "CheckLock";
106             enum "Configure";
107             enum "ConfigModify";
108             enum "ConfigScaleOut";
109             enum "ConfigRestore";
110             enum "ConfigBackup";
111             enum "ConfigBackupDelete";
112             enum "ConfigExport";
113         }
114         description "The action to be taken by APP-C, e.g. Restart, Rebuild, Migrate";
115     }
116
117     /**********************************************************************************
118      * All requests will include this standard header
119      *
120      * The standard request header is used to define a correlation identification for
121      * the request that is returned on all responses.  This correlation identifier
122      * (called the service-request-id) is meaningful to the caller and is included on
123      * all responses from the services.
124      **********************************************************************************/
125     
126
127     /**********************************************************************************
128      * Basic manipulation of a VNF (or VM) will typically include querying the current
129      * state, restarting, rebuilding, stopping, starting, etc.  In all of these basic
130      * "state"-type operations, the services require the identification of the VNF to
131      * be operated on, and the region or LCP that contains that resource.  This
132      * information is used across all of these services, so it has been defined as a
133      * common structure here and is referenced in the appropriate RPC definitions.
134      **********************************************************************************/
135     
136
137     /**********************************************************************************
138      * All responses will include this standard header
139      *
140      * The standard response header includes the time of completion as well as a
141      * success|failure indication
142      **********************************************************************************/
143     
144
145
146        /**********************************************************************************
147          * All requests/response will include this standard header
148          *
149          * The standard common header is used to define a correlation identification for
150          * the request that is returned on all responses.
151          **********************************************************************************/
152     
153     
154     
155     grouping common-header {
156         description "A common header for all APP-C requests";
157         container common-header {
158             description "A common header for all APP-C requests";
159             leaf timestamp {
160                 description "timestamp is in ISO 8601 timestamp format ZULU offset";
161                 type ZULU;
162                 mandatory true;
163             }
164
165             leaf api-ver {
166                 description "api-ver is the API version identifier. A given release of APPC
167                                 should support all previous versions of APPC API (correlate with
168                                 general requirements)";
169                 type string {
170                     pattern "[2]\.\d\d" {
171                         error-message "API Version 2.XX is supported at this end point";
172                     }
173                 }
174                 mandatory true;
175             }
176
177             leaf originator-id {
178                 description "originator-id an identifier of the calling system which can be
179                                 used addressing purposes, i.e. returning asynchronous response
180                                 to the proper destination over DMaaP (especially in case of multiple
181                                 consumers of APP-C APIs)";
182                 type string;
183                 mandatory true;
184             }
185
186             leaf request-id {
187                 description "UUID for the request ID. An OSS/BSS identifier for the request
188                                 that caused the current action. Multiple API calls may be made
189                                 with the same request-id The request-id shall be recorded throughout
190                                 the operations on a single request";
191                 type string;
192                 mandatory true;
193             }
194
195             leaf sub-request-id {
196                 description "Uniquely identifies a specific LCM action. It is persistent over
197                                 the life-cycle of a single request";
198                 type string;
199                 mandatory false;
200             }
201
202
203                 /**********************************************************************************
204                  * Flags are generic flags that apply to any and all commands, all are optional
205                  *  force = TRUE/FALSE - Execute command even if target is in unstable (i.e. locked, transiting, etc) state. Specific behaviour of forced commands varies, but implies cancellation of previous command and an override by the new command. The FALSE value is used by default.
206                  *  ttl = <0....N> - The timeout value for command execution, expressed in seconds
207                  *  mode = EXCLUSIVE/NORMAL - defines execution mode as follows:
208                  *        - EXCLUSIVE ? on encountering an exclusive command, the APP-C will:
209                  *          * Cease accepting additional command requests
210                  *          * Complete execution of outstanding commands
211                  *          * Execute the exclusive command to completion
212                  *          * Optionally report the result of the command
213                  *          * Optionally resume command acceptance and processing
214                  *        - NORMAL - Obverse of EXCLUSIVE, the default one.
215                  **********************************************************************************/
216             container flags {
217                 description "Flags are generic flags that apply to any and all commands, all
218                                 are optional";
219                 leaf mode {
220                     type enumeration {
221                         enum "EXCLUSIVE";
222                         enum "NORMAL";
223                     }
224                     description "EXCLUSIVE (accept no queued requests on this VNF while processing)
225                                         or NORMAL (queue other requests until complete)";
226                     mandatory false;
227                 }
228                 leaf force {
229                     type enumeration {
230                         enum "TRUE";
231                         enum "FALSE";
232                     }
233                     description "TRUE/FALSE - Execute action even if target is in unstable (i.e.
234                                         locked, transiting, etc.) state";
235                     mandatory false;
236                 }
237                 leaf ttl {
238                     description "<0....N> - The timeout value (expressed in seconds) for action
239                                         execution, between action being received by APPC and action initiation";
240                     type uint16;
241                     mandatory false;
242                 }
243                 }
244             }
245         }
246
247
248     grouping action-identifiers {
249         description "A block containing the action arguments. These are used to specify
250                 the object upon which APP-C LCM command is to operate";
251         container action-identifiers {
252             description "A block containing the action arguments. These are used to specify
253                         the object upon which APP-C LCM command is to operate";
254             leaf service-instance-id {
255                 description "identifies a specific service the command refers to. When multiple
256                                 APP-C instances are used and applied to a subset of services,
257                                 this will become significant . The field is mandatory when the
258                                 vnf-id is empty";
259                 type string;
260                 mandatory false;
261             }
262             leaf vnf-id {
263                 description "identifies the VNF to which this action is to be applied(vnf-id
264                                 uniquely identifies the service-instance referred to). Note that
265                                 some actions are applied to multiple VNFs in the same service.
266                                 When this is the case, vnf-id may be left out, but service-instance-id
267                                 must appear. The field is mandatory when service-instance-id is
268                                 empty";
269                 type string;
270                 mandatory false;
271             }
272             leaf vnfc-name {
273                 description "identifies the VNFC to which this action is to be applied. Some
274                                 actions apply only to a component within a VNF (e.g. RESTART is
275                                 sometimes applied to on VM only). In such a case, the name of
276                                 the VNFC is used to search for the component within the VNF";
277                 type string;
278                 mandatory false;
279             }
280             leaf vserver-id {
281                 description "identifies a specific VM within the given service/vnf to which
282                                 this action is to be applied";
283                 type string;
284                 mandatory false;
285             }
286         }
287     }
288
289
290      grouping status {
291             description "The specific response codes are to be aligned with ASDC reference doc (main table removed to avoid duplication and digression from main table). See ASDC and ECOMP Distribution Consumer Interface Agreement";
292             container status {
293                 description "The specific response codes are to be aligned with ASDC reference doc (main table removed to avoid duplication and digression from main table). See ASDC and ECOMP Distribution Consumer Interface Agreement";
294                 leaf code {
295                     description "Response code";
296                     type uint16;
297                     mandatory true;
298                 }
299                 leaf message {
300                     description "Response message";
301                     type string;
302                     mandatory true;
303                 }
304             }
305       }
306
307
308
309
310
311     /**********************************************************************************
312              * Define the restart service
313              **********************************************************************************/
314             rpc restart {
315                 description "An operation to restart a virtual network function (or VM)";
316                  input {
317                     uses common-header;
318                     leaf action {
319                         type action;
320                         mandatory true;
321                     }
322                     uses action-identifiers;
323                     leaf payload {
324                       type payload;
325                       mandatory false;
326                     }
327                 }
328                 output {
329                     uses common-header;
330                     uses status;
331                 }
332             }
333
334             /**********************************************************************************
335              * Define the rebuild service
336              **********************************************************************************/
337             rpc rebuild {
338                 description "An operation to rebuild a virtual network function (or VM)";
339                 input {
340                     uses common-header;
341                     leaf action {
342                         type action;
343                         mandatory true;
344                     }
345                     uses action-identifiers;
346                     leaf payload {
347                         type payload;
348                         mandatory false;
349                     }
350                 }
351                 output {
352                     uses common-header;
353                     uses status;
354                 }
355             }
356
357             /**********************************************************************************
358              * Define the migrate service
359              **********************************************************************************/
360             rpc migrate {
361                 description "An operation to migrate a virtual network function (or VM)";
362                 input {
363                     uses common-header;
364                     leaf action {
365                         type action;
366                         mandatory true;
367                     }
368                     uses action-identifiers;
369                     leaf payload {
370                         type payload;
371                         mandatory false;
372                     }
373                 }
374                 output {
375                     uses common-header;
376                     uses status;
377                 }
378             }
379
380              /**********************************************************************************
381              * Define the evacuate service
382              **********************************************************************************/
383             rpc evacuate {
384                 description "An operation to evacuate a virtual network function (or VM)";
385                 input {
386                     uses common-header;
387                     leaf action {
388                         type action;
389                         mandatory true;
390                     }
391                     uses action-identifiers;
392                     leaf payload {
393                         type payload;
394                         mandatory false;
395                     }
396                 }
397                 output {
398                     uses common-header;
399                     uses status;
400                 }
401             }
402
403
404          /**********************************************************************************
405          * Define the snapshot service
406          **********************************************************************************/
407         rpc snapshot {
408             description "An operation to create a snapshot of a virtual network function (or VM)";
409             input {
410                 uses common-header;
411                 leaf action {
412                   type action;
413                   mandatory true;
414                 }
415                 uses action-identifiers;
416                 leaf payload {
417                   type payload;
418                   mandatory false;
419                 }
420                 leaf identity-url {
421                     type string;
422                      mandatory true;
423                 }
424             }
425             output {
426                 uses common-header;
427                 uses status;
428                 leaf snapshot-id {
429                     type string;
430                 }
431
432             }
433         }
434
435          /**********************************************************************************
436          * Define the rollback service
437          **********************************************************************************/
438         rpc rollback {
439             description "An operation to rollback to particular snapshot of a virtual network function (or VM)";
440             input {
441                 uses common-header;
442                 leaf action {
443                   type action;
444                   mandatory true;
445                 }
446                 uses action-identifiers;
447                 leaf payload {
448                   type payload;
449                   mandatory false;
450                 }
451                 leaf identity-url {
452                     type string;
453                      mandatory true;
454                 }
455                 leaf snapshot-id {
456                     type string;
457                      mandatory true;
458                 }
459             }
460             output {
461                 uses common-header;
462                 uses status;
463             }
464         }
465
466
467     /**********************************************************************************
468      * Additional RPCs added here...
469      **********************************************************************************/
470
471
472       /**********************************************************************************
473      * Define the sync service
474      **********************************************************************************/
475     rpc sync {
476         description "An operation to sync the configurations of a virtual network function (or VM)";
477         input {
478             uses common-header;
479             leaf action {
480                        type action;
481                        mandatory true;
482             }
483             uses action-identifiers;
484             leaf payload {
485                 type payload;
486                 mandatory false;
487             }
488         }
489         output {
490             uses common-header;
491             uses status;
492             leaf payload {
493                 type payload;
494                 mandatory false;
495            }
496         }
497     }
498
499     /**********************************************************************************
500      * Define the terminate service
501      **********************************************************************************/
502     rpc terminate {
503         description "An operation to terminate the configurations of a virtual network function (or VM)";
504         input {
505             uses common-header;
506             leaf action {
507                        type action;
508                        mandatory true;
509             }
510             uses action-identifiers;
511             leaf payload {
512                         type payload;
513                         mandatory false;
514             }
515         }
516         output {
517             uses common-header;
518             uses status;
519         }
520     }
521
522
523     rpc configure {
524         description "An operation to configure the configurations of a virtual network
525                 function (or VM)";
526         input {
527             uses common-header;
528             leaf action {
529                 type action;
530                 mandatory true;
531             }
532             uses action-identifiers;
533             leaf payload {
534                 type payload;
535                 mandatory false;
536             }
537         }
538         output {
539             uses common-header;
540             uses status;
541             leaf payload {
542                  type payload;
543                  mandatory false;
544             }
545         }
546     }
547
548     rpc config-modify {
549         description "Use the ModifyConfig command when a full configuration cycle is either not required or is considered too costly. The ModifyConfig LCM action affects only a subset of the total configuration data of a VNF. The set of configuration parameters to be affected is a subset of the total configuration data of the target VNF type. The payload block must contain the configuration parameters to be modified and their values. A successful modify returns a success response. A failed modify returns a failure response and the specific failure messages in the response payload block";
550         input {
551             uses common-header;
552             leaf action {
553                 type action;
554                 mandatory true;
555             }
556             uses action-identifiers;
557             leaf payload {
558                 type payload;
559                 mandatory false;
560             }
561         }
562         output {
563             uses common-header;
564             uses status;
565             leaf payload {
566                  type payload;
567                  mandatory false;
568             }
569         }
570     }
571
572     rpc config-scaleout {
573         description "An operation to scaleout the configurations of a virtual network
574                 function (or VM)";
575         input {
576             uses common-header;
577             leaf action {
578                 type action;
579                 mandatory true;
580             }
581             uses action-identifiers;
582             leaf payload {
583                 type payload;
584                 mandatory false;
585             }
586         }
587         output {
588             uses common-header;
589             uses status;
590             leaf payload {
591                  type payload;
592                  mandatory false;
593             }
594         }
595     }
596
597     rpc config-restore {
598         description "An operation to restore the configurations of a virtual network
599                 function (or VM)";
600         input {
601             uses common-header;
602             leaf action {
603                 type action;
604                 mandatory true;
605             }
606             uses action-identifiers;
607             leaf payload {
608                 type payload;
609                 mandatory false;
610             }
611         }
612         output {
613             uses common-header;
614             uses status;
615             leaf payload {
616                  type payload;
617                  mandatory false;
618             }
619         }
620     }
621
622     /**********************************************************************************
623          * Define the test service
624          **********************************************************************************/
625     rpc test {
626         description "An operation to test the configurations of a virtual network function (or VM)";
627         input {
628             uses common-header;
629             leaf action {
630                        type action;
631                        mandatory true;
632             }
633             uses action-identifiers;
634             leaf payload {
635                         type payload;
636                         mandatory false;
637             }
638         }
639         output {
640             uses common-header;
641             uses status;
642         }
643     }
644
645         /**********************************************************************************
646          * Define the stop service
647          **********************************************************************************/
648         rpc stop {
649             description "An operation to stop the configurations of a virtual network function (or VM)";
650             input {
651                 uses common-header;
652                 leaf action {
653                            type action;
654                            mandatory true;
655                 }
656                 uses action-identifiers;
657                 leaf payload {
658                             type payload;
659                             mandatory false;
660                 }
661             }
662             output {
663                 uses common-header;
664                 uses status;
665             }
666         }
667
668         rpc start {
669             description "An operation to start a virtual network function (or VM)";
670             input {
671                 uses common-header;
672                 leaf action {
673                     type action;
674                     mandatory true;
675                 }
676                 uses action-identifiers;
677                 leaf payload {
678                     type payload;
679                     mandatory false;
680                 }
681             }
682             output {
683                 uses common-header;
684                 uses status;
685             }
686         }
687
688        /**********************************************************************************
689         * Define the audit service
690         **********************************************************************************/
691        rpc audit {
692            description "An operation to audit the configurations of a virtual network function (or VM)";
693            input {
694                uses common-header;
695                leaf action {
696                           type action;
697                           mandatory true;
698                }
699                uses action-identifiers;
700                leaf payload {
701                    type payload;
702                    mandatory false;
703                }
704            }
705            output {
706                uses common-header;
707                uses status;
708                leaf payload {
709                    type payload;
710                    mandatory false;
711               }
712            }
713        }
714
715        /**********************************************************************************
716        * Define the SoftwareUpload vSCP service
717        **********************************************************************************/
718       rpc software-upload {
719           description "An operation to upload a new version of vSCP image to vSCP for updating it";
720           input {
721               uses common-header;
722               leaf action {
723                          type action;
724                          mandatory true;
725               }
726               uses action-identifiers;
727               leaf payload {
728                           type payload;
729                           mandatory false;
730               }
731           }
732           output {
733               uses common-header;
734               uses status;
735           }
736       }
737
738
739
740       /**********************************************************************************
741            * Define the PreHealthCheck vSCP service
742            **********************************************************************************/
743           rpc health-check {
744               description "An operation to perform health check of vSCP prior its upgrading";
745               input {
746                   uses common-header;
747                   leaf action {
748                              type action;
749                              mandatory true;
750                   }
751                   uses action-identifiers;
752                   leaf payload {
753                                                    type payload;
754                                                    mandatory false;
755                                        }
756               }
757               output {
758                   uses common-header;
759                   uses status;
760
761               }
762           }
763
764
765     /**********************************************************************************
766               * Define the Upgrade vSCP service
767               **********************************************************************************/
768              rpc live-upgrade {
769                  description "An operation to perform upgrade of vSCP";
770                  input {
771                      uses common-header;
772                      leaf action {
773                                 type action;
774                                 mandatory true;
775                      }
776                      uses action-identifiers;
777                      leaf payload {
778                                  type payload;
779                                  mandatory false;
780                      }
781                  }
782                  output {
783                      uses common-header;
784                      uses status;
785                  }
786              }
787
788
789      /**********************************************************************************
790                      * Define the VNF lock service
791                      **********************************************************************************/
792                     rpc lock {
793                         description "An operation to perform VNF lock operation";
794                         input {
795                             uses common-header;
796                             leaf action {
797                                        type action;
798                                        mandatory true;
799                             }
800                             uses action-identifiers;
801                             leaf payload {
802                                         type payload;
803                                         mandatory false;
804                             }
805                         }
806                         output {
807                             uses common-header;
808                             uses status;
809                         }
810                     }
811
812         /**********************************************************************************
813          * Define the VNF unlock service
814          **********************************************************************************/
815                         rpc unlock {
816                             description "An operation to perform VNF unlock operation";
817                             input {
818                                 uses common-header;
819                                 leaf action {
820                                            type action;
821                                            mandatory true;
822                                 }
823                                 uses action-identifiers;
824                                 leaf payload {
825                                             type payload;
826                                             mandatory false;
827                                 }
828                             }
829                             output {
830                                 uses common-header;
831                                 uses status;
832                             }
833                         }
834
835      /**********************************************************************************
836      * Define the VNF check lock service
837      **********************************************************************************/
838     rpc check-lock {
839         description "An operation to check VNF lock status";
840         input {
841             uses common-header;
842             leaf action {
843                        type action;
844                        mandatory true;
845             }
846             uses action-identifiers;
847         }
848         output {
849             uses common-header;
850             uses status;
851             leaf locked {
852                 type enumeration {
853                             enum "TRUE";
854                             enum "FALSE";
855                        }
856                 description "TRUE/FALSE - returns TRUE when the given VNF was locked, otherwise returns FALSE";
857                 mandatory false;
858             }
859         }
860     }
861
862
863     rpc config-backup {
864         description "An operation to Backup configurations of a virtual network function
865                 (or VM)";
866         input {
867             uses common-header;
868             leaf action {
869                 type action;
870                 mandatory true;
871             }
872             uses action-identifiers;
873         }
874         output {
875             uses common-header;
876             uses status;
877             leaf payload {
878                  type payload;
879                  mandatory false;
880             }
881         }
882     }
883
884     rpc config-backup-delete {
885         description "An operation to Delete backup configurations of a virtual network
886                 function (or VM)";
887         input {
888             uses common-header;
889             leaf action {
890                 type action;
891                 mandatory true;
892             }
893             uses action-identifiers;
894         }
895         output {
896             uses common-header;
897             uses status;
898             leaf payload {
899                  type payload;
900                  mandatory false;
901             }
902         }
903     }
904
905     rpc config-export {
906         description "An operation to Export configurations of a virtual network function
907                 (or VM)";
908         input {
909             uses common-header;
910             leaf action {
911                 type action;
912                 mandatory true;
913             }
914             uses action-identifiers;
915         }
916         output {
917             uses common-header;
918             uses status;
919         }
920     }  
921     
922     /**********************************************************************************
923      * Additional RPCs added here...
924      **********************************************************************************/
925 }