Ejemplo n.º 1
0
class EsxiServer:
    server_ip = ''
    user_name = ''
    password = ''
    connect_flag = False
    server = None

    def opearte_guest_power(self, src_vm_name, operate):
        """"
       |##desc: 操作客户机电源(重启、关机、开机),这种模式不需要vmtools,就是强制操作电源,不走操作系统 ,可能损坏数据
       |##:param: >vm1.power_on()
                        >vm1.reset()
                        >vm1.suspend() #since pysphere 0.1.5
                        >vm1.power_off()
       |##:return: None
       |##@author: jhuang
       |##@time:12/12/2017
       """
        ovm = self.server.get_vm_by_name(src_vm_name)

        if operate == 'power_on':
            ovm.power_on()
            return True
        elif operate == 'reset':
            ovm.reset()
            return True
        elif operate == 'suspend':
            ovm.suspend()
            return True
        elif operate == 'power_off':
            ovm.power_off()
            return True
        else:
            print "Operate guest error: operate can noly be set as power_on, reset, suspend, power_off"
            return False

    def clone(self, src_vm_name, dest_vm_name, datacenter=None, sync_run=True, folder=None, resourcepool=None,
              datastore=None, host=None, power_on=True, template=False,
              snapshot=None, linked=False):
        """
        |##desc: 克隆虚拟机
        |##:param: None
        |##:return: None
        |##@author: jhuang
        |##@time:12/12/2017
        """
        # get_vm_by_name 在包含2个数据中心的情况下,需要指定参数  datacenter 其中的限定条件为datacenter
        # vm1 = server.get_vm_by_path("[DataStore1] Ubantu/Ubantu-10.vmx") 通过路径方法获取对象
        logger.debug(src_vm_name)
        logger.debug(datacenter)
        ovm = self.server.get_vm_by_name(src_vm_name, datacenter)
        new_vm = ovm.clone(dest_vm_name)

    def create_snapshot(self, src_vm_name, snapShotName):
        """
        |##desc: 创建快照
        |##:param: None
        |##:return: None
        |##@author: jhuang
        |##@time:12/12/2017
        """
        ovm = self.server.get_vm_by_name(src_vm_name)
        ovm.create_snapshot(snapShotName)

    def set_ssl_no_verify(self):
        ssl._create_default_https_context = ssl._create_unverified_context

    # Use the given args to connect the esxi server you want
    # @ip[string]: ESXi server's IP address
    # @name[string]: the username used to login the ESXi server
    # @pwd[string]: the password used to login the ESXi server
    def connect_server(self, ip, name, pwd, ssl_no_verify=True):
        logger.debug(ip)
        logger.debug(name)
        logger.debug(pwd)
        self.server_ip = ip
        self.user_name = name
        self.password = pwd
        self.server = VIServer()
        if ssl_no_verify:
            self.set_ssl_no_verify()
        self.server.connect(self.server_ip, self.user_name, self.password)
        self.connect_flag = self.server.is_connected()
        if self.connect_flag:
            return True
        return False

    # To get all the definition registered vms from the connected server
    # @param[string]: can be set as ALL, POWER_ON, POWER_OFF, SUSPENDED
    # According to the param, returns a list of VM Paths. You might also filter by datacenter,
    # cluster, or resource pool by providing their name or MORs.
    # if  cluster is set, datacenter is ignored, and if resource pool is set
    # both, datacenter and cluster are ignored.
    def get_registered_vms(self, param='ALL', status=None, datacenter=None, cluster=None,
                           resource_pool=None):
        """
        获取注册的主机 (虚拟机)

        :param param1: this is a first param
        :param param2: this is a second param
        :returns: this is a description of what is returned
        :raises keyError: raises an exception
        @author: jhuang
        @time:28/02/2018
        """
        if param not in ['ALL', 'POWER_ON', 'POWER_OFF', 'SUSPENDED']:
            print "Get VMs error: param can only be set as ALL, POWER_ON, POWER_OFF, or SUSPENDED."
            return None
        if self.connect_flag == False:
            print "Get VMs error: Server not connected."
            return None
        if param == 'ALL':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool)
        elif param == 'POWER_ON':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='poweredOn')
        elif param == 'POWER_OFF':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='poweredOff')
        elif param == 'SUSPENDED':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='suspended')
        else:
            return None

    # Disconnect to the Server
    def disconnect(self):
        if self.connect_flag is True:
            self.server = self.server.disconnect()
            self.connect_flag == False

    # To keep session alive
    def keep_session_alive(self):
        assert self.server.keep_session_alive()

    # To get the server type
    def get_server_type(self):
        return self.server.get_server_type()

    # To get performance manager
    def get_performance_manager(self):
        return self.server.get_performance_manager()

    # To get the all the server's hosts
    def get_all_hosts(self):
        """
        获取所有主机(这个是宿主机)
        Returns a dictionary of the existing hosts keys are their names
        and values their ManagedObjectReference object.
        """
        return self.server.get_hosts()

    # To get all datastores
    def get_all_datastores(self):
        """
        获取存储列表
        Returns a dictionary of the existing datastores. Keys are
        ManagedObjectReference and values datastore names.
        """
        return self.server.get_datastores()

    # To get all clusters
    def get_all_clusters(self):
        """
        获取所有集群列表
        Returns a dictionary of the existing clusters. Keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_clusters()

    # To get all datacenters
    def get_all_datacenters(self):
        """
        获取数据中心列表
        Returns a dictionary of the existing datacenters. keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_datacenters()

    # To get all resource pools
    def get_all_resource_pools(self):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        """
        return self.server.get_resource_pools()

    # To get hosts by name
    def get_hosts_by_name(self, from_mor):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        @from_mor: if given, retrieves the hosts contained within the specified
            managed entity.
        """
        try:
            hosts_dic = self.server.get_hosts(from_mor)
        except:
            print "Get hosts error!"
            return None
        return hosts_dic
PASSWORD = "******"
prefix = "vsphere."

sock = socket()

try:
	sock.connect( (CARBON_SERVER,CARBON_PORT) )
except:
  print "Couldn't connect to %(server)s on port %(port)d, is carbon-agent.py running?" % { 'server':CARBON_SERVER, 'port':CARBON_PORT }
  sys.exit(1)
try:
	server.connect(HOST, USER, PASSWORD)
except:
	print "Unable to connect to vsphere server"
	sys.exit(1)
pm = server.get_performance_manager()

while True:
	lines = []
	for dc_mor, dc_name in server.get_datacenters().items():
		now = int(time.time())
		datastores = server.get_datastores(dc_mor)
		for ds_mor, ds_name in datastores.items():
			gphDSName = ds_name.replace('.', '_')
			gphDSName = gphDSName.replace(' ', '_')
			props = VIProperty(server, ds_mor)
			lines.append(prefix + dc_name + ".datastores." + props.summary.type + "." + gphDSName + ".capacity " + str(props.summary.capacity) + " " + str(now))
                	lines.append(prefix + dc_name + ".datastores." + props.summary.type + "." + gphDSName + ".freespace " + str(props.summary.freeSpace) + " " +str(now))
			if hasattr(props.summary, "uncommitted"):
				lines.append(prefix + dc_name + ".datastores." + props.summary.type + "." + gphDSName + ".uncommitted " + str(props.summary.uncommitted) + " " + str(now))
	message = '\n'.join(lines) + '\n'
Ejemplo n.º 3
0
class VCenterManagement:
    server_ip = ''
    user_name = ''
    password = ''
    connect_flag = False
    server = None

    #vm_list      = []

    #def __init__(self):

    #Use the given args to connect the esxi server you want
    #@ip[string]: ESXi server's IP address
    #@name[string]: the username used to login the ESXi server
    #@pwd[string]: the password used to login the ESXi server
    def connect_server(self, ip, name, pwd):
        self.server_ip = ip
        self.user_name = name
        self.password = pwd
        self.server = VIServer()
        self.server.connect(self.server_ip, self.user_name, self.password)
        self.connect_flag = self.server.is_connected()
        if self.connect_flag:
            return True
        return False

    #To get all the definition registered vms from the connected server
    #@param[string]: can be set as ALL, POWER_ON, POWER_OFF, SUSPENDED
    #According to the param, returns a list of VM Paths. You might also filter by datacenter,
    #cluster, or resource pool by providing their name or MORs.
    #if  cluster is set, datacenter is ignored, and if resource pool is set
    #both, datacenter and cluster are ignored.
    def get_registered_vms(self,
                           param,
                           status=None,
                           datacenter=None,
                           cluster=None,
                           resource_pool=None):
        if param not in ['ALL', 'POWER_ON', 'POWER_OFF', 'SUSPENDED']:
            print "Get VMs error: param can only be set as ALL, POWER_ON, POWER_OFF, or SUSPENDED."
            return None
        if self.connect_flag == False:
            print "Get VMs error: Server not connected."
            return None
        if param == 'ALL':
            return self.server.get_registered_vms(datacenter, cluster,
                                                  resource_pool)
        elif param == 'POWER_ON':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='poweredOn')
        elif param == 'POWER_OFF':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='poweredOff')
        elif param == 'SUSPENDED':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='suspended')
        else:
            return None

    #Disconnect to the Server
    def disconnect(self):
        if self.connect_flag == True:
            self.server = self.server.disconnect()
            self.connect_flag == False

    #To keep session alive
    def keep_session_alive(self):
        assert self.server.keep_session_alive()

    #To get the server type
    def get_server_type(self):
        return self.server.get_server_type()

    #To get performance manager
    def get_performance_manager(self):
        return self.server.get_performance_manager()

    #To get the all the server's hosts
    def get_all_hosts(self):
        """
        Returns a dictionary of the existing hosts keys are their names
        and values their ManagedObjectReference object.
        """
        return self.server.get_hosts()

    #To get all datastores
    def get_all_datastores(self):
        """
        Returns a dictionary of the existing datastores. Keys are
        ManagedObjectReference and values datastore names.
        """
        return self.server.get_datastores()

    #To get all clusters
    def get_all_clusters(self):
        """
        Returns a dictionary of the existing clusters. Keys are their 
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_clusters()

    #To get all datacenters
    def get_all_datacenters(self):
        """
        Returns a dictionary of the existing datacenters. keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_datacenters()

    #To get all resource pools
    def get_all_resource_pools(self):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        """
        return self.server.get_resource_pools()

    #To get hosts by name
    def get_hosts_by_name(self, from_mor):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        @from_mor: if given, retrieves the hosts contained within the specified 
            managed entity.
        """
        try:
            hosts_dic = self.server.get_hosts(from_mor)
        except:
            print "Get hosts error!"
            return None
        return hosts_dic

    def get_vm_by_name(self, vm_name):
        try:
            vm = self.server.get_vm_by_name(vm_name)
        except:
            print "Get vm error!"
            return None
        return vm

    def power_on_vm(self, vm_name):
        try:
            vm = self.get_vm_by_name(vm_name)
            if (vm.is_powered_off()):
                vm.power_on()
                print "vm " + vm_name + " power on success."
            else:
                print "vm " + vm_name + "is already power on"
                return False
        except:
            print "Power on vm " + vm_name + "error"
            return False
        return True

    def power_off_vm(self, vm_name):
        try:
            vm = self.get_vm_by_name(vm_name)
            if (vm.is_powered_on()):
                vm.power_off()
                print "vm " + vm_name + " power off success."
            else:
                print "vm " + vm_name + "is already power off"
                return False
        except:
            print "Power off vm " + vm_name + " error"
            return False
        return True
Ejemplo n.º 4
0
def getVMdata(configFilePath, host, user, password, vmListFile):
    if (host is None and user is None and password is None):
        OPTION_CHAR = '='
        options = {}
        if os.path.exists(configFilePath):
            content = open(configFilePath)
            for line in content:
                if OPTION_CHAR in line:
                    option, value = line.split(OPTION_CHAR, 1)
                    option = option.strip()
                    value = value.strip()

                    if value.startswith('"') and value.endswith('"'):
                        value = value[1:-1]
                        options[option] = value

            HOST = options['HOST']
            USER = options['USER']
            PASSWORD = options['PASSWORD']
        else:
            print "Must supply valid ESX configuration file."
            sys.exit(1)
    else:
        HOST = host
        USER = user
        PASSWORD = password

    try:
        server = VIServer()
        server.connect(HOST, USER, PASSWORD)

        if vmListFile is None:
            vmlist = server.get_registered_vms()
        else:
            if os.path.exists(vmListFile):
                fileptr = open(vmListFile)
                content = fileptr.read()
                vmlist = content.split(",")

        metric = []

        vmMetrics = {
            'disk.write': 131079,
            'disk.read': 131078,
            'disk.usage': 131073,
            'cpu.usage': 1,
            'mem.usage': 65537
        }
        for vms in vmlist:
            vms = vms.strip()
            start = vms.find(']') + 2
            end = vms.find('/', start)
            vmName = vms[start:end]
            pm = server.get_performance_manager()
            vm = server.get_vm_by_path(vms)
            mor = vm._mor
            for key, value in vmMetrics.iteritems():
                entitystats = pm.get_entity_statistic(mor, key)
                for i in entitystats:
                    dict_result = dict(
                        (name, getattr(i, name)) for name in dir(i))
                    metric_name = vmName + '.' + dict_result[
                        'group'] + '.' + dict_result['counter']
                    group = dict_result['group']
                    timeTuple = dict_result['time']
                    ts = time.mktime(timeTuple.timetuple())
                    maxValue = getMaxValue(group)
                    if dict_result['unit'] == 'percent':
                        mvalue = float(dict_result['value']) / 100
                    else:
                        mvalue = dict_result['value']
                    metric.append({
                        "metric_name": metric_name,
                        "value": mvalue,
                        "unit": dict_result['unit'],
                        "server": vmName,
                        "maxValue": maxValue,
                        "time_stamp": ts
                    })

        return metric
    except Exception as e:
        print e
        sys.exit(1)
Ejemplo n.º 5
0
class ESXi_Server:
    server_ip    = ''
    user_name    = ''
    password     = ''
    connect_flag = False
    server       = None
    #vm_list      = []

    #def __init__(self):

    #Use the given args to connect the esxi server you want
    #@ip[string]: ESXi server's IP address
    #@name[string]: the username used to login the ESXi server
    #@pwd[string]: the password used to login the ESXi server
    def connect_server(self, ip, name, pwd):
        self.server_ip = ip
        self.user_name = name
        self.password  = pwd
        self.server = VIServer()
        self.server.connect(self.server_ip, self.user_name, self.password)
        self.connect_flag = self.server.is_connected()
        if self.connect_flag:
            return True
        return False

    #To get all the definition registered vms from the connected server
    #@param[string]: can be set as ALL, POWER_ON, POWER_OFF, SUSPENDED
    #According to the param, returns a list of VM Paths. You might also filter by datacenter,
    #cluster, or resource pool by providing their name or MORs.
    #if  cluster is set, datacenter is ignored, and if resource pool is set
    #both, datacenter and cluster are ignored.
    def get_registered_vms(self, param, status=None, datacenter=None, cluster=None,
                           resource_pool=None):
        if param not in ['ALL', 'POWER_ON', 'POWER_OFF', 'SUSPENDED']:
            print "Get VMs error: param can only be set as ALL, POWER_ON, POWER_OFF, or SUSPENDED."
            return None
        if self.connect_flag == False:
            print "Get VMs error: Server not connected."
            return None
        if param == 'ALL':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool)
        elif param == 'POWER_ON':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='poweredOn')
        elif param == 'POWER_OFF':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='poweredOff')
        elif param == 'SUSPENDED':
            return self.server.get_registered_vms(datacenter, cluster, resource_pool, status='suspended')
        else:
            return None

    #Disconnect to the Server
    def disconnect(self):
        if self.connect_flag == True:
            self.server = self.server.disconnect()
            self.connect_flag == False

    #To keep session alive
    def keep_session_alive(self):
        assert self.server.keep_session_alive()

    #To get the server type
    def get_server_type(self):
        return self.server.get_server_type()

    #To get performance manager
    def get_performance_manager(self):
        return self.server.get_performance_manager()

    #To get the all the server's hosts
    def get_all_hosts(self):
        """
        Returns a dictionary of the existing hosts keys are their names
        and values their ManagedObjectReference object.
        """
        return self.server.get_hosts()

    #To get all datastores
    def get_all_datastores(self):
        """
        Returns a dictionary of the existing datastores. Keys are
        ManagedObjectReference and values datastore names.
        """
        return self.server.get_datastores()

    #To get all clusters
    def get_all_clusters(self):
        """
        Returns a dictionary of the existing clusters. Keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_clusters()

    #To get all datacenters
    def get_all_datacenters(self):
        """
        Returns a dictionary of the existing datacenters. keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_datacenters()

    #To get all resource pools
    def get_all_resource_pools(self):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        """
        return self.server.get_resource_pools()

    #To get hosts by name
    def get_hosts_by_name(self, from_mor):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        @from_mor: if given, retrieves the hosts contained within the specified
            managed entity.
        """
        try:
            hosts_dic = self.server.get_hosts(from_mor)
        except:
            print "Get hosts error!"
            return None
        return hosts_dic
Ejemplo n.º 6
0
class ESXi_Server:
    server_ip = ''
    user_name = ''
    password = ''
    connect_flag = False
    server = None

    # vm_list = []

    # Use the given args to connect the esxi server you want
    # @ip[string]: ESXi server's IP address
    # @name[string]: the username used to login the ESXi server
    # @pwd[string]: the password used to login the ESXi server
    def connect_server(self, ip, name, pwd):
        self.server_ip = ip
        self.user_name = name
        self.password = pwd
        self.server = VIServer()
        self.server.connect(self.server_ip, self.user_name, self.password)
        self.connect_flag = self.server.is_connected()
        if self.connect_flag:
            return True
        return False

    # To get all the definition registered vms from the connected server
    # @param[string]: can be set as ALL, POWER_ON, POWER_OFF, SUSPENDED
    # According to the param, returns a list of VM Paths. You might also filter by datacenter,
    # cluster, or resource pool by providing their name or MORs.
    # if  cluster is set, datacenter is ignored, and if resource pool is set
    # both, datacenter and cluster are ignored.
    def get_registered_vms(self,
                           param,
                           status=None,
                           datacenter=None,
                           cluster=None,
                           resource_pool=None):
        if param not in ['ALL', 'POWERED ON', 'POWERED OFF', 'SUSPENDED']:
            LOG.debug(
                "Get VMs error: param can only be set as ALL, POWERED ON,\
                    POWERED OFF, or SUSPENDED.")
            return None
        if not self.connect_flag:
            LOG.info("Get VMs error: Server not connected.")
            return None
        if param == 'ALL':
            return self.server.get_registered_vms(datacenter, cluster,
                                                  resource_pool)
        elif param == 'POWERED ON':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='poweredOn')
        elif param == 'POWERED OFF':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='poweredOff')
        elif param == 'SUSPENDED':
            return self.server.get_registered_vms(datacenter,
                                                  cluster,
                                                  resource_pool,
                                                  status='suspended')
        else:
            return None

    # Disconnect to the Server
    def disconnect(self):
        if self.connect_flag:
            self.server = self.server.disconnect()
            self.connect_flag = False

    # To keep session alive
    def keep_session_alive(self):
        return self.server.keep_session_alive()

    # To get the server type
    def get_server_type(self):
        return self.server.get_server_type()

    # To get performance manager
    def get_performance_manager(self):
        return self.server.get_performance_manager()

    # To get the all the server's hosts
    def get_all_hosts(self):
        """
        Returns a dictionary of the existing hosts keys are their names
        and values their ManagedObjectReference object.
        """
        return self.server.get_hosts()

    # To get all datastores
    def get_all_datastores(self):
        """
        Returns a dictionary of the existing datastores. Keys are
        ManagedObjectReference and values datastore names.
        """
        return self.server.get_datastores()

    # To get all clusters
    def get_all_clusters(self):
        """
        Returns a dictionary of the existing clusters. Keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_clusters()

    # To get all datacenters
    def get_all_datacenters(self):
        """
        Returns a dictionary of the existing datacenters. keys are their
        ManagedObjectReference objects and values their names.
        """
        return self.server.get_datacenters()

    # To get all resource pools
    def get_all_resource_pools(self):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        """
        return self.server.get_resource_pools()

    # To get hosts by name
    def get_hosts_by_name(self, from_mor):
        """
        Returns a dictionary of the existing ResourcePools. keys are their
        ManagedObjectReference objects and values their full path names.
        @from_mor: if given, retrieves the hosts contained within the specified
            managed entity.
        """
        try:
            hosts_dic = self.server.get_hosts(from_mor)
        except:
            LOG.error("Get hosts error!")
            return None
        return hosts_dic

    def run_vm_by_name(self, name):
        """
        Run vm by name.
        """
        try:
            vm = self.server.get_vm_by_name(name)
            status = vm.get_status()
            if status == 'POWERED ON':
                pass
            elif status == 'POWERED OFF':
                try:
                    vm.power_on()
                except:
                    LOG.error("Run vm error!")
                    pass
            else:
                pass
        except:
            LOG.error("Get vm status error when runing vm!")
            pass

    def stop_vm_by_name(self, name):
        """
        Run vm by name.
        """
        try:
            vm = self.server.get_vm_by_name(name)
            status = vm.get_status()
            if status == 'POWERED OFF':
                pass
            elif status == 'POWERED ON':
                try:
                    vm.power_off()
                except:
                    LOG.error("Stop vm error!")
                    pass
            else:
                pass
        except:
            LOG.error("Get vm status error when stopping vm!")
            pass

    def get_vm_status_by_name(self, name):
        """
        Get vm status by nam
        """
        try:
            vm = self.server.get_vm_by_name(name)
            status = vm.get_status()
            LOG.info("Get VM status is %s" % status)
            return status
        except:
            LOG.info("Get VM status error!")
            return None
Ejemplo n.º 7
0
def getVMdata(configFilePath, host, user, password, vmListFile):
  if (host is None and user is None and password is None):
    OPTION_CHAR = '='
    options = {}
    if os.path.exists(configFilePath):
      content = open(configFilePath)
      for line in content:
        if OPTION_CHAR in line:
          option, value = line.split(OPTION_CHAR, 1)
          option = option.strip()
          value = value.strip()

          if value.startswith('"') and value.endswith('"'):
            value = value[1:-1]
            options[option] = value

      HOST = options['HOST']
      USER = options['USER']
      PASSWORD = options['PASSWORD']
    else:
      print "Must supply valid ESX configuration file."
      sys.exit(1)
  else:
    HOST = host
    USER = user
    PASSWORD = password

  try:
    server = VIServer()
    server.connect(HOST, USER, PASSWORD)

    if vmListFile is None:
      vmlist = server.get_registered_vms()
    else:
      if os.path.exists(vmListFile):
        fileptr = open(vmListFile)
        content = fileptr.read()
        vmlist = content.split(",")

    metric = []

    vmMetrics = {'disk.write': 131079, 'disk.read': 131078, 'disk.usage': 131073, 'cpu.usage': 1, 'mem.usage': 65537}
    for vms in vmlist:
      vms = vms.strip()
      start = vms.find(']') + 2
      end = vms.find('/', start)
      vmName = vms[start:end]
      pm = server.get_performance_manager()
      vm = server.get_vm_by_path(vms)
      mor = vm._mor
      for key, value in vmMetrics.iteritems():
        entitystats = pm.get_entity_statistic(mor, key)
        for i in entitystats:
          dict_result = dict((name, getattr(i, name)) for name in dir(i))
          metric_name = vmName+'.'+dict_result['group']+'.'+dict_result['counter']
          group = dict_result['group']
          timeTuple = dict_result['time']
          ts = time.mktime(timeTuple.timetuple())
          maxValue = getMaxValue(group)
          if dict_result['unit'] == 'percent':
            mvalue = float(dict_result['value'])/100
          else:
            mvalue = dict_result['value']
          metric.append({"metric_name": metric_name, "value": mvalue, "unit":dict_result['unit'], "server":vmName, "maxValue":maxValue,"time_stamp":ts})

    return metric
  except Exception as e:
    print e
    sys.exit(1)