package core.aws.task.ec2;
import com.amazonaws.services.ec2.model.IpPermission;
import com.amazonaws.services.ec2.model.UserIdGroupPair;
import core.aws.client.AWS;
import core.aws.env.Context;
import core.aws.resource.ec2.SecurityGroup;
import core.aws.util.ToStringHelper;
import core.aws.workflow.Action;
import core.aws.workflow.Task;
import java.util.List;
/**
* @author neo
*/
@Action("del-sg-rule")
public class DeleteSGRuleTask extends Task<SecurityGroup> {
public final List<IpPermission> deletedIngressRules;
public DeleteSGRuleTask(SecurityGroup securityGroup, List<IpPermission> deletedIngressRules) {
super(securityGroup);
this.deletedIngressRules = deletedIngressRules;
}
@Override
public void execute(Context context) throws Exception {
for (IpPermission permission : deletedIngressRules) {
for (UserIdGroupPair userGroup : permission.getUserIdGroupPairs()) {
// it's not allowed to put both groupName and groupId in request
userGroup.setGroupName(null);
}
}
AWS.ec2.deleteSGIngressRules(resource.remoteSecurityGroup.getGroupId(), deletedIngressRules);
}
@Override
public String toString() {
return new ToStringHelper(this)
.add(resource)
.add("remoteSG", resource.remoteSecurityGroup.getGroupName())
.add("remoteRules", deletedIngressRules)
.toString();
}
}