f354e5b456e07ef8dab7248049a865f14ec20698
[netvirt.git] / openstack / net-virt / src / main / java / org / opendaylight / netvirt / openstack / netvirt / translator / NeutronSecurityRule.java
1 /*
2  * Copyright (C) 2014 Red Hat, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.netvirt.openstack.netvirt.translator;
10
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;
17
18 /**
19  * See OpenStack Network API v2.0 Reference for description of
20  * annotated attributes. The current fields are as follows:
21  * <p>
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.
33  */
34
35 @XmlRootElement
36 @XmlAccessorType(XmlAccessType.NONE)
37
38 public class NeutronSecurityRule implements Serializable, INeutronObject {
39     private static final long serialVersionUID = 1L;
40
41     @XmlElement(name = "id")
42     String securityRuleUUID;
43
44     public static final String DIRECTION_EGRESS = "egress";
45     public static final String DIRECTION_INGRESS = "ingress";
46
47     @XmlElement(name = "direction")
48     String securityRuleDirection;
49
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";
54
55     @XmlElement(name = "protocol")
56     String securityRuleProtocol;
57
58     @XmlElement(name = "port_range_min")
59     Integer securityRulePortMin;
60
61     @XmlElement(name = "port_range_max")
62     Integer securityRulePortMax;
63
64     public static final String ETHERTYPE_IPV4 = "IPv4";
65     public static final String ETHERTYPE_IPV6 = "IPv6";
66
67     @XmlElement(name = "ethertype")
68     String securityRuleEthertype;
69
70     @XmlElement(name = "remote_ip_prefix")
71     String securityRuleRemoteIpPrefix;
72
73     @XmlElement(name = "remote_group_id")
74     String securityRemoteGroupID;
75
76     @XmlElement(name = "security_group_id")
77     String securityRuleGroupID;
78
79     @XmlElement(name = "tenant_id")
80     String securityRuleTenantID;
81
82     public NeutronSecurityRule() {
83     }
84
85     public String getID() {
86         return securityRuleUUID;
87     }
88
89     public void setID(String id) {
90         securityRuleUUID = id;
91     }
92
93     // @deprecated use getID()
94     public String getSecurityRuleUUID() {
95         return securityRuleUUID;
96     }
97
98     // @deprecated use setID()
99     public void setSecurityRuleUUID(String securityRuleUUID) {
100         this.securityRuleUUID = securityRuleUUID;
101     }
102
103     public String getSecurityRuleDirection() {
104         return securityRuleDirection;
105     }
106
107     public void setSecurityRuleDirection(String securityRuleDirection) {
108         this.securityRuleDirection = securityRuleDirection;
109     }
110
111     public String getSecurityRuleProtocol() {
112         return securityRuleProtocol;
113     }
114
115     public void setSecurityRuleProtocol(String securityRuleProtocol) {
116         this.securityRuleProtocol = securityRuleProtocol;
117     }
118
119     public Integer getSecurityRulePortMin() {
120         return securityRulePortMin;
121     }
122
123     public void setSecurityRulePortMin(Integer securityRulePortMin) {
124         this.securityRulePortMin = securityRulePortMin;
125     }
126
127     public Integer getSecurityRulePortMax() {
128         return securityRulePortMax;
129     }
130
131     public void setSecurityRulePortMax(Integer securityRulePortMax) {
132         this.securityRulePortMax = securityRulePortMax;
133     }
134
135     public String getSecurityRuleEthertype() {
136         return securityRuleEthertype;
137     }
138
139     public void setSecurityRuleEthertype(String securityRuleEthertype) {
140         this.securityRuleEthertype = securityRuleEthertype;
141     }
142
143     public String getSecurityRuleRemoteIpPrefix() {
144         return securityRuleRemoteIpPrefix;
145     }
146
147     public void setSecurityRuleRemoteIpPrefix(String securityRuleRemoteIpPrefix) {
148         this.securityRuleRemoteIpPrefix = securityRuleRemoteIpPrefix;
149     }
150
151     public String getSecurityRemoteGroupID() {
152         return securityRemoteGroupID;
153     }
154
155     public void setSecurityRemoteGroupID(String securityRemoteGroupID) {
156         this.securityRemoteGroupID = securityRemoteGroupID;
157     }
158
159     public String getSecurityRuleGroupID() {
160         return securityRuleGroupID;
161     }
162
163     public void setSecurityRuleGroupID(String securityRuleGroupID) {
164         this.securityRuleGroupID = securityRuleGroupID;
165     }
166
167     public String getSecurityRuleTenantID() {
168         return securityRuleTenantID;
169     }
170
171     public void setSecurityRuleTenantID(String securityRuleTenantID) {
172         this.securityRuleTenantID = securityRuleTenantID;
173     }
174
175     public NeutronSecurityRule extractFields(List<String> fields) {
176         NeutronSecurityRule ans = new NeutronSecurityRule();
177         for (String s : fields) {
178             switch (s) {
179                 case "id":
180                     ans.setID(this.getID());
181                     break;
182                 case "direction":
183                     ans.setSecurityRuleDirection(this.getSecurityRuleDirection());
184                     break;
185                 case "protocol":
186                     ans.setSecurityRuleProtocol(this.getSecurityRuleProtocol());
187                     break;
188                 case "port_range_min":
189                     ans.setSecurityRulePortMin(this.getSecurityRulePortMin());
190                     break;
191                 case "port_range_max":
192                     ans.setSecurityRulePortMax(this.getSecurityRulePortMax());
193                     break;
194                 case "ethertype":
195                     ans.setSecurityRuleEthertype(this.getSecurityRuleEthertype());
196                     break;
197                 case "remote_ip_prefix":
198                     ans.setSecurityRuleRemoteIpPrefix(this.getSecurityRuleRemoteIpPrefix());
199                     break;
200                 case "remote_group_id":
201                     ans.setSecurityRemoteGroupID(this.getSecurityRemoteGroupID());
202                     break;
203                 case "security_group_id":
204                     ans.setSecurityRuleGroupID(this.getSecurityRuleGroupID());
205                     break;
206                 case "tenant_id":
207                     ans.setSecurityRuleTenantID(this.getSecurityRuleTenantID());
208                     break;
209             }
210         }
211         return ans;
212     }
213
214     @Override
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 + '\'' +
227             '}';
228     }
229
230     public void initDefaults() {
231         //TODO verify no defaults values are nessecary required.
232     }
233 }