Hi Ian

I still have the same problem even if I expand the node several times...

Here is what it says:

#~ sudo xenman
Valid, writable configuration found, using /etc/xenman.conf
cyberxen2 True

/************ I  get the gui in which I can find 2 nodes: localhost and 
cyberxen2************************
************* If I click on localhost to expand it I can see "Domain0 
and only **************************
************* the following output in the console: 
*****************************************************/

resetting last_error

/************ When I click on cyberxen2 (my remote xen host) to expand 
its ***************************
************* contents, in the console output I get: 
****************************************************/

Warning : Host not found !  cyberxen2
Could not initialize ssh for cyberxen2 22

/************ And the GUI shows a dialog box asking for SSH login/pass 
******************************
************ So I fil in the boxes with the appropriated credentials and 
here is what I get:*************/

Warning : Host not found !  cyberxen2
got expat error  no element found: line 1, column 0
got expat error  no element found: line 1, column 0
got expat error  no element found: line 1, column 0
got expat error  no element found: line 1, column 0
Traceback (most recent call last):
  File "/usr/share/xenman/src/xenman.py", line 547, in handle_timer_callback
    cls.notebook.showSummaryTab()
  File "/usr/share/xenman/src/xenman.py", line 751, in showSummaryTab
    self.summary_tab.refresh()
  File "/usr/share/xenman/src/xenman.py", line 1159, in refresh
    doms = managed_node.get_dom_names()
  File "/usr/share/xenman/src/XenNode.py", line 122, in get_dom_names
    return self.dom_list.iterkeys()
  File "/usr/share/xenman/src/XenNode.py", line 357, in iterkeys
    return self.dom_dict.keys()
  File "/usr/share/xenman/src/XenNode.py", line 290, in __getattr__
    return self._init_dom_list()
  File "/usr/share/xenman/src/XenNode.py", line 285, in _init_dom_list
    self.refresh()
  File "/usr/share/xenman/src/XenNode.py", line 296, in refresh
    dom_list_info = self.node.node_proxy.xend.domains(1)
  File "/usr/share/xenman/src/XenServerProxy.py", line 165, in __call__
    ret = self.__send(self.__name, args)
  File "/usr/lib/xen-3.0.3-1/lib/python/xen/util/xmlrpclib2.py", line 
122, in __request
    response = xmlrpclib.ServerProxy.__request(self, methodname, params)
  File "xmlrpclib.py", line 1383, in __request
    verbose=self.__verbose
  File "/usr/share/xenman/src/XenServerProxy.py", line 133, in request
    return Transport.request(self, host, '/RPC2', request_body, verbose)
  File "xmlrpclib.py", line 1147, in request
    return self._parse_response(h.getfile(), sock)
  File "xmlrpclib.py", line 1284, in _parse_response
    p.close()
  File "xmlrpclib.py", line 530, in close
    self._parser.Parse("", 1) # end of data
ExpatError: no element found: line 1, column 0
Exception in callback...ignoring  None
got expat error  no element found: line 1, column 0

/******** And the error recursivly continues as if it came from a 
loop**********/

Does It help?


Ian Norton-Badrul wrote:
> Hi Alex,
>
> If i put in a remote hostname I
> get:
>
> Warning : Host not found !  gaspode
> got expat error  junk after document element: line 6, column 0
> Valid, writable configuration found, using /etc/xenman.conf
> got expat error  syntax error: line 1, column 0
> Traceback (most recent call last):
>   File "/usr/share/xenman/src/xenman.py", line 181, in handle_row_expanded
> ....
>
> But,
>
> Wierldy, If i click the new server in the sidebar again then I can see
> all of the VMs running on my remote machine. But I always have to click
> twice.
>
> I think it is some bad string being extracted from the cpu usage stats
> for each domU on the other host as I don't get this locally.
>
> Also, (see my patch) I get alot of errors like this if one of my domUs
> has a space in a device name (eg from a symlink or file vbd)
>
> Ian
>
> Ian
>
> On Thu, Mar 22, 2007 at 12:03:48PM +0100, Alexandre Chapellon wrote:
>   
>> Ian Norton-Badrul wrote:
>>     
>>> Hm, it looks like the xmlrpc server itself is working.
>>>
>>> Are you connecting with xenman remotely? or locally?
>>>  
>>>       
>> Well I try connect with xenman remotely (as I want to get a centralised 
>> management station)
>>
>>     
>>> Ian
>>>
>>> On Thu, Mar 22, 2007 at 08:18:24AM +0100, Alexandre Chapellon wrote:
>>>  
>>>       
>>>>   Hello there,
>>>>
>>>>   this is what I get:
>>>>
>>>>   ~# ./xml-rpc-api2html [1]http://localhost:8005
>>>>   <html>
>>>>   <head><title>XML API for [2]http://localhost:8005</title>
>>>>   </head>
>>>>   <body>
>>>>   <h1>XML-RPC API for [3]http://localhost:8005</h1>
>>>>
>>>>   See [4]http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html for
>>>>   instructions
>>>>   on using XML-RPC with Perl, Python, Java, C, C++, PHP, etc.
>>>>   <h2>Methods</h2>
>>>>   <hr>
>>>>
>>>>   <h3>system.listMethods</h3>
>>>>     system.listMethods() => ['add', 'subtract', 'multiple']  Returns a list
>>>>     of the methods supported by the server.<hr>
>>>>
>>>>   <h3>system.methodHelp</h3>
>>>>     system.methodHelp('add') => "Adds two integers together"  Returns a
>>>>     string containing documentation for the specified method.<hr>
>>>>
>>>>   <h3>system.methodSignature</h3>
>>>>     system.methodSignature('add') => [double, int, int]  Returns a list
>>>>     describing the signature of the method. In the above example, the add
>>>>     method takes two integers as arguments and returns a double result.
>>>>   This
>>>>     server does NOT support system.methodSignature.<hr>
>>>>
>>>>   <h3>xend.domain</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.configure</h3>
>>>>     Configure an existing domain.  <br><b>param: </b> vmconfig: vm
>>>>     configuration<hr>
>>>>
>>>>   <h3>xend.domain.cpu_sedf_get</h3>
>>>>     Get Simple EDF scheduler parameters for a domain.<hr>
>>>>
>>>>   <h3>xend.domain.cpu_sedf_set</h3>
>>>>     Set Simple EDF scheduler parameters for a domain.<hr>
>>>>
>>>>   <h3>xend.domain.create</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.destroy</h3>
>>>>     Terminate domain immediately.<hr>
>>>>
>>>>   <h3>xend.domain.destroyDevice</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.device_configure</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.device_create</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.dump</h3>
>>>>     Dump domain core.<hr>
>>>>
>>>>   <h3>xend.domain.getDeviceSxprs</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.getRestartCount</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.getVCPUInfo</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.ioport_range_disable</h3>
>>>>     Disable access to a range of IO ports for a domain  <br><b>param: </b>
>>>>     first: first IO port <br><b>param: </b> last: last IO port
>>>>     <br><b>returns: </b>: 0 on success, -1 on error<hr>
>>>>
>>>>   <h3>xend.domain.ioport_range_enable</h3>
>>>>     Enable access to a range of IO ports for a domain  <br><b>param: </b>
>>>>     first: first IO port <br><b>param: </b> last: last IO port
>>>>     <br><b>returns: </b>: 0 on success, -1 on error<hr>
>>>>
>>>>   <h3>xend.domain.lookup</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.lookup_by_name_nr</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.lookup_by_name_or_id</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.lookup_by_name_or_id_nr</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.lookup_nr</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.maxmem_set</h3>
>>>>     Set the memory limit for a domain.  <br><b>param: </b> mem: memory 
>>>> limit
>>>>     (in MiB) <br><b>returns: </b>: 0 on success, -1 on error<hr>
>>>>
>>>>   <h3>xend.domain.migrate</h3>
>>>>     Start domain migration.<hr>
>>>>
>>>>   <h3>xend.domain.pause</h3>
>>>>     Pause domain execution.<hr>
>>>>
>>>>   <h3>xend.domain.pincpu</h3>
>>>>     Set which cpus vcpu can use  <br><b>param: </b> cpumap:  string repr of
>>>>     list of usable cpus<hr>
>>>>
>>>>   <h3>xend.domain.restore</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.restore_fd</h3>
>>>>     Restore a domain from the given file descriptor.<hr>
>>>>
>>>>   <h3>xend.domain.save</h3>
>>>>     Start saving a domain to file.  <br><b>param: </b> dst:      
>>>> destination
>>>>     file<hr>
>>>>
>>>>   <h3>xend.domain.sched_credit_get</h3>
>>>>     Get credit scheduler parameters for a domain.<hr>
>>>>
>>>>   <h3>xend.domain.sched_credit_set</h3>
>>>>     Set credit scheduler parameters for a domain.<hr>
>>>>
>>>>   <h3>xend.domain.send_sysrq</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.setMemoryTarget</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.setName</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.setVCpuCount</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.shadow_control</h3>
>>>>     Shadow page control.<hr>
>>>>
>>>>   <h3>xend.domain.shadow_mem_get</h3>
>>>>     Get shadow pagetable memory allocation.<hr>
>>>>
>>>>   <h3>xend.domain.shadow_mem_set</h3>
>>>>     Set shadow pagetable memory allocation.<hr>
>>>>
>>>>   <h3>xend.domain.shutdown</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domain.unpause</h3>
>>>>     Unpause domain execution.<hr>
>>>>
>>>>   <h3>xend.domain.waitForDevices</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.domains</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.node.dmesg.clear</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.node.dmesg.info</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.node.info</h3>
>>>>     <hr>
>>>>
>>>>   <h3>xend.node.log</h3>
>>>>     <hr>
>>>>
>>>>   Ian Norton-Badrul wrote:
>>>>
>>>> Ah, I forgot it was broken,
>>>>
>>>> here use my modified version: (attached)
>>>>
>>>> Ian
>>>>
>>>> On Wed, Mar 21, 2007 at 05:58:44PM +0100, Alexandre Chapellon wrote:
>>>>
>>>>
>>>>    Here is what I get
>>>>
>>>>    ~# xml-rpc-api2txt [1][5]http://localhost:8005
>>>>    XML-RPC API for [2][6]http://localhost:8005
>>>>
>>>>    See [3][7]http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html for
>>>>    instructions
>>>>    on using XML-RPC with Perl, Python, Java, C, C++, PHP, etc.
>>>>
>>>>    Can't use string ("signatures not supported") as an ARRAY ref while
>>>>    "strict refs" in use at /usr/bin/xml-rpc-api2txt line 118.
>>>>
>>>>    doesn't seem very good, does it?
>>>>
>>>>    Ian Norton-Badrul wrote:
>>>>
>>>>  On Wed, Mar 21, 2007 at 04:03:55PM +0100, Alexandre Chapellon wrote:
>>>>
>>>>
>>>>  Ian Norton-Badrul wrote:
>>>>
>>>>
>>>>  Hi Alex,
>>>>
>>>>  I belive the xmlrpc server listens on port 8006
>>>>
>>>>
>>>>
>>>>  Apparently not as if I comment the line "(xend-tcp-xmlrpc-server yes)"
>>>>  there is no more 8005 port listening according to netstat, in addition
>>>>  xenman specify a port in the dialog box when you add a new node which
>>>>  is 8005 by default
>>>>
>>>>  Any other Idea?
>>>>
>>>>  Do  you (or anyone else) have it working with debian and xen 3.0.3?
>>>>
>>>>
>>>>  My xen 3.0.3 (27th sept 2006) is also listening on 8005 ( ubuntu dapper 
>>>> server )
>>>>  My 3.0.4 machine ( ubuntu dapper desktop ) is listening on 8006.
>>>>
>>>>  Can you install xml-rpc-api2txt (apt-get install) and point it at
>>>>  [4][8]http://localhost:8005
>>>>
>>>>  Regards
>>>>
>>>>  Ian
>>>>
>>>>
>>>>
>>>>  Ian
>>>>
>>>>  On Wed, Mar 21, 2007 at 03:01:17PM +0100, Alexandre Chapellon wrote:
>>>>
>>>>
>>>>
>>>>    Ian Norton-Badrul wrote:
>>>>
>>>>  Hi Alex,
>>>>
>>>>
>>>>
>>>>    Hi and first thanks for this fast answer
>>>>
>>>>  What version of xen are you running on your remote system? And are you
>>>>  sure that machine has the xml rpc server running?
>>>>
>>>>
>>>>    I'm running Xen 3.0.3-1 (debian package)
>>>>    And I have activated xml rpc as show below:
>>>>    (xend-tcp-xmlrpc-server yes)
>>>>
>>>>    By the way netstat shows its listenning on lo:8005... as you can see
>>>>
>>>>    ~#netstat -tan
>>>>    Connexions Internet actives (serveurs et etablies)
>>>>    Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat
>>>>    tcp        0      0 0.0.0.0:8000            0.0.0.0:*               
>>>> LISTEN
>>>>    tcp        0      0 0.0.0.0:8002            0.0.0.0:*               
>>>> LISTEN
>>>>    tcp        0      0 127.0.0.1:8005          0.0.0.0:*               
>>>> LISTEN
>>>>    tcp        0      0 0.0.0.0:9102            0.0.0.0:*               
>>>> LISTEN
>>>>    tcp6       0      0 :::22                   :::*                    
>>>> LISTEN
>>>>    tcp6       0    128 ::ffff:172.20.255.60:22 ::ffff:172.30.0.1:37519
>>>>    ESTABLISHED
>>>>
>>>>    Am I right?
>>>>
>>>>  Ian
>>>>
>>>>  On Wed, Mar 21, 2007 at 01:59:49PM +0100, Alexandre Chapellon wrote:
>>>>
>>>>
>>>>  Hy all!
>>>>
>>>>  I'm interresting in using xenman to manage my Domain0 and and domU upon
>>>>  several machines.
>>>>  Unfortunatly, when I try to connect to a remote node I get a Domain0 not
>>>>  found in the gui and the following error in the console where I launch
>>>>  xemna (using sudo xenman):
>>>>
>>>>  got expat error  no element found: line 1, column 0
>>>>
>>>>  The localhost seems to be working but not the remote ones...
>>>>
>>>>  I have configured ssh so that It uses login/pass to connect and tcpdump
>>>>  shows traffic on the loopback interface when I connect:
>>>>
>>>>  16:02:06.662754 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 53 win 4099
>>>>  <nop,nop,timestamp 106887986 106887986>16:02:06.662853 IP 127.0.0.1.8005
>>>>   > 127.0.0.1.1134: P 53:90(37) ack 298 win 4096 <nop,nop,timestamp
>>>>  106887986 106887986>
>>>>  16:02:06.662860 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 90 win 4099
>>>>  <nop,nop,timestamp 106887986 106887986>16:02:06.662920 IP 127.0.0.1.8005
>>>>   > 127.0.0.1.1134: P 90:114(24) ack 298 win 4096 <nop,nop,timestamp
>>>>  106887986 106887986>
>>>>  16:02:06.662926 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 114 win 4099
>>>>  <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.662984 IP 127.0.0.1.8005 > 127.0.0.1.1134: P 114:136(22) ack
>>>>  298 win 4096 <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.662991 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 136 win 4099
>>>>  <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.663036 IP 127.0.0.1.8005 > 127.0.0.1.1134: P 136:138(2) ack 298
>>>>  win 4096 <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.663042 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 138 win 4099
>>>>  <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.663083 IP 127.0.0.1.8005 > 127.0.0.1.1134: P 138:2339(2201) ack
>>>>  298 win 4096 <nop,nop,timestamp 106887986 106887986>
>>>>  16:02:06.663089 IP 127.0.0.1.1134 > 127.0.0.1.8005: . ack 2339 win 4650
>>>>  <nop,nop,timestamp 106887986 106887986>
>>>>
>>>>
>>>>  What did I miss?
>>>>
>>>>  -------------------------------------------------------------------------
>>>>  Take Surveys. Earn Cash. Influence the Future of IT
>>>>  Join SourceForge.net's Techsay panel and you'll get the chance to share 
>>>> your
>>>>  opinions on IT & business topics through brief surveys-and earn cash
>>>>  
>>>> [1][5][9]http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>  _______________________________________________
>>>>  XenMan-Users mailing list
>>>>  [EMAIL PROTECTED]
>>>>  [3][7][11]https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>
>>>>
>>>>  References
>>>>
>>>>    Visible links
>>>>    1. 
>>>> [8][12]http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>    2. [9][13]mailto:XenMan-Users@lists.sourceforge.net
>>>>    3. [10][14]https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>
>>>>
>>>> References
>>>>
>>>>    Visible links
>>>>    1. [15]http://localhost:8005/
>>>>    2. [16]http://localhost:8005/
>>>>    3. [17]http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>    4. [18]http://localhost:8005/
>>>>    5. 
>>>> [19]http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>    6. [20]mail[21]mailto:[EMAIL PROTECTED]
>>>>    7. [22]https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>    8. 
>>>> [23]http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>    9. [24]mailto:XenMan-Users@lists.sourceforge.net
>>>>   10. [25]https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>
>>>>
>>>>
>>>>       ------------------------------------------------------------------
>>>>
>>>> #!/usr/bin/perl -w
>>>> #
>>>> # A handy little script for printing out an XML-RPC API as a
>>>> # nicely-formatted text file. (I wrote this in Perl because of all the
>>>> # spiffy report-generation features.)
>>>> #
>>>> # You'll need to get Ken MacLeod's Frontier::RPC2 module from CPAN to use
>>>> # this.
>>>> #
>>>> # Eric Kidd [26]<[EMAIL PROTECTED]>
>>>> #
>>>> # This script is part of xmlrpc-c, and may be used and distributed under
>>>> # the same terms as the rest of the package.
>>>>
>>>> use strict;
>>>>
>>>> # One global variable for use with Perl's format routines, and one for
>>>> # use inside an 'exec' block.
>>>> use vars qw/$helptext $method_list/;
>>>>
>>>> # Try to load our Perl XML-RPC bindings, but fail gracefully.
>>>> eval {
>>>>     require Frontier::Client;
>>>> };
>>>> if ($@) {
>>>>     print STDERR <<"EOD";
>>>> This script requires Ken MacLeod\'s Frontier::RPC2 module. You can get this
>>>> from CPAN or from his website at [27]http://bitsko.slc.ut.us/~ken/xml-rpc/ 
>>>> .
>>>>
>>>> For installation instructions, see the XML-RPC HOWTO at:
>>>>     [28]http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>
>>>> EOD
>>>>     exit 1;
>>>> }
>>>>
>>>> # Parse our command-line arguments.
>>>> if (@ARGV != 1 || $ARGV[0] eq "--help") {
>>>>     print STDERR "Usage: xml-rpc-api2txt serverURL\n";
>>>>     exit 1;
>>>> }
>>>>
>>>> my $server = Frontier::Client->new(url => $ARGV[0]);
>>>>
>>>> # Try (very carefully) to get our a list of methods from the server.
>>>> local $method_list;
>>>> eval {
>>>>     $method_list = $server->call('system.listMethods');
>>>> };
>>>> if ($@) {
>>>>     print STDERR <<"EOD";
>>>> An error occurred while trying to talk to the XML-RPC server:
>>>>
>>>>   $@
>>>>
>>>> This may have been caused by several things--the server might not support
>>>> introspection, it might not be an XML-RPC server, or your network might be
>>>> down. Try the following:
>>>>
>>>>   xml-rpc-api2txt [29]http://xmlrpc-c.sourceforge.net/api/sample.php
>>>>
>>>> EOD
>>>>     exit 1;
>>>> }
>>>>
>>>> # Enter the methods into a hashtable.
>>>> my @methods = sort @$method_list;
>>>> my %method_table;
>>>> foreach my $method (@methods) {
>>>>     $method_table{$method} = {};
>>>> }
>>>>
>>>> # Get more information for the hash table. Since we need to make lots and
>>>> # lots of very small XML-RPC calls, we'd like to use system.multicall to
>>>> # reduce the latency.
>>>> if (defined $method_table{'system.multicall'}) {
>>>>
>>>>     # This is messy but fast. Everybody hates HTTP round-trip lag, right?
>>>>     my @call;
>>>>     foreach my $method (@methods) {
>>>>         push @call, {methodName => 'system.methodSignature',
>>>>                      params => [$method]};
>>>>         push @call, {methodName => 'system.methodHelp',
>>>>                      params => [$method]};
>>>>     }
>>>>     my @result = @{$server->call('system.multicall', [EMAIL PROTECTED])};
>>>>     for (my $i = 0; $i < @methods; $i++) {
>>>>         my $method = $methods[$i];
>>>>         $method_table{$method}->{'signatures'} = $result[2*$i]->[0];
>>>>         $method_table{$method}->{'help'} = $result[2*$i+1]->[0];
>>>>     }
>>>> } else {
>>>>
>>>>     # This is easy but slow (especially over backbone links).
>>>>     foreach my $method (@methods) {
>>>>         my $signature = $server->call('system.methodSignature', $method);
>>>>         my $help = $server->call('system.methodHelp', $method);
>>>>         $method_table{$method}->{'signatures'} = $signature;
>>>>         $method_table{$method}->{'help'} = $help;
>>>>     }
>>>> }
>>>>
>>>> # Now, we need to dump the API.
>>>> print <<"EOD";
>>>> <html>
>>>> <head><title>XML API for $ARGV[0]</title>
>>>> </head>
>>>> <body>
>>>> <h1>XML-RPC API for $ARGV[0]</h1>
>>>>
>>>> See [30]http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html for 
>>>> instructions
>>>> on using XML-RPC with Perl, Python, Java, C, C++, PHP, etc.
>>>> EOD
>>>>
>>>> print qq|<h2>Methods</h2>
>>>> <hr>
>>>> |;
>>>>
>>>> foreach my $method (@methods) {
>>>>     print "\n<h3>$method</h3>\n";
>>>>     my $methodinfo = "";
>>>>     # Print a synopsis of the function.
>>>>     if ($method_table{$method}->{'signatures'} eq 'undef') {
>>>>         # No documentation. Bad server. No biscuit.
>>>>         $methodinfo = "unknown $method (...)\n";
>>>>     } else {
>>>>             if ( $method_table{$method}->{'signatures'} =~ /^ARRAY/ ){
>>>>                     for my $signature 
>>>> (@{$method_table{$method}->{'signatures'}}) {
>>>>                             if ( $signature =~ /^ARRAY/ ){
>>>>                                     my $return_type = shift @$signature;
>>>>                                     my $arguments = join(", ", 
>>>> @$signature);
>>>>                                     $methodinfo .= "\n<tt>$return_type 
>>>> $method ($arguments)</tt>\n";
>>>>                             }
>>>>                     }
>>>>             }
>>>>     }
>>>>     if ( $methodinfo ne "" ){
>>>>         print "$methodinfo\n";
>>>>     }
>>>>
>>>>     my $help = $method_table{$method}->{'help'};
>>>>     if ($help =~ /\n/) {
>>>>         # Text has already been broken into lines by the server, so just
>>>>         # indent it by two spaces and hope for the best.
>>>>         my @lines = split(/\n/, $help);
>>>>         my $help = "  " . join("\n  ", @lines);
>>>>         if ( $help =~ /[a-zA-Z0-9]/ ){
>>>>             print "$help\n";
>>>>         }
>>>>     } else {
>>>>         # Print our help text in a nicely-wrapped fashion using Perl's
>>>>         # formatting routines.
>>>>         $helptext = $method_table{$method}->{'help'};
>>>>         $helptext =~ s/\\n/\n/g;
>>>>         $helptext =~ s/\\'/'/g;
>>>>
>>>>         $helptext =~ s/[EMAIL PROTECTED]/<br><b>param: <\/b>/g;
>>>>         $helptext =~ s/[EMAIL PROTECTED]/<br><b>returns: <\/b>/g;
>>>>         $helptext =~ s/[EMAIL PROTECTED]/<br><b>return type: <\/b>/g;
>>>>
>>>>         $helptext .= "<hr>";
>>>>
>>>>         write;
>>>>     }
>>>> }
>>>>
>>>> format STDOUT =
>>>>   
>>>> ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
>>>>   $helptext
>>>> .
>>>>
>>>>
>>>> References
>>>>
>>>>   Visible links
>>>>   1. http://localhost:8005/
>>>>   2. http://localhost:8005/
>>>>   3. http://localhost:8005/
>>>>   4. http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>   5. http://localhost:8005/
>>>>   6. http://localhost:8005/
>>>>   7. http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>   8. http://localhost:8005/
>>>>   9. 
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>  10. mailto:[EMAIL PROTECTED]
>>>>  11. https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>  12. 
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>  13. mailto:XenMan-Users@lists.sourceforge.net
>>>>  14. https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>  15. http://localhost:8005/
>>>>  16. http://localhost:8005/
>>>>  17. http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>  18. http://localhost:8005/
>>>>  19. 
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>  20. mailto:2
>>>>  21. mailto:mailto:[EMAIL PROTECTED]
>>>>  22. https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>  23. 
>>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>>>  24. mailto:XenMan-Users@lists.sourceforge.net
>>>>  25. https://lists.sourceforge.net/lists/listinfo/xenman-users
>>>>  26. mailto:[EMAIL PROTECTED]
>>>>  27. http://bitsko.slc.ut.us/~ken/xml-rpc/
>>>>  28. http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>  29. http://xmlrpc-c.sourceforge.net/api/sample.php
>>>>  30. http://www.linuxdoc.org/HOWTO/XML-RPC-HOWTO/index.html
>>>>         

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
XenMan-Users mailing list
XenMan-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xenman-users

Reply via email to