pyARS – the swiss knife for the Remedy developer and admin

August 3rd, 2009 by Venkat

The pyARS python module allows developers to use BMC’s ARSystem (Remedy ARS) and Atrium CMDB functions from within Python. Using Python’s interactive shell, it is extremely easy to retrieve and modify data entries as well as workflow objects.

Credits to : Ergorion

Find the current version at

  • Features

    • remote control your ARSystem and Atrium CMDB
    • a wrapper object takes care of session handling and adapts itself to the ARSystem version available (currently, version 5.1, 6.0, 6.3, and 7.0 are supported: the different API versions are automagically mapped to different wrapper classes that only expose the appropriate functions; a separate wrapper is available to support the CMDB (originally AROS) api and adapts itself to the CMDB version used (version 1.0, 1.1 and 2.0).
    • all(!) data structures are available as python classes
    • use python’s interactive shell to interactively research and manipulate ARSystem data structures (forms, filters, activelinks, entries, etc.).
    • no compiler required! Thanks to the excellent ctypes module from Thomas Heller, this module does not rely on SWIG or any other extension mechanism that requires you to compile code on your end.
    • memory management for Python objects is semi-automatic; however, this is not true for data structures managed on such a low level as used by pyARS. However, there is only one function to worry about: ARFree; just hand over any ARS data structure that you would like to be freed, and it will call the corresponding ARFree function(s).
    • Comfort structures: pyars defines a couple of its own structures, that bring together all detail information about the object in one single place: ARActiveLinkStruct, ARActiveLinkList, ARContainerStruct, AREscalationStruct, ARFilterStruct, ARMenuStruct, and others (see file details for details).
    • similarly to ARSPerl some convenience functions are provided: Login, Logoff, schemaExists. Login provides an additional feature: if you define the server name as “server:port” (as internet URLs usually do), you can define the port number for the communication. You can use an even tighter syntax: when creating a session instance, hand over the login information:
      ars = ARS('server:port', 'user', 'password')
    • supports detailed logging (to switch on, use:
      import logging

      (default is: INFO).

mapping dictionaries are provided (although not complete yet) that translate ARS constants to usable strings, e.g.

ars_const['AR_DATA_TYPE']= {
Documents related:


Comments are closed.

%d bloggers like this: