netconfcentral logo

openconfig-ap-manager@2020-06-30



  module openconfig-ap-manager {

    yang-version 1;

    namespace
      "http://openconfig.net/yang/ap-manager";

    prefix ap-manager;

    import openconfig-extensions {
      prefix oc-ext;
    }
    import openconfig-yang-types {
      prefix oc-yang;
    }
    import openconfig-inet-types {
      prefix oc-inet;
    }
    import openconfig-wifi-types {
      prefix oc-wifi;
    }

    organization "OpenConfig working group";

    contact
      "OpenConfig working group
    www.openconfig.net";

    description
      "This module defines the top level configuration and state data for a
    system which manages Access Points.";

    revision "2020-06-30" {
      description
        "Add OpenConfig POSIX pattern extensions and add anchors for country-code
      pattern.";
      reference
        "0.1.3";

    }

    revision "2020-03-24" {
      description
        "Update namespace based on new directory structure";
      reference
        "0.1.2";

    }

    revision "2019-02-25" {
      description
        "Added software-version leaf under joined APs.";
      reference
        "0.1.1";

    }

    revision "2018-02-14" {
      description "Initial version";
      reference
        "0.1.0";

    }

    oc-ext:openconfig-version "0.1.3";

    grouping provision-aps-config {
      description
        "Assignment of hostname to an Access Point.";
      leaf mac {
        type oc-yang:mac-address;
        description
          "MAC address of the AP primary Ethernet interface. If AP
        has multiple Ethernet interfaces, this would be the MAC printed
        on the unit label and referenced within the management system.
        Vendors MUST reject attempts to configure this leaf.";
      }

      leaf hostname {
        type oc-inet:domain-name;
        description
          "Hostname of the Access Point.";
      }

      leaf country-code {
        type string {
          oc-ext:posix-pattern "^[A-Z]{2}$";
          pattern '^[A-Z]{2}$';
        }
        description
          "Country code where the AP operates in ISO 3166-1 alpha-2
        format.";
      }
    }  // grouping provision-aps-config

    grouping controller-aps-system-state {
      description
        "Grouping for a Controller & AP system state data.";
      leaf mac {
        type oc-yang:mac-address;
        description
          "MAC address of the AP primary Ethernet interface. If AP
        has multiple Ethernet interfaces, this would be the MAC printed
        on the unit label and referenced within the management system.
        Vendors MUST reject attempts to configure this leaf.";
      }

      leaf hostname {
        type oc-inet:domain-name;
        description
          "Hostname of the Access Point.";
      }

      leaf opstate {
        type identityref {
          base oc-wifi:AP_STATE;
        }
        description
          "The current operational state of the AP.";
      }

      leaf uptime {
        type uint32;
        units "seconds";
        description
          "Seconds this AP has been in the op-state of 'UP'.";
      }

      leaf enabled {
        type boolean;
        description
          "Wheather the AP is enabled or disabled.";
      }

      leaf serial {
        type string;
        description
          "Serial number of the Access Point.";
      }

      leaf model {
        type string;
        description
          "Model number of the Access Point.";
      }

      leaf software-version {
        type string;
        description
          "Software version of the Access Point.";
      }

      leaf ipv4 {
        type oc-inet:ipv4-address;
        description
          "The IPv4 address of the Access Point.";
      }

      leaf ipv6 {
        type oc-inet:ipv6-address;
        description
          "The IPv6 address of the Access Point.";
      }

      leaf power-source {
        type enumeration {
          enum "AT" {
            value 0;
            description
              "Powered using 802.3at.";
          }
          enum "AF" {
            value 1;
            description
              "Powered using 802.3af.";
          }
          enum "PLUG" {
            value 2;
            description
              "Powered using local source, not PoE.";
          }
        }
        description
          "Enumerate how the AP is being powered.";
      }
    }  // grouping controller-aps-system-state

    grouping provision-ap-top {
      description
        "Top-level grouping for assigning hostnames to APs.";
      container provision-aps {
        description
          "Top most container for assigning hostnames to APs.";
        list provision-ap {
          key "mac";
          description
            "List of MAC addresses that will have hostnames assigned.";
          leaf mac {
            type leafref {
              path "../config/mac";
            }
            description
              "Reference to the MAC address list key. This leaf is a reference
          only and not to be configured.";
          }

          container config {
            description
              "Config container for assigning hostnames to APs.";
            uses provision-aps-config;
          }  // container config

          container state {
            config false;
            description
              "State container for assigning hostnames to APs.";
            uses provision-aps-config;
          }  // container state
        }  // list provision-ap
      }  // container provision-aps
    }  // grouping provision-ap-top

    grouping joined-aps-top {
      description
        "Top-level grouping for APs assigned to controller(s).";
      container joined-aps {
        description
          "Top most container for joined-aps.";
        list joined-ap {
          key "hostname";
          config false;
          description
            "List of access points that have joined the controller.";
          leaf hostname {
            type leafref {
              path "../state/hostname";
            }
            description
              "Reference to the MAC address list key.";
          }

          container state {
            config false;
            description
              "State container for Joined APs.";
            uses controller-aps-system-state;
          }  // container state
        }  // list joined-ap
      }  // container joined-aps
    }  // grouping joined-aps-top

    uses provision-ap-top;

    uses joined-aps-top;
  }  // module openconfig-ap-manager