** Thanks for all the help! I had not scoured sourceforge yet and, by the Beard of Zeus, someone has already done a Python interface. Very good news indeed. I was able to install it, run it, and start getting results almost immediately.

Apparently it's also using ctypes to interface with the DLLs. I was rather close but was not aware of the magical '.value' extension that is required to access the contents of a char pointer. However I'm not interested in re-creating the wheel, so the fact that it's already out there saves me tons of time.

For those that use this though, I did have a problem actually with the example shown in the documention. The ARGetSchema helper function didn't work. First it's using the variable 'schema' and trying to reference it without a definition. And then some of the fields within the structure were being called with incorrect definitions. I started trying to fix the problems, but then wondered if maybe there's another file that I need to reference.

I don't need this function at the moment, but I'm worried that if there's another file that I don't have correctly configured I may have problems elsewhere. Did anyone else who uses pyARS have this problem?

Marc



On 10/30/06, Dirk Reiter <[EMAIL PROTECTED]> wrote:
Marc,

there is a python module called pyars that covers most of the ARS API and CMDB functions.

http://sourceforge.net/projects/pyars/

We use it for automizing migration stuff for ARS and find it quite useful and stable.

Cheers
Dirk



-------- Original-Nachricht --------
Datum: Fri, 27 Oct 2006 23:47:14 -0500
Von: Marc Nations <[EMAIL PROTECTED]>
An: [email protected]
Betreff: Newb needs API help...couple of questions

> Hello all,
>
> For starters, I'm trying to integrate the Remedy API into a Python
> application. That is my ultimate goal. So if anyone has any experience
> with that or knows where some sample code is, I'd appreciate it. I'm
> going to use ctypes to make the dll calls and am building the
> structures.
>
> However, I've hit a wall so far with Python so I decided to run some
> example code in C and follow the process. I don't understand what is
> happening here, so I'm hoping someone could explain it to me. I am
> running the example given in the Remedy API documentation (with a
> couple of small modifications):
>
> Let me start off by saying that the code works, however almost
> seemingly by accident. The problem is when I step through it using
> Visual Studio, it doesn't respond like I thought it would. Here's the
> problem:
>
> Right now I have the application set up to fail at the initialization
> stage. So at Step A (marked below) I should see a failure after the
> ARInitialization call is made. However that is not the case. Instead I
> get back a response of '0', and it does not fall into the exception
> loop.
>
> Instead it moves on and attempts the ARGetListSchema call. At Step B is
> when the error for the initialization is actually recognized. So then
> it falls in the exception loop, prints out the error that was supposed
> to be printed in ARInit loop, and finishes execution.
>
> This also means that the status list is not being freed like is
> supposed to happen during the FreeARStatusList proc. It's still there
> when the next function is called.
>
> So in the end the application does work, but it's not failing at the
> correct place. So until I understand how this is supposed to properly
> work, there's no way I'll be able to get it interfaced over to another
> language. Does anyone know what either I or it is doing wrong?
>
> Thanks,
> Marc
>
>
> // ARS.cpp : Defines the entry point for the console application.
> //
>
> #include "stdafx.h"
>
> #include "ar.h"
> #include "arextern.h"
> #include "arfree.h "
>
> void printStatusList(ARStatusList *theList)
> {
>        unsigned int i;
>        for (i=0; i< theList -> numItems; i++)
>        {
>                if (theList -> statusList[i].appendedText == NULL ||
>                        theList -> statusList[i].appendedText == '\0')
>                        printf("%s", theList -> statusList[i].messageText);
>                else
>                        printf("%s:%s", theList ->
> statusList[i].messageText,
>                                theList -> statusList[i].appendedText);
>                        printf("(ARERR %d)\n", theList ->
> statusList[i].messageNum);
>                        printf("(Type %d)\n", theList ->
> statusList[i].messageType);
>        }
> }
>
> int main(void)
> {
>        ARControlStruct control =
> {0,0,"TEST_REMEDY","TEST_REMEDY02","",0,"","TSTREMEDY01"};
>        ARNameList formNameList;
>        unsigned int i;
>        unsigned int ARInt;
>        unsigned int ARGetInt;
>        ARStatusList status;
>
>        ARInt = ARInitialization(&control, &status);
>
> ----------------------------------------------------------STEP
> A--------------------------------------------
>
>        printf("(ARInt %d)\n", ARInt);
>
>        if ( ARInt >= AR_RETURN_ERROR)
>        {
>                printStatusList(&status);
>                FreeARStatusList(&status, FALSE);
>                return 1;
>        }
>
>        FreeARStatusList(&status, FALSE);
>
>
>        ARGetInt = ARGetListSchema(&control, 0,
>                                AR_LIST_SCHEMA_ALL|AR_HIDDEN_INCREMENT,
>                                NULL,NULL,
>                                &formNameList, &status);
>
> ----------------------------------------------------------STEP
> B--------------------------------------------
>
>        if(ARGetInt >= AR_RETURN_ERROR)
>                printStatusList(&status);
>        else
>        {
>                for (i=0; i< formNameList.numItems; i++)
>                        printf("%s\n",formNameList.nameList[i]);
>        }
>
>        FreeARStatusList(&status, FALSE);
>        FreeARNameList(&formNameList, FALSE);
>        if(ARTermination(&control,&status) >= AR_RETURN_ERROR)
>                printStatusList(&status);
>        FreeARStatusList(&status, FALSE);
> }
>
> _______________________________________________________________________________
> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where
> the Answers Are"

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where the Answers Are"

__20060125_______________________This posting was submitted with HTML in it___

Reply via email to