Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
emulab-devel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
143
Issues
143
List
Boards
Labels
Service Desk
Milestones
Merge Requests
6
Merge Requests
6
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
emulab
emulab-devel
Commits
47bedccc
Commit
47bedccc
authored
May 30, 2007
by
David Johnson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support for marshalling None.
parent
800d36b4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
5 deletions
+42
-5
xmlrpc/BasicXMLRPCServers.py.in
xmlrpc/BasicXMLRPCServers.py.in
+42
-5
No files found.
xmlrpc/BasicXMLRPCServers.py.in
View file @
47bedccc
#!/usr/local/bin/python
#!/usr/local/bin/python
#
#
# A simple little xmlrpc server that provides an interface to flexlab data.
# A couple simple XMLRPC server extensions.
# At present, basically just exports goodnodes.pl functionality, but could
# do more if desired.
#
#
import
os
import
os
...
@@ -18,11 +16,48 @@ import traceback
...
@@ -18,11 +16,48 @@ import traceback
debug
=
True
debug
=
True
class
NetworkAuthError
(
exceptions
.
Exception
):
# XXX: hack.
# Have to override the
# SimpleXMLRPCServer.SimpleXMLRPCDispatcher._marshaled_dispatch method
# so that we can marshal None values. If SimpleXMLRPCDispatcher changes,
# this will need to be hacked so it complies again...
class
AllowNoneOptXMLRPCDispatcher
(
SimpleXMLRPCServer
.
SimpleXMLRPCDispatcher
):
#
# Taken straight from SimpleXMLRPCServer.py in the python stdlib.
#
def
_marshaled_dispatch
(
self
,
data
,
dispatch_method
=
None
):
params
,
method
=
xmlrpclib
.
loads
(
data
,)
# generate response
try
:
if
dispatch_method
is
not
None
:
response
=
dispatch_method
(
method
,
params
)
else
:
response
=
self
.
_dispatch
(
method
,
params
)
# wrap response in a singleton tuple
response
=
(
response
,)
response
=
xmlrpclib
.
dumps
(
response
,
methodresponse
=
1
,
allow_none
=
self
.
_allow_none
)
except
Fault
,
fault
:
response
=
xmlrpclib
.
dumps
(
fault
,
allow_none
=
self
.
_allow_none
)
except
:
# report exception back to server
response
=
xmlrpclib
.
dumps
(
xmlrpclib
.
Fault
(
1
,
"%s:%s"
%
(
sys
.
exc_type
,
sys
.
exc_value
)),
allow_none
=
self
.
_allow_none
)
return
response
pass
class
NetworkAuthFault
(
xmlrpclib
.
Fault
):
pass
pass
class
SimpleObjectXMLRPCServer
(
SocketServer
.
ThreadingMixIn
,
class
SimpleObjectXMLRPCServer
(
SocketServer
.
ThreadingMixIn
,
SimpleXMLRPCServer
.
SimpleXMLRPCServer
,
object
):
SimpleXMLRPCServer
.
SimpleXMLRPCServer
,
AllowNoneOptXMLRPCDispatcher
,
object
):
"""
"""
Extension to the simple xmlrpc server that registers member functions
Extension to the simple xmlrpc server that registers member functions
of a class as xmlrpc functions, so they can be called as
of a class as xmlrpc functions, so they can be called as
...
@@ -34,6 +69,8 @@ class SimpleObjectXMLRPCServer(SocketServer.ThreadingMixIn,
...
@@ -34,6 +69,8 @@ class SimpleObjectXMLRPCServer(SocketServer.ThreadingMixIn,
self
.
classfuncs
=
dict
({})
self
.
classfuncs
=
dict
({})
self
.
classinitargs
=
dict
({})
self
.
classinitargs
=
dict
({})
self
.
_allow_none
=
True
return
return
"""
"""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment