2to3 conversion for osm_ro
authorMarco Ceppi <marco.ceppi@canonical.com>
Thu, 26 Oct 2017 12:35:46 +0000 (14:35 +0200)
committerMarco Ceppi <marco.ceppi@canonical.com>
Thu, 26 Oct 2017 12:46:32 +0000 (14:46 +0200)
Signed-off-by: Marco Ceppi <marco.ceppi@canonical.com>
17 files changed:
osm_ro/db_base.py
osm_ro/httpserver.py
osm_ro/nfvo.py
osm_ro/nfvo_db.py
osm_ro/openmanoclient.py
osm_ro/utils.py
osm_ro/vim_thread.py
osm_ro/vimconn.py
osm_ro/vimconn_aws.py
osm_ro/vimconn_openstack.py
osm_ro/vimconn_openvim.py
osm_ro/vimconn_vmware.py
osm_ro/vmware_utils/OVF_converter/format_converter/command_progress.py
osm_ro/vmware_utils/OVF_converter/format_converter/converter.py
osm_ro/vmware_utils/OVF_converter/format_converter/ovf_converter_cli.py
osm_ro/vmwarecli.py
osm_ro/vmwarerecli.py

index c8e5eb1..42e072b 100644 (file)
@@ -29,7 +29,7 @@ __date__ ="$4-Apr-2016 10:05:01$"
 
 import MySQLdb as mdb
 import uuid as myUuid
-import  utils as af
+from . import  utils as af
 import json
 #import yaml
 import time
@@ -65,7 +65,7 @@ def _convert_datetime2str(var):
     It enters recursively in the dict var finding this kind of variables
     '''
     if type(var) is dict:
-        for k,v in var.items():
+        for k,v in list(var.items()):
             if type(v) is datetime.datetime:
                 var[k]= v.strftime('%Y-%m-%dT%H:%M:%S')
             elif type(v) is dict or type(v) is list or type(v) is tuple: 
@@ -85,7 +85,7 @@ def _convert_bandwidth(data, reverse=False, logger=None):
         None
     '''
     if type(data) is dict:
-        for k in data.keys():
+        for k in list(data.keys()):
             if type(data[k]) is dict or type(data[k]) is tuple or type(data[k]) is list:
                 _convert_bandwidth(data[k], reverse, logger)
         if "bandwidth" in data:
@@ -120,7 +120,7 @@ def _convert_str2boolean(data, items):
         None
     '''
     if type(data) is dict:
-        for k in data.keys():
+        for k in list(data.keys()):
             if type(data[k]) is dict or type(data[k]) is tuple or type(data[k]) is list:
                 _convert_str2boolean(data[k], items)
             if k in items:
@@ -320,7 +320,7 @@ class db_base():
     
     def __remove_quotes(self, data):
         '''remove single quotes ' of any string content of data dictionary'''
-        for k,v in data.items():
+        for k,v in list(data.items()):
             if type(v) == str:
                 if "'" in v: 
                     data[k] = data[k].replace("'","_")
@@ -334,11 +334,11 @@ class db_base():
         Return: the number of updated rows, exception if error
         '''
                 #gettting uuid 
-        values = ",".join(map(self.__tuple2db_format_set, UPDATE.iteritems() ))
+        values = ",".join(map(self.__tuple2db_format_set, iter(UPDATE.items()) ))
         if modified_time:
             values += ",modified_at={:f}".format(modified_time)
         cmd= "UPDATE " + table +" SET " + values +\
-            " WHERE " + " and ".join(map(self.__tuple2db_format_where, WHERE.iteritems() ))
+            " WHERE " + " and ".join(map(self.__tuple2db_format_where, iter(WHERE.items()) ))
         self.logger.debug(cmd)
         self.cur.execute(cmd) 
         return self.cur.rowcount
@@ -400,7 +400,7 @@ class db_base():
             self.cur.execute(cmd)
         #insertion
         cmd= "INSERT INTO " + table +" SET " + \
-            ",".join(map(self.__tuple2db_format_set, INSERT.iteritems() )) 
+            ",".join(map(self.__tuple2db_format_set, iter(INSERT.items()) )) 
         if created_time:
             cmd += ",created_at=%f" % created_time
         if confidential_data:
@@ -501,11 +501,11 @@ class db_base():
         #print 'from_', from_
         if 'WHERE' in sql_dict and len(sql_dict['WHERE']) > 0:
             w=sql_dict['WHERE']
-            where_ = "WHERE " + " AND ".join(map(self.__tuple2db_format_where, w.iteritems())) 
+            where_ = "WHERE " + " AND ".join(map(self.__tuple2db_format_where, iter(w.items()))) 
         else: where_ = ""
         if 'WHERE_NOT' in sql_dict and len(sql_dict['WHERE_NOT']) > 0: 
             w=sql_dict['WHERE_NOT']
-            where_2 = " AND ".join(map(self.__tuple2db_format_where_not, w.iteritems()))
+            where_2 = " AND ".join(map(self.__tuple2db_format_where_not, iter(w.items())))
             if len(where_)==0:   where_ = "WHERE " + where_2
             else:                where_ = where_ + " AND " + where_2
         #print 'where_', where_
@@ -563,14 +563,14 @@ class db_base():
         where_or = ""
         w=sql_dict.get('WHERE')
         if w:
-            where_and = " AND ".join(map(self.__tuple2db_format_where, w.iteritems() ))
+            where_and = " AND ".join(map(self.__tuple2db_format_where, iter(w.items()) ))
         w=sql_dict.get('WHERE_NOT')
         if w: 
             if where_and: where_and += " AND "
-            where_and += " AND ".join(map(self.__tuple2db_format_where_not, w.iteritems() ) )
+            where_and += " AND ".join(map(self.__tuple2db_format_where_not, iter(w.items()) ) )
         w=sql_dict.get('WHERE_OR')
         if w:
-            where_or =  " OR ".join(map(self.__tuple2db_format_where, w.iteritems() ))
+            where_or =  " OR ".join(map(self.__tuple2db_format_where, iter(w.items()) ))
         if where_and and where_or:
             if sql_dict.get("WHERE_AND_OR") == "AND":
                 where_ = "WHERE " + where_and + " AND (" + where_or + ")"
@@ -619,7 +619,7 @@ class db_base():
         what = 'uuid' if af.check_valid_uuid(uuid_name) else 'name'
         cmd =  " SELECT * FROM {} WHERE {}='{}'".format(table, what, uuid_name)
         if WHERE_OR:
-            where_or =  " OR ".join(map(self.__tuple2db_format_where, WHERE_OR.iteritems() ))
+            where_or =  " OR ".join(map(self.__tuple2db_format_where, iter(WHERE_OR.items()) ))
             if WHERE_AND_OR == "AND":
                 cmd += " AND (" + where_or + ")"
             else:
@@ -657,7 +657,7 @@ class db_base():
                     rows = self.cur.fetchall()
                     return self.cur.rowcount, rows
             except (mdb.Error, AttributeError) as e:
-                print "nfvo_db.get_uuid DB Exception %d: %s" % (e.args[0], e.args[1])
+                print("nfvo_db.get_uuid DB Exception %d: %s" % (e.args[0], e.args[1]))
                 r,c = self._format_error(e)
                 if r!=-HTTP_Request_Timeout or retry_==1: return r,c
 
index b043267..1f08c46 100644 (file)
@@ -37,7 +37,7 @@ import time
 import logging
 
 from jsonschema import validate as js_v, exceptions as js_e
-from openmano_schemas import vnfd_schema_v01, vnfd_schema_v02, \
+from .openmano_schemas import vnfd_schema_v01, vnfd_schema_v02, \
                             nsd_schema_v01, nsd_schema_v02, nsd_schema_v03, scenario_edit_schema, \
                             scenario_action_schema, instance_scenario_action_schema, instance_scenario_create_schema_v01, \
                             tenant_schema, tenant_edit_schema,\
@@ -45,9 +45,9 @@ from openmano_schemas import vnfd_schema_v01, vnfd_schema_v02, \
                             object_schema, netmap_new_schema, netmap_edit_schema, sdn_controller_schema, sdn_controller_edit_schema, \
                             sdn_port_mapping_schema, sdn_external_port_schema
 
-import nfvo
-import utils
-from db_base import db_base_Exception
+from . import nfvo
+from . import utils
+from .db_base import db_base_Exception
 from functools import wraps
 
 global mydb
@@ -67,7 +67,7 @@ HTTP_Internal_Server_Error= 500
 
 def delete_nulls(var):
     if type(var) is dict:
-        for k in var.keys():
+        for k in list(var.keys()):
             if var[k] is None: del var[k]
             elif type(var[k]) is dict or type(var[k]) is list or type(var[k]) is tuple: 
                 if delete_nulls(var[k]): del var[k]
@@ -83,7 +83,7 @@ def convert_datetime2str(var):
     It enters recursively in the dict var finding this kind of variables
     '''
     if type(var) is dict:
-        for k,v in var.items():
+        for k,v in list(var.items()):
             if type(v) is float and k in ("created_at", "modified_at"):
                 var[k] = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(v) )
             elif type(v) is dict or type(v) is list or type(v) is tuple: 
@@ -166,10 +166,10 @@ def change_keys_http2db(data, http_db, reverse=False):
             change_keys_http2db(d, http_db, reverse)
     elif type(data) is dict or type(data) is bottle.FormsDict:
         if reverse:
-            for k,v in http_db.items():
+            for k,v in list(http_db.items()):
                 if v in data: data[k]=data.pop(v)
         else:
-            for k,v in http_db.items():
+            for k,v in list(http_db.items()):
                 if k in data: data[v]=data.pop(k)
 
 def format_out(data):
@@ -767,7 +767,7 @@ def http_getnetmap_datacenter_id(tenant_id, datacenter_id, netmap_id=None):
         if netmap_id and len(netmaps)==1:
             data={'netmap' : netmaps[0]}
         elif netmap_id and len(netmaps)==0:
-            bottle.abort(HTTP_Not_Found, "No netmap found with " + " and ".join(map(lambda x: str(x[0])+": "+str(x[1]), where_.iteritems())) )
+            bottle.abort(HTTP_Not_Found, "No netmap found with " + " and ".join([str(x[0])+": "+str(x[1]) for x in iter(where_.items())]) )
             return 
         else:
             data={'netmaps' : netmaps}
@@ -799,7 +799,7 @@ def http_delnetmap_datacenter_id(tenant_id, datacenter_id, netmap_id=None):
         #change_keys_http2db(content, http2db_tenant, reverse=True)
         deleted = mydb.delete_row(FROM='datacenter_nets', WHERE= where_) 
         if deleted == 0 and netmap_id:
-            bottle.abort(HTTP_Not_Found, "No netmap found with " + " and ".join(map(lambda x: str(x[0])+": "+str(x[1]), where_.iteritems())) )
+            bottle.abort(HTTP_Not_Found, "No netmap found with " + " and ".join([str(x[0])+": "+str(x[1]) for x in iter(where_.items())]) )
         if netmap_id:
             return format_out({"result": "netmap %s deleted" % netmap_id})
         else:
index bd5b5d6..8a1d949 100644 (file)
@@ -30,18 +30,18 @@ __date__ ="$16-sep-2014 22:05:01$"
 # import imp
 # import json
 import yaml
-import utils
-import vim_thread
-from db_base import HTTP_Unauthorized, HTTP_Bad_Request, HTTP_Internal_Server_Error, HTTP_Not_Found,\
+from . import utils
+from . import vim_thread
+from .db_base import HTTP_Unauthorized, HTTP_Bad_Request, HTTP_Internal_Server_Error, HTTP_Not_Found,\
     HTTP_Conflict, HTTP_Method_Not_Allowed
-import console_proxy_thread as cli
-import vimconn
+from . import console_proxy_thread as cli
+from . import vimconn
 import logging
 import collections
 from uuid import uuid4
-from db_base import db_base_Exception
+from .db_base import db_base_Exception
 
-import nfvo_db
+from . import nfvo_db
 from threading import Lock
 import time as t
 from lib_osm_openvim import ovim as ovim_module
@@ -212,7 +212,7 @@ def stop_service():
     global ovim, global_config
     if ovim:
         ovim.stop_service()
-    for thread_id,thread in vim_threads["running"].items():
+    for thread_id,thread in list(vim_threads["running"].items()):
         thread.insert_task("exit")
         vim_threads["deleting"][thread_id] = thread
     vim_threads["running"] = {}
