openStack路由增删改查

/**
 * @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);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值