2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 * ============LICENSE_END=========================================================
26 * Yang model for the Application Controller (APP-C) component of ECOMP
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.
33 * The services exposed by this provider are:
36 * Used to request a restart of a virtual network function (a VM).
39 * Used to request a rebuild of a virtual network function (a VM).
46 namespace "org:onap:ccsdk:sli:northbound:lcm";
50 "Defines the services and request/response requirements for the CCSDK LCM component.";
53 * Note, the revision changes the package name of the generated java code. Do not
54 * change the revision unless you also update all references to the bindings.
56 revision "2018-03-29" {
58 "CCSDK LCM interface version 0.2.1";
61 /**********************************************************************************
62 * Data type definitions
64 * The following data type definitions are used to define common data structures,
65 * define constraints, or to impart special meanings to data objects related to the
66 * APP-C controller functions.
67 **********************************************************************************/
70 description "Define a common definition of a time stamp (expressed as a formatted
71 string) as follows yyyy-MM-ddTHH:mm:ss.SSSSSSSSZ";
74 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";
80 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";
96 enum "SoftwareUpload";
105 enum "ConfigScaleOut";
106 enum "ConfigRestore";
108 enum "ConfigBackupDelete";
110 enum "StopApplication";
111 enum "StartApplication";
112 enum "QuiesceTraffic";
113 enum "ResumeTraffic";
114 enum "DistributeTraffic";
115 enum "UpgradePreCheck";
116 enum "UpgradeSoftware";
119 enum "UpgradePostCheck";
120 enum "UpgradeBackup";
121 enum "UpgradeBackout";
129 description "The action to be taken by APP-C, e.g. Restart, Rebuild, Migrate";
133 description "The state of a VM";
143 description "The status of a VM";
152 /**********************************************************************************
153 * Basic manipulation of a VNF (or VM) will typically include querying the current
154 * state, restarting, rebuilding, stopping, starting, etc. In all of these basic
155 * "state"-type operations, the services require the identification of the VNF to
156 * be operated on, and the region or LCP that contains that resource. This
157 * information is used across all of these services, so it has been defined as a
158 * common structure here and is referenced in the appropriate RPC definitions.
159 **********************************************************************************/
162 /**********************************************************************************
163 * All requests will include this standard header
165 * The standard request header is used to define a correlation identification for
166 * the request that is returned on all responses. This correlation identifier
167 * (called the service-request-id) is meaningful to the caller and is included on
168 * all responses from the services.
169 **********************************************************************************/
171 /**********************************************************************************
172 * All responses will include this standard header
174 * The standard response header includes the time of completion as well as a
175 * success|failure indication
176 **********************************************************************************/
178 grouping common-header {
179 description "A common header for all APP-C requests";
180 container common-header {
181 description "A common header for all APP-C requests";
183 description "timestamp is in ISO 8601 timestamp format ZULU offset";
189 description "api-ver is the API version identifier. A given release of APPC
190 should support all previous versions of APPC API (correlate with
191 general requirements)";
193 pattern "[2]\.\d\d" {
194 error-message "API Version 2.XX is supported at this end point";
201 description "originator-id an identifier of the calling system which can be
202 used addressing purposes, i.e. returning asynchronous response
203 to the proper destination over DMaaP (especially in case of multiple
204 consumers of APP-C APIs)";
210 description "UUID for the request ID. An OSS/BSS identifier for the request
211 that caused the current action. Multiple API calls may be made
212 with the same request-id The request-id shall be recorded throughout
213 the operations on a single request";
218 leaf sub-request-id {
219 description "Uniquely identifies a specific LCM action. It is persistent over
220 the life-cycle of a single request";
226 /**********************************************************************************
227 * Flags are generic flags that apply to any and all commands, all are optional
228 * force = TRUE/FALSE - Execute command even if target is in unstable (i.e. locked, transiting, etc)
229 * state. Specific behaviour of forced commands varies, but implies cancellation
230 * of previous command and an override by the new command. The FALSE value is
232 * ttl = <0....N> - The timeout value for command execution, expressed in seconds
233 * mode = EXCLUSIVE/NORMAL - defines execution mode as follows:
234 * - EXCLUSIVE ? on encountering an exclusive command, the APP-C will:
235 * * Cease accepting additional command requests
236 * * Complete execution of outstanding commands
237 * * Execute the exclusive command to completion
238 * * Optionally report the result of the command
239 * * Optionally resume command acceptance and processing
240 * - NORMAL - Obverse of EXCLUSIVE, the default one.
241 **********************************************************************************/
243 description "Flags are generic flags that apply to any and all commands, all are optional";
249 description "EXCLUSIVE (accept no queued requests on this VNF while processing)
250 or NORMAL (queue other requests until complete)";
258 description "TRUE/FALSE - Execute action even if target is in unstable (i.e.
259 locked, transiting, etc.) state";
263 description "<0....N> -Â The timeout value (expressed in seconds) for action
264 execution, between action being received by APPC and action initiation";
273 grouping action-identifiers {
274 description "A block containing the action arguments. These are used to specify
275 the object upon which APP-C LCM command is to operate";
276 container action-identifiers {
277 description "A block containing the action arguments. These are used to specify
278 the object upon which APP-C LCM command is to operate";
279 leaf service-instance-id {
280 description "identifies a specific service the command refers to. When multiple
281 APP-C instances are used and applied to a subset of services,
282 this will become significant . The field is mandatory when the
288 description "identifies the VNF to which this action is to be applied(vnf-id
289 uniquely identifies the service-instance referred to). Note that
290 some actions are applied to multiple VNFs in the same service.
291 When this is the case, vnf-id may be left out, but service-instance-id
292 must appear. The field is mandatory when service-instance-id is
298 description "identifies the VF module to which this action is to be applied.";
303 description "identifies the VNFC to which this action is to be applied. Some
304 actions apply only to a component within a VNF (e.g. RESTART is
305 sometimes applied to on VM only). In such a case, the name of
306 the VNFC is used to search for the component within the VNF";
311 description "identifies a specific VM within the given service/vnf to which
312 this action is to be applied";
317 description "identifies the PNF to which this action is to be applied.";
326 description "The specific response codes are to be aligned with SDC reference doc
327 (main table removed to avoid duplication and digression from main table).
328 See SDC and ECOMP Distribution Consumer Interface Agreement";
330 description "The specific response codes are to be aligned with SDC reference doc
331 (main table removed to avoid duplication and digression from main table).
332 See SDC and ECOMP Distribution Consumer Interface Agreement";
334 description "Response code";
339 description "Response message";
346 typedef lcm-action-status {
353 enum "MULTIPLE_REQUESTS_FOUND";
355 description "The status of the requested LCM action";
358 /**********************************************************************************
359 * Define the restart service
360 **********************************************************************************/
362 description "An operation to restart a virtual network function (or VM)";
369 uses action-identifiers;
381 /**********************************************************************************
382 * Define the rebuild service
383 **********************************************************************************/
385 description "An operation to rebuild a virtual network function (or VM)";
392 uses action-identifiers;
404 /**********************************************************************************
405 * Define the migrate service
406 **********************************************************************************/
408 description "An operation to migrate a virtual network function (or VM)";
415 uses action-identifiers;
427 /**********************************************************************************
428 * Define the evacuate service
429 **********************************************************************************/
431 description "An operation to evacuate a virtual network function (or VM)";
438 uses action-identifiers;
450 /**********************************************************************************
451 * Define the snapshot service
452 **********************************************************************************/
454 description "An operation to create a snapshot of a virtual network function (or VM)";
461 uses action-identifiers;
479 /**********************************************************************************
480 * Define the VNF quiesce traffic service
481 **********************************************************************************/
482 rpc quiesce-traffic {
483 description "An operation to stop traffic gracefully on the VF.
484 It stops traffic gracefully without stopping the application";
491 uses action-identifiers;
503 /**********************************************************************************
504 * Define the VNF resume traffic service
505 **********************************************************************************/
507 description "An operation to resume traffic gracefully on the VF.
508 It resumes traffic gracefully without stopping the application";
515 uses action-identifiers;
527 /**********************************************************************************
528 * Define the VNF distribute traffic service
529 **********************************************************************************/
530 rpc distribute-traffic {
531 description "An operation to distribute traffic gracefully on the VF.
532 It distributes traffic gracefully without stopping the application";
539 uses action-identifiers;
551 /**********************************************************************************
552 * Define the VNF UpgradePreCheck service
553 **********************************************************************************/
554 rpc upgrade-pre-check {
555 description "An operation to check that the VNF has the correct software version needed for a software upgrade.";
562 uses action-identifiers;
578 /**********************************************************************************
579 * Define the VNF UpgradeSoftware service
580 **********************************************************************************/
581 rpc upgrade-software {
582 description "An operation to upgrade the target VNF to a new version and expected that the VNF is in a quiesced status .";
589 uses action-identifiers;
601 /**********************************************************************************
602 * Define the downloadNESw operation
603 **********************************************************************************/
604 rpc download-n-e-sw {
605 description "An operation to download NE software";
612 uses action-identifiers;
628 /**********************************************************************************
629 * Define the activateNESw operation
630 **********************************************************************************/
631 rpc activate-n-e-sw {
632 description "An operation to activate NE software";
639 uses action-identifiers;
655 /**********************************************************************************
656 * Define the VNF UpgradePostCheck service
657 **********************************************************************************/
658 rpc upgrade-post-check {
659 description "An operation to check the VNF upgrade has been successful completed and all processes are running properly.";
666 uses action-identifiers;
682 /**********************************************************************************
683 * Define the VNF UpgradeBackup service
684 **********************************************************************************/
686 description "An operation to do full backup of the VNF data prior to an upgrade.";
693 uses action-identifiers;
705 /**********************************************************************************
706 * Define the VNF UpgradeBackout service
707 **********************************************************************************/
708 rpc upgrade-backout {
709 description "An operation does a backout after an UpgradeSoftware is completed (either successfully or unsuccessfully).";
716 uses action-identifiers;
728 /**********************************************************************************
729 * Define the rollback service
730 **********************************************************************************/
732 description "An operation to rollback to particular snapshot of a virtual network function (or VM)";
739 uses action-identifiers;
764 /**********************************************************************************
765 * Additional RPCs added here...
766 **********************************************************************************/
769 /**********************************************************************************
770 * Define the sync service
771 **********************************************************************************/
773 description "An operation to sync the configurations of a virtual network function (or VM)";
780 uses action-identifiers;
796 /**********************************************************************************
797 * Define the terminate service
798 **********************************************************************************/
800 description "An operation to terminate the configurations of a virtual network function (or VM)";
807 uses action-identifiers;
821 description "An operation to configure the configurations of a virtual network
829 uses action-identifiers;
846 description "Use the ModifyConfig command when a full configuration cycle is either not required
847 or is considered too costly. The ModifyConfig LCM action affects only a subset of the
848 total configuration data of a VNF. The set of configuration parameters to be affected
849 is a subset of the total configuration data of the target VNF type. The payload Stop
850 Application must contain the configuration parameters to be modified and their values.
851 A successful modify returns a success response. A failed modify returns a failure
852 response and the specific failure messages in the response payload Stop Application";
859 uses action-identifiers;
875 rpc config-scale-out {
876 description "An operation to Modify the configuration or other action to support
877 a ConfigScaleOut of a VNF.";
884 uses action-identifiers;
901 description "An operation to restore the configurations of a virtual network
909 uses action-identifiers;
925 /**********************************************************************************
926 * Define the test service
927 **********************************************************************************/
929 description "An operation to test the configurations of a virtual network function (or VM)";
936 uses action-identifiers;
948 /**********************************************************************************
949 * Define the stop service
950 **********************************************************************************/
952 description "An operation to stop the configurations of a virtual network function (or VM)";
959 uses action-identifiers;
972 description "An operation to start a virtual network function (or VM)";
979 uses action-identifiers;
991 /**********************************************************************************
992 * Define the audit service
993 **********************************************************************************/
995 description "An operation to audit the configurations of a virtual network function (or VM)";
1002 uses action-identifiers;
1018 /**********************************************************************************
1019 * Define the SoftwareUpload vSCP service
1020 **********************************************************************************/
1021 rpc software-upload {
1022 description "An operation to upload a new version of vSCP image to vSCP for updating it";
1029 uses action-identifiers;
1041 /**********************************************************************************
1042 * Define the PreHealthCheck vSCP service
1043 **********************************************************************************/
1045 description "An operation to perform health check of vSCP prior its upgrading";
1052 uses action-identifiers;
1070 /**********************************************************************************
1071 * Define the Upgrade vSCP service
1072 **********************************************************************************/
1074 description "An operation to perform upgrade of vSCP";
1081 uses action-identifiers;
1094 /**********************************************************************************
1095 * Define the VNF lock service
1096 **********************************************************************************/
1098 description "An operation to perform VNF lock operation";
1105 uses action-identifiers;
1117 /**********************************************************************************
1118 * Define the VNF unlock service
1119 **********************************************************************************/
1121 description "An operation to perform VNF unlock operation";
1128 uses action-identifiers;
1140 /**********************************************************************************
1141 * Define the VNF check lock service
1142 **********************************************************************************/
1144 description "An operation to check VNF lock status";
1151 uses action-identifiers;
1161 description "TRUE/FALSE - returns TRUE when the given VNF was locked, otherwise returns FALSE";
1169 description "An operation to Backup configurations of a virtual network function
1177 uses action-identifiers;
1193 rpc config-backup-delete {
1194 description "An operation to Delete backup configurations of a virtual network
1202 uses action-identifiers;
1215 description "An operation to Export configurations of a virtual network function
1223 uses action-identifiers;
1230 rpc stop-application {
1231 description "An operation to Stop Application traffic to a virtual network function";
1238 uses action-identifiers;
1250 /**********************************************************************************
1251 * Define the VNF Start Application service
1252 **********************************************************************************/
1253 rpc start-application {
1254 description "An operation to perform VNF Start Application operation";
1261 uses action-identifiers;
1274 /**********************************************************************************
1275 * Gets the current state of the previously submitted LCM request
1276 **********************************************************************************/
1278 description "An operation to get the current state of the previously submitted LCM request";
1285 uses action-identifiers;
1300 /**********************************************************************************
1301 * Define the VNF Query service
1302 **********************************************************************************/
1304 description "An operation to query the status of a targe VNF.
1305 Returns information on each VM, including state (active or standby)
1306 and status (healthy or unhealthy)";
1313 uses action-identifiers;
1318 list query-results {
1320 description "Identifier of a VM";
1325 description "The state of the VM";
1330 description "the status of the VM";
1338 /**********************************************************************************
1339 * Define the Reboot service
1340 **********************************************************************************/
1342 description "An operation to reboot a specified virtual machine (VM)";
1349 uses action-identifiers;
1361 /**********************************************************************************
1362 * Define the VM attach volume service
1363 **********************************************************************************/
1365 description "An operation to attach a cinder volume to a VM";
1372 uses action-identifiers;
1384 /**********************************************************************************
1385 * Define the VM detach volume service
1386 **********************************************************************************/
1388 description "An operation to detach a cinder volume from a VM";
1395 uses action-identifiers;
1409 /**********************************************************************************
1410 * Additional RPCs added here...
1411 **********************************************************************************/