summaryrefslogtreecommitdiffstats
path: root/ipaclient/remote_plugins/2_49/entitle.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipaclient/remote_plugins/2_49/entitle.py')
-rw-r--r--ipaclient/remote_plugins/2_49/entitle.py383
1 files changed, 383 insertions, 0 deletions
diff --git a/ipaclient/remote_plugins/2_49/entitle.py b/ipaclient/remote_plugins/2_49/entitle.py
new file mode 100644
index 000000000..f527939bf
--- /dev/null
+++ b/ipaclient/remote_plugins/2_49/entitle.py
@@ -0,0 +1,383 @@
+#
+# Copyright (C) 2016 FreeIPA Contributors see COPYING for license
+#
+
+# pylint: disable=unused-import
+import six
+
+from . import Command, Method, Object
+from ipalib import api, parameters, output
+from ipalib.parameters import DefaultFrom
+from ipalib.plugable import Registry
+from ipalib.text import _
+from ipapython.dn import DN
+from ipapython.dnsutil import DNSName
+
+if six.PY3:
+ unicode = str
+
+__doc__ = _("""
+Entitlements
+
+Manage entitlements for client machines
+
+Entitlements can be managed either by registering with an entitlement
+server with a username and password or by manually importing entitlement
+certificates. An entitlement certificate contains embedded information
+such as the product being entitled, the quantity and the validity dates.
+
+An entitlement server manages the number of client entitlements available.
+To mark these entitlements as used by the IPA server you provide a quantity
+and they are marked as consumed on the entitlement server.
+
+ Register with an entitlement server:
+ ipa entitle-register consumer
+
+ Import an entitlement certificate:
+ ipa entitle-import /home/user/ipaclient.pem
+
+ Display current entitlements:
+ ipa entitle-status
+
+ Retrieve details on entitlement certificates:
+ ipa entitle-get
+
+ Consume some entitlements from the entitlement server:
+ ipa entitle-consume 50
+
+The registration ID is a Unique Identifier (UUID). This ID will be
+IMPORTED if you have used entitle-import.
+
+Changes to /etc/rhsm/rhsm.conf require a restart of the httpd service.
+""")
+
+register = Registry()
+
+
+@register()
+class entitle(Object):
+ takes_params = (
+ )
+
+
+@register()
+class entitle_consume(Method):
+ __doc__ = _("Consume an entitlement.")
+
+ takes_args = (
+ parameters.Int(
+ 'quantity',
+ label=_(u'Quantity'),
+ ),
+ )
+ takes_options = (
+ parameters.Int(
+ 'hidden',
+ label=_(u'Quantity'),
+ exclude=('cli', 'webui'),
+ default=1,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'all',
+ doc=_(u'Retrieve and print all attributes from the server. Affects command output.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'raw',
+ doc=_(u'Print entries as stored on the server. Only affects output format.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'summary',
+ (unicode, type(None)),
+ doc=_(u'User-friendly description of action performed'),
+ ),
+ output.Entry(
+ 'result',
+ ),
+ output.Output(
+ 'value',
+ unicode,
+ doc=_(u"The primary_key value of the entry, e.g. 'jdoe' for a user"),
+ ),
+ )
+
+
+@register()
+class entitle_find(Method):
+ __doc__ = _("Search for entitlement accounts.")
+
+ takes_args = (
+ parameters.Str(
+ 'criteria',
+ required=False,
+ doc=_(u'A string searched in all relevant object attributes'),
+ ),
+ )
+ takes_options = (
+ parameters.Int(
+ 'timelimit',
+ required=False,
+ label=_(u'Time Limit'),
+ doc=_(u'Time limit of search in seconds'),
+ ),
+ parameters.Int(
+ 'sizelimit',
+ required=False,
+ label=_(u'Size Limit'),
+ doc=_(u'Maximum number of entries returned'),
+ ),
+ parameters.Flag(
+ 'all',
+ doc=_(u'Retrieve and print all attributes from the server. Affects command output.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'raw',
+ doc=_(u'Print entries as stored on the server. Only affects output format.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'summary',
+ (unicode, type(None)),
+ doc=_(u'User-friendly description of action performed'),
+ ),
+ output.ListOfEntries(
+ 'result',
+ ),
+ output.Output(
+ 'count',
+ int,
+ doc=_(u'Number of entries returned'),
+ ),
+ output.Output(
+ 'truncated',
+ bool,
+ doc=_(u'True if not all results were returned'),
+ ),
+ )
+
+
+@register()
+class entitle_get(Command):
+ __doc__ = _("Retrieve the entitlement certs.")
+
+ takes_options = (
+ parameters.Flag(
+ 'all',
+ doc=_(u'Retrieve and print all attributes from the server. Affects command output.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'raw',
+ doc=_(u'Print entries as stored on the server. Only affects output format.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'summary',
+ (unicode, type(None)),
+ doc=_(u'User-friendly description of action performed'),
+ ),
+ output.ListOfEntries(
+ 'result',
+ ),
+ output.Output(
+ 'count',
+ int,
+ doc=_(u'Number of entries returned'),
+ ),
+ output.Output(
+ 'truncated',
+ bool,
+ doc=_(u'True if not all results were returned'),
+ ),
+ )
+
+
+@register()
+class entitle_import(Method):
+ __doc__ = _("Import an entitlement certificate.")
+
+ takes_args = (
+ parameters.Str(
+ 'usercertificate',
+ required=False,
+ multivalue=True,
+ cli_name='certificate_file',
+ ),
+ )
+ takes_options = (
+ parameters.Str(
+ 'setattr',
+ required=False,
+ multivalue=True,
+ doc=_(u'Set an attribute to a name/value pair. Format is attr=value.\nFor multi-valued attributes, the command replaces the values already present.'),
+ exclude=('webui',),
+ ),
+ parameters.Str(
+ 'addattr',
+ required=False,
+ multivalue=True,
+ doc=_(u'Add an attribute/value pair. Format is attr=value. The attribute\nmust be part of the schema.'),
+ exclude=('webui',),
+ ),
+ parameters.Str(
+ 'uuid',
+ required=False,
+ label=_(u'UUID'),
+ doc=_(u'Enrollment UUID'),
+ default=u'IMPORTED',
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'result',
+ dict,
+ doc=_(u'Dictionary mapping variable name to value'),
+ ),
+ )
+
+
+@register()
+class entitle_register(Method):
+ __doc__ = _("Register to the entitlement system.")
+
+ takes_args = (
+ parameters.Str(
+ 'username',
+ label=_(u'Username'),
+ ),
+ )
+ takes_options = (
+ parameters.Str(
+ 'setattr',
+ required=False,
+ multivalue=True,
+ doc=_(u'Set an attribute to a name/value pair. Format is attr=value.\nFor multi-valued attributes, the command replaces the values already present.'),
+ exclude=('webui',),
+ ),
+ parameters.Str(
+ 'addattr',
+ required=False,
+ multivalue=True,
+ doc=_(u'Add an attribute/value pair. Format is attr=value. The attribute\nmust be part of the schema.'),
+ exclude=('webui',),
+ ),
+ parameters.Str(
+ 'ipaentitlementid',
+ required=False,
+ label=_(u'UUID'),
+ doc=_(u'Enrollment UUID (not implemented)'),
+ ),
+ parameters.Password(
+ 'password',
+ label=_(u'Password'),
+ doc=_(u'Registration password'),
+ ),
+ parameters.Flag(
+ 'all',
+ doc=_(u'Retrieve and print all attributes from the server. Affects command output.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'raw',
+ doc=_(u'Print entries as stored on the server. Only affects output format.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'summary',
+ (unicode, type(None)),
+ doc=_(u'User-friendly description of action performed'),
+ ),
+ output.Entry(
+ 'result',
+ ),
+ output.Output(
+ 'value',
+ unicode,
+ doc=_(u"The primary_key value of the entry, e.g. 'jdoe' for a user"),
+ ),
+ )
+
+
+@register()
+class entitle_status(Command):
+ __doc__ = _("Display current entitlements.")
+
+ has_output = (
+ output.Output(
+ 'result',
+ dict,
+ doc=_(u'Dictionary mapping variable name to value'),
+ ),
+ )
+
+
+@register()
+class entitle_sync(Method):
+ __doc__ = _("Re-sync the local entitlement cache with the entitlement server.")
+
+ takes_options = (
+ parameters.Int(
+ 'hidden',
+ label=_(u'Quantity'),
+ exclude=('cli', 'webui'),
+ default=1,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'all',
+ doc=_(u'Retrieve and print all attributes from the server. Affects command output.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ parameters.Flag(
+ 'raw',
+ doc=_(u'Print entries as stored on the server. Only affects output format.'),
+ exclude=('webui',),
+ default=False,
+ autofill=True,
+ ),
+ )
+ has_output = (
+ output.Output(
+ 'summary',
+ (unicode, type(None)),
+ doc=_(u'User-friendly description of action performed'),
+ ),
+ output.Entry(
+ 'result',
+ ),
+ output.Output(
+ 'value',
+ unicode,
+ doc=_(u"The primary_key value of the entry, e.g. 'jdoe' for a user"),
+ ),
+ )