A.1. “example-jukebox”的YANG模块

module example-jukebox {

   namespace "http://example.com/ns/example-jukebox";
   prefix "jbox";

   organization "Example, Inc.";
   contact "support at example.com";
   description "Example Jukebox Data Model Module.";
   revision "2016-08-15" {
     description "Initial version.";
     reference "example.com document 1-4673.";
   }

   identity genre {
     description
       "Base for all genre types.";
   }

   // abbreviated list of genre classifications
   identity alternative {
     base genre;
     description
       "Alternative music.";
   }
   identity blues {
     base genre;
     description
       "Blues music.";
   }
   identity country {
     base genre;
     description
       "Country music.";
   }
   identity jazz {
     base genre;
     description
       "Jazz music.";
   }
   identity pop {
     base genre;
     description
       "Pop music.";
   }

   identity rock {
     base genre;
     description
       "Rock music.";
   }

   container jukebox {
     presence
       "An empty container indicates that the jukebox
        service is available.";

     description
       "Represents a 'jukebox' resource, with a library, playlists,
        and a 'play' operation.";

     container library {

       description
         "Represents the 'jukebox' library resource.";

       list artist {
         key name;
         description
           "Represents one 'artist' resource within the
            'jukebox' library resource.";

         leaf name {
           type string {
             length "1 .. max";
           }
           description
             "The name of the artist.";
         }

         list album {
           key name;
           description
             "Represents one 'album' resource within one
              'artist' resource, within the jukebox library.";

           leaf name {
             type string {
               length "1 .. max";
             }
             description
               "The name of the album.";
           }


           leaf genre {
             type identityref { base genre; }
             description
               "The genre identifying the type of music on
                the album.";
           }

           leaf year {
             type uint16 {
               range "1900 .. max";
             }
             description
               "The year the album was released.";
           }

           container admin {
             description
               "Administrative information for the album.";

             leaf label {
               type string;
               description
                 "The label that released the album.";
             }
             leaf catalogue-number {
               type string;
               description
                 "The album's catalogue number.";
             }
           }

           list song {
             key name;
             description
               "Represents one 'song' resource within one
                'album' resource, within the jukebox library.";

             leaf name {
               type string {
                  length "1 .. max";
               }
               description
                 "The name of the song.";
             }


             leaf location {
               type string;
               mandatory true;
               description
                 "The file location string of the
                  media file for the song.";
             }
             leaf format {
               type string;
               description
                 "An identifier string for the media type
                  for the file associated with the
                  'location' leaf for this entry.";
             }
             leaf length {
               type uint32;
               units "seconds";
               description
                 "The duration of this song in seconds.";
             }
           }   // end list 'song'
         }   // end list 'album'
       }  // end list 'artist'

       leaf artist-count {
          type uint32;
          units "artists";
          config false;
          description
            "Number of artists in the library.";
       }
       leaf album-count {
          type uint32;
          units "albums";
          config false;
          description
            "Number of albums in the library.";
       }
       leaf song-count {
          type uint32;
          units "songs";
          config false;
          description
            "Number of songs in the library.";
       }
     }  // end library


     list playlist {
       key name;
       description
         "Example configuration data resource.";

       leaf name {
         type string;
         description
           "The name of the playlist.";
       }
       leaf description {
         type string;
         description
           "A comment describing the playlist.";
       }
       list song {
         key index;
         ordered-by user;

         description
           "Example nested configuration data resource.";

         leaf index {    // not really needed
           type uint32;
           description
             "An arbitrary integer index for this playlist song.";
         }
         leaf id {
           type instance-identifier;
           mandatory true;
           description
             "Song identifier.  Must identify an instance of
              /jukebox/library/artist/album/song/name.";
         }
       }
     }

     container player {
       description
         "Represents the jukebox player resource.";

       leaf gap {
         type decimal64 {
           fraction-digits 1;
           range "0.0 .. 2.0";
         }
         units "tenths of seconds";
         description
           "Time gap between each song.";
       }
     }
   }

   rpc play {
     description
       "Control function for the jukebox player.";
     input {
       leaf playlist {
         type string;
         mandatory true;
         description
           "The playlist name.";
       }
       leaf song-number {
         type uint32;
         mandatory true;
         description
           "Song number in playlist to play.";
       }
     }
   }
}

results matching ""

    No results matching ""