You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2012/06/20 03:48:00 UTC

[1/8] git commit: Introduced plugins directory. Moved ovm into plugins. Introduced build.xml for ovm.

Updated Branches:
  refs/heads/master d8a1fec45 -> e2a32ab4f


Introduced plugins directory.
Moved ovm into plugins.
Introduced build.xml for ovm.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/e2a32ab4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/e2a32ab4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/e2a32ab4

Branch: refs/heads/master
Commit: e2a32ab4f787f682a8723bbf9a5ebb653aaccee5
Parents: d8a1fec
Author: Alex Huang <al...@citrix.com>
Authored: Tue Jun 19 18:27:09 2012 -0700
Committer: Alex Huang <al...@citrix.com>
Committed: Tue Jun 19 18:27:09 2012 -0700

----------------------------------------------------------------------
 build/build-cloud.xml                              |    9 +-
 build/build-common.xml                             |    2 +-
 ovm/.classpath                                     |   15 -
 ovm/.project                                       |   23 -
 ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py     |  171 --
 ..._reposExceptionDueToWrongReturnValueCheck.patch |   13 -
 ovm/scripts/vm/hypervisor/ovm/OvmCommonModule.py   |  156 --
 ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py     |   62 -
 ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py     |   58 -
 .../OvmDontTouchOCFS2ClusterWhenAgentStart.patch   |   13 -
 ovm/scripts/vm/hypervisor/ovm/OvmFaultConstants.py |   95 -
 .../vm/hypervisor/ovm/OvmHaHeartBeatModule.py      |  102 --
 ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py     |  304 ----
 ovm/scripts/vm/hypervisor/ovm/OvmLoggerModule.py   |   51 -
 ovm/scripts/vm/hypervisor/ovm/OvmNetworkModule.py  |  429 -----
 ovm/scripts/vm/hypervisor/ovm/OvmOCFS2Module.py    |   76 -
 ovm/scripts/vm/hypervisor/ovm/OvmObjectModule.py   |   20 -
 ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch       |   23 -
 .../vm/hypervisor/ovm/OvmSecurityGroupModule.py    |  478 -----
 .../vm/hypervisor/ovm/OvmStoragePoolModule.py      |  428 -----
 ovm/scripts/vm/hypervisor/ovm/OvmVifModule.py      |   62 -
 ovm/scripts/vm/hypervisor/ovm/OvmVmModule.py       |  538 ------
 ovm/scripts/vm/hypervisor/ovm/OvmVolumeModule.py   |  156 --
 ovm/scripts/vm/hypervisor/ovm/configureOvm.sh      |  127 --
 .../com/cloud/ovm/hypervisor/OvmDiscoverer.java    |  287 ---
 ovm/src/com/cloud/ovm/hypervisor/OvmFencer.java    |  122 --
 ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java      |   57 -
 ovm/src/com/cloud/ovm/hypervisor/OvmHelper.java    |   61 -
 .../com/cloud/ovm/hypervisor/OvmResourceBase.java  | 1381 ---------------
 ovm/src/com/cloud/ovm/object/Coder.java            |   81 -
 ovm/src/com/cloud/ovm/object/Connection.java       |  135 --
 ovm/src/com/cloud/ovm/object/OvmBridge.java        |   66 -
 ovm/src/com/cloud/ovm/object/OvmDisk.java          |   27 -
 ovm/src/com/cloud/ovm/object/OvmHost.java          |   89 -
 ovm/src/com/cloud/ovm/object/OvmObject.java        |   16 -
 ovm/src/com/cloud/ovm/object/OvmSecurityGroup.java |   50 -
 ovm/src/com/cloud/ovm/object/OvmStoragePool.java   |  101 --
 ovm/src/com/cloud/ovm/object/OvmVif.java           |   26 -
 ovm/src/com/cloud/ovm/object/OvmVlan.java          |   39 -
 ovm/src/com/cloud/ovm/object/OvmVm.java            |  108 --
 ovm/src/com/cloud/ovm/object/OvmVolume.java        |   49 -
 ovm/src/com/cloud/ovm/object/Test.java             |  179 --
 .../deployment-planner/user-dispersing/.classpath  |   10 +
 .../deployment-planner/user-dispersing/.project    |   17 +
 .../.settings/org.eclipse.jdt.core.prefs           |   12 +
 .../deployment-planner/user-dispersing/build.xml   |  609 +++++++
 .../com/cloud/deploy/UserDispersingPlanner.java    |  215 +++
 plugins/hypervisors/ovm/.classpath                 |   15 +
 plugins/hypervisors/ovm/.project                   |   23 +
 plugins/hypervisors/ovm/build.xml                  |  128 ++
 .../ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py |  171 ++
 ..._reposExceptionDueToWrongReturnValueCheck.patch |   13 +
 .../scripts/vm/hypervisor/ovm/OvmCommonModule.py   |  156 ++
 .../ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py |   62 +
 .../ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py |   58 +
 .../OvmDontTouchOCFS2ClusterWhenAgentStart.patch   |   13 +
 .../scripts/vm/hypervisor/ovm/OvmFaultConstants.py |   95 +
 .../vm/hypervisor/ovm/OvmHaHeartBeatModule.py      |  102 ++
 .../ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py |  304 ++++
 .../scripts/vm/hypervisor/ovm/OvmLoggerModule.py   |   51 +
 .../scripts/vm/hypervisor/ovm/OvmNetworkModule.py  |  429 +++++
 .../scripts/vm/hypervisor/ovm/OvmOCFS2Module.py    |   76 +
 .../scripts/vm/hypervisor/ovm/OvmObjectModule.py   |   20 +
 .../ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch   |   23 +
 .../vm/hypervisor/ovm/OvmSecurityGroupModule.py    |  478 +++++
 .../vm/hypervisor/ovm/OvmStoragePoolModule.py      |  428 +++++
 .../ovm/scripts/vm/hypervisor/ovm/OvmVifModule.py  |   62 +
 .../ovm/scripts/vm/hypervisor/ovm/OvmVmModule.py   |  538 ++++++
 .../scripts/vm/hypervisor/ovm/OvmVolumeModule.py   |  156 ++
 .../ovm/scripts/vm/hypervisor/ovm/configureOvm.sh  |  127 ++
 .../com/cloud/ovm/hypervisor/OvmDiscoverer.java    |  287 +++
 .../src/com/cloud/ovm/hypervisor/OvmFencer.java    |  122 ++
 .../ovm/src/com/cloud/ovm/hypervisor/OvmGuru.java  |   57 +
 .../src/com/cloud/ovm/hypervisor/OvmHelper.java    |   61 +
 .../com/cloud/ovm/hypervisor/OvmResourceBase.java  | 1381 +++++++++++++++
 .../ovm/src/com/cloud/ovm/object/Coder.java        |   81 +
 .../ovm/src/com/cloud/ovm/object/Connection.java   |  135 ++
 .../ovm/src/com/cloud/ovm/object/OvmBridge.java    |   66 +
 .../ovm/src/com/cloud/ovm/object/OvmDisk.java      |   27 +
 .../ovm/src/com/cloud/ovm/object/OvmHost.java      |   89 +
 .../ovm/src/com/cloud/ovm/object/OvmObject.java    |   16 +
 .../src/com/cloud/ovm/object/OvmSecurityGroup.java |   50 +
 .../src/com/cloud/ovm/object/OvmStoragePool.java   |  101 ++
 .../ovm/src/com/cloud/ovm/object/OvmVif.java       |   26 +
 .../ovm/src/com/cloud/ovm/object/OvmVlan.java      |   39 +
 .../ovm/src/com/cloud/ovm/object/OvmVm.java        |  108 ++
 .../ovm/src/com/cloud/ovm/object/OvmVolume.java    |   49 +
 .../ovm/src/com/cloud/ovm/object/Test.java         |  179 ++
 .../com/cloud/deploy/UserDispersingPlanner.java    |  215 ---
 89 files changed, 7267 insertions(+), 6498 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/build/build-cloud.xml
----------------------------------------------------------------------
diff --git a/build/build-cloud.xml b/build/build-cloud.xml
index b533db9..1ec2afb 100755
--- a/build/build-cloud.xml
+++ b/build/build-cloud.xml
@@ -588,15 +588,8 @@
   </target>
   
   <!-- ===================== Ovm.Jar ===================== -->
-  <property name="ovm.jar" value="cloud-ovm.jar" />
-  <property name="ovm.dir" location="${base.dir}/ovm" />
-  <property name="ovm-scripts.dir" location="${ovm.dir}/scripts" />
-  <path id="ovm.classpath" >
-    <path refid="deps.classpath" />
-    <path refid="dist.classpath" />
-  </path>
   <target name="compile-ovm" depends="-init, compile-server" description="Compile OVM">
-    <compile-java jar.name="${ovm.jar}" top.dir="${ovm.dir}" classpath="ovm.classpath" />
+  	<ant antfile="${base.dir}/plugins/hypervisors/ovm/build.xml" target="build"/>
   </target>
 
   <target name="compile-all" description="Compile all of the jars" depends="compile-utils, compile-api, compile-core, compile-server, compile-ovm"/>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/build/build-common.xml
----------------------------------------------------------------------
diff --git a/build/build-common.xml b/build/build-common.xml
index 1d1aa87..7240f53 100755
--- a/build/build-common.xml
+++ b/build/build-common.xml
@@ -73,7 +73,7 @@
         <manifest>
           <attribute name="Class-Path" value="" />
           <attribute name="Built-By" value="${built.by}" />
-          <attribute name="Specification-Title" value="VMOps Cloud Stack" />
+          <attribute name="Specification-Title" value="Apache Cloud Stack" />
           <attribute name="Specification-Version" value="${impl.version}" />
           <attribute name="Specification-Vendor" value="${company.name}" />
           <attribute name="Implementation-Title" value="@{jar.name}" />

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/.classpath
----------------------------------------------------------------------
diff --git a/ovm/.classpath b/ovm/.classpath
deleted file mode 100644
index 45bd29e..0000000
--- a/ovm/.classpath
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/core"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/utils"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/server"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/api"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/deps"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/vmware-base"/>
-	<classpathentry kind="src" path="/agent-simulator"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/agent"/>
-	<classpathentry exported="true" kind="lib" path="/deps/cloud-xmlrpc-common-3.1.3.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/.project
----------------------------------------------------------------------
diff --git a/ovm/.project b/ovm/.project
deleted file mode 100755
index 4b9d345..0000000
--- a/ovm/.project
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>ovm</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.python.pydev.PyDevBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.python.pydev.pythonNature</nature>
-	</natures>
-</projectDescription>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py b/ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py
deleted file mode 100644
index c8bffe2..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/ConfigFileOps.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-import re
-class ConfigFileOps:
-    class entry:
-        def __init__(self, name, value, op, separator):
-            self.name = name
-            self.value = value
-            self.state = "new"
-            self.op = op
-            self.separator = separator
-        def setState(self, state):
-            self.state = state 
-        def getState(self):
-            return self.state
-
-    def __init__(self, fileName, cfg=None):
-        self.fileName = fileName
-        self.entries = []
-        self.backups = []
-        
-        if cfg is not None:
-            cfg.cfoHandlers.append(self)
-
-    def addEntry(self, name, value, separator="="):
-        e = self.entry(name, value, "add", separator)
-        self.entries.append(e)
-    
-    def rmEntry(self, name, value, separator="="):
-        entry = self.entry(name, value, "rm", separator)
-        self.entries.append(entry)
-    
-    def getEntry(self, name, separator="="):
-        try:
-            ctx = file(self.fileName).read(-1)
-            match = re.search("^" + name + ".*", ctx, re.MULTILINE)
-            if match is None:
-                return ""
-            line = match.group(0).split(separator, 1)
-            return line[1]
-        except:
-            return ""
-
-    def save(self):
-        fp = open(self.fileName, "r")
-        newLines = []
-        for line  in fp.readlines():
-            matched = False
-            for entry in self.entries:
-                if entry.op == "add":
-                    if entry.separator == "=":
-                        matchString = "^\ *" + entry.name + ".*"
-                    elif entry.separator == " ":
-                        matchString = "^\ *" + entry.name + "\ *" + entry.value
-                else:
-                    if entry.separator == "=":
-                        matchString = "^\ *" + entry.name + "\ *=\ *" + entry.value
-                    else:
-                        matchString = "^\ *" + entry.name + "\ *" + entry.value
-                
-                match = re.match(matchString, line)
-                if match is not None:
-                    if entry.op == "add" and entry.separator == "=":
-                        newline = entry.name + "=" + entry.value + "\n"
-                        entry.setState("set")
-                        newLines.append(newline)
-                        self.backups.append([line, newline])
-                        matched = True
-                        break
-                    elif entry.op == "rm":
-                        entry.setState("set")
-                        self.backups.append([line, None])
-                        matched = True
-                        break  
-                    
-            if not matched: 
-                newLines.append(line)
-
-        for entry in self.entries:
-            if entry.getState() != "set":
-                if entry.op == "add":
-                    newline = entry.name + entry.separator + entry.value + "\n"
-                    newLines.append(newline)
-                    self.backups.append([None, newline])
-                    entry.setState("set")
-
-        fp.close()
-        
-        file(self.fileName, "w").writelines(newLines)
-
-    def replace_line(self, startswith,stanza,always_add=False):
-        lines = [ s.strip() for s in file(self.fileName).readlines() ]
-        newlines = []
-        replaced = False
-        for line in lines:
-            if re.search(startswith, line):
-                if stanza is not None:
-                    newlines.append(stanza)
-                    self.backups.append([line, stanza])
-                replaced = True
-            else: newlines.append(line)
-        if not replaced and always_add:
-            newlines.append(stanza)
-            self.backups.append([None, stanza])
-        newlines = [ s + '\n' for s in newlines ]
-        file(self.fileName,"w").writelines(newlines)
-
-    def replace_or_add_line(self, startswith,stanza):
-        return self.replace_line(startswith,stanza,always_add=True)
-
-    def add_lines(self, lines, addToBackup=True):
-        fp = file(self.fileName).read(-1) 
-        sh = re.escape(lines)
-        match = re.search(sh, fp, re.MULTILINE) 
-        if match is not None:
-            return
-    
-        fp += lines
-        file(self.fileName, "w").write(fp)
-        self.backups.append([None, lines])
-        
-    def replace_lines(self, src, dst, addToBackup=True):
-        fp = file(self.fileName).read(-1) 
-        sh = re.escape(src)
-        if dst is None:
-            dst = ""
-        repl,nums = re.subn(sh, dst, fp)
-        if nums <=0:
-            return
-        file(self.fileName, "w").write(repl)
-        if addToBackup:
-            self.backups.append([src, dst])
-
-    def append_lines(self, match_lines, append_lines):
-        fp = file(self.fileName).read(-1)
-        sh = re.escape(match_lines)
-        match = re.search(sh, fp, re.MULTILINE)
-        if match is None:
-            return
-
-        sh = re.escape(append_lines)
-        if re.search(sh, fp, re.MULTILINE) is not None:
-            return
-
-        newlines = []
-        for line in file(self.fileName).readlines():
-            if re.search(match_lines, line) is not None:
-                newlines.append(line + append_lines)
-                self.backups.append([line, line + append_lines])
-            else:
-                newlines.append(line)
-
-        file(self.fileName, "w").writelines(newlines)
-            
-    def backup(self):
-        for oldLine, newLine in self.backups:
-            if newLine is None:
-                self.add_lines(oldLine, False)
-            else:
-                self.replace_lines(newLine, oldLine, False)
-            

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/Fixget_storage_reposExceptionDueToWrongReturnValueCheck.patch
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/Fixget_storage_reposExceptionDueToWrongReturnValueCheck.patch b/ovm/scripts/vm/hypervisor/ovm/Fixget_storage_reposExceptionDueToWrongReturnValueCheck.patch
deleted file mode 100644
index 7c41e55..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/Fixget_storage_reposExceptionDueToWrongReturnValueCheck.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/OVSXUtility.py b/OVSXUtility.py
-index 4a98bc8..1053ef7 100644
---- a/OVSXUtility.py
-+++ b/OVSXUtility.py
-@@ -160,7 +160,7 @@ def get_storage_repos():
-     l = parse_storage_repos()
-     for sr in l:
-         d = get_storage_free_space(sr)
--        if d:
-+        if len(d) > 0:
-             d_repos_space[sr] = d[sr]
- 
-     if not d_repos_space:

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmCommonModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmCommonModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmCommonModule.py
deleted file mode 100755
index aae6f71..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmCommonModule.py
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-'''
-Created on May 17, 2011
-
-@author: frank
-'''
-
-try:
-    import json
-except ImportError:
-    import simplejson as json
-    
-from OvmObjectModule import *
-import types
-import logging
-import popen2
-import subprocess
-from OvmFaultConstants import toErrCode, dispatchErrCode, NoVmFoundException, ShellExceutedFailedException
-from xmlrpclib import Fault as XmlRpcFault
-from OVSCommons import *
-from OvmLoggerModule import OvmLogger
-from OVSXXenStore import xen_get_vm_path
-from OVSSiteRMServer import get_master_ip
-
-HEARTBEAT_TIMESTAMP_FORMAT='<timestamp>%s</timestamp>'
-HEARTBEAT_TIMESTAMP_PATTERN='(\<timestamp\>\d+.\d+<\/timestamp\>)'
-HEARTBEAT_DIR='heart_beat'
-ETC_HOSTS='/etc/hosts'
-HOSTNAME_FILE='/etc/sysconfig/network'
-OWNER_FILE_PREFIX='host_'
-OCFS2_CONF='/etc/ocfs2/cluster.conf'
-
-logger = OvmLogger('OvmCommon')
-
-def setAttrFromDict(obj, name, refDict, convertFunc=None):
-    if not convertFunc:
-        setattr(obj, name, refDict[name])
-    else:
-        setattr(obj, name, convertFunc(refDict[name]))
-
-def safeSetAttr(obj, name, value):
-    if not hasattr(obj, name): raise Exception("%s doesn't have attribute %s"%(obj.__class__.__name__, name))
-    setattr(obj, name, value)
-    
-def toAscii(jstr):
-    return str(jstr).encode('ascii', 'ignore')
-
-def toAsciiHook(dct):
-    for k in dct:
-        v = dct[k]
-        if type(v) is types.UnicodeType:
-            v = toAscii(v)
-        del dct[k]
-        k = toAscii(k)
-        dct[k] = v
-    return dct
-    
-def asciiLoads(jStr):
-    jStr = str(jStr).replace("'", '"').replace('False', 'false').replace('True', 'true')
-    return json.loads(jStr, object_hook=toAsciiHook)
-
-def exceptionIfNoSuccess(str, errMsg=None):
-    if not errMsg: errMsg = str
-    if not "success" in str: raise Exception("%s (%s)"%(errMsg, str))
-
-def successToMap(str, sep=';'):
-    if not str.startswith("success"): raise Exception(str)
-    str = str[len('success:'):]
-    dct = {}
-    for pair in str.split(sep):
-        (key, value) = pair.split('=', 1)
-        dct[key] = value
-    return dct
-
-def jsonSuccessToMap(str):
-    dct = json.loads(str)
-    if dct['status'] != 'SUCC': raise Exception(str)
-    return dct['value']
-    
-def safeDictSet(obj, dct, name):
-    if not hasattr(obj, name): raise Exception("%s has no attribute %s for encoding"%(obj.__class__.__name__, name))
-    dct[name] = getattr(obj, name)
-
-def normalizeToGson(str):
-    return str.replace('\\', '').strip('"').replace('"{', '{').replace('}"', '}');
-
-def toGson(obj):
-    return normalizeToGson(json.dumps(obj))
-
-def MtoBytes(M):
-    return M * 1024 * 1024
-
-def BytesToM(bytes):
-    return bytes/(1024*1024)
-
-def BytesToG(bytes):
-    return bytes/(1024*1024*1024)
-
-def runCmd(cmds):
-    process = subprocess.Popen(cmds, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    stdout, stderr = process.communicate()
-    if process.returncode != 0:
-        raise ShellExceutedFailedException(stderr, process.returncode)
-    return stdout
-
-def doCmd(lst):
-    cmds = [str(i) for i in lst]
-    cmdStr = ' '.join(cmds)
-    logger.debug(doCmd, cmdStr)
-    res = runCmd(cmdStr)
-    logger.debug(doCmd, 'result:' + res)
-    return res
-
-def execute(cmd):
-    p = popen2.Popen3(cmd, True)
-    if (p.wait() != 0):
-        raise Exception("Failed to execute command. Command: " + cmd + ", Error: " + p.childerr.read())
-    return p.fromchild.read()
-
-def getDomId(vm_name):
-    return execute("xm list | grep " + vm_name + " | awk '{print $2}'").strip()
-    
-def raiseExceptionIfFail(res):
-    if not "success" in res and not "SUCC" in res: raise Exception(res)
-
-def ipToHeartBeatFileName(ip):
-    return ip.replace('.', '_') + "_HEARTBEAT"
-
-def getVmNameFromConfigureFile(cfgPath):
-    fd = open(cfgPath)
-    for i in fd.readlines():
-        i = i.strip()
-        if i.startswith('name'):
-            (key, value) = i.split("=", 1)
-            value = value.strip().strip("'")
-            fd.close()
-            return value
-    fd.close()
-    raise Exception('Cannot find vm name in %s'%cfgPath)
-
-def makeOwnerFileName():
-    hostIp = successToMap(get_master_ip())['ip']
-    ownerFileName = OWNER_FILE_PREFIX + hostIp.replace('.', '_')
-    return ownerFileName
-    

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py
deleted file mode 100644
index 7ae6c72..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmDiskModule.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-'''
-Created on May 17, 2011
-
-@author: frank
-'''
-
-from OvmCommonModule import *
-
-class OvmDiskDecoder(json.JSONDecoder):
-    def decode(self, jStr):
-        deDict = asciiLoads(jStr)
-        disk = OvmDisk()
-        setAttrFromDict(disk, 'path', deDict)
-        setAttrFromDict(disk, 'type', deDict)
-        setAttrFromDict(disk, 'isIso', deDict)
-        return disk
-
-class OvmDiskEncoder(json.JSONEncoder):
-    def default(self, obj):
-        if not isinstance(obj, OvmDisk): raise Exception("%s is not instance of OvmDisk"%type(obj))
-        dct = {}
-        safeDictSet(obj, dct, 'path')
-        safeDictSet(obj, dct, 'type')
-        return dct    
-
-def fromOvmDisk(disk):
-    return normalizeToGson(json.dumps(disk, cls=OvmDiskEncoder))
-
-def fromOvmDiskList(diskList):
-    return [fromOvmDisk(d) for d in diskList]
-
-def toOvmDisk(jStr):
-    return json.loads(jStr, cls=OvmDiskDecoder)
-
-def toOvmDiskList(jStr):
-    disks = []
-    for i in jStr:
-        d = toOvmDisk(i)
-        disks.append(d)
-    return disks
-
-class OvmDisk(OvmObject):
-    path = ''
-    type = ''
-    isIso = False
-   
-    
-if __name__ == "__main__":
-    print toOvmDisk('''{"type":"w","path":"/data/data.raw"}''')
-    print toOvmDisk('''{"path":"/data/data.raw'","type":"w"}''')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py b/ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py
deleted file mode 100644
index 8db558e..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmDispatcher.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-import types
-from OvmCommonModule import *
-from xmlrpclib import Fault
-from OVSCommons import *
-import OvmFaultConstants
-
-import OvmHostModule
-import OvmStoragePoolModule
-import OvmVmModule
-import OvmNetworkModule
-import OvmVolumeModule
-import OvmSecurityGroupModule
-from OvmHaHeartBeatModule import OvmHaHeartBeat
-
-ExposedClass = {}
-logger = OvmLogger('OvmDispatcher')
-def InitOvmDispacther():
-    global ExposedClass
-    modules = [ eval(attr) for attr in globals() if isinstance(eval(attr), types.ModuleType) ]
-    for m in modules:
-        for name in dir(m):
-            clz = getattr(m, name)
-            if type(clz) is types.TypeType and issubclass(clz, OvmObject):
-                ExposedClass[name] = clz
-    logger.debug(InitOvmDispacther, "Discovered exposed class:\n\n%s"%"\n".join(ExposedClass))
-
-@exposed
-def OvmDispatch(methodName, *params):
-    global ExposedClass
-    p = methodName.split('.')
-    if len(p) != 2:
-        logger.error(OvmDispatch, "%s is not a vaild format, should be classname.methodname"%p)
-        raise Fault(dispatchErrCode('InvalidCallMethodFormat'), "%s is not a vaild format, should be classname.methodname"%p)
-    clzName = p[0]
-    funcName = p[1]
-    if clzName not in ExposedClass.keys():
-        logger.error(OvmDispatch, "class %s is not exposed by agent"%clzName)
-        raise Fault(dispatchErrCode('InvaildClass'), "class %s is not exposed by agent"%clzName)
-    clz = ExposedClass[clzName]
-    if not hasattr(clz, funcName):
-        logger.error(OvmDispatch, "class %s has no function %s"%(clzName, funcName))
-        raise Fault(dispatchErrCode('InvaildFunction'), "class %s has no function %s"%(clzName, funcName))
-    logger.debug(OvmDispatch, "Entering %s.%s ===>"%(clzName, funcName))
-    rs = getattr(clz, funcName)(*params)
-    logger.debug(OvmDispatch, "Exited %s.%s <==="%(clzName, funcName))
-    return rs

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmDontTouchOCFS2ClusterWhenAgentStart.patch
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmDontTouchOCFS2ClusterWhenAgentStart.patch b/ovm/scripts/vm/hypervisor/ovm/OvmDontTouchOCFS2ClusterWhenAgentStart.patch
deleted file mode 100644
index dfe8462..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmDontTouchOCFS2ClusterWhenAgentStart.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/OVSAgentAutoStart.py b/OVSAgentAutoStart.py
-index 88fa18c..794a363 100755
---- a/OVSAgentAutoStart.py
-+++ b/OVSAgentAutoStart.py
-@@ -111,8 +111,6 @@ def prepare_cluster_heartbeat():
- JOBS = [
-     ["command", join(dirname(__file__), "utils/upgrade_agent.py")],
-     ["function", "get_agent_version", ()],
--    ["function", "prepare_cluster_root", ()],
--    ["function", "prepare_cluster_heartbeat", ()],
-     ["command", join(dirname(__file__), "utils/upgrade.py")],
-     ["command_bg", join(dirname(__file__), "OVSRemasterServer.py")],
-     ["command_bg", join(dirname(__file__), "OVSMonitorServer.py")],

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmFaultConstants.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmFaultConstants.py b/ovm/scripts/vm/hypervisor/ovm/OvmFaultConstants.py
deleted file mode 100755
index 9c3c7b9..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmFaultConstants.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-OvmDispatcherStub = 0
-OvmHostErrCodeStub = 1000
-OvmVmErrCodeStub = 2000
-OvmStoragePoolErrCodeStub = 3000
-OvmNetworkErrCodeStub = 4000
-OvmVolumeErrCodeStub = 5000
-OvmOCFS2ErrCodeStub = 6000
-
-class NoVmFoundException(Exception):
-    pass
-
-class ShellExceutedFailedException(Exception):
-    stderr = ''
-    errCode = -1000
-    
-    def __init__(self, err, code):
-        Exception.__init__(self, "%s, return code:%s"%(err, code))
-        self.stderr = err
-        self.errCode = code
-
-errCode = {
-       # OvmDispatch is not class, these error codes are reserved
-       "OvmDispatch.InvalidCallMethodFormat":OvmDispatcherStub+1,
-       "OvmDispatch.InvaildClass":OvmDispatcherStub+2,
-       "OvmDispatch.InvaildFunction":OvmDispatcherStub+3,
-       "OvmVm.reboot":OvmDispatcherStub+4,
-        
-       "OvmHost.registerAsMaster":OvmHostErrCodeStub+1,
-       "OvmHost.registerAsVmServer":OvmHostErrCodeStub+2,
-       "OvmHost.ping":OvmHostErrCodeStub+3,
-       "OvmHost.getDetails":OvmHostErrCodeStub+4,
-       "OvmHost.getPerformanceStats":OvmHostErrCodeStub+5,
-       "OvmHost.getAllVms":OvmHostErrCodeStub+6,
-       "OvmHost.fence":OvmHostErrCodeStub+7,
-       "OvmHost.setupHeartBeat":OvmHostErrCodeStub+8,
-       "OvmHost.pingAnotherHost":OvmHostErrCodeStub+9,
-       
-       "OvmVm.create":OvmVmErrCodeStub+1,
-       "OvmVm.stop":OvmVmErrCodeStub+2,
-       "OvmVm.getDetails":OvmVmErrCodeStub+3,
-       "OvmVm.getVmStats":OvmVmErrCodeStub+4,
-       "OvmVm.migrate":OvmVmErrCodeStub+5,
-       "OvmVm.register":OvmVmErrCodeStub+6,
-       "OvmVm.getVncPort":OvmVmErrCodeStub+7,
-       "OvmVm.detachOrAttachIso":OvmVmErrCodeStub+8,
-       
-       "OvmStoragePool.create":OvmStoragePoolErrCodeStub+1,
-       "OvmStoragePool.getDetailsByUuid":OvmStoragePoolErrCodeStub+2,
-       "OvmStoragePool.downloadTemplate":OvmStoragePoolErrCodeStub+3,
-       "OvmStoragePool.prepareOCFS2Nodes":OvmStoragePoolErrCodeStub+4,
-       "OvmStoragePool.createTemplateFromVolume":OvmStoragePoolErrCodeStub+5,
-       "OvmStoragePool._umount":OvmStoragePoolErrCodeStub+6,
-       "OvmStoragePool.copyVolume":OvmStoragePoolErrCodeStub+7,
-       "OvmStoragePool.delete":OvmStoragePoolErrCodeStub+8,
-       
-       "OvmNetwork.createBridge":OvmNetworkErrCodeStub+1,
-       "OvmNetwork.deleteBridge":OvmNetworkErrCodeStub+2,
-       "OvmNetwork.createVlan":OvmNetworkErrCodeStub+3,
-       "OvmNetwork.deleteVlan":OvmNetworkErrCodeStub+4,
-       "OvmNetwork.getAllBridges":OvmNetworkErrCodeStub+5,
-       "OvmNetwork.getBridgeByIp":OvmNetworkErrCodeStub+6,
-       "OvmNetwork.createVlanBridge":OvmNetworkErrCodeStub+7,
-       "OvmNetwork.deleteVlanBridge":OvmNetworkErrCodeStub+8,
-       
-       "OvmVolume.createDataDisk":OvmVolumeErrCodeStub+1,
-       "OvmVolume.createFromTemplate":OvmVolumeErrCodeStub+2,
-       "OvmVolume.destroy":OvmVolumeErrCodeStub+3,
-       
-       "OvmOCFS2._addNode":OvmOCFS2ErrCodeStub+1,
-}
-
-
-def toErrCode(clz, func):
-    global errCode
-    if not callable(func): raise Exception("%s is not a callable, cannot get error code"%func)
-    name = clz.__name__ + '.' + func.__name__
-    if name not in errCode.keys(): return -1
-    return errCode[name]
-
-def dispatchErrCode(funcName):
-    name = "OvmDispatch." + funcName
-    if name not in errCode.keys(): return -1
-    return errCode[name]

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmHaHeartBeatModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmHaHeartBeatModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmHaHeartBeatModule.py
deleted file mode 100644
index eeee35a..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmHaHeartBeatModule.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-'''
-Created on Jun 6, 2011
-
-@author: frank
-'''
-from OvmCommonModule import *
-try:
-    from multiprocessing import Process, Manager
-except ImportError:
-    from processing import Process, Manager
-import signal
-
-logger = OvmLogger("OvmHaHeartBeat")
-
-class OvmHaHeartBeat(object):
-    '''
-    classdocs
-    '''
-    def __init__(self, mountPoint, ip):
-        self.mountPoint = mountPoint
-        self.ip = ip
-    
-    def mark(self, file):
-        timestamp = HEARTBEAT_TIMESTAMP_FORMAT % time.time()
-        try:
-            fd = open(file, 'w')
-            fd.write(timestamp)
-            fd.close()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHaHeartBeat.mark, errmsg)
-        
-    def run(self):
-        '''
-        Constructor
-        '''
-        heartBeatDir = join(self.mountPoint, HEARTBEAT_DIR)
-        if not exists(heartBeatDir):
-            os.makedirs(heartBeatDir)
-        hearBeatFile = join(heartBeatDir, ipToHeartBeatFileName(self.ip))
-        while True:
-            self.mark(hearBeatFile)
-            time.sleep(120)
-    
-    @staticmethod
-    def start(poolPath, ip):
-        pidFile = join(PID_DIR, "heartbeat.pid")
-        
-        def isLive():
-            if exists(pidFile):
-                f = open(pidFile)
-                pid = f.read().strip()
-                f.close()
-                if isdir("/proc/%s" % pid):
-                    return long(pid)
-            return None
-        
-        def stopOldHeartBeat(pid):
-            os.kill(pid, signal.SIGTERM)
-            time.sleep(5)
-            pid = isLive()
-            if pid != None:
-                logger.debug(OvmHaHeartBeat.start, "SIGTERM cannot stop heartbeat process %s, will try SIGKILL"%pid)
-                os.kill(pid, signal.SIGKILL)
-                time.sleep(5)
-                pid = isLive()
-                if pid != None:
-                    raise Exception("Cannot stop old heartbeat process %s, setup heart beat failed"%pid)
-        
-        def heartBeat(hb):
-            hb.run()
-           
-        def setupHeartBeat():
-            hb = OvmHaHeartBeat(poolPath, ip)
-            p = Process(target=heartBeat, args=(hb,))
-            p.start()
-            pid = p.pid
-            if not isdir(PID_DIR):
-                os.makedirs(PID_DIR)
-            pidFd = open(pidFile, 'w')
-            pidFd.write(str(pid))
-            pidFd.close()
-            logger.info(OvmHaHeartBeat.start, "Set up heart beat successfully, pid is %s" % pid)
-             
-        pid = isLive()
-        if pid != None:
-            stopOldHeartBeat(pid)
-            
-        setupHeartBeat()
-            

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py
deleted file mode 100755
index 9cfbd46..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmHostModule.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#/usr/bin/python
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-
-from OvmCommonModule import *
-from OVSSiteRMServer import get_master_ip, register_server
-from OVSCommons import *
-from OVSXMonitor import xen_get_xm_info
-from OVSXSysInfo import get_agent_version
-from OVSSiteRMServer import get_srv_agent_status
-from OVSXMonitor import sys_perf_info
-from OVSDB import db_get_vm
-from OvmStoragePoolModule import OvmStoragePool
-from OvmHaHeartBeatModule import OvmHaHeartBeat
-import re
-
-logger = OvmLogger('OvmHost')
-
-class OvmHostEncoder(json.JSONEncoder):
-    def default(self, obj):
-        if not isinstance(obj, OvmHost): raise Exception("%s is not instance of OvmHost"%type(obj))
-        dct = {}
-        safeDictSet(obj, dct, 'masterIp')
-        safeDictSet(obj, dct, 'cpuNum')
-        safeDictSet(obj, dct, 'cpuSpeed')
-        safeDictSet(obj, dct, 'totalMemory')
-        safeDictSet(obj, dct, 'freeMemory')
-        safeDictSet(obj, dct, 'dom0Memory')
-        safeDictSet(obj, dct, 'agentVersion')
-        safeDictSet(obj, dct, 'name')
-        safeDictSet(obj, dct, 'dom0KernelVersion')
-        safeDictSet(obj, dct, 'hypervisorVersion')
-        return dct
-        
-
-def fromOvmHost(host):
-    return normalizeToGson(json.dumps(host, cls=OvmHostEncoder))
-    
-class OvmHost(OvmObject):
-    masterIp = ''
-    cpuNum = 0
-    cpuSpeed = 0
-    totalMemory = 0
-    freeMemory = 0
-    dom0Memory = 0
-    agentVersion = ''
-    name = ''
-    dom0KernelVersion = ''
-    hypervisorVersion = ''
-
-    def _getVmPathFromPrimaryStorage(self, vmName):
-        '''
-        we don't have a database to store vm states, so there is no way to retrieve information of a vm
-        when it was already stopped. The trick is to try to find the vm path in primary storage then we 
-        can read information from its configure file.
-        '''
-        mps = OvmStoragePool()._getAllMountPoints()
-        vmPath = None
-        for p in mps:
-            vmPath = join(p, 'running_pool', vmName)
-            if exists(vmPath): break
-        if not vmPath:
-            logger.error(self._getVmPathFromPrimaryStorage, "Cannot find link for %s in any primary storage, the vm was really gone!"%vmName)
-            raise Exception("Cannot find link for %s in any primary storage, the vm was really gone!"%vmName)
-        return vmPath
-    
-    def _vmNameToPath(self, vmName):
-        # the xen_get_vm_path always sucks!!!
-        #return successToMap((vmName))['path']
-        return self._getVmPathFromPrimaryStorage(vmName)
-    
-    def _getAllDomains(self):
-        stdout = timeout_command(["xm", "list"])
-        l = [ line.split()[:2] for line in stdout.splitlines() ]
-        l = [ (name, id) for (name, id) in l if name not in ("Name", "Domain-0") ]
-        return l
-    
-    def _getDomainIdByName(self, vmName):
-        l = self._getAllDomains()
-        for name, id in l:
-            if vmName == name: return id
-        raise NoVmFoundException("No domain id for %s found"%vmName)
-
-    @staticmethod
-    def registerAsMaster(hostname, username="oracle", password="password", port=8899, isSsl=False):
-        try:
-            logger.debug(OvmHost.registerAsMaster, "ip=%s, username=%s, password=%s, port=%s, isSsl=%s"%(hostname, username, password, port, isSsl))
-            exceptionIfNoSuccess(register_server(hostname, 'site', False, username, password, port, isSsl),
-                             "Register %s as site failed"%hostname)
-            exceptionIfNoSuccess(register_server(hostname, 'utility', False, username, password, port, isSsl),
-                             "Register %s as utility failed"%hostname)
-            rs = SUCC()
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.registerAsMaster, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.registerAsMaster), errmsg)
-    
-    @staticmethod
-    def registerAsVmServer(hostname, username="oracle", password="password", port=8899, isSsl=False):
-        try:
-            logger.debug(OvmHost.registerAsVmServer, "ip=%s, username=%s, password=%s, port=%s, isSsl=%s"%(hostname, username, password, port, isSsl))
-            exceptionIfNoSuccess(register_server(hostname, 'xen', False, username, password, port, isSsl),
-                             "Register %s as site failed"%hostname)
-            rs = SUCC()
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.registerAsVmServer, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.registerAsVmServer), errmsg)
-    
-    @staticmethod
-    def ping(hostname):
-        try:
-            logger.debug(OvmHost.ping, "ping %s"%hostname)
-            exceptionIfNoSuccess(get_srv_agent_status(hostname), "Ovs agent is down")
-            rs = SUCC()
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.ping, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.ping, errmsg))
-        
-    @staticmethod
-    def getDetails():
-        try:
-            obj = OvmHost()
-            masterIp = successToMap(get_master_ip())
-            safeSetAttr(obj, 'masterIp', masterIp['ip'])
-            xmInfo = successToMap(xen_get_xm_info())
-            totalMemory = MtoBytes(long(xmInfo['total_memory']))
-            safeSetAttr(obj, 'totalMemory', totalMemory)
-            freeMemory = MtoBytes(long(xmInfo['free_memory']))
-            safeSetAttr(obj, 'freeMemory', freeMemory)
-            dom0Memory = totalMemory - freeMemory
-            safeSetAttr(obj, 'dom0Memory', dom0Memory)
-            cpuNum = int(xmInfo['nr_cpus'])
-            safeSetAttr(obj, 'cpuNum', cpuNum)
-            cpuSpeed = int(xmInfo['cpu_mhz'])
-            safeSetAttr(obj, 'cpuSpeed', cpuSpeed)
-            name = xmInfo['host']
-            safeSetAttr(obj, 'name', name)
-            dom0KernelVersion = xmInfo['release']
-            safeSetAttr(obj, 'dom0KernelVersion', dom0KernelVersion)
-            hypervisorVersion = xmInfo['xen_major'] + '.' + xmInfo['xen_minor'] + xmInfo['xen_extra']
-            safeSetAttr(obj, 'hypervisorVersion', hypervisorVersion)
-            agtVersion = successToMap(get_agent_version())
-            safeSetAttr(obj, 'agentVersion', agtVersion['agent_version'])
-            res = fromOvmHost(obj)
-            logger.debug(OvmHost.getDetails, res)
-            return res
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.getDetails, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.getDetails), errmsg)
-    
-    @staticmethod
-    def getPerformanceStats(bridgeName):
-        try:
-            rxBytesPath = join("/sys/class/net/", bridgeName, "statistics/rx_bytes")
-            txBytesPath = join("/sys/class/net/", bridgeName, "statistics/tx_bytes")
-            if not exists(rxBytesPath): raise Exception("Cannot find %s"%rxBytesPath)
-            if not exists(txBytesPath): raise Exception("Cannot find %s"%txBytesPath)
-            rxBytes = long(doCmd(['cat', rxBytesPath])) / 1000
-            txBytes = long(doCmd(['cat', txBytesPath])) / 1000
-            sysPerf = successToMap(sys_perf_info())
-            cpuUtil = float(100 - float(sysPerf['cpu_idle']) * 100)
-            freeMemory = MtoBytes(long(sysPerf['mem_free']))
-            xmInfo = successToMap(xen_get_xm_info())
-            totalMemory = MtoBytes(long(xmInfo['total_memory']))
-            rs = toGson({"cpuUtil":cpuUtil, "totalMemory":totalMemory, "freeMemory":freeMemory, "rxBytes":rxBytes, "txBytes":txBytes})
-            logger.info(OvmHost.getPerformanceStats, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.getPerformanceStats, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.getPerformanceStats), errmsg)
-    
-    @staticmethod
-    def getAllVms():
-        def scanStoppedVmOnPrimaryStorage(vms):
-            def isMyVmDirLink(path):
-                return (islink(path) and exists(join(path, 'vm.cfg')) and ('-' in basename(path)) and (exists(join(path, makeOwnerFileName()))))
-                    
-            mps = OvmStoragePool()._getAllMountPoints()
-            for mountPoint in mps:
-                runningPool = join(mountPoint, 'running_pool')
-                if not exists(runningPool):
-                    logger.debug(OvmHost.getAllVms, "Primary storage %s not existing, skip it. this should be first getAllVms() called from Ovm resource configure"%runningPool)
-                    continue
-                    
-                for dir in os.listdir(runningPool):
-                    vmDir = join(runningPool, dir)
-                    if not isMyVmDirLink(vmDir):
-                        logger.debug(OvmHost.getAllVms, "%s is not our vm directory, skip it"%vmDir)
-                        continue
-                    if vms.has_key(dir):
-                        logger.debug(OvmHost.getAllVms, "%s is already in running list, skip it"%dir)
-                        continue
-                    
-                    logger.debug(OvmHost.getAllVms, "Found a stopped vm %s on primary storage %s, report it to management server" % (dir, mountPoint))
-                    vms[dir] = "DOWN"
-                    
-                    
-        try:
-            l = OvmHost()._getAllDomains()
-            dct = {}
-            host = OvmHost()
-            for name, id in l:
-                try:
-                    vmPath = host._getVmPathFromPrimaryStorage(name)
-                    vmStatus = db_get_vm(vmPath)
-                    dct[name] = vmStatus['status']
-                except Exception, e:
-                    logger.debug(OvmHost.getAllVms, "Cannot find link for %s on primary storage, treat it as Error"%name)
-                    dct[name] = 'ERROR'
-                        
-            scanStoppedVmOnPrimaryStorage(dct)
-            rs = toGson(dct)
-            logger.info(OvmHost.getAllVms, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.getAllVms, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.getAllVms), errmsg)
-    
-    @staticmethod
-    def fence(ip):
-        # try 3 times to avoid race condition that read when heartbeat file is being written
-        def getTimeStamp(hbFile):
-            for i in range(1, 3):
-                f = open(hbFile, 'r') 
-                str = f.readline()
-                items = re.findall(HEARTBEAT_TIMESTAMP_PATTERN, str)
-                if len(items) == 0:
-                    logger.debug(OvmHost.fence, "Get an incorrect heartbeat data %s, will retry %s times" % (str, 3-i))
-                    f.close()
-                    time.sleep(5)
-                else:
-                    f.close()
-                    timestamp = items[0]
-                    return timestamp.lstrip('<timestamp>').rstrip('</timestamp>')
-            
-        # totally check in 6 mins, the update frequency is 2 mins
-        def check(hbFile):
-            for i in range(1, 6):
-                ts = getTimeStamp(hbFile)
-                time.sleep(60)
-                nts = getTimeStamp(hbFile)
-                if ts != nts: return True
-                else: logger.debug(OvmHost.fence, '%s is not updated, old value=%s, will retry %s times'%(hbFile, ts, 6-i))
-            return False
-                
-        try:
-            mountpoints = OvmStoragePool()._getAllMountPoints()
-            hbFile = None
-            for m in mountpoints:
-                p = join(m, HEARTBEAT_DIR, ipToHeartBeatFileName(ip))
-                if exists(p):
-                    hbFile = p
-                    break
-                
-            if not hbFile: raise Exception('Can not find heartbeat file for %s in pools %s'%(ip, mountpoints))
-            rs = toGson({"isLive":check(hbFile)})
-            logger.debug(OvmHost.fence, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.fence, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.fence), errmsg)
-    
-    @staticmethod
-    def setupHeartBeat(poolUuid, ip):
-        try:
-            sr = OvmStoragePool()._getSrByNameLable(poolUuid)
-            OvmHaHeartBeat.start(sr.mountpoint, ip)
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.setupHeartBeat, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.setupHeartBeat), errmsg)
-    
-    @staticmethod
-    def pingAnotherHost(ip):
-        try:
-            doCmd(['ping', '-c', '1', '-n', '-q', ip])
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmHost.pingAnotherHost, errmsg)
-            raise XmlRpcFault(toErrCode(OvmHost, OvmHost.pingAnotherHost), errmsg)
-        
-if __name__ == "__main__":
-    print OvmHost.getAllVms()
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmLoggerModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmLoggerModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmLoggerModule.py
deleted file mode 100644
index 07fe78f..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmLoggerModule.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-'''
-Created on May 19, 2011
-
-@author: frank
-'''
-import logging
-
-class OvmLogger(object):
-    '''
-    classdocs
-    '''
-
-
-    def __init__(self, className):
-        '''
-        Constructor
-        '''
-        self.className = className
-        self.logger = logging.getLogger(className)
-    
-    def info(self, func, msg=None):
-        assert callable(func), "%s is not a function"%func
-        fmt = "[%s.%s]: "%(self.className, func.__name__)
-        self.logger.info("%s%s"%(fmt,msg))
-    
-    def debug(self, func, msg=None):
-        assert callable(func), "%s is not a function"%func
-        fmt = "[%s.%s]: "%(self.className, func.__name__)
-        self.logger.debug("%s%s"%(fmt,msg))
-    
-    def error(self, func, msg=None):
-        assert callable(func), "%s is not a function"%func
-        fmt = "[%s.%s]: "%(self.className, func.__name__)
-        self.logger.error("%s%s"%(fmt,msg))
-    
-    def warning(self, func, msg=None):
-        assert callable(func), "%s is not a function"%func
-        fmt = "[%s.%s]: "%(self.className, func.__name__)
-        self.logger.warning("%s%s"%(fmt,msg))
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmNetworkModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmNetworkModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmNetworkModule.py
deleted file mode 100755
index 5813fcd..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmNetworkModule.py
+++ /dev/null
@@ -1,429 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-from OvmCommonModule import *
-import traceback
-import time
-import re
- 
-logger = OvmLogger("OvmNetwork")
-
-class Filter:
-    class Network:
-        IFNAME_LO     = r'(lo)'
-        IFNAME_BRIDGE = r'(xenbr\d+|vlan\d+)'
-        IFNAME_PIF    = r'(eth\d+$|bond\d+$)'
-        IFNAME_VLAN   = r'(eth\d+.\d+$|bond\d+.\d+$)'
-
-
-class Parser(object):
-    '''
-    classdocs
-    '''    
-    def findall(self, pattern, samples):
-        """
-        @param pattern: search pattern
-        @param result: Parser line execution result
-        @return : list of search
-        find result of Parser which has same pattern
-        findall Parser find all pattern in a string
-        """
-        result = []
-        for line in samples:
-            items = re.findall(pattern, line)
-            for item in items:
-                result.append(item)
-        return result
-    
-    def checkPattern(self, pattern, cmd_result):
-        """
-        @param pattern: search pattern
-        @param cmd_result: Parser line execution result
-        @return : True (if pattern is occurred)
-        """
-        for line in cmd_result:
-            items = re.findall(pattern, line)
-            if len(items) > 0:
-                return True
-        return False
-    
-    def search(self, cmd_result, pattern):
-        return None
-    
-class OvmVlanDecoder(json.JSONDecoder):
-    def decode(self, jStr):
-        deDict = asciiLoads(jStr)
-        vlan = OvmVlan()
-        setAttrFromDict(vlan, 'vid', deDict, int)
-        setAttrFromDict(vlan, 'pif', deDict)
-        return vlan
-
-class OvmVlanEncoder(json.JSONEncoder):
-    def default(self, obj):
-        if not isinstance(obj, OvmVlan): raise Exception("%s is not instance of OvmVlan"%type(obj))
-        dct = {}
-        safeDictSet(obj, dct, 'name')
-        safeDictSet(obj, dct, 'vid')
-        safeDictSet(obj, dct, 'pif')
-        return dct
-    
-def toOvmVlan(jStr):
-    return json.loads(jStr, cls=OvmVlanDecoder)
-
-def fromOvmVlan(vlan):
-    return normalizeToGson(json.dumps(vlan, cls=OvmVlanEncoder))
-
-class OvmBridgeDecoder(json.JSONDecoder):
-    def decode(self, jStr):
-        deDic = asciiLoads(jStr)
-        bridge = OvmBridge()
-        setAttrFromDict(bridge, 'name', deDic)
-        setAttrFromDict(bridge, 'attach', deDic)
-        return bridge
-
-class OvmBridgeEncoder(json.JSONEncoder):
-    def default(self, obj):
-        if not isinstance(obj, OvmBridge): raise Exception("%s is not instance of OvmBridge"%type(obj))
-        dct = {}
-        safeDictSet(obj, dct, 'name')
-        safeDictSet(obj, dct, 'attach')
-        safeDictSet(obj, dct, 'interfaces')
-        return dct
-    
-def toOvmBridge(jStr):
-    return json.loads(jStr, cls=OvmBridgeDecoder)
-
-def fromOvmBridge(bridge):
-    return normalizeToGson(json.dumps(bridge, cls=OvmBridgeEncoder))
-
-class OvmInterface(OvmObject):
-    name = ''
-
-class OvmVlan(OvmInterface):
-    vid = 0
-    pif = ''
-
-class OvmBridge(OvmInterface):
-    attach = ''
-    interfaces = []
-
-        
-class OvmNetwork(OvmObject):
-    '''
-    Network
-    '''
-
-    @property
-    def pifs(self):
-        return self._getInterfaces("pif")
-
-    @property
-    def vlans(self):
-        return self._getInterfaces("vlan")
-
-    @property
-    def bridges(self):
-        return self._getInterfaces("bridge")
-    
-    def __init__(self):
-        self.Parser = Parser()
-
-    def _createVlan(self, vlan):
-        """
-        @param jsonString : parameter from client side
-        @return : succ xxxxx
-        ex. jsonString => {vid:100, pif:eth0}
-        ex. return     => 
-        """
-        
-        #Pre-condition
-        #check Physical Interface Name
-        if vlan.pif not in self.pifs.keys():    
-            msg = "Physical Interface(%s) does not exist" % vlan.pif
-            logger.debug(self._createVlan, msg)
-            raise Exception(msg)
-
-        #Pre-condition    
-        #check Vlan Interface Name
-        ifName = "%s.%s" % (vlan.pif, vlan.vid)
-        if ifName in self.vlans.keys():
-            msg = "Vlan Interface(%s) already exist, return it" % ifName
-            logger.debug(self._createVlan, msg)
-            return self.vlans[ifName]
-            
-        doCmd(['vconfig', 'add', vlan.pif, vlan.vid])
-        self.bringUP(ifName)
-        logger.debug(self._createVlan, "Create vlan %s successfully"%ifName)
-        return self.vlans[ifName]
-    
-    def _deleteVlan(self, name):
-        if name not in self.vlans.keys():
-            raise Exception("No vlan device %s found"%name)
-        
-        vlan = self.vlans[name]
-        self.bringDown(vlan.name)
-        doCmd(['vconfig', 'rem', vlan.name])
-        logger.debug(self._deleteVlan, "Delete vlan %s successfully"%vlan.name)
-        
-    
-    def _createBridge(self, bridge):
-        """
-        @return : success
-        ex. {bridge:xapi100, attach:eth0.100}
-        create bridge interface, and attached it 
-        cmd 1: brctl addbr bridge
-        cmd 2: brctl addif brdige attach
-        """
-        
-        if "xenbr" not in bridge.name and "vlan" not in bridge.name:
-            raise Exception("Invalid bridge name %s. Bridge name must be in partten xenbr/vlan, e.g. xenbr0"%bridge.name)
-        
-        #pre-condition
-        #check Bridge Interface Name
-        if bridge.name in self.bridges.keys():
-            msg = "Bridge(%s) already exist, return it" % bridge.name
-            logger.debug(self._createBridge, msg)
-            return self.bridges[bridge.name]
-
-        #pre-condition
-        #check attach must exist
-        #possible to attach in PIF or VLAN 
-        if bridge.attach not in self.vlans.keys() and bridge.attach not in self.pifs.keys():
-            msg = "%s is not either pif or vlan" % bridge.attach
-            logger.error(self._createBridge, msg)
-            raise Exception(msg)
-
-        doCmd(['brctl', 'addbr', bridge.name])
-        doCmd(['brctl', 'addif', bridge.name, bridge.attach])
-        self.bringUP(bridge.name)
-        logger.debug(self._createBridge, "Create bridge %s on %s successfully"%(bridge.name, bridge.attach))
-        return self.bridges[bridge.name]
-    
-    def _getBridges(self):
-        return self.bridges.keys()
-    
-    def _getVlans(self):
-        return self.vlans.keys()
-    
-    def _deleteBridge(self, name):
-        if name not in self.bridges.keys():
-            raise Exception("Can not find bridge %s"%name)
-        
-        bridge = self.bridges[name]
-        if bridge.attach in bridge.interfaces: bridge.interfaces.remove(bridge.attach)
-        if len(bridge.interfaces) != 0:
-            logger.debug(self._deleteBridge, "There are still some interfaces(%s) on bridge %s"%(bridge.interfaces, bridge.name))
-            return False
-        self.bringDown(bridge.name)
-        doCmd(['brctl', 'delbr', bridge.name])
-        logger.debug(self._deleteBridge, "Delete bridge %s successfully"%bridge.name)
-        return True
-        
-    def _getInterfaces(self, type):
-        """
-        @param type : ["pif", "bridge", "tap"]
-        @return : dictionary of Interface Objects
-        get All Interfaces based on type
-        """
-        devices = os.listdir('/sys/class/net')
-        ifs = {}
-        if type == "pif":
-            devs = self.Parser.findall(Filter.Network.IFNAME_PIF, devices)
-            for dev in set(devs):
-                ifInst = OvmInterface()
-                ifInst.name = dev
-                ifs[dev] = ifInst
-                
-        elif type == "vlan":
-            devs = self.Parser.findall(Filter.Network.IFNAME_VLAN, devices)
-            for dev in set(devs):
-                ifInst = OvmVlan()
-                ifInst.name = dev
-                (pif, vid) = dev.split('.')
-                ifInst.pif = pif
-                ifInst.vid = vid
-                ifs[dev] = ifInst
-                 
-        elif type == "bridge":
-            devs = self.Parser.findall(Filter.Network.IFNAME_BRIDGE, devices)
-            for dev in set(devs):
-                ifInst = OvmBridge()
-                ifInst.name = dev
-                devs = os.listdir(join('/sys/class/net', dev, 'brif'))
-                ifInst.interfaces = devs
-                attches = self.Parser.findall(Filter.Network.IFNAME_PIF, devs) + self.Parser.findall(Filter.Network.IFNAME_VLAN, devs)
-                if len(attches) > 1: raise Exception("Multiple PIF on bridge %s (%s)"%(dev, attches))
-                elif len(attches) == 0: ifInst.attach = "null"
-                elif len(attches) == 1: ifInst.attach = attches[0]
-                ifs[dev] = ifInst
-
-        return ifs
-    
-    def bringUP(self, ifName):
-        doCmd(['ifconfig', ifName, 'up'])
-    
-    def bringDown(self, ifName):
-        doCmd(['ifconfig', ifName, 'down'])
-           
-    @staticmethod
-    def createBridge(jStr):
-        try:
-            network = OvmNetwork()
-            network._createBridge(toOvmBridge(jStr))
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.createBridge, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.createBridge), errmsg)
-    
-    @staticmethod
-    def deleteBridge(name):
-        try:
-            network = OvmNetwork()
-            network._deleteBridge(name)
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.deleteBridge, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.deleteBridge), errmsg)
-    
-    @staticmethod
-    def getAllBridges():
-        try:
-            network = OvmNetwork()
-            rs = toGson(network._getBridges())
-            logger.debug(OvmNetwork.getAllBridges, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.getAllBridges, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.getAllBridges), errmsg)
-    
-    @staticmethod
-    def getBridgeByIp(ip):
-        try:
-            routes = doCmd(['ip', 'route']).split('\n')
-            brName = None
-            for r in routes:
-                if ip in r and "xenbr" in r or "vlan" in r:
-                    brName = r.split(' ')[2]
-                    break
-            if not brName: raise Exception("Cannot find bridge with IP %s"%ip)
-            logger.debug(OvmNetwork.getBridgeByIp, "bridge:%s, ip:%s"%(brName, ip))
-            return toGson({"bridge":brName})
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.getBridgeByIp, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.getBridgeByIp), errmsg)              
-    
-    @staticmethod
-    def getVlans():
-        try:
-            network = OvmNetwork()
-            rs = toGson(network._getVlans())
-            logger.debug(OvmNetwork.getVlans, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.getVlans, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.getVlans), errmsg)                        
-    
-    @staticmethod
-    def createVlan(jStr):
-        try:
-            network = OvmNetwork()
-            vlan = network._createVlan(toOvmVlan(jStr))
-            rs = fromOvmVlan(vlan)
-            logger.debug(OvmNetwork.createVlan, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.createVlan, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.createVlan), errmsg)
-    
-    @staticmethod
-    def createVlanBridge(bridgeDetails, vlanDetails):
-        try:
-            network = OvmNetwork()
-            v = toOvmVlan(vlanDetails)
-            b = toOvmBridge(bridgeDetails)
-            vlan = network._createVlan(v)
-            b.attach = vlan.name
-            network._createBridge(b)
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.createVlanBridge, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.createVlanBridge), errmsg)
-    
-    @staticmethod
-    def deleteVlanBridge(name):
-        try:
-            network = OvmNetwork()
-            if name not in network.bridges.keys():
-                logger.debug(OvmNetwork.deleteVlanBridge, "No bridge %s found"%name)
-                return SUCC()
-            
-            bridge = network.bridges[name]
-            vlanName = bridge.attach
-            if network._deleteBridge(name):
-                if vlanName != "null":
-                    network._deleteVlan(vlanName)
-                else:
-                    logger.warning(OvmNetwork.deleteVlanBridge, "Bridge %s has no vlan device"%name)
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.deleteVlanBridge, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.deleteVlanBridge), errmsg)
-    
-    @staticmethod
-    def getBridgeDetails(name):
-        try:
-            network = OvmNetwork()
-            if name not in network.bridges.keys():
-                raise Exception("No bridge %s found"%name)
-            bridge = network.bridges[name]
-            rs = fromOvmBridge(bridge)
-            logger.debug(OvmNetwork.getBridgeDetails, rs)
-            return rs
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.getBridgeDetails, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.getBridgeDetails), errmsg)
-           
-    @staticmethod
-    def deleteVlan(name):
-        try:
-            network = OvmNetwork()
-            network._deleteVlan(name)
-            return SUCC()
-        except Exception, e:
-            errmsg = fmt_err_msg(e)
-            logger.error(OvmNetwork.deleteVlan, errmsg)
-            raise XmlRpcFault(toErrCode(OvmNetwork, OvmNetwork.deleteVlan), errmsg)                      
-        
-if __name__ == "__main__":
-    try:
-        OvmNetwork.getBridgeDetails(sys.argv[1])
-        #=======================================================================
-        # txt = json.dumps({"vid":104, "pif":"eth0"})
-        # txt2 = json.dumps({"name":"xapi3", "attach":"eth0.104"})
-        # print nw.createVlan(txt)
-        # print nw.createBridge(txt2)
-        # 
-        # nw.deleteBridge("xapi3")
-        # nw.deleteVlan("eth0.104")
-        #=======================================================================
-        
-    except Exception, e:
-        print e

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmOCFS2Module.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmOCFS2Module.py b/ovm/scripts/vm/hypervisor/ovm/OvmOCFS2Module.py
deleted file mode 100755
index 9a8f0eb..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmOCFS2Module.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-from OvmCommonModule import *
-
-logger = OvmLogger('OvmOCFS2')  
-class OvmOCFS2(OvmObject):
-    def _prepareConf(self, cluster):
-        conf = '''cluster:
-        node_count = 0
-        name = %s
-        '''%cluster
-        dir = dirname(OCFS2_CONF)
-        if not isdir(dir):
-            os.makedirs(dir)
-            
-        fd = open(OCFS2_CONF, 'w')
-        fd.write(conf)
-        fd.close()
-        
-    def _addNode(self, name, nodeNum, ip, port, cluster, isOnline=True):
-        nodePath = '/sys/kernel/config/cluster/%s/node/%s'%(cluster, name)
-        if exists(nodePath):
-            logger.debug(OvmOCFS2._addNode, "node %s already exists, skip it(%s)"%(name, nodePath))
-            return
-        
-        if not isOnline:
-            cmds = ['o2cb_ctl -C -n', name, '-t node', '-a number=%s'%nodeNum, '-a ip_address=%s'%ip, '-a ip_port=%s'%port, '-a cluster=%s'%cluster]
-        else:
-            cmds = ['o2cb_ctl -C -i -n', name, '-t node', '-a number=%s'%nodeNum, '-a ip_address=%s'%ip, '-a ip_port=%s'%port, '-a cluster=%s'%cluster]
-        
-        try:
-            doCmd(cmds)
-        except ShellExceutedFailedException, e:
-            if e.errCode == 239 or "already exists" in e.stderr:
-                logger.debug(OvmOCFS2._addNode, "node %s already exists, skip it(%s)"%(name, e.stderr))
-            else:
-                raise e
-    
-    def _isClusterOnline(self, cluster):
-        cmds = ['service o2cb status', cluster]
-        res = doCmd(cmds)
-        for line in res.split('\n'):
-            if not 'Checking O2CB cluster' in line: continue
-            return not 'Offline' in line
-    
-    def _load(self):
-        cmd = ['service o2cb load']
-        doCmd(cmd)
-        
-    def _start(self, cluster):
-        #blank line are answer by clicking enter
-        config='''
-y
-o2cb
-%s
-
-
-
-
-EOF
-'''%cluster
-        cmd = ['service o2cb configure', '<<EOF', config]
-        doCmd(cmd)
-        cmd = ['service o2cb start %s'%cluster]
-        doCmd(cmd)
-                

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmObjectModule.py
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmObjectModule.py b/ovm/scripts/vm/hypervisor/ovm/OvmObjectModule.py
deleted file mode 100644
index 0d21dae..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmObjectModule.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2012 Citrix Systems, Inc. Licensed under the
-# Apache License, Version 2.0 (the "License"); you may not use this
-# file except in compliance with the License.  Citrix Systems, Inc.
-# reserves all rights not expressly granted by the License.
-# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# 
-# Automatically generated by addcopyright.py at 04/03/2012
-'''
-Created on May 17, 2011
-
-@author: frank
-'''
-
-class OvmObject(object):
-   pass
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/e2a32ab4/ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch
----------------------------------------------------------------------
diff --git a/ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch b/ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch
deleted file mode 100644
index 5f4c7a5..0000000
--- a/ovm/scripts/vm/hypervisor/ovm/OvmPatch.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-*** OVSServices.py	2011-06-06 12:31:23.279919998 -0700
---- /tmp/OVSServices.py	2011-06-06 12:32:13.275919997 -0700
-***************
-*** 68,73 ****
---- 68,75 ----
-  import OVSVMXParser                 #pylint:    disable-msg=W0611
-  import OVSVMDKParser                #pylint:    disable-msg=W0611
-  
-+ import OvmDispatcher
-+ 
-  from OVSWrappers import D
-  from OVSCommons import exposed
-  
-***************
-*** 113,118 ****
---- 115,121 ----
-          self.sleep = sleep
-  
-          self._load_modules()
-+         OvmDispatcher.InitOvmDispacther()
-  
-  #        #xenapi
-  #        import xen.xend.XendAPI as XendAPI