package io.fathom.cloud.compute.scheduler;
import io.fathom.cloud.CloudException;
import io.fathom.cloud.compute.services.SecurityGroups;
import io.fathom.cloud.protobuf.CloudModel.InstanceData;
import io.fathom.cloud.protobuf.CloudModel.SecurityGroupData;
import io.fathom.cloud.server.model.Project;
import java.io.IOException;
import java.util.List;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UpdateFirewallOperation extends SchedulerOperation {
private static final Logger log = LoggerFactory.getLogger(UpdateFirewallOperation.class);
@Inject
SecurityGroups securityGroups;
InstanceData instance;
private Project project;
private long hostId;
private List<SecurityGroupData> securityGroupList;
public void init(Project project, List<SecurityGroupData> securityGroupList, long hostId) {
this.project = project;
this.instance = null;
this.hostId = hostId;
this.securityGroupList = securityGroupList;
}
public void init(Project project, InstanceData instance) throws CloudException {
this.project = project;
this.instance = instance;
this.hostId = instance.getHostId();
this.securityGroupList = securityGroups.getSecurityGroups(project, instance);
}
@Override
public boolean run() throws CloudException, IOException {
SchedulerHost host = scheduler.findHost(hostId);
if (host == null) {
throw new IllegalStateException();
}
try (ConfigurationOperation config = host.startConfiguration()) {
config.configureFirewall(instance, securityGroupList);
config.applyChanges();
}
return true;
}
}