Commit 6167e4ad authored by lindbladj's avatar lindbladj
Browse files

Balazs asked me to clean up the 5 YANG modules in this commit:

"My main complaint is, that they botched the containment mapping, have managed to insert some leafs directly under the ManagedElement list. Sadly, I found other problems too. Not running -3gpp on the YAMs. Doing some extra complicated mapping of some attributes."

I fixed all the issues except the injection of leafs directly under ManagedElement and elsewhere. We need to discuss how to do that in a 3GPP friendly way. This commit contains fixes for R17 only. This work may need to be backported to R16 as well.

Pyang is clean on these modules now:
$ pyang --3gpp _3gpp-nr-nrm-cesmanagementfunction.yang
$ pyang --3gpp _3gpp-nr-nrm-dpciconfigurationfunction.yang
$ pyang --3gpp _3gpp-nr-nrm-desmanagementfunction.yang
$ pyang --3gpp _3gpp-nr-nrm-dmrofunction.yang
$ pyang --3gpp _3gpp-nr-nrm-drachoptimizationfunction.yang
$
parent 18104f30
Loading
Loading
Loading
Loading
+159 −199
Original line number Diff line number Diff line
module _3gpp-nr-nrm-cesmanagementfunction {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-nr-nrm-cesmanagementfunction";
  prefix "cesmanagementfunction3gpp";
  prefix "cesmf3gpp";

  import _3gpp-common-subnetwork { prefix subnet3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
@@ -9,15 +9,65 @@ module _3gpp-nr-nrm-cesmanagementfunction {
  import _3gpp-nr-nrm-gnbcucpfunction { prefix gnbcucp3gpp; }
  import _3gpp-common-managed-element { prefix me3gpp; }


  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines the YANG mapping of the CESManagementFunction Information Object Class
    (IOC) that is part of the NR Network Resource Model (NRM).";
  description "Defines the YANG mapping of the CESManagementFunction 
    Information Object Class (IOC) that is part of the NR Network Resource Model
    (NRM).";
  reference "3GPP TS 28.541 5G Network Resource Model (NRM)";

  revision 2021-06-30 { reference S5-214aaa; }
  revision 2020-05-08 { reference S5-203316; }

  typedef LoadThresholdT {
    type uint32 {
      range 0..100;
    }
    units percent;
  }
  typedef TimeDurationT {
    type uint32 {
      range 0..900;
    }
    units seconds;
  }

  grouping loadTimeThresholdGrp {
    description "Represents the the traffic load threshold and the time 
      duration.";

    leaf loadThreshold {
      description "This attribute is used by distributed ES algorithms to allow
        a cell to enter the energySaving state.";
      type LoadThresholdT;
    }
    leaf timeDuration {
      description "The time duration indicates how long the traffic load 
        (either for UL or DL) in the cell needs to have been above the 
        threshold to wake up one or more original cells which have been 
        provided backup coverage by the candidate cell.";
      type TimeDurationT;
    }
  }

  typedef TimeOfDayT {
    description "Time of day in HH:MM or H:MM 24-hour format per UTC time zone.";
    type string {
      pattern "(([01]?[0-9])|(2[0-3])):([0-5][0-9])";
    }
  }

  typedef DayOfWeekT {
    type enumeration {
      enum Monday;
      enum Tuesday;
      enum Wednesday;
      enum Thursday;
      enum Friday;
      enum Saturday;
      enum Sunday;
    }
  }

  grouping CESManagementFunctionGrp {
    description "Represents the CESManagementFunction IOC.";
@@ -25,231 +75,141 @@ module _3gpp-nr-nrm-cesmanagementfunction {
    uses top3gpp:Top_Grp;

    leaf cesSwitch {
        description "This attribute determines whether the Centralized SON energy saving function is enabled or disabled.";
      description "This attribute determines whether the Centralized SON energy
        saving function is enabled or disabled.";
      type boolean;
      default true;
    }
    list intraRatEsActivationOriginalCellLoadParameters {
    key loadThreshold;
      description "This attributes is relevant, if the cell acts as an original cell.This attribute indicates the traffic load threshold and the time duration, which are used by distributed ES algorithms to allow a cell to enter the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attributes is relevant, if the cell acts as an original
        cell.This attribute indicates the traffic load threshold and the time 
        duration, which are used by distributed ES algorithms to allow a cell 
        to enter the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
      uses IntraRatEsActivationOriginalCellLoadParametersGrp;
      }
    }


    list intraRatEsActivationCandidateCellsLoadParameters {
    key loadThreshold;
      description "This attribute indicates the traffic load threshold and the time duration, which are used by distributed ES algorithms level to allow a n ‘original’ cell to enter the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attribute indicates the traffic load threshold and the
        time duration, which are used by distributed ES algorithms level to 
        allow an 'original' cell to enter the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
        uses IntraRatEsActivationCandidateCellsLoadParametersGrp;
      }
    }

    list intraRatEsDeactivationCandidateCellsLoadParameters {
    key loadThreshold;
      description "This attributes is relevant, if the cell acts as a candidate cell.This attribute indicates the traffic load threshold  and the time duration which is used by distributed ES algorithms to allow a cell to leave the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attributes is relevant, if the cell acts as a candidate
        cell.This attribute indicates the traffic load threshold and the time 
        duration which is used by distributed ES algorithms to allow a cell to 
        leave the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
        uses IntraRatEsDeactivationCandidateCellsLoadParametersGrp;
      }
    }

    list esNotAllowedTimePeriod {
    key startTimeandendTime;
      description "This attribute indicates a list of time periods during which inter-RAT energy saving is not allowed.";
    leaf startTimeandendTime {type string;}
      description "This is a list of time periods during which 
        inter-RAT energy saving is not allowed";
      key id;

      leaf id {
        type uint32;
      }
      container attributes {
        uses EsNotAllowedTimePeriodGrp;
      }
    }

    list interRatEsActivationOriginalCellParameters {
    key loadThreshold;
      description "This attribute indicates the traffic load threshold and the time duration, which are used by distributed inter-RAT ES algorithms to allow an original cell to enter the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attribute indicates the traffic load threshold and the
        time duration, which are used by distributed inter-RAT ES algorithms to
        allow an original cell to enter the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
        uses InterRatEsActivationOriginalCellParametersGrp;
      }
    }

    list interRatEsActivationCandidateCellParameters {
    key loadThreshold;
      description "This attribute indicates the traffic load threshold and the time duration, which are used by distributed inter-RAT ES algorithms to allow an original cell to enter the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attribute indicates the traffic load threshold and the
        time duration, which are used by distributed inter-RAT ES algorithms 
        to allow an original cell to enter the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
        uses InterRatEsActivationCandidateCellParametersGrp;
      }
    }

    list interRatEsDeactivationCandidateCellParameters {
    key loadThreshold;
      description "This attribute indicates the traffic load threshold and the time duration which is used by distributed inter-RAT ES algorithms to allow an original cell to leave the energySaving state.";
    leaf loadThreshold {type int32;}
      description "This attribute indicates the traffic load threshold and the
        time duration which is used by distributed inter-RAT ES algorithms to 
        allow an original cell to leave the energySaving state.";
      key "loadThreshold timeDuration";
      uses loadTimeThresholdGrp;
      container attributes {
        uses InterRatEsDeactivationCandidateCellParametersGrp;
      }
    }


    leaf energySavingState {
        description "Specifies the status regarding the energy saving in the cell. If the value of energySavingControl is toBeEnergySaving, then it shall be tried to achieve the value isEnergySaving for the energySavingState. If the value of energySavingControl is toBeNotEnergySaving, then it shall be tried to achieve the value isNotEnergySaving for the energySavingState. ";
      description "Specifies the status regarding the energy saving in the 
        cell. If the value of energySavingControl is toBeEnergySaving, then it
        shall be tried to achieve the value isEnergySaving for the 
        energySavingState. If the value of energySavingControl is 
        toBeNotEnergySaving, then it shall be tried to achieve the value 
        isNotEnergySaving for the energySavingState. ";
      type enumeration{
        enum isNotEnergySaving;
        enum isEnergySaving;
      }
    }


    leaf energySavingControl {
        description "This attribute allows the Cross Domain-Centralized SON energy saving function to initiate energy saving activation or deactivation.";
      description "This attribute allows the Cross Domain-Centralized SON 
        energy saving function to initiate energy saving activation or 
        deactivation.";
      type enumeration{
        enum toBeEnergySaving;
        enum toBeNotEnergySaving;
      }
    }

    
  }
  grouping IntraRatEsActivationOriginalCellLoadParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "This attribute is used by distributed ES algorithms to allow a cell to enter the energySaving state.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description " The time duration indicates how long the load needs to have been below the threshold.";
        type int32 { range "0..900"; }
		units "1";
    }
  }

  grouping IntraRatEsActivationCandidateCellsLoadParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "This attribute is used by distributed ES algorithms to allow a cell to enter the energySaving state.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description " The time duration indicates how long the load needs to have been below the threshold.";
        type int32 { range "0..900"; }
		units "1";
    }
  }

  grouping IntraRatEsDeactivationCandidateCellsLoadParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "This attribute is used by distributed ES algorithms to allow a cell to enter the energySaving state.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description " The time duration indicates how long the load needs to have been below the threshold.";
        type int32 { range "0..900"; }
		units "1";
    }
  }

  grouping EsNotAllowedTimePeriodGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf startTimeandendTime {
        description "This field indicate valid UTC time.";
        type string;
    }


    leaf periodOfDay {
        description "This field indicate the period of day.";
        type string;
    leaf startTime {
      description "Start of not allowed time period in UTC time zone.
        If set, the endTime must also be set. If not set, this is 
        interpreted as around the clock.";
      must ../endTime;
      type TimeOfDayT;
    }

    leaf daysOfWeekList {
        description "This field indicate the list of weekday.";
        type string;
    leaf endTime {
      description "If endTime has a lower value than startTime, it will 
        be interpreted as referring to the following day.";
      type TimeOfDayT;
    }

    leaf listoftimeperiods {
        description "This field indicate the list of time periods.";
        type string;
    leaf-list daysOfWeek {
      description "Specifies that the not allowed periods are only 
        applicable to the specified days in UTC timezone. Every day if 
        not set.";
      type DayOfWeekT;
    }

  }

  grouping InterRatEsActivationOriginalCellParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "The time duration indicates how long the traffic load (both for UL and DL) needs to have been below the threshold.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description " The time duration indicates how long the load needs to have been below the threshold.";
        type int32 { range "0..900"; }
		units "1";
    }
  }

  grouping InterRatEsActivationCandidateCellParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "This attribute is used by distributed ES algorithms to allow a cell to enter the energySaving state.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description "The time duration indicates how long the traffic load (both for UL and DL) in the candidate cell needs to have been below the threshold before any original cells which will be provided backup coverage by the candidate cell enters energySaving state.";
        type int32 { range "0..900"; }
		units "1";
    }
  }

  grouping InterRatEsDeactivationCandidateCellParametersGrp {
    description "Represents the the traffic load threshold and the time duration.";

    leaf loadThreshold {
        description "This attribute is used by distributed ES algorithms to allow a cell to enter the energySaving state.";
        type int32 { range "0..10000"; }
		units "1";
    }


    leaf timeDuration {
        description "The time duration indicates how long the traffic load (either for UL or DL) in the candidate cell needs to have been above the threshold to wake up one or more original cells which have been provided backup coverage by the candidate cell.";
        type int32 { range "0..900"; }
		units "1";
    }
  }


  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/nrcellcu3gpp:NRCellCU" {
  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/"+
      "nrcellcu3gpp:NRCellCU" {
    if-feature nrcellcu3gpp:CESManagementFunction;
    uses CESManagementFunctionGrp;
  }
  augment "/me3gpp:ManagedElement" {
  augment /me3gpp:ManagedElement {
    if-feature me3gpp:CESManagementFunction;
    uses CESManagementFunctionGrp;
  }
  augment "/subnet3gpp:SubNetwork" {
  augment /subnet3gpp:SubNetwork {
    if-feature subnet3gpp:CESManagementFunction;
    uses CESManagementFunctionGrp;
  }
+157 −204

File changed.

Preview size limit exceeded, changes collapsed.

+38 −30
Original line number Diff line number Diff line
module _3gpp-nr-nrm-dmrofunction {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-nr-nrm-dmrofunction";
  prefix "dmrofunction3gpp";
  prefix "dmrof3gpp";

  import _3gpp-common-subnetwork { prefix subnet3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
@@ -9,61 +9,69 @@ module _3gpp-nr-nrm-dmrofunction {
  import _3gpp-common-managed-element { prefix me3gpp; }
  import _3gpp-nr-nrm-nrcellcu { prefix nrcellcu3gpp; }


  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines the YANG mapping of the DMROFunction Information Object Class
    (IOC) that is part of the NR Network Resource Model (NRM).";
  description "Defines the YANG mapping of the DMROFunction 
    Information Object Class (IOC) that is part of the NR Network Resource 
    Model (NRM).";
  reference "3GPP TS 28.541 5G Network Resource Model (NRM)";

  revision 2021-06-30 { reference S5-214aaa; }
  revision 2020-05-08 { reference S5-203316; }


  grouping DMROFunctionGrp {
    description "Represents the DMROFunction IOC.";
    reference "3GPP TS 28.541";
    uses top3gpp:Top_Grp;

    leaf maximumDeviationHoTrigger {
        description "This parameter defines the maximum allowed absolute deviation of the Handover Trigger, from the default point of operation.";
        type int32 { range "-20..20"; }
        units "0.5";
      description "This parameter defines the maximum allowed absolute 
        deviation of the Handover Trigger, from the default point of 
        operation. Range -20 to 20 in .5 dB steps. ";
      type string { 
        pattern '-?((20)|(1?[0-9]))\.[05]'; 
        // -20.0, -19.5, -19.0, ..., -0.5, 0.0, 0.5, 1.0, ... 19.5, 20.0
      }
      units dB;
    }

    leaf minimumTimeBetweenHoTriggerChange {
        description "This parameter defines the minimum allowed time interval between two Handover Trigger change performed by MRO. This is used to control the stability and convergence of the algorithm.";
        type int32 { range "0..604800"; }
        units "1";
      description "This parameter defines the minimum allowed time interval
        between two Handover Trigger change performed by MRO. This is used to 
        control the stability and convergence of the algorithm.";
      type uint32 { 
        range 0..604800; // <= 1 week
      }
      units seconds;
    }

    leaf tstoreUEcntxt {
        description "The timer used for detection of too early HO, too late HO and HO to wrong cell.";
        type int32 { range "0..1023"; }
        units "100";
      description "The timer used for detection of too early HO, too late HO 
        and HO to wrong cell.";
      type uint32 { 
        range 0..1023;
      }
      units "100 milliseconds";
    }


    leaf dmroControl {
        description " This attribute determines whether the MRO function is enabled or disabled.";
      description "This attribute determines whether the MRO function is 
        enabled or disabled.";
      type boolean;
    }

  }


  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/nrcellcu3gpp:NRCellCU" {
  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/"+
      "nrcellcu3gpp:NRCellCU" {
    if-feature nrcellcu3gpp:DMROFunction;
    uses DMROFunctionGrp;
  }
  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction" {
  augment /me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction {
    if-feature gnbcucp3gpp:DMROFunction;
    uses DMROFunctionGrp;
  }
  augment "/me3gpp:ManagedElement" {
  augment /me3gpp:ManagedElement {
    if-feature me3gpp:DMROFunction;
    uses DMROFunctionGrp;
  }
  augment "/subnet3gpp:SubNetwork" {
  augment /subnet3gpp:SubNetwork {
    if-feature subnet3gpp:DMROFunction;
    uses DMROFunctionGrp;
  }
+28 −29
Original line number Diff line number Diff line
module _3gpp-nr-nrm-dpciconfigurationfunction {
  yang-version 1.1;
  namespace "urn:3gpp:sa5:_3gpp-nr-nrm-dpciconfigurationfunction";
  prefix "dpciconfigurationfunction3gpp";
  prefix "dpcicf3gpp";

  import _3gpp-common-subnetwork { prefix subnet3gpp; }
  import _3gpp-common-top { prefix top3gpp; }
@@ -11,58 +11,57 @@ module _3gpp-nr-nrm-dpciconfigurationfunction {

  organization "3GPP SA5";
  contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464";
  description "Defines the YANG mapping of the DPCIConfigurationFunction Information Object Class
    (IOC) that is part of the NR Network Resource Model (NRM).";
  description "Defines the YANG mapping of the DPCIConfigurationFunction 
    Information Object Class (IOC) that is part of the NR Network Resource
    Model (NRM).";
  reference "3GPP TS 28.541 5G Network Resource Model (NRM)";

  revision 2021-06-30 { reference S5-214aaa; }
  revision 2021-01-25 { reference CR-0454 ; }
  revision 2020-11-25 { reference CR-0386 ; }
  revision 2020-05-08 { reference S5-203316; }

  typedef PhysCellID {
    type uint32 { 
      range "0..1007"; 
    }
  }

  grouping DPCIConfigurationFunctionGrp {
    description "Represents the DPCICONFIGURATIONFunction IOC.";
    reference "3GPP TS 28.541";
    uses top3gpp:Top_Grp;


    list nRPciList {
      description "This holds a list of physical cell identities that can be
        assigned to the NR cells. This attribute shall be supported if D-SON 
        PCI configuration function is supported.";
      key NRPci;
      description "This holds a list of physical cell identities that can be assigned to the NR cells. This attribute shall be supported if D-SON PCI configuration function is supported.";
	  leaf NRPci {type int32;}
      leaf NRPci { 
        type PhysCellID; 
      }

      container attributes {
         uses NRPciListGrp;
      }
    }


    leaf dPciConfigurationControl {
        description " This attribute determines whether the Distributed SON PCI configuration Function is enabled or disabled.";
      description " This attribute determines whether the Distributed SON PCI
        configuration Function is enabled or disabled.";
      type boolean;
    }

  }

  grouping NRPciListGrp {
    description "Represents the NR PCI list for the PCI configuration function.";

    leaf NRPci {
        description "This attribute determines the NR PCI.";
        type int32 { range "0..1007"; }
        units "1";
    }
  }


  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/nrcellcu3gpp:NRCellCU" {
  augment "/me3gpp:ManagedElement/gnbcucp3gpp:GNBCUCPFunction/"+
      "nrcellcu3gpp:NRCellCU" {
    if-feature nrcellcu3gpp:DPCIConfigurationFunction;
    uses DPCIConfigurationFunctionGrp;
  }
  augment "/me3gpp:ManagedElement" {
  augment /me3gpp:ManagedElement {
    if-feature me3gpp:DPCIConfigurationFunction;
    uses DPCIConfigurationFunctionGrp;
  }
  augment "/subnet3gpp:SubNetwork" {
  augment /subnet3gpp:SubNetwork {
    if-feature subnet3gpp:DPCIConfigurationFunction;
    uses DPCIConfigurationFunctionGrp;
  }
+53 −70

File changed.

Preview size limit exceeded, changes collapsed.