| module czechlight-system { |
| yang-version 1.1; |
| namespace |
| "http://czechlight.cesnet.cz/yang/czechlight-system"; |
| |
| prefix "cla-sys"; |
| |
| import ietf-inet-types { |
| prefix inet; |
| } |
| |
| import ietf-yang-types { |
| prefix yang; |
| } |
| |
| import ietf-netconf-acm { |
| prefix nacm; |
| } |
| |
| import ietf-system { |
| prefix "sys"; |
| } |
| |
| organization "CESNET"; |
| contact "photonic@cesnet.cz"; |
| description |
| "YANG model for system administration in Czechlight devices."; |
| |
| revision 2021-01-13 { |
| description "Initial release"; |
| } |
| |
| revision 2022-07-08 { |
| description "Extended firmware slot properties and actions"; |
| } |
| |
| typedef percent { |
| type uint8 { |
| range "0 .. 100"; |
| } |
| } |
| |
| container firmware { |
| config false; |
| |
| list firmware-slot { |
| key name; |
| |
| leaf name { |
| description "Identifier of the slot."; |
| type string; |
| } |
| |
| leaf version { |
| description "Firmware version installed in the slot."; |
| type string; |
| } |
| |
| leaf installed { |
| description "Datetime of the last installation performed in this slot."; |
| type yang:date-and-time; |
| } |
| |
| leaf is-booted-now { |
| description "Is the system running from this slot?"; |
| type boolean; |
| } |
| |
| leaf is-healthy { |
| description "Only healthy slots are considered for booting. Slots which failed during a boot are marked as non-healthy."; |
| type boolean; |
| } |
| |
| leaf will-boot-next { |
| description "Is this slot selected for booting after the next reboot?"; |
| type boolean; |
| } |
| |
| action set-active-after-reboot { |
| description "Schedule this slot for activation after the next reboot"; |
| } |
| |
| action set-unhealthy { |
| description "Mark this slot as having faulted during the last boot"; |
| } |
| } |
| |
| container installation { |
| leaf status { |
| description "Informs about the status of the current (or last) installation."; |
| |
| type enumeration { |
| enum none; |
| enum in-progress; |
| enum succeeded; |
| enum failed; |
| } |
| } |
| |
| leaf message { |
| description "The last message from the installation process. This MAY contain the last error message."; |
| type string; |
| } |
| |
| notification update { |
| description "Notifies clients about installation progress."; |
| |
| leaf message { |
| description "Progress status."; |
| type string; |
| } |
| |
| leaf progress { |
| description "Progress of the installation in percents."; |
| |
| type int8 { |
| range "0 .. 100"; |
| } |
| } |
| } |
| |
| action install { |
| nacm:default-deny-all; |
| description "Download and install a new firmware image to the inactive FW slot"; |
| input { |
| leaf url { |
| description "URL or path to the new firmware."; |
| type string; |
| mandatory true; |
| } |
| } |
| } |
| } |
| } |
| |
| typedef username-type { |
| type string { |
| pattern "[a-z][a-z0-9-]{0,30}"; |
| } |
| } |
| |
| typedef password-type { |
| type string { |
| pattern "[^\\r\\n]*"; |
| } |
| } |
| |
| grouping authentication-rpc-result { |
| leaf result { |
| mandatory true; |
| type enumeration { |
| enum success; |
| enum failure; |
| } |
| } |
| |
| leaf message { |
| description "Can be used to supply and error message."; |
| type string; |
| } |
| } |
| |
| typedef authorized-key-format { |
| description "Pubkey in the authorized_keys format for sshd."; |
| type string; |
| } |
| |
| |
| container authentication { |
| description "User management"; |
| list users { |
| config false; |
| key 'name'; |
| description "All user accounts which are configured in the Linux system"; |
| |
| leaf name { |
| type username-type; |
| } |
| |
| leaf password-last-change { |
| type string; |
| } |
| |
| list authorized-keys { |
| key 'index'; |
| description "List of SSH keys which are recognized for this user"; |
| |
| leaf index { |
| type int32; |
| } |
| |
| leaf public-key { |
| mandatory true; |
| type authorized-key-format; |
| } |
| |
| action remove { |
| nacm:default-deny-all; |
| description "Remove the selected SSH authentication key of the selected user"; |
| output { |
| uses authentication-rpc-result; |
| } |
| } |
| } |
| |
| action change-password { |
| nacm:default-deny-all; |
| input { |
| leaf password-cleartext { |
| mandatory true; |
| description "This is supposed to be a plaintext password. Make sure it's not logged anywhere."; |
| type password-type; |
| } |
| } |
| |
| output { |
| uses authentication-rpc-result; |
| } |
| } |
| |
| action add-authorized-key { |
| nacm:default-deny-all; |
| description "Add a new SSH public key for authentication as the selected user"; |
| input { |
| leaf key { |
| mandatory true; |
| type authorized-key-format; |
| } |
| } |
| |
| output { |
| uses authentication-rpc-result; |
| } |
| } |
| } |
| } |
| |
| container leds { |
| config false; |
| description "Current status of LEDs."; |
| |
| list led { |
| key 'name'; |
| |
| leaf name { |
| type string; |
| description "Name of the LED"; |
| } |
| |
| leaf brightness { |
| mandatory true; |
| description "Current brightness of the LED in percents of the maximal possible brightness of the LED."; |
| type percent; |
| } |
| } |
| |
| action uid { |
| input { |
| leaf state { |
| mandatory true; |
| description "Change state of the UID led (turn off, on, or keep blinking)."; |
| type enumeration { |
| enum off; |
| enum on; |
| enum blinking; |
| } |
| } |
| } |
| } |
| } |
| |
| container journal-upload { |
| presence "Enable systemd-journal-upload service"; |
| description "Configures systemd-journal-upload.service. If the container is present, |
| then systemd-journal-upload service is set up with the URL composed of |
| the leafs in this container. See --url in |
| https://www.freedesktop.org/software/systemd/man/252/systemd-journal-upload.service.html"; |
| |
| leaf protocol { |
| type enumeration { |
| enum "http"; |
| enum "https"; |
| } |
| |
| default "https"; |
| description "Sets the URL protocol. See --url in https://www.freedesktop.org/software/systemd/man/252/systemd-journal-upload.service.html"; |
| } |
| |
| leaf host { |
| mandatory true; |
| type inet:host; |
| description "Sets the host. See --url in https://www.freedesktop.org/software/systemd/man/252/systemd-journal-upload.service.html"; |
| } |
| |
| leaf port { |
| type inet:port-number; |
| default "19532"; |
| description "Sets the port. See --url in https://www.freedesktop.org/software/systemd/man/252/systemd-journal-upload.service.html"; |
| } |
| } |
| |
| deviation /sys:system-shutdown { deviate not-supported; } |
| deviation /sys:system/sys:dns-resolver { deviate add { config false; } } |
| } |