[Pkg-freeipa-devel] freeipa: Changes to 'ubuntu'
Timo Aaltonen
tjaalton-guest at alioth.debian.org
Mon Jun 17 19:23:07 UTC 2013
Makefile | 2
VERSION | 2
daemons/Makefile.am | 1
daemons/configure.ac | 136
daemons/ipa-kdb/ipa_kdb.c | 38
daemons/ipa-kdb/ipa_kdb.h | 13
daemons/ipa-kdb/ipa_kdb_principals.c | 28
daemons/ipa-otpd/Makefile.am | 21
daemons/ipa-otpd/bind.c | 144
daemons/ipa-otpd/forward.c | 124
daemons/ipa-otpd/internal.h | 153
daemons/ipa-otpd/ipa-otpd.socket.in | 11
daemons/ipa-otpd/ipa-otpd at .service.in | 9
daemons/ipa-otpd/main.c | 340 ++
daemons/ipa-otpd/parse.c | 176 +
daemons/ipa-otpd/query.c | 253 +
daemons/ipa-otpd/queue.c | 183 +
daemons/ipa-otpd/stdio.c | 205 +
daemons/ipa-otpd/test.py | 61
daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c | 67
daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_worker.c | 30
daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_extop.c | 2
daemons/ipa-slapi-plugins/ipa-pwd-extop/Makefile.am | 48
daemons/ipa-slapi-plugins/ipa-pwd-extop/auth.c | 398 ++
daemons/ipa-slapi-plugins/ipa-pwd-extop/common.c | 1237 +++++++
daemons/ipa-slapi-plugins/ipa-pwd-extop/encoding.c | 291 +
daemons/ipa-slapi-plugins/ipa-pwd-extop/ipa_pwd_extop.c | 109
daemons/ipa-slapi-plugins/ipa-pwd-extop/ipapwd.h | 42
daemons/ipa-slapi-plugins/ipa-pwd-extop/ipapwd_common.c | 1107 ------
daemons/ipa-slapi-plugins/ipa-pwd-extop/ipapwd_encoding.c | 291 -
daemons/ipa-slapi-plugins/ipa-pwd-extop/ipapwd_prepost.c | 1349 --------
daemons/ipa-slapi-plugins/ipa-pwd-extop/otp.c | 180 +
daemons/ipa-slapi-plugins/ipa-pwd-extop/prepost.c | 1642 ++++++++++
daemons/ipa-slapi-plugins/ipa-pwd-extop/t_hotp.c | 82
daemons/ipa-slapi-plugins/ipa-pwd-extop/t_totp.c | 103
daemons/ipa-slapi-plugins/ipa-sidgen/ipa_sidgen_common.c | 2
debian/changelog | 20
debian/freeipa-client.install | 2
debian/patches/port-ipa-client-automount.diff | 26
debian/patches/series | 1
debian/rules | 2
debian/watch | 2
freeipa.spec.in | 9
init/systemd/freeipa-systemd-upgrade | 1
install/html/ssbrowser.html | 12
install/share/60basev3.ldif | 2
install/share/70ipaotp.ldif | 28
install/share/Makefile.am | 1
install/share/copy-schema-to-ca.py | 1
install/share/default-aci.ldif | 10
install/tools/ipa-ca-install | 13
install/tools/ipa-dns-install | 5
install/tools/ipa-replica-install | 19
install/tools/ipa-server-install | 19
install/tools/ipa-upgradeconfig | 30
install/ui/src/freeipa/_base/metadata_provider.js | 62
install/ui/src/freeipa/aci.js | 2
install/ui/src/freeipa/association.js | 144
install/ui/src/freeipa/automember.js | 2
install/ui/src/freeipa/certificate.js | 2
install/ui/src/freeipa/details.js | 27
install/ui/src/freeipa/dns.js | 58
install/ui/src/freeipa/entity.js | 25
install/ui/src/freeipa/facet.js | 164
install/ui/src/freeipa/field.js | 2
install/ui/src/freeipa/hbactest.js | 2
install/ui/src/freeipa/ipa.js | 2
install/ui/src/freeipa/metadata.js | 65
install/ui/src/freeipa/search.js | 87
install/ui/src/freeipa/sudo.js | 14
install/ui/src/freeipa/text.js | 2
install/ui/src/freeipa/widget.js | 4
install/ui/test/aci_tests.js | 2
install/ui/test/data/ipa_init.json | 12
install/ui/test/data/ipa_init_commands.json | 11
install/ui/test/details_tests.js | 10
install/ui/test/entity_tests.js | 8
install/updates/10-60basev3.update | 4
install/updates/10-70ipaotp.update | 25
install/updates/40-otp.update | 9
install/updates/50-7_bit_check.update | 6
install/updates/Makefile.am | 5
ipa-client/ipa-install/ipa-client-install | 11
ipalib/cli.py | 26
ipalib/constants.py | 1
ipalib/frontend.py | 37
ipalib/plugable.py | 10
ipalib/plugins/dns.py | 56
ipalib/plugins/hbactest.py | 4
ipalib/plugins/idrange.py | 60
ipalib/plugins/internal.py | 12
ipalib/plugins/ping.py | 2
ipalib/rpc.py | 2
ipapython/platform/fedora16/service.py | 1
ipapython/version.py.in | 17
ipaserver/install/adtrustinstance.py | 50
ipaserver/install/dsinstance.py | 21
ipaserver/install/installutils.py | 22
ipaserver/install/krbinstance.py | 1
ipaserver/install/otpdinstance.py | 25
ipaserver/install/plugins/update_anonymous_aci.py | 25
ipaserver/install/service.py | 17
tests/test_cmdline/test_cli.py | 67
tests/test_xmlrpc/test_range_plugin.py | 144
104 files changed, 7088 insertions(+), 3362 deletions(-)
New commits:
commit 05b8cdd5f1c5085d78e441eeb7d13de2fdfd0ec0
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 22:19:55 2013 +0300
release to saucy
diff --git a/debian/changelog b/debian/changelog
index 3ded159..6972c56 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+freeipa (3.2.1-0ubuntu1) saucy; urgency=low
+
+ * Merge from unreleased debian git
+ - rebase to 3.2.1
+ - add ipa-client-automount to freeipa-client, and patch it so it
+ works on Debian/Ubuntu
+
+ -- Timo Aaltonen <tjaalton at ubuntu.com> Mon, 17 Jun 2013 22:15:21 +0300
+
freeipa (3.2.1-1) UNRELEASED; urgency=low
[ Michele Baldessari ]
commit d1b590a0354bc56ad28be006e0b4ddb481411d31
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 22:10:00 2013 +0300
fix the watch file
diff --git a/debian/watch b/debian/watch
index cda34dd..a1cb50d 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,2 @@
version=3
-http://freeipa.org/downloads/src/freeipa-(.*)\.tar\.gz
+http://freeipa.org/page/Downloads http://freeipa.org/downloads/src/freeipa-(.+).tar.gz
commit 6d6de5bba5ee8506f3ef8781172a0c0a7dbd0691
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 21:36:22 2013 +0300
bump the version
diff --git a/debian/changelog b/debian/changelog
index 7bd8f69..3d5afeb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-freeipa (3.2.0-1) UNRELEASED; urgency=low
+freeipa (3.2.1-1) UNRELEASED; urgency=low
[ Michele Baldessari ]
* Initial release (Closes: #12345)
commit 14e33241ab6665b90f1abd6df72cbbdaddf46c67
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 13:36:08 2013 +0300
port-ipa-client-automount.diff: Patch i-c-a so it works on Debian.
diff --git a/debian/changelog b/debian/changelog
index 7010bca..7bd8f69 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -37,6 +37,7 @@ freeipa (3.2.0-1) UNRELEASED; urgency=low
* fix-ntpdate-opts.diff: Drop -U from nptdate opts, we don't have
that.
* Add support for Debian platform.
+ * port-ipa-client-automount.diff: Patch i-c-a so it works on Debian.
[ Nick Hatch ]
* Added three patches
diff --git a/debian/patches/port-ipa-client-automount.diff b/debian/patches/port-ipa-client-automount.diff
new file mode 100644
index 0000000..e4ca2f9
--- /dev/null
+++ b/debian/patches/port-ipa-client-automount.diff
@@ -0,0 +1,26 @@
+diff --git a/ipa-client/ipa-install/ipa-client-automount b/ipa-client/ipa-install/ipa-client-automount
+index 3952642..e7b843e 100755
+--- a/ipa-client/ipa-install/ipa-client-automount
++++ b/ipa-client/ipa-install/ipa-client-automount
+@@ -39,10 +39,10 @@ from ipapython.ipa_log_manager import *
+ from ipapython.dn import DN
+ from ipapython import services as ipaservices
+
+-AUTOFS_CONF = '/etc/sysconfig/autofs'
++AUTOFS_CONF = '/etc/default/autofs'
+ NSSWITCH_CONF = '/etc/nsswitch.conf'
+ AUTOFS_LDAP_AUTH = '/etc/autofs_ldap_auth.conf'
+-NFS_CONF = '/etc/sysconfig/nfs'
++NFS_CONF = '/etc/default/nfs-common'
+ IDMAPD_CONF = '/etc/idmapd.conf'
+
+ def parse_options():
+@@ -309,7 +309,7 @@ def configure_nfs(fstore, statestore):
+ Configure secure NFS
+ """
+ replacevars = {
+- 'SECURE_NFS': 'yes',
++ 'NEED_GSSD': 'yes',
+ }
+ ipautil.backup_config_and_replace_variables(fstore,
+ NFS_CONF, replacevars=replacevars)
diff --git a/debian/patches/series b/debian/patches/series
index 74629e6..78391ee 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,3 +11,4 @@ fix-symlink-exclusion.diff
fix-ldap-conf-path.diff
check-dbus-before-starting.diff
add-debian-platform.diff
+port-ipa-client-automount.diff
commit 7601bdd79e44d56e747a88e171b82891b043bedd
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 13:17:44 2013 +0300
use --fail-missing
diff --git a/debian/changelog b/debian/changelog
index b182255..7010bca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,7 +14,7 @@ freeipa (3.2.0-1) UNRELEASED; urgency=low
* Add no-testcert.patch to not fail make-testcert.
* Bump compat and debhelper build-depends to 9.
* Add missing files to freeipa.install.
- * Add --list-missing for dh_install.
+ * Add --fail-missing for dh_install.
* copyright: Updated, with OpenSSL exception.
* control: Add python-libipa-hbac to build-depends.
* control: Add ${shlibs:Depends} to python-freeipa depends.
diff --git a/debian/rules b/debian/rules
index a574a75..9747500 100755
--- a/debian/rules
+++ b/debian/rules
@@ -65,7 +65,7 @@ endif
# fix permissions
find $(CURDIR)/debian/tmp -name "*.mo" -type f -exec chmod -x "{}" \;
- dh_install --list-missing
+ dh_install --fail-missing
%:
dh $@ --with quilt,autoreconf,python2
commit 0edc87f39296a5ad37c6744ec6f68d9b530d0d98
Author: Timo Aaltonen <tjaalton at ubuntu.com>
Date: Mon Jun 17 13:13:08 2013 +0300
add ipa-client-automount to installed files
diff --git a/debian/freeipa-client.install b/debian/freeipa-client.install
index 6ae66de..03aac67 100644
--- a/debian/freeipa-client.install
+++ b/debian/freeipa-client.install
@@ -1,3 +1,4 @@
+usr/sbin/ipa-client-automount
usr/sbin/ipa-client-install
usr/sbin/ipa-getkeytab
usr/sbin/ipa-rmkeytab
@@ -5,6 +6,7 @@ usr/sbin/ipa-join
usr/share/ipa/ipaclient/ipa.cfg
usr/share/ipa/ipaclient/ipa.js
usr/lib/python*/dist-packages/ipaclient/*.py
+usr/share/man/man1/ipa-client-automount.1.gz
usr/share/man/man1/ipa-client-install.1.gz
usr/share/man/man1/ipa-getkeytab.1.gz
usr/share/man/man1/ipa-rmkeytab.1.gz
commit 3def81da5b892f39292d20909a4a3255375ff784
Author: Martin Kosek <mkosek at redhat.com>
Date: Fri Jun 7 09:52:36 2013 +0200
Become 3.2.1
diff --git a/VERSION b/VERSION
index 08c2bf1..60b1d5f 100644
--- a/VERSION
+++ b/VERSION
@@ -20,7 +20,7 @@
########################################################
IPA_VERSION_MAJOR=3
IPA_VERSION_MINOR=2
-IPA_VERSION_RELEASE=0
+IPA_VERSION_RELEASE=1
########################################################
# For 'pre' releases the version will be #
commit dfcb07a8b3027820d4d8810e0b650059789e9adf
Author: Ana Krivokapic <akrivoka at redhat.com>
Date: Thu Jun 6 12:52:08 2013 +0200
Prevent error when running IPA commands with su/sudo
https://fedorahosted.org/freeipa/ticket/3685
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index fe09d3a..aaa0dea 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -490,6 +490,11 @@ class API(DictProxy):
stream=sys.stderr,
level=level,
format=LOGGING_FORMAT_STDERR)])
+
+ if not parser:
+ parser = self.build_global_parser()
+ object.__setattr__(self, 'parser', parser)
+
# Add file handler:
if self.env.mode in ('dummy', 'unit_test'):
return # But not if in unit-test mode
@@ -503,7 +508,6 @@ class API(DictProxy):
log.error('Could not create log_dir %r', log_dir)
return
-
level = 'info'
if self.env.debug:
level = 'debug'
@@ -516,10 +520,6 @@ class API(DictProxy):
log.error('Cannot open log file %r: %s', self.env.log, e)
return
- if not parser:
- parser = self.build_global_parser()
- object.__setattr__(self, 'parser', parser)
-
def build_global_parser(self, parser=None, context=None):
"""
Add global options to an optparse.OptionParser instance.
commit 08a487f3e4d258f84dd20330e0a45c9b5f4094f0
Author: Tomas Babej <tbabej at redhat.com>
Date: Wed Jun 5 15:48:35 2013 +0200
Manage ipa-otpd.socket by IPA
Adds a new simple service called OtpdInstance, that manages
ipa-otpd.socket service. Added to server/replica installer
and ipa-upgradeconfig script.
https://fedorahosted.org/freeipa/ticket/3680
diff --git a/install/tools/ipa-replica-install b/install/tools/ipa-replica-install
index 2722202..e93e30b 100755
--- a/install/tools/ipa-replica-install
+++ b/install/tools/ipa-replica-install
@@ -35,6 +35,7 @@ from ipapython import ipautil
from ipaserver.install import dsinstance, installutils, krbinstance, service
from ipaserver.install import bindinstance, httpinstance, ntpinstance, certs
from ipaserver.install import memcacheinstance
+from ipaserver.install import otpdinstance
from ipaserver.install.replication import replica_conn_check, ReplicationManager
from ipaserver.install.installutils import (HostnameLocalhost, resolve_host,
ReplicaConfig, expand_replica_info, read_replica_info ,get_host_name,
@@ -672,6 +673,11 @@ def main():
krb = install_krb(config, setup_pkinit=options.setup_pkinit)
http = install_http(config, auto_redirect=options.ui_redirect)
+
+ otpd = otpdinstance.OtpdInstance()
+ otpd.create_instance('OTPD', config.host_name, config.dirman_password,
+ ipautil.realm_to_suffix(config.realm_name))
+
if CA:
CA.configure_certmonger_renewal()
CA.import_ra_cert(dir + "/ra.p12")
diff --git a/install/tools/ipa-server-install b/install/tools/ipa-server-install
index 4a2ac17..853b4a8 100755
--- a/install/tools/ipa-server-install
+++ b/install/tools/ipa-server-install
@@ -49,6 +49,7 @@ from ipaserver.install import ntpinstance
from ipaserver.install import certs
from ipaserver.install import cainstance
from ipaserver.install import memcacheinstance
+from ipaserver.install import otpdinstance
from ipaserver.install import sysupgrade
from ipaserver.install import service, installutils
@@ -513,6 +514,7 @@ def uninstall():
krbinstance.KrbInstance(fstore).uninstall()
dsinstance.DsInstance(fstore=fstore).uninstall()
memcacheinstance.MemcacheInstance().uninstall()
+ otpdinstance.OtpdInstance().uninstall()
ipaservices.restore_network_configuration(fstore, sstore)
fstore.restore_all_files()
try:
@@ -1108,11 +1110,15 @@ def main():
# generated
ds.add_cert_to_service()
- # Create a HTTP instance
-
memcache = memcacheinstance.MemcacheInstance()
- memcache.create_instance('MEMCACHE', host_name, dm_password, ipautil.realm_to_suffix(realm_name))
+ memcache.create_instance('MEMCACHE', host_name, dm_password,
+ ipautil.realm_to_suffix(realm_name))
+ otpd = otpdinstance.OtpdInstance()
+ otpd.create_instance('OTPD', host_name, dm_password,
+ ipautil.realm_to_suffix(realm_name))
+
+ # Create a HTTP instance
http = httpinstance.HTTPInstance(fstore)
if options.http_pkcs12:
http.create_instance(
diff --git a/install/tools/ipa-upgradeconfig b/install/tools/ipa-upgradeconfig
index 8e9357f..4e92169 100644
--- a/install/tools/ipa-upgradeconfig
+++ b/install/tools/ipa-upgradeconfig
@@ -48,6 +48,7 @@ from ipaserver.install import bindinstance
from ipaserver.install import service
from ipaserver.install import cainstance
from ipaserver.install import certs
+from ipaserver.install import otpdinstance
from ipaserver.install import sysupgrade
@@ -925,17 +926,23 @@ def main():
uninstall_selfsign(ds, http)
- memcache = memcacheinstance.MemcacheInstance()
- memcache.ldapi = True
- memcache.realm = api.env.realm
- try:
- if not memcache.is_configured():
- # 389-ds needs to be running to create the memcache instance
- # because we record the new service in cn=masters.
- ds.start()
- memcache.create_instance('MEMCACHE', fqdn, None, ipautil.realm_to_suffix(api.env.realm))
- except ipalib.errors.DuplicateEntry:
- pass
+ simple_service_list = (
+ (memcacheinstance.MemcacheInstance(), 'MEMCACHE'),
+ (otpdinstance.OtpdInstance(), 'OTPD'),
+ )
+
+ for service, ldap_name in simple_service_list:
+ service.ldapi = True
+ try:
+ if not service.is_configured():
+ # 389-ds needs to be running to create the memcache instance
+ # because we record the new service in cn=masters.
+ ds.start()
+ service.create_instance(ldap_name, fqdn, None,
+ ipautil.realm_to_suffix(api.env.realm),
+ realm=api.env.realm)
+ except ipalib.errors.DuplicateEntry:
+ pass
cleanup_kdc(fstore)
setup_firefox_extension(fstore)
diff --git a/ipapython/platform/fedora16/service.py b/ipapython/platform/fedora16/service.py
index dac8c00..d45f629 100644
--- a/ipapython/platform/fedora16/service.py
+++ b/ipapython/platform/fedora16/service.py
@@ -53,6 +53,7 @@ system_units['pki_cad'] = system_units['pki-cad']
# Our PKI instance is pki-tomcatd at pki-tomcat.service
system_units['pki-tomcatd'] = 'pki-tomcatd at pki-tomcat.service'
system_units['pki_tomcatd'] = system_units['pki-tomcatd']
+system_units['ipa-otpd'] = 'ipa-otpd.socket'
class Fedora16Service(systemd.SystemdService):
def __init__(self, service_name):
diff --git a/ipaserver/install/otpdinstance.py b/ipaserver/install/otpdinstance.py
new file mode 100644
index 0000000..2eed3f8
--- /dev/null
+++ b/ipaserver/install/otpdinstance.py
@@ -0,0 +1,25 @@
+# Authors: Tomas Babej <tbabej at redhat.com>
+#
+# Copyright (C) 2013 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+import service
+
+
+class OtpdInstance(service.SimpleServiceInstance):
+ def __init__(self):
+ service.SimpleServiceInstance.__init__(self, "ipa-otpd")
\ No newline at end of file
diff --git a/ipaserver/install/service.py b/ipaserver/install/service.py
index 8f4a7db..f3cd189 100644
--- a/ipaserver/install/service.py
+++ b/ipaserver/install/service.py
@@ -40,14 +40,15 @@ DISABLED = 3
# The service name as stored in cn=masters,cn=ipa,cn=etc. In the tuple
# the first value is the *nix service name, the second the start order.
SERVICE_LIST = {
- 'KDC':('krb5kdc', 10),
- 'KPASSWD':('kadmin', 20),
- 'DNS':('named', 30),
- 'MEMCACHE':('ipa_memcached', 39),
- 'HTTP':('httpd', 40),
- 'CA':('%sd' % dogtag.configured_constants().PKI_INSTANCE_NAME, 50),
- 'ADTRUST':('smb', 60),
- 'EXTID':('winbind', 70)
+ 'KDC': ('krb5kdc', 10),
+ 'KPASSWD': ('kadmin', 20),
+ 'DNS': ('named', 30),
+ 'MEMCACHE': ('ipa_memcached', 39),
+ 'HTTP': ('httpd', 40),
+ 'CA': ('%sd' % dogtag.configured_constants().PKI_INSTANCE_NAME, 50),
+ 'ADTRUST': ('smb', 60),
+ 'EXTID': ('winbind', 70),
+ 'OTPD': ('ipa-otpd', 80),
}
def print_msg(message, output_fd=sys.stdout):
commit b1cb3ade03346113ab6ce6862dbd2a60070e59ca
Author: Tomas Babej <tbabej at redhat.com>
Date: Mon Jun 3 09:56:08 2013 +0200
Do not check userPassword with 7-bit plugin
Default list of attributes that are checked with 7-bit plugin
for being 7-bit clean includes userPassword. Consecutively, one
is unable to set passwords that contain non-ascii characters.
https://fedorahosted.org/freeipa/ticket/3640
diff --git a/install/updates/50-7_bit_check.update b/install/updates/50-7_bit_check.update
new file mode 100644
index 0000000..b9ea8a9
--- /dev/null
+++ b/install/updates/50-7_bit_check.update
@@ -0,0 +1,6 @@
+# Remove userPassword from the list of attributes checked by 7-bit plugin
+# Replace argument value 'userPassword' with 'mail' to avoid the need to
+# shift the whole argument array. Attribute 'mail' is already listed
+# in pluginarg1, so it is conveniently used as valid value placeholder.
+dn: cn=7-bit check,cn=plugins,cn=config
+replace:nsslapd-pluginarg2:userpassword::mail
diff --git a/install/updates/Makefile.am b/install/updates/Makefile.am
index 787a51c..5336f62 100644
--- a/install/updates/Makefile.am
+++ b/install/updates/Makefile.am
@@ -35,6 +35,7 @@ app_DATA = \
40-automember.update \
40-otp.update \
45-roles.update \
+ 50-7_bit_check.update \
50-lockout-policy.update \
50-groupuuid.update \
50-hbacservice.update \
commit efed0643c90f0cc31540351744dd431e6a122a17
Author: Martin Kosek <mkosek at redhat.com>
Date: Thu Jun 6 08:34:13 2013 +0200
Remove redundant u'' character
One Python's unicode marking character was being printed by RPC plugin
which then appeared in ipa-client-install output. This patch removes
it.
diff --git a/ipalib/plugins/ping.py b/ipalib/plugins/ping.py
index e9dc28f..0743758 100644
--- a/ipalib/plugins/ping.py
+++ b/ipalib/plugins/ping.py
@@ -45,7 +45,7 @@ EXAMPLES:
Ping an IPA server verbosely:
ipa -v ping
ipa: INFO: trying https://ipa.example.com/ipa/xml
- ipa: INFO: Forwarding 'ping' to server u'https://ipa.example.com/ipa/xml'
+ ipa: INFO: Forwarding 'ping' to server 'https://ipa.example.com/ipa/xml'
-----------------------------------------------------
IPA server version 2.1.9. API version 2.20
-----------------------------------------------------
diff --git a/ipalib/rpc.py b/ipalib/rpc.py
index 077d99e..36daa83 100644
--- a/ipalib/rpc.py
+++ b/ipalib/rpc.py
@@ -697,7 +697,7 @@ class xmlclient(Connectible):
'%s.forward(): %r not in api.Command' % (self.name, name)
)
server = getattr(context, 'request_url', None)
- self.info('Forwarding %r to server %r', name, server)
+ self.info("Forwarding '%s' to server '%s'", name, server)
command = getattr(self.conn, name)
params = [args, kw]
try:
commit 6f41dd8e991e7601a1dd5692807245ac42b960c6
Author: Petr Vobornik <pvoborni at redhat.com>
Date: Mon Jun 3 15:14:20 2013 +0200
Fix regression: missing facet tab group labels
Currently there is only empty space between facet tabs and facet title.
It's a regression caused by recent refactoring.
https://fedorahosted.org/freeipa/ticket/3688
diff --git a/install/ui/src/freeipa/entity.js b/install/ui/src/freeipa/entity.js
index 1896f90..22efd47 100644
--- a/install/ui/src/freeipa/entity.js
+++ b/install/ui/src/freeipa/entity.js
@@ -240,18 +240,23 @@ exp.entity_builder =IPA.entity_builder = function(entity) {
];
that.facet_group = function(spec) {
- spec.entity = entity;
- if (spec instanceof Object) {
- var factory = spec.$factory || IPA.facet_group;
- facet_group = factory(spec);
- } else {
- facet_group = IPA.facet_group({ name: spec });
- }
- if (facet_group.label == undefined) {
- facet_group.label = text.get('@i18n:facet_groups.'+facet_group.name);
+ if (typeof spec === 'string') {
+ spec = { name: spec };
}
+ var preop = function(spec) {
+
+ spec.entity = entity;
+ spec.label = spec.label || '@i18n:facet_groups.'+spec.name;
+ return spec;
+ };
+
+ var facet_group = builder.build('', spec, {}, {
+ $factory: IPA.facet_group,
+ $pre_ops: [preop]
+ });
+
entity.add_facet_group(facet_group);
return that;
diff --git a/install/ui/src/freeipa/facet.js b/install/ui/src/freeipa/facet.js
index 80e8671..ad53b80 100644
--- a/install/ui/src/freeipa/facet.js
+++ b/install/ui/src/freeipa/facet.js
@@ -909,7 +909,7 @@ exp.facet_header = IPA.facet_header = function(spec) {
if (!data) return;
var result = data.result.result;
if (!that.facet.disable_facet_tabs) {
- var pkey = that.facet.pkey;
+ var pkey = that.facet.get_pkey();
var facet_groups = that.facet.entity.facet_groups.values;
for (var i=0; i<facet_groups.length; i++) {
commit e3ef78c67e276157777c96f8f63c84806f5ca9e4
Author: Tomas Babej <tbabej at redhat.com>
Date: Thu May 9 14:47:29 2013 +0200
Incorporate interactive prompts in idrange-add
In idrange-add command, ensure that RID base is prompted for
in the interactive mode if domain SID or domain name was
specified.
If domain name nor SID was specified, make sure rid base is
prompted for if secondary rid base was specified and vice versa.
https://fedorahosted.org/freeipa/ticket/3602
diff --git a/ipalib/plugins/idrange.py b/ipalib/plugins/idrange.py
index d548794..2a5415d 100644
--- a/ipalib/plugins/idrange.py
+++ b/ipalib/plugins/idrange.py
@@ -361,6 +361,41 @@ class idrange_add(LDAPCreate):
msg_summary = _('Added ID range "%(value)s"')
+ def interactive_prompt_callback(self, kw):
+ """
+ Ensure that rid-base is prompted for when dom-sid is specified.
+
+ Also ensure that secondary-rid-base is prompted for when rid-base is
+ specified and vice versa, in case that dom-sid was not specified.
+ """
+
+ # dom-sid can be specified using dom-sid or dom-name options
+
+ # it can be also set using --setattr or --addattr, in these cases
+ # we will not prompt, but raise an ValidationError later
+
+ dom_sid_set = any(dom_id in kw for dom_id in
+ ('ipanttrusteddomainname', 'ipanttrusteddomainsid'))
+
+ rid_base_set = 'ipabaserid' in kw
+ secondary_rid_base_set = 'ipasecondarybaserid' in kw
+
+ # Prompt for RID base if domain SID / name was given
+ if dom_sid_set and not rid_base_set:
+ value = self.prompt_param(self.params['ipabaserid'])
+ kw.update(dict(ipabaserid=value))
+
+ if not dom_sid_set:
+ # Prompt for secondary RID base if RID base was given
+ if rid_base_set and not secondary_rid_base_set:
+ value = self.prompt_param(self.params['ipasecondarybaserid'])
+ kw.update(dict(ipasecondarybaserid=value))
+
+ # Symetrically, prompt for RID base if secondary RID base was given
+ if not rid_base_set and secondary_rid_base_set:
+ value = self.prompt_param(self.params['ipabaserid'])
+ kw.update(dict(ipabaserid=value))
+
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
assert isinstance(dn, DN)
@@ -414,9 +449,9 @@ class idrange_add(LDAPCreate):
entry_attrs['ipabaserid'],
entry_attrs['ipasecondarybaserid'],
entry_attrs['ipaidrangesize']):
- raise errors.ValidationError(name='ID Range setup',
- error=_("Primary RID range and secondary RID range"
- " cannot overlap"))
+ raise errors.ValidationError(name='ID Range setup',
+ error=_("Primary RID range and secondary RID range"
+ " cannot overlap"))
entry_attrs['objectclass'].append('ipadomainidrange')
commit 47d868bd7559e23ce2b844d9bd1d9dde20b85452
Author: Tomas Babej <tbabej at redhat.com>
Date: Thu May 9 15:36:41 2013 +0200
Add prompt_param method to avoid code duplication
Extracted common code from ipalib/plugins/cli.py and
ipalib/plugins/dns.py that provided way to prompt user
for the value of specific attribute.
Added prompt_param method to Command class in ipalib/frontend.py
Done as part of https://fedorahosted.org/freeipa/ticket/3602
diff --git a/ipalib/cli.py b/ipalib/cli.py
index c4b4492..5f02e92 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -1178,11 +1178,13 @@ class cli(backend.Executioner):
``self.env.prompt_all`` is ``True``, this method will prompt for any
params that have a missing values, even if the param is optional.
"""
+
honor_alwaysask = True
for param in cmd.params():
if param.alwaysask and param.name in kw:
honor_alwaysask = False
break
+
for param in cmd.params():
if (param.required and param.name not in kw) or \
(param.alwaysask and honor_alwaysask) or self.env.prompt_all:
@@ -1196,19 +1198,16 @@ class cli(backend.Executioner):
)
else:
default = cmd.get_default_of(param.name, **kw)
- error = None
- while True:
- if error is not None:
- self.Backend.textui.print_prompt_attribute_error(unicode(param.label),
- unicode(error))
- raw = self.Backend.textui.prompt(param.label, default, optional=param.alwaysask or not param.required)
- try:
- value = param(raw, **kw)
- if value is not None:
- kw[param.name] = value
- break
- except (ValidationError, ConversionError), e:
- error = e.error
+ optional = param.alwaysask or not param.required
+
+ value = cmd.prompt_param(param,
+ default=default,
+ optional=optional,
+ kw=kw)
+
+ if value is not None:
+ kw[param.name] = value
+
elif param.password and kw.get(param.name, False) is True:
kw[param.name] = self.Backend.textui.prompt_password(
param.label, param.confirm
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index 0331dc5..427f682 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -22,19 +22,18 @@ Base classes for all front-end plugins.
"""
import re
-import inspect
from distutils import version
from ipapython.version import API_VERSION
from ipapython.ipa_log_manager import root_logger
-from base import lock, check_name, NameSpace
+from base import NameSpace
from plugable import Plugin, is_production_mode
-from parameters import create_param, parse_param_spec, Param, Str, Flag, Password
+from parameters import create_param, Param, Str, Flag, Password
from output import Output, Entry, ListOfEntries
-from text import _, ngettext
+from text import _
from errors import (ZeroArgumentError, MaxArgumentError, OverlapError,
- RequiresRoot, VersionError, RequirementError, OptionError, InvocationError)
-from constants import TYPE_ERROR
+ VersionError, OptionError, InvocationError,
+ ValidationError, ConversionError)
from ipalib import messages
@@ -560,6 +559,32 @@ class Command(HasParam):
if name in params:
yield(name, params[name])
+ def prompt_param(self, param, default=None, optional=False, kw=dict(),
+ label=None):
+ """
+ Prompts the user for the value of given parameter.
+
+ Returns the parameter instance.
+ """
+
+ if label is None:
+ label = param.label
+
+ while True:
+ raw = self.Backend.textui.prompt(label, default, optional=optional)
+
+ # Backend.textui.prompt does not fill in the default value,
+ # we have to do it ourselves
+ if not raw.strip():
+ raw = default
+
+ try:
+ return param(raw, **kw)
+ except (ValidationError, ConversionError), e:
+ # Display error and prompt again
+ self.Backend.textui.print_prompt_attribute_error(unicode(label),
+ unicode(e.error))
+
def normalize(self, **kw):
"""
Return a dictionary of normalized values.
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index fbc4452..621d60e 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -759,26 +759,16 @@ class DNSRecord(Str):
return tuple(self._convert_dnsrecord_extra(extra) for extra in self.extra)
- def __get_part_param(self, backend, part, output_kw, default=None):
+ def __get_part_param(self, cmd, part, output_kw, default=None):
name = self.part_name_format % (self.rrtype.lower(), part.name)
label = self.part_label_format % (self.rrtype, unicode(part.label))
optional = not part.required
- while True:
- try:
- raw = backend.textui.prompt(label,
- optional=optional,
- default=default)
- if not raw.strip():
- raw = default
-
- output_kw[name] = part(raw)
- break
- except (errors.ValidationError, errors.ConversionError), e:
- backend.textui.print_prompt_attribute_error(
- unicode(label), unicode(e.error))
-
- def prompt_parts(self, backend, mod_dnsvalue=None):
+ output_kw[name] = cmd.prompt_param(part,
+ optional=optional,
+ label=label)
+
+ def prompt_parts(self, cmd, mod_dnsvalue=None):
mod_parts = None
if mod_dnsvalue is not None:
mod_parts = self._get_part_values(mod_dnsvalue)
@@ -793,18 +783,17 @@ class DNSRecord(Str):
else:
default = None
- self.__get_part_param(backend, part, user_options, default)
+ self.__get_part_param(cmd, part, user_options, default)
return user_options
- def prompt_missing_parts(self, backend, kw, prompt_optional=False):
+ def prompt_missing_parts(self, cmd, kw, prompt_optional=False):
user_options = {}
if self.parts is None:
return user_options
for part in self.parts:
name = self.part_name_format % (self.rrtype.lower(), part.name)
- label = self.part_label_format % (self.rrtype, unicode(part.label))
if name in kw:
continue
@@ -814,7 +803,7 @@ class DNSRecord(Str):
continue
default = part.get_default(**kw)
- self.__get_part_param(backend, part, user_options, default)
+ self.__get_part_param(cmd, part, user_options, default)
return user_options
@@ -2395,7 +2384,7 @@ class dnsrecord_add(LDAPCreate):
# it can be used to fill all required params by itself
new_kw = {}
for rrparam in self.obj.iterate_rrparams_by_parts(kw, skip_extra=True):
- user_options = rrparam.prompt_missing_parts(self.Backend, kw,
+ user_options = rrparam.prompt_missing_parts(self, kw,
prompt_optional=False)
new_kw.update(user_options)
kw.update(new_kw)
@@ -2437,7 +2426,7 @@ class dnsrecord_add(LDAPCreate):
continue
ok = True
- user_options = param.prompt_parts(self.Backend)
+ user_options = param.prompt_parts(self)
kw.update(user_options)
def pre_callback(self, ldap, dn, entry_attrs, attrs_list, *keys, **options):
@@ -2698,7 +2687,7 @@ class dnsrecord_mod(LDAPUpdate):
mod_value = self.Backend.textui.prompt_yesno(
_("Modify %(name)s '%(value)s'?") % dict(name=param.label, value=rec_value), default=False)
if mod_value is True:
- user_options = param.prompt_parts(self.Backend, mod_dnsvalue=rec_value)
+ user_options = param.prompt_parts(self, mod_dnsvalue=rec_value)
kw[param.name] = [rec_value]
kw.update(user_options)
commit 6b2c9f05a0e6980606699f45a23635771322a6a1
Author: Tomas Babej <tbabej at redhat.com>
Date: Thu May 9 14:50:52 2013 +0200
Remove redundant check for env.interactive
Fixed as part of
https://fedorahosted.org/freeipa/ticket/3602
diff --git a/ipalib/cli.py b/ipalib/cli.py
index 84dea2e..c4b4492 100644
--- a/ipalib/cli.py
+++ b/ipalib/cli.py
@@ -1043,7 +1043,6 @@ class cli(backend.Executioner):
"""Get the keyword arguments for a Command"""
if self.env.interactive:
self.prompt_interactively(cmd, kw)
- if self.env.interactive:
try:
callbacks = cmd.get_callbacks('interactive_prompt')
except AttributeError:
commit 4ec1de1a65f1fabe7f5b26b4c4487deec5cea0cf
Author: Tomas Babej <tbabej at redhat.com>
Date: Mon Jun 3 12:06:06 2013 +0200
Use private ccache in ipa install tools
All installers that handle Kerberos auth, have been altered to use
private ccache, that is ipa-server-install, ipa-dns-install,
More information about the Pkg-freeipa-devel
mailing list