Browse files

Revised README file to reflect automatic setup and ant build

  • Loading branch information...
1 parent b0ecb50 commit 07a06bb78c040e45c42fb09b51f93e0f63b7ba30 Michael Meisinger committed Aug 17, 2010
Showing with 67 additions and 45 deletions.
  1. +67 −45 README.txt
@@ -1,14 +1,16 @@
+Ocean Observatories Initiative Cyberinfrastructure
LCAarch - OOI Release 1 LCA architecture prototype
-April 2010 - August 2010
+April 2010 - August 2010 (C) UCSD Regents
-This project provides a service framwork with auxilliary functions for running
+This project provides a service framework with auxilliary functions for running
architecturally complete versions of all the services of the OOI release 1
-system with their full architectural dependencies.
-In "short" a data distribution network based on pub-sub messaging with underlying
-infrastructure services (security, persistence) and provisioning.
+system with their full architectural dependencies in Python.
+Functionally it provides a data distribution network based on pub-sub messaging
+as well as instrument integration, with underlying infrastructure services
+(security, persistence) and provisioning.
The "core" part of LCAarch provides base classes and a framework for spawnable,
message communicating processes, for services with defined names, for
@@ -18,21 +20,58 @@ is an early implementation of the OOI Python Capability Container.
For more information, please see:
-LCAarch is compatible with Python 2.5 and higher, but not Python 3.x
-This project has several dependencies on libraries and packages, see below.
Get LCAarch with
git clone
+ cd lcaarch
+LCAarch is compatible with Python 2.5 and higher, but not Python 3.x
+This project has several dependencies on libraries and packages. Most of these
+dependencies are resolved automatically using the provided setup script.
+Step 1: Virtual env
+ Create a Python virtual environment using virtualenv. This ensures that all
+ libraries and dependencies are installed separately from the Python
+ system libraries.
+ mkvirtualenv lcaarch
+ workon lcaarch
+Step 2: Core libraries (you can skip this step)
+ Install some core libraries first. Sometimes the automatic installer
+ produces errors, if these libraries are not present beforehand.
+ easy_install twisted numpy
+Step 3: Run the setup script
+ python install
+This should download and install all the dependencies and will run for a while.
+Check the trace output that there are no substantial errors. You are now ready
+to run.
+Current dependencies include:
+ twisted, numpy, txamqp, msgpack-python, httplib2, pycassa, simplejson,
+ pydap, pydap.handlers.netcdf, pydap.responses.netcdf, pydap.handlers.nca
+NOTE: As the project evolves and new code is added, dependencies might change.
+Run the setup script once in a while and when you get errors
-(all subsequent steps assume start from lcaarch/ dir)
+(all subsequent steps assume you are in the lcaarch/ root dir)
Start empty CC ("Magnet" Python Capability Container) shell with:
twistd -n magnet -h
+ twistd -n magnet # to run with localhost
(to end a magnet container shell, press Ctrl-D Ctrl-C)
@@ -48,6 +87,9 @@ Alternatively (better) from UNIX shell executing a script:
twistd -n magnet -h -a nproducers=25 res/scripts/
Run trial test cases (recursively)
trial ion
@@ -69,45 +111,18 @@ Or in the CC shell:
-Install the dependencies: Magnet (see Magnet's Readme)
- Create a virtualenv for installing Magnet and its dependencies.
+Build and Packaging using Ant
-Twisted Framework
-:: easy_install twisted
+LCAarch provides ANT support (see
+To check that ant is installed properly, run
+:: ant
-:: easy_install txamqp
-carrot (use txamqp branch)
- git clone git://
- (cd carrot; git checkout -b txamqp origin/txamqp)
- (cd carrot; python install)
+To clean your working directories, run
+:: ant clean
-Magnet (NEED Magent 0.3.4 on master branch)
-Get the latest version of the repository, if you haven't already.
- git clone git:// # no ooi credential
- # OR
- git clone # need ooi credential
- (cd magnet; python install)
-Other Dependencies
- easy_install msgpack-python
- easy_install pydap
- easy_install pydap.handlers.netcdf
- easy_install pydap.responses.netcdf
- easy_install pydap.handlers.nca
- easy_install numpy
- easy_install httplib2
- easy_install -U --find-links pycassa
- easy_install simplejson
+To compile all code to see if there are Python compile errors anywhere:
+:: ant compile
@@ -151,24 +166,28 @@ Change log:
for package hierarchy. See res/logging/loglevels.cfg for standard entries.
Do not modify. Add file res/logging/loglevelslocal.cfg for local override.
Default logging level for all ion code: WARNING
- BaseProcess self members renamed to conform to PEP8
- Added process shutdown to BaseProcess
- Added container UNIX shell argument -a processes=<path to filename> used
by script, with a list of processes to startup in standard format
- Made Cassandra backend parameterizable with keyspace/colfamily and added
SuperColumn support.
- Modified the IStore interface to support a create_store factory method. This
method can yield and return a deferred. Modified and fixed IStore impls.
Changed delete to remove to be more compliant with standard collections.
- Added timeout to BaseProcess.rpc_send. Use with kwarg timeout=<secs>
- CC-Agent detects missing known containers and removes them from the list
- Enhanced CC-Agent operations and CC shell helpers
- Added sequence numbers for messages
- Added glue functions BaseProcess.reply_ok and reply_err and changes some
RPC style service operations.
- The system now looks for a local config file ionlocal.config and if exists,
overrides entries in ion.config.
@@ -177,6 +196,7 @@ Change log:
- Added BaseProcessClient and changed BaseServiceClient and all clients and
all test cases (again).
- Added container shell helpers under 'cc', such as cc.spawn('hello')
- Removed support for BaseProcess.send_message and reply_message. Always use
send, reply and rpc_send now.
@@ -198,10 +218,12 @@ Change log:
trace output as well.
- Changed BaseServiceClient and tests. Initializer arguments different.
- Using master branch of magnet now
- Based on entries in config files, service process modules are sought and
loaded in order to collect the service process declarations. This enables
a registration of services with versions and dependencies on startup
- Refactored the BaseProcess class.
- You can now do RPC directly from the process, via self.rpc_send without

0 comments on commit 07a06bb

Please sign in to comment.