Had a good presentation on tito this morning at FUDCon:Blacksburg. Pretty good turnout. You can get the slides here: tito slides
Category Archives: python
Candlepin 0.5.5 released

It’s that time again, another release of Candlepin and associated projects available for your enjoyment. With this release we have subscription-manager in Fedora as well as a debut build of Thumbslug.
For more information on Candlepin, please visit: http://candlepinproject.org/
Features & Enhancements
subscription-manager
- added support for host registration and guest association when host can not register itself
- virt-who work to handle ESX guests
- subscription-manager available in fedora
candlepin
- build modified to use the tito hotness instead of bunch of disjoint bash scripts
- disable manifest rules import
- added support for host registration and guest association when host can not register itself
thumbslug
- added appropriate init scripts to run as a service
- uses Candlepin CRL
- thumbslug talks to akamai
- created puppet module for katello
Bugs fixed
subscription-manager
| 705883 | Fix error dialog modal issues. |
| 719743 | Improved text output for successful pool subscription |
| 740788 | Getting error with quantity subscribe using subscription-assistance page. |
| 746259 | Don’t allow the user to pass in an empty string as an activation key |
| 746732 | Only use fallback locales for dates we need to parse |
| 749332 | Normalize the error messages for not being registered |
| 749636 | Client should not support users entering activation keys and existing consumer ids |
| 752572 | add interval logging statements back in on rhsmcertd startup |
| 753093 | The available subscriptions count does not show correctly in Subscription Manager GUI |
| 754821 | Default org of “Unknown” was not marked for gettext |
| 755031 | Unregister before attempting to run a second registration |
| 755035 | Migration script should work on RHEL 5.7 and up. |
| 755130 | add extra whitespace to classic warning |
| 755541 | Enhanced the message in the katello plugin to debug when the backend system does not support environments. |
| 756173 | Unexpected behavior change in subscription-manager unregister |
| 756507 | do not use output from “getlocale” as input for “setlocale” |
| 758471 | install-num-migrate-to-rhsm threw traceback when no instnum was found. |
| 759199 | rhsmcertd is logging the wrong value for certFrequency |
candlepin
| 753093 | The Available Subscriptions count do not show correctly in Subscription Manager GUI |
| 754841 | Implement DELETE /pools/id. |
| 754843 | Fix legacy virt bonus pools missing pool_derived. |
| 755677 | Activation Keys should not check quantity on unlimited pools |
| 756628 | Translate missing rule errors. |
| 758462 | ensure job detail isn’t null, skip it. |
thumbslug
| 759607 | update url for subscriptions handler |
Download & Setup
Make sure you read over the Candlepin Setup Guide, which is located at https://fedorahosted.org/candlepin/wiki/Setup.
As well as the Headpin Install Guide which can be found at https://fedorahosted.org/candlepin/wiki/headpin/Install
Just give me the bits already! You can get the various bits at the urls below.
Candlepin:
http://repos.fedorapeople.org/repos/candlepin/candlepin/
Thumbslug:
http://repos.fedorapeople.org/repos/candlepin/thumbslug/
Headpin:
http://repos.fedorapeople.org/repos/katello
Subscription Manager:
http://repos.fedorapeople.org/repos/candlepin/subscription-manager/
Candlepin 0.4.16 released.
Another sprint gone by and another release of Candlepin for your enjoyment. Candlepin 0.4.16 is ready. You can get the bits at:
http://repos.fedorapeople.org/repos/candlepin/candlepin/
Make sure you read over the Setup Guide, which is located at
https://fedorahosted.org/candlepin/wiki/Setup
For more information on Candlepin, please visit our project page.
Features & Enhancements
client
- A number of GUI changes
- Center the machine type column header
- Move quantity column to the end
- Center the Arch column header
- Center tree view table properties
- Add ‘* Click to Adjust Quantity’ label to places allowing editable subscription quantity
- New icons for red/green
- Add virt_only attribute to subscription detail pane
- Display subscription assistant’s subscriptions as a tree
- Double click or button press (enter, return, space) on row will expand/collapse row
- Update to All Available Subscriptions tab to put stacked subscriptions under parent node
- Moved multi-entitlement column (*) next to the quantity column
- Made the contract selector a little wider so all columns were visible (no manual resize)
- Initial work done for the healing feature
- Changes to rhsmcertd to support healing frequency (part I)
- Add autoheal option to certmgr.py
- Only autoheal when required
- Use server-side consumer autoheal flag
- Misc items
- Update the strings and the remote server location
- Make “make stylish” run all the checks, make whitespace “pop”
- Update translations
- managerlib was expecting a single ent_cert, but we return a list
- Add a “refresh” method to cert_sorter
- Add a require_connection callback to commands
server
- upgraded to RESTEasy 2.2.1GA
- export virt entitlements to non-candlepin consumers
- refactored pinsetter to work in clustering mode
- add new api to query jobs by owner, principal, consumer uuid
Bugs fixed
| 707641 | CLI auto-subscribe tries to re-use basic auth credentials |
| 712047 | yum prints non-error messages when running in quiet mode |
| 718052 | Remove owner from consumer resource return codes. Only use the term org. |
| 730020 | Change the help text to show that config can list or set changes |
| 731577 | API to query jobs by owner, principal, consumer uuid. |
| 731996 | SQL Error when using REST query for events |
| 732538 | Disallow the relationship between a ‘person’ pool and an activation key |
| 734174 | Add missing produces annotations for role resource. |
| 734880 | Handle bundled certs in the installed produict status. |
| 734606 | ImportFileExtractor now creates cert/key files based on serial number of the cert |
| 735087 | If quartz is in clustered mode, we shouldn’t schedule any jobs. |
| 735226 | Importing should fail without a valid key and cert |
| 735338 | Subscription Manager CLI tool does not allow unsubscribe when not registered. |
| 735695 | add support for multiple config “–remove” options via cli |
| 736166 | move certs from subscription-manager to python-rhsm |
| 736784 | config –remove add config property to rhsm.conf if it doesn’t exist. |
| 737841 | Handle dates beyond 2038 on 32-bit systems. |
Candlepin 0.4.11 released
Candlepin 0.4.11 has been released. You can get the bits at:
http://repos.fedorapeople.org/repos/candlepin/candlepin/
Make sure you read over the Setup Guide, which is located at
https://fedorahosted.org/candlepin/wiki/Setup
For more information on Candlepin, please visit our project page.
Features & Enhancements
client
- group subscriptions based on stacking attribute in the following screens:
- subscriptions page
- compliance assistant
- view available subscription page
- the cli and gui now denote the state of the subscription: Subscribed, Partially Subscribed, Expired or Not Subscribed.
- Nag messages now denote the ‘Partially Subscribed’ state.
- registration with multiple activation keys now supported
list --availablenow shows if a subscription is multi-entitle capable- GUI shows an asterisk to denote a subscription is multi-entitle capable
- config command added to cli enabling editing of the configuration values
- client tries to optionally heal the system to keep it properly subscribed.
server
- the list of consumer’s installed product IDs are now stored
- the candlepin job status stable now stores the consumer uuid for async bind.
- configuration added to disable batch jobs on a particular node
- Moved the translations to fedora.zanata.org
Bugs fixed
| 729780 | non-existent secure objects throw a 404 instead of a 403. |
| 708058 | Server 500 error thrown when user auto-subscribes and has no entitlements |
| 728622 | Inconsistent enable config entries |
| 728624 | Activation keys are successfully being created with invalid chars |
| 728636 | Duplicate activation key error is hard to decipher |
| 729125 | Adding pools to an activation key should fail when quantity totalQuantity for a multi-entitlement pool |
| 729070 | Adding pools to an activation key should be blocked when specifying a quantity>1 for a non-multi-entitlement pool |
| 728721 | NullPointerException thrown when registering with an activation key bound to a pool that requires_consumer_type person. |
| 729066 | remove logging statement to avoid filling up logs. |
tig + mutt = commit review
I spend some of my time reviewing team members commits. Typically I’d use the RSS feed from Google Reader, but it doesn’t have the actual diff to comment on.
Most of the time I use tig to view
the commits. And instinctively I’d want to email the author with my comments, so here’s how to do that. I’m sure there are easier commands but this is what worked for me, your experience may vary.
First thing I did was create a git alias which is useful by itself. It outputs the commit to a temp file, then gets the title and the author’s email address from the same commit passing that to mutt.
[alias]
...
prepmail = !sh -c 'git show $1 > /tmp/commit && mutt -s \"`git show --pretty=format:\"%s\" $1 | head -n 1`\" -i /tmp/commit -- \"`git show --pretty=format:\"%ae\" $1 | head -n 1`\"' -
Now I want to be able to press a key in tig at the diff screen to reply to the author’s commit.
Simply bind a key, in my case I bound s in the diff view to call git prepmail with the commit’s SHA1.
In your $HOME/.tigrc add the following line. Checkout the tigrc man page for more information.
bind diff s !git prepmail %(commit)
Now in the diff view press ‘s’ and tig will launch mutt with the appropriate information.
The email shows up first:
Followed by the email’s subject, notice it matches the commit’s message.

