package io.cattle.platform.resource.pool.mac;
import io.cattle.platform.archaius.util.ArchaiusUtil;
import io.cattle.platform.core.constants.NetworkConstants;
import io.cattle.platform.core.model.Network;
import io.cattle.platform.object.util.DataAccessor;
import io.cattle.platform.resource.pool.PooledResourceItemGenerator;
import io.cattle.platform.resource.pool.impl.AbstractTypeAndQualifierPooledItemGeneratorFactory;
import io.cattle.platform.resource.pool.util.ResourcePoolConstants;
import com.netflix.config.DynamicStringProperty;
public class MacAddressGeneratorFactory extends AbstractTypeAndQualifierPooledItemGeneratorFactory {
private static final DynamicStringProperty MAC_UNASSIGNED_PREFIX = ArchaiusUtil.getString("mac.unassigned.prefix");
public MacAddressGeneratorFactory() {
super(Network.class, ResourcePoolConstants.MAC);
}
@Override
protected PooledResourceItemGenerator createGenerator(Object pool, String qualifier) {
String prefix = DataAccessor.field(pool, NetworkConstants.FIELD_MAC_PREFIX, String.class);
if (prefix == null) {
prefix = MAC_UNASSIGNED_PREFIX.get();
}
StringBuilder start = new StringBuilder(prefix);
StringBuilder end = new StringBuilder(prefix);
for (; start.length() < 16;) {
start.append(":00");
end.append(":ff");
}
return new MacAddressGenerator(start.toString(), end.toString());
}
}