package io.cattle.platform.iaas.api.filter.instance; import io.cattle.platform.core.constants.InstanceConstants; import io.cattle.platform.core.model.Instance; import io.cattle.platform.core.util.PortSpec; import io.cattle.platform.iaas.api.filter.common.AbstractDefaultResourceManagerFilter; import io.cattle.platform.object.util.DataUtils; import io.github.ibuildthecloud.gdapi.exception.ValidationErrorException; import io.github.ibuildthecloud.gdapi.request.ApiRequest; import io.github.ibuildthecloud.gdapi.request.resource.ResourceManager; import io.github.ibuildthecloud.gdapi.validation.ValidationErrorCodes; import java.util.List; public class InstancePortsValidationFilter extends AbstractDefaultResourceManagerFilter { @Override public String[] getTypes() { return new String[] { "container", "virtualMachine" }; } @Override public Class<?>[] getTypeClasses() { return new Class<?>[] { Instance.class }; } @Override public Object create(String type, ApiRequest request, ResourceManager next) { List<?> ports = DataUtils.getFieldFromRequest(request, InstanceConstants.FIELD_PORTS, List.class); if (ports != null) { for (Object port : ports) { if (port == null) { throw new ValidationErrorException(ValidationErrorCodes.MISSING_REQUIRED, InstanceConstants.FIELD_PORTS); } /* This will parse the PortSpec and throw an error */ new PortSpec(port.toString()); } } return super.create(type, request, next); } }