diff --git a/host_thread.py b/host_thread.py
index e877505..173634b 100644
--- a/host_thread.py
+++ b/host_thread.py
@@ -36,7 +36,8 @@
 import Queue
 import paramiko
 from jsonschema import validate as js_v, exceptions as js_e
-import libvirt
+#import libvirt
+import imp
 from vim_schema import localinfo_schema, hostinfo_schema
 import random
 #from logging import Logger
@@ -44,6 +45,9 @@
 
 #TODO: insert a logging system
 
+global lvirt_module
+lvirt_module=None  #libvirt module is charged only if not in test mode
+
 class host_thread(threading.Thread):
     def __init__(self, name, host, user, db, db_lock, test, image_path, host_id, version, develop_mode, develop_bridge_iface):
         '''Init a thread.
@@ -60,6 +64,13 @@
         self.db = db
         self.db_lock = db_lock
         self.test = test
+        if not test:
+            try:
+                lvirt_module = imp.find_module("libvirt")
+            except (IOError, ImportError) as e:
+                raise ImportError("Cannot import python-libvirt. Openvim not properly installed" +str(e))
+
+
         self.develop_mode = develop_mode
         self.develop_bridge_iface = develop_bridge_iface
         self.image_path = image_path
@@ -120,7 +131,7 @@
             except paramiko.ssh_exception.SSHException as e:
                 text = e.args[0]
                 print self.name, ": load_localinfo ssh Exception:", text
-            except libvirt.libvirtError as e:
+            except lvirt_module.libvirtError as e:
                 text = e.get_error_message()
                 print self.name, ": load_localinfo libvirt Exception:", text
             except yaml.YAMLError as exc:
@@ -165,7 +176,7 @@
         except paramiko.ssh_exception.SSHException as e:
             text = e.args[0]
             print self.name, ": load_hostinfo ssh Exception:", text
-        except libvirt.libvirtError as e:
+        except lvirt_module.libvirtError as e:
             text = e.get_error_message()
             print self.name, ": load_hostinfo libvirt Exception:", text
         except yaml.YAMLError as exc:
@@ -206,7 +217,7 @@
                 print self.name, ": save_localinfo ssh Exception:", text
                 if "SSH session not active" in text:
                     self.ssh_connect()
-            except libvirt.libvirtError as e:
+            except lvirt_module.libvirtError as e:
                 text = e.get_error_message()
                 print self.name, ": save_localinfo libvirt Exception:", text
             except yaml.YAMLError as exc:
@@ -933,7 +944,7 @@
                 print self.name, ": create xml server error:", xml
                 return -2, xml
             print self.name, ": create xml:", xml
-            atribute = libvirt.VIR_DOMAIN_START_PAUSED if paused == "yes" else 0
+            atribute = lvirt_module.VIR_DOMAIN_START_PAUSED if paused == "yes" else 0
         #4 Start the domain
             if not rebuild: #ensures that any pending destroying server is done
                 self.server_forceoff(True)
@@ -948,7 +959,7 @@
             print self.name, ": launch_server(%s) ssh Exception: %s" %(server_id, text)
             if "SSH session not active" in text:
                 self.ssh_connect()
-        except libvirt.libvirtError as e:
+        except lvirt_module.libvirtError as e:
             text = e.get_error_message()
             print self.name, ": launch_server(%s) libvirt Exception: %s"  %(server_id, text)
         except Exception as e:
@@ -971,26 +982,26 @@
             return            
         
         try:
-            conn = libvirt.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+            conn = lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
             domains=  conn.listAllDomains() 
             domain_dict={}
             for domain in domains:
                 uuid = domain.UUIDString() ;
                 libvirt_status = domain.state()
                 #print libvirt_status
-                if libvirt_status[0] == libvirt.VIR_DOMAIN_RUNNING or libvirt_status[0] == libvirt.VIR_DOMAIN_SHUTDOWN:
+                if libvirt_status[0] == lvirt_module.VIR_DOMAIN_RUNNING or libvirt_status[0] == lvirt_module.VIR_DOMAIN_SHUTDOWN:
                     new_status = "ACTIVE"
-                elif libvirt_status[0] == libvirt.VIR_DOMAIN_PAUSED:
+                elif libvirt_status[0] == lvirt_module.VIR_DOMAIN_PAUSED:
                     new_status = "PAUSED"
-                elif libvirt_status[0] == libvirt.VIR_DOMAIN_SHUTOFF:
+                elif libvirt_status[0] == lvirt_module.VIR_DOMAIN_SHUTOFF:
                     new_status = "INACTIVE"
-                elif libvirt_status[0] == libvirt.VIR_DOMAIN_CRASHED:
+                elif libvirt_status[0] == lvirt_module.VIR_DOMAIN_CRASHED:
                     new_status = "ERROR"
                 else:
                     new_status = None
                 domain_dict[uuid] = new_status
             conn.close
-        except libvirt.libvirtError as e:
+        except lvirt_module.libvirtError as e:
             print self.name, ": get_state() Exception '", e.get_error_message()
             return
 
@@ -1056,15 +1067,15 @@
                 self.create_image(None, req)
         else:
             try:
-                conn = libvirt.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
                 try:
                     dom = conn.lookupByUUIDString(server_id)
-                except libvirt.libvirtError as e:
+                except lvirt_module.libvirtError as e:
                     text = e.get_error_message()
                     if 'LookupByUUIDString' in text or 'Domain not found' in text or 'No existe un dominio coincidente' in text:
                         dom = None
                     else:
-                        print self.name, ": action_on_server(",server_id,") libvirt exception:", text 
+                        print self.name, ": action_on_server(",server_id,") libvirt exception:", text
                         raise e
                 
                 if 'forceOff' in req['action']:
@@ -1185,7 +1196,7 @@
                         
         
                 conn.close()    
-            except libvirt.libvirtError as e:
+            except lvirt_module.libvirtError as e:
                 if conn is not None: conn.close
                 text = e.get_error_message()
                 new_status = "ERROR"
@@ -1242,7 +1253,7 @@
             return 0, None
         try:
             if not lib_conn:
-                conn = libvirt.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
             else:
                 conn = lib_conn
                 
@@ -1253,7 +1264,7 @@
             iface.destroy()
             iface.create()
             print self.name, ": restore_iface '%s' %s" % (name, mac)
-        except libvirt.libvirtError as e:   
+        except lvirt_module.libvirtError as e:
             error_text = e.get_error_message()
             print self.name, ": restore_iface '%s' '%s' libvirt exception: %s" %(name, mac, error_text) 
             ret=-1
@@ -1343,12 +1354,12 @@
             
             try:
                 conn=None
-                conn = libvirt.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
                 dom = conn.lookupByUUIDString(port["instance_id"])
                 if old_net:
                     text="\n".join(xml)
                     print self.name, ": edit_iface detaching SRIOV interface", text
-                    dom.detachDeviceFlags(text, flags=libvirt.VIR_DOMAIN_AFFECT_LIVE)
+                    dom.detachDeviceFlags(text, flags=lvirt_module.VIR_DOMAIN_AFFECT_LIVE)
                 if new_net:
                     xml[-1] ="  <vlan>   <tag id='" + str(port['vlan']) + "'/>   </vlan>"
                     self.xml_level = 1
@@ -1356,9 +1367,9 @@
                     xml.append('</interface>')                
                     text="\n".join(xml)
                     print self.name, ": edit_iface attaching SRIOV interface", text
-                    dom.attachDeviceFlags(text, flags=libvirt.VIR_DOMAIN_AFFECT_LIVE)
+                    dom.attachDeviceFlags(text, flags=lvirt_module.VIR_DOMAIN_AFFECT_LIVE)
                     
-            except libvirt.libvirtError as e:
+            except lvirt_module.libvirtError as e:
                 text = e.get_error_message()
                 print self.name, ": edit_iface(",port["instance_id"],") libvirt exception:", text 
                 
