Re: [Freeipa-devel] [PATCH 0094] Fix bogus error message in choice-type installer options

2015-11-06 Thread Martin Babinsky

On 11/06/2015 10:30 AM, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5433





Attaching updated patch.

--
Martin^3 Babinsky
From 72bec020ac98095836593ae7f04c922632f5c885 Mon Sep 17 00:00:00 2001
From: Martin Babinsky 
Date: Fri, 6 Nov 2015 10:05:42 +0100
Subject: [PATCH] fix error reporting when installer option is supplied with
 invalid choice

https://fedorahosted.org/freeipa/ticket/5433
---
 ipapython/install/cli.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ipapython/install/cli.py b/ipapython/install/cli.py
index d2250e51650b9de1c85473399e3462f42bf8770b..7cc3a9c395cb9326112f9235ec24ee38ff897eb8 100644
--- a/ipapython/install/cli.py
+++ b/ipapython/install/cli.py
@@ -218,7 +218,8 @@ class ConfigureTool(admintool.AdminTool):
 if value not in value_type:
 raise ValueError(
 "invalid choice {0} (choose from {1})".format(
-repr(value), ', '.join(repr(value_type
+str(value), ', '.join(
+sorted(str(v) for v in value_type
 return value
 else:
 parse = value_type
-- 
2.4.3

-- 
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

Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Martin Babinsky

On 11/06/2015 10:10 AM, Petr Spacek wrote:

On 6.11.2015 10:00, Martin Babinsky wrote:

On 11/02/2015 12:56 PM, Martin Babinsky wrote:

On 10/30/2015 11:53 AM, Martin Babinsky wrote:

On 10/26/2015 01:41 PM, Martin Babinsky wrote:

On 10/22/2015 04:13 PM, Martin Basti wrote:



On 22.10.2015 10:44, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5181





Thank you for the patch.

1)
+OPTIONAL_SERVICES = {
+'DNS',
+'CA',
+'KRA',
+'ADTRUST',
+'EXTID',
+'DNSKeyExporter',
+'DNSSEC',
+'DNSKeySync',
+}

This did not scale well, maybe we should improve it to use some general
solution for whole IPA to distinct mandratory and optionl service,
but I
do not know how (or if it is possible)


Yes this does not scale well. After some playing around with relocating
the SERVICE_LIST object in 'ipaserver/install/service.py' I found out
that more refactoring would be needed to improve the layout and
availability of LDAP service names to both server and client code. I
have put the list of core services to ipalib/constants.py for now, and I
suggest to open a separate ticket for more general solution.


2)
+search_filter=('(&(objectclass=ipaConfigObject)'
+   '(ipaConfigString=enabledService))')

Common user cannot read ipaConfigString, so this will work only for
admins, I do not see any limitations of access in code for other users.



I think that you agreed with Petr^2 that this filter is OK. I left it as
it is but I have rewritten it as a call to ldap.make_filter to improve
readability and/or potential extensibility a bit.


3)
+opt_components = [
+r['cn'][0] for r in result if r['cn'][0] in
OPTIONAL_SERVICES
+]
Probably instead of indexing, you may use result.single_value['cn']

Martin^2


Attaching updated patch.




Self-NACK, I found a bug in the patch during work on topology management
stuff.



Attaching updated patch.




Bump for review.


I apologize for the delay, ACK!



NACKed by commitee until further notice.

--
Martin^3 Babinsky

--
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


Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Petr Vobornik

On 11/06/2015 01:09 PM, Martin Babinsky wrote:

On 11/06/2015 11:06 AM, Petr Vobornik wrote:

On 11/06/2015 10:15 AM, Petr Spacek wrote:

On 6.11.2015 09:25, Martin Kosek wrote:

On 11/05/2015 07:02 PM, Petr Vobornik wrote:

On 11/02/2015 12:37 PM, Martin Kosek wrote:

On 11/02/2015 06:10 AM, Jan Cholasta wrote:

Hi,

On 22.10.2015 10:44, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5181


This should be handled by a separate object plugin:

$ ipa servercomponent-find master.ipa.test
---
6 server components matched
---
Component name: CA
Enabled: TRUE
Start order: 50

Component name: KDC
Enabled: TRUE
Start order: 10

Component name: KPASSWD
Enabled: TRUE
Start order: 20

Component name: MEMCACHE
Enabled: TRUE
Start order: 39

Component name: OTPD
Enabled: TRUE
Start order: 80

Component name: HTTP
Enabled: TRUE
Start order: 40

Number of entries returned 6


This will allow us to consolidate all the ad-hoc
component-related code
scattered throughout IPA (search for enable component,
enable/disable
component, ...) into IPA command calls.

I'm not opposed to showing a summary in server-show (although
we don't do
anything like this for any other hierarchical objects), but it
should be done
just for the users' sake, not for internal use (the ticket
suggests to use this
for topology visualisation).

BTW as far as the scalability of the current solution goes, you
should have a
list of all the *non*-optional components and display
everything else.


The API proposal should be in line with our future extensions of
the API. We
for example want to move "ipa-csreplica-manage"
set-renewal-master command to
API call. Or DNSSEC generation master. Or we may want to change
some other
flag/role of a master via this interface.

So we will need something like
$ ipa server-add-role ipa.example.com --role "ca-renewal-master"
or
$ ipa servercomponent-add-role ipa.example.com CA
--role=renewal-master


Depends on usage. If we want to internally unify manipulation with
configs for
component we can create low-level commands which won't be exposed
to CLI.

E.g. ipa servercomponent-find ipa.example.com
Component name: ADTRUST
Config: enabledService, startOrder 60



This is all what Web UI needs.


 From user perspective, for CLI, something different is better.
Martin used term
'role', lets go with that.

Idea 1:
$ ipa server-show ipa.example.com --roles
Server name: vm-073.idm.lab.eng.brq.redhat.com
   Managed suffix: dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com,
o=ipaca
   Min domain level: 0
   Max domain level: 1
   Role: dns-server, cs-server, ca-renewal-master, trust-controller

--all would imply --roles

I am thinking "Roles" could be printed out even in default listing.
It looks as
an important piece of information you want to know about your master.
I also
originally used that with servercomponent, you moved it to server
itself. It
makes also sense.

We will need a design for this servercomponent/roles anyway, to agree
on the
API with all stakeholders.


$ ipa server-add-role ipa.example.com --roles=ca-renewal-master


Just keep in mind that 'role' design requires yet another layer of
indirection
because there is no 1:1 mapping between services and roles. E.g.
'DNSSEC key
master' role consists of several services, as 'DNS server' role etc.

Also, we can get into trouble because role 'DNS server' in IPA 4.2 can
contain
different set of services than 'DNS server' in IPA 5.0 etc.

For these reasons I question necessity of 'role' abstraction. Is it
worth?



IMO yes. Current patch is better than nothing but roles are more
friendly, components are implementation detail.

Showing only CNs on components doesn't show all info. E.g.

ipa server-show `hostname`
   Server name: ipa.example.com
   Managed suffix: dc=example,dc=com, o=ipaca
   Min domain level: 0
   Max domain level: 1
   Optional components: CA, DNS, DNSKeySync, ADTRUST, EXTID, KRA

This doesn't show that the server is actually also a ca-renewal-master.
  What is the command I can use to solve: "show me what server is the
ca-renewal-master"?


In that case we would IMHO need to redesign the whole service to LDAP
mapping to incorporate server roles in some sane and scalable way. I'm
not sure if that fits in the 4.3 timeframe. If yes, the we should first
start with first putting the plumbing in and then adding API calls on top.



It is not a blocker for 4.3.

Issue here is that we are discussing implementation and API purity 
without use-cases. The result doesn't have to be something big in the end.


So far the only real use case was a consumption by Web UI for topology 
visualization. This definitely won't be part of 4.3. And Web UI will do 
exactly what I wrote here(hidden behind term "role".


Just display which servers are:
- vault backend (KRA)
- CS
- ca-renewal-master
-

[Freeipa-devel] [PATCH] 0001 Refactor test_user_plugin

2015-11-06 Thread Filip Škola
>From 881f5f980e820f178850307c0f64e3eb50cbc01e Mon Sep 17 00:00:00 2001
From: Filip Skola 
Date: Fri, 6 Nov 2015 10:57:37 +0100
Subject: [PATCH] Refactor test_user_plugin, use UserTracker for tests

---
 ipatests/test_xmlrpc/test_user_plugin.py | 2794 +-
 1 file changed, 1182 insertions(+), 1612 deletions(-)

diff --git a/ipatests/test_xmlrpc/test_user_plugin.py b/ipatests/test_xmlrpc/test_user_plugin.py
index 3d7b5e6ba14e3ccb144575f52e4e503e6638037d..ede6a339a519dfd40fd7507ee644f1cab0d4503c 100644
--- a/ipatests/test_xmlrpc/test_user_plugin.py
+++ b/ipatests/test_xmlrpc/test_user_plugin.py
@@ -2,6 +2,7 @@
 #   Rob Crittenden 
 #   Pavel Zuna 
 #   Jason Gerard DeRose 
+#   Filip Skola 
 #
 # Copyright (C) 2008, 2009  Red Hat
 # see file 'COPYING' for use and warranty information
@@ -23,6 +24,7 @@
 Test the `ipalib/plugins/user.py` module.
 """
 
+import pytest
 import functools
 import datetime
 import ldap
@@ -33,40 +35,37 @@ from ipatests.test_xmlrpc import objectclasses
 from ipatests.util import (
 assert_equal, assert_not_equal, raises, assert_deepequal)
 from xmlrpc_test import (
-XMLRPC_test, Declarative, fuzzy_digits, fuzzy_uuid, fuzzy_password,
+XMLRPC_test, fuzzy_digits, fuzzy_uuid, fuzzy_password,
 fuzzy_string, fuzzy_dergeneralizedtime, add_sid, add_oc, raises_exact)
 from ipapython.dn import DN
 from ipatests.test_xmlrpc.ldaptracker import Tracker
 
-user1 = u'tuser1'
-user2 = u'tuser2'
 admin1 = u'admin'
-admin2 = u'admin2'
-renameduser1 = u'tuser'
 group1 = u'group1'
-admins_group = u'admins'
+admin_group = u'admins'
 
 invaliduser1 = u'+tuser1'
 invaliduser2 = u'tuser1234567890123456789012345678901234567890'
 
 sshpubkey = (u'ssh-rsa B3NzaC1yc2EDAQABAAABAQDGAX3xAeLeaJggwTqMjxNwa6X'
-  'HBUAikXPGMzEpVrlLDCZtv00djsFTBi38PkgxBJVkgRWMrcBsr/35lq7P6w8KGI'
-  'wA8GI48Z0qBS2NBMJ2u9WQ2hjLN6GdMlo77O0uJY3251p12pCVIS/bHRSq8kHO2'
-  'No8g7KA9fGGcagPfQH+ee3t7HUkpbQkFTmbPPN++r3V8oVUk5LxbryB3UIIVzNm'
-  'cSIn3JrXynlvui4MixvrtX6zx+O/bBo68o8/eZD26QrahVbA09fivrn/4h3TM01'
-  '9Eu/c2jOdckfU3cHUV/3Tno5d6JicibyaoDDK7S/yjdn5jhaz8MSEayQvFkZkiF'
-  '0L public key test')
+ 'HBUAikXPGMzEpVrlLDCZtv00djsFTBi38PkgxBJVkgRWMrcBsr/35lq7P6w8KGI'
+ 'wA8GI48Z0qBS2NBMJ2u9WQ2hjLN6GdMlo77O0uJY3251p12pCVIS/bHRSq8kHO2'
+ 'No8g7KA9fGGcagPfQH+ee3t7HUkpbQkFTmbPPN++r3V8oVUk5LxbryB3UIIVzNm'
+ 'cSIn3JrXynlvui4MixvrtX6zx+O/bBo68o8/eZD26QrahVbA09fivrn/4h3TM01'
+ '9Eu/c2jOdckfU3cHUV/3Tno5d6JicibyaoDDK7S/yjdn5jhaz8MSEayQvFkZkiF'
+ '0L public key test')
 sshpubkeyfp = (u'13:67:6B:BF:4E:A2:05:8E:AE:25:8B:A1:31:DE:6F:1B '
-'public key test (ssh-rsa)')
+   'public key test (ssh-rsa)')
 
-validlanguage1 = u'en-US;q=0.987 , en, abcdfgh-abcdefgh;q=1, a;q=1.000'
-validlanguage2 = u'*'
+validlanguages = {
+u'en-US;q=0.987 , en, abcdfgh-abcdefgh;q=1, a;q=1.000',
+u'*'
+}
 
-invalidlanguage1 = u'abcdfghji-abcdfghji'
-invalidlanguage2 = u'en-us;q=0,123'
-invalidlanguage3 = u'en-us;q=0.1234'
-invalidlanguage4 = u'en-us;q=1.1'
-invalidlanguage5 = u'en-us;q=1.'
+invalidlanguages = {
+u'abcdfghji-abcdfghji', u'en-us;q=0,123',
+u'en-us;q=0.1234', u'en-us;q=1.1', u'en-us;q=1.'
+}
 
 principal_expiration_string = "2020-12-07T19:54:13Z"
 principal_expiration_date = datetime.datetime(2020, 12, 7, 19, 54, 13)
@@ -78,1581 +77,6 @@ expired_expiration_string = "1991-12-07T19:54:13Z"
 isodate_re = re.compile('^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$')
 
 
-def get_user_result(uid, givenname, sn, operation='show', omit=[],
-**overrides):
-"""Get a user result for a user-{add,mod,find,show} command
-
-This gives the result as from a user_add(uid, givenname=givenname, sn=sn);
-modifications to that can be specified in ``omit`` and ``overrides``.
-
-The ``operation`` can be one of:
-- add
-- show
-- show-all ((show with the --all flag)
-- find
-- mod
-
-Attributes named in ``omit`` are removed from the result; any additional
-or non-default values can be specified in ``overrides``.
-"""
-# sn can be None; this should only be used from `get_admin_result`
-cn = overrides.get('cn', ['%s %s' % (givenname, sn or '')])
-cn[0] = cn[0].strip()
-result = add_sid(dict(
-homedirectory=[u'/home/%s' % uid],
-loginshell=[u'/bin/sh'],
-uid=[uid],
-uidnumber=[fuzzy_digits],
-gidnumber=[fuzzy_digits],
-mail=[u'%s@%s' % (uid, api.env.domain)],
-has_keytab=False,
-has_password=False,
-))
-if sn:
-result['sn'] = [sn]
-if givenname:
-result['givenname'] = [givenname]
-if operation in ('add', 'show', 'show-all', 'find'):
-result.update(
-dn=get_user_dn(uid),
-)
-if operation in ('add', 'show-all'):
-result.upda

Re: [Freeipa-devel] upstream under RHEL7 build failure

2015-11-06 Thread Oleg Fayans



On 11/06/2015 12:57 PM, Martin Babinsky wrote:

On 11/06/2015 11:58 AM, Oleg Fayans wrote:

Hi all,

I am trying to build upstream packages under RHEL-7.2. All the
build-time dependencies were installed from RHEL repos except
python-gssapi, which was taken from fedora-22. The build fails with a
pile of lint errors: https://paste.fedoraproject.org/287566/
Could someone of you help me debug this?



I guess you don't have python-six package installed?

I do have it. All the packages marked as BuildRequires in 
freeipa.spec.in are installed


--
Oleg Fayans
Quality Engineer
FreeIPA team
RedHat.

--
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


Re: [Freeipa-devel] [PATCH] ca-less tests updated - POC

2015-11-06 Thread Oleg Fayans

Hi Jan,

On 11/06/2015 09:01 AM, Jan Cholasta wrote:

Actually it might be better to keep them, but fix them to expect
ipa-server-certinstall to success.


Done. Updated patch attached.
Also in the patch 0013 I removed a trailing whitespace which caused lint 
to complain


Now with domain level 0 the test output looks like this:

[11:40:51]ofayans@vm-076:~]$ ipa-run-tests test_integration/test_caless.py
 
test session starts 
=

platform linux2 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.6.4
plugins: multihost, sourceorder
collected 88 items

test_integration/test_caless.py 
..xx..ss...xxssxx..ss...


= 76 
passed, 6 skipped, 6 xfailed in 7871.10 seconds 
=





On 6.11.2015 08:47, Jan Cholasta wrote:

Hi Oleg,

I think you can just remove
TestCertinstall.test_{http,ds}_intermediate_ca, the certificates are
imported correctly in this case and I didn't see anything break.

Honza

On 5.11.2015 20:20, Oleg Fayans wrote:

Patch 0014 updated and passes lint

On 11/05/2015 03:41 PM, Oleg Fayans wrote:

Wait a bit, the patch has problems with pylint: it does not build :)
The updated version (without the setupmaster nonsense) is being tested
now.

On 11/05/2015 08:45 AM, Oleg Fayans wrote:

Hi Jan,

Could you take a look at these, whenever you are free?

On 10/30/2015 02:57 PM, Oleg Fayans wrote:

Hi,

The following patches contain updates to ca-less integration tests.
It's still a proof of concept: 2 tests still fail seemingly due to
the
change in target system logic (marked as xfail with "ask jcholast
comment")

The test output looks like this:

$ ipa-run-tests test_integration/test_caless.py --pdb






test session starts
=






platform linux2 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.6.4
plugins: multihost, sourceorder
collected 88 items

test_integration/test_caless.py
..xx..sssss.ss.xx..ssxx.








53

passed, 29 skipped, 6 xfailed in 5620.17 seconds
=

Numerous skips correspond to the tests related to ipa-replica-prepare
(unsupported under domain level 1)



















--
Oleg Fayans
Quality Engineer
FreeIPA team
RedHat.
From 3142e9ab937b602a687639e7972422001e887211 Mon Sep 17 00:00:00 2001
From: Oleg Fayans 
Date: Thu, 5 Nov 2015 16:25:29 +0100
Subject: [PATCH] Updated the script creating test certificate chains

https://fedorahosted.org/freeipa/ticket/4589
---
 .../test_integration/scripts/caless-create-pki | 29 ++
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/ipatests/test_integration/scripts/caless-create-pki b/ipatests/test_integration/scripts/caless-create-pki
index f428ebae16e05644a875a35faf192f75eb149740..4c37077ffdecfb0c70663c7c4817f102154d3b26 100644
--- a/ipatests/test_integration/scripts/caless-create-pki
+++ b/ipatests/test_integration/scripts/caless-create-pki
@@ -3,7 +3,17 @@
 profile_ca=(-t CT,C,C -v 120)
 profile_server=(-t ,, -v 12)
 
-crl_path=${crl_path-$(readlink -f $dbdir)}
+# crl_path=${crl_path-$(readlink -f $dbdir)}
+profile_ca_request_options=(-1 -2 -4)
+profile_ca_request_input="\$'0\n1\n5\n6\n9\ny\ny\n\ny\n1\n7\nfile://'\$(readlink -f \$dbdir)/\$ca.crl\$'\n-1\n-1\n-1\nn\nn\n'"
+profile_ca_create_options=(-v 120)
+profile_ca_add_options=(-t ,,)
+
+profile_server_request_options=(-4)
+profile_server_request_input="\$'1\n7\nfile://'\$(readlink -f \$dbdir)/\$ca.crl\$'\n-1\n-1\n-1\nn\nn\n'"
+profile_server_create_options=(-v 12)
+profile_server_add_options=(-t ,,)
+
 
 serial_number=0
 
@@ -18,7 +28,11 @@ gen_cert() {
 ca="$nick"
 fi
 
+echo $profile
 eval "options=(\"\${profile_$profile[@]}\")"
+eval "request_options=(\"\${profile_${profile}_request_options[@]}\")"
+eval "eval request_input=(\"\${profile_${profile}_request_input[@]}\")"
+
 if [ "$ca" = "$nick" ]; then
 options=("${options[@]}" -x -m 1)
 else
@@ -38,16 +52,7 @@ gen_cert() {
 
 csr="$(mktemp)"
 crt="$(mktemp)"
-certutil -R -d "$dbdir" -s "$subject" -f "$pwfile" -z "$noise" -o "$csr" -4 >/dev/null 

Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Martin Babinsky

On 11/06/2015 11:06 AM, Petr Vobornik wrote:

On 11/06/2015 10:15 AM, Petr Spacek wrote:

On 6.11.2015 09:25, Martin Kosek wrote:

On 11/05/2015 07:02 PM, Petr Vobornik wrote:

On 11/02/2015 12:37 PM, Martin Kosek wrote:

On 11/02/2015 06:10 AM, Jan Cholasta wrote:

Hi,

On 22.10.2015 10:44, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5181


This should be handled by a separate object plugin:

$ ipa servercomponent-find master.ipa.test
---
6 server components matched
---
Component name: CA
Enabled: TRUE
Start order: 50

Component name: KDC
Enabled: TRUE
Start order: 10

Component name: KPASSWD
Enabled: TRUE
Start order: 20

Component name: MEMCACHE
Enabled: TRUE
Start order: 39

Component name: OTPD
Enabled: TRUE
Start order: 80

Component name: HTTP
Enabled: TRUE
Start order: 40

Number of entries returned 6


This will allow us to consolidate all the ad-hoc
component-related code
scattered throughout IPA (search for enable component,
enable/disable
component, ...) into IPA command calls.

I'm not opposed to showing a summary in server-show (although
we don't do
anything like this for any other hierarchical objects), but it
should be done
just for the users' sake, not for internal use (the ticket
suggests to use this
for topology visualisation).

BTW as far as the scalability of the current solution goes, you
should have a
list of all the *non*-optional components and display
everything else.


The API proposal should be in line with our future extensions of
the API. We
for example want to move "ipa-csreplica-manage"
set-renewal-master command to
API call. Or DNSSEC generation master. Or we may want to change
some other
flag/role of a master via this interface.

So we will need something like
$ ipa server-add-role ipa.example.com --role "ca-renewal-master"
or
$ ipa servercomponent-add-role ipa.example.com CA
--role=renewal-master


Depends on usage. If we want to internally unify manipulation with
configs for
component we can create low-level commands which won't be exposed
to CLI.

E.g. ipa servercomponent-find ipa.example.com
Component name: ADTRUST
Config: enabledService, startOrder 60



This is all what Web UI needs.


 From user perspective, for CLI, something different is better.
Martin used term
'role', lets go with that.

Idea 1:
$ ipa server-show ipa.example.com --roles
Server name: vm-073.idm.lab.eng.brq.redhat.com
   Managed suffix: dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com,
o=ipaca
   Min domain level: 0
   Max domain level: 1
   Role: dns-server, cs-server, ca-renewal-master, trust-controller

--all would imply --roles

I am thinking "Roles" could be printed out even in default listing.
It looks as
an important piece of information you want to know about your master.
I also
originally used that with servercomponent, you moved it to server
itself. It
makes also sense.

We will need a design for this servercomponent/roles anyway, to agree
on the
API with all stakeholders.


$ ipa server-add-role ipa.example.com --roles=ca-renewal-master


Just keep in mind that 'role' design requires yet another layer of
indirection
because there is no 1:1 mapping between services and roles. E.g.
'DNSSEC key
master' role consists of several services, as 'DNS server' role etc.

Also, we can get into trouble because role 'DNS server' in IPA 4.2 can
contain
different set of services than 'DNS server' in IPA 5.0 etc.

For these reasons I question necessity of 'role' abstraction. Is it
worth?



IMO yes. Current patch is better than nothing but roles are more
friendly, components are implementation detail.

Showing only CNs on components doesn't show all info. E.g.

ipa server-show `hostname`
   Server name: ipa.example.com
   Managed suffix: dc=example,dc=com, o=ipaca
   Min domain level: 0
   Max domain level: 1
   Optional components: CA, DNS, DNSKeySync, ADTRUST, EXTID, KRA

This doesn't show that the server is actually also a ca-renewal-master.
  What is the command I can use to solve: "show me what server is the
ca-renewal-master"?

In that case we would IMHO need to redesign the whole service to LDAP 
mapping to incorporate server roles in some sane and scalable way. I'm 
not sure if that fits in the 4.3 timeframe. If yes, the we should first 
start with first putting the plumbing in and then adding API calls on top.


It doesn't make much sense to push this patch first and then rework the 
whole thing.



Then what's the difference between ADTRUST and EXTID? One is smb, second
winbind but from user perspective it is the same thing - AD Trusts
controller.

Could there be DNS without DNSKeySync?



--
Martin^3 Babinsky

--
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


[Freeipa-devel] [PATCH] 0749 Package ipapython, ipalib, ipaplatform, ipatests for Python 3

2015-11-06 Thread Petr Viktorin
Hello,
The Python 3 port is not 100% done, but I think the time has come to
start packaging the py3 bits. This will make it easier to plug into CI.

The existing Python 2 packages should not change, except I've added
"freeipa-common" with files that aren't Python-specific.

The new packages follow Fedora's Python guidelines a bit better. The
main thing is the names: python3-ipalib, python3-ipatests,
python3-ipap11helper.
The pure-Python ones are built as noarch.


The Makefiles are reorganized a bit, but they don't support building for
both py versions at once -- you need to do `make` followed by `make
PYTHON=/usr/bin/python3`. (The latter currently only works in the
directories that are ported so far, though.)


-- 
Petr Viktorin
From 158ac463bb19def552616c430d81d6b5b472cadb Mon Sep 17 00:00:00 2001
From: Petr Viktorin 
Date: Tue, 3 Nov 2015 16:39:40 +0100
Subject: [PATCH] Package ipapython, ipalib, ipaplatform, ipatests for Python 3

Running make with PYTHON=/usr/bin/python3 will build/install the
bits for Python 3.

A separate setup.py is added for ipalib.

Python3 library RPMs have names according to Fedora guidelines (python3-*).
Provides are specified for all top-level Python modules.

Executable scripts in ipatests have symlinks Python version suffixes
as per Fedora guidelines. Suffix-less names point to the Python 2 versions.

Pure-Python files are packaged to noarch RPMs. The ipap11helper
module is split to its own RPM for this reason.

A new package, freeipa-common, is added for files from freeipa-python
usable by both Python versions: translations and configuration.
This package is required by both freeipa-python and python3-ipalib.
---
 .gitignore |   3 +
 Makefile   |   7 +-
 freeipa.spec.in| 209 +++--
 ipalib/Makefile|  23 
 ipalib/cli.py  |   1 +
 ipalib/setup.py.in |  73 
 ipapython/Makefile |  18 +--
 ipapython/ipap11helper/Makefile|  11 +-
 ipapython/py_default_encoding/Makefile |  21 ++--
 setup.py   |   2 -
 10 files changed, 327 insertions(+), 41 deletions(-)
 create mode 100644 ipalib/Makefile
 create mode 100644 ipalib/setup.py.in

diff --git a/.gitignore b/.gitignore
index fa35df85abd5b18522d2be17070c3d8aceb9bdc5..e63434b44b29fc25bf3da17e90bc0f75f5075bd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -67,6 +67,9 @@ freeipa2-dev-doc
 
 /ipatests/setup.py
 
+/ipalib/setup.py
+!/ipalib/Makefile
+
 /ipapython/setup.py
 /ipapython/version.py
 !/ipapython/Makefile
diff --git a/Makefile b/Makefile
index 3c81466d3728022c1d9cf5bb216990f14a59b7e5..44f9420992761d6a924f44c99db1f8fc068f33fb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,10 @@
 include VERSION
 
-SUBDIRS=asn1 daemons install ipapython ipa-client
+SUBDIRS=asn1 daemons install ipapython ipalib ipa-client
 CLIENTDIRS=ipapython ipa-client asn1
 
 PRJ_PREFIX=freeipa
+PRJ_PREFIX_PY3=python3-ipa
 
 RPMBUILD ?= $(PWD)/rpmbuild
 TARGET ?= master
@@ -135,6 +136,8 @@ version-update: release-update
 		> ipapython/setup.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipaplatform/setup.py.in \
 		> ipaplatform/setup.py
+	sed -e s/__VERSION__/$(IPA_VERSION)/ ipalib/setup.py.in \
+		> ipalib/setup.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipapython/version.py.in \
 		> ipapython/version.py
 	sed -e s/__VERSION__/$(IPA_VERSION)/ ipatests/setup.py.in \
@@ -232,6 +235,7 @@ rpms: rpmroot rpmdistdir version-update lint tarballs
 	cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
 	rpmbuild --define "_topdir $(RPMBUILD)" -ba freeipa.spec
 	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
+	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX_PY3)*-$(IPA_VERSION)-*.rpm dist/rpms/
 	cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
 	rm -rf $(RPMBUILD)
 
@@ -239,6 +243,7 @@ client-rpms: rpmroot rpmdistdir version-update lint tarballs
 	cp dist/sources/$(TARBALL) $(RPMBUILD)/SOURCES/.
 	rpmbuild --define "_topdir $(RPMBUILD)" --define "ONLY_CLIENT 1" -ba freeipa.spec
 	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX)-*-$(IPA_VERSION)-*.rpm dist/rpms/
+	cp $(RPMBUILD)/RPMS/*/$(PRJ_PREFIX_PY3)*-$(IPA_VERSION)-*.rpm dist/rpms/
 	cp $(RPMBUILD)/SRPMS/$(PRJ_PREFIX)-$(IPA_VERSION)-*.src.rpm dist/srpms/
 	rm -rf $(RPMBUILD)
 
diff --git a/freeipa.spec.in b/freeipa.spec.in
index 56c5a4d5ca2db9d299ed079be4ec4fed5747f07a..b813a17fde76fa452104a17ea86f96df38f9aff2 100644
--- a/freeipa.spec.in
+++ b/freeipa.spec.in
@@ -2,6 +2,12 @@
 # subpackages
 %{!?ONLY_CLIENT:%global ONLY_CLIENT 0}
 
+%if 0%{?rhel}
+%global with_python3 0
+%else
+%global with_python3 1
+%endif
+
 %global alt_name ipa
 %if 0%{?rhel}
 %global samba_version 4.0.5-1
@@ -307,6 +313,8 @@ This package provides command-line tools for IPA administrators.
 %package python
 Summary: Python libraries used by IPA
 Group: System Environment/Libraries
+
+Requires: 

Re: [Freeipa-devel] upstream under RHEL7 build failure

2015-11-06 Thread Martin Babinsky

On 11/06/2015 11:58 AM, Oleg Fayans wrote:

Hi all,

I am trying to build upstream packages under RHEL-7.2. All the
build-time dependencies were installed from RHEL repos except
python-gssapi, which was taken from fedora-22. The build fails with a
pile of lint errors: https://paste.fedoraproject.org/287566/
Could someone of you help me debug this?



I guess you don't have python-six package installed?

--
Martin^3 Babinsky

--
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


[Freeipa-devel] upstream under RHEL7 build failure

2015-11-06 Thread Oleg Fayans

Hi all,

I am trying to build upstream packages under RHEL-7.2. All the 
build-time dependencies were installed from RHEL repos except 
python-gssapi, which was taken from fedora-22. The build fails with a 
pile of lint errors: https://paste.fedoraproject.org/287566/

Could someone of you help me debug this?


--
Oleg Fayans
Quality Engineer
FreeIPA team
RedHat.

--
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


Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Petr Vobornik

On 11/06/2015 10:15 AM, Petr Spacek wrote:

On 6.11.2015 09:25, Martin Kosek wrote:

On 11/05/2015 07:02 PM, Petr Vobornik wrote:

On 11/02/2015 12:37 PM, Martin Kosek wrote:

On 11/02/2015 06:10 AM, Jan Cholasta wrote:

Hi,

On 22.10.2015 10:44, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5181


This should be handled by a separate object plugin:

$ ipa servercomponent-find master.ipa.test
---
6 server components matched
---
Component name: CA
Enabled: TRUE
Start order: 50

Component name: KDC
Enabled: TRUE
Start order: 10

Component name: KPASSWD
Enabled: TRUE
Start order: 20

Component name: MEMCACHE
Enabled: TRUE
Start order: 39

Component name: OTPD
Enabled: TRUE
Start order: 80

Component name: HTTP
Enabled: TRUE
Start order: 40

Number of entries returned 6


This will allow us to consolidate all the ad-hoc component-related code
scattered throughout IPA (search for enable component, enable/disable
component, ...) into IPA command calls.

I'm not opposed to showing a summary in server-show (although we don't do
anything like this for any other hierarchical objects), but it should be done
just for the users' sake, not for internal use (the ticket suggests to use this
for topology visualisation).

BTW as far as the scalability of the current solution goes, you should have a
list of all the *non*-optional components and display everything else.


The API proposal should be in line with our future extensions of the API. We
for example want to move "ipa-csreplica-manage" set-renewal-master command to
API call. Or DNSSEC generation master. Or we may want to change some other
flag/role of a master via this interface.

So we will need something like
$ ipa server-add-role ipa.example.com --role "ca-renewal-master"
or
$ ipa servercomponent-add-role ipa.example.com CA --role=renewal-master


Depends on usage. If we want to internally unify manipulation with configs for
component we can create low-level commands which won't be exposed to CLI.

E.g. ipa servercomponent-find ipa.example.com
Component name: ADTRUST
Config: enabledService, startOrder 60



This is all what Web UI needs.


 From user perspective, for CLI, something different is better. Martin used term
'role', lets go with that.

Idea 1:
$ ipa server-show ipa.example.com --roles
Server name: vm-073.idm.lab.eng.brq.redhat.com
   Managed suffix: dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com, o=ipaca
   Min domain level: 0
   Max domain level: 1
   Role: dns-server, cs-server, ca-renewal-master, trust-controller

--all would imply --roles

I am thinking "Roles" could be printed out even in default listing. It looks as
an important piece of information you want to know about your master. I also
originally used that with servercomponent, you moved it to server itself. It
makes also sense.

We will need a design for this servercomponent/roles anyway, to agree on the
API with all stakeholders.


$ ipa server-add-role ipa.example.com --roles=ca-renewal-master


Just keep in mind that 'role' design requires yet another layer of indirection
because there is no 1:1 mapping between services and roles. E.g. 'DNSSEC key
master' role consists of several services, as 'DNS server' role etc.

Also, we can get into trouble because role 'DNS server' in IPA 4.2 can contain
different set of services than 'DNS server' in IPA 5.0 etc.

For these reasons I question necessity of 'role' abstraction. Is it worth?



IMO yes. Current patch is better than nothing but roles are more 
friendly, components are implementation detail.


Showing only CNs on components doesn't show all info. E.g.

ipa server-show `hostname`
  Server name: ipa.example.com
  Managed suffix: dc=example,dc=com, o=ipaca
  Min domain level: 0
  Max domain level: 1
  Optional components: CA, DNS, DNSKeySync, ADTRUST, EXTID, KRA

This doesn't show that the server is actually also a ca-renewal-master. 
 What is the command I can use to solve: "show me what server is the 
ca-renewal-master"?


Then what's the difference between ADTRUST and EXTID? One is smb, second 
winbind but from user perspective it is the same thing - AD Trusts 
controller.


Could there be DNS without DNSKeySync?
--
Petr Vobornik

--
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


[Freeipa-devel] [PATCH 0094] Fix bogus error message in choice-type installer options

2015-11-06 Thread Martin Babinsky

https://fedorahosted.org/freeipa/ticket/5433

--
Martin^3 Babinsky
From 330cbc92b9785e68b5d5c72177fe45326c1baa86 Mon Sep 17 00:00:00 2001
From: Martin Babinsky 
Date: Fri, 6 Nov 2015 10:05:42 +0100
Subject: [PATCH] fix error reporting when installer option is supplied with
 invalid choice

https://fedorahosted.org/freeipa/ticket/5433
---
 ipapython/install/cli.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ipapython/install/cli.py b/ipapython/install/cli.py
index d2250e51650b9de1c85473399e3462f42bf8770b..e02445a8f6edf1335c813f4f30563d7edbd88fd0 100644
--- a/ipapython/install/cli.py
+++ b/ipapython/install/cli.py
@@ -218,7 +218,8 @@ class ConfigureTool(admintool.AdminTool):
 if value not in value_type:
 raise ValueError(
 "invalid choice {0} (choose from {1})".format(
-repr(value), ', '.join(repr(value_type
+repr(value), ', '.join(
+repr(v) for v in value_type)))
 return value
 else:
 parse = value_type
-- 
2.4.3

-- 
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

Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Petr Spacek
On 6.11.2015 09:25, Martin Kosek wrote:
> On 11/05/2015 07:02 PM, Petr Vobornik wrote:
>> > On 11/02/2015 12:37 PM, Martin Kosek wrote:
>>> >> On 11/02/2015 06:10 AM, Jan Cholasta wrote:
 >>> Hi,
 >>>
 >>> On 22.10.2015 10:44, Martin Babinsky wrote:
>  https://fedorahosted.org/freeipa/ticket/5181
 >>>
 >>> This should be handled by a separate object plugin:
 >>>
 >>> $ ipa servercomponent-find master.ipa.test
 >>> ---
 >>> 6 server components matched
 >>> ---
 >>>Component name: CA
 >>>Enabled: TRUE
 >>>Start order: 50
 >>>
 >>>Component name: KDC
 >>>Enabled: TRUE
 >>>Start order: 10
 >>>
 >>>Component name: KPASSWD
 >>>Enabled: TRUE
 >>>Start order: 20
 >>>
 >>>Component name: MEMCACHE
 >>>Enabled: TRUE
 >>>Start order: 39
 >>>
 >>>Component name: OTPD
 >>>Enabled: TRUE
 >>>Start order: 80
 >>>
 >>>Component name: HTTP
 >>>Enabled: TRUE
 >>>Start order: 40
 >>> 
 >>> Number of entries returned 6
 >>> 
 >>>
 >>> This will allow us to consolidate all the ad-hoc component-related code
 >>> scattered throughout IPA (search for enable component, enable/disable
 >>> component, ...) into IPA command calls.
 >>>
 >>> I'm not opposed to showing a summary in server-show (although we don't 
 >>> do
 >>> anything like this for any other hierarchical objects), but it should 
 >>> be done
 >>> just for the users' sake, not for internal use (the ticket suggests to 
 >>> use this
 >>> for topology visualisation).
 >>>
 >>> BTW as far as the scalability of the current solution goes, you should 
 >>> have a
 >>> list of all the *non*-optional components and display everything else.
>>> >>
>>> >> The API proposal should be in line with our future extensions of the 
>>> >> API. We
>>> >> for example want to move "ipa-csreplica-manage" set-renewal-master 
>>> >> command to
>>> >> API call. Or DNSSEC generation master. Or we may want to change some 
>>> >> other
>>> >> flag/role of a master via this interface.
>>> >>
>>> >> So we will need something like
>>> >> $ ipa server-add-role ipa.example.com --role "ca-renewal-master"
>>> >> or
>>> >> $ ipa servercomponent-add-role ipa.example.com CA --role=renewal-master
>> > 
>> > Depends on usage. If we want to internally unify manipulation with configs 
>> > for
>> > component we can create low-level commands which won't be exposed to CLI.
>> > 
>> > E.g. ipa servercomponent-find ipa.example.com
>> > Component name: ADTRUST
>> > Config: enabledService, startOrder 60
>> > 
>> > 
>> > 
>> > This is all what Web UI needs.
>> > 
>> > 
>> > From user perspective, for CLI, something different is better. Martin used 
>> > term
>> > 'role', lets go with that.
>> > 
>> > Idea 1:
>> > $ ipa server-show ipa.example.com --roles
>> > Server name: vm-073.idm.lab.eng.brq.redhat.com
>> >   Managed suffix: dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com, o=ipaca
>> >   Min domain level: 0
>> >   Max domain level: 1
>> >   Role: dns-server, cs-server, ca-renewal-master, trust-controller
>> > 
>> > --all would imply --roles
> I am thinking "Roles" could be printed out even in default listing. It looks 
> as
> an important piece of information you want to know about your master. I also
> originally used that with servercomponent, you moved it to server itself. It
> makes also sense.
> 
> We will need a design for this servercomponent/roles anyway, to agree on the
> API with all stakeholders.
> 
>> > $ ipa server-add-role ipa.example.com --roles=ca-renewal-master

Just keep in mind that 'role' design requires yet another layer of indirection
because there is no 1:1 mapping between services and roles. E.g. 'DNSSEC key
master' role consists of several services, as 'DNS server' role etc.

Also, we can get into trouble because role 'DNS server' in IPA 4.2 can contain
different set of services than 'DNS server' in IPA 5.0 etc.

For these reasons I question necessity of 'role' abstraction. Is it worth?

-- 
Petr^2 Spacek

-- 
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


Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Petr Spacek
On 6.11.2015 10:00, Martin Babinsky wrote:
> On 11/02/2015 12:56 PM, Martin Babinsky wrote:
>> On 10/30/2015 11:53 AM, Martin Babinsky wrote:
>>> On 10/26/2015 01:41 PM, Martin Babinsky wrote:
 On 10/22/2015 04:13 PM, Martin Basti wrote:
>
>
> On 22.10.2015 10:44, Martin Babinsky wrote:
>> https://fedorahosted.org/freeipa/ticket/5181
>>
>>
>>
>
> Thank you for the patch.
>
> 1)
> +OPTIONAL_SERVICES = {
> +'DNS',
> +'CA',
> +'KRA',
> +'ADTRUST',
> +'EXTID',
> +'DNSKeyExporter',
> +'DNSSEC',
> +'DNSKeySync',
> +}
>
> This did not scale well, maybe we should improve it to use some general
> solution for whole IPA to distinct mandratory and optionl service,
> but I
> do not know how (or if it is possible)
>
 Yes this does not scale well. After some playing around with relocating
 the SERVICE_LIST object in 'ipaserver/install/service.py' I found out
 that more refactoring would be needed to improve the layout and
 availability of LDAP service names to both server and client code. I
 have put the list of core services to ipalib/constants.py for now, and I
 suggest to open a separate ticket for more general solution.

> 2)
> +search_filter=('(&(objectclass=ipaConfigObject)'
> +   '(ipaConfigString=enabledService))')
>
> Common user cannot read ipaConfigString, so this will work only for
> admins, I do not see any limitations of access in code for other users.
>

 I think that you agreed with Petr^2 that this filter is OK. I left it as
 it is but I have rewritten it as a call to ldap.make_filter to improve
 readability and/or potential extensibility a bit.

> 3)
> +opt_components = [
> +r['cn'][0] for r in result if r['cn'][0] in
> OPTIONAL_SERVICES
> +]
> Probably instead of indexing, you may use result.single_value['cn']
>
> Martin^2

 Attaching updated patch.



>>> Self-NACK, I found a bug in the patch during work on topology management
>>> stuff.
>>>
>>
>> Attaching updated patch.
>>
>>
>>
> Bump for review.

I apologize for the delay, ACK!

-- 
Petr^2 Spacek

-- 
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


Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Martin Babinsky

On 11/02/2015 12:56 PM, Martin Babinsky wrote:

On 10/30/2015 11:53 AM, Martin Babinsky wrote:

On 10/26/2015 01:41 PM, Martin Babinsky wrote:

On 10/22/2015 04:13 PM, Martin Basti wrote:



On 22.10.2015 10:44, Martin Babinsky wrote:

https://fedorahosted.org/freeipa/ticket/5181





Thank you for the patch.

1)
+OPTIONAL_SERVICES = {
+'DNS',
+'CA',
+'KRA',
+'ADTRUST',
+'EXTID',
+'DNSKeyExporter',
+'DNSSEC',
+'DNSKeySync',
+}

This did not scale well, maybe we should improve it to use some general
solution for whole IPA to distinct mandratory and optionl service,
but I
do not know how (or if it is possible)


Yes this does not scale well. After some playing around with relocating
the SERVICE_LIST object in 'ipaserver/install/service.py' I found out
that more refactoring would be needed to improve the layout and
availability of LDAP service names to both server and client code. I
have put the list of core services to ipalib/constants.py for now, and I
suggest to open a separate ticket for more general solution.


2)
+search_filter=('(&(objectclass=ipaConfigObject)'
+   '(ipaConfigString=enabledService))')

Common user cannot read ipaConfigString, so this will work only for
admins, I do not see any limitations of access in code for other users.



I think that you agreed with Petr^2 that this filter is OK. I left it as
it is but I have rewritten it as a call to ldap.make_filter to improve
readability and/or potential extensibility a bit.


3)
+opt_components = [
+r['cn'][0] for r in result if r['cn'][0] in
OPTIONAL_SERVICES
+]
Probably instead of indexing, you may use result.single_value['cn']

Martin^2


Attaching updated patch.




Self-NACK, I found a bug in the patch during work on topology management
stuff.



Attaching updated patch.




Bump for review.

--
Martin^3 Babinsky

--
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


Re: [Freeipa-devel] [PATCH 0090] show optionally configured components in server-find/show command output

2015-11-06 Thread Martin Kosek
On 11/05/2015 07:02 PM, Petr Vobornik wrote:
> On 11/02/2015 12:37 PM, Martin Kosek wrote:
>> On 11/02/2015 06:10 AM, Jan Cholasta wrote:
>>> Hi,
>>>
>>> On 22.10.2015 10:44, Martin Babinsky wrote:
 https://fedorahosted.org/freeipa/ticket/5181
>>>
>>> This should be handled by a separate object plugin:
>>>
>>> $ ipa servercomponent-find master.ipa.test
>>> ---
>>> 6 server components matched
>>> ---
>>>Component name: CA
>>>Enabled: TRUE
>>>Start order: 50
>>>
>>>Component name: KDC
>>>Enabled: TRUE
>>>Start order: 10
>>>
>>>Component name: KPASSWD
>>>Enabled: TRUE
>>>Start order: 20
>>>
>>>Component name: MEMCACHE
>>>Enabled: TRUE
>>>Start order: 39
>>>
>>>Component name: OTPD
>>>Enabled: TRUE
>>>Start order: 80
>>>
>>>Component name: HTTP
>>>Enabled: TRUE
>>>Start order: 40
>>> 
>>> Number of entries returned 6
>>> 
>>>
>>> This will allow us to consolidate all the ad-hoc component-related code
>>> scattered throughout IPA (search for enable component, enable/disable
>>> component, ...) into IPA command calls.
>>>
>>> I'm not opposed to showing a summary in server-show (although we don't do
>>> anything like this for any other hierarchical objects), but it should be 
>>> done
>>> just for the users' sake, not for internal use (the ticket suggests to use 
>>> this
>>> for topology visualisation).
>>>
>>> BTW as far as the scalability of the current solution goes, you should have 
>>> a
>>> list of all the *non*-optional components and display everything else.
>>
>> The API proposal should be in line with our future extensions of the API. We
>> for example want to move "ipa-csreplica-manage" set-renewal-master command to
>> API call. Or DNSSEC generation master. Or we may want to change some other
>> flag/role of a master via this interface.
>>
>> So we will need something like
>> $ ipa server-add-role ipa.example.com --role "ca-renewal-master"
>> or
>> $ ipa servercomponent-add-role ipa.example.com CA --role=renewal-master
> 
> Depends on usage. If we want to internally unify manipulation with configs for
> component we can create low-level commands which won't be exposed to CLI.
> 
> E.g. ipa servercomponent-find ipa.example.com
> Component name: ADTRUST
> Config: enabledService, startOrder 60
> 
> 
> 
> This is all what Web UI needs.
> 
> 
> From user perspective, for CLI, something different is better. Martin used 
> term
> 'role', lets go with that.
> 
> Idea 1:
> $ ipa server-show ipa.example.com --roles
> Server name: vm-073.idm.lab.eng.brq.redhat.com
>   Managed suffix: dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com, o=ipaca
>   Min domain level: 0
>   Max domain level: 1
>   Role: dns-server, cs-server, ca-renewal-master, trust-controller
> 
> --all would imply --roles

I am thinking "Roles" could be printed out even in default listing. It looks as
an important piece of information you want to know about your master. I also
originally used that with servercomponent, you moved it to server itself. It
makes also sense.

We will need a design for this servercomponent/roles anyway, to agree on the
API with all stakeholders.

> $ ipa server-add-role ipa.example.com --roles=ca-renewal-master
> 
> This is not good because this add operation will also remove a role from
> different master which could be unexpected. I.e. set-renewal-master might be a
> separate command. Same would apply to DNSSec generation masters.

I am not sure if having a separate command for every role scale well, but I am
not that strong opposed.

> Idea 2:
> $ ipa serverrole-add ipa.example.com ca-renewal-master
> $ ipa serverrole-find ipa.example.com
> Role: dns-server
> Role: cs-server
> Role: ca-renewal-master
> Role: trust-controller
> 
> All variants alone are fine for Web UI.


-- 
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


Re: [Freeipa-devel] [PATCH] ca-less tests updated - POC

2015-11-06 Thread Jan Cholasta
Actually it might be better to keep them, but fix them to expect 
ipa-server-certinstall to success.


On 6.11.2015 08:47, Jan Cholasta wrote:

Hi Oleg,

I think you can just remove
TestCertinstall.test_{http,ds}_intermediate_ca, the certificates are
imported correctly in this case and I didn't see anything break.

Honza

On 5.11.2015 20:20, Oleg Fayans wrote:

Patch 0014 updated and passes lint

On 11/05/2015 03:41 PM, Oleg Fayans wrote:

Wait a bit, the patch has problems with pylint: it does not build :)
The updated version (without the setupmaster nonsense) is being tested
now.

On 11/05/2015 08:45 AM, Oleg Fayans wrote:

Hi Jan,

Could you take a look at these, whenever you are free?

On 10/30/2015 02:57 PM, Oleg Fayans wrote:

Hi,

The following patches contain updates to ca-less integration tests.
It's still a proof of concept: 2 tests still fail seemingly due to the
change in target system logic (marked as xfail with "ask jcholast
comment")

The test output looks like this:

$ ipa-run-tests test_integration/test_caless.py --pdb





test session starts
=





platform linux2 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.6.4
plugins: multihost, sourceorder
collected 88 items

test_integration/test_caless.py
..xx..sssss.ss.xx..ssxx.






 53

passed, 29 skipped, 6 xfailed in 5620.17 seconds
=

Numerous skips correspond to the tests related to ipa-replica-prepare
(unsupported under domain level 1)

















--
Jan Cholasta

--
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