All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xiaoleilu.ucloud.unet.UNet Maven / Gradle / Ivy

package com.xiaoleilu.ucloud.unet;

import com.xiaoleilu.ucloud.core.Param;
import com.xiaoleilu.ucloud.core.Response;
import com.xiaoleilu.ucloud.core.Ucloud;
import com.xiaoleilu.ucloud.core.UcloudApiClient;
import com.xiaoleilu.ucloud.core.enums.PubName;
import com.xiaoleilu.ucloud.core.enums.Region;
import com.xiaoleilu.ucloud.core.enums.ResourceType;
import com.xiaoleilu.ucloud.unet.security.SecurityRule;
import com.xiaoleilu.ucloud.util.Config;

/**
 * 网络
 * @author Looly
 *
 */
public class UNet extends Ucloud{
	
	// --------------------------------------------------------------- Constructor start
	/**
	 * 构造,公钥、私钥、API的URL读取默认配置文件中的信息
	 */
	public UNet() {
		super();
	}
	/**
	 * 构造
	 * @param config 配置文件
	 */
	public UNet(Config config) {
		super(config);
	}
	/**
	 * 构造
	 * @param client UcloudApiClient
	 */
	public UNet(UcloudApiClient client) {
		super(client);
	}
	// --------------------------------------------------------------- Constructor end
	
	// --------------------------------------------------------------- EIP
	/**
	 * 根据提供信息,分配弹性IP。
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response allocateEIP(Param param){
		return client.get(UNetAction.AllocateEIP, param);
	}
	
	/**
	 * 获取弹性IP详细信息
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response describeEIP(Param param){
		return client.get(UNetAction.DescribeEIP, param);
	}
	
	/**
	 * 修改弹性IP名字业务组备注等属性字段
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response UpdateEIPAttribute(Param param){
		return client.get(UNetAction.UpdateEIPAttribute, param);
	}
	
	/**
	 * 释放弹性IP资源
	 * @param region 数据中心
	 * @param eipId 弹性IP的资源ID
	 * @return 返回结果
	 */
	public Response releaseEIP(Region region, String eipId){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.EIPId, eipId);
		return client.get(UNetAction.ReleaseEIP, param);
	}
	
	/**
	 * 将弹性IP绑定到资源上
	 * @param region 数据中心
	 * @param eipId 弹性IP的资源ID
	 * @param resourceType 弹性IP请求绑定的资源类型
	 * @param resourceId 弹性IP请求绑定的资源ID
	 * @return 返回结果
	 */
	public Response bindEIP(Region region, String eipId, ResourceType resourceType, String resourceId){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.EIPId, eipId)
				.set(UNetName.ResourceType, resourceType)
				.set(UNetName.ResourceId, resourceId);
		return client.get(UNetAction.BindEIP, param);
	}
	
	/**
	 * 将弹性IP从资源上解绑
	 * @param region 数据中心
	 * @param eipId 弹性IP的资源ID
	 * @param resourceType 弹性IP请求绑定的资源类型
	 * @param resourceId 弹性IP请求绑定的资源ID
	 * @return 返回结果
	 */
	public Response unBindEIP(Region region, String eipId, ResourceType resourceType, String resourceId){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.EIPId, eipId)
				.set(UNetName.ResourceType, resourceType)
				.set(UNetName.ResourceId, resourceId);
		return client.get(UNetAction.UnBindEIP, param);
	}
	
	/**
	 * 修改弹性IP的外网带宽
	 * @param region 数据中心
	 * @param eipId 弹性IP的资源ID
	 * @param bandwidth 弹性IP的外网带宽,单位为Mbps,范围 [0-800]
	 * @return 返回结果
	 */
	public Response modifyEIPBandwidth(Region region, String eipId, int bandwidth){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.EIPId, eipId)
				.set(UNetName.Bandwidth, bandwidth);
		return client.get(UNetAction.ModifyEIPBandwidth, param);
	}
	
	/**
	 * 修改弹性IP的外网出口权重
	 * @param region 数据中心
	 * @param eipId 弹性IP的资源ID
	 * @param weight 外网出口权重,范围[0-100]
	 * @return 返回结果
	 */
	public Response modifyEIPWeight(Region region, String eipId, int weight){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.EIPId, eipId)
				.set(UNetName.Bandwidth, weight);
		return client.get(UNetAction.ModifyEIPWeight, param);
	}
	
	/**
	 * 获取弹性IP价格
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response getEIPPrice(Param param){
		return client.get(UNetAction.GetEIPPrice, param);
	}
	
	// --------------------------------------------------------------- VIP
	/**
	 * 根据提供信息,分配内网VIP(Virtual IP,多用于高可用程序作为漂移IP。)
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response allocateVIP(Param param){
		return client.get(UNetAction.AllocateVIP, param);
	}
	
	/**
	 * 获取内网VIP详细信息
	 * @param region 数据中心
	 * @return 返回结果
	 */
	public Response describeVIP(Region region){
		final Param param = Param.create()
				.set(PubName.Region, region);
		return client.get(UNetAction.DescribeVIP, param);
	}
	
	/**
	 * 获取内网VIP详细信息
	 * @param region 数据中心
	 * @param vip 内网VIP的IP地址
	 * @return 返回结果
	 */
	public Response releaseVIP(Region region, String vip){
		final Param param = Param.create()
				.set(PubName.Region, region);
		return client.get(UNetAction.ReleaseVIP, param);
	}
	
	// --------------------------------------------------------------- 防火墙
	/**
	 * 获取防火墙组信息
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response describeSecurityGroup(Param param){
		return client.get(UNetAction.DescribeSecurityGroup, param);
	}
	
	/**
	 * 获取防火墙组所绑定资源的外网IP
	 * @param param 参数
	 * @return 返回结果
	 */
	public Response describeSecurityGroupResource(Param param){
		return client.get(UNetAction.DescribeSecurityGroupResource, param);
	}
	
	/**
	 * 创建防火墙组
	 * @param region 数据中心
	 * @param groupName 防火墙组名称
	 * @param description 防火墙组描述
	 * @param rules 规则数组(可配置多个规则)
	 * @return 返回结果
	 */
	public Response createSecurityGroup(Region region, String groupName, String description, SecurityRule... rules){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.GroupName, groupName)
				.set(UNetName.Description, description);
		
		//add rules
		for(int i=0; i < rules.length; i++) {
			param.set("Rule." + i, rules[i]);
		}
		
		return client.get(UNetAction.CreateSecurityGroup, param);
	}
	
	/**
	 * 更新防火墙规则
	 * @param region 数据中心
	 * @param groupId 防火墙资源ID
	 * @param rules 规则数组(可配置多个规则)
	 * @return 返回结果
	 */
	public Response updateSecurityGroup(Region region, String groupId, SecurityRule... rules){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.GroupId, groupId);
		
		//add rules
		for(int i=0; i < rules.length; i++) {
			param.set("Rule." + i, rules[i]);
		}
		
		return client.get(UNetAction.UpdateSecurityGroup, param);
	}
	
	/**
	 * 将防火墙应用到资源上
	 * @param region 数据中心
	 * @param groupId 防火墙资源ID
	 * @param resourceType 所应用资源类型,如UHost
	 * @param resourceId 所应用资源ID
	 * @return 返回结果
	 */
	public Response grantSecurityGroup(Region region, String groupId, ResourceType resourceType, String resourceId){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.GroupId, groupId)
				.set(UNetName.ResourceType, resourceType)
				.set(UNetName.ResourceId, resourceId);
		
		return client.get(UNetAction.GrantSecurityGroup, param);
	}
	
	/**
	 * 删除防火墙
	 * @param region 数据中心
	 * @param groupId 防火墙资源ID
	 * @return 返回结果
	 */
	public Response deleteSecurityGroup(Region region, String groupId){
		final Param param = Param.create()
				.set(PubName.Region, region)
				.set(UNetName.GroupId, groupId);
		
		return client.get(UNetAction.DeleteSecurityGroup, param);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy