# -*- coding: utf-8 -*-
from operator import attrgetter
from pyangbind.lib.yangtypes import RestrictedPrecisionDecimalType
from pyangbind.lib.yangtypes import RestrictedClassType
from pyangbind.lib.yangtypes import TypedListType
from pyangbind.lib.yangtypes import YANGBool
from pyangbind.lib.yangtypes import YANGListType
from pyangbind.lib.yangtypes import YANGDynClass
from pyangbind.lib.yangtypes import ReferenceType
from pyangbind.lib.base import PybindBase
from collections import OrderedDict
from decimal import Decimal
from bitarray import bitarray
import six

# PY3 support of some PY2 keywords (needs improved)
if six.PY3:
  import builtins as __builtin__
  long = int
elif six.PY2:
  import __builtin__

class state(PybindBase):
  """
  This class was auto-generated by the PythonClass plugin for PYANG
  from YANG module openconfig-network-instance - based on the path /network-instances/network-instance/mpls/signaling-protocols/ldp/global/graceful-restart/state. Each member element of
  the container is represented as a class variable - with a specific
  YANG type.

  YANG Description: LDP graceful-restart state attributes.
  """
  __slots__ = ('_path_helper', '_extmethods', '__enabled','__reconnect_time','__recovery_time','__forwarding_holdtime','__helper_enable',)

  _yang_name = 'state'

  _pybind_generated_by = 'container'

  def __init__(self, *args, **kwargs):

    self._path_helper = False

    self._extmethods = False
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

    load = kwargs.pop("load", None)
    if args:
      if len(args) > 1:
        raise TypeError("cannot create a YANG container with >1 argument")
      all_attr = True
      for e in self._pyangbind_elements:
        if not hasattr(args[0], e):
          all_attr = False
          break
      if not all_attr:
        raise ValueError("Supplied object did not have the correct attributes")
      for e in self._pyangbind_elements:
        nobj = getattr(args[0], e)
        if nobj._changed() is False:
          continue
        setmethod = getattr(self, "_set_%s" % e)
        if load is None:
          setmethod(getattr(args[0], e))
        else:
          setmethod(getattr(args[0], e), load=load)

  def _path(self):
    if hasattr(self, "_parent"):
      return self._parent._path()+[self._yang_name]
    else:
      return ['network-instances', 'network-instance', 'mpls', 'signaling-protocols', 'ldp', 'global', 'graceful-restart', 'state']

  def _get_enabled(self):
    """
    Getter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    return self.__enabled
      
  def _set_enabled(self, v, load=False):
    """
    Setter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_enabled is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_enabled() directly.

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """enabled must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__enabled = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_enabled(self):
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)


  def _get_reconnect_time(self):
    """
    Getter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    return self.__reconnect_time
      
  def _set_reconnect_time(self, v, load=False):
    """
    Setter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_reconnect_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_reconnect_time() directly.

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """reconnect_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__reconnect_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_reconnect_time(self):
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_recovery_time(self):
    """
    Getter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    return self.__recovery_time
      
  def _set_recovery_time(self, v, load=False):
    """
    Setter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_recovery_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_recovery_time() directly.

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """recovery_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__recovery_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_recovery_time(self):
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_forwarding_holdtime(self):
    """
    Getter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    return self.__forwarding_holdtime
      
  def _set_forwarding_holdtime(self, v, load=False):
    """
    Setter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_forwarding_holdtime is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_forwarding_holdtime() directly.

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """forwarding_holdtime must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__forwarding_holdtime = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_forwarding_holdtime(self):
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_helper_enable(self):
    """
    Getter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)

    YANG Description: Enables the graceful restart helper for LDP.
    """
    return self.__helper_enable
      
  def _set_helper_enable(self, v, load=False):
    """
    Setter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_helper_enable is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_helper_enable() directly.

    YANG Description: Enables the graceful restart helper for LDP.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """helper_enable must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__helper_enable = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_helper_enable(self):
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

  enabled = __builtin__.property(_get_enabled)
  reconnect_time = __builtin__.property(_get_reconnect_time)
  recovery_time = __builtin__.property(_get_recovery_time)
  forwarding_holdtime = __builtin__.property(_get_forwarding_holdtime)
  helper_enable = __builtin__.property(_get_helper_enable)


  _pyangbind_elements = OrderedDict([('enabled', enabled), ('reconnect_time', reconnect_time), ('recovery_time', recovery_time), ('forwarding_holdtime', forwarding_holdtime), ('helper_enable', helper_enable), ])


class state(PybindBase):
  """
  This class was auto-generated by the PythonClass plugin for PYANG
  from YANG module openconfig-network-instance-l2 - based on the path /network-instances/network-instance/mpls/signaling-protocols/ldp/global/graceful-restart/state. Each member element of
  the container is represented as a class variable - with a specific
  YANG type.

  YANG Description: LDP graceful-restart state attributes.
  """
  __slots__ = ('_path_helper', '_extmethods', '__enabled','__reconnect_time','__recovery_time','__forwarding_holdtime','__helper_enable',)

  _yang_name = 'state'

  _pybind_generated_by = 'container'

  def __init__(self, *args, **kwargs):

    self._path_helper = False

    self._extmethods = False
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

    load = kwargs.pop("load", None)
    if args:
      if len(args) > 1:
        raise TypeError("cannot create a YANG container with >1 argument")
      all_attr = True
      for e in self._pyangbind_elements:
        if not hasattr(args[0], e):
          all_attr = False
          break
      if not all_attr:
        raise ValueError("Supplied object did not have the correct attributes")
      for e in self._pyangbind_elements:
        nobj = getattr(args[0], e)
        if nobj._changed() is False:
          continue
        setmethod = getattr(self, "_set_%s" % e)
        if load is None:
          setmethod(getattr(args[0], e))
        else:
          setmethod(getattr(args[0], e), load=load)

  def _path(self):
    if hasattr(self, "_parent"):
      return self._parent._path()+[self._yang_name]
    else:
      return ['network-instances', 'network-instance', 'mpls', 'signaling-protocols', 'ldp', 'global', 'graceful-restart', 'state']

  def _get_enabled(self):
    """
    Getter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    return self.__enabled
      
  def _set_enabled(self, v, load=False):
    """
    Setter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_enabled is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_enabled() directly.

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """enabled must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__enabled = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_enabled(self):
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)


  def _get_reconnect_time(self):
    """
    Getter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    return self.__reconnect_time
      
  def _set_reconnect_time(self, v, load=False):
    """
    Setter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_reconnect_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_reconnect_time() directly.

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """reconnect_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__reconnect_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_reconnect_time(self):
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_recovery_time(self):
    """
    Getter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    return self.__recovery_time
      
  def _set_recovery_time(self, v, load=False):
    """
    Setter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_recovery_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_recovery_time() directly.

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """recovery_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__recovery_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_recovery_time(self):
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_forwarding_holdtime(self):
    """
    Getter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    return self.__forwarding_holdtime
      
  def _set_forwarding_holdtime(self, v, load=False):
    """
    Setter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_forwarding_holdtime is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_forwarding_holdtime() directly.

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """forwarding_holdtime must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__forwarding_holdtime = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_forwarding_holdtime(self):
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_helper_enable(self):
    """
    Getter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)

    YANG Description: Enables the graceful restart helper for LDP.
    """
    return self.__helper_enable
      
  def _set_helper_enable(self, v, load=False):
    """
    Setter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_helper_enable is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_helper_enable() directly.

    YANG Description: Enables the graceful restart helper for LDP.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """helper_enable must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__helper_enable = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_helper_enable(self):
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

  enabled = __builtin__.property(_get_enabled)
  reconnect_time = __builtin__.property(_get_reconnect_time)
  recovery_time = __builtin__.property(_get_recovery_time)
  forwarding_holdtime = __builtin__.property(_get_forwarding_holdtime)
  helper_enable = __builtin__.property(_get_helper_enable)


  _pyangbind_elements = OrderedDict([('enabled', enabled), ('reconnect_time', reconnect_time), ('recovery_time', recovery_time), ('forwarding_holdtime', forwarding_holdtime), ('helper_enable', helper_enable), ])


class state(PybindBase):
  """
  This class was auto-generated by the PythonClass plugin for PYANG
  from YANG module openconfig-network-instance - based on the path /network-instances/network-instance/mpls/signaling-protocols/ldp/global/graceful-restart/state. Each member element of
  the container is represented as a class variable - with a specific
  YANG type.

  YANG Description: LDP graceful-restart state attributes.
  """
  __slots__ = ('_path_helper', '_extmethods', '__enabled','__reconnect_time','__recovery_time','__forwarding_holdtime','__helper_enable',)

  _yang_name = 'state'

  _pybind_generated_by = 'container'

  def __init__(self, *args, **kwargs):

    self._path_helper = False

    self._extmethods = False
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

    load = kwargs.pop("load", None)
    if args:
      if len(args) > 1:
        raise TypeError("cannot create a YANG container with >1 argument")
      all_attr = True
      for e in self._pyangbind_elements:
        if not hasattr(args[0], e):
          all_attr = False
          break
      if not all_attr:
        raise ValueError("Supplied object did not have the correct attributes")
      for e in self._pyangbind_elements:
        nobj = getattr(args[0], e)
        if nobj._changed() is False:
          continue
        setmethod = getattr(self, "_set_%s" % e)
        if load is None:
          setmethod(getattr(args[0], e))
        else:
          setmethod(getattr(args[0], e), load=load)

  def _path(self):
    if hasattr(self, "_parent"):
      return self._parent._path()+[self._yang_name]
    else:
      return ['network-instances', 'network-instance', 'mpls', 'signaling-protocols', 'ldp', 'global', 'graceful-restart', 'state']

  def _get_enabled(self):
    """
    Getter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    return self.__enabled
      
  def _set_enabled(self, v, load=False):
    """
    Setter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_enabled is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_enabled() directly.

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """enabled must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__enabled = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_enabled(self):
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)


  def _get_reconnect_time(self):
    """
    Getter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    return self.__reconnect_time
      
  def _set_reconnect_time(self, v, load=False):
    """
    Setter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_reconnect_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_reconnect_time() directly.

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """reconnect_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__reconnect_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_reconnect_time(self):
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_recovery_time(self):
    """
    Getter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    return self.__recovery_time
      
  def _set_recovery_time(self, v, load=False):
    """
    Setter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_recovery_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_recovery_time() directly.

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """recovery_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__recovery_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_recovery_time(self):
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_forwarding_holdtime(self):
    """
    Getter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    return self.__forwarding_holdtime
      
  def _set_forwarding_holdtime(self, v, load=False):
    """
    Setter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_forwarding_holdtime is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_forwarding_holdtime() directly.

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """forwarding_holdtime must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__forwarding_holdtime = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_forwarding_holdtime(self):
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_helper_enable(self):
    """
    Getter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)

    YANG Description: Enables the graceful restart helper for LDP.
    """
    return self.__helper_enable
      
  def _set_helper_enable(self, v, load=False):
    """
    Setter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_helper_enable is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_helper_enable() directly.

    YANG Description: Enables the graceful restart helper for LDP.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """helper_enable must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__helper_enable = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_helper_enable(self):
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

  enabled = __builtin__.property(_get_enabled)
  reconnect_time = __builtin__.property(_get_reconnect_time)
  recovery_time = __builtin__.property(_get_recovery_time)
  forwarding_holdtime = __builtin__.property(_get_forwarding_holdtime)
  helper_enable = __builtin__.property(_get_helper_enable)


  _pyangbind_elements = OrderedDict([('enabled', enabled), ('reconnect_time', reconnect_time), ('recovery_time', recovery_time), ('forwarding_holdtime', forwarding_holdtime), ('helper_enable', helper_enable), ])


class state(PybindBase):
  """
  This class was auto-generated by the PythonClass plugin for PYANG
  from YANG module openconfig-network-instance-l2 - based on the path /network-instances/network-instance/mpls/signaling-protocols/ldp/global/graceful-restart/state. Each member element of
  the container is represented as a class variable - with a specific
  YANG type.

  YANG Description: LDP graceful-restart state attributes.
  """
  __slots__ = ('_path_helper', '_extmethods', '__enabled','__reconnect_time','__recovery_time','__forwarding_holdtime','__helper_enable',)

  _yang_name = 'state'

  _pybind_generated_by = 'container'

  def __init__(self, *args, **kwargs):

    self._path_helper = False

    self._extmethods = False
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

    load = kwargs.pop("load", None)
    if args:
      if len(args) > 1:
        raise TypeError("cannot create a YANG container with >1 argument")
      all_attr = True
      for e in self._pyangbind_elements:
        if not hasattr(args[0], e):
          all_attr = False
          break
      if not all_attr:
        raise ValueError("Supplied object did not have the correct attributes")
      for e in self._pyangbind_elements:
        nobj = getattr(args[0], e)
        if nobj._changed() is False:
          continue
        setmethod = getattr(self, "_set_%s" % e)
        if load is None:
          setmethod(getattr(args[0], e))
        else:
          setmethod(getattr(args[0], e), load=load)

  def _path(self):
    if hasattr(self, "_parent"):
      return self._parent._path()+[self._yang_name]
    else:
      return ['network-instances', 'network-instance', 'mpls', 'signaling-protocols', 'ldp', 'global', 'graceful-restart', 'state']

  def _get_enabled(self):
    """
    Getter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    return self.__enabled
      
  def _set_enabled(self, v, load=False):
    """
    Setter method for enabled, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/enabled (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_enabled is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_enabled() directly.

    YANG Description: When set to true, the functionality within which this leaf is
defined is enabled, when set to false it is explicitly disabled.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """enabled must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__enabled = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_enabled(self):
    self.__enabled = YANGDynClass(base=YANGBool, default=YANGBool("false"), is_leaf=True, yang_name="enabled", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)


  def _get_reconnect_time(self):
    """
    Getter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    return self.__reconnect_time
      
  def _set_reconnect_time(self, v, load=False):
    """
    Setter method for reconnect_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/reconnect_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_reconnect_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_reconnect_time() directly.

    YANG Description: Interval for which the remote LDP peers
will wait for the local node to reconnect after a
failure
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """reconnect_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__reconnect_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_reconnect_time(self):
    self.__reconnect_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="reconnect-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_recovery_time(self):
    """
    Getter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    return self.__recovery_time
      
  def _set_recovery_time(self, v, load=False):
    """
    Setter method for recovery_time, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/recovery_time (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_recovery_time is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_recovery_time() directly.

    YANG Description: Interval used to specify the time for the remote
peer to maintain the MPLS forwarding state after
the local node has succesfully reconnected
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """recovery_time must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__recovery_time = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_recovery_time(self):
    self.__recovery_time = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="recovery-time", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_forwarding_holdtime(self):
    """
    Getter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    return self.__forwarding_holdtime
      
  def _set_forwarding_holdtime(self, v, load=False):
    """
    Setter method for forwarding_holdtime, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/forwarding_holdtime (uint16)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_forwarding_holdtime is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_forwarding_holdtime() directly.

    YANG Description: Time that defines the interval for keeping the
node in recovery mode.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """forwarding_holdtime must be of a type compatible with uint16""",
          'defined-type': "uint16",
          'generated-type': """YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)""",
        })

    self.__forwarding_holdtime = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_forwarding_holdtime(self):
    self.__forwarding_holdtime = YANGDynClass(base=RestrictedClassType(base_type=int, restriction_dict={'range': ['0..65535']},int_size=16), is_leaf=True, yang_name="forwarding-holdtime", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='uint16', is_config=False)


  def _get_helper_enable(self):
    """
    Getter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)

    YANG Description: Enables the graceful restart helper for LDP.
    """
    return self.__helper_enable
      
  def _set_helper_enable(self, v, load=False):
    """
    Setter method for helper_enable, mapped from YANG variable /network_instances/network_instance/mpls/signaling_protocols/ldp/global/graceful_restart/state/helper_enable (boolean)
    If this variable is read-only (config: false) in the
    source YANG file, then _set_helper_enable is considered as a private
    method. Backends looking to populate this variable should
    do so via calling thisObj._set_helper_enable() directly.

    YANG Description: Enables the graceful restart helper for LDP.
    """
    if hasattr(v, "_utype"):
      v = v._utype(v)
    try:
      t = YANGDynClass(v,base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)
    except (TypeError, ValueError):
      raise ValueError({
          'error-string': """helper_enable must be of a type compatible with boolean""",
          'defined-type': "boolean",
          'generated-type': """YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)""",
        })

    self.__helper_enable = t
    if hasattr(self, '_set'):
      self._set()

  def _unset_helper_enable(self):
    self.__helper_enable = YANGDynClass(base=YANGBool, is_leaf=True, yang_name="helper-enable", parent=self, path_helper=self._path_helper, extmethods=self._extmethods, register_paths=True, namespace='http://openconfig.net/yang/network-instance', defining_module='openconfig-network-instance', yang_type='boolean', is_config=False)

  enabled = __builtin__.property(_get_enabled)
  reconnect_time = __builtin__.property(_get_reconnect_time)
  recovery_time = __builtin__.property(_get_recovery_time)
  forwarding_holdtime = __builtin__.property(_get_forwarding_holdtime)
  helper_enable = __builtin__.property(_get_helper_enable)


  _pyangbind_elements = OrderedDict([('enabled', enabled), ('reconnect_time', reconnect_time), ('recovery_time', recovery_time), ('forwarding_holdtime', forwarding_holdtime), ('helper_enable', helper_enable), ])


