the patch is rebased on top of tbabej 325-9 (but it might not be needed)

  ipa server-find
  ipa server-show FQDN

These commands display a list of IPA servers stored in cn=masters,cn=ipa,cn=etc,$SUFFIX

https://fedorahosted.org/freeipa/ticket/4302 (maybe we could create a different one)
--
Petr Vobornik
From e8eeebe1deefdbce4b602067fd230780d58934ea Mon Sep 17 00:00:00 2001
From: Petr Vobornik <pvobo...@redhat.com>
Date: Fri, 22 May 2015 09:43:27 +0200
Subject: [PATCH] server-find and server-show commands

  ipa server-find
  ipa server-show FQDN

These commands display a list of IPA servers stored in cn=masters,cn=ipa,cn=etc,$SUFFIX

https://fedorahosted.org/freeipa/ticket/4302
---
 API.txt                  | 27 ++++++++++++++
 ipalib/constants.py      |  1 +
 ipalib/plugins/server.py | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 121 insertions(+)
 create mode 100644 ipalib/plugins/server.py

diff --git a/API.txt b/API.txt
index 835dd820e3fb1aedbe8579c9e57e767569e2079b..6ee7411c6f6bebfaa76a015560d9e87f3d662462 100644
--- a/API.txt
+++ b/API.txt
@@ -3545,6 +3545,33 @@ option: Str('version?', exclude='webui')
 output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
 output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), None)
 output: PrimaryKey('value', None, None)
+command: server_find
+args: 1,10,4
+arg: Str('criteria?', noextrawhitespace=False)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui')
+option: Str('cn', attribute=True, autofill=False, cli_name='name', multivalue=False, primary_key=True, query=True, required=False)
+option: Int('ipamaxdomainlevel', attribute=True, autofill=False, cli_name='maxlevel', minvalue=0, multivalue=False, query=True, required=False)
+option: Int('ipamindomainlevel', attribute=True, autofill=False, cli_name='minlevel', minvalue=0, multivalue=False, query=True, required=False)
+option: Str('iparepltopomanagedsuffix', attribute=True, autofill=False, cli_name='suffix', multivalue=False, query=True, required=False)
+option: Flag('pkey_only?', autofill=True, default=False)
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui')
+option: Int('sizelimit?', autofill=False, minvalue=0)
+option: Int('timelimit?', autofill=False, minvalue=0)
+option: Str('version?', exclude='webui')
+output: Output('count', <type 'int'>, None)
+output: ListOfEntries('result', (<type 'list'>, <type 'tuple'>), Gettext('A list of LDAP entries', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), None)
+output: Output('truncated', <type 'bool'>, None)
+command: server_show
+args: 1,4,3
+arg: Str('cn', attribute=True, cli_name='name', multivalue=False, primary_key=True, query=True, required=True)
+option: Flag('all', autofill=True, cli_name='all', default=False, exclude='webui')
+option: Flag('raw', autofill=True, cli_name='raw', default=False, exclude='webui')
+option: Flag('rights', autofill=True, default=False)
+option: Str('version?', exclude='webui')
+output: Entry('result', <type 'dict'>, Gettext('A dictionary representing an LDAP entry', domain='ipa', localedir=None))
+output: Output('summary', (<type 'unicode'>, <type 'NoneType'>), None)
+output: PrimaryKey('value', None, None)
 command: service_add
 args: 1,11,3
 arg: Str('krbprincipalname', attribute=True, cli_name='principal', multivalue=False, primary_key=True, required=True)
diff --git a/ipalib/constants.py b/ipalib/constants.py
index b99306eaec1d7bcbec4612a8aa4a599d02ac73e5..95dec54a51f38ae63eba667daacf35dcd7500cf3 100644
--- a/ipalib/constants.py
+++ b/ipalib/constants.py
@@ -117,6 +117,7 @@ DEFAULT_CONFIG = (
     ('container_otp', DN(('cn', 'otp'))),
     ('container_radiusproxy', DN(('cn', 'radiusproxy'))),
     ('container_views', DN(('cn', 'views'), ('cn', 'accounts'))),
+    ('container_masters', DN(('cn', 'masters'), ('cn', 'ipa'), ('cn', 'etc'))),
 
     # Ports, hosts, and URIs:
     ('xmlrpc_uri', 'http://localhost:8888/ipa/xml'),
diff --git a/ipalib/plugins/server.py b/ipalib/plugins/server.py
new file mode 100644
index 0000000000000000000000000000000000000000..d129511ef51d8260048253e1cdd65140c8c0331e
--- /dev/null
+++ b/ipalib/plugins/server.py
@@ -0,0 +1,93 @@
+#
+# Copyright (C) 2015  FreeIPA Contributors see COPYING for license
+#
+
+import string
+import os
+
+from ipalib import api
+from ipalib import Int, Str
+from ipalib.plugable import Registry
+from ipalib.plugins.baseldap import *
+from ipalib.plugins import baseldap
+from ipalib import _, ngettext
+
+__doc__ = _("""
+IPA servers
+""") + _("""
+Get information about installed IPA servers.
+""") + _("""
+EXAMPLES:
+""") + _("""
+  Find all servers:
+    ipa server-find
+""") + _("""
+  Show specific server:
+    ipa server-show ipa.example.com
+""")
+
+register = Registry()
+
+
+@register()
+class server(LDAPObject):
+    """
+    IPA server
+    """
+    container_dn = api.env.container_masters
+    object_name = _('server')
+    object_name_plural = _('servers')
+    object_class = ['top']
+    default_attributes = [
+        'cn', 'iparepltopomanagedsuffix', 'ipamindomainlevel',
+        'ipamaxdomainlevel'
+    ]
+    search_display_attributes = [
+        'cn', 'iparepltopomanagedsuffix', 'ipamindomainlevel',
+        'ipamaxdomainlevel'
+    ]
+    label = _('IPA Servers')
+    label_singular = _('IPA Server')
+    takes_params = (
+        Str(
+            'cn',
+            cli_name='name',
+            primary_key=True,
+            label=_('Server name'),
+            doc=_('IPA server hostname'),
+        ),
+        Str(
+            'iparepltopomanagedsuffix',
+            cli_name='suffix',
+            label=_('Managed suffix'),
+        ),
+        Int(
+            'ipamindomainlevel',
+            cli_name='minlevel',
+            label=_('Min domain level'),
+            doc=_('Minimum domain level'),
+            minvalue=0,
+        ),
+        Int(
+            'ipamaxdomainlevel',
+            cli_name='maxlevel',
+            label=_('Max domain level'),
+            doc=_('Maximum domain level'),
+            minvalue=0,
+        ),
+    )
+
+
+@register()
+class server_find(LDAPSearch):
+    __doc__ = _('Search for IPA servers.')
+
+    msg_summary = ngettext(
+        '%(count)d IPA server matched',
+        '%(count)d IPA servers matched', 0
+    )
+
+
+@register()
+class server_show(LDAPRetrieve):
+    __doc__ = _('Show IPA server.')
-- 
2.1.0

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to