package core.aws.remote.vpc;
import core.aws.client.AWS;
import core.aws.remote.EnvTag;
import core.aws.remote.Loader;
import core.aws.resource.Resources;
import core.aws.resource.vpc.RouteTable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author neo
*/
public class RouteTableLoader extends Loader {
public RouteTableLoader(Resources resources, List<EnvTag> tags) {
super(resources, tags);
}
@Override
public void load() {
Map<String, RouteTable> remoteRouteTables = new HashMap<>();
all(RouteTable.class).forEach(tag -> {
RouteTable routeTable = resources.find(RouteTable.class, tag.resourceId())
.orElseGet(() -> resources.add(new RouteTable(tag.resourceId())));
routeTable.foundInRemote();
remoteRouteTables.put(tag.remoteResourceId, routeTable);
});
if (!remoteRouteTables.isEmpty())
loadRemoteRouteTables(remoteRouteTables);
}
private void loadRemoteRouteTables(Map<String, RouteTable> remoteRouteTables) {
for (com.amazonaws.services.ec2.model.RouteTable remoteRouteTable : AWS.vpc.describeRouteTables(remoteRouteTables.keySet())) {
RouteTable routeTable = remoteRouteTables.get(remoteRouteTable.getRouteTableId());
routeTable.remoteRouteTable = remoteRouteTable;
}
}
}