def _publish_mem_info(vm): """ Publish MIN_FREE_MEM and MEM_OVER properties to the VM user template to show the values to the user Args: - vm: VirtualMachineInfo with the VM info. Return: True if the information is published successfully or False otherwise """ template = "" if not vm.min_free_mem: template += "MIN_FREE_MEM = %d\n" % Config.MIN_FREE_MEMORY if not vm.mem_over_ratio: template += "MEM_OVER = %.2f\n" % Config.MEM_OVER # if there is nothing to update return True if not template: return True server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.vm.update(ConfigONE.ONE_ID, vm.id, template, 1) if not success: logger.error("Error updating the template to show the mem info to the VM ID: %s. %s." % (vm.id, res_info)) return success except: logger.exception("Error updating the template to show the mem info to the VM ID: %s." % vm.id) return False return True
def _publish_mem_info(vm): """ Publish MIN_FREE_MEM and MEM_OVER properties to the VM user template to show the values to the user Args: - vm: VirtualMachineInfo with the VM info. Return: True if the information is published successfully or False otherwise """ template = "" if not vm.min_free_mem: template += "MIN_FREE_MEM = %d\n" % Config.MIN_FREE_MEMORY if not vm.mem_over_ratio: template += "MEM_OVER = %.2f\n" % Config.MEM_OVER # if there is nothing to update return True if not template: return True server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.vm.update(ConfigONE.ONE_ID, vm.id, template, 1) if not success: logger.error("Error updating the template to show the mem info to the VM ID: %s. %s." % (vm.id, res_info)) return success except: logger.exception("Error updating the template to show the mem info to the VM ID: %s." % vm.id) return False return True
def migrate(vm_id, host_id): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.vm.migrate(ConfigONE.ONE_ID, vm_id, host_id, True, True) except: logger.exception("Error migrating the VM %d to the host %d" % (vm_id, host_id)) return False if success: return True else: logger.error("Error migrating the VM %d to the host %d: %s" % (vm_id, host_id, res_info)) return False
def migrate(vm_id, host_id): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.vm.migrate(ConfigONE.ONE_ID, vm_id, host_id, True, True) except: logger.exception("Error migrating the VM %d to the host %d" % (vm_id, host_id)) return False if success: return True else: logger.error("Error migrating the VM %d to the host %d: %s" % (vm_id, host_id, res_info)) return False
def get_host_info(host_id): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.host.info(ConfigONE.ONE_ID, host_id) except: logger.exception("Error getting the host info: " + host_id) return None if success: host_info = HOST(res_info) res_host = HostInfo(int(host_info.ID), host_info.NAME, host_info.STATE not in HOST.INVALID_STATES, host_info) return res_host else: logger.error("Error getting the host info: " + res_info) return None
def get_host_info(host_id): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.host.info(ConfigONE.ONE_ID, host_id) except: logger.exception("Error getting the host info: " + host_id) return None if success: host_info = HOST(res_info) res_host = HostInfo(int(host_info.ID), host_info.NAME, host_info.STATE not in HOST.INVALID_STATES, host_info) return res_host else: logger.error("Error getting the host info: " + res_info) return None
def get_vm_list(): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) # To get only ONE_ID user's resources #vm_filter = -3 # To get all vm_filter = -2 (success, res_info, _) = server.one.vmpool.info(ConfigONE.ONE_ID, vm_filter, -1, -1, 3) except: logger.exception("Error getting the VM list") return [] if success: res_vm = VM_POOL(res_info) res = [] for vm in res_vm.VM: try: host = HostInfo(int(vm.HISTORY_RECORDS.HISTORY[0].HID), vm.HISTORY_RECORDS.HISTORY[0].HOSTNAME) new_vm = VirtualMachineInfo(int(vm.ID), host, int(vm.TEMPLATE.MEMORY) * 1024, vm) new_vm.user_id = vm.UID if vm.USER_TEMPLATE.MEM_TOTAL: # to make it work on all ONE versions real_memory = vm.TEMPLATE.REALMEMORY if not real_memory: real_memory = vm.REALMEMORY new_vm.set_memory_values(int(real_memory), int(vm.USER_TEMPLATE.MEM_TOTAL), int(vm.USER_TEMPLATE.MEM_FREE)) if vm.USER_TEMPLATE.MIN_FREE_MEM: new_vm.min_free_mem = vm.USER_TEMPLATE.MIN_FREE_MEM if vm.USER_TEMPLATE.MEM_OVER: new_vm.mem_over_ratio = vm.USER_TEMPLATE.MEM_OVER if vm.USER_TEMPLATE.TIMESTAMP: new_vm.timestamp = vm.USER_TEMPLATE.TIMESTAMP # publish MEM properties to the VM user template to show the values to the user OpenNebula._publish_mem_info(new_vm) res.append(new_vm) except: logger.exception("Error getting the VM info %s." % vm.ID) return res else: logger.error("Error getting the VM list: " + res_info) return []
def get_host_list(): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.hostpool.info(ConfigONE.ONE_ID) except: logger.exception("Error getting the host list") return None if success: res = [] for host in HOST_POOL(res_info).HOST: new_host = HostInfo(host.ID, host.NAME, host.STATE not in HOST.INVALID_STATES, host) res.append(new_host) return res else: logger.error("Error getting the host list: " + res_info) return None
def get_host_list(): server_url = "http://%s:%d/RPC2" % (ConfigONE.ONE_SERVER, ConfigONE.ONE_PORT) try: server = ServerProxy(server_url,allow_none=True,timeout=10) (success, res_info, _) = server.one.hostpool.info(ConfigONE.ONE_ID) except: logger.exception("Error getting the host list") return None if success: res = [] for host in HOST_POOL(res_info).HOST: new_host = HostInfo(host.ID, host.NAME, host.STATE not in HOST.INVALID_STATES, host) res.append(new_host) return res else: logger.error("Error getting the host list: " + res_info) return None
# not use this file except in compliance with the License. You may obtain # # a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # #--------------------------------------------------------------------------- # import sys import importlib from cvem.config import Config, logger if __name__ == "__main__": monitor = None try: module_name, class_name = Config.MONITOR_CLASS.rsplit(".", 1) MonitorClass = getattr(importlib.import_module(module_name), class_name) monitor = MonitorClass() except Exception, ex: logger.exception("Error loading Monitor class") print "Error loading Monitor class: ", ex print "Check if the class name '%s' is correct." % Config.MONITOR_CLASS sys.exit(-1) monitor.start()
# Licensed under the Apache License, Version 2.0 (the "License"); you may # # not use this file except in compliance with the License. You may obtain # # a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # #--------------------------------------------------------------------------- # import sys import importlib from cvem.config import Config, logger if __name__ == "__main__": monitor = None try: module_name, class_name = Config.MONITOR_CLASS.rsplit(".", 1) MonitorClass = getattr(importlib.import_module(module_name), class_name) monitor = MonitorClass() except Exception, ex: logger.exception("Error loading Monitor class") print "Error loading Monitor class: ", ex print "Check if the class name '%s' is correct." % Config.MONITOR_CLASS sys.exit(-1) monitor.start()