package io.fathom.cloud.compute.actions; import io.fathom.cloud.CloudException; import io.fathom.cloud.compute.scheduler.SchedulerHost; import java.util.Collections; import java.util.List; import java.util.Set; import com.google.common.collect.Lists; public class ConfigureIpset { private final ApplydContext applyd; private final SchedulerHost host; public ConfigureIpset(SchedulerHost host, ApplydContext applyd) { this.host = host; this.applyd = applyd; } public boolean updateConfig(long securityGroupId, Set<String> ipset) throws CloudException { boolean dirty = false; List<String> ips = Lists.newArrayList(ipset); Collections.sort(ips); String name = "sg-" + securityGroupId; StringBuilder s = new StringBuilder(); s.append("create " + name + " hash:ip family inet6 hashsize 1024 maxelem 65536\n"); for (String ip : ips) { s.append("add " + name + " " + ip + "\n"); } dirty |= applyd.updateConfig("ipset/" + name, s.toString()); return dirty; } }