diff --git a/osm_openvim/dhcp_thread.py b/osm_openvim/dhcp_thread.py
index da7176b..8cf50dd 100644
--- a/osm_openvim/dhcp_thread.py
+++ b/osm_openvim/dhcp_thread.py
@@ -83,7 +83,7 @@
             self.ssh_conn.load_system_host_keys()
             self.ssh_conn.connect(self.dhcp_params["host"], port=self.dhcp_params.get("port", 22),
                                   username=self.dhcp_params["user"], password=self.dhcp_params.get("password"),
-                                  key_filename=self.dhcp_params.get("key"), timeout=2)
+                                  key_filename=self.dhcp_params.get("keyfile"), timeout=2)
         except paramiko.ssh_exception.SSHException as e:
             self.logger.error("ssh_connect ssh Exception " + str(e))
         
@@ -222,7 +222,7 @@
                     (_, stdout, _) = self.ssh_conn.exec_command(command)
                     content = stdout.read()
                 except paramiko.ssh_exception.SSHException as e:
-                    self.logger.error("get_ip_from_dhcp: ssh_Exception: " + srt(e))
+                    self.logger.error("get_ip_from_dhcp: ssh_Exception: " + str(e))
                     content = None
                     self.ssh_conn = None
                 except Exception as e:
diff --git a/osm_openvim/host_thread.py b/osm_openvim/host_thread.py
index bf7a6da..1a03c7f 100644
--- a/osm_openvim/host_thread.py
+++ b/osm_openvim/host_thread.py
@@ -34,20 +34,21 @@
 import time
 import Queue
 import paramiko
-from jsonschema import validate as js_v, exceptions as js_e
-#import libvirt
+# import subprocess
+# import libvirt
 import imp
-from vim_schema import localinfo_schema, hostinfo_schema
 import random
 import os
 import logging
+from jsonschema import validate as js_v, exceptions as js_e
+from vim_schema import localinfo_schema, hostinfo_schema
 
 
 class host_thread(threading.Thread):
     lvirt_module = None
 
     def __init__(self, name, host, user, db, db_lock, test, image_path, host_id, version, develop_mode,
-                 develop_bridge_iface, logger_name=None, debug=None):
+                 develop_bridge_iface, password=None, keyfile = None, logger_name=None, debug=None):
         '''Init a thread.
         Arguments:
             'id' number of thead
@@ -62,6 +63,8 @@
         self.db = db
         self.db_lock = db_lock
         self.test = test
+        self.password = password
+        self.keyfile =  keyfile
         self.localinfo_dirty = False
 
         if not test and not host_thread.lvirt_module:
@@ -97,33 +100,38 @@
         self.queueLock = threading.Lock()
         self.taskQueue = Queue.Queue(2000)
         self.ssh_conn = None
+        self.lvirt_conn_uri = "qemu+ssh://{user}@{host}/system?no_tty=1&no_verify=1".format(
+            user=self.user, host=self.host)
+        if keyfile:
+            self.lvirt_conn_uri += "&keyfile=" + keyfile
 
     def ssh_connect(self):
         try:
-            #Connect SSH
+            # Connect SSH
             self.ssh_conn = paramiko.SSHClient()
             self.ssh_conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
             self.ssh_conn.load_system_host_keys()
-            self.ssh_conn.connect(self.host, username=self.user, timeout=10) #, None)
+            self.ssh_conn.connect(self.host, username=self.user, password=self.password, key_filename=self.keyfile,
+                                  timeout=10) #, None)
         except paramiko.ssh_exception.SSHException as e:
             text = e.args[0]
             self.logger.error("ssh_connect ssh Exception: " + text)
-        
+
     def load_localinfo(self):
         if not self.test:
             try:
-                #Connect SSH
+                # Connect SSH
                 self.ssh_connect()
-    
+
                 command = 'mkdir -p ' +  self.image_path
-                #print self.name, ': command:', command
+                # print self.name, ': command:', command
                 (_, stdout, stderr) = self.ssh_conn.exec_command(command)
                 content = stderr.read()
                 if len(content) > 0:
                     self.logger.error("command: '%s' stderr: '%s'", command, content)
 
                 command = 'cat ' +  self.image_path + '/.openvim.yaml'
-                #print self.name, ': command:', command
+                # print self.name, ': command:', command
                 (_, stdout, stderr) = self.ssh_conn.exec_command(command)
                 content = stdout.read()
                 if len(content) == 0:
@@ -136,7 +144,7 @@
                     self.localinfo['server_files'] = {}
                 self.logger.debug("localinfo load from host")
                 return
-    
+
             except paramiko.ssh_exception.SSHException as e:
                 text = e.args[0]
                 self.logger.error("load_localinfo ssh Exception: " + text)
@@ -1610,12 +1618,12 @@
                             # VIR_DOMAIN_SHUTOFF = 5
                             # VIR_DOMAIN_CRASHED = 6
                             # VIR_DOMAIN_PMSUSPENDED = 7   #TODO suspended
-    
+
         if self.test or len(self.server_status)==0:
-            return            
-        
+            return
+
         try:
-            conn = host_thread.lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+            conn = host_thread.lvirt_module.open(self.lvirt_conn_uri)
             domains=  conn.listAllDomains() 
             domain_dict={}
             for domain in domains:
@@ -1704,7 +1712,7 @@
                 self.create_image(None, req)
         else:
             try:
-                conn = host_thread.lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = host_thread.lvirt_module.open(self.lvirt_conn_uri)
                 try:
                     dom = conn.lookupByUUIDString(server_id)
                 except host_thread.lvirt_module.libvirtError as e:
@@ -1898,7 +1906,7 @@
             return 0, None
         try:
             if not lib_conn:
-                conn = host_thread.lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = host_thread.lvirt_module.open(self.lvirt_conn_uri)
             else:
                 conn = lib_conn
                 
@@ -1995,12 +2003,12 @@
             xml.append("<interface type='hostdev' managed='yes'>")
             xml.append("  <mac address='" +port['mac']+ "'/>")
             xml.append("  <source>"+ self.pci2xml(port['pci'])+"\n  </source>")
-            xml.append('</interface>')                
+            xml.append('</interface>')
 
             
             try:
                 conn=None
-                conn = host_thread.lvirt_module.open("qemu+ssh://"+self.user+"@"+self.host+"/system")
+                conn = host_thread.lvirt_module.open(self.lvirt_conn_uri)
                 dom = conn.lookupByUUIDString(port["instance_id"])
                 if old_net:
                     text="\n".join(xml)
diff --git a/osm_openvim/httpserver.py b/osm_openvim/httpserver.py
index c161942..43d11cf 100644
--- a/osm_openvim/httpserver.py
+++ b/osm_openvim/httpserver.py
@@ -55,20 +55,20 @@
 global url_base
 global config_dic
 global RADclass_module
-RADclass=None  #RADclass module is charged only if not in test mode
+RADclass_module=None  #RADclass module is charged only if not in test mode
 
 url_base="/openvim"
 
 HTTP_Bad_Request =          400
-HTTP_Unauthorized =         401 
-HTTP_Not_Found =            404 
+HTTP_Unauthorized =         401
+HTTP_Not_Found =            404
 HTTP_Forbidden =            403
-HTTP_Method_Not_Allowed =   405 
+HTTP_Method_Not_Allowed =   405
 HTTP_Not_Acceptable =       406
 HTTP_Request_Timeout =      408
 HTTP_Conflict =             409
-HTTP_Service_Unavailable =  503 
-HTTP_Internal_Server_Error= 500 
+HTTP_Service_Unavailable =  503
+HTTP_Internal_Server_Error= 500
 
 def md5(fname):
     hash_md5 = hashlib.md5()
@@ -524,6 +524,7 @@
 @bottle.route(url_base + '/hosts', method='POST')
 def http_post_hosts():
     '''insert a host into the database. All resources are got and inserted'''
+    global RADclass_module
     my = config_dic['http_threads'][ threading.current_thread().name ]
     #check permissions
     if not my.admin:
@@ -535,17 +536,17 @@
     if r is not None: print "http_post_host_id: Warning: remove extra items ", r
     change_keys_http2db(http_content['host'], http2db_host)
 
-    host = http_content['host']
-    warning_text=""
-    if 'host-data' in http_content:
-        host.update(http_content['host-data'])
-        ip_name=http_content['host-data']['ip_name']
-        user=http_content['host-data']['user']
-        password=http_content['host-data'].get('password', None)
+    if 'host' in http_content:
+        host = http_content['host']
+        if 'host-data' in http_content:
+            host.update(http_content['host-data'])
     else:
-        ip_name=host['ip_name']
-        user=host['user']
-        password=host.get('password', None)
+        host = http_content['host-data']
+    warning_text = ""
+    ip_name = host['ip_name']
+    user = host['user']
+    password = host.get('password')
+    if host.get('autodiscover'):
         if not RADclass_module:
             try:
                 RADclass_module = imp.find_module("RADclass")
@@ -618,10 +619,13 @@
             memory=node['memory']['node_size'] / (1024*1024*1024)
             #memory=get_next_2pow(node['memory']['hugepage_nr'])
             host['numas'].append( {'numa_socket': node['id'], 'hugepages': node['memory']['hugepage_nr'], 'memory':memory, 'interfaces': interfaces, 'cores': cores } )
-    print json.dumps(host, indent=4)
-    #return
-    #
-    #insert in data base
+    # print json.dumps(host, indent=4)
+    # insert in data base
+    if "created_at" in host:
+        del host["created_at"]
+    for numa in host.get("numas", ()):
+        if "hugepages_consumed" in numa:
+            del numa["hugepages_consumed"]
     result, content = my.db.new_host(host)
     if result >= 0:
         if content['admin_state_up']:
@@ -629,10 +633,13 @@
             host_test_mode = True if config_dic['mode']=='test' or config_dic['mode']=="OF only" else False
             host_develop_mode = True if config_dic['mode']=='development' else False
             host_develop_bridge_iface = config_dic.get('development_bridge', None)
-            thread = ht.host_thread(name=host.get('name',ip_name), user=user, host=ip_name, db=config_dic['db'], db_lock=config_dic['db_lock'], 
-                test=host_test_mode, image_path=config_dic['image_path'],
-                version=config_dic['version'], host_id=content['uuid'],
-                develop_mode=host_develop_mode, develop_bridge_iface=host_develop_bridge_iface   )
+            thread = ht.host_thread(name=host.get('name',ip_name), user=user, host=ip_name,
+                                    password=host.get('password'),
+                                    keyfile=host.get('keyfile', config_dic["host_ssh_keyfile"]),
+                                    db=config_dic['db'], db_lock=config_dic['db_lock'],
+                                    test=host_test_mode, image_path=config_dic['host_image_path'],
+                                    version=config_dic['version'], host_id=content['uuid'],
+                                    develop_mode=host_develop_mode, develop_bridge_iface=host_develop_bridge_iface)
             thread.start()
             config_dic['host_threads'][ content['uuid'] ] = thread
 
diff --git a/osm_openvim/openvimd.cfg b/osm_openvim/openvimd.cfg
index 732512b..030de87 100644
--- a/osm_openvim/openvimd.cfg
+++ b/osm_openvim/openvimd.cfg
@@ -21,8 +21,8 @@
 
 
 
-#Miscellaneous
-#Option to test openvim without the needed infrastructure, possible values are
+# Miscellaneous
+# Option to test openvim without the needed infrastructure, possible values are
 #    "normal"      by default, Openflow controller (OFC), switch and real host are needed
 #    "test"        Used for testing http API and database without connecting to host or to OFC
 #    "host only"   Used when neither OFC nor OF switch are provided. 
@@ -34,55 +34,62 @@
 #                  The same 'development_bridge' (see below) is used for all dataplane networks
 mode: test
 
-#Openflow controller information
+
+# Default openflow controller information
 of_controller:      floodlight                   # Type of controller to be used.
                                                  # Valid controllers are 'opendaylight', 'floodlight' or <custom>
-#of_controller_module: module                    # Only needed for <custom>.  Python module that implement
+# of_controller_module: module                     # Only needed for <custom>.  Python module that implement
                                                  # this controller. By default a file with the name  <custom>.py is used 
-#of_<other>:           value                     # Other parameters required by <custom> controller. Consumed by __init__
+# of_<other>:           value                      # Other parameters required by <custom> controller. Consumed by __init__
 of_user:            user credentials             # User credentials for the controller if needed
 of_password:        passwd credentials           # Password credentials for the controller if needed
 of_controller_ip:   127.0.0.1                    # IP address where the Openflow controller is listening
 of_controller_port: 7070                         # TCP port where the Openflow controller is listening (REST API server)
 of_controller_dpid: '00:01:02:03:04:05:06:07'    # Openflow Switch identifier (put here the right number)
-
-#This option is used for those openflow switch that cannot deliver one packet to several output with different vlan tags
-#When set to true, it fails when trying to attach different vlan tagged ports to the same net
+# This option is used for those openflow switch that cannot deliver one packet to several output with different vlan tags
+# When set to true, it fails when trying to attach different vlan tagged ports to the same net
 of_controller_nets_with_same_vlan: false         # (by default, true)
 
-#Server parameters
+
+# Server parameters
 http_host:       0.0.0.0             # IP address where openvim is listening (by default, localhost)
 http_port:       9080                # General port where openvim is listening (by default, 9080)
 http_admin_port: 9085                # Admin port where openvim is listening (when missing, no administration server is launched)
 
-#database parameters
-db_host:   localhost                   # by default localhost
+# Database parameters
+db_host:   localhost                 # by default localhost
 db_user:   vim                       # DB user
 db_passwd: vimpw                     # DB password
 db_name:   vim_db                    # Name of the VIM DB
 
-#host paremeters
-image_path: "/opt/VNF/images"        # Folder, same for every host, where the VNF images will be copied
 
-#testing parameters (used by ./test/test_openvim.py)
+# Common compute node parameters
+host_image_path:  /opt/VNF/images        # Folder, same for every host, where the VNF images will be copied
+# host_ssh_keyfile: /path/to/ssh-key-file  # Default ssh_kye to use for connecting to compute nodes
+
+
+# Deprecated: testing parameters (used by ./test/test_openvim.py)
 tenant_id: fc7b43b6-6bfa-11e4-84d2-5254006d6777   # Default tenant identifier for testing
 
-#VLAN ranges used for the dataplane networks (ptp, data)
-#When a network is created an unused value in this range is used
+
+# Underlay network: VLAN ranges used for underlay dataplane networks
+# When a network is created an unused value in this range is used
 network_vlan_range_start: 3000
 network_vlan_range_end:   4000
 
+
 # Overlay network implementation. Options are:
 # - ovs :   (by default) Use a vlxan mesh between computes to handle the network overlay.
 # - bridge: Use pre-populated linux bridges with L2 conectivity at compte nodes.
 network_type : ovs
-ovs_controller_ip   :   localhost                   # dhcp controller IP address, must be change in order to
-ovs_controller_user :   "osm_dhcp"                  # User for the dchp controller for OVS networks
-ovs_controller_file_path  :   "/var/lib/openvim"    # Path for dhcp daemon configuration, by default '/var/lib/openvim'
+ovs_controller_ip:        localhost               # IP address of the controller OVS network host
+ovs_controller_user:      osm_user                # User for controller OVS network host
+# ovs_controller_password: osm_passwd               # password for controller OVS network host
+# ovs_controller_keyfile:   /path/to/ssh-key-file   # ssh-access-key file to connect host
+ovs_controller_file_path: /var/lib/openvim        # Path for dhcp daemon configuration, by default '/var/lib/openvim'
 
 
-#host bridge interfaces for networks
-# Apply only for 'network_type: bridge'
+# Host bridge interfaces for networks. It applies only for 'network_type: bridge'
 # Indicates the bridges at compute nodes to be used for the overlay networks
 # Bridge networks need to be pre-provisioned on each host and Openvim uses those pre-provisioned bridge networks.
 # Openvim assumes that the following bridge interfaces have been created on each host, appropriately associated to a physical port.
@@ -105,34 +112,34 @@
 #   virbrMan9:  [2009, 1]
 #   virbrMan10: [2010, 1]
 
-#Used only when 'mode' is at development'. Indicates which 'bridge_ifaces' is used for dataplane networks
+# Used only when 'mode' is at development'. Indicates which 'bridge_ifaces' is used for dataplane networks
 #development_bridge: virbrMan10
 
-#DHCP SERVER PARAMETERS. 
-#In case some of the previous 'bridge_ifaces' are connected to an EXTERNAL dhcp server, provide 
+# DHCP SERVER PARAMETERS.
+# In case some of the previous 'bridge_ifaces' are connected to an EXTERNAL dhcp server, provide
 #   the server parameters to allow openvim getting the allocated IP addresses of virtual machines
 #   connected to the indicated 'bridge_ifaces' and or 'nets'. Openvim will connect to the dhcp server by ssh.
-#DHCP server must contain a shell script "get_dhcp_lease.sh" included in the path, that accepts a mac address as 
+# DHCP server must contain a shell script "get_dhcp_lease.sh" included in the path, that accepts a mac address as
 #   parameter and return empty or the allocated IP address. See an example at the end of the file 
 #   ./openvim/dhcp_thread.py 
-#COMMENT all lines in case you do not have a DHCP server in 'normal', 'development'  or 'host only' modes.
+# COMMENT all lines in case you do not have a DHCP server in 'normal', 'development'  or 'host only' modes.
 #   For 'test' or 'OF only' modes you can leave then uncommented, because in these modes fake IP 
 #   address are generated instead of connecting with a real DHCP server.
-dhcp_server:
-   host:     host-ip-or-name  
-   #port:     22               #ssh port, by default 22
-   provider: isc-dhcp-server  #dhcp-server type
-   user:     user
-   #provide password, or key if needed
-   password: passwd           
-   #key:     ssh-access-key
-   #list of the previous bridge interfaces attached to this dhcp server
-   bridge_ifaces:   [ virbrMan1, virbrMan2 ] 
-   #list of the networks attached to this dhcp server
-   nets: [default]
+#dhcp_server:
+#   host:     host-ip-or-name
+#   #port:     22               #ssh port, by default 22
+#   provider: isc-dhcp-server  #dhcp-server type
+#   user:     user
+#   #provide password, or key if needed
+#   password: passwd
+#   #keyfile:     ssh-access-key
+#   #list of the previous bridge interfaces attached to this dhcp server
+#   bridge_ifaces:   [ virbrMan1, virbrMan2 ]
+#   #list of the networks attached to this dhcp server
+#   nets: [default]
 
 
-#logging parameters       # DEBUG, INFO, WARNING, ERROR, CRITICAL
+# Logging parameters       # DEBUG, INFO, WARNING, ERROR, CRITICAL
 log_level:       DEBUG
 log_level_db:    DEBUG
 log_level_of:    DEBUG
diff --git a/osm_openvim/ovim.py b/osm_openvim/ovim.py
index 3131e8a..dd5b315 100755
--- a/osm_openvim/ovim.py
+++ b/osm_openvim/ovim.py
@@ -42,9 +42,9 @@
 
 __author__ = "Alfonso Tierno, Leonardo Mirabal"
 __date__ = "$06-Feb-2017 12:07:15$"
-__version__ = "0.5.14-r530"
+__version__ = "0.5.15-r531"
 version_date = "May 2017"
-database_version = 18      #needed database schema version
+database_version = 19      #needed database schema version
 
 HTTP_Bad_Request =          400
 HTTP_Unauthorized =         401
@@ -244,16 +244,18 @@
         host_develop_bridge_iface = self.config.get('development_bridge', None)
 
         # get host list from data base before starting threads
-        r, hosts = self.db.get_table(SELECT=('name', 'ip_name', 'user', 'uuid'), FROM='hosts', WHERE={'status': 'ok'})
+        r, hosts = self.db.get_table(SELECT=('name', 'ip_name', 'user', 'uuid', 'password', 'keyfile'),
+                                     FROM='hosts', WHERE={'status': 'ok'})
         if r < 0:
             raise ovimException("Cannot get hosts from database {}".format(hosts))
 
         self.config['host_threads'] = {}
         for host in hosts:
-            host['image_path'] = '/opt/VNF/images/openvim'
             thread = ht.host_thread(name=host['name'], user=host['user'], host=host['ip_name'], db=self.config["db"],
+                                    password=host['password'],
+                                    keyfile=host.get('keyfile', self.config["host_ssh_keyfile"]),
                                     db_lock=self.config["db_lock"], test=host_test_mode,
-                                    image_path=self.config['image_path'],
+                                    image_path=self.config['host_image_path'],
                                     version=self.config['version'], host_id=host['uuid'],
                                     develop_mode=host_develop_mode,
                                     develop_bridge_iface=host_develop_bridge_iface,
@@ -270,13 +272,20 @@
 
         for net in content:
             net_type = net['type']
-            if (net_type == 'bridge_data' or net_type == 'bridge_man') \
-                    and net["provider"][:4] == 'OVS:' and net["enable_dhcp"] == "true":
+            if (net_type == 'bridge_data' or net_type == 'bridge_man') and \
+                    net["provider"][:4] == 'OVS:' and net["enable_dhcp"] == "true":
+                try:
                     self.launch_dhcp_server(net['vlan'],
                                             net['dhcp_first_ip'],
                                             net['dhcp_last_ip'],
                                             net['cidr'],
                                             net['gateway_ip'])
+                except Exception as e:
+                    self.logger.error("Fail at launching dhcp server for net_id='%s' net_name='%s': %s",
+                                      net["uuid"], net["name"], str(e))
+                    self.db.update_rows("nets", {"status": "ERROR",
+                                                 "last_error": "Fail at launching dhcp server: " + str(e)},
+                                        {"uuid": net["uuid"]})
 
     def _start_of_db_tasks(self):
         """
@@ -432,9 +441,13 @@
         if 'dhcp_thread' in self.config:
             threads['dhcp'] = (self.config['dhcp_thread'])
 
-        for thread in threads.values():
+        for thread_id, thread in threads.items():
+            if thread_id == 'openvim_controller':
+                continue
             thread.insert_task("exit")
-        for thread in threads.values():
+        for thread_id, thread in threads.items():
+            if thread_id == 'openvim_controller':
+                continue
             thread.join()
 
     def get_networks(self, columns=None, db_filter={}, limit=None):
@@ -1346,19 +1359,21 @@
 
         bridge_ifaces = []
         controller_ip = self.config['ovs_controller_ip']
-        ovs_controller_user = self.config['ovs_controller_user']
+        ovs_controller_user = self.config.get('ovs_controller_user')
 
         host_test_mode = True if self.config['mode'] == 'test' or self.config['mode'] == "OF only" else False
         host_develop_mode = True if self.config['mode'] == 'development' else False
 
         dhcp_host = ht.host_thread(name='openvim_controller', user=ovs_controller_user, host=controller_ip,
+                                   password=self.config.get('ovs_controller_password'),
+                                   keyfile=self.config.get('ovs_controller_keyfile'),
                                    db=self.config["db"], db_lock=self.config["db_lock"], test=host_test_mode,
-                                   image_path=self.config['image_path'], version=self.config['version'],
+                                   image_path=self.config['host_image_path'], version=self.config['version'],
                                    host_id='openvim_controller', develop_mode=host_develop_mode,
                                    develop_bridge_iface=bridge_ifaces,
                                    logger_name=self.logger_name + ".host.controller",
                                    debug=self.config.get('log_level_host'))
-        dhcp_host.start()
+        # dhcp_host.start()
         self.config['host_threads']['openvim_controller'] = dhcp_host
         if not host_test_mode:
             dhcp_host.ssh_connect()
diff --git a/osm_openvim/vim_db.py b/osm_openvim/vim_db.py
index 5d7fb16..31d4a0f 100644
--- a/osm_openvim/vim_db.py
+++ b/osm_openvim/vim_db.py
@@ -472,16 +472,19 @@
                 with self.con:
                     self.cur = self.con.cursor(mdb.cursors.DictCursor)
                     #get HOST
-                    cmd = "SELECT uuid, user, name, ip_name, description, ranking, admin_state_up, DATE_FORMAT(created_at,'%Y-%m-%dT%H:%i:%s') as created_at \
-                        FROM hosts WHERE " + where_filter
+                    cmd = "SELECT uuid, user, password, keyfile, name, ip_name, description, ranking, admin_state_up, "\
+                          "DATE_FORMAT(created_at,'%Y-%m-%dT%H:%i:%s') as created_at "\
+                          "FROM hosts WHERE " + where_filter
                     self.logger.debug(cmd) 
                     self.cur.execute(cmd)
-                    if self.cur.rowcount == 0 : 
+                    if self.cur.rowcount == 0:
                         return 0, "host '" + str(host_id) +"'not found."
                     elif self.cur.rowcount > 1 : 
                         return 0, "host '" + str(host_id) +"' matches more than one result."
                     host = self.cur.fetchone()
                     host_id = host['uuid']
+                    if host.get("password"):
+                        host["password"] = "*****"
                     #get numa
                     cmd = "SELECT id, numa_socket, hugepages, memory, admin_state_up FROM numas WHERE host_id = '" + str(host_id) + "'"
                     self.logger.debug(cmd)
@@ -504,20 +507,20 @@
                         used = self.cur.fetchone()
                         used_= int(used['hugepages_consumed']) if used != None else 0
                         numa['hugepages_consumed'] = used_
-                        #get ports
-                        #cmd = "CALL GetPortsFromNuma(%s)'" % str(numa['id'])
-                        #self.cur.callproc('GetPortsFromNuma', (numa['id'],) )
-                        #every time a Procedure is launched you need to close and open the cursor 
-                        #under Error 2014: Commands out of sync; you can't run this command now
-                        #self.cur.close()   
-                        #self.cur = self.con.cursor(mdb.cursors.DictCursor)
-                        cmd="SELECT Mbps, pci, status, Mbps_used, instance_id, if(id=root_id,'PF','VF') as type_,\
-                             switch_port, switch_dpid, mac, source_name\
-                             FROM resources_port WHERE numa_id=%d ORDER BY root_id, type_ DESC" %  (numa['id'])
+                        # get ports
+                        # cmd = "CALL GetPortsFromNuma(%s)'" % str(numa['id'])
+                        # self.cur.callproc('GetPortsFromNuma', (numa['id'],) )
+                        # every time a Procedure is launched you need to close and open the cursor
+                        # under Error 2014: Commands out of sync; you can't run this command now
+                        # self.cur.close()
+                        # self.cur = self.con.cursor(mdb.cursors.DictCursor)
+                        cmd = "SELECT Mbps, pci, status, Mbps_used, instance_id, if(id=root_id,'PF','VF') as type_, "\
+                              "switch_port, switch_dpid, switch_mac, mac, source_name "\
+                              "FROM resources_port WHERE numa_id={} ORDER BY root_id, type_ DESC".format(numa['id'])
                         self.logger.debug(cmd)
                         self.cur.execute(cmd)
                         ifaces = self.cur.fetchall()
-                        #The SQL query will ensure to have SRIOV interfaces from a port first
+                        # The SQL query will ensure to have SRIOV interfaces from a port first
                         sriovs=[]
                         Mpbs_consumed = 0
                         numa['interfaces'] = []
@@ -533,6 +536,8 @@
                                     del iface["switch_dpid"]
                                 if not iface["switch_port"]:
                                     del iface["switch_port"]
+                                if not iface["switch_mac"]:
+                                    del iface["switch_mac"]
                                 if sriovs:
                                     iface["sriovs"] = sriovs
                                 if Mpbs_consumed:
@@ -544,6 +549,7 @@
                             else: #VF, SRIOV
                                 del iface["switch_port"]
                                 del iface["switch_dpid"]
+                                del iface["switch_mac"]
                                 del iface["type_"]
                                 del iface["Mbps"]
                                 sriovs.append(iface)
diff --git a/osm_openvim/vim_schema.py b/osm_openvim/vim_schema.py
index 69d6a0c..c48d48e 100644
--- a/osm_openvim/vim_schema.py
+++ b/osm_openvim/vim_schema.py
@@ -31,7 +31,7 @@
 # SCHEMAS to validate input data
 #
 
-path_schema={"type":"string", "pattern":"^(\.){0,2}(/[^/\"':{}\(\)]+)+$"}
+path_schema = {"type": "string", "maxLength": 255, "pattern": "^(\.){0,2}(/[^/\"':{}\(\)]+)+$"}
 http_schema={"type":"string", "pattern":"^https?://[^'\"=]+$"}
 port_schema={"type":"integer","minimum":1,"maximun":65534}
 ip_schema={"type":"string","pattern":"^([0-9]{1,3}.){3}[0-9]{1,3}$"}
@@ -55,9 +55,9 @@
 log_level_schema={"type":"string", "enum":["DEBUG", "INFO", "WARNING","ERROR","CRITICAL"]}
 
 config_schema = {
-    "title":"main configuration information schema",
+    "title": "main configuration information schema",
     "$schema": "http://json-schema.org/draft-04/schema#",
-    "type":"object",
+    "type": "object",
     "properties":{
         "http_port": port_schema,
         "http_admin_port": port_schema,
@@ -65,7 +65,7 @@
         "http_url_prefix": path_schema, # it does not work yet; it's supposed to be the base path to be used by bottle, but it must be explicitly declared
         "db_host": nameshort_schema,
         "db_user": nameshort_schema,
-        "db_passwd": {"type":"string"},
+        "db_passwd": {"type": "string"},
         "db_name": nameshort_schema,
         "of_controller_ip": ip_schema,
         "of_controller_port": port_schema,
@@ -75,18 +75,20 @@
         "of_controller_module": {"type":"string"},
         "of_user": nameshort_schema,
         "of_password": nameshort_schema,
-        "test_mode": {"type": "boolean"}, #leave for backward compatibility
+        "test_mode": {"type": "boolean"}, # leave for backward compatibility
         "mode": {"type":"string", "enum":["normal", "host only", "OF only", "development", "test"] },
         "development_bridge": {"type":"string"},
         "tenant_id": {"type" : "string"},
-        "image_path": path_schema,
+        "image_path": path_schema,      # leave for backward compatibility
+        "host_image_path": path_schema,
+        "host_ssh_keyfile": path_schema,
         "network_vlan_range_start": vlan_schema,
         "network_vlan_range_end": vlan_schema,
         "bridge_ifaces": {
             "type": "object",
             "patternProperties": {
                 "." : {
-                    "type": "array", 
+                    "type": "array",
                     "items": integer0_schema,
                     "minItems":2,
                     "maxItems":2,
@@ -97,18 +99,19 @@
         "dhcp_server": {
             "type": "object",
             "properties": {
-                "host" : name_schema,
-                "port" : port_schema,
-                "provider" : {"type": "string", "enum": ["isc-dhcp-server"]},
-                "user" : nameshort_schema,
-                "password" : {"type": "string"},
-                "key" : {"type": "string"},
-                "bridge_ifaces" :{
-                    "type": "array", 
+                "host": name_schema,
+                "port": port_schema,
+                "provider": {"type": "string", "enum": ["isc-dhcp-server"]},
+                "user": nameshort_schema,
+                "password": {"type": "string"},
+                "key": path_schema,         # for backward compatibility, use keyfile instead
+                "keyfile": path_schema,
+                "bridge_ifaces": {
+                    "type": "array",
                     "items": nameshort_schema,
                 },
-                "nets" :{
-                    "type": "array", 
+                "nets": {
+                    "type": "array",
                     "items": name_schema,
                 },
             },
@@ -119,9 +122,10 @@
         "log_level_of": log_level_schema,
         "network_type": {"type": "string", "enum": ["ovs", "bridge"]},
         "ovs_controller_file_path": path_schema,
+        "ovs_controller_ip": nameshort_schema,
         "ovs_controller_user": nameshort_schema,
-
-        "ovs_controller_ip": nameshort_schema
+        "ovs_controller_password": {"type": "string"},
+        "ovs_controller_keyfile": path_schema,
     },
     "patternProperties": {
         "of_*" : {"type": ["string", "integer", "boolean"]}
@@ -249,90 +253,97 @@
 host_data_schema={
     "title":"hosts manual insertion information schema",
     "type":"object", 
-    "properties":{                  
-        "ip_name":nameshort_schema,
+    "properties":{
+        "id": id_schema,
+        "admin_state_up": {"type": "boolean"},
+        "created_at": {"type": "string"},        # ignored, just for compatibility with host-list
+        "ip_name": nameshort_schema,
         "name": name_schema,
-        "description":description_schema,
-        "user":nameshort_schema,
-        "password":nameshort_schema,
-        "features":description_schema,
-        "ranking":integer0_schema,
-        "devices":{
+        "description": description_schema,
+        "user": nameshort_schema,
+        "password": nameshort_schema,
+        "keyfile": path_schema,
+        "features": description_schema,
+        "ranking": integer0_schema,
+        "autodiscover": {"type": "boolean"},    # try to discover host parameters instead of providing in this schema
+        "devices": {
             "type": "array", 
-            "items":{
+            "items": {
                 "type": "object",
-                "properties":{
-                    "type":{"type":"string", "enum":["usb","disk"]},
-                    "vpci":pci_schema
+                "properties": {
+                    "type": {"type": "string", "enum": ["usb", "disk"]},
+                    "vpci": pci_schema
                 },
                 "additionalProperties": False,
                 "required": ["type"]
             }
         },
-        "numas":{
+        "numas": {
             "type": "array",
-            "minItems":1,
-            "items":{
+            "minItems": 1,
+            "items": {
                 "type": "object",
-                "properties":{
-                    "admin_state_up":{"type":"boolean"},
-                    "hugepages":integer0_schema,
+                "properties": {
+                    "admin_state_up": {"type": "boolean"},
+                    "hugepages": integer0_schema,
+                    "hugepages_consumed": integer0_schema,  # ignored, just for compatibility with host-list
+                    "numa_socket": integer0_schema,
+                    "memory": integer1_schema,
                     "cores":{
                         "type": "array",
-                        "minItems":2,
-                        "items":{
+                        "minItems": 2,
+                        "items": {
                             "type": "object",
-                            "properties":{
-                                "core_id":integer0_schema,
-                                "thread_id":integer0_schema,
-                                "status": {"type":"string", "enum":["noteligible"]}
+                            "properties": {
+                                "core_id": integer0_schema,
+                                "thread_id": integer0_schema,
+                                "status": {"type": "string", "enum": ["noteligible"]}
                             },
                             "additionalProperties": False,
-                            "required": ["core_id","thread_id"]
+                            "required": ["core_id", "thread_id"]
                         }
                     },
-                    "interfaces":{
+                    "interfaces": {
                         "type": "array",
-                        "minItems":1,
-                        "items":{
+                        "minItems": 1,
+                        "items": {
                             "type": "object",
-                            "properties":{
-                                "source_name":nameshort_schema,
-                                "mac":mac_schema,
-                                "Mbps":integer0_schema,
-                                "pci":pci_schema,
-                                "sriovs":{
+                            "properties": {
+                                "source_name": nameshort_schema,
+                                "mac": mac_schema,
+                                "Mbps": integer0_schema,
+                                "pci": pci_schema,
+                                "sriovs": {
                                     "type": "array",
                                     "minItems":1,
-                                    "items":{
+                                    "items": {
                                         "type": "object",
-                                        "properties":{
-                                            "source_name":{"oneOf":[integer0_schema, nameshort_schema]},
-                                            "mac":mac_schema,
-                                            "vlan":integer0_schema, 
-                                            "pci":pci_schema,
+                                        "properties": {
+                                            "source_name": {"oneOf": [integer0_schema, nameshort_schema]},
+                                            "mac": mac_schema,
+                                            "vlan": integer0_schema,  # ignored, just for backward compatibility
+                                            "pci": pci_schema,
                                         },
                                         "additionalProperties": False,
-                                        "required": ["source_name","mac","pci"]
+                                        "required": ["source_name", "mac", "pci"]
                                     }
                                 },
                                 "switch_port": nameshort_schema,
                                 "switch_dpid": nameshort_schema,
+                                "switch_mac": mac_schema,
                             },
                             "additionalProperties": False,
-                            "required": ["source_name","mac","Mbps","pci"]
+                            "required": ["source_name", "mac", "Mbps", "pci"]
                         }
                     },
-                    "numa_socket":integer0_schema,
-                    "memory":integer1_schema
                 },
                 "additionalProperties": False,
-                "required": ["cores","numa_socket"]
+                "required": ["cores", "numa_socket"]
             }
         }
     },
     "additionalProperties": False,
-    "required": ["ranking", "numas","ip_name","user"]
+    "required": ["name", "ip_name"]
 }
 
 host_edit_schema={
@@ -388,19 +399,7 @@
     "$schema": "http://json-schema.org/draft-04/schema#",
     "type":"object",
     "properties":{
-        "host":{
-            "type":"object",
-            "properties":{
-                "id":id_schema,
-                "ip_name":nameshort_schema,
-                "name": name_schema,
-                "description":description_schema,
-                "user":nameshort_schema,
-                "password":nameshort_schema,
-                "admin_state_up":{"type":"boolean"},
-            },
-            "required": ["name","ip_name","user"]
-        },
+        "host": host_data_schema,
         "host-data":host_data_schema
     },
     "required": ["host"],
