def create_default_controller(slice_obj, controller_sys): """创建默认控制器 """ if slice_obj: island = slice_obj.get_island() try: vm, ip = create_vm_for_controller(island_obj=island, slice_obj=slice_obj, image_name=controller_sys) except Exception, ex: raise DbError(ex.message) try: controller = Controller(name=controller_sys, port=6633, island=island) controller.ip = ip controller.host = vm controller.save() return controller except Exception: if vm: try: vm.delete() except: pass raise DbError("数据库异常!")
def slice_add_controller(slice_obj, controller): """slice添加控制器 """ LOG.debug('slice_add_controller') if slice_obj and controller: if controller.is_used(): raise ControllerUsedError('控制器已经被使用!') try: if not slice_obj.get_controller(): slice_obj.add_resource(controller) except Exception: raise DbError("数据库异常") else: raise DbError("数据库异常")
def create_user_defined_controller(slice_obj, controller_ip, controller_port): """创建用户自定义控制器记录 """ if slice_obj: try: controller = Controller(name='user_define', ip=controller_ip, port=int(controller_port), island=slice_obj.get_island()) controller.save() return controller except Exception: raise DbError("数据库异常") else: raise DbError("数据库异常")
def create_default_controller(slice_obj, controller_sys): """创建默认控制器 """ if slice_obj: try: #调用控制器创建接口 #controller = Controller( #name=controller_sys, #ip='192.168.8.9', #port=7687, #http_port=0, #state=1, #island=slice_obj.get_island()) island = slice_obj.get_island() #先创建虚拟机然后再创建controller vm, ip = create_vm_for_controller(island_obj=island, slice_obj=slice_obj, image_name=controller_sys) controller = Controller(name=controller_sys, port=6633, http_port=0, state=1, island=island) controller.ip = ip controller.host = vm controller.save() return controller except Exception, ex: #transaction.rollback() import traceback print traceback.print_exc() raise DbError("创建控制器失败!")
def slice_add_controller(slice_obj, controller): """slice添加控制器 """ LOG.debug('slice_add_controller') if slice_obj and controller: if controller.is_used(): raise ControllerUsedError('控制器已经被使用!') if not slice_obj.get_controller(): try: slice_obj.add_resource(controller) except Exception, ex: transaction.rollback() raise DbError(ex)
def create_user_defined_controller(slice_obj, controller_ip, controller_port): """创建用户自定义控制器记录 """ if slice_obj: try: controller = Controller(name='user_define', ip=controller_ip, port=int(controller_port), http_port=0, state=1, island=slice_obj.get_island()) controller.save() return controller except Exception, ex: transaction.rollback() raise DbError(ex)
def create_controller(slice_obj, controller_info): """创建控制器 """ if slice_obj: try: if controller_info['controller_type'] == 'default_create': controller = create_default_controller( slice_obj, controller_info['controller_sys']) else: controller = create_user_defined_controller( slice_obj, controller_info['controller_ip'], controller_info['controller_port']) return controller except Exception: raise else: raise DbError("数据库异常")
def slice_change_controller(slice_obj, controller_info): """slice更改控制器 """ LOG.debug('slice_change_controller') if slice_obj: try: haved_controller = slice_obj.get_controller() if controller_info['controller_type'] == 'default_create': if haved_controller.name == controller_info['controller_sys']: if haved_controller.host.state != 9: return else: if haved_controller.name == 'user_define' and\ haved_controller.ip == controller_info['controller_ip'] and\ haved_controller.port == int(controller_info['controller_port']): return slice_obj.remove_resource(haved_controller) controller = None controller = create_add_controller(slice_obj, controller_info) flowvisor_update_sice_controller(slice_obj.get_flowvisor(), slice_obj.name, controller.ip, controller.port) except: print 'c5' try: print 'c7' if controller: delete_controller(controller) print 'c8' slice_obj.add_resource(haved_controller) print 'c9' except: print 'c10' pass raise else: try: delete_controller(haved_controller) except: pass else: raise DbError("数据库异常")
def slice_change_controller(slice_obj, controller_info): """slice更改控制器 """ LOG.debug('slice_change_controller') try: haved_controller = slice_obj.get_controller() if controller_info['controller_type'] == 'default_create': if haved_controller.name == controller_info['controller_sys']: if haved_controller.host.state != 9: transaction.commit() return else: if haved_controller.name == 'user_define' and\ haved_controller.ip == controller_info['controller_ip'] and\ haved_controller.port == int(controller_info['controller_port']): transaction.commit() return controller_n = create_controller(slice_obj, controller_info) except Exception: transaction.rollback() raise else: transaction.commit() try: slice_obj.remove_resource(haved_controller) slice_add_controller(slice_obj, controller_n) flowvisor_update_sice_controller(slice_obj.get_flowvisor(), slice_obj.id, controller_n.ip, controller_n.port) except Exception, ex: transaction.rollback() try: delete_controller(controller_n, True) except: pass transaction.commit() raise DbError(ex.message)
if slice_obj: try: if controller_info['controller_type'] == 'default_create': controller = create_default_controller( slice_obj, controller_info['controller_sys']) else: controller = create_user_defined_controller( slice_obj, controller_info['controller_ip'], controller_info['controller_port']) slice_add_controller(slice_obj, controller) return controller except Exception, ex: transaction.rollback() raise else: raise DbError("数据库异常") @transaction.commit_on_success def slice_add_controller(slice_obj, controller): """slice添加控制器 """ LOG.debug('slice_add_controller') if slice_obj and controller: if controller.is_used(): raise ControllerUsedError('控制器已经被使用!') if not slice_obj.get_controller(): try: slice_obj.add_resource(controller) except Exception, ex: transaction.rollback()