How do I develop on Ipsilon?

Getting the sources

To get the sources, do a git checkout of one of the following repositories:

Anonymous: https://pagure.io/ipsilon.git
Authenticated: ssh://git@pagure.io/ipsilon.git

Requirements

To work on Ipsilon, you need to have some packages installed. To get everything you need to run all included test cases, you can run the following command on a Fedora system:

yum install make pylint python-pep8 python-openid python-openid-teams \
    python-openid-cla python-cherrypy m2crypto lasso-python \
    python-sqlalchemy python-ldap python-pam python-fedora \
    freeipa-python httpd mod_auth_mellon postgresql-server \
    openssl mod_wsgi python-jinja2 python-psycopg2 sssd \
    libsss_simpleifp openldap-servers mod_auth_gssapi krb5-server \
    socket_wrapper nss_wrapper python-requests-kerberos python-lesscpy\
    krb5-workstation python-sssdconfig mod_ssl python-jwcrypto \
    mod_auth_openidc sqlite3

Note that except for installing the packages, you will not need root access to run the tests (so if you add any new tests, make sure they run in-tree, in the testdir directory!).

Running the tests

To run the tests, change into your Ipsilon directory, and execute:

make

If it ends with the message "All tests passed", all tests have passed.

Notes on running the tests

If your test seems to hang at "Installing KDC server", that is likely due to low entropy (most likely you're running on a virtual machine). During this step, the machine needs sufficient random entropy to generate keys used during testing. To speed this up, on Fedora, you can run the following commands to install and run haveged:

yum install haveged
systemctl enable haveged.service
systemctl start haveged.service

Getting help

If you need any help with using or developing Ipsilon, you can either:

  • Pop by on IRC: #ipsilon on Freenode, or
  • Send an email to the mailing list at https://lists.fedorahosted.org/admin/lists/ipsilon.lists.fedorahosted.org/

Patch requirements

All submitted patches must pass any non-optional distro testrun. This currently includes current RHEL/CentOS and Fedora releases.

As part of the testrun, the code will by analyzed with pep8 and pylint, and if either tool reports issues, the test run fails, thus these issues must be corrected before they can be included.

All bugfixes where this is reasonable should have regression tests added.

Any new functionality is required to have test cases.

Submitting patches

Ipsilon is using Pagure Pull Requests for patch submission/tracking.

To begin, head over to https://pagure.io/ipsilon and log in. Then click the Fork button on the right of the project menu, and push your code to a new branch in your fork.

After that, open the branch page on your fork, and click Request Pull, enter a title, hit submit, and your patch is on its way for review!

You will likely get questions for improvements and such.

Gatekeepers: push

For the gatekeepers: please make sure to add a Reviewed-by: "reviewer name reviewermail@domain.com" to the git commit, and then push to upstream master (forward only, no merge commits please).

Other documentation

Release wrangler, making a release: https://fedorahosted.org/ipsilon/wiki/ReleasesProcess