[Commits] r684 - in trunk/daemon: . extensions lib/pyovcp src
new-commit at lists.openvcp.org
new-commit at lists.openvcp.org
Thu Dec 31 13:26:39 UTC 2009
Author: ftx
Date: 2009-12-31 13:26:38 +0000 (Thu, 31 Dec 2009)
New Revision: 684
Modified:
trunk/daemon/Makefile.in
trunk/daemon/configure.ac
trunk/daemon/extensions/testmod.py
trunk/daemon/lib/pyovcp/pyovcp.c
trunk/daemon/lib/pyovcp/pyovcprequest.c
trunk/daemon/src/modules.c
Log:
fixed bugs in python support
extensions in python are now able to access the openvcpd config
Modified: trunk/daemon/Makefile.in
===================================================================
--- trunk/daemon/Makefile.in 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/Makefile.in 2009-12-31 13:26:38 UTC (rev 684)
@@ -55,12 +55,13 @@
cd lib/pyovcp; make clean;
install:
- mkdir -p "$(DESTDIR)/$(datadir)"/openvcpd \
+ mkdir -p "$(DESTDIR)/$(datadir)/openvcpd" \
+ "$(DESTDIR)/$(datadir)/openvcpd/extensions" \
"$(DESTDIR)/$(bindir)" \
"$(DESTDIR)/$(sysconfdir)"
cp openvcpd "$(DESTDIR)/$(bindir)"/openvcpd
+ cp extensions/* "$(DESTDIR)/$(datadir)/openvcpd/extensions/"
-
@if (test -e "$(DESTDIR)/$(sysconfdir)"/openvcpd.conf); then \
echo "Configuration File exists. Please check for updates of the configurationfile"; \
else \
Modified: trunk/daemon/configure.ac
===================================================================
--- trunk/daemon/configure.ac 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/configure.ac 2009-12-31 13:26:38 UTC (rev 684)
@@ -10,6 +10,7 @@
AC_CHECK_PROG([PKGCONFIG], [pkg-config], [yes], [no])
AC_CHECK_PROG([RSYNC], [rsync], [yes], [no])
+AC_CHECK_PROG([PYCONFIG], [python-config], [yes], [no])
# Checks for libraries.
AC_CHECK_LIB([vserver], [vc_ctx_migrate], ,[AC_MSG_ERROR([libvserver(util-vserver) not found])])
@@ -17,6 +18,7 @@
AC_CHECK_LIB([xml2], [xmlTextReaderRead], ,[AC_MSG_ERROR([libxml2 not found])])
AC_CHECK_LIB([pcap], [pcap_loop], ,[AC_MSG_ERROR([libpcap not found])])
AC_CHECK_LIB([dl], [dlopen])
+AC_CHECK_LIB([python], [Py_Initialize])
AC_ARG_WITH([gnutls],
[AS_HELP_STRING([--with-gnutls],
@@ -48,7 +50,6 @@
]])
-
# Checks for typedefs, structures, and compiler characteristics.
#AC_TYPE_PID_T
AC_HEADER_TIME
@@ -75,6 +76,10 @@
AC_MSG_ERROR([pkg-config is required])
fi
+if test "$PYCONFIG" = "no"; then
+ AC_MSG_ERROR([python-config is required])
+fi
+
if test "$RSYNC" = "no"; then
AC_MSG_ERROR([rsync is required])
fi
Modified: trunk/daemon/extensions/testmod.py
===================================================================
--- trunk/daemon/extensions/testmod.py 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/extensions/testmod.py 2009-12-31 13:26:38 UTC (rev 684)
@@ -2,11 +2,41 @@
def testmethod(req):
resp = ovcp.Response()
- dat=req.getArg(0)
- print dat.type()
- print dat.getContent();
+ dat=req.getArg(1)
+
+ if dat == None:
+ resp.Error(1, "missing parameter")
+ return resp;
+
+ if dat.type() != "string":
+ resp.Error(2, "wrong parameter")
+ return resp;
+
+ resp.addString(dat.getContent())
+
+ rootdir = ovcp.settings['root_dir']
+ confdir = ovcp.settings['config_dir']
+
resp.addInt(22)
+ resp.addString("hello world")
+ resp.addDouble(33.223)
+ resp.addString(rootdir)
+ resp.addString(confdir)
+ resp.addBool(1)
+
+ resp.ArrayNew()
+ resp.ArrayAddString("hi")
+ resp.ArrayAddInt(32)
+ resp.ArrayEnd()
+ resp.StructNew()
+ resp.StructAddBool("test", 1)
+ resp.StructAddString("test2", "works")
+ resp.StructAddDouble("test3", 22.44)
+ resp.StructAddInt("test4", 23)
+ resp.StructEnd()
+
+
return resp
Modified: trunk/daemon/lib/pyovcp/pyovcp.c
===================================================================
--- trunk/daemon/lib/pyovcp/pyovcp.c 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/lib/pyovcp/pyovcp.c 2009-12-31 13:26:38 UTC (rev 684)
@@ -10,6 +10,7 @@
#ifndef SHAREDOBJ
+#include "../../src/main.h"
#include "../../src/modules.h"
@@ -17,7 +18,7 @@
{
OVCPResponse *respobj;
OVCPRequest *reqobj;
- struct ovcp_response_st *resp;
+ struct ovcp_response_st *resp = NULL;
PyObject *funcargobj;
reqobj = (OVCPRequest *)createPythonObject("ovcp", "Request", NULL);
@@ -26,10 +27,21 @@
funcargobj = Py_BuildValue("(O)", (PyObject *)reqobj);
respobj = (OVCPResponse *) PyObject_CallObject((PyObject *)func, funcargobj);
- resp = respobj->resp;
- respobj->resp = NULL;
- Py_XDECREF(respobj);
+ if(respobj != NULL)
+ {
+ if(strcmp(respobj->ob_type->tp_name, "ovcp.Response") == 0)
+ {
+ resp = respobj->resp;
+ respobj->resp = NULL;
+ }
+
+ Py_DECREF(respobj);
+ }
+
+ if(PyErr_Occurred() != NULL)
+ PyErr_Print();
+
return resp;
}
@@ -48,6 +60,27 @@
Py_RETURN_TRUE;
}
+
+PyObject *ovcp_create_settingsdict()
+{
+ PyObject *dict = PyDict_New();
+
+ PyDict_SetItem(dict, PyString_FromString("ip"), PyString_FromString(global_settings.ip));
+ PyDict_SetItem(dict, PyString_FromString("port"), PyString_FromString(global_settings.port));
+ PyDict_SetItem(dict, PyString_FromString("startxid"), PyString_FromString(global_settings.startxid));
+ PyDict_SetItem(dict, PyString_FromString("root_dir"), PyString_FromString(global_settings.root_dir));
+ PyDict_SetItem(dict, PyString_FromString("config_dir"), PyString_FromString(global_settings.config_dir));
+ PyDict_SetItem(dict, PyString_FromString("backup_dir"), PyString_FromString(global_settings.userbackup_dir));
+ PyDict_SetItem(dict, PyString_FromString("image_dir"), PyString_FromString(global_settings.run_dir));
+ PyDict_SetItem(dict, PyString_FromString("run_dir"), PyString_FromString(global_settings.ip));
+ PyDict_SetItem(dict, PyString_FromString("cache_dir"), PyString_FromString(global_settings.cache_dir));
+ PyDict_SetItem(dict, PyString_FromString("ifaces"), PyString_FromString(global_settings.ifaces));
+ PyDict_SetItem(dict, PyString_FromString("ifbdev"), PyString_FromString(global_settings.ifbdev));
+ PyDict_SetItem(dict, PyString_FromString("adminemail"), PyString_FromString(global_settings.adminemail));
+
+ return dict;
+}
+
#else
@@ -72,7 +105,7 @@
void init_pyovcp(void)
{
- PyObject* m;
+ PyObject *m;
if (PyType_Ready(&OVCPRequestType) < 0)
return;
@@ -94,6 +127,9 @@
PyModule_AddObject(m, "Response", (PyObject *)&OVCPResponseType);
PyModule_AddObject(m, "Data", (PyObject *)&OVCPDataType);
+ #ifndef SHAREDOBJ
+ PyModule_AddObject(m, "settings", ovcp_create_settingsdict());
+ #endif
}
Modified: trunk/daemon/lib/pyovcp/pyovcprequest.c
===================================================================
--- trunk/daemon/lib/pyovcp/pyovcprequest.c 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/lib/pyovcp/pyovcprequest.c 2009-12-31 13:26:38 UTC (rev 684)
@@ -24,7 +24,7 @@
int OVCPRequest_init(OVCPRequest *self, PyObject *args)
{
- char *xmlstr;
+ char *xmlstr = NULL;
if(!PyArg_ParseTuple(args, "|s", &xmlstr))
return -1;
Modified: trunk/daemon/src/modules.c
===================================================================
--- trunk/daemon/src/modules.c 2009-12-29 20:45:59 UTC (rev 683)
+++ trunk/daemon/src/modules.c 2009-12-31 13:26:38 UTC (rev 684)
@@ -30,7 +30,7 @@
struct ovcp_module *modules = 0;
static int modulescount = 0;
-#define OVCP_EXTENSION_DIR "extensions"
+#define OVCP_EXTENSION_DIR OPENVCP_DATA"/extensions"
int ovcp_add_module(char *name)
{
@@ -186,7 +186,8 @@
sconcat(path, BUF_SIZE, OVCP_EXTENSION_DIR, "/", dir_entry->d_name, NULL);
fmod = fopen(path,"r");
- PyRun_SimpleFileEx(fmod, path, 1);
+ PyRun_SimpleFile(fmod, path);
+ fclose(fmod);
}
}
More information about the Commits
mailing list