And finally, the diff as an email body allowing you to comment on the changes
to the author.

So a simple git alias in $HOME/.gitconfig, a key binding for $HOME/.tigrc, and you can now review commits using tig. Enjoy!
sm-photo-tool release – 1.20
Version 1.20 of sm-photo-tool is ready to go. You can download it from github: http://github.com/jmrodri/sm-photo-tool/downloads.
The following are new configuration options:
- square thumbs
- hide owner
- world searchable
- smug searchable
- sort method
- max size option added to create
Bugs fixed:
- If filename ends with +, append instead of overwriting log file
- prompt for password if not in config file
- invalid login no longer throws a stack trace
Thanks got Lloyd Cha for contributing the fixes for this release.
can I have a do over?
The next webapp I write, I think I’m going with some of the new hotness: NoSQL datastore, RESTful API, and Ruby. On a recent project I chose to use a RESTful API which I really like, but it definitely changes how you think of things coming from the XML-RPC way of doing APIs, but I still like its simplicity.
Unfortunately, I went with Java as the implementation instead of something like python or Ruby, and looking back I don’t know why I did that. I should know by now that python and Ruby are much easier to work with than Java has proven to. Hell even the build environment is a pain: ant – write xml build file from scratch, maven – reminds me of make with lot’s of pom.xml files, or buildr – ruby based maven replacement, annoys all Java people. If I had a do over on this I’d choose Ruby as the implementation language.
Since we’re using Java and needed a database we went with Hibernate. If I had to redo this decision, I most certainly would’ve gone with a NoSQL datastore like MongoDB or CouchDB, this way I could avoid the annoying mapping of domain model to relational tables which is highly annoying.
So if you’re planning a new webapp avoid the boring, traditional webapp design of using a relational database with ORM and compiled languages
To C or Ruby that is the question :)
I’m trying to decide whether to pick up C again (as it’s been almost 13 years since I’ve done it) or Ruby. I’ve spent the last 13 years in the Java world, as of late I’ve been working with python as much as humanly possible. Ruby keeps me in the web side of things, but C would open up a bunch of Linux opportunities which I find interesting. I know one of my friends would say neither go for Erlang
</thinking>
sm-photo-tool bug fix release – 1.19
sm-photo-tool had a problem where it would no longer upload pictures to your smugmug.com account, a bug of this magnitude pretty much renders a photo uploader useless
I fixed the upload issue and at the same time switched it from using a HTTP POST with multipart encoded data to HTTP PUT. Uploads are now FASTER!
You can download version 1.19 here: http://github.com/jmrodri/sm-photo-tool/downloads
Evil Robot Conference (no robots allowed)
On Saturday, I attended the Evil Robot Conference held at Red Hat HQ.
I got there a bit late, but I caught the tail end of Clinton Ebadi’s talk on “UnCommon Web: A Common Lisp Tale of Continuations, Multimethods,
Metaclasses, and Web Applications”. While Lisp can be hard to understand, what you can do with it from a web programming perspective made Java webapps look quite lame considering the amount of code you have to write to make them do anything.
Had lunch at El Cerro with Kevin Smith, from Hypothetical Labs, and a few other folks attending the conference. A good time was had by all, and the salsa was quite spicy but oh so good today
After lunch, I sat through Dan DeMaggio’s “Anti-databases (NoSQL): Where they came from and where they’re going”. I learned a lot of alternatives to the old school single database setup. There’s a lot of cool stuff out there for this such as redis, Cassandra, couchdb, BigTable.
Dan’s talk was followed by Kevin’s “Intro to Erlang” which was most excellent as well. Kevin seemed very comfortable talking and definitely knows his stuff. Great job!
Last but not least, I got to hear what BRTFS was from Josef Bacik. Very cool stuff, most of the time I forget how much cool stuff goes into OS development compared to the webapps I do for a living.
All in all, it was a great day long conference. I hope we can make it at least a yearly event.
PS. Sorry I missed your talk Max
and thanks for the donuts.




