package io.cattle.platform.resource.pool.port; import io.cattle.platform.core.addon.ServicesPortRange; import io.cattle.platform.core.constants.AccountConstants; import io.cattle.platform.core.model.Account; import io.cattle.platform.json.JsonMapper; import io.cattle.platform.object.util.DataAccessor; import io.cattle.platform.resource.pool.PooledResourceItemGenerator; import io.cattle.platform.resource.pool.PooledResourceItemGeneratorFactory; import io.cattle.platform.resource.pool.impl.StringRangeGenerator; import io.cattle.platform.resource.pool.util.ResourcePoolConstants; import javax.inject.Inject; public class EnvironmentPortGeneratorFactory implements PooledResourceItemGeneratorFactory { @Inject JsonMapper jsonMapper; @Override public PooledResourceItemGenerator getGenerator(Object pool, String qualifier) { if ((pool instanceof Account) && ResourcePoolConstants.ENVIRONMENT_PORT.equals(qualifier)) { Account env = (Account) pool; ServicesPortRange portRange = DataAccessor.field(env, AccountConstants.FIELD_PORT_RANGE, jsonMapper, ServicesPortRange.class); if (portRange == null) { portRange = AccountConstants.getDefaultServicesPortRange(); } return new StringRangeGenerator(portRange.getStartPort().toString(), portRange.getEndPort().toString()); } return null; } }