![JAR search and dependency download from the Maven repository](/logo.png)
org.openstack4j.openstack.compute.domain.NovaSecGroupExtension Maven / Gradle / Ivy
package org.openstack4j.openstack.compute.domain;
import java.util.List;
import org.openstack4j.model.common.Link;
import org.openstack4j.model.compute.IPProtocol;
import org.openstack4j.model.compute.SecGroupExtension;
import org.openstack4j.model.compute.builder.SecurityGroupRuleBuilder;
import org.openstack4j.openstack.common.GenericLink;
import org.openstack4j.openstack.common.ListResult;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.google.common.base.Objects;
/**
* A Security Group which is defined the the (os-security-groups) extension
*
* @author Jeremy Unruh
*/
@JsonRootName("security_group")
public class NovaSecGroupExtension implements SecGroupExtension {
private static final long serialVersionUID = 1L;
private String id;
private String name;
private String description;
@JsonProperty("tenant_id")
private String tenantId;
private List rules;
private List links;
/**
* Security Groups only need two fields populated when Created so instead of a builder the API can
* leverage this call to create a new Security Group
*
* @param name name of the security group
* @param description description of the security group
* @return
*/
public static NovaSecGroupExtension create(String name, String description) {
NovaSecGroupExtension sg = new NovaSecGroupExtension();
sg.name = name;
sg.description = description;
return sg;
}
/**
* {@inheritDoc}
*/
@Override
public String getId() {
return id;
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return name;
}
/**
* {@inheritDoc}
*/
@Override
public String getDescription() {
return description;
}
/**
* {@inheritDoc}
*/
@Override
public String getTenantId() {
return tenantId;
}
/**
* {@inheritDoc}
*/
@Override
public List extends Rule> getRules() {
return rules;
}
/**
* {@inheritDoc}
*/
@Override
public List extends Link> getLinks() {
return links;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return Objects.toStringHelper(this).omitNullValues()
.add("id", id).add("name", name).add("description", description)
.add("tenantId", tenantId).add("rules", rules).add("links", links)
.toString();
}
public static class SecurityGroups extends ListResult {
private static final long serialVersionUID = 1L;
@JsonProperty("security_groups")
private List groups;
@Override
protected List value() {
return groups;
}
}
/**
* Security Group Rule
*/
@JsonRootName("security_group_rule")
public static class SecurityGroupRule implements SecGroupExtension.Rule {
private static final long serialVersionUID = 1L;
private String id;
private String name;
@JsonProperty("parent_group_id")
private String parentGroupId;
@JsonProperty("from_port")
private Integer fromPort;
@JsonProperty("to_port")
private Integer toPort;
@JsonProperty("ip_protocol")
private IPProtocol ipProtocol;
@JsonProperty("ip_range")
private RuleIpRange ipRange;
private RuleGroup group;
// Used for Create Only
@JsonProperty("cidr")
String cidr;
@JsonProperty("group_id")
String groupId;
/**
* {@inheritDoc}
*/
@Override
public IPProtocol getIPProtocol() {
return (ipProtocol != null) ? ipProtocol : IPProtocol.UNRECOGNIZED;
}
/**
* {@inheritDoc}
*/
@Override
public Group getGroup() {
return group;
}
/**
* {@inheritDoc}
*/
@Override
public IpRange getRange() {
return ipRange;
}
/**
* {@inheritDoc}
*/
@Override
public int getToPort() {
return (toPort != null) ? toPort : 0;
}
/**
* {@inheritDoc}
*/
@Override
public int getFromPort() {
return (fromPort != null) ? fromPort : 0;
}
/**
* {@inheritDoc}
*/
@Override
public String getParentGroupId() {
return parentGroupId;
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return name;
}
/**
* {@inheritDoc}
*/
@Override
public String getId() {
return id;
}
public String toString() {
return Objects.toStringHelper("Rule").omitNullValues()
.add("id", id).add("name", name).add("parentGroupId", parentGroupId)
.add("fromPort", fromPort).add("toPort", toPort).add("ipProtocol", ipProtocol)
.add("range", ipRange).add("group", group)
.toString();
}
/**
* {@inheritDoc}
*/
@Override
public SecurityGroupRuleBuilder toBuilder() {
return new RuleConcreteBuilder(this);
}
public static SecurityGroupRuleBuilder builder() {
return new RuleConcreteBuilder();
}
public static class RuleConcreteBuilder implements SecurityGroupRuleBuilder
{
private SecurityGroupRule m;
RuleConcreteBuilder() {
this(new SecurityGroupRule());
}
RuleConcreteBuilder(SecurityGroupRule m) {
this.m = m;
}
@Override
public SecurityGroupRuleBuilder protocol(IPProtocol protocol) {
m.ipProtocol = protocol;
return this;
}
@Override
public SecurityGroupRuleBuilder range(int fromPort, int toPort) {
m.fromPort = fromPort;
m.toPort = toPort;
return this;
}
@Override
public SecurityGroupRuleBuilder cidr(String cidr) {
m.cidr = cidr;
return this;
}
@Override
public SecurityGroupRuleBuilder groupId(String groupId) {
m.groupId = groupId;
return this;
}
@Override
public SecurityGroupRuleBuilder parentGroupId(String parentGroupId) {
m.parentGroupId = parentGroupId;
return this;
}
@Override
public Rule build() {
return m;
}
@Override
public SecurityGroupRuleBuilder from(Rule in) {
m = (SecurityGroupRule) in;
return this;
}
}
/**
* Security Group Rule -> Group
*/
public static class RuleGroup implements Group {
private String name;
@JsonProperty("tenant_id")
private String tenantId;
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return name;
}
/**
* {@inheritDoc}
*/
@Override
public String getTenantId() {
return tenantId;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return Objects.toStringHelper(this).omitNullValues().add("name", name).add("tenantId", tenantId).toString();
}
}
/**
* Security Group Rule -> IP Range
*/
public static class RuleIpRange implements IpRange {
private String cidr;
/**
* {@inheritDoc}
*/
@Override
public String getCidr() {
return cidr;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return Objects.toStringHelper(this).add("cidr", cidr).toString();
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy