1 module o-ran-software-management {
3 namespace "urn:o-ran:software-management:1.0";
6 import ietf-inet-types {
8 revision-date 2013-07-15;
11 import ietf-hardware {
15 import o-ran-hardware {
19 import o-ran-file-management {
23 organization "O-RAN Alliance";
29 "This module defines operations and configuration for the management of software packages.
30 This module is derived out of opencpe-firmware-mgmt@2014-02-06.yang
32 Copyright 2019 the O-RAN Alliance.
34 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
35 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
38 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
39 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
40 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
41 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
42 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
43 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44 POSSIBILITY OF SUCH DAMAGE.
46 Redistribution and use in source and binary forms, with or without
47 modification, are permitted provided that the following conditions are met:
49 * Redistributions of source code must retain the above copyright notice,
50 this list of conditions and the above disclaimer.
51 * Redistributions in binary form must reproduce the above copyright notice,
52 this list of conditions and the above disclaimer in the documentation
53 and/or other materials provided with the distribution.
54 * Neither the Members of the O-RAN Alliance nor the names of its
55 contributors may be used to endorse or promote products derived from
56 this software without specific prior written permission.";
58 revision "2019-06-05" {
62 1) backward compatible changes according to NOK-0002 sFTP Server Authentication Correction.
63 2) simplifying file management and authentication to reuse from o-ran-file-management module
64 3) minor fixes according to lack of descriptions
65 4) removal of not used grouping";
67 reference "ORAN-WG4.M.0-v01.00";
70 revision "2019-03-07" {
74 1) backward compatible changes to introduce groupings.";
76 reference "ORAN-WG4.M.0-v01.00";
79 revision "2019-02-04" {
83 1) imported model from xRAN
84 2) changed namespace and reference from xran to o-ran";
86 reference "ORAN-WG4.M.0-v01.00";
93 "Contains information about each software slot and its content.";
99 "Information about available software-slots and their software.";
105 "Name of the software package. This shall be unique to identify the software-slot.";
112 "Slot Contains software build considered as proven valid";
116 "software build is not currently used by O-RU. The software is considered by O-RU as damaged (e.g. wrong CRC)";
120 "W slot does not contain software package.";
126 description "Indicates the status of the software slot";
131 must "../status = 'VALID'";
134 "informs if software stored in particular slot is activated at the moment";
139 must "../status = 'VALID'";
142 "informs if software stored in particular slot is used at the moment";
149 "slot intended only for factory software,
150 activation of such software slot means getting back to factory defaults";
154 "slot used for updating software";
161 "Indicates the writability of the slot.
162 A Read-Only software slot is one which has a factory installed software-slot";
167 path "/hw:hardware/hw:component/o-ran-hw:product-code";
171 description "product code provided by the vendor, specific to the product. This is derived from manifest file.";
181 "Unique code of the vendor. This is derived from manifest file.";
189 "Identity associated with the software build. This is derived from manifest file.";
197 "Name of the build. This is derived from manifest file.";
202 description "The vendor-specific version string of the software build.";
209 description "List of all the files present in the software package.";
215 "Name of the file installed in the slot.";
222 "Version of the file installed in the slot";
229 "Complete path of the file stored locally";
235 description "OK - indicates that file integrity is correct";
238 description "NOK - indicates corrupted file";
244 "Result of the file integrity check (checksum calculation) during installation.";
250 grouping download-input {
252 "Grouping for sw download rpc input";
253 leaf remote-file-path {
257 "URI of the software image including username.
258 The following format is possible:
259 sftp://<username>@<host>[:<port>]/path";
262 uses o-ran-fm:credential-information;
265 grouping download-output {
267 "Grouping for sw download rpc output";
272 "Operation has been started without error.";
276 "Operation cannot be started because of error, more detailed information can be found in error-message.";
282 "Status of the software files download";
285 when "../status = 'FAILED'";
289 "Detailed error Message when the status is failed.";
292 leaf notification-timeout {
298 "Notification timeout is the time NETCONF client shall
299 wait for a 'download-event' notification from O-RU. If there is no
300 'download-event' notification received within notification-timeout,
301 NETCONF client shall assume the download timeout/failure, and follow necessary steps.";
305 grouping install-input {
307 "Grouping for sw installation rpc input";
310 path "/software-inventory/software-slot/name";
312 must "/software-inventory/software-slot[name = current()][active = 'false' and running = 'false']" {
313 error-message "software-install may be requested only against active::false and running::false slot!";
318 "software-slot to which the software shall be installed to.";
321 leaf-list file-names {
325 "Names of the files within software package to be installed";
329 grouping install-output {
331 "Grouping for sw installation rpc output";
336 "Operation has been started without error.";
340 "Operation cannot be started because of error, more detailed information can be found in error-message.";
346 "Status of the software package install.";
349 when "../status = 'FAILED'";
353 "Detailed error Message when the status is failed.";
357 grouping activate-input {
359 "Grouping for sw activation rpc input";
362 path "/software-inventory/software-slot/name";
364 must "/software-inventory/software-slot[name = current()][status = 'VALID']" {
365 error-message "software activation may be requested only on VALID slot!";
370 "Slot name on which software has to be activated.";
374 grouping activate-output {
376 "Grouping for sw activation rpc output";
381 "Operation has been started without error.";
385 "Operation cannot be started because of error, more detailed information can be found in error-message.";
391 "Status of the software files activation";
394 when "../status = 'FAILED'";
398 "Detailed error Message when the status is failed.";
401 leaf notification-timeout {
407 "Timeout on client waiting for the activate event";
411 grouping download-notification {
413 "Grouping for notification event structure for download completion";
419 "File name of downloaded software package";
426 "Operation completed succesfully";
428 enum AUTHENTICATION_ERROR {
429 description "source available, wrong credentials";
431 enum PROTOCOL_ERROR {
432 description "SFTP errors";
434 enum FILE_NOT_FOUND {
435 description "source not available.";
437 enum APPLICATION_ERROR {
438 description "Application related errors";
441 description "Timeout waiting for download";
446 "Status of finished operation execution";
449 when "../status != 'COMPLETED'";
453 "Detailed description of faulty situation";
457 grouping install-notification {
459 "Grouping for notification event structure for installation completion";
462 path "/software-inventory/software-slot/name";
466 "Name of the slot to which software was installed.";
472 "Operation completed succesfully";
475 description "operation on the file resulted in in error, disk failure, not enough disk space,
476 incompatible file format";
478 enum INTEGRITY_ERROR {
479 description "file is corrupted";
481 enum APPLICATION_ERROR {
482 description "operation failed due to internal reason";
487 "Status of finished operation execution";
490 when "../status != 'COMPLETED'";
494 "Detailed description of faulty situation";
498 grouping activation-notification {
500 "Grouping for notification event structure for activation completion";
503 path "/software-inventory/software-slot/name";
507 "Name of the slot which was activated";
514 "Operation completed succesfully";
516 enum APPLICATION_ERROR {
518 "Operation finished with error, more details can by found in error-message";
523 "Status of finished operation execution";
529 "status code return when the software is tried to activate";
532 when "../status != 'COMPLETED'";
536 "Detailed description of faulty situation";
540 // top level container
542 container software-inventory {
545 "Contains information about each software slot and its content.";
552 rpc software-download {
554 "Rpc needed to perform software download operation.";
560 uses download-output;
564 rpc software-install {
566 "Install a previously downloaded software package.";
576 rpc software-activate {
578 "Activate a previously installed software.";
583 uses activate-output;
587 // notification definitions
588 notification download-event {
589 description "Notification event structure for download completion";
590 uses download-notification;
594 notification install-event {
595 description "Notification event structure for installation completion";
596 uses install-notification;
599 notification activation-event {
600 description "Notification event structure for activation completion";
601 uses activation-notification;