[OPEN-ILS-DEV] OpenSRF 101

Bill Erickson erickson at esilibrary.com
Fri Nov 5 16:58:55 EDT 2010


Committed to trunk: http://svn.open-ils.org/trac/OpenSRF/changeset/2055

-b

On Fri, Nov 5, 2010 at 11:40 AM, Michael J. Giarlo <
leftwing at alumni.rutgers.edu> wrote:

> Updated patch looks good.  Much obliged, Bill!
>
> -Mike
>
>
>
> On Fri, Nov 5, 2010 at 11:24, Bill Erickson <erickson at esilibrary.com>
> wrote:
> > Thanks for the patches, Michael.
> > I've applied the opensrf-py.patch without the path mangling, which should
> be
> > handled with the next patch...
> > I created a modified osrf_ctl-sh.patch to take a couple of additional
> steps:
> > 1. copy opensrf.py into the BIN dir during install if python is enabled.
> > 2. updated osrf_ctl.sh to avoid attempts at stopping/starting python
> > services when python is not enabled for opensrf.
> > Eyes appreciated on the patch.  Not being 100% familiar with the autoconf
> > bits, it's possible both #1 and #2 could be implemented better.
> > Patch:
> http://dev198.esilibrary.com/~berick/patches/osrf_python_control.patch.txt<http://dev198.esilibrary.com/%7Eberick/patches/osrf_python_control.patch.txt>
> > Thanks
> > -b
> > On Fri, Nov 5, 2010 at 12:56 AM, Michael J. Giarlo
> > <leftwing at alumni.rutgers.edu> wrote:
> >>
> >> Patch w/ DCO tarball attached to this email.  Apologies for newb
> >> mistakes -- let me know if I should make any changes.  Patch includes
> >> two diffs in opensrf.py, and a bunch of stuff in osrf_ctrl.sh.in to
> >> enable python services -- though perhaps these changes should live in
> >> a Makefile and should be dependent on the --enable-python option.
> >>
> >> -Mike
> >>
> >>
> >>
> >> On Thu, Nov 4, 2010 at 08:46, Bill Erickson <erickson at esilibrary.com>
> >> wrote:
> >> >
> >> > Hi Michael,
> >> > If you want to send your diffs as a patch file (with DCO [1]), I'll
> >> > merge
> >> > them into OpenSRF trunk in preparation for the 2.0 release.
> >> >
> >> > -b
> >> > [1] http://svn.open-ils.org/trac/ILS/browser/trunk/DCO-1.1.txt
> >> >
> >> > On Sat, Oct 30, 2010 at 6:23 PM, Michael J. Giarlo
> >> > <leftwing at alumni.rutgers.edu> wrote:
> >> >>
> >> >> Thanks a bunch, Dan; my test Python service is now running.  Thanks
> >> >> also to Jeff, who replied with much the same suggestions on my gist.
> >> >>
> >> >> Some notes below.
> >> >>
> >> >> On Sat, Oct 30, 2010 at 03:59, Dan Scott <dan at coffeecode.net> wrote:
> >> >> >
> >> >> > First up: your config settings look pretty good to me. Bravo! One
> >> >> > thing
> >> >> > to point out, though, is that the Python service needs to be
> >> >> > implemented
> >> >> > as a module available from sys.path, and the name of the module is
> >> >> > what
> >> >> > you need to specify as the content of the <implementation> element
> in
> >> >> > the application config section. So I copied osrf_reverse.py to
> >> >> > /usr/lib/python2.6/site-packages/. and changed
> >> >> > <implementation>osrf.test</implementation> to
> >> >> > <implementation>osrf_reverse</implementation>
> >> >>
> >> >> Aha, that makes sense.  What I did:
> >> >>
> >> >>  * Added an /opensrf/lib/python directory
> >> >>  * Symlinked my osrf_test.py from /opensrf/lib/python into my
> >> >> workspace, so I can continue coding in my usual place
> >> >>  * Pulled opensrf.py from the source into /opensrf/bin
> >> >>  * Tweaked opensrf.py's default path by adding:
> >> >>    sys.path.append(os.path.join(os.path.dirname(__file__), "lib",
> >> >> "python"))
> >> >>
> >> >> > Second: to start the Python service, you don't run it directly;
> >> >> > instead,
> >> >> > you use the Python controller script to run it (similar to how
> >> >> > osrf_ctl.sh invokes opensrf-perl.pl to start the Perl services).
> This
> >> >> > controller script can be found in src/python/opensrf.py - we don't
> >> >> > install it into /openils/bin/ yet because nobody was using Python
> in
> >> >> > OpenSRF yet - so let's give it a shot with the following (using
> "-l"
> >> >> > assuming that we're pointing to the "<localhost>" set of services)
> as
> >> >> > the opensrf user:
> >> >>
> >> >> Great.  I also tweaked osrf_ctl.sh to hook into opensrf.py.
> >> >>
> >> >> Then I noticed some odd behavior re what's returned via
> >> >> osrf.set.get('apps').  One key returned in the dict is "#comments",
> >> >> which does not contain the 'language' key, so a KeyError exception is
> >> >> raised.  Fixed that with the following diff in opensrf.py:
> >> >>
> >> >> 114c112
> >> >> <         if isinstance(svc, dict) and 'language' in svc and
> >> >> svc['language'] == 'python':
> >> >> ---
> >> >> >         if isinstance(svc, dict) and svc['language'] == 'python':
> >> >>
> >> >>
> >> >> > ... this is a painful Python DNS issue that is fortunately nicely
> >> >> > documented in the OpenSRF README - see "dnsmasq".
> >> >>
> >> >> I did indeed run into this, and the stuff in the README worked
> >> >> brilliantly.  Huzzah for good documentation!
> >> >>
> >> >> > YAY! Looks like an off-by-one error on the "n" but
> >> >> > otherwise that's what we want.
> >> >>
> >> >> Yep.  Simplified my reverse_text method to a one liner:
> >> >>
> >> >>    request.respond(message[::-1])
> >> >>
> >> >> No more off-by-one.
> >> >>
> >> >> > However, given an actual user of this
> >> >> > code, I'll be happy to put some energy into refining the packaging
> to
> >> >> > (for example) get opensrf.py installed if people choose
> >> >> > --enable-python,
> >> >> > provide some more examples / test cases, put together some docs,
> etc.
> >> >>
> >> >> It's early days yet, but I can see the potential in using OpenSRF for
> >> >> what we're about to start prototyping at Penn State.  If so, we're
> >> >> pretty gung ho about Python, so we're likely to cross paths again,
> >> >> i.e., I think we can help you help us.
> >> >>
> >> >> Thanks again, Dan & Jeff!
> >> >>
> >> >> -Mike
> >> >>
> >> >> P.S. Here are the osrf_ctl.sh diffs, trivial though they are:
> >> >>
> >> >> 51,53d50
> >> >> <     start_python
> >> >> <     stop_python
> >> >> <     restart_python
> >> >> 159,179d155
> >> >> < start_python() {
> >> >> <     echo "Starting OpenSRF Python";
> >> >> <     OPT_LOCAL=""
> >> >> <     if [ "$OSRF_HOSTNAME" = "localhost" ]; then
> >> >> <       OPT_LOCAL="-l"
> >> >> <     fi
> >> >> <     opensrf.py -d -p $OPT_PID_DIR -f $OPT_CONFIG -a start_all
> >> >> $OPT_LOCAL
> >> >> <     return 0;
> >> >> < }
> >> >> <
> >> >> < stop_python() {
> >> >> <     echo "Stopping OpenSRF Python";
> >> >> <     OPT_LOCAL=""
> >> >> <     if [ "$OSRF_HOSTNAME" = "localhost" ]; then
> >> >> <       OPT_LOCAL="-l"
> >> >> <     fi
> >> >> <     opensrf.py -p $OPT_PID_DIR -f $OPT_CONFIG -a stop_all
> $OPT_LOCAL
> >> >> <     sleep 1;
> >> >> <     return 0;
> >> >> < }
> >> >> <
> >> >> 223,225d198
> >> >> <       "start_python") start_python;;
> >> >> <       "stop_python") stop_python;;
> >> >> <       "restart_python") stop_python; start_python;;
> >> >> 229,234c202,207
> >> >> <       "start_osrf") start_perl; start_c; start_python;;
> >> >> <       "stop_osrf") stop_perl; stop_c; start_python;;
> >> >> <       "restart_osrf") stop_perl; stop_c; stop_python; start_perl;
> >> >> start_c; start_python;;
> >> >> <       "stop_all") stop_c; stop_perl; stop_python; stop_router;;
> >> >> <       "start_all") start_router; start_perl; start_c;
> start_python;;
> >> >> <       "restart_all") stop_c; stop_perl; stop_python; stop_router;
> >> >> start_router; start_perl; start_c; start_python;;
> >> >> ---
> >> >> >       "start_osrf") start_perl; start_c;;
> >> >> >       "stop_osrf") stop_perl; stop_c;;
> >> >> >       "restart_osrf") stop_perl; stop_c; start_perl; start_c;;
> >> >> >       "stop_all") stop_c; stop_perl; stop_router;;
> >> >> >       "start_all") start_router; start_perl; start_c;;
> >> >> >       "restart_all") stop_c; stop_perl; stop_router; start_router;
> >> >> > start_perl; start_c;;
> >> >
> >> >
> >> >
> >> > --
> >> > Bill Erickson
> >> > | VP, Software Development & Integration
> >> > | Equinox Software, Inc. / Your Library's Guide to Open Source
> >> > | phone: 877-OPEN-ILS (673-6457)
> >> > | email: erickson at esilibrary.com
> >> > | web: http://esilibrary.com
> >> >
> >
> >
> >
> > --
> > Bill Erickson
> > | VP, Software Development & Integration
> > | Equinox Software, Inc. / Your Library's Guide to Open Source
> > | phone: 877-OPEN-ILS (673-6457)
> > | email: erickson at esilibrary.com
> > | web: http://esilibrary.com
> >
>



-- 
Bill Erickson
| VP, Software Development & Integration
| Equinox Software, Inc. / Your Library's Guide to Open Source
| phone: 877-OPEN-ILS (673-6457)
| email: erickson at esilibrary.com
| web: http://esilibrary.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://libmail.georgialibraries.org/pipermail/open-ils-dev/attachments/20101105/60f9909c/attachment.htm 


More information about the Open-ils-dev mailing list