[Freeipa-devel] OT - git help

2015-03-20 Thread Alan Evans
I have been working on a 3.3.3 install on CentOS that I've made some
changes to.  I have a patch showing the changes I've made to 3.3.3.  I
would like to submit them as a patch to freeipa (presumably for master) but
my git-fu is not strong.

How can I bring the patch forward to master?  Sure I could work through it
manually I suppose. Git should have all the intermediate steps to get from
3.3.3 - master so I figure there has to be a git way to do this.

Throughts?

Regards,
-Alan
-- 
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] ds-migrate feature enhancements

2014-12-04 Thread Alan Evans
Hello Martin,

I have spent some time looking into how to address
https://fedorahosted.org/freeipa/ticket/3709.  I thought I would look at
--setattr --addattr from user-add and others to see if I could reuse code
for --user-attr-default.  At least for parsing the commandline arguments
anyway.  It does not look like it would be easy to re-purpose the code in
_convert_2_dict() from ipalib/plugins/baseldap.py (without blatantly
copying it).  What are your thoughts about creating a Dict paramater type
in ipalib/parameters.py to to user for --setaddr --addattr --delattr and to
use for --user-attr-default?

Also I was looking at string.Template() vs string.Formatter().  I think
string.Template is probably sufficient.  But I don't follow PEPs so I don't
know if that's Python3 future proof or not.  Thoughts?
# Pseudocode
(attr, default) = args['userdefaultattr'][0].split('=',2)
entry_attrs[attr] = default.safe_substitute(entry_attrs.toDict())

In looking at ipalib/plugins/baseldap.py, I was wondering if It might make
sense to make migrate more in line with the --*attr paramaters.

Consider:
ipa migrate-ds --user-delattr ou

Instead of:
ipa-migrate-ds --user-ignore-attribute ou

Then we could also add user-{setattr,addattr,delattr,attrdefault} like:
ipa migrate-ds --user-attrdefault mail=$u...@example.com --user-setattr
cn=$givenname $sn --user-addattr description=Migrated $(date)
--user-delattr ou
Which would add a mail address if one wasn't present, replace the CN with
the first and last name, add a description attribute and get rid of the ou
attribute.

Another thought I had was about the behaivor of the search on the source
directory.  Currently one provides --{user,group}-continer and
--{user,group}-objectclass and the scope is statically defined in the
script.


--{user,group}-filter
--

What about adding --{user,group}-scope ONE|SUB?

My directory for example is like:

dn: uid=me,ou=ops,ou=people,dc=example,dc=com
dn: uid=joe,ou=eng,ou=people,dc=example,dc=com

So currently I have to use the --continue switch and change my
--user-container to get all of my users.  If the scope weren't limited to
ONELEVEL then I could get everyone in one pass.

ipa migrate-ds --user-container ou=People,dc=example,dc=com --user-scope SUB

Lastly I was thinking that --user-objectclass and --exclude-users could be
made more powerful with --user-filter

ipa migrate-ds --user-container ou=People,dc=example,dc=com
--user-objectclass posixAccount --user-filter '(!(loginShell=/bin/false))'
or we could fire all of sales --user-filter '(!(ou=Sales))'

Which gets concatenated internally in the search to
((objectClass=posixAccount)(!(loginShell=/bin/false)))

On Thu, Dec 4, 2014 at 4:59 AM, Martin Kosek mko...@redhat.com wrote:

 On 11/26/2014 11:52 AM, Martin Kosek wrote:
  On 11/24/2014 11:24 PM, Alan Evans wrote:
  I am in the midst of preparing for a migration from OpenLDAP to FreeIPA.
  ds-migrate wasn't going to fill all of my needs so I thought I would
 use it
  for most and then make up some LDIF's and massage them to do the last
 bit
  of migration.
 
  I have instead decided to extend ds-migrate and I think that my features
  might be of use to others so I would like to contribute them.
 
  Great idea! :-) IMO, enhancing FreeIPA migration capability and making
 it more
  even more pleasant experience for user users is a good goal.
 
  Before I get
  too for I wanted to get some input from the community.
 
  Here are MY original goals:
  * Migrate ssh public keys
The openssh-lpk schema is used in my tree so objectClass:
 ldapPublicKey
  attribute: sshPublicKey
  * Migrate disabled accounts as disabled
We 'disable' usere by setting their shadowExpire to a date in the past
  and setting their shell to /bin/false
 
  I realized that the ssh-public key problem is more generally an
 attribute
  mapping problem and dealing with disabled users could be more
 generalized
  too.
 
  Here are instead the new features I would provide.
 
  * Attribute mapping
Feature should check the new syntax exists and is the same as the old
  syntax (perhaps further check for compatible syntax)
--user-attribute-map=oldAttribute=newAttribute
--group-attribute-map=foo=bar
Should I drop user/group and just make it --attribute-map and apply
 it to
  both?
Should certain attributes be mapped by default, i.e.
  sshPublicKey=ipaSSHPubKey (this means we also need to ignore the
  objectClass ldapPublicKey by default)  Maybe make a separate switch
  --with-ssh-keys that automatically adds a map and an ignore?
 
  If the mapping sshPublicKey - ipaSSHPubKey is clear, I would do it by
 default
  and maybe add a switch to skip these advanced migrations. Just make sure
 the
  expected format matches (ipa requires all 3 pieces of the public key,
 not just
  the blob)
 
  I think it would be very useful to combine user attribute mapping with
 the
  ideas from
 
  https://fedorahosted.org/freeipa/ticket/3709
 
  i.e

[Freeipa-devel] ds-migrate feature enhancements

2014-11-24 Thread Alan Evans
I am in the midst of preparing for a migration from OpenLDAP to FreeIPA.
ds-migrate wasn't going to fill all of my needs so I thought I would use it
for most and then make up some LDIF's and massage them to do the last bit
of migration.

I have instead decided to extend ds-migrate and I think that my features
might be of use to others so I would like to contribute them.  Before I get
too for I wanted to get some input from the community.

Here are MY original goals:
* Migrate ssh public keys
  The openssh-lpk schema is used in my tree so objectClass: ldapPublicKey
attribute: sshPublicKey
* Migrate disabled accounts as disabled
  We 'disable' usere by setting their shadowExpire to a date in the past
and setting their shell to /bin/false

I realized that the ssh-public key problem is more generally an attribute
mapping problem and dealing with disabled users could be more generalized
too.

Here are instead the new features I would provide.

* Attribute mapping
  Feature should check the new syntax exists and is the same as the old
syntax (perhaps further check for compatible syntax)
  --user-attribute-map=oldAttribute=newAttribute
  --group-attribute-map=foo=bar
  Should I drop user/group and just make it --attribute-map and apply it to
both?
  Should certain attributes be mapped by default, i.e.
sshPublicKey=ipaSSHPubKey (this means we also need to ignore the
objectClass ldapPublicKey by default)  Maybe make a separate switch
--with-ssh-keys that automatically adds a map and an ignore?

* Handling disabled users
  1. How to identify disabled users?
a. shadowExpire  now()
--use-disable-shadow-expire
b. loginShell is one of configurable shells
--use-disable-login-shell
--disabled-shell=/bin/false --disabled-shell=/sbin/nologin (these
two would be the defaults)
c. nsAccountLocked (though that would be straight copied by the
migrator anyway
d. From Open DJ the attribute ds-pwp-account-disabled can be used to
identify disabled users
(are there others?)
  2.  What do do with disabled users (in my case migrate and disable)
a. Migrate them and don't touch nsAccountLocked
b. Migrate them and set nsAccountLocked = true
   --disable-users
c. Do not migrate them
   --skip-disabled-users
d. Which is the default?  Migrate and disable?  If so which are the
default methods for identifying them?  All methods?

So is there anything I'm missing?  Any suggestions on the switches? I'm not
entirely sure I like them the way they are.

I have code to cover about 60% of the above already.  The user-attr-map
feature is working and the --disabled-users and disabled-shells options are
working.

Regards,
-Alan
___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel