The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ocssvn.pl - keep OCS computer data versioned in Subversion.

SYNOPSIS

ocssvn.pl --svn=WCPATH --ocsurl=URL [--checksum=NUM] [--all] [--dont] [--verbose]

DESCRIPTION

Use this script to keep the information from a OCS server (http://www.ocsinventory-ng.org/) versioned in a Subversion repository.

The information about each computer in OCS is kept in a text file in JSON format (http://json.org/), which is a structured and readable format.

First you need to create a dedicated Subversion repository to keep OCS information. Also, you need to create a trunk and a tags directory at the root of the repository. You can do this with these commands:

    $ svnadmin create /path/to/ocssvnrepo
    $ svn mkdir -m'Create standard root directories' file:///path/to/ocssvnrepo/{trunk,branches,tags}

Then, checkout the trunk directory creating a working copy. The working copy can be in the same computer as the repository or in a remote machine. You need to adjust the URL accordingly.

    $ svn checkout file:///path/to/ocssvnrepo/trunk /path/to/ocssvn

Now you can run the script. The two required options are the path to the Subversion working copy that you just created (--svn) and the URL to the OCS server.

    $ ocssvn.pl --svn=/path/to/ocssvn --ocsurl=http://ocs.domain.com/

On its first run, the script will fetch information about all computers registered in OCS and create a file called name.js in the working copy. The name part is taken from the NAME of the computer as fetched from its META information. When all computers are fetched and their files created the script runs a svn add for each file and a svn commit to commit the changed working copy to the repository. Then it creates a tag by copying trunk to a directory which name conforms to tags/YYYYMMDDHHMMSS. The tag name is the time when it was created.

On subsequent runs, the script will first fetch the META information from all computers in OCS and then fetch the complete information only of the computers which have been inventoried since the last tag was created. After doing that it does the commit and a new tag is created. This was you have a new tag for each run, which allows you to have complete versioning of OCS information.

The script fetches the information via OCS's SOAP API, using the OCS::Client module. It asks for the login credentials on interactive calls. If you want to invoke it via cron, you should set the credentials before calling it by setting the environment variables ocsuser and ocspass.

The computer information is pruned before being saved in the JSON file by the OCS::Client::prune routine.

OPTIONS

--svn=WCPATH

This required option specifies the path to the Subversion working copy where the computer files are kept.

--ocsurl=URL

This required option specifies the OCS server URL.

--checksum=NUM

This option specifies the CHECKSUM parameter that will be passed to OCS::Client::get_computers_V1, in order to tell what information is requested from the computers. Its default has the following bits enabled:

    OCS::Client::BIOS
    OCS::Client::HARDWARE
    OCS::Client::LOGICAL_DRIVES
    OCS::Client::MEMORY_SLOTS
    OCS::Client::MODEMS
    OCS::Client::NETWORK_ADAPTERS
    OCS::Client::REGISTRY
    OCS::Client::SOFTWARE
    OCS::Client::SOUND_ADAPTERS
    OCS::Client::STORAGE_PERIPHERALS
    OCS::Client::VIDEO_ADAPTERS
--all

By default, only computers that have been inventoried since the most recent Subversion tag has been generated or computers which don't yet have a corresponding JSON file are fetched from OCS. This option forces the fetching of all computers.

It's handy when the script JSON output changes and you want to force the refresh of all files.

--dont

This option makes the script refrain from making any changes in Subversion.

--verbose

This option makes the script verbose. If you repeat it it will make the script even more verbose.

SEE ALSO

COPYRIGHT

Copyright 2012 CPqD.

AUTHOR

Gustavo Chaves <gustavo@cpqd.com.br>