2 * Copyright (C) 2014 Red Hat, Inc.
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
10 package org.opendaylight.controller.networkconfig.neutron;
12 import org.opendaylight.controller.configuration.ConfigurationObject;
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;
18 import java.io.Serializable;
19 import java.util.Iterator;
20 import java.util.List;
23 * See OpenStack Network API v2.0 Reference for description of
24 * annotated attributes. The current fields are as follows:
26 * id uuid (String) UUID for the security group rule.
27 * security_rule_id uuid (String) The security group to associate rule.
28 * direction String Direction the VM traffic (ingress/egress).
29 * security_group_id The security group to associate rule with.
30 * protocol String IP Protocol (icmp, tcp, udp, etc).
31 * port_range_min Integer Port at start of range
32 * port_range_max Integer Port at end of range
33 * ethertype String ethertype in L2 packet (IPv4, IPv6, etc)
34 * remote_ip_prefix String (IP cidr) CIDR for address range.
35 * remote_group_id uuid-str Source security group to apply to rule.
36 * tenant_id uuid-str Owner of security rule. Admin only outside tenant.
40 @XmlAccessorType(XmlAccessType.NONE)
42 public class NeutronSecurityRule extends ConfigurationObject implements Serializable {
43 private static final long serialVersionUID = 1L;
45 @XmlElement(name = "id")
46 String securityRuleUUID;
48 @XmlElement(name = "direction")
49 String securityRuleDirection;
51 @XmlElement(name = "protocol")
52 String securityRuleProtocol;
54 @XmlElement(name = "port_range_min")
55 Integer securityRulePortMin;
57 @XmlElement(name = " port_range_max")
58 Integer securityRulePortMax;
60 @XmlElement(name = "ethertype")
61 String securityRuleEthertype;
63 @XmlElement(name = "remote_ip_prefix")
64 String securityRuleRemoteIpPrefix;
66 @XmlElement(name = "remote_group_id")
67 String securityRemoteGroupID;
69 @XmlElement(name = "security_group_id")
70 String securityRuleGroupID;
72 @XmlElement(name = "tenant_id")
73 String securityRuleTenantID;
75 public NeutronSecurityRule() {
76 List<NeutronSecurityRule> securityRules;
79 public String getSecurityRuleUUID() {
80 return securityRuleUUID;
83 public void setSecurityRuleUUID(String securityRuleUUID) {
84 this.securityRuleUUID = securityRuleUUID;
87 public String getSecurityRuleDirection() {
88 return securityRuleDirection;
91 public void setSecurityRuleDirection(String securityRuleDirection) {
92 this.securityRuleDirection = securityRuleDirection;
95 public String getSecurityRuleProtocol() {
96 return securityRuleProtocol;
99 public void setSecurityRuleProtocol(String securityRuleProtocol) {
100 this.securityRuleProtocol = securityRuleProtocol;
103 public Integer getSecurityRulePortMin() {
104 return securityRulePortMin;
107 public void setSecurityRulePortMin(Integer securityRulePortMin) {
108 this.securityRulePortMin = securityRulePortMin;
111 public Integer getSecurityRulePortMax() {
112 return securityRulePortMax;
115 public void setSecurityRulePortMax(Integer securityRulePortMax) {
116 this.securityRulePortMax = securityRulePortMax;
119 public String getSecurityRuleEthertype() {
120 return securityRuleEthertype;
123 public void setSecurityRuleEthertype(String securityRuleEthertype) {
124 this.securityRuleEthertype = securityRuleEthertype;
127 public String getSecurityRuleRemoteIpPrefix() {
128 return securityRuleRemoteIpPrefix;
131 public void setSecurityRuleRemoteIpPrefix(String securityRuleRemoteIpPrefix) {
132 this.securityRuleRemoteIpPrefix = securityRuleRemoteIpPrefix;
135 public String getSecurityRemoteGroupID() {
136 return securityRemoteGroupID;
139 public void setSecurityRemoteGroupID(String securityRemoteGroupID) {
140 this.securityRemoteGroupID = securityRemoteGroupID;
143 public String getSecurityRuleGroupID() {
144 return securityRuleGroupID;
147 public void setSecurityRuleGroupID(String securityRuleGroupID) {
148 this.securityRuleGroupID = securityRuleGroupID;
151 public String getSecurityRuleTenantID() {
152 return securityRuleTenantID;
155 public void setSecurityRuleTenantID(String securityRuleTenantID) {
156 this.securityRuleTenantID = securityRuleTenantID;
159 public NeutronSecurityRule extractFields(List<String> fields) {
160 NeutronSecurityRule ans = new NeutronSecurityRule();
161 Iterator<String> i = fields.iterator();
162 while (i.hasNext()) {
164 if (s.equals("id")) {
165 ans.setSecurityRuleUUID(this.getSecurityRuleUUID());
167 if (s.equals("direction")) {
168 ans.setSecurityRuleDirection(this.getSecurityRuleDirection());
170 if (s.equals("protocol")) {
171 ans.setSecurityRuleProtocol(this.getSecurityRuleProtocol());
173 if (s.equals("port_range_min")) {
174 ans.setSecurityRulePortMin(this.getSecurityRulePortMin());
176 if (s.equals("port_range_max")) {
177 ans.setSecurityRulePortMax(this.getSecurityRulePortMax());
179 if (s.equals("ethertype")) {
180 ans.setSecurityRuleEthertype(this.getSecurityRuleEthertype());
182 if (s.equals("remote_ip_prefix")) {
183 ans.setSecurityRuleRemoteIpPrefix(this.getSecurityRuleRemoteIpPrefix());
185 if (s.equals("remote_group_id")) {
186 ans.setSecurityRemoteGroupID(this.getSecurityRemoteGroupID());
188 if (s.equals("security_group_id")) {
189 ans.setSecurityRuleGroupID(this.getSecurityRuleGroupID());
191 if (s.equals("tenant_id")) {
192 ans.setSecurityRuleTenantID(this.getSecurityRuleTenantID());
199 public String toString() {
200 return "NeutronSecurityRule{" +
201 "securityRuleUUID='" + securityRuleUUID + '\'' +
202 ", securityRuleDirection='" + securityRuleDirection + '\'' +
203 ", securityRuleProtocol='" + securityRuleProtocol + '\'' +
204 ", securityRulePortMin=" + securityRulePortMin +
205 ", securityRulePortMax=" + securityRulePortMax +
206 ", securityRuleEthertype='" + securityRuleEthertype + '\'' +
207 ", securityRuleRemoteIpPrefix='" + securityRuleRemoteIpPrefix + '\'' +
208 ", securityRemoteGroupID=" + securityRemoteGroupID +
209 ", securityRuleGroupID='" + securityRuleGroupID + '\'' +
210 ", securityRuleTenantID='" + securityRuleTenantID + '\'' +
214 public void initDefaults() {
215 //TODO verify no defaults values are nessecary required.