# ipaserver.plugins.serverrole.server_role

class ipaserver.plugins.serverrole.server_role(api)

  Bases: `ipalib.frontend.Object`

  association between certain role (e.g. DNS server) and its status with an IPA master

  Public Data Attributes:

  `backend_name` |
  `object_name` |
  `object_name_plural` |
  `default_attributes` |
  `label` |
  `label_singular` |
  `takes_params` |

  Inherited from `Object`

  `backend_name` |
  `takes_params` |
  `json_friendly_attributes` |

  Inherited from `HasParam`

  `NO_CLI` |
  `context` |

  Inherited from `Plugin`

  `version` |
  `name` |
  `full_name` |
  `bases` |
  `doc` |
  `summary` |
  `api` | Return API instance passed to __init__().
  `env` |
  `Backend` |
  `Command` |

  Public Methods:

  `ensure_master_exists`(fqdn) |

  Inherited from `Object`

  `backend` |
  `methods` |
  `params` |
  `primary_key` |
  `params_minus_pk` |
  `params_minus`(*names) | Yield all Param whose name is not in `names`.
  `get_dn`(*args, **kwargs) | Construct an LDAP DN.
  `get_params`() | This method gets called by HasParam._create_param_namespace().
  `__json__`() |

  Inherited from `Plugin`

  `__init__`(api) |
  `finalize`() | Finalize plugin initialization.
  `ensure_finalized`() | Finalize plugin initialization if it has not yet been finalized.
  `__repr__`() | Return 'module_name.class_name()' representation.

  Inherited from `ReadOnly`

  `__lock__`() | Put this instance into a read-only state.
  `__islocked__`() | Return True if instance is locked, otherwise False.
  `__setattr__`(name, value) | If unlocked, set attribute named `name` to `value`.
  `__delattr__`(name) | If unlocked, delete attribute named `name`.

  Private Data Attributes:

  Inherited from `ReadOnly`

  `_ReadOnly__locked` |

  Private Methods:

  Inherited from `Object`

  `_on_finalize`() | Do custom finalization.
  `_Object__get_attrs`(name) |

  Inherited from `HasParam`

  `_get_param_iterable`(name[, verb]) | Return an iterable of params defined by the attribute named `name`.
  `_filter_param_by_context`(name[, env]) | Filter params on attribute named `name` by environment `env`.
  `_create_param_namespace`(name[, env]) |

  Inherited from `Plugin`

  `_Plugin__name_getter`() |
  `_Plugin__full_name_getter`() |
  `_Plugin__bases_getter`() |
  `_Plugin__doc_getter`() |
  `_Plugin__summary_getter`() |
  `_on_finalize`() | Do custom finalization.

  property Backend
  property Command
  NO_CLI = False
  __annotations__ = {}
  __delattr__(name)

    If unlocked, delete attribute named `name`.

    If this instance is locked, an AttributeError will be raised.

    Parameters

      name – Name of attribute to delete.

  __dict__ = mappingproxy({'__module__': 'ipaserver.plugins.serverrole', '__doc__': '\n association between certain role (e.g. DNS server) and its status with\n an IPA master\n ', 'backend_name': 'serverroles', 'object_name': Gettext('server role', domain='ipa', localedir=None), 'object_name_plural': Gettext('server roles', domain='ipa', localedir=None), 'default_attributes': ['role', 'status'], 'label': Gettext('IPA Server Roles', domain='ipa', localedir=None), 'label_singular': Gettext('IPA Server Role', domain='ipa', localedir=None), 'takes_params': (Str('server_server', cli_name='server', doc=Gettext('IPA server hostname', domain='ipa', localedir=None), label=Gettext('Server name', domain='ipa', localedir=None)), Str('role_servrole', cli_name='role', doc=Gettext('IPA server role name', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=Gettext('Role name', domain='ipa', localedir=None)), StrEnum('status?', cli_metavar=u"['enabled', 'configured', 'hidden', 'absent']", cli_name='status', default=u'enabled', doc=Gettext('Status of the role', domain='ipa', localedir=None), flags=[u'no_create', u'no_update', u'virtual_attribute'], label=Gettext('Role status', domain='ipa', localedir=None), values=[u'enabled', u'configured', u'hidden', u'absent'])), 'ensure_master_exists': <function server_role.ensure_master_exists>, '__annotations__': {}})
  __init__(api)
  __islocked__()

    Return True if instance is locked, otherwise False.

  __json__()
  __lock__()

    Put this instance into a read-only state.

    After the instance has been locked, attempting to set or delete an attribute will raise an AttributeError.

  __module__ = 'ipaserver.plugins.serverrole'
  __repr__()

    Return ‘module_name.class_name()’ representation.

    This representation could be used to instantiate this Plugin instance given the appropriate environment.

  __setattr__(name, value)

    If unlocked, set attribute named `name` to `value`.

    If this instance is locked, an AttributeError will be raised.

    Parameters

      - name – Name of attribute to set.

      - value – Value to assign to attribute.

  __weakref__

    list of weak references to the object (if defined)

  _create_param_namespace(name, env=None)
  _filter_param_by_context(name, env=None)

    Filter params on attribute named `name` by environment `env`.

    For example:

        >>> from ipalib.config import Env
        >>> class Example(HasParam):
        ...
        ...     takes_args = (
        ...         Str('foo_only', include=['foo']),
        ...         Str('not_bar', exclude=['bar']),
        ...         'both',
        ...     )
        ...
        ...     def get_args(self):
        ...         return self._get_param_iterable('args')
        ...
        ...
        >>> eg = Example()
        >>> foo = Env(context='foo')
        >>> bar = Env(context='bar')
        >>> another = Env(context='another')
        >>> (foo.context, bar.context, another.context)
        (u'foo', u'bar', u'another')
        >>> list(eg._filter_param_by_context('args', foo))
        [Str('foo_only', include=['foo']), Str('not_bar', exclude=['bar']), Str('both')]
        >>> list(eg._filter_param_by_context('args', bar))
        [Str('both')]
        >>> list(eg._filter_param_by_context('args', another))
        [Str('not_bar', exclude=['bar']), Str('both')]

  _get_param_iterable(name, verb='takes')

    Return an iterable of params defined by the attribute named `name`.

    A sequence of params can be defined one of three ways: as a `tuple`; as a callable that returns an iterable; or as a param spec (a Param or `str` instance). This method returns a uniform iterable regardless of how the param sequence was defined.

    For example, when defined with a tuple:

        >>> class ByTuple(HasParam):
        ...     takes_args = (Param('foo'), Param('bar'))
        ...
        >>> by_tuple = ByTuple()
        >>> list(by_tuple._get_param_iterable('args'))
        [Param('foo'), Param('bar')]

    Or you can define your param sequence with a callable when you need to reference attributes on your plugin instance (for validation rules, etc.). For example:

        >>> class ByCallable(HasParam):
        ...     def takes_args(self):
        ...         yield Param('foo', self.validate_foo)
        ...         yield Param('bar', self.validate_bar)
        ...
        ...     def validate_foo(self, _, value, **kw):
        ...         if value != 'Foo':
        ...             return _("must be 'Foo'")
        ...
        ...     def validate_bar(self, _, value, **kw):
        ...         if value != 'Bar':
        ...             return _("must be 'Bar'")
        ...
        >>> by_callable = ByCallable()
        >>> list(by_callable._get_param_iterable('args'))
        [Param('foo', validate_foo), Param('bar', validate_bar)]

    Lastly, as a convenience for when a param sequence contains a single param, your defining attribute may a param spec (either a Param or an `str` instance). For example:

        >>> class BySpec(HasParam):
        ...     takes_args = Param('foo')
        ...     takes_options = 'bar?'
        ...
        >>> by_spec = BySpec()
        >>> list(by_spec._get_param_iterable('args'))
        [Param('foo')]
        >>> list(by_spec._get_param_iterable('options'))
        ['bar?']

    For information on how an `str` param spec is interpreted, see the create_param() and parse_param_spec() functions in the ipalib.parameters module.

    Also see HasParam._filter_param_by_context().

  _on_finalize()

    Do custom finalization.

    This method is called from finalize(). Subclasses can override this method in order to add custom finalization.

  property api

    Return API instance passed to __init__().

  backend = None
  backend_name = 'serverroles'
  bases = (<class 'ipalib.frontend.Object'>,)
  property context
  default_attributes = ['role', 'status']
  doc = '\n association between certain role (e.g. DNS server) and its status with\n an IPA master\n '
  ensure_finalized()

    Finalize plugin initialization if it has not yet been finalized.

  ensure_master_exists(fqdn)
  property env
  finalize()

    Finalize plugin initialization.

    This method calls _on_finalize() and locks the plugin object.

    Subclasses should not override this method. Custom finalization is done in _on_finalize().

  class finalize_attr(name, value=None)

    Bases: `object`

    Create a stub object for plugin attribute that isn’t set until the finalization of the plugin initialization.

    When the stub object is accessed, it calls ensure_finalized() to make sure the plugin initialization is finalized. The stub object is expected to be replaced with the actual attribute value during the finalization (preferably in _on_finalize()), otherwise an AttributeError is raised.

    This is used to implement on-demand finalization of plugin initialization.

    __annotations__ = {}
    __get__(obj, cls)
    __init__(name, value=None)
    __module__ = 'ipalib.plugable'
    __slots__ = ('name', 'value')
    name
    value
  full_name = 'server_role/1'
  get_dn(*args, **kwargs)

    Construct an LDAP DN.

  get_params()

    This method gets called by HasParam._create_param_namespace().

  json_friendly_attributes = ('name', 'takes_params')
  label = Gettext('IPA Server Roles', domain='ipa', localedir=None)
  label_singular = Gettext('IPA Server Role', domain='ipa', localedir=None)
  methods = None
  name = 'server_role'
  object_name = Gettext('server role', domain='ipa', localedir=None)
  object_name_plural = Gettext('server roles', domain='ipa', localedir=None)
  params = None
  params_minus(*names)

    Yield all Param whose name is not in `names`.

  params_minus_pk = None
  primary_key = None
  summary = 'association between certain role (e.g. DNS server) and its status with\n an IPA master'
  takes_params = (Str('server_server', cli_name='server', doc=Gettext('IPA server hostname', domain='ipa', localedir=None), label=Gettext('Server name', domain='ipa', localedir=None)), Str('role_servrole', cli_name='role', doc=Gettext('IPA server role name', domain='ipa', localedir=None), flags=[u'virtual_attribute'], label=Gettext('Role name', domain='ipa', localedir=None)), StrEnum('status?', cli_metavar=u"['enabled', 'configured', 'hidden', 'absent']", cli_name='status', default=u'enabled', doc=Gettext('Status of the role', domain='ipa', localedir=None), flags=[u'no_create', u'no_update', u'virtual_attribute'], label=Gettext('Role status', domain='ipa', localedir=None), values=[u'enabled', u'configured', u'hidden', u'absent']))
  version = '1'