2 * Copyright (C) 2014 Red Hat, Inc. and others. 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.netvirt.openstack.netvirt.translator;
11 import javax.xml.bind.annotation.XmlAccessType;
12 import javax.xml.bind.annotation.XmlAccessorType;
13 import javax.xml.bind.annotation.XmlElement;
14 import javax.xml.bind.annotation.XmlRootElement;
15 import java.io.Serializable;
16 import java.util.List;
19 * See OpenStack Network API v2.0 Reference for description of
20 * annotated attributes. The current fields are as follows:
22 * id uuid (String) UUID for the security group rule.
23 * security_rule_id uuid (String) The security group to associate 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).
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)
38 public class NeutronSecurityRule implements Serializable, INeutronObject {
39 private static final long serialVersionUID = 1L;
41 @XmlElement(name = "id")
42 String securityRuleUUID;
44 public static final String DIRECTION_EGRESS = "egress";
45 public static final String DIRECTION_INGRESS = "ingress";
47 @XmlElement(name = "direction")
48 String securityRuleDirection;
50 public static final String PROTOCOL_ICMP = "icmp";
51 public static final String PROTOCOL_TCP = "tcp";
52 public static final String PROTOCOL_UDP = "udp";
53 public static final String PROTOCOL_ICMPV6 = "icmpv6";
55 @XmlElement(name = "protocol")
56 String securityRuleProtocol;
58 @XmlElement(name = "port_range_min")
59 Integer securityRulePortMin;
61 @XmlElement(name = "port_range_max")
62 Integer securityRulePortMax;
64 public static final String ETHERTYPE_IPV4 = "IPv4";
65 public static final String ETHERTYPE_IPV6 = "IPv6";
67 @XmlElement(name = "ethertype")
68 String securityRuleEthertype;
70 @XmlElement(name = "remote_ip_prefix")
71 String securityRuleRemoteIpPrefix;
73 @XmlElement(name = "remote_group_id")
74 String securityRemoteGroupID;
76 @XmlElement(name = "security_group_id")
77 String securityRuleGroupID;
79 @XmlElement(name = "tenant_id")
80 String securityRuleTenantID;
82 public NeutronSecurityRule() {
85 public String getID() {
86 return securityRuleUUID;
89 public void setID(String id) {
90 securityRuleUUID = id;
93 // @deprecated use getID()
94 public String getSecurityRuleUUID() {
95 return securityRuleUUID;
98 // @deprecated use setID()
99 public void setSecurityRuleUUID(String securityRuleUUID) {
100 this.securityRuleUUID = securityRuleUUID;
103 public String getSecurityRuleDirection() {
104 return securityRuleDirection;
107 public void setSecurityRuleDirection(String securityRuleDirection) {
108 this.securityRuleDirection = securityRuleDirection;
111 public String getSecurityRuleProtocol() {
112 return securityRuleProtocol;
115 public void setSecurityRuleProtocol(String securityRuleProtocol) {
116 this.securityRuleProtocol = securityRuleProtocol;
119 public Integer getSecurityRulePortMin() {
120 return securityRulePortMin;
123 public void setSecurityRulePortMin(Integer securityRulePortMin) {
124 this.securityRulePortMin = securityRulePortMin;
127 public Integer getSecurityRulePortMax() {
128 return securityRulePortMax;
131 public void setSecurityRulePortMax(Integer securityRulePortMax) {
132 this.securityRulePortMax = securityRulePortMax;
135 public String getSecurityRuleEthertype() {
136 return securityRuleEthertype;
139 public void setSecurityRuleEthertype(String securityRuleEthertype) {
140 this.securityRuleEthertype = securityRuleEthertype;
143 public String getSecurityRuleRemoteIpPrefix() {
144 return securityRuleRemoteIpPrefix;
147 public void setSecurityRuleRemoteIpPrefix(String securityRuleRemoteIpPrefix) {
148 this.securityRuleRemoteIpPrefix = securityRuleRemoteIpPrefix;
151 public String getSecurityRemoteGroupID() {
152 return securityRemoteGroupID;
155 public void setSecurityRemoteGroupID(String securityRemoteGroupID) {
156 this.securityRemoteGroupID = securityRemoteGroupID;
159 public String getSecurityRuleGroupID() {
160 return securityRuleGroupID;
163 public void setSecurityRuleGroupID(String securityRuleGroupID) {
164 this.securityRuleGroupID = securityRuleGroupID;
167 public String getSecurityRuleTenantID() {
168 return securityRuleTenantID;
171 public void setSecurityRuleTenantID(String securityRuleTenantID) {
172 this.securityRuleTenantID = securityRuleTenantID;
175 public NeutronSecurityRule extractFields(List<String> fields) {
176 NeutronSecurityRule ans = new NeutronSecurityRule();
177 for (String s : fields) {
180 ans.setID(this.getID());
183 ans.setSecurityRuleDirection(this.getSecurityRuleDirection());
186 ans.setSecurityRuleProtocol(this.getSecurityRuleProtocol());
188 case "port_range_min":
189 ans.setSecurityRulePortMin(this.getSecurityRulePortMin());
191 case "port_range_max":
192 ans.setSecurityRulePortMax(this.getSecurityRulePortMax());
195 ans.setSecurityRuleEthertype(this.getSecurityRuleEthertype());
197 case "remote_ip_prefix":
198 ans.setSecurityRuleRemoteIpPrefix(this.getSecurityRuleRemoteIpPrefix());
200 case "remote_group_id":
201 ans.setSecurityRemoteGroupID(this.getSecurityRemoteGroupID());
203 case "security_group_id":
204 ans.setSecurityRuleGroupID(this.getSecurityRuleGroupID());
207 ans.setSecurityRuleTenantID(this.getSecurityRuleTenantID());
215 public String toString() {
216 return "NeutronSecurityRule{" +
217 "securityRuleUUID='" + securityRuleUUID + '\'' +
218 ", securityRuleDirection='" + securityRuleDirection + '\'' +
219 ", securityRuleProtocol='" + securityRuleProtocol + '\'' +
220 ", securityRulePortMin=" + securityRulePortMin +
221 ", securityRulePortMax=" + securityRulePortMax +
222 ", securityRuleEthertype='" + securityRuleEthertype + '\'' +
223 ", securityRuleRemoteIpPrefix='" + securityRuleRemoteIpPrefix + '\'' +
224 ", securityRemoteGroupID=" + securityRemoteGroupID +
225 ", securityRuleGroupID='" + securityRuleGroupID + '\'' +
226 ", securityRuleTenantID='" + securityRuleTenantID + '\'' +
230 public void initDefaults() {
231 //TODO verify no defaults values are nessecary required.