2 * Copyright (C) 2014 Red Hat, Inc. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.neutron.spi;
11 import java.io.Serializable;
12 import java.util.Iterator;
13 import java.util.List;
14 import javax.xml.bind.annotation.XmlAccessType;
15 import javax.xml.bind.annotation.XmlAccessorType;
16 import javax.xml.bind.annotation.XmlElement;
17 import javax.xml.bind.annotation.XmlRootElement;
20 * See OpenStack Network API v2.0 Reference for description of
21 * annotated attributes. The current fields are as follows:
23 * id uuid (String) UUID for the security group rule.
24 * direction String Direction the VM traffic (ingress/egress).
25 * security_group_id The security group to associate rule with.
26 * protocol String IP Protocol (icmp, tcp, udp, etc) or uint8.
27 * port_range_min Integer Port at start of range
28 * port_range_max Integer Port at end of range
29 * ethertype String ethertype in L2 packet (IPv4, IPv6, etc)
30 * remote_ip_prefix String (IP cidr) CIDR for address range.
31 * remote_group_id uuid-str Source security group to apply to rule.
32 * tenant_id uuid-str Owner of security rule. Admin only outside tenant.
36 @XmlAccessorType(XmlAccessType.NONE)
37 public class NeutronSecurityRule extends NeutronObject<NeutronSecurityRule>
38 implements Serializable, INeutronObject<NeutronSecurityRule> {
39 private static final long serialVersionUID = 1L;
41 @XmlElement(name = "direction")
42 String securityRuleDirection;
44 @XmlElement(name = "protocol")
45 String securityRuleProtocol;
47 @XmlElement(name = "port_range_min")
48 Integer securityRulePortMin;
50 @XmlElement(name = "port_range_max")
51 Integer securityRulePortMax;
53 @XmlElement(name = "ethertype")
54 String securityRuleEthertype;
56 @XmlElement(name = "remote_ip_prefix")
57 String securityRuleRemoteIpPrefix;
59 @XmlElement(name = "remote_group_id")
60 String securityRemoteGroupID;
62 @XmlElement(name = "security_group_id")
63 String securityRuleGroupID;
65 public NeutronSecurityRule() {
68 public String getSecurityRuleDirection() {
69 return securityRuleDirection;
72 public void setSecurityRuleDirection(String securityRuleDirection) {
73 this.securityRuleDirection = securityRuleDirection;
76 public String getSecurityRuleProtocol() {
77 return securityRuleProtocol;
80 public void setSecurityRuleProtocol(String securityRuleProtocol) {
81 this.securityRuleProtocol = securityRuleProtocol;
84 public Integer getSecurityRulePortMin() {
85 return securityRulePortMin;
88 public void setSecurityRulePortMin(Integer securityRulePortMin) {
89 this.securityRulePortMin = securityRulePortMin;
92 public Integer getSecurityRulePortMax() {
93 return securityRulePortMax;
96 public void setSecurityRulePortMax(Integer securityRulePortMax) {
97 this.securityRulePortMax = securityRulePortMax;
100 public String getSecurityRuleEthertype() {
101 return securityRuleEthertype;
104 public void setSecurityRuleEthertype(String securityRuleEthertype) {
105 this.securityRuleEthertype = securityRuleEthertype;
108 public String getSecurityRuleRemoteIpPrefix() {
109 return securityRuleRemoteIpPrefix;
112 public void setSecurityRuleRemoteIpPrefix(String securityRuleRemoteIpPrefix) {
113 this.securityRuleRemoteIpPrefix = securityRuleRemoteIpPrefix;
116 public String getSecurityRemoteGroupID() {
117 return securityRemoteGroupID;
120 public void setSecurityRemoteGroupID(String securityRemoteGroupID) {
121 this.securityRemoteGroupID = securityRemoteGroupID;
124 public String getSecurityRuleGroupID() {
125 return securityRuleGroupID;
128 public void setSecurityRuleGroupID(String securityRuleGroupID) {
129 this.securityRuleGroupID = securityRuleGroupID;
132 public NeutronSecurityRule extractFields(List<String> fields) {
133 NeutronSecurityRule ans = new NeutronSecurityRule();
134 Iterator<String> i = fields.iterator();
135 while (i.hasNext()) {
137 if (s.equals("id")) {
138 ans.setID(this.getID());
140 if (s.equals("direction")) {
141 ans.setSecurityRuleDirection(this.getSecurityRuleDirection());
143 if (s.equals("protocol")) {
144 ans.setSecurityRuleProtocol(this.getSecurityRuleProtocol());
146 if (s.equals("port_range_min")) {
147 ans.setSecurityRulePortMin(this.getSecurityRulePortMin());
149 if (s.equals("port_range_max")) {
150 ans.setSecurityRulePortMax(this.getSecurityRulePortMax());
152 if (s.equals("ethertype")) {
153 ans.setSecurityRuleEthertype(this.getSecurityRuleEthertype());
155 if (s.equals("remote_ip_prefix")) {
156 ans.setSecurityRuleRemoteIpPrefix(this.getSecurityRuleRemoteIpPrefix());
158 if (s.equals("remote_group_id")) {
159 ans.setSecurityRemoteGroupID(this.getSecurityRemoteGroupID());
161 if (s.equals("security_group_id")) {
162 ans.setSecurityRuleGroupID(this.getSecurityRuleGroupID());
164 if (s.equals("tenant_id")) {
165 ans.setTenantID(this.getTenantID());
172 public String toString() {
173 return "NeutronSecurityRule{" + "securityRuleUUID='" + uuid + '\'' + ", securityRuleDirection='"
174 + securityRuleDirection + '\'' + ", securityRuleProtocol='" + securityRuleProtocol + '\''
175 + ", securityRulePortMin=" + securityRulePortMin + ", securityRulePortMax=" + securityRulePortMax
176 + ", securityRuleEthertype='" + securityRuleEthertype + '\'' + ", securityRuleRemoteIpPrefix='"
177 + securityRuleRemoteIpPrefix + '\'' + ", securityRemoteGroupID=" + securityRemoteGroupID
178 + ", securityRuleGroupID='" + securityRuleGroupID + '\'' + ", securityRuleTenantID='" + tenantID + '\''
183 public void initDefaults() {
184 //TODO verify no defaults values are nessecary required.