openStack路由增删改查

xiaoxiao2021-02-28  48

/**  * @Description: 路由与openStack同步的工具类  * @version: v1.0.0  * @author: lihaiyong  * @date: 2018年1月31日 上午9:41:11  */ public class Router2OpenStackUtils { /** * @Description: 创建路由表,netOpenId不是必须字段,(关联外网的网络id,一般创建时没有外网端口) * @param rtid * @param tenantId * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static Router createRouter2OpenStack(RouterTableInfo rtid, String netOpenId, String tenantId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterBuilder builder = Builders.router().name(rtid.getName()).tenantId(AccountUtis.getOpenstackCurrentTenantId()).adminStateUp(true); if(StringUtil.isNotBlank(netOpenId)) { builder.externalGateway(netOpenId,true); } Router create = routerService.create(builder.build()); return create; } /** * @Description: 关联路由表子网接口 * @param rtid * @param tenantId * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static RouterInterface bindRouterSubnet2OpenStack(RouterTableInfo router, String netOpenId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterInterface attachInterface = routerService.attachInterface(router.getOpenstackId(), AttachInterfaceType.SUBNET, netOpenId); return attachInterface; } /** * @Description: 关联路由表端口 * @param rtid * @param tenantId * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static RouterInterface bindRouterPort2OpenStack(RouterTableInfo router, String portId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterInterface attachInterface = routerService.attachInterface(router.getOpenstackId(), AttachInterfaceType.PORT, portId); return attachInterface; } /** * @Description: 解绑路由表子网接口 * @param rtid * @param tenantId * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static RouterInterface unBindRouterSubnet2OpenStack(RouterTableInfo router, String netOpenId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterInterface attachInterface = routerService.detachInterface(router.getOpenstackId(), netOpenId, null); return attachInterface; } /** * @Description: 解绑路由表子网端口 * @param rtid * @param tenantId * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static RouterInterface unBindRouterPort2OpenStack(RouterTableInfo router, String portId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterInterface attachInterface = routerService.detachInterface(router.getOpenstackId(), null, portId); return attachInterface; } /** * @Description: 关联路由表外网接口 * @param rtid * @param tenantId * @return Router * @throws:.externalGateway(netOpenId) * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static Router createExternalGateway2OpenStack(RouterTableInfo router, String netOpenId) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); Router router2 = routerService.get(router.getOpenstackId()); router2.toBuilder().externalGateway(netOpenId,true).build(); routerService.update(router2); return router2; } /** * @Description: 创建路由策略 * @param rtsd * @param routerService * @param router * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static RouterTableStrategy createRouterStrategy2OpeenStack(RouterTableStrategy rtsd,  Router router) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); RouterBuilder route = router.toBuilder().route(rtsd.getDestination(),  rtsd.getNexthop()); routerService.update(route.build()); return rtsd; } /** * @Description: 批量创建路由策略 * @param rtsd * @param routerService * @param router * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static List<RouterTableStrategyDTO> batchCreateRouterStrategy2OpeenStack(List<RouterTableStrategyDTO> rtsdList,  RouterTableInfo router) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); Router router2 = routerService.get(router.getOpenstackId()); //创建策略 RouterBuilder route = router2.toBuilder(); if(rtsdList!=null&&rtsdList.size()>0) { for (RouterTableStrategyDTO rtsd : rtsdList) { rtsd.setRouterPk(router.getPk()); if(StringUtils.isNotBlank(rtsd.getDestination())&&StringUtils.isNotBlank(rtsd.getNexthop())&&(!"1".equals(rtsd.getNexthopType().toString()))) { try { Router build = route.route(rtsd.getDestination(),  rtsd.getNexthop()).build(); routerService.update(build); } catch (ClientResponseException e) { e.printStackTrace(); throw e; } } } return rtsdList; } /** * @Description: 删除路由表 * @param rtsd * @param routerService * @param router * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static ActionResponse deleteRouterStrategyFromOpeenStack(RouterTableInfo router) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); Router router2 = routerService.get(router.getOpenstackId()); if(router2!=null) { Router build = router2.toBuilder().noRoutes().clearExternalGateway().build(); routerService.update(build); ActionResponse actionResponse = routerService.delete(build.getId()); return actionResponse; }else { return null; } } /** * @Description: 更新路由表 * @param rtsd * @param routerService * @param router * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static void updateRouterInfo(RouterTableInfo router) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); Router router2 = routerService.get(router.getOpenstackId()); if(router2!=null) { router2.setName(router.getName()); router2.setTenantId(AccountUtis.getOpenstackCurrentTenantId()); routerService.update(router2); } } /** * @Description: 删除路由策略(全部删除,然后重建) * @param rtsd * @param routerService * @param router * @return Router * @throws: * @version: v1.0.0 * @author: lihaiyong * @date:2018年3月28日 */ public static void deleteRouterStrategy(RouterTableInfo router, List<RouterTableStrategyDTO> rtsdList) { NetworkingService networkingService = ConnOpenstackUtil.getNetworkingService(); RouterService routerService = networkingService.router(); Router router2 = routerService.get(router.getOpenstackId()); if(router2!=null) { Router build = router2.toBuilder().noRoutes().build(); Router2OpenStackUtils.batchCreateRouterStrategy2OpeenStack( rtsdList, router); routerService.update(build); } }
转载请注明原文地址: https://www.6miu.com/read-2620262.html

最新回复(0)