def get_event_status(record, eventid): def normal_check(): if not record.event_exist(eventid): return (EVENT_STATUS["NONE"], 0) e = record.get_event(eventid) ret = (e.status, e.result) if e.status in (EVENT_STATUS["DONE"], EVENT_STATUS["ERROR"]): record.del_event(eventid) return ret record.lock() try: st, re = normal_check() if st != EVENT_STATUS["PROGRESS"]: record.unlock() return (st, re) e = record.get_event(eventid) if e.func: e.func(eventid, *e.args) # event record may be changed. get again. st, re = normal_check() record.unlock() return (st, re) except Exception: record.unlock() logger.error(traceback.format_exc()) raise
def vas_send_request(method, args): try: args['ver'] = vas_subr.XMLRPC_VERSION res = vas_subr.send_request(vas_subr.host_storage_manager_list, \ vas_subr.port_storage_manager, method, args) except xmlrpclib.Fault, inst: logger.error("euca_driver: %s fault %d" % (method, inst.faultCode)) raise
def get_extent(self, pdskid, offset): try: sql = "select * from %s where pdskid = %d and offset <= %d and offset+capacity > %d" % (self.db_name, pdskid, offset, offset) self.db.c.execute(sql) row = self.db.c.fetchone() if row: return dict(zip(self.db_keys, row)) else: return None except Exception: logger.error(traceback.format_exc()) return None
def get_my_hsvrid(): s, ip_o = commands.getstatusoutput('/sbin/ip -o addr') if s !=0: logger.error("/sbin/ip failed(%s)." % s) sys.exit(1) try: res = vas_send_request('listHeadServers', {}) except: sys.exit(1) for hs in res: for ip in hs['ip_data']: for l in ip_o.splitlines(): if l.find(ip) >= 0: return hs['hsvrid'] return None
sys.path = sys.path + ['/opt/vas/lib', '/opt/vastorage/lib'] from vas_conf import logger import vas_subr LVOLNAME_PREFIX='euca' def vas_send_request(method, args): try: args['ver'] = vas_subr.XMLRPC_VERSION res = vas_subr.send_request(vas_subr.host_storage_manager_list, \ vas_subr.port_storage_manager, method, args) except xmlrpclib.Fault, inst: logger.error("euca_driver: %s fault %d" % (method, inst.faultCode)) raise except: logger.error("euca_driver: %s exception" % method) raise return res def get_my_hsvrid(): s, ip_o = commands.getstatusoutput('/sbin/ip -o addr') if s !=0: logger.error("/sbin/ip failed(%s)." % s) sys.exit(1) try: res = vas_send_request('listHeadServers', {}) except: sys.exit(1) for hs in res: