/* * Copyright (C) 2014 Red Hat, Inc. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * */ package org.opendaylight.controller.networkconfig.neutron; import org.opendaylight.controller.configuration.ConfigurationObject; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; import java.util.Iterator; import java.util.List; /** * See OpenStack Network API v2.0 Reference for description of * annotated attributes. The current fields are as follows: *

* id uuid (String) UUID for the security group rule. * security_rule_id uuid (String) The security group to associate rule. * direction String Direction the VM traffic (ingress/egress). * security_group_id The security group to associate rule with. * protocol String IP Protocol (icmp, tcp, udp, etc). * port_range_min Integer Port at start of range * port_range_max Integer Port at end of range * ethertype String ethertype in L2 packet (IPv4, IPv6, etc) * remote_ip_prefix String (IP cidr) CIDR for address range. * remote_group_id uuid-str Source security group to apply to rule. * tenant_id uuid-str Owner of security rule. Admin only outside tenant. */ @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class NeutronSecurityRule extends ConfigurationObject implements Serializable { private static final long serialVersionUID = 1L; @XmlElement(name = "id") String securityRuleUUID; @XmlElement(name = "direction") String securityRuleDirection; @XmlElement(name = "protocol") String securityRuleProtocol; @XmlElement(name = "port_range_min") Integer securityRulePortMin; @XmlElement(name = " port_range_max") Integer securityRulePortMax; @XmlElement(name = "ethertype") String securityRuleEthertype; @XmlElement(name = "remote_ip_prefix") String securityRuleRemoteIpPrefix; @XmlElement(name = "remote_group_id") String securityRemoteGroupID; @XmlElement(name = "security_group_id") String securityRuleGroupID; @XmlElement(name = "tenant_id") String securityRuleTenantID; public NeutronSecurityRule() { List securityRules; } public String getSecurityRuleUUID() { return securityRuleUUID; } public void setSecurityRuleUUID(String securityRuleUUID) { this.securityRuleUUID = securityRuleUUID; } public String getSecurityRuleDirection() { return securityRuleDirection; } public void setSecurityRuleDirection(String securityRuleDirection) { this.securityRuleDirection = securityRuleDirection; } public String getSecurityRuleProtocol() { return securityRuleProtocol; } public void setSecurityRuleProtocol(String securityRuleProtocol) { this.securityRuleProtocol = securityRuleProtocol; } public Integer getSecurityRulePortMin() { return securityRulePortMin; } public void setSecurityRulePortMin(Integer securityRulePortMin) { this.securityRulePortMin = securityRulePortMin; } public Integer getSecurityRulePortMax() { return securityRulePortMax; } public void setSecurityRulePortMax(Integer securityRulePortMax) { this.securityRulePortMax = securityRulePortMax; } public String getSecurityRuleEthertype() { return securityRuleEthertype; } public void setSecurityRuleEthertype(String securityRuleEthertype) { this.securityRuleEthertype = securityRuleEthertype; } public String getSecurityRuleRemoteIpPrefix() { return securityRuleRemoteIpPrefix; } public void setSecurityRuleRemoteIpPrefix(String securityRuleRemoteIpPrefix) { this.securityRuleRemoteIpPrefix = securityRuleRemoteIpPrefix; } public String getSecurityRemoteGroupID() { return securityRemoteGroupID; } public void setSecurityRemoteGroupID(String securityRemoteGroupID) { this.securityRemoteGroupID = securityRemoteGroupID; } public String getSecurityRuleGroupID() { return securityRuleGroupID; } public void setSecurityRuleGroupID(String securityRuleGroupID) { this.securityRuleGroupID = securityRuleGroupID; } public String getSecurityRuleTenantID() { return securityRuleTenantID; } public void setSecurityRuleTenantID(String securityRuleTenantID) { this.securityRuleTenantID = securityRuleTenantID; } public NeutronSecurityRule extractFields(List fields) { NeutronSecurityRule ans = new NeutronSecurityRule(); Iterator i = fields.iterator(); while (i.hasNext()) { String s = i.next(); if (s.equals("id")) { ans.setSecurityRuleUUID(this.getSecurityRuleUUID()); } if (s.equals("direction")) { ans.setSecurityRuleDirection(this.getSecurityRuleDirection()); } if (s.equals("protocol")) { ans.setSecurityRuleProtocol(this.getSecurityRuleProtocol()); } if (s.equals("port_range_min")) { ans.setSecurityRulePortMin(this.getSecurityRulePortMin()); } if (s.equals("port_range_max")) { ans.setSecurityRulePortMax(this.getSecurityRulePortMax()); } if (s.equals("ethertype")) { ans.setSecurityRuleEthertype(this.getSecurityRuleEthertype()); } if (s.equals("remote_ip_prefix")) { ans.setSecurityRuleRemoteIpPrefix(this.getSecurityRuleRemoteIpPrefix()); } if (s.equals("remote_group_id")) { ans.setSecurityRemoteGroupID(this.getSecurityRemoteGroupID()); } if (s.equals("security_group_id")) { ans.setSecurityRuleGroupID(this.getSecurityRuleGroupID()); } if (s.equals("tenant_id")) { ans.setSecurityRuleTenantID(this.getSecurityRuleTenantID()); } } return ans; } @Override public String toString() { return "NeutronSecurityRule{" + "securityRuleUUID='" + securityRuleUUID + '\'' + ", securityRuleDirection='" + securityRuleDirection + '\'' + ", securityRuleProtocol='" + securityRuleProtocol + '\'' + ", securityRulePortMin=" + securityRulePortMin + ", securityRulePortMax=" + securityRulePortMax + ", securityRuleEthertype='" + securityRuleEthertype + '\'' + ", securityRuleRemoteIpPrefix='" + securityRuleRemoteIpPrefix + '\'' + ", securityRemoteGroupID=" + securityRemoteGroupID + ", securityRuleGroupID='" + securityRuleGroupID + '\'' + ", securityRuleTenantID='" + securityRuleTenantID + '\'' + '}'; } public void initDefaults() { //TODO verify no defaults values are nessecary required. } }