import org.opendaylight.controller.samples.loadbalancer.IConfigManager; //導入方法依賴的package包/類
@Path("/{containerName}/create/vip")
@POST
@Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@StatusCodes( {
@ResponseCode(code = 201, condition = "VIP created successfully"),
@ResponseCode(code = 404, condition = "The Container Name not found"),
@ResponseCode(code = 503, condition = "Load balancer service is unavailable"),
@ResponseCode(code = 409, condition = "VIP already exist"),
@ResponseCode(code = 415, condition = "Invalid input data")})
public Response addVIP(@PathParam("containerName") String containerName,
@TypeHint(VIP.class) JAXBElement inVIP){
VIP vipInput = inVIP.getValue();
String name = vipInput.getName();
String ip = vipInput.getIp();
String protocol = vipInput.getProtocol();
short protocolPort = vipInput.getPort();
String poolName = vipInput.getPoolName();
if(name.isEmpty() ||
ip.isEmpty()||
protocol.isEmpty()||
protocolPort < 0 ){
throw new UnsupportedMediaTypeException(RestMessages.INVALIDDATA.toString());
}
IConfigManager configManager = getConfigManagerService(containerName);
if (configManager == null) {
throw new ServiceUnavailableException("Load Balancer "
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
if(!configManager.vipExists(name, ip, protocol, protocolPort, poolName)){
VIP vip = configManager.createVIP(name, ip, protocol, protocolPort, poolName);
if ( vip != null){
return Response.status(Response.Status.CREATED).build();
}
}else{
throw new ResourceConflictException(NBConst.RES_VIP_ALREADY_EXIST);
}
throw new InternalServerErrorException(NBConst.RES_VIP_CREATION_FAILED);
}