diff --git a/xCAT-test/xmlapi/README b/xCAT-test/xmlapi/README
new file mode 100644
index 000000000..4d770945b
--- /dev/null
+++ b/xCAT-test/xmlapi/README
@@ -0,0 +1,55 @@
+xCAT has an XML input interface to the xCAT tables. The routines are in tabutils.pm and map to the
+Table.pm routines by the same name. These routines were written for PCM but are also used in the restapi. They are not a documented api.
+For the restapi, check the following for how and which routines are used.
+xCAT-server/xCAT-wsapi/xcatws.cgi at all the functions between tablenodehdl() and tablerowdelhdl().
+
+ getAllEntries => "tabutils",
+ getNodesAttribs => "tabutils",
+ getTablesAllNodeAttribs => "tabutils",
+ getTablesNodesAttribs => "tabutils",
+ getTablesAllRowAttribs => "tabutils",
+ setNodesAttribs => "tabutils",
+ delEntries => "tabutils",
+ getAttribs => "tabutils",
+ setAttribs => "tabutils",
+ NodeRange => "tabutils",
+
+If you vi /opt/xcat/lib/perl/xCAT_plugin/tabutils.pm, and search for example "sub getAllEntries", you will see documented in the routines comments to input XML format requried and the output XML sent.
+
+To test these routines, I put together a driver program pcmdriver, that generates the test XML and sends it and displays the returned output.
+
+
+For example:
+vi xmldriver in this directory
+
+You will see
+
+ $ENV{'XCATXMLTRACE'}=1;
+my $XML=`cat /.../xmlapi/getTablesAllRowAttribsreq`;
+my $data=$XML;
+
+$ENV{'XCATSHOWXML'}=1;
+
+xCAT::Client::submit_request($data, \&xCAT::Client::handle_response);
+exit $xCAT::Client::EXITCODE;
+
+If you vi getTablesAllRowAttribsreq, you will see the following. This is an XML request to get the all rows from the passwd table the attributes username and rack. These is one of these XML request files for all
+possible input to the routines in the directory.
+
+XCATXMLTRACE is exported to show the XML that is being sent to xcatd. XCATSHOWXML is exported to display the XML returned to the client.
+
+To get the XML request you must not be running in XCATBYPASS mode, you can get the reponse in XCATBYPASS mode.
+
+
+PCM
+getTablesAllRowAttribs
+
+
+
+
diff --git a/xCAT-test/xmlapi/Table.pm.routines b/xCAT-test/xmlapi/Table.pm.routines
new file mode 100644
index 000000000..83336e081
--- /dev/null
+++ b/xCAT-test/xmlapi/Table.pm.routines
@@ -0,0 +1,13 @@
+sub setNodeAttribs
+sub addNodeAttribs
+sub setAttribs
+sub setAttribsWhere
+sub setNodesAttribs
+sub getNodesAttribs
+sub getNodeAttribs
+sub getAllEntries
+sub getAllAttribsWhere
+sub getAllNodeAttribs
+sub getAllAttribs
+sub delEntries
+sub getAttribs
diff --git a/xCAT-test/xmlapi/delEntriesreq b/xCAT-test/xmlapi/delEntriesreq
new file mode 100644
index 000000000..f1d01807a
--- /dev/null
+++ b/xCAT-test/xmlapi/delEntriesreq
@@ -0,0 +1,11 @@
+
+PCM
+delEntries
+
+ nodelist
+
+ compute1,lissa
+ down
+
+
+
diff --git a/xCAT-test/xmlapi/delEntriesreq2 b/xCAT-test/xmlapi/delEntriesreq2
new file mode 100644
index 000000000..4958726c3
--- /dev/null
+++ b/xCAT-test/xmlapi/delEntriesreq2
@@ -0,0 +1,17 @@
+
+PCM
+delEntries
+
+ nodelist
+
+ compute1,lissa
+ down
+
+
+
+ nodelist
+
+ compute2
+
+
+
diff --git a/xCAT-test/xmlapi/delEntriesreq3 b/xCAT-test/xmlapi/delEntriesreq3
new file mode 100644
index 000000000..373df9f7c
--- /dev/null
+++ b/xCAT-test/xmlapi/delEntriesreq3
@@ -0,0 +1,7 @@
+
+PCM
+delEntries
+
+
diff --git a/xCAT-test/xmlapi/deltblreq b/xCAT-test/xmlapi/deltblreq
new file mode 100644
index 000000000..6030b4ce4
--- /dev/null
+++ b/xCAT-test/xmlapi/deltblreq
@@ -0,0 +1,35 @@
+
+PCM
+deltbl
+
+key1
+value1
+noderange2
+.
+.
+.
+or ALL
+attribute1
+attribute2
+.
+.
+.
+attributeN
+
+
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getAllEntries b/xCAT-test/xmlapi/getAllEntries
new file mode 100644
index 000000000..30d39721c
--- /dev/null
+++ b/xCAT-test/xmlapi/getAllEntries
@@ -0,0 +1,37 @@
+# Reads all entries from the input Table
+
+PCM
+getAllEntries
+
+
+
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+.
+.
+.
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getAllEntries.save1 b/xCAT-test/xmlapi/getAllEntries.save1
new file mode 100644
index 000000000..30d39721c
--- /dev/null
+++ b/xCAT-test/xmlapi/getAllEntries.save1
@@ -0,0 +1,37 @@
+# Reads all entries from the input Table
+
+PCM
+getAllEntries
+
+
+
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+.
+.
+.
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getAllEntriesreq b/xCAT-test/xmlapi/getAllEntriesreq
new file mode 100644
index 000000000..cbb3b83ac
--- /dev/null
+++ b/xCAT-test/xmlapi/getAllEntriesreq
@@ -0,0 +1,5 @@
+
+PCM
+getAllEntries
+
+
diff --git a/xCAT-test/xmlapi/getAllEntriesreq.save b/xCAT-test/xmlapi/getAllEntriesreq.save
new file mode 100644
index 000000000..5f20af2d8
--- /dev/null
+++ b/xCAT-test/xmlapi/getAllEntriesreq.save
@@ -0,0 +1,5 @@
+
+PCM
+getAllEntries
+
+
diff --git a/xCAT-test/xmlapi/getAllEntriesreq.save1 b/xCAT-test/xmlapi/getAllEntriesreq.save1
new file mode 100644
index 000000000..5f20af2d8
--- /dev/null
+++ b/xCAT-test/xmlapi/getAllEntriesreq.save1
@@ -0,0 +1,5 @@
+
+PCM
+getAllEntries
+
+
diff --git a/xCAT-test/xmlapi/getAttribsreq b/xCAT-test/xmlapi/getAttribsreq
new file mode 100644
index 000000000..de8172e18
--- /dev/null
+++ b/xCAT-test/xmlapi/getAttribsreq
@@ -0,0 +1,10 @@
+
+PCM
+getAttribs
+
+
+ domain
+
+value
+comments
+
diff --git a/xCAT-test/xmlapi/getAttribsreq.old b/xCAT-test/xmlapi/getAttribsreq.old
new file mode 100644
index 000000000..bee39d797
--- /dev/null
+++ b/xCAT-test/xmlapi/getAttribsreq.old
@@ -0,0 +1,8 @@
+
+PCM
+getAttribs
+
+domain
+value
+comments
+
diff --git a/xCAT-test/xmlapi/getAttribsreq2 b/xCAT-test/xmlapi/getAttribsreq2
new file mode 100644
index 000000000..a4029372d
--- /dev/null
+++ b/xCAT-test/xmlapi/getAttribsreq2
@@ -0,0 +1,11 @@
+
+PCM
+getAttribs
+
+
+ 11.35.0.0
+ 255.255.0.0
+
+netname
+dhcpserver
+
diff --git a/xCAT-test/xmlapi/getNodeAttribs b/xCAT-test/xmlapi/getNodeAttribs
new file mode 100644
index 000000000..7eabc87d1
--- /dev/null
+++ b/xCAT-test/xmlapi/getNodeAttribs
@@ -0,0 +1,50 @@
+# Reads the table input for the noderange and returns list of attributes
+# requested
+
+PCM
+getNodeAttribs
+
+noderange
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+
+nodename1
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+.
+.
+.
+nodenameN
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getNodeAttribs1 b/xCAT-test/xmlapi/getNodeAttribs1
new file mode 100644
index 000000000..7eabc87d1
--- /dev/null
+++ b/xCAT-test/xmlapi/getNodeAttribs1
@@ -0,0 +1,50 @@
+# Reads the table input for the noderange and returns list of attributes
+# requested
+
+PCM
+getNodeAttribs
+
+noderange
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+
+nodename1
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+.
+.
+.
+nodenameN
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getNodesAttribsreq b/xCAT-test/xmlapi/getNodesAttribsreq
new file mode 100644
index 000000000..fcc79224c
--- /dev/null
+++ b/xCAT-test/xmlapi/getNodesAttribsreq
@@ -0,0 +1,8 @@
+
+PCM
+getNodesAttribs
+
+blade01-blade02
+groups
+status
+
diff --git a/xCAT-test/xmlapi/getNodesAttribsreq1 b/xCAT-test/xmlapi/getNodesAttribsreq1
new file mode 100644
index 000000000..a2a2dd491
--- /dev/null
+++ b/xCAT-test/xmlapi/getNodesAttribsreq1
@@ -0,0 +1,7 @@
+
+PCM
+getNodesAttribs
+
+blade01-blade02
+ALL
+
diff --git a/xCAT-test/xmlapi/getNodesAttribsreq2 b/xCAT-test/xmlapi/getNodesAttribsreq2
new file mode 100644
index 000000000..a2a2dd491
--- /dev/null
+++ b/xCAT-test/xmlapi/getNodesAttribsreq2
@@ -0,0 +1,7 @@
+
+PCM
+getNodesAttribs
+
+blade01-blade02
+ALL
+
diff --git a/xCAT-test/xmlapi/getTablesAllNodeAttribsreq b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq
new file mode 100644
index 000000000..ba523421c
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq
@@ -0,0 +1,9 @@
+
+PCM
+getTablesAllNodeAttribs
+
+nodelist
+groups
+comments
+
+
diff --git a/xCAT-test/xmlapi/getTablesAllNodeAttribsreq1 b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq1
new file mode 100644
index 000000000..943cd0439
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq1
@@ -0,0 +1,14 @@
+
+PCM
+getTablesAllNodeAttribs
+
+nodetype
+os
+nodetype
+
+
+nodelist
+groups
+status
+
+
diff --git a/xCAT-test/xmlapi/getTablesAllNodeAttribsreq2 b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq2
new file mode 100644
index 000000000..350ba547b
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq2
@@ -0,0 +1,13 @@
+
+PCM
+getTablesAllNodeAttribs
+
+nodetype
+os
+nodetype
+
+
+
diff --git a/xCAT-test/xmlapi/getTablesAllNodeAttribsreq3 b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq3
new file mode 100644
index 000000000..4dece144e
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesAllNodeAttribsreq3
@@ -0,0 +1,36 @@
+
+PCM
+getTablesAllNodeAttribs
+
+
+
+
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/getTablesAllRowAttribsreq b/xCAT-test/xmlapi/getTablesAllRowAttribsreq
new file mode 100644
index 000000000..cb06e9beb
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesAllRowAttribsreq
@@ -0,0 +1,12 @@
+
+PCM
+getTablesAllRowAttribs
+
+
+
diff --git a/xCAT-test/xmlapi/getTablesNodesAttribsreq b/xCAT-test/xmlapi/getTablesNodesAttribsreq
new file mode 100644
index 000000000..c4862f5d3
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesNodesAttribsreq
@@ -0,0 +1,9 @@
+
+PCM
+getTablesNodesAttribs
+test
+
+
diff --git a/xCAT-test/xmlapi/getTablesNodesAttribsreq1 b/xCAT-test/xmlapi/getTablesNodesAttribsreq1
new file mode 100644
index 000000000..923444bb3
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesNodesAttribsreq1
@@ -0,0 +1,13 @@
+
+PCM
+getTablesNodesAttribs
+test
+
+
+
diff --git a/xCAT-test/xmlapi/getTablesNodesAttribsreq2 b/xCAT-test/xmlapi/getTablesNodesAttribsreq2
new file mode 100644
index 000000000..d85e7be03
--- /dev/null
+++ b/xCAT-test/xmlapi/getTablesNodesAttribsreq2
@@ -0,0 +1,9 @@
+
+PCM
+getTablesNodesAttribs
+test
+
+
diff --git a/xCAT-test/xmlapi/noderange b/xCAT-test/xmlapi/noderange
new file mode 100644
index 000000000..91f850065
--- /dev/null
+++ b/xCAT-test/xmlapi/noderange
@@ -0,0 +1,14 @@
+# Reads the table input for the noderange and returns list of attributes
+# requested
+
+PCM
+NodeRange
+compute1-compute2
+
+
+node1
+.
+.
+.
+noden
+
diff --git a/xCAT-test/xmlapi/noderangereq b/xCAT-test/xmlapi/noderangereq
new file mode 100644
index 000000000..2b6131df8
--- /dev/null
+++ b/xCAT-test/xmlapi/noderangereq
@@ -0,0 +1,5 @@
+
+PCM
+NodeRange
+compute1-compute2
+
diff --git a/xCAT-test/xmlapi/noderangereq.save b/xCAT-test/xmlapi/noderangereq.save
new file mode 100644
index 000000000..2b6131df8
--- /dev/null
+++ b/xCAT-test/xmlapi/noderangereq.save
@@ -0,0 +1,5 @@
+
+PCM
+NodeRange
+compute1-compute2
+
diff --git a/xCAT-test/xmlapi/noderangereq.save1 b/xCAT-test/xmlapi/noderangereq.save1
new file mode 100644
index 000000000..2b6131df8
--- /dev/null
+++ b/xCAT-test/xmlapi/noderangereq.save1
@@ -0,0 +1,5 @@
+
+PCM
+NodeRange
+compute1-compute2
+
diff --git a/xCAT-test/xmlapi/readtblreq b/xCAT-test/xmlapi/readtblreq
new file mode 100644
index 000000000..4b9d2346f
--- /dev/null
+++ b/xCAT-test/xmlapi/readtblreq
@@ -0,0 +1,34 @@
+
+PCM
+readtbl
+
+noderange1
+noderange2
+.
+.
+.
+or ALL
+attribute1
+attribute2
+.
+.
+.
+attributeN
+
+
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/readtblreq.node b/xCAT-test/xmlapi/readtblreq.node
new file mode 100644
index 000000000..4b9d2346f
--- /dev/null
+++ b/xCAT-test/xmlapi/readtblreq.node
@@ -0,0 +1,34 @@
+
+PCM
+readtbl
+
+noderange1
+noderange2
+.
+.
+.
+or ALL
+attribute1
+attribute2
+.
+.
+.
+attributeN
+
+
+
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/setAttribs b/xCAT-test/xmlapi/setAttribs
new file mode 100644
index 000000000..6ce815a27
--- /dev/null
+++ b/xCAT-test/xmlapi/setAttribs
@@ -0,0 +1,17 @@
+
+PCM
+setAttribs
+
+
+value1
+value2 For multiple key tables
+
+
+ value1
+ value2
+
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/setAttribsreq b/xCAT-test/xmlapi/setAttribsreq
new file mode 100644
index 000000000..739822823
--- /dev/null
+++ b/xCAT-test/xmlapi/setAttribsreq
@@ -0,0 +1,12 @@
+
+PCM
+setAttribs
+
+
+ domain
+
+
+ pok.com
+ This is a test
+
+
diff --git a/xCAT-test/xmlapi/setAttribsreq1 b/xCAT-test/xmlapi/setAttribsreq1
new file mode 100644
index 000000000..4f5daeeaa
--- /dev/null
+++ b/xCAT-test/xmlapi/setAttribsreq1
@@ -0,0 +1,13 @@
+
+PCM
+setAttribs
+
+
+ 10.0.1.0
+ 255.255.255.0
+
+
+ 10.0.1.254
+
+
+
diff --git a/xCAT-test/xmlapi/setAttribsreq2 b/xCAT-test/xmlapi/setAttribsreq2
new file mode 100644
index 000000000..04b0f63d3
--- /dev/null
+++ b/xCAT-test/xmlapi/setAttribsreq2
@@ -0,0 +1,13 @@
+
+PCM
+setAttribs
+
+
+ 10.0.1.0
+ 255.255.255.0
+
+
+ mynet
+ 10.0.1.254
+
+
diff --git a/xCAT-test/xmlapi/setNodeAttribs b/xCAT-test/xmlapi/setNodeAttribs
new file mode 100644
index 000000000..45f4cbf39
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodeAttribs
@@ -0,0 +1,19 @@
+
+PCM
+setNodeAttribs
+
+noderange
+attribute1
+value1
+attribute2
+value2
+.
+.
+.
+attributeN
+valueN
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq b/xCAT-test/xmlapi/setNodesAttribsreq
new file mode 100644
index 000000000..1fa4d38f6
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq
@@ -0,0 +1,14 @@
+
+PCM
+setNodesAttribs
+blade01-blade02
+
+
+ nodelist
+
+ all,compute,lissa
+ This is a another test
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq1 b/xCAT-test/xmlapi/setNodesAttribsreq1
new file mode 100644
index 000000000..ebaece6cc
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq1
@@ -0,0 +1,14 @@
+
+PCM
+setNodesAttribs1
+blade01-blade02
+
+
+ nodelist
+
+ all,compute,lissa,newtest
+ This is a another testtest
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq1.1 b/xCAT-test/xmlapi/setNodesAttribsreq1.1
new file mode 100644
index 000000000..79b45ffec
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq1.1
@@ -0,0 +1,21 @@
+
+PCM
+setNodesAttribs
+blade01-blade02
+
+
+ nodelist
+
+ lissa
+ This is a another testx
+
+
+
+ nodetype
+
+ Redhat2
+ This is a another testy
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq1.new b/xCAT-test/xmlapi/setNodesAttribsreq1.new
new file mode 100644
index 000000000..35856d42c
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq1.new
@@ -0,0 +1,14 @@
+
+PCM
+setNodesAttribs1
+blade01-blade02
+
+
+ nodelist
+
+ all,compute
+ This is a test
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq2 b/xCAT-test/xmlapi/setNodesAttribsreq2
new file mode 100644
index 000000000..665213e45
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq2
@@ -0,0 +1,17 @@
+
+PCM
+setNodesAttribs
+
+
+
+
+ fsp1
+ 1
+
+
+ cec1
+
+
+
+
+
diff --git a/xCAT-test/xmlapi/setNodesAttribsreq3 b/xCAT-test/xmlapi/setNodesAttribsreq3
new file mode 100644
index 000000000..e82933b40
--- /dev/null
+++ b/xCAT-test/xmlapi/setNodesAttribsreq3
@@ -0,0 +1,19 @@
+
+PCM
+setNodesAttribs
+compute2
+
+
+ nodelist
+
+ allxxx
+
+
+
+ nodetype
+
+ Redhat20
+
+
+
+
diff --git a/xCAT-test/xmlapi/xmldriver b/xCAT-test/xmlapi/xmldriver
new file mode 100755
index 000000000..c355b976c
--- /dev/null
+++ b/xCAT-test/xmlapi/xmldriver
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
+BEGIN
+{
+ $::XCATROOT =
+ $ENV{'XCATROOT'} ? $ENV{'XCATROOT'}
+ : -d '/opt/xcat' ? '/opt/xcat'
+ : '/usr';
+}
+use lib "$::XCATROOT/lib/perl";
+use strict;
+use File::Basename;
+use Cwd;
+use Socket;
+use XML::Simple;
+require xCAT::MsgUtils;
+use xCAT::Utils;
+require xCAT::Client;
+my $bname = basename($0);
+
+#-----------------------------------------------------------------------------
+
+=head1 pcmdriver - test XMLapi to Table.pm ( via tabutils.pm)
+
+
+=cut
+
+#-----------------------------------------------------------------------------
+# Main
+
+ $ENV{'XCATXMLTRACE'}=1;
+my $XML=`cat /root/lissa/xmlapi/getTablesAllRowAttribsreq`;
+
+my $data=$XML;
+
+$ENV{'XCATSHOWXML'}=1;
+
+xCAT::Client::submit_request($data, \&xCAT::Client::handle_response);
+exit $xCAT::Client::EXITCODE;
+
diff --git a/xCAT-test/xmlapi/xmldriver.old b/xCAT-test/xmlapi/xmldriver.old
new file mode 100755
index 000000000..581d5f400
--- /dev/null
+++ b/xCAT-test/xmlapi/xmldriver.old
@@ -0,0 +1,60 @@
+#!/usr/bin/env perl
+# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
+BEGIN
+{
+ $::XCATROOT =
+ $ENV{'XCATROOT'} ? $ENV{'XCATROOT'}
+ : -d '/opt/xcat' ? '/opt/xcat'
+ : '/usr';
+}
+use lib "$::XCATROOT/lib/perl";
+use strict;
+use File::Basename;
+use Cwd;
+use Socket;
+use XML::Simple;
+require xCAT::MsgUtils;
+use xCAT::Utils;
+require xCAT::Client;
+my $bname = basename($0);
+
+#-----------------------------------------------------------------------------
+
+=head1 pcmdriver - test XMLapi for PCM
+
+
+=cut
+
+#-----------------------------------------------------------------------------
+# Main
+
+ $ENV{'XCATXMLTRACE'}=1;
+my $XML=`cat /root/lissa/PCM/api/getTablesAllRowAttribsreq`;
+#my $XML=`cat /root/lissa/PCM/api/getAllEntriesreq `;
+#my $XML=`cat /root/lissa/PCM/api/setNodesAttribsreq `;
+#y $XML=`cat /root/lissa/PCM/api/getTablesAllNodeAttribsreq `;
+#my $XML=`cat /root/lissa/PCM/api/getTablesAllNodeAttribsreq1`;
+#my $XML=`cat /root/lissa/PCM/api/getTablesAllNodeAttribsreq2`;
+#my $XML=`cat /root/lissa/PCM/api/getTablesAllNodeAttribsreq3`;
+#my $XML=`cat /root/lissa/PCM/api/getTablesNodesAttribsreq`;
+#my $XML=`cat /root/lissa/PCM/api/getTablesNodesAttribsreq2`;
+#my $XML=`cat /root/lissa/PCM/api/getTablesNodesAttribsreq1`;
+#my $XML=`cat /root/lissa/PCM/api/setNodesAttribsreq1.1 `;
+#my $XML=`cat /root/lissa/PCM/api/getNodesAttribsreq1 `;
+#y $XML=`cat /root/lissa/PCM/api/getNodesAttribsreq `;
+#my $XML=`cat /root/lissa/PCM/api/getNodesAttribsreq2 `;
+#my $XML=`cat /root/lissa/PCM/api/setNodesAttribsreq3 `;
+#my $XML=`cat /root/lissa/PCM/api/delEntriesreq `;
+#my $XML=`cat /root/lissa/PCM/api/delEntriesreq3 `;
+#my $XML=`cat /root/lissa/PCM/api/getAttribsreq `;
+#my $XML=`cat /root/lissa/PCM/api/getAttribsreq2 `;
+#my $XML=`cat /root/lissa/PCM/api/setAttribsreq `;
+#my $XML=`cat /root/lissa/PCM/api/noderangereq `;
+
+my $data=$XML;
+
+$ENV{'XCATSHOWXML'}=1;
+
+xCAT::Client::submit_request($data, \&xCAT::Client::handle_response);
+exit $xCAT::Client::EXITCODE;
+
diff --git a/xCAT-test/xmlapi/xmldriver.org b/xCAT-test/xmlapi/xmldriver.org
new file mode 100644
index 000000000..dbc4bbc5e
--- /dev/null
+++ b/xCAT-test/xmlapi/xmldriver.org
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
+BEGIN
+{
+ $::XCATROOT =
+ $ENV{'XCATROOT'} ? $ENV{'XCATROOT'}
+ : -d '/opt/xcat' ? '/opt/xcat'
+ : '/usr';
+}
+use lib "$::XCATROOT/lib/perl";
+use strict;
+use File::Basename;
+use Cwd;
+use Socket;
+
+#use Data::Dumper;
+use Getopt::Long;
+require xCAT::MsgUtils;
+require xCAT::DSHCLI;
+use xCAT::Utils;
+use xCAT::RemoteShellExp;
+require xCAT::PCMClient;
+my $bname = basename($0);
+
+#-----------------------------------------------------------------------------
+
+=head1 pcmdriver - test XMLapi for PCM
+
+
+=cut
+
+#-----------------------------------------------------------------------------
+# Main
+
+
+my $XML=`cat /root/lissa/PCM/api/getAllEntriesreq `;
+my $data=$XML;
+
+
+
+xCAT::PCMClient::submit_request($data, \&xCAT::Client::handle_response);
+exit $xCAT::Client::EXITCODE;
+
diff --git a/xCAT-test/xmlapi/xmlrequest.org b/xCAT-test/xmlapi/xmlrequest.org
new file mode 100644
index 000000000..3a1dac456
--- /dev/null
+++ b/xCAT-test/xmlapi/xmlrequest.org
@@ -0,0 +1,6 @@
+
+cli
+nodels
+/svn/xcat-core/2.6/perl-xCAT/xCAT
+service
+
diff --git a/xCAT-test/xmlapi/xmlresponse b/xCAT-test/xmlapi/xmlresponse
new file mode 100644
index 000000000..da2dce15a
--- /dev/null
+++ b/xCAT-test/xmlapi/xmlresponse
@@ -0,0 +1,9 @@
+
+
+rhsn
+
+
+rhsn
+
+
+