@@ -518,7 +518,7 @@ def create_or_use_image(mydb, vims, image_dict, rollback_list, only_create_at_vi
             image_mano_id = mydb.new_row('images', temp_image_dict, add_uuid=True)
             rollback_list.append({"where":"mano", "what":"image","uuid":image_mano_id})
     #create image at every vim
-    for vim_id,vim in vims.iteritems():
+    for vim_id,vim in vims.items():
         datacenter_vim_id = vim["config"]["datacenter_tenant_id"]
         image_created="false"
         #look at database
@@ -636,7 +636,7 @@ def create_or_use_flavor(mydb, vims, flavor_dict, rollback_list, only_create_at_
     if 'uuid' in flavor_dict:
         del flavor_dict['uuid']
     flavor_vim_id=None
-    for vim_id,vim in vims.items():
+    for vim_id,vim in list(vims.items()):
         datacenter_vim_id = vim["config"]["datacenter_tenant_id"]
         flavor_created="false"
         #look at database
@@ -809,7 +809,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
         vnfd_descriptor_list = vnfd_catalog_descriptor.get("vnfd")
         if not vnfd_descriptor_list:
             vnfd_descriptor_list = vnfd_catalog_descriptor.get("vnfd:vnfd")
-        for vnfd_yang in myvnfd.vnfd_catalog.vnfd.itervalues():
+        for vnfd_yang in myvnfd.vnfd_catalog.vnfd.values():
             vnfd = vnfd_yang.get()
 
             # table vnf
@@ -833,7 +833,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
 
             # table nets (internal-vld)
             net_id2uuid = {}  # for mapping interface with network
-            for vld in vnfd.get("internal-vld").itervalues():
+            for vld in vnfd.get("internal-vld").values():
                 net_uuid = str(uuid4())
                 uuid_list.append(net_uuid)
                 db_net = {
@@ -849,7 +849,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
             # table vms (vdus)
             vdu_id2uuid = {}
             vdu_id2db_table_index = {}
-            for vdu in vnfd.get("vdu").itervalues():
+            for vdu in vnfd.get("vdu").values():
                 vm_uuid = str(uuid4())
                 uuid_list.append(vm_uuid)
                 db_vm = {
@@ -928,7 +928,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
                                     epa_vcpu_set = True
                                 if len(numa_node["paired-threads"].get("paired-thread-ids")):
                                     numa["paired-threads-id"] = []
-                                    for pair in numa_node["paired-threads"]["paired-thread-ids"].itervalues():
+                                    for pair in numa_node["paired-threads"]["paired-thread-ids"].values():
                                         numa["paired-threads-id"].append(
                                             (str(pair["thread-a"]), str(pair["thread-b"]))
                                         )
@@ -983,7 +983,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
                             boot_data['boot-data-drive'] = True
                     if vdu["supplemental-boot-data"].get('config-file'):
                         om_cfgfile_list = list()
-                        for custom_config_file in vdu["supplemental-boot-data"]['config-file'].itervalues():
+                        for custom_config_file in vdu["supplemental-boot-data"]['config-file'].values():
                             # TODO Where this file content is present???
                             cfg_source = str(custom_config_file["source"])
                             om_cfgfile_list.append({"dest": custom_config_file["dest"],
@@ -999,7 +999,7 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
                 cp_name2iface_uuid = {}
                 cp_name2vm_uuid = {}
                 # for iface in chain(vdu.get("internal-interface").itervalues(), vdu.get("external-interface").itervalues()):
-                for iface in vdu.get("interface").itervalues():
+                for iface in vdu.get("interface").values():
                     iface_uuid = str(uuid4())
                     uuid_list.append(iface_uuid)
                     db_interface = {
@@ -1051,8 +1051,8 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
                                                 HTTP_Bad_Request)
                     elif iface.get("internal-connection-point-ref"):
                         try:
-                            for vld in vnfd.get("internal-vld").itervalues():
-                                for cp in vld.get("internal-connection-point").itervalues():
+                            for vld in vnfd.get("internal-vld").values():
+                                for cp in vld.get("internal-connection-point").values():
                                     if cp.get("id-ref") == iface.get("internal-connection-point-ref"):
                                         db_interface["net_id"] = net_id2uuid[vld.get("id")]
                                         for cp_descriptor in vnfd_descriptor["connection-point"]:
@@ -1075,9 +1075,9 @@ def new_vnfd_v3(mydb, tenant_id, vnf_descriptor):
                     db_interfaces.append(db_interface)
 
             # VNF affinity and antiaffinity
-            for pg in vnfd.get("placement-groups").itervalues():
+            for pg in vnfd.get("placement-groups").values():
                 pg_name = get_str(pg, "name", 255)
-                for vdu in pg.get("member-vdus").itervalues():
+                for vdu in pg.get("member-vdus").values():
                     vdu_id = get_str(vdu, "member-vdu-ref", 255)
                     if vdu_id not in vdu_id2db_table_index:
                         raise NfvoException("Error. Invalid VNF descriptor at 'vnfd[{vnf}]':'placement-groups[{pg}]':"
@@ -1427,7 +1427,7 @@ def get_vnf_id(mydb, tenant_id, vnf_id):
 
     vnf_id = vnf["uuid"]
     filter_keys = ('uuid', 'name', 'description', 'public', "tenant_id", "osm_id", "created_at")
-    filtered_content = dict( (k,v) for k,v in vnf.iteritems() if k in filter_keys )
+    filtered_content = dict( (k,v) for k,v in vnf.items() if k in filter_keys )
     #change_keys_http2db(filtered_content, http2db_vnf, reverse=True)
     data={'vnf' : filtered_content}
     #GET VM
@@ -1580,7 +1580,7 @@ def get_hosts_info(mydb, nfvo_tenant_id, datacenter_name=None):
         return result, vims
     elif result == 0:
         return -HTTP_Not_Found, "datacenter '%s' not found" % datacenter_name
-    myvim = vims.values()[0]
+    myvim = list(vims.values())[0]
     result,servers =  myvim.get_hosts_info()
     if result < 0:
         return result, servers
@@ -1595,7 +1595,7 @@ def get_hosts(mydb, nfvo_tenant_id):
     elif len(vims)>1:
         #print "nfvo.datacenter_action() error. Several datacenters found"
         raise NfvoException("More than one datacenters found, try to identify with uuid", HTTP_Conflict)
-    myvim = vims.values()[0]
+    myvim = list(vims.values())[0]
     try:
         hosts =  myvim.get_hosts()
         logger.debug('VIM hosts response: '+ yaml.safe_dump(hosts, indent=4, default_flow_style=False))
@@ -1643,7 +1643,7 @@ def new_scenario(mydb, tenant_id, topo):
     vnfs={}
     other_nets={}  #external_networks, bridge_networks and data_networkds
     nodes = topo['topology']['nodes']
-    for k in nodes.keys():
+    for k in list(nodes.keys()):
         if nodes[k]['type'] == 'VNF':
             vnfs[k] = nodes[k]
             vnfs[k]['ifaces'] = {}
@@ -1656,7 +1656,7 @@ def new_scenario(mydb, tenant_id, topo):
 
 
 #1.2: Check that VNF are present at database table vnfs. Insert uuid, description and external interfaces
-    for name,vnf in vnfs.items():
+    for name,vnf in list(vnfs.items()):
         where={}
         where_or={"tenant_id": tenant_id, 'public': "true"}
         error_text = ""
@@ -1692,12 +1692,12 @@ def new_scenario(mydb, tenant_id, topo):
     conections = topo['topology']['connections']
     conections_list = []
     conections_list_name = []
-    for k in conections.keys():
+    for k in list(conections.keys()):
         if type(conections[k]['nodes'])==dict: #dict with node:iface pairs
-            ifaces_list = conections[k]['nodes'].items()
+            ifaces_list = list(conections[k]['nodes'].items())
         elif type(conections[k]['nodes'])==list: #list with dictionary
             ifaces_list=[]
-            conection_pair_list = map(lambda x: x.items(), conections[k]['nodes'] )
+            conection_pair_list = [list(x.items()) for x in conections[k]['nodes']]
             for k2 in conection_pair_list:
                 ifaces_list += k2
 
@@ -1761,7 +1761,7 @@ def new_scenario(mydb, tenant_id, topo):
 #                    del con[index]
 #            del other_nets[k]
 #1.7: Check external_ports are present at database table datacenter_nets
-    for k,net in other_nets.items():
+    for k,net in list(other_nets.items()):
         error_pos = "'topology':'nodes':'" + k + "'"
         if net['external']==False:
             if 'name' not in net:
@@ -1809,7 +1809,7 @@ def new_scenario(mydb, tenant_id, topo):
         #print "con", con
         for index in range(0,len(con)):
             #check if this is connected to a external net
-            for net_key in other_nets.keys():
+            for net_key in list(other_nets.keys()):
                 if con[index][0]==net_key:
                     if other_net_index>=0:
                         error_text="There is some interface connected both to net '%s' and net '%s'" % (con[other_net_index][0], net_key)
@@ -1880,8 +1880,8 @@ def new_scenario(mydb, tenant_id, topo):
     #1.8.2 check all interfaces from all vnfs
     if len(mgmt_net)>0:
         add_mgmt_net = False
-        for vnf in vnfs.values():
-            for iface in vnf['ifaces'].values():
+        for vnf in list(vnfs.values()):
+            for iface in list(vnf['ifaces'].values()):
                 if iface['type']=='mgmt' and 'net_key' not in iface:
                     #iface not connected
                     iface['net_key'] = 'mgmt'
@@ -1922,7 +1922,7 @@ def new_scenario_v02(mydb, tenant_id, scenario_dict, version):
         tenant_id=None
 
     # 1: Check that VNF are present at database table vnfs and update content into scenario dict
-    for name,vnf in scenario["vnfs"].iteritems():
+    for name,vnf in scenario["vnfs"].items():
         where={}
         where_or={"tenant_id": tenant_id, 'public': "true"}
         error_text = ""
@@ -1956,7 +1956,7 @@ def new_scenario_v02(mydb, tenant_id, scenario_dict, version):
         # TODO? get internal-connections from db.nets and their profiles, and update scenario[vnfs][internal-connections] accordingly
 
     # 2: Insert net_key and ip_address at every vnf interface
-    for net_name, net in scenario["networks"].items():
+    for net_name, net in list(scenario["networks"].items()):
         net_type_bridge = False
         net_type_data = False
         for iface_dict in net["interfaces"]:
@@ -1966,7 +1966,7 @@ def new_scenario_v02(mydb, tenant_id, scenario_dict, version):
             elif version == "0.3":
                 temp_dict = {iface_dict["vnf"] : iface_dict["vnf_interface"]}
                 ip_address = iface_dict.get('ip_address', None)
-            for vnf, iface in temp_dict.items():
+            for vnf, iface in list(temp_dict.items()):
                 if vnf not in scenario["vnfs"]:
                     error_text = "Error at 'networks':'{}':'interfaces' VNF '{}' not match any VNF at 'vnfs'".format(
                         net_name, vnf)
@@ -2054,7 +2054,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
         db_ip_profiles_index = 0
         uuid_list = []
         nsd_uuid_list = []
-        for nsd_yang in mynsd.nsd_catalog.nsd.itervalues():
+        for nsd_yang in mynsd.nsd_catalog.nsd.values():
             nsd = nsd_yang.get()
 
             # table sceanrios
@@ -2076,7 +2076,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
             # table sce_vnfs (constituent-vnfd)
             vnf_index2scevnf_uuid = {}
             vnf_index2vnf_uuid = {}
-            for vnf in nsd.get("constituent-vnfd").itervalues():
+            for vnf in nsd.get("constituent-vnfd").values():
                 existing_vnf = mydb.get_rows(FROM="vnfs", WHERE={'osm_id': str(vnf["vnfd-id-ref"])[:255],
                                                                       'tenant_id': tenant_id})
                 if not existing_vnf:
@@ -2100,7 +2100,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
 
             # table ip_profiles (ip-profiles)
             ip_profile_name2db_table_index = {}
-            for ip_profile in nsd.get("ip-profiles").itervalues():
+            for ip_profile in nsd.get("ip-profiles").values():
                 db_ip_profile = {
                     "ip_version": str(ip_profile["ip-profile-params"].get("ip-version", "ipv4")),
                     "subnet_address": str(ip_profile["ip-profile-params"].get("subnet-address")),
@@ -2110,7 +2110,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
                     "dhcp_count": str(ip_profile["ip-profile-params"]["dhcp-params"].get("count")),
                 }
                 dns_list = []
-                for dns in ip_profile["ip-profile-params"]["dns-server"].itervalues():
+                for dns in ip_profile["ip-profile-params"]["dns-server"].values():
                     dns_list.append(str(dns.get("address")))
                 db_ip_profile["dns_address"] = ";".join(dns_list)
                 if ip_profile["ip-profile-params"].get('security-group'):
@@ -2120,7 +2120,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
                 db_ip_profiles.append(db_ip_profile)
 
             # table sce_nets (internal-vld)
-            for vld in nsd.get("vld").itervalues():
+            for vld in nsd.get("vld").values():
                 sce_net_uuid = str(uuid4())
                 uuid_list.append(sce_net_uuid)
                 db_sce_net = {
@@ -2153,7 +2153,7 @@ def new_nsd_v3(mydb, tenant_id, nsd_descriptor):
                     db_ip_profiles[ip_profile_name2db_table_index[ip_profile_name]]["sce_net_id"] = sce_net_uuid
 
                 # table sce_interfaces (vld:vnfd-connection-point-ref)
-                for iface in vld.get("vnfd-connection-point-ref").itervalues():
+                for iface in vld.get("vnfd-connection-point-ref").values():
                     vnf_index = int(iface['member-vnf-index-ref'])
                     # check correct parameters
                     if vnf_index not in vnf_index2vnf_uuid:
@@ -2592,13 +2592,13 @@ def get_datacenter_by_name_uuid(mydb, tenant_id, datacenter_id_name=None, **extr
     elif len(vims)>1:
         #print "nfvo.datacenter_action() error. Several datacenters found"
         raise NfvoException("More than one datacenters found, try to identify with uuid", HTTP_Conflict)
-    return vims.keys()[0], vims.values()[0]
+    return list(vims.keys())[0], list(vims.values())[0]
 
 
 def update(d, u):
     '''Takes dict d and updates it with the values in dict u.'''
     '''It merges all depth levels'''
-    for k, v in u.iteritems():
+    for k, v in u.items():
         if isinstance(v, collections.Mapping):
             r = update(d.get(k, {}), v)
             d[k] = r
@@ -2670,7 +2670,7 @@ def create_instance(mydb, tenant_id, instance_dict):
     #               yaml.safe_dump(scenarioDict, indent=4, default_flow_style=False))
     try:
         # 0 check correct parameters
-        for net_name, net_instance_desc in instance_dict.get("networks", {}).iteritems():
+        for net_name, net_instance_desc in instance_dict.get("networks", {}).items():
             found = False
             for scenario_net in scenarioDict['nets']:
                 if net_name == scenario_net["name"]:
@@ -2698,7 +2698,7 @@ def create_instance(mydb, tenant_id, instance_dict):
                     site_without_datacenter_field = True
                     site["datacenter"] = default_datacenter_id   # change name to id
 
-        for vnf_name, vnf_instance_desc in instance_dict.get("vnfs",{}).iteritems():
+        for vnf_name, vnf_instance_desc in instance_dict.get("vnfs",{}).items():
             found = False
             for scenario_vnf in scenarioDict['vnfs']:
                 if vnf_name == scenario_vnf['name']:
@@ -2725,7 +2725,7 @@ def create_instance(mydb, tenant_id, instance_dict):
         # 0.2 merge instance information into scenario
         # Ideally, the operation should be as simple as: update(scenarioDict,instance_dict)
         # However, this is not possible yet.
-        for net_name, net_instance_desc in instance_dict.get("networks",{}).iteritems():
+        for net_name, net_instance_desc in instance_dict.get("networks",{}).items():
             for scenario_net in scenarioDict['nets']:
                 if net_name == scenario_net["name"]:
                     if 'ip-profile' in net_instance_desc:
@@ -3185,7 +3185,7 @@ def create_instance(mydb, tenant_id, instance_dict):
         logger.debug("create_instance done DB tables: %s",
                     yaml.safe_dump(db_tables, indent=4, default_flow_style=False) )
         mydb.new_rows(db_tables, uuid_list)
-        for myvim_thread_id in myvim_threads_id.values():
+        for myvim_thread_id in list(myvim_threads_id.values()):
             vim_threads["running"][myvim_thread_id].insert_task(db_vim_actions)
 
         returned_instance = mydb.get_instance_scenario(instance_uuid)
@@ -3250,7 +3250,7 @@ def delete_instance(mydb, tenant_id, instance_id):
                                                                                         sce_vnf["datacenter_tenant_id"]))
                 myvims[datacenter_key] = None
             else:
-                myvims[datacenter_key] = vims.values()[0]
+                myvims[datacenter_key] = list(vims.values())[0]
         myvim = myvims[datacenter_key]
         myvim_thread = myvim_threads[datacenter_key]
         for vm in sce_vnf['vms']:
@@ -3302,7 +3302,7 @@ def delete_instance(mydb, tenant_id, instance_id):
                 logger.error("datacenter '{}' with datacenter_tenant_id '{}' not found".format(net["datacenter_id"], net["datacenter_tenant_id"]))
                 myvims[datacenter_key] = None
             else:
-                myvims[datacenter_key] = vims.values()[0]
+                myvims[datacenter_key] = list(vims.values())[0]
         myvim = myvims[datacenter_key]
         myvim_thread = myvim_threads[datacenter_key]
 
@@ -3344,7 +3344,7 @@ def delete_instance(mydb, tenant_id, instance_id):
     logger.debug("delete_instance done DB tables: %s",
                  yaml.safe_dump(db_tables, indent=4, default_flow_style=False))
     mydb.new_rows(db_tables, ())
-    for myvim_thread_id in vimthread_affected.keys():
+    for myvim_thread_id in list(vimthread_affected.keys()):
         vim_threads["running"][myvim_thread_id].insert_task(db_vim_actions)
 
     if len(error_msg) > 0:
@@ -3527,7 +3527,7 @@ def instance_action(mydb,nfvo_tenant,instance_id, action_dict):
     vims = get_vim(mydb, nfvo_tenant, instanceDict['datacenter_id'])
     if len(vims) == 0:
         raise NfvoException("datacenter '{}' not found".format(str(instanceDict['datacenter_id'])), HTTP_Not_Found)
-    myvim = vims.values()[0]
+    myvim = list(vims.values())[0]
 
     if action_dict.get("create-vdu"):
         for vdu in action_dict["create-vdu"]:
@@ -4199,12 +4199,12 @@ def vim_action_get(mydb, tenant_id, datacenter, item, name):
         if name and len(content)==1:
             return {item[:-1]: content[0]}
         elif name and len(content)==0:
-            raise NfvoException("No {} found with ".format(item[:-1]) + " and ".join(map(lambda x: str(x[0])+": "+str(x[1]), filter_dict.iteritems())),
+            raise NfvoException("No {} found with ".format(item[:-1]) + " and ".join([str(x[0])+": "+str(x[1]) for x in iter(filter_dict.items())]),
                  datacenter)
         else:
             return {item: content}
     except vimconn.vimconnException as e:
-        print "vim_action Not possible to get_%s_list from VIM: %s " % (item, str(e))
+        print("vim_action Not possible to get_%s_list from VIM: %s " % (item, str(e)))
         raise NfvoException("Not possible to get_{}_list from VIM: {}".format(item, str(e)), e.http_code)
 
 
@@ -4217,7 +4217,7 @@ def vim_action_delete(mydb, tenant_id, datacenter, item, name):
     #get uuid name
     content = vim_action_get(mydb, tenant_id, datacenter, item, name)
     logger.debug("vim_action_delete vim response: " + str(content))
-    items = content.values()[0]
+    items = list(content.values())[0]
     if type(items)==list and len(items)==0:
         raise NfvoException("Not found " + item, HTTP_Not_Found)
     elif type(items)==list and len(items)>1:
index f47ad16..25196dd 100644 (file)
@@ -27,7 +27,7 @@ NFVO DB engine. It implements all the methods to interact with the Openmano Data
 __author__="Alfonso Tierno, Gerardo Garcia, Pablo Montes"
 __date__ ="$28-aug-2014 10:05:01$"
 
-import db_base
+from . import db_base
 import MySQLdb as mdb
 import json
 import yaml
@@ -66,7 +66,7 @@ class nfvo_db(db_base.db_base):
                     #print "Adding new vms to the NFVO database"
                     #For each vm, we must create the appropriate vm in the NFVO database.
                     vmDict = {}
-                    for _,vm in VNFCDict.iteritems():
+                    for _,vm in VNFCDict.items():
                         #This code could make the name of the vms grow and grow.
                         #If we agree to follow this convention, we should check with a regex that the vnfc name is not including yet the vnf name  
                         #vm['name'] = "%s-%s" % (vnf_name,vm['name'])
@@ -218,7 +218,7 @@ class nfvo_db(db_base.db_base):
                     #print "Adding new vms to the NFVO database"
                     #For each vm, we must create the appropriate vm in the NFVO database.
                     vmDict = {}
-                    for _,vm in VNFCDict.iteritems():
+                    for _,vm in VNFCDict.items():
                         #This code could make the name of the vms grow and grow.
                         #If we agree to follow this convention, we should check with a regex that the vnfc name is not including yet the vnf name  
                         #vm['name'] = "%s-%s" % (vnf_name,vm['name'])
@@ -389,7 +389,7 @@ class nfvo_db(db_base.db_base):
                     
                     scenario_uuid =  self._new_row_internal('scenarios', INSERT_, add_uuid=True, root_uuid=None, created_time=created_time)
                     #sce_nets
-                    for net in scenario_dict['nets'].values():
+                    for net in list(scenario_dict['nets'].values()):
                         net_dict={'scenario_id': scenario_uuid}
                         net_dict["name"] = net["name"]
                         net_dict["type"] = net["type"]
@@ -418,7 +418,7 @@ class nfvo_db(db_base.db_base):
                             self._new_row_internal('ip_profiles', myIPProfileDict)
 
                     # sce_vnfs
-                    for k, vnf in scenario_dict['vnfs'].items():
+                    for k, vnf in list(scenario_dict['vnfs'].items()):
                         INSERT_ = {'scenario_id': scenario_uuid,
                                    'name': k,
                                    'vnf_id': vnf['uuid'],
@@ -433,7 +433,7 @@ class nfvo_db(db_base.db_base):
                                                               root_uuid=scenario_uuid, created_time=created_time)
                         vnf['scn_vnf_uuid']=scn_vnf_uuid
                         # sce_interfaces
-                        for iface in vnf['ifaces'].values():
+                        for iface in list(vnf['ifaces'].values()):
                             # print 'iface', iface
                             if 'net_key' not in iface:
                                 continue
@@ -488,7 +488,7 @@ class nfvo_db(db_base.db_base):
                         WHERE_={'tenant_id': tenant_id, 'uuid': scenario_uuid}
                         item_changed += self._update_rows('scenarios', UPDATE_, WHERE_, modified_time=modified_time)
                     #sce_nets
-                    for node_id, node in nodes.items():
+                    for node_id, node in list(nodes.items()):
                         if "graph" in node:
                             #node["graph"] = yaml.safe_dump(node["graph"],default_flow_style=True,width=256)
                             #TODO, must be json because of the GUI, change to yaml
@@ -759,7 +759,7 @@ class nfvo_db(db_base.db_base):
                 with self.con:
                     self.cur = self.con.cursor()
                     for table in tables:
-                        for table_name, row_list in table.items():
+                        for table_name, row_list in list(table.items()):
                             index = 0
                             if isinstance(row_list, dict):
                                 row_list = (row_list, )  #create a list with the single value
@@ -810,7 +810,7 @@ class nfvo_db(db_base.db_base):
                             net["vim_id_sites"]["datacenter_site_id"] = {datacenter_site_id: net['vim_id']}
                         sce_net_id = net.get("uuid")
                         
-                        for datacenter_site_id,vim_id in net["vim_id_sites"].iteritems():
+                        for datacenter_site_id,vim_id in net["vim_id_sites"].items():
                             INSERT_={'vim_net_id': vim_id, 'created': net.get('created', False), 'instance_scenario_id':instance_uuid } #,  'type': net['type']
                             INSERT_['datacenter_id'] = datacenter_site_id 
                             INSERT_['datacenter_tenant_id'] = scenarioDict["datacenter2tenant"][datacenter_site_id]
index 1566203..07aead3 100644 (file)
@@ -40,7 +40,7 @@ version_date = "Oct 2017"
 if sys.version_info.major == 3:
     from urllib.parse import quote
 elif sys.version_info.major == 2:
-    from urllib import quote
+    from urllib.parse import quote
 
 class OpenmanoException(Exception):
     '''Common Exception for all openmano client exceptions'''
index 00f6f2d..20646a1 100644 (file)
@@ -62,7 +62,7 @@ def format_in(http_response, schema):
         #print "Input data: ", str(client_data)
         return True, client_data
     except js_e.ValidationError as exc:
-        print "validate_in error, jsonschema exception ", exc.message, "at", exc.path
+        print("validate_in error, jsonschema exception ", exc.message, "at", exc.path)
         return False, ("validate_in error, jsonschema exception ", exc.message, "at", exc.path)
 
 def remove_extra_items(data, schema):
@@ -75,8 +75,8 @@ def remove_extra_items(data, schema):
         #TODO deal with patternProperties
         if 'properties' not in schema:
             return None
-        for k in data.keys():
-            if k not in schema['properties'].keys():
+        for k in list(data.keys()):
+            if k not in list(schema['properties'].keys()):
                 del data[k]
                 deleted.append(k)
             else:
@@ -102,7 +102,7 @@ def convert_bandwidth(data, reverse=False):
         None
     '''
     if type(data) is dict:
-        for k in data.keys():
+        for k in list(data.keys()):
             if type(data[k]) is dict or type(data[k]) is tuple or type(data[k]) is list:
                 convert_bandwidth(data[k], reverse)
         if "bandwidth" in data:
@@ -119,7 +119,7 @@ def convert_bandwidth(data, reverse=False):
                     if value % 1000 == 0: data["bandwidth"]=str(value/1000) + " Gbps"
                     else: data["bandwidth"]=str(value) + " Mbps"
             except:
-                print "convert_bandwidth exception for type", type(data["bandwidth"]), " data", data["bandwidth"]
+                print("convert_bandwidth exception for type", type(data["bandwidth"]), " data", data["bandwidth"])
                 return
     if type(data) is tuple or type(data) is list:
         for k in data:
@@ -133,7 +133,7 @@ def convert_datetime2str(var):
     It enters recursively in the dict var finding this kind of variables
     '''
     if type(var) is dict:
-        for k,v in var.items():
+        for k,v in list(var.items()):
             if type(v) is datetime.datetime:
                 var[k]= v.strftime('%Y-%m-%dT%H:%M:%S')
             elif type(v) is dict or type(v) is list or type(v) is tuple: 
@@ -153,7 +153,7 @@ def convert_str2boolean(data, items):
         None
     '''
     if type(data) is dict:
-        for k in data.keys():
+        for k in list(data.keys()):
             if type(data[k]) is dict or type(data[k]) is tuple or type(data[k]) is list:
                 convert_str2boolean(data[k], items)
             if k in items:
index 22a882e..8ce029f 100644 (file)
@@ -57,11 +57,11 @@ The task content are (M: stored at memory, D: stored at database):
 
 import threading
 import time
-import Queue
+import queue
 import logging
-import vimconn
+from . import vimconn
 import yaml
-from db_base import db_base_Exception
+from .db_base import db_base_Exception
 from lib_osm_openvim.ovim import ovimException
 
 __author__ = "Alfonso Tierno, Pablo Montes"
@@ -116,7 +116,7 @@ class vim_thread(threading.Thread):
         self.db_lock = db_lock
 
         self.task_lock = task_lock
-        self.task_queue = Queue.Queue(2000)
+        self.task_queue = queue.Queue(2000)
 
         self.refresh_tasks = []
         """Contains time ordered task list for refreshing the status of VIM VMs and nets"""
@@ -206,7 +206,7 @@ class vim_thread(threading.Thread):
             try:
                 now = time.time()
                 vim_dict = self.vim.refresh_vms_status(vm_to_refresh_list)
-                for vim_id, vim_info in vim_dict.items():
+                for vim_id, vim_info in list(vim_dict.items()):
                     # look for task
                     task_need_update = False
                     task = vm_to_refresh_dict[vim_id]
@@ -309,7 +309,7 @@ class vim_thread(threading.Thread):
             try:
                 now = time.time()
                 vim_dict = self.vim.refresh_nets_status(net_to_refresh_list)
-                for vim_id, vim_info in vim_dict.items():
+                for vim_id, vim_info in list(vim_dict.items()):
                     # look for task
                     task = net_to_refresh_dict[vim_id]
                     self.logger.debug("get-net net_id=%s result=%s", task["vim_id"], str(vim_info))
@@ -557,7 +557,7 @@ class vim_thread(threading.Thread):
         try:
             self.task_queue.put(task, False)
             return None
-        except Queue.Full:
+        except queue.Full:
             raise vimconn.vimconnException(self.name + ": timeout inserting a task")
 
     def del_task(self, task):
@@ -688,7 +688,7 @@ class vim_thread(threading.Thread):
         vm_vim_id = task["vim_id"]
         interfaces = task["extra"].get("interfaces", ())
         try:
-            for iface in interfaces.values():
+            for iface in list(interfaces.values()):
                 if iface.get("sdn_port_id"):
                     try:
                         with self.db_lock:
index 1fbce19..ba3b1e2 100644 (file)
@@ -31,7 +31,7 @@ __date__ ="$14-aug-2017 23:59:59$"
 import logging
 import paramiko
 import socket
-import StringIO
+import io
 import yaml
 import sys
 from email.mime.multipart import MIMEMultipart
@@ -799,7 +799,7 @@ class vimconnector():
             client = paramiko.SSHClient()
             try:
                 if ro_key:
-                    pkey = paramiko.RSAKey.from_private_key(StringIO.StringIO(ro_key))
+                    pkey = paramiko.RSAKey.from_private_key(io.StringIO(ro_key))
                 else:
                     pkey = None
                 client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
index 3ccef44..9b13030 100644 (file)
@@ -28,7 +28,7 @@ AWS-connector implements all the methods to interact with AWS using the BOTO cli
 __author__ = "Saboor Ahmad"
 __date__ = "10-Apr-2017"
 
-import vimconn
+from . import vimconn
 import yaml
 import logging
 import netaddr
@@ -275,7 +275,7 @@ class vimconnector(vimconn.vimconnector):
             pub_subs = pub_split[:3]
             subnets = pub_subs + pri_subs
 
-        return map(str, subnets)
+        return list(map(str, subnets))
 
     def new_network(self, net_name, net_type, ip_profile=None, shared=False, vlan=None):
         """Adds a tenant network to VIM
@@ -470,7 +470,7 @@ class vimconnector(vimconn.vimconnector):
         self.logger.debug("Getting flavor id from data")
         try:
             flavor = None
-            for key, values in self.flavor_info.iteritems():
+            for key, values in self.flavor_info.items():
                 if (values["ram"], values["cpus"], values["disk"]) == (
                 flavor_dict["ram"], flavor_dict["vcpus"], flavor_dict["disk"]):
                     flavor = (key, values)
index 6df830d..44178a8 100644 (file)
@@ -35,7 +35,7 @@ to the VIM connector's SFC resources as follows:
 __author__ = "Alfonso Tierno, Gerardo Garcia, Pablo Montes, xFlow Research, Igor D.C."
 __date__  = "$22-sep-2017 23:59:59$"
 
-import vimconn
+from . import vimconn
 import json
 import logging
 import netaddr
@@ -55,7 +55,7 @@ from glanceclient import client as glClient
 import glanceclient.client as gl1Client
 import glanceclient.exc as gl1Exceptions
 from  cinderclient import client as cClient
-from httplib import HTTPException
+from http.client import HTTPException
 from neutronclient.neutron import client as neClient
 from neutronclient.common import exceptions as neExceptions
 from requests.exceptions import ConnectionError
@@ -383,7 +383,7 @@ class vimconnector(vimconn.vimconnector):
             else:
                 project = self.keystone.tenants.create(tenant_name, tenant_description)
             return project.id
-        except (ksExceptions.ConnectionError, ksExceptions.ClientException, ConnectionError)  as e:
+        except (ksExceptions.ConnectionError, ksExceptions.ClientException, ConnectionError) as e:
             self._format_exception(e)
 
     def delete_tenant(self, tenant_id):
@@ -396,7 +396,7 @@ class vimconnector(vimconn.vimconnector):
             else:
                 self.keystone.tenants.delete(tenant_id)
             return tenant_id
-        except (ksExceptions.ConnectionError, ksExceptions.ClientException, ConnectionError)  as e:
+        except (ksExceptions.ConnectionError, ksExceptions.ClientException, ConnectionError) as e:
             self._format_exception(e)
 
     def new_network(self,net_name, net_type, ip_profile=None, shared=False, vlan=None):
@@ -780,7 +780,7 @@ class vimconnector(vimconn.vimconnector):
                 new_image_nova.metadata.setdefault('location',image_dict['location'])
                 metadata_to_load = image_dict.get('metadata')
                 if metadata_to_load:
-                    for k,v in yaml.load(metadata_to_load).iteritems():
+                    for k,v in yaml.load(metadata_to_load).items():
                         new_image_nova.metadata.setdefault(k,v)
                 return new_image.id
             except (nvExceptions.Conflict, ksExceptions.ClientException, nvExceptions.ClientException) as e:
@@ -1073,7 +1073,7 @@ class vimconnector(vimconn.vimconnector):
                 elapsed_time = 0
                 while keep_waiting and elapsed_time < volume_timeout:
                     keep_waiting = False
-                    for volume_id in block_device_mapping.itervalues():
+                    for volume_id in block_device_mapping.values():
                         if self.cinder.volumes.get(volume_id).status != 'available':
                             keep_waiting = True
                     if keep_waiting:
@@ -1083,7 +1083,7 @@ class vimconnector(vimconn.vimconnector):
                 #if we exceeded the timeout rollback
                 if elapsed_time >= volume_timeout:
                     #delete the volumes we just created
-                    for volume_id in block_device_mapping.itervalues():
+                    for volume_id in block_device_mapping.values():
                         self.cinder.volumes.delete(volume_id)
 
                     #delete ports we just created
@@ -1187,7 +1187,7 @@ class vimconnector(vimconn.vimconnector):
         except Exception as e:
             # delete the volumes we just created
             if block_device_mapping:
-                for volume_id in block_device_mapping.itervalues():
+                for volume_id in block_device_mapping.values():
                     self.cinder.volumes.delete(volume_id)
 
             # Delete the VM
@@ -1504,8 +1504,8 @@ class vimconnector(vimconn.vimconnector):
         #find unused VLAN ID
         for vlanID_range in self.config.get('dataplane_net_vlan_range'):
             try:
-                start_vlanid , end_vlanid = map(int, vlanID_range.replace(" ", "").split("-"))
-                for vlanID in xrange(start_vlanid, end_vlanid + 1):
+                start_vlanid , end_vlanid = list(map(int, vlanID_range.replace(" ", "").split("-")))
+                for vlanID in range(start_vlanid, end_vlanid + 1):
                     if vlanID not in used_vlanIDs:
                         return vlanID
             except Exception as exp:
@@ -1530,7 +1530,7 @@ class vimconnector(vimconn.vimconnector):
                 raise vimconn.vimconnConflictException("Invalid dataplane_net_vlan_range {}.You must provide "\
                 "'dataplane_net_vlan_range' in format [start_ID - end_ID].".format(vlanID_range))
 
-            start_vlanid , end_vlanid = map(int,vlan_range.split("-"))
+            start_vlanid , end_vlanid = list(map(int,vlan_range.split("-")))
             if start_vlanid <= 0 :
                 raise vimconn.vimconnConflictException("Invalid dataplane_net_vlan_range {}."\
                 "Start ID can not be zero. For VLAN "\
@@ -1601,7 +1601,7 @@ class vimconnector(vimconn.vimconnector):
         #TODO insert exception vimconn.HTTP_Unauthorized
         #if reaching here is because an exception
         if self.debug:
-            print("delete_tenant " + error_text)
+            print(("delete_tenant " + error_text))
         return error_value, error_text
 
     def get_hosts_info(self):
@@ -1625,7 +1625,7 @@ class vimconnector(vimconn.vimconnector):
         #TODO insert exception vimconn.HTTP_Unauthorized
         #if reaching here is because an exception
         if self.debug:
-            print("get_hosts_info " + error_text)
+            print(("get_hosts_info " + error_text))
         return error_value, error_text
 
     def get_hosts(self, vim_tenant):
@@ -1654,7 +1654,7 @@ class vimconnector(vimconn.vimconnector):
         #TODO insert exception vimconn.HTTP_Unauthorized
         #if reaching here is because an exception
         if self.debug:
-            print("get_hosts " + error_text)
+            print(("get_hosts " + error_text))
         return error_value, error_text
 
     def new_classification(self, name, ctype, definition):
index 135cfc6..08d5d98 100644 (file)
@@ -27,15 +27,15 @@ vimconnector implements all the methods to interact with openvim using the openv
 __author__="Alfonso Tierno, Gerardo Garcia"
 __date__ ="$26-aug-2014 11:09:29$"
 
-import vimconn
+from . import vimconn
 import requests
 import json
 import yaml
 import logging
-from openmano_schemas import id_schema, name_schema, nameshort_schema, description_schema, \
+from .openmano_schemas import id_schema, name_schema, nameshort_schema, description_schema, \
                             vlan1000_schema, integer0_schema
 from jsonschema import validate as js_v, exceptions as js_e
-from urllib import quote
+from urllib.parse import quote
 
 '''contain the openvim virtual machine status to openmano status'''
 vmStatus2manoFormat={'ACTIVE':'ACTIVE',
@@ -380,7 +380,7 @@ class vimconnector(vimconn.vimconnector):
             #print "Input data: ", str(client_data)
             return True, client_data
         except js_e.ValidationError as exc:
-            print "validate_in error, jsonschema exception ", exc.message, "at", exc.path
+            print("validate_in error, jsonschema exception ", exc.message, "at", exc.path)
             return False, ("validate_in error, jsonschema exception ", exc.message, "at", exc.path)
     
     def _remove_extra_items(self, data, schema):
@@ -390,8 +390,8 @@ class vimconnector(vimconn.vimconnector):
                 a= self._remove_extra_items(d, schema['items'])
                 if a is not None: deleted.append(a)
         elif type(data) is dict:
-            for k in data.keys():
-                if 'properties' not in schema or k not in schema['properties'].keys():
+            for k in list(data.keys()):
+                if 'properties' not in schema or k not in list(schema['properties'].keys()):
                     del data[k]
                     deleted.append(k)
                 else:
@@ -468,7 +468,7 @@ class vimconnector(vimconn.vimconnector):
         '''
         filterquery=[]
         filterquery_text=''
-        for k,v in filter_dict.iteritems():
+        for k,v in filter_dict.items():
             filterquery.append(str(k)+'='+str(v))
         if len(filterquery)>0:
             filterquery_text='?'+ '&'.join(filterquery)
@@ -528,7 +528,7 @@ class vimconnector(vimconn.vimconnector):
                 del filter_dict["tenant_id"]
             filterquery=[]
             filterquery_text=''
-            for k,v in filter_dict.iteritems():
+            for k,v in filter_dict.items():
                 filterquery.append(str(k)+'='+str(v))
             if len(filterquery)>0:
                 filterquery_text='?'+ '&'.join(filterquery)
@@ -733,7 +733,7 @@ class vimconnector(vimconn.vimconnector):
             self._get_my_tenant()
             filterquery=[]
             filterquery_text=''
-            for k,v in filter_dict.iteritems():
+            for k,v in filter_dict.items():
                 filterquery.append(str(k)+'='+str(v))
             if len(filterquery)>0:
                 filterquery_text='?'+ '&'.join(filterquery)
@@ -755,14 +755,14 @@ class vimconnector(vimconn.vimconnector):
             self._get_my_tenant()
         except Exception as e:
             return -vimconn.HTTP_Not_Found, str(e)
-        print "VIMConnector: Adding a new VM instance from JSON to VIM"
+        print("VIMConnector: Adding a new VM instance from JSON to VIM")
         payload_req = vm_data
         try:
             vim_response = requests.post(self.url+'/'+self.tenant+'/servers', headers = self.headers_req, data=payload_req)
         except requests.exceptions.RequestException as e:
-            print "new_vminstancefromJSON Exception: ", e.args
+            print("new_vminstancefromJSON Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print vim_response
+        print(vim_response)
         #print vim_response.status_code
         if vim_response.status_code == 200:
             #print vim_response.json()
@@ -771,10 +771,10 @@ class vimconnector(vimconn.vimconnector):
             #print http_content
             if res:
                 r = self._remove_extra_items(http_content, new_image_response_schema)
-                if r is not None: print "Warning: remove extra items ", r
+                if r is not None: print("Warning: remove extra items ", r)
                 #print http_content
                 vminstance_id = http_content['server']['id']
-                print "Tenant image id: ",vminstance_id
+                print("Tenant image id: ",vminstance_id)
                 return vim_response.status_code,vminstance_id
             else: return -vimconn.HTTP_Bad_Request,http_content
         else:
@@ -1048,7 +1048,7 @@ class vimconnector(vimconn.vimconnector):
         and append to the server_dict
         '''
         if type(server_dict) is not dict: 
-            print 'vimconnector.host_vim2gui() ERROR, param server_dict must be a dictionary'
+            print('vimconnector.host_vim2gui() ERROR, param server_dict must be a dictionary')
             return
         RAD={}
         occupation={}
@@ -1088,20 +1088,20 @@ class vimconnector(vimconn.vimconnector):
         try:
             vim_response = requests.get(url)
         except requests.exceptions.RequestException as e:
-            print "get_hosts_info Exception: ", e.args
+            print("get_hosts_info Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print "vim get", url, "response:",  vim_response.status_code, vim_response.json()
+        print("vim get", url, "response:",  vim_response.status_code, vim_response.json())
         #print vim_response.status_code
         #print json.dumps(vim_response.json(), indent=4)
         if vim_response.status_code != 200:
             #TODO: get error
-            print 'vimconnector.get_hosts_info error getting host list %d %s' %(vim_response.status_code, vim_response.json())
+            print('vimconnector.get_hosts_info error getting host list %d %s' %(vim_response.status_code, vim_response.json()))
             return -vim_response.status_code, "Error getting host list"
         
         res,hosts = self._format_in(vim_response, get_hosts_response_schema)
             
         if res==False:
-            print "vimconnector.get_hosts_info error parsing GET HOSTS vim response", hosts
+            print("vimconnector.get_hosts_info error parsing GET HOSTS vim response", hosts)
             return vimconn.HTTP_Internal_Server_Error, hosts
     #obtain hosts details
         hosts_dict={}
@@ -1110,15 +1110,15 @@ class vimconnector(vimconn.vimconnector):
             try:
                 vim_response = requests.get(url)
             except requests.exceptions.RequestException as e:
-                print "get_hosts_info Exception: ", e.args
+                print("get_hosts_info Exception: ", e.args)
                 return -vimconn.HTTP_Not_Found, str(e.args[0])
-            print "vim get", url, "response:",  vim_response.status_code, vim_response.json()
+            print("vim get", url, "response:",  vim_response.status_code, vim_response.json())
             if vim_response.status_code != 200:
-                print 'vimconnector.get_hosts_info error getting detailed host %d %s' %(vim_response.status_code, vim_response.json())
+                print('vimconnector.get_hosts_info error getting detailed host %d %s' %(vim_response.status_code, vim_response.json()))
                 continue
             res,host_detail = self._format_in(vim_response, get_host_detail_response_schema)
             if res==False:
-                print "vimconnector.get_hosts_info error parsing GET HOSTS/%s vim response" % host['id'], host_detail
+                print("vimconnector.get_hosts_info error parsing GET HOSTS/%s vim response" % host['id'], host_detail)
                 continue
             #print 'host id '+host['id'], json.dumps(host_detail, indent=4)
             self.host_vim2gui(host_detail, hosts_dict)
@@ -1132,20 +1132,20 @@ class vimconnector(vimconn.vimconnector):
         try:
             vim_response = requests.get(url)
         except requests.exceptions.RequestException as e:
-            print "get_hosts Exception: ", e.args
+            print("get_hosts Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print "vim get", url, "response:",  vim_response.status_code, vim_response.json()
+        print("vim get", url, "response:",  vim_response.status_code, vim_response.json())
         #print vim_response.status_code
         #print json.dumps(vim_response.json(), indent=4)
         if vim_response.status_code != 200:
             #TODO: get error
-            print 'vimconnector.get_hosts error getting host list %d %s' %(vim_response.status_code, vim_response.json())
+            print('vimconnector.get_hosts error getting host list %d %s' %(vim_response.status_code, vim_response.json()))
             return -vim_response.status_code, "Error getting host list"
         
         res,hosts = self._format_in(vim_response, get_hosts_response_schema)
             
         if res==False:
-            print "vimconnector.get_host error parsing GET HOSTS vim response", hosts
+            print("vimconnector.get_host error parsing GET HOSTS vim response", hosts)
             return vimconn.HTTP_Internal_Server_Error, hosts
     #obtain instances from hosts
         for host in hosts['hosts']:
@@ -1153,15 +1153,15 @@ class vimconnector(vimconn.vimconnector):
             try:
                 vim_response = requests.get(url)
             except requests.exceptions.RequestException as e:
-                print "get_hosts Exception: ", e.args
+                print("get_hosts Exception: ", e.args)
                 return -vimconn.HTTP_Not_Found, str(e.args[0])
-            print "vim get", url, "response:",  vim_response.status_code, vim_response.json()
+            print("vim get", url, "response:",  vim_response.status_code, vim_response.json())
             if vim_response.status_code != 200:
-                print 'vimconnector.get_hosts error getting instances at host %d %s' %(vim_response.status_code, vim_response.json())
+                print('vimconnector.get_hosts error getting instances at host %d %s' %(vim_response.status_code, vim_response.json()))
                 continue
             res,servers = self._format_in(vim_response, get_server_response_schema)
             if res==False:
-                print "vimconnector.get_host error parsing GET SERVERS/%s vim response" % host['id'], servers
+                print("vimconnector.get_host error parsing GET SERVERS/%s vim response" % host['id'], servers)
                 continue
             #print 'host id '+host['id'], json.dumps(host_detail, indent=4)
             host['instances'] = servers['servers']
@@ -1173,14 +1173,14 @@ class vimconnector(vimconn.vimconnector):
         try:
             vim_response = requests.get(url)
         except requests.exceptions.RequestException as e:
-            print "get_processor_rankings Exception: ", e.args
+            print("get_processor_rankings Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print "vim get", url, "response:", vim_response.status_code, vim_response.json()
+        print("vim get", url, "response:", vim_response.status_code, vim_response.json())
         #print vim_response.status_code
         #print json.dumps(vim_response.json(), indent=4)
         if vim_response.status_code != 200:
             #TODO: get error
-            print 'vimconnector.get_processor_rankings error getting processor rankings %d %s' %(vim_response.status_code, vim_response.json())
+            print('vimconnector.get_processor_rankings error getting processor rankings %d %s' %(vim_response.status_code, vim_response.json()))
             return -vim_response.status_code, "Error getting processor rankings"
         
         res,rankings = self._format_in(vim_response, get_processor_rankings_response_schema)
@@ -1211,14 +1211,14 @@ class vimconnector(vimconn.vimconnector):
         '''Adds a external port to VIM'''
         '''Returns the port identifier'''
         #TODO change to logging exception code policies
-        print "VIMConnector: Adding a new external port"
+        print("VIMConnector: Adding a new external port")
         payload_req = port_data
         try:
             vim_response = requests.post(self.url_admin+'/ports', headers = self.headers_req, data=payload_req)
         except requests.exceptions.RequestException as e:
             self.logger.error("new_external_port Exception: ", str(e))
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print vim_response
+        print(vim_response)
         #print vim_response.status_code
         if vim_response.status_code == 200:
         #print vim_response.json()
@@ -1227,10 +1227,10 @@ class vimconnector(vimconn.vimconnector):
         #print http_content
             if res:
                 r = self._remove_extra_items(http_content, new_port_response_schema)
-                if r is not None: print "Warning: remove extra items ", r
+                if r is not None: print("Warning: remove extra items ", r)
                 #print http_content
                 port_id = http_content['port']['id']
-                print "Port id: ",port_id
+                print("Port id: ",port_id)
                 return vim_response.status_code,port_id
             else: return -vimconn.HTTP_Bad_Request,http_content
         else:
@@ -1244,7 +1244,7 @@ class vimconnector(vimconn.vimconnector):
         '''Adds a external network to VIM (shared)'''
         '''Returns the network identifier'''
         #TODO change to logging exception code policies
-        print "VIMConnector: Adding external shared network to VIM (type " + net_type + "): "+ net_name
+        print("VIMConnector: Adding external shared network to VIM (type " + net_type + "): "+ net_name)
         
         payload_req = '{"network":{"name": "' + net_name + '","shared":true,"type": "' + net_type + '"}}'
         try:
@@ -1252,7 +1252,7 @@ class vimconnector(vimconn.vimconnector):
         except requests.exceptions.RequestException as e:
             self.logger.error( "new_external_network Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print vim_response
+        print(vim_response)
         #print vim_response.status_code
         if vim_response.status_code == 200:
             #print vim_response.json()
@@ -1261,10 +1261,10 @@ class vimconnector(vimconn.vimconnector):
             #print http_content
             if res:
                 r = self._remove_extra_items(http_content, new_network_response_schema)
-                if r is not None: print "Warning: remove extra items ", r
+                if r is not None: print("Warning: remove extra items ", r)
                 #print http_content
                 network_id = http_content['network']['id']
-                print "Network id: ",network_id
+                print("Network id: ",network_id)
                 return vim_response.status_code,network_id
             else: return -vimconn.HTTP_Bad_Request,http_content
         else:
@@ -1278,7 +1278,7 @@ class vimconnector(vimconn.vimconnector):
         '''Connects a external port to a network'''
         '''Returns status code of the VIM response'''
         #TODO change to logging exception code policies
-        print "VIMConnector: Connecting external port to network"
+        print("VIMConnector: Connecting external port to network")
         
         payload_req = '{"port":{"network_id":"' + network_id + '"}}'
         if admin:
@@ -1290,9 +1290,9 @@ class vimconnector(vimconn.vimconnector):
         try:
             vim_response = requests.put(url +'/ports/'+port_id, headers = self.headers_req, data=payload_req)
         except requests.exceptions.RequestException as e:
-            print "connect_port_network Exception: ", e.args
+            print("connect_port_network Exception: ", e.args)
             return -vimconn.HTTP_Not_Found, str(e.args[0])
-        print vim_response
+        print(vim_response)
         #print vim_response.status_code
         if vim_response.status_code == 200:
             #print vim_response.json()
@@ -1301,17 +1301,17 @@ class vimconnector(vimconn.vimconnector):
             #print http_content
             if res:
                 r = self._remove_extra_items(http_content, new_port_response_schema)
-                if r is not None: print "Warning: remove extra items ", r
+                if r is not None: print("Warning: remove extra items ", r)
                 #print http_content
                 port_id = http_content['port']['id']
-                print "Port id: ",port_id
+                print("Port id: ",port_id)
                 return vim_response.status_code,port_id
             else: return -vimconn.HTTP_Bad_Request,http_content
         else:
-            print vim_response.text
+            print(vim_response.text)
             jsonerror = self._format_jsonerror(vim_response)
             text = 'Error in VIM "%s": not possible to connect external port to network. HTTP Response: %d. Error: %s' % (self.url_admin, vim_response.status_code, jsonerror)
-            print text
+            print(text)
             return -vim_response.status_code,text
         
 
index 82d6a69..12581d6 100644 (file)
@@ -27,7 +27,7 @@ mbayramov@vmware.com
 """
 from progressbar import Percentage, Bar, ETA, FileTransferSpeed, ProgressBar
 
-import vimconn
+from . import vimconn
 import os
 import traceback
 import itertools
@@ -58,7 +58,7 @@ import logging
 import json
 import time
 import uuid
-import httplib
+import http.client
 import hashlib
 import socket
 import struct
@@ -456,7 +456,7 @@ class vimconnector(vimconn.vimconnector):
                     raise vimconn.vimconnNotFoundException("Fail to get tenant {}".format(tenant_id))
 
                 lxmlroot_respond = lxmlElementTree.fromstring(response.content)
-                namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.iteritems() if prefix}
+                namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.items() if prefix}
                 namespaces["xmlns"]= "http://www.vmware.com/vcloud/v1.5"
                 vdc_remove_href = lxmlroot_respond.find("xmlns:Link[@rel='remove']",namespaces).attrib['href']
                 vdc_remove_href = vdc_remove_href + '?recursive=true&force=true'
@@ -871,7 +871,7 @@ class vimconnector(vimconn.vimconnector):
             raise vimconn.vimconnNotFoundException("Fail to get image {}".format(image_id))
 
         lxmlroot_respond = lxmlElementTree.fromstring(response.content)
-        namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.iteritems() if prefix}
+        namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.items() if prefix}
         namespaces["xmlns"]= "http://www.vmware.com/vcloud/v1.5"
 
         catalogItems_section = lxmlroot_respond.find("xmlns:CatalogItems",namespaces)
@@ -894,7 +894,7 @@ class vimconnector(vimconn.vimconnector):
                                                                                     image_id))
 
             lxmlroot_respond = lxmlElementTree.fromstring(response.content)
-            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.iteritems() if prefix}
+            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.items() if prefix}
             namespaces["xmlns"]= "http://www.vmware.com/vcloud/v1.5"
             catalogitem_remove_href = lxmlroot_respond.find("xmlns:Link[@rel='remove']",namespaces).attrib['href']
 
@@ -982,8 +982,8 @@ class vimconnector(vimconn.vimconnector):
             for catalog in vca.get_catalogs():
                 if catalog_name != catalog.name:
                     continue
-                link = filter(lambda link: link.get_type() == "application/vnd.vmware.vcloud.media+xml" and
-                                           link.get_rel() == 'add', catalog.get_Link())
+                link = [link for link in catalog.get_Link() if link.get_type() == "application/vnd.vmware.vcloud.media+xml" and
+                                           link.get_rel() == 'add']
                 assert len(link) == 1
                 data = """
                 <UploadVAppTemplateParams name="%s" xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"><Description>%s vApp Template</Description></UploadVAppTemplateParams>
@@ -1031,9 +1031,8 @@ class vimconnector(vimconn.vimconnector):
                     if response.status_code == requests.codes.ok:
                         media = mediaType.parseString(response.content, True)
                         number_of_files = len(media.get_Files().get_File())
-                        for index in xrange(0, number_of_files):
-                            links_list = filter(lambda link: link.get_rel() == 'upload:default',
-                                                media.get_Files().get_File()[index].get_Link())
+                        for index in range(0, number_of_files):
+                            links_list = [link for link in media.get_Files().get_File()[index].get_Link() if link.get_rel() == 'upload:default']
                             for link in links_list:
                                 # we skip ovf since it already uploaded.
                                 if 'ovf' in link.get_href():
@@ -1049,7 +1048,7 @@ class vimconnector(vimconn.vimconnector):
                                 hrefvmdk = link.get_href()
 
                                 if progress:
-                                    print("Uploading file: {}".format(file_vmdk))
+                                    print(("Uploading file: {}".format(file_vmdk)))
                                 if progress:
                                     widgets = ['Uploading file: ', Percentage(), ' ', Bar(), ' ', ETA(), ' ',
                                                FileTransferSpeed()]
@@ -1303,8 +1302,7 @@ class vimconnector(vimconn.vimconnector):
             return None
         # UUID has following format https://host/api/vApp/vapp-30da58a3-e7c7-4d09-8f68-d4c8201169cf
         try:
-            refs = filter(lambda ref: ref.name == vapp_name and ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml',
-                          vdc.ResourceEntities.ResourceEntity)
+            refs = [ref for ref in vdc.ResourceEntities.ResourceEntity if ref.name == vapp_name and ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml']
             if len(refs) == 1:
                 return refs[0].href.split("vapp")[1][1:]
         except Exception as e:
@@ -1326,9 +1324,7 @@ class vimconnector(vimconn.vimconnector):
                 :param vapp_uuid:
         """
         try:
-            refs = filter(lambda ref:
-                          ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml',
-                          vdc.ResourceEntities.ResourceEntity)
+            refs = [ref for ref in vdc.ResourceEntities.ResourceEntity if ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml']
             for ref in refs:
                 vappid = ref.href.split("vapp")[1][1:]
                 # find vapp with respected vapp uuid
@@ -1352,8 +1348,7 @@ class vimconnector(vimconn.vimconnector):
         """
 
         try:
-            refs = filter(lambda ref: ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml',
-                          vdc.ResourceEntities.ResourceEntity)
+            refs = [ref for ref in vdc.ResourceEntities.ResourceEntity if ref.type_ == 'application/vnd.vmware.vcloud.vApp+xml']
             for ref in refs:
                 # we care only about UUID the rest doesn't matter
                 vappid = ref.href.split("vapp")[1][1:]
@@ -1656,7 +1651,7 @@ class vimconnector(vimconn.vimconnector):
                                   - NONE (No IP addressing mode specified.)"""
 
                 if primary_netname is not None:
-                    nets = filter(lambda n: n.name == interface_net_name, self.vca.get_networks(self.tenant_name))
+                    nets = [n for n in self.vca.get_networks(self.tenant_name) if n.name == interface_net_name]
                     if len(nets) == 1:
                         self.logger.info("new_vminstance(): Found requested network: {}".format(nets[0].name))
 
@@ -2175,7 +2170,7 @@ class vimconnector(vimconn.vimconnector):
                 result = self.vca.block_until_completed(power_task)
                 self.instance_actions_result("resume", result, vapp_name)
             elif "shutoff" in action_dict or "shutdown" in action_dict:
-                action_name , value = action_dict.items()[0]
+                action_name , value = list(action_dict.items())[0]
                 self.logger.info("action_vminstance: {} vApp: {}".format(action_name, vapp_name))
                 power_off_task = the_vapp.undeploy(action='powerOff')
                 result = self.vca.block_until_completed(power_off_task)
@@ -2309,7 +2304,7 @@ class vimconnector(vimconn.vimconnector):
             org_dict = self.get_org(self.org_uuid)
             if org_dict and 'networks' in org_dict:
                 org_network_dict = org_dict['networks']
-                for net_uuid,net_name in org_network_dict.iteritems():
+                for net_uuid,net_name in org_network_dict.items():
                     if net_name == network_name:
                         return net_uuid
 
@@ -2463,8 +2458,7 @@ class vimconnector(vimconn.vimconnector):
         vm_list_rest_call = ''.join(url_list)
 
         if not (not vca.vcloud_session or not vca.vcloud_session.organization):
-            refs = filter(lambda ref: ref.name == vdc_name and ref.type_ == 'application/vnd.vmware.vcloud.vdc+xml',
-                          vca.vcloud_session.organization.Link)
+            refs = [ref for ref in vca.vcloud_session.organization.Link if ref.name == vdc_name and ref.type_ == 'application/vnd.vmware.vcloud.vdc+xml']
             if len(refs) == 1:
                 response = Http.get(url=vm_list_rest_call,
                                     headers=vca.vcloud_session.get_vcloud_headers(),
@@ -3399,7 +3393,7 @@ class vimconnector(vimconn.vimconnector):
             return None
         try:
             lxmlroot_respond = lxmlElementTree.fromstring(response.content)
-            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.iteritems() if prefix}
+            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.items() if prefix}
             namespaces["xmlns"]= "http://www.vmware.com/vcloud/v1.5"
 
             for item in lxmlroot_respond.iterfind('xmlns:Item',namespaces):
@@ -4228,7 +4222,7 @@ class vimconnector(vimconn.vimconnector):
         try:
             #Find but type & max of instance IDs assigned to disks
             lxmlroot_respond = lxmlElementTree.fromstring(response.content)
-            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.iteritems() if prefix}
+            namespaces = {prefix:uri for prefix,uri in lxmlroot_respond.nsmap.items() if prefix}
             namespaces["xmlns"]= "http://www.vmware.com/vcloud/v1.5"
             instance_id = 0
             for item in lxmlroot_respond.iterfind('xmlns:Item',namespaces):
@@ -4504,7 +4498,7 @@ class vimconnector(vimconn.vimconnector):
             catalog = self.get_catalog_obj(image_id, catalogs)
             if catalog:
                 template_name = self.get_catalogbyid(image_id, catalogs)
-                catalog_items = filter(lambda catalogItemRef: catalogItemRef.get_name() == template_name, catalog.get_CatalogItems().get_CatalogItem())
+                catalog_items = [catalogItemRef for catalogItemRef in catalog.get_CatalogItems().get_CatalogItem() if catalogItemRef.get_name() == template_name]
                 if len(catalog_items) == 1:
                     response = Http.get(catalog_items[0].get_href(),
                                         headers=vca.vcloud_session.get_vcloud_headers(),
@@ -4962,7 +4956,7 @@ class vimconnector(vimconn.vimconnector):
         if "used_vlanIDs" not in self.persistent_info:
                 self.persistent_info["used_vlanIDs"] = {}
         else:
-            used_ids = self.persistent_info["used_vlanIDs"].values()
+            used_ids = list(self.persistent_info["used_vlanIDs"].values())
 
         for vlanID_range in self.config.get('vlanID_range'):
             start_vlanid , end_vlanid = vlanID_range.split("-")
@@ -4970,7 +4964,7 @@ class vimconnector(vimconn.vimconnector):
                 raise vimconn.vimconnConflictException("Invalid vlan ID range {}".format(
                                                                         vlanID_range))
 
-            for id in xrange(int(start_vlanid), int(end_vlanid) + 1):
+            for id in range(int(start_vlanid), int(end_vlanid) + 1):
                 if id not in used_ids:
                     vlan_id = id
                     self.persistent_info["used_vlanIDs"][network_name] = vlan_id
index cbfb737..4e5898e 100644 (file)
@@ -49,7 +49,7 @@ class CommandProgressbar(object):
             Args  : None
             Return : None
         """
-        print '\b.',
+        print('\b.', end=' ')
         sys.stdout.flush()
 
     def start_progressbar(self):
index 3c647a9..43981ac 100644 (file)
@@ -27,7 +27,7 @@ import os
 import subprocess
 import yaml
 from lxml import etree as ET
-from command_progress import CommandProgressbar
+from .command_progress import CommandProgressbar
 
 #file paths
 MODULE_DIR = os.path.dirname(__file__)
@@ -288,7 +288,7 @@ class OVFConverter(object):
             root = OVF_tree.getroot()
 
             #Collect namespaces
-            nsmap = {k:v for k,v in root.nsmap.iteritems() if k}
+            nsmap = {k:v for k,v in root.nsmap.items() if k}
             nsmap["xmlns"]= "http://schemas.dmtf.org/ovf/envelope/1"
 
             #Edit OVF template
@@ -370,7 +370,7 @@ class OVFConverter(object):
 
             if os.path.isfile(self.output_path):
                 logger.info("Successfully written output OVF at {}".format(self.output_path))
-                print("Output OVF is at :  {}".format(self.output_path))
+                print(("Output OVF is at :  {}".format(self.output_path)))
                 return self.output_path
             else:
                 error_msg = "ERROR: Error occurred while creating OVF file"
@@ -431,7 +431,7 @@ class OVFConverter(object):
         os_info = self.__read_yaml_file(OS_INFO_FILE_PATH)
         try:
             if self.os_type and os_info:
-                for os_id , os_type in os_info.iteritems():
+                for os_id , os_type in os_info.items():
                     if self.os_type.lower() == os_type.lower():
                         osID = os_id
                         osType = os_type
@@ -461,7 +461,7 @@ class OVFConverter(object):
         disk_controller_info = self.__read_yaml_file(DISK_CONTROLLER_INFO_FILE_PATH)
         try:
             if self.disk_controller and disk_controller_info:
-                for key , value in disk_controller_info.iteritems():
+                for key , value in disk_controller_info.items():
                     if self.disk_controller.lower() in key.lower():
                         disk_controller['controllerName'] = key
                         disk_controller['resourceType'] = str(value["ResourceType"])
index 209c05d..63e4a25 100644 (file)
@@ -23,7 +23,7 @@
 ##
 
 import argparse
-from converter import OVFConverter , get_version
+from .converter import OVFConverter , get_version
 
 def execute_cli():
 
index 4583a65..89f7807 100755 (executable)
@@ -67,13 +67,13 @@ import sys
 from pyvcloud import Http
 
 import logging
-import vimconn
+from . import vimconn
 import time
 import uuid
 import urllib3
 import requests
 
-from vimconn_vmware import vimconnector
+from .vimconn_vmware import vimconnector
 from requests.packages.urllib3.exceptions import InsecureRequestWarning
 from prettytable import PrettyTable
 
@@ -108,7 +108,7 @@ def delete_network_action(vca=None, network_uuid=None):
                             verify=vca.verify,
                             logger=vca.logger)
         if response.status_code == requests.codes.ok:
-            print response.content
+            print(response.content)
             return response.content
 
     return None
@@ -161,7 +161,7 @@ def print_vapp(vapp_dict=None):
 
         vm_table.add_row(entry)
 
-    print vm_table
+    print(vm_table)
 
 
 def print_org(org_dict=None):
@@ -182,7 +182,7 @@ def print_org(org_dict=None):
         entry = [k, org_dict[k]]
         org_table.add_row(entry)
 
-    print org_table
+    print(org_table)
 
 
 def print_vm_list(vm_dict=None):
@@ -213,7 +213,7 @@ def print_vm_list(vm_dict=None):
             entry.append(vm_dict[k]['memoryMB'])
             entry.append(vm_dict[k]['status'])
             vm_table.add_row(entry)
-        print vm_table
+        print(vm_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         pass
@@ -232,14 +232,14 @@ def print_vdc_list(org_dict=None):
         return
     try:
         vdcs_dict = {}
-        if org_dict.has_key('vdcs'):
+        if 'vdcs' in org_dict:
             vdcs_dict = org_dict['vdcs']
         vdc_table = PrettyTable(['vdc uuid', 'vdc name'])
         for k in vdcs_dict:
             entry = [k, vdcs_dict[k]]
             vdc_table.add_row(entry)
 
-        print vdc_table
+        print(vdc_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -259,14 +259,14 @@ def print_network_list(org_dict=None):
         return
     try:
         network_dict = {}
-        if org_dict.has_key('networks'):
+        if 'networks' in org_dict:
             network_dict = org_dict['networks']
         network_table = PrettyTable(['network uuid', 'network name'])
         for k in network_dict:
             entry = [k, network_dict[k]]
             network_table.add_row(entry)
 
-        print network_table
+        print(network_table)
 
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
@@ -290,7 +290,7 @@ def print_org_details(org_dict=None):
         print_vdc_list(org_dict=org_dict)
         print_network_list(org_dict=org_dict)
 
-        if org_dict.has_key('catalogs'):
+        if 'catalogs' in org_dict:
             catalogs_dict = org_dict['catalogs']
 
         catalog_table = PrettyTable(['catalog uuid', 'catalog name'])
@@ -298,7 +298,7 @@ def print_org_details(org_dict=None):
             entry = [k, catalogs_dict[k]]
             catalog_table.add_row(entry)
 
-        print catalog_table
+        print(catalog_table)
 
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
@@ -368,10 +368,10 @@ def list_actions(vim=None, action=None, namespace=None):
 
 def print_network_details(network_dict=None):
     try:
-        network_table = PrettyTable(network_dict.keys())
-        entry = [network_dict.values()]
+        network_table = PrettyTable(list(network_dict.keys()))
+        entry = [list(network_dict.values())]
         network_table.add_row(entry[0])
-        print network_table
+        print(network_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -381,10 +381,10 @@ def osm_print(generic_dict=None):
 
     try:
         for element in generic_dict:
-            table = PrettyTable(element.keys())
-            entry = [element.values()]
+            table = PrettyTable(list(element.keys()))
+            entry = [list(element.values())]
             table.add_row(entry[0])
-        print table
+        print(table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -430,13 +430,13 @@ def view_actions(vim=None, action=None, namespace=None):
             if not namespace.uuid:
                 vapp_uuid = vim.get_vappid(vdc=namespace.vcdvdc, vapp_name=namespace.vapp_name)
                 if vapp_uuid is None:
-                    print("Can't find vapp by given name {}".format(namespace.vapp_name))
+                    print(("Can't find vapp by given name {}".format(namespace.vapp_name)))
                     return
 
-            print " namespace {}".format(namespace)
+            print(" namespace {}".format(namespace))
             if vapp_dict is not None and namespace.osm:
                 vm_info_dict = vim.get_vminstance(vim_vm_uuid=vapp_uuid)
-                print vm_info_dict
+                print(vm_info_dict)
             if vapp_dict is not None and namespace.osm != True:
                 vapp_dict = vim.get_vapp(vdc_name=namespace.vcdvdc, vapp_name=vapp_uuid, isuuid=True)
                 print_vapp(vapp_dict=vapp_dict)
@@ -448,10 +448,10 @@ def view_actions(vim=None, action=None, namespace=None):
         # if request name based we need find UUID
         # TODO optimize it or move to external function
         if not namespace.uuid:
-            if not myorg.has_key('networks'):
-                print("Network {} is undefined in vcloud director for org {} vdc {}".format(namespace.network_name,
+            if 'networks' not in myorg:
+                print(("Network {} is undefined in vcloud director for org {} vdc {}".format(namespace.network_name,
                                                                                             vim.name,
-                                                                                            vim.tenant_name))
+                                                                                            vim.tenant_name)))
                 return
 
             my_org_net = myorg['networks']
@@ -460,7 +460,7 @@ def view_actions(vim=None, action=None, namespace=None):
                     network_uuid = network
                     break
 
-        print print_network_details(network_dict=vim.get_vcd_network(network_uuid=network_uuid))
+        print(print_network_details(network_dict=vim.get_vcd_network(network_uuid=network_uuid)))
 
 
 def create_actions(vim=None, action=None, namespace=None):
@@ -477,16 +477,16 @@ def create_actions(vim=None, action=None, namespace=None):
         logger.debug("Creating a network in vcloud director".format(namespace.network_name))
         network_uuid = vim.create_network(namespace.network_name)
         if network_uuid is not None:
-            print ("Crated new network {} and uuid: {}".format(namespace.network_name, network_uuid))
+            print(("Crated new network {} and uuid: {}".format(namespace.network_name, network_uuid)))
         else:
-            print ("Failed create a new network {}".format(namespace.network_name))
+            print(("Failed create a new network {}".format(namespace.network_name)))
     elif action == 'vdc' or namespace.action == 'vdc':
         logger.debug("Creating a new vdc in vcloud director.".format(namespace.vdc_name))
         vdc_uuid = vim.create_vdc(namespace.vdc_name)
         if vdc_uuid is not None:
-            print ("Crated new vdc {} and uuid: {}".format(namespace.vdc_name, vdc_uuid))
+            print(("Crated new vdc {} and uuid: {}".format(namespace.vdc_name, vdc_uuid)))
         else:
-            print ("Failed create a new vdc {}".format(namespace.vdc_name))
+            print(("Failed create a new vdc {}".format(namespace.vdc_name)))
     else:
         return None
 
@@ -519,11 +519,11 @@ def upload_image(vim=None, image_file=None):
     try:
         catalog_uuid = vim.get_image_id_from_path(path=image_file, progress=True)
         if catalog_uuid is not None and validate_uuid4(catalog_uuid):
-            print("Image uploaded and uuid {}".format(catalog_uuid))
+            print(("Image uploaded and uuid {}".format(catalog_uuid)))
             return True
     except vimconn.vimconnException as upload_exception:
-        print("Failed uploaded {} image".format(image_file))
-        print("Error Reason: {}".format(upload_exception.message))
+        print(("Failed uploaded {} image".format(image_file)))
+        print(("Error Reason: {}".format(upload_exception.message)))
     return False
 
 
@@ -553,22 +553,22 @@ def boot_image(vim=None, image_name=None, vm_name=None):
             if vim_catalog is None:
                 return None
 
-        print (" Booting {} image id {} ".format(vm_name, vim_catalog))
+        print((" Booting {} image id {} ".format(vm_name, vim_catalog)))
         vm_uuid = vim.new_vminstance(name=vm_name, image_id=vim_catalog)
         if vm_uuid is not None and validate_uuid4(vm_uuid):
-            print("Image booted and vm uuid {}".format(vm_uuid))
+            print(("Image booted and vm uuid {}".format(vm_uuid)))
             vapp_dict = vim.get_vapp(vdc_name=namespace.vcdvdc, vapp_name=vm_uuid, isuuid=True)
             if vapp_dict is not None:
                 print_vapp(vapp_dict=vapp_dict)
         return True
     except vimconn.vimconnNotFoundException as notFound:
-        print("Failed boot {} image".format(image_name))
-        print(notFound.message)
+        print(("Failed boot {} image".format(image_name)))
+        print((notFound.message))
     except vimconn.vimconnException as vimconError:
-        print("Failed boot {} image".format(image_name))
-        print(vimconError.message)
+        print(("Failed boot {} image".format(image_name)))
+        print((vimconError.message))
     except:
-        print("Failed boot {} image".format(image_name))
+        print(("Failed boot {} image".format(image_name)))
 
 
         return False
@@ -611,7 +611,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdvdc is None:
         while True:
-            vcduser = input("Enter vcd username: ")
+            vcduser = eval(input("Enter vcd username: "))
             if vcduser is not None and len(vcduser) > 0:
                 break
     else:
@@ -619,7 +619,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdpassword is None:
         while True:
-            vcdpasword = input("Please enter vcd password: ")
+            vcdpasword = eval(input("Please enter vcd password: "))
             if vcdpasword is not None and len(vcdpasword) > 0:
                 break
     else:
@@ -627,7 +627,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdhost is None:
         while True:
-            vcdhost = input("Please enter vcd host name or ip: ")
+            vcdhost = eval(input("Please enter vcd host name or ip: "))
             if vcdhost is not None and len(vcdhost) > 0:
                 break
     else:
@@ -635,7 +635,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdorg is None:
         while True:
-            vcdorg = input("Please enter vcd organization name: ")
+            vcdorg = eval(input("Please enter vcd organization name: "))
             if vcdorg is not None and len(vcdorg) > 0:
                 break
     else:
@@ -797,7 +797,7 @@ if __name__ == '__main__':
 
     namespace = parser.parse_args()
     # put command_line args to mapping
-    command_line_args = {k: v for k, v in vars(namespace).items() if v}
+    command_line_args = {k: v for k, v in list(vars(namespace).items()) if v}
 
     d = defaults.copy()
     d.update(os.environ)
index acd4240..bbb5e29 100755 (executable)
@@ -66,13 +66,13 @@ import sys
 from pyvcloud import Http
 
 import logging
-import vimconn
+from . import vimconn
 import time
 import uuid
 import urllib3
 import requests
 
-from vimconn_vmware import vimconnector
+from .vimconn_vmware import vimconnector
 from requests.packages.urllib3.exceptions import InsecureRequestWarning
 from prettytable import PrettyTable
 
@@ -107,7 +107,7 @@ def delete_network_action(vca=None, network_uuid=None):
                             verify=vca.verify,
                             logger=vca.logger)
         if response.status_code == requests.codes.ok:
-            print response.content
+            print(response.content)
             return response.content
 
     return None
@@ -160,7 +160,7 @@ def print_vapp(vapp_dict=None):
 
         vm_table.add_row(entry)
 
-    print vm_table
+    print(vm_table)
 
 
 def print_org(org_dict=None):
@@ -181,7 +181,7 @@ def print_org(org_dict=None):
         entry = [k, org_dict[k]]
         org_table.add_row(entry)
 
-    print org_table
+    print(org_table)
 
 
 def print_vm_list(vm_dict=None):
@@ -212,7 +212,7 @@ def print_vm_list(vm_dict=None):
             entry.append(vm_dict[k]['memoryMB'])
             entry.append(vm_dict[k]['status'])
             vm_table.add_row(entry)
-        print vm_table
+        print(vm_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         pass
@@ -231,14 +231,14 @@ def print_vdc_list(org_dict=None):
         return
     try:
         vdcs_dict = {}
-        if org_dict.has_key('vdcs'):
+        if 'vdcs' in org_dict:
             vdcs_dict = org_dict['vdcs']
         vdc_table = PrettyTable(['vdc uuid', 'vdc name'])
         for k in vdcs_dict:
             entry = [k, vdcs_dict[k]]
             vdc_table.add_row(entry)
 
-        print vdc_table
+        print(vdc_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -258,14 +258,14 @@ def print_network_list(org_dict=None):
         return
     try:
         network_dict = {}
-        if org_dict.has_key('networks'):
+        if 'networks' in org_dict:
             network_dict = org_dict['networks']
         network_table = PrettyTable(['network uuid', 'network name'])
         for k in network_dict:
             entry = [k, network_dict[k]]
             network_table.add_row(entry)
 
-        print network_table
+        print(network_table)
 
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
@@ -289,7 +289,7 @@ def print_org_details(org_dict=None):
         print_vdc_list(org_dict=org_dict)
         print_network_list(org_dict=org_dict)
 
-        if org_dict.has_key('catalogs'):
+        if 'catalogs' in org_dict:
             catalogs_dict = org_dict['catalogs']
 
         catalog_table = PrettyTable(['catalog uuid', 'catalog name'])
@@ -297,7 +297,7 @@ def print_org_details(org_dict=None):
             entry = [k, catalogs_dict[k]]
             catalog_table.add_row(entry)
 
-        print catalog_table
+        print(catalog_table)
 
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
@@ -367,10 +367,10 @@ def list_actions(vim=None, action=None, namespace=None):
 
 def print_network_details(network_dict=None):
     try:
-        network_table = PrettyTable(network_dict.keys())
-        entry = [network_dict.values()]
+        network_table = PrettyTable(list(network_dict.keys()))
+        entry = [list(network_dict.values())]
         network_table.add_row(entry[0])
-        print network_table
+        print(network_table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -380,10 +380,10 @@ def osm_print(generic_dict=None):
 
     try:
         for element in generic_dict:
-            table = PrettyTable(element.keys())
-            entry = [element.values()]
+            table = PrettyTable(list(element.keys()))
+            entry = [list(element.values())]
             table.add_row(entry[0])
-        print table
+        print(table)
     except KeyError:
         logger.error("wrong key {}".format(KeyError.message))
         logger.logger.debug(traceback.format_exc())
@@ -429,13 +429,13 @@ def view_actions(vim=None, action=None, namespace=None):
             if not namespace.uuid:
                 vapp_uuid = vim.get_vappid(vdc=namespace.vcdvdc, vapp_name=namespace.vapp_name)
                 if vapp_uuid is None:
-                    print("Can't find vapp by given name {}".format(namespace.vapp_name))
+                    print(("Can't find vapp by given name {}".format(namespace.vapp_name)))
                     return
 
-            print " namespace {}".format(namespace)
+            print(" namespace {}".format(namespace))
             if vapp_dict is not None and namespace.osm:
                 vm_info_dict = vim.get_vminstance(vim_vm_uuid=vapp_uuid)
-                print vm_info_dict
+                print(vm_info_dict)
             if vapp_dict is not None and namespace.osm != True:
                 vapp_dict = vim.get_vapp(vdc_name=namespace.vcdvdc, vapp_name=vapp_uuid, isuuid=True)
                 print_vapp(vapp_dict=vapp_dict)
@@ -447,10 +447,10 @@ def view_actions(vim=None, action=None, namespace=None):
         # if request name based we need find UUID
         # TODO optimize it or move to external function
         if not namespace.uuid:
-            if not myorg.has_key('networks'):
-                print("Network {} is undefined in vcloud director for org {} vdc {}".format(namespace.network_name,
+            if 'networks' not in myorg:
+                print(("Network {} is undefined in vcloud director for org {} vdc {}".format(namespace.network_name,
                                                                                             vim.name,
-                                                                                            vim.tenant_name))
+                                                                                            vim.tenant_name)))
                 return
 
             my_org_net = myorg['networks']
@@ -459,7 +459,7 @@ def view_actions(vim=None, action=None, namespace=None):
                     network_uuid = network
                     break
 
-        print print_network_details(network_dict=vim.get_vcd_network(network_uuid=network_uuid))
+        print(print_network_details(network_dict=vim.get_vcd_network(network_uuid=network_uuid)))
 
 
 def create_actions(vim=None, action=None, namespace=None):
@@ -476,16 +476,16 @@ def create_actions(vim=None, action=None, namespace=None):
         logger.debug("Creating a network in vcloud director".format(namespace.network_name))
         network_uuid = vim.create_network(namespace.network_name)
         if network_uuid is not None:
-            print ("Crated new network {} and uuid: {}".format(namespace.network_name, network_uuid))
+            print(("Crated new network {} and uuid: {}".format(namespace.network_name, network_uuid)))
         else:
-            print ("Failed create a new network {}".format(namespace.network_name))
+            print(("Failed create a new network {}".format(namespace.network_name)))
     elif action == 'vdc' or namespace.action == 'vdc':
         logger.debug("Creating a new vdc in vcloud director.".format(namespace.vdc_name))
         vdc_uuid = vim.create_vdc(namespace.vdc_name)
         if vdc_uuid is not None:
-            print ("Crated new vdc {} and uuid: {}".format(namespace.vdc_name, vdc_uuid))
+            print(("Crated new vdc {} and uuid: {}".format(namespace.vdc_name, vdc_uuid)))
         else:
-            print ("Failed create a new vdc {}".format(namespace.vdc_name))
+            print(("Failed create a new vdc {}".format(namespace.vdc_name)))
     else:
         return None
 
@@ -518,11 +518,11 @@ def upload_image(vim=None, image_file=None):
     try:
         catalog_uuid = vim.get_image_id_from_path(path=image_file, progress=True)
         if catalog_uuid is not None and validate_uuid4(catalog_uuid):
-            print("Image uploaded and uuid {}".format(catalog_uuid))
+            print(("Image uploaded and uuid {}".format(catalog_uuid)))
             return True
     except vimconn.vimconnException as upload_exception:
-        print("Failed uploaded {} image".format(image_file))
-        print("Error Reason: {}".format(upload_exception.message))
+        print(("Failed uploaded {} image".format(image_file)))
+        print(("Error Reason: {}".format(upload_exception.message)))
     return False
 
 
@@ -552,22 +552,22 @@ def boot_image(vim=None, image_name=None, vm_name=None):
             if vim_catalog is None:
                 return None
 
-        print (" Booting {} image id {} ".format(vm_name, vim_catalog))
+        print((" Booting {} image id {} ".format(vm_name, vim_catalog)))
         vm_uuid = vim.new_vminstance(name=vm_name, image_id=vim_catalog)
         if vm_uuid is not None and validate_uuid4(vm_uuid):
-            print("Image booted and vm uuid {}".format(vm_uuid))
+            print(("Image booted and vm uuid {}".format(vm_uuid)))
             vapp_dict = vim.get_vapp(vdc_name=namespace.vcdvdc, vapp_name=vm_uuid, isuuid=True)
             if vapp_dict is not None:
                 print_vapp(vapp_dict=vapp_dict)
         return True
     except vimconn.vimconnNotFoundException as notFound:
-        print("Failed boot {} image".format(image_name))
-        print(notFound.message)
+        print(("Failed boot {} image".format(image_name)))
+        print((notFound.message))
     except vimconn.vimconnException as vimconError:
-        print("Failed boot {} image".format(image_name))
-        print(vimconError.message)
+        print(("Failed boot {} image".format(image_name)))
+        print((vimconError.message))
     except:
-        print("Failed boot {} image".format(image_name))
+        print(("Failed boot {} image".format(image_name)))
 
 
         return False
@@ -610,7 +610,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdvdc is None:
         while True:
-            vcduser = input("Enter vcd username: ")
+            vcduser = eval(input("Enter vcd username: "))
             if vcduser is not None and len(vcduser) > 0:
                 break
     else:
@@ -618,7 +618,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdpassword is None:
         while True:
-            vcdpasword = input("Please enter vcd password: ")
+            vcdpasword = eval(input("Please enter vcd password: "))
             if vcdpasword is not None and len(vcdpasword) > 0:
                 break
     else:
@@ -626,7 +626,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdhost is None:
         while True:
-            vcdhost = input("Please enter vcd host name or ip: ")
+            vcdhost = eval(input("Please enter vcd host name or ip: "))
             if vcdhost is not None and len(vcdhost) > 0:
                 break
     else:
@@ -634,7 +634,7 @@ def vmwarecli(command=None, action=None, namespace=None):
 
     if namespace.vcdorg is None:
         while True:
-            vcdorg = input("Please enter vcd organization name: ")
+            vcdorg = eval(input("Please enter vcd organization name: "))
             if vcdorg is not None and len(vcdorg) > 0:
                 break
     else:
@@ -796,7 +796,7 @@ if __name__ == '__main__':
 
     namespace = parser.parse_args()
     # put command_line args to mapping
-    command_line_args = {k: v for k, v in vars(namespace).items() if v}
+    command_line_args = {k: v for k, v in list(vars(namespace).items()) if v}
 
     d = defaults.copy()
     d.update(os.environ)