2 * Copyright (c) 2014, 2015 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.neutron.transcriber;
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
17 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
18 import org.opendaylight.neutron.spi.INeutronFirewallRuleCRUD;
19 import org.opendaylight.neutron.spi.INeutronObject;
20 import org.opendaylight.neutron.spi.NeutronFirewallRule;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev141002.rules.attributes.FirewallRules;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev141002.rules.attributes.firewall.rules.FirewallRule;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev141002.rules.attributes.firewall.rules.FirewallRuleBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.osgi.framework.BundleContext;
31 import org.osgi.framework.ServiceRegistration;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
35 public class NeutronFirewallRuleInterface extends AbstractNeutronInterface<FirewallRule,NeutronFirewallRule> implements INeutronFirewallRuleCRUD {
36 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronFirewallRuleInterface.class);
38 NeutronFirewallRuleInterface(ProviderContext providerContext) {
39 super(providerContext);
43 public boolean neutronFirewallRuleExists(String uuid) {
48 public NeutronFirewallRule getNeutronFirewallRule(String uuid) {
53 public List<NeutronFirewallRule> getAll() {
54 Set<NeutronFirewallRule> allFirewallRules = new HashSet<NeutronFirewallRule>();
55 FirewallRules rules = readMd(createInstanceIdentifier());
57 for (FirewallRule rule: rules.getFirewallRule()) {
58 allFirewallRules.add(fromMd(rule));
61 LOGGER.debug("Exiting getFirewallRules, Found {} OpenStackFirewallRule", allFirewallRules.size());
62 List<NeutronFirewallRule> ans = new ArrayList<NeutronFirewallRule>();
63 ans.addAll(allFirewallRules);
68 public List<NeutronFirewallRule> getAllNeutronFirewallRules() {
73 public boolean addNeutronFirewallRule(NeutronFirewallRule input) {
78 public boolean removeNeutronFirewallRule(String uuid) {
83 public boolean updateNeutronFirewallRule(String uuid, NeutronFirewallRule delta) {
84 return update(uuid, delta);
88 public boolean neutronFirewallRuleInUse(String firewallRuleUUID) {
89 return !exists(firewallRuleUUID);
93 protected InstanceIdentifier<FirewallRule> createInstanceIdentifier(FirewallRule item) {
94 return InstanceIdentifier.create(Neutron.class)
95 .child(FirewallRules.class)
96 .child(FirewallRule.class, item.getKey());
99 protected InstanceIdentifier<FirewallRules> createInstanceIdentifier() {
100 return InstanceIdentifier.create(Neutron.class)
101 .child(FirewallRules.class);
104 protected NeutronFirewallRule fromMd(FirewallRule rule) {
105 NeutronFirewallRule answer = new NeutronFirewallRule();
106 if (rule.getUuid() != null) {
107 answer.setID(rule.getUuid().getValue());
109 if (rule.getName() != null) {
110 answer.setFirewallRuleName(rule.getName());
112 if (rule.getTenantId() != null) {
113 answer.setFirewallRuleTenantID(rule.getTenantId().getValue().replace("-",""));
115 if (rule.getDescr() != null) {
116 answer.setFirewallRuleDescription(rule.getDescr());
118 if (rule.getStatus() != null) {
119 answer.setFirewallRuleStatus(rule.getStatus());
121 if (rule.isShared() != null) {
122 answer.setFirewallRuleIsShared(rule.isShared());
124 if (rule.isEnabled() != null) {
125 answer.setFirewallRuleIsEnabled(rule.isEnabled());
127 if (rule.getFirewallPolicyId() != null) {
128 answer.setFirewallRulePolicyID(rule.getFirewallPolicyId().getValue());
130 if (rule.getProtocol() != null) {
131 answer.setFirewallRuleProtocol(rule.getProtocol());
133 if (rule.getIpVersion() != null) {
134 answer.setFirewallRuleIpVer(rule.getIpVersion().intValue());
136 if (rule.getSourceIpAddr() != null) {
137 answer.setFirewallRuleSrcIpAddr(String.valueOf(rule.getSourceIpAddr().getValue()));
139 if (rule.getDestinationIpAddr() != null) {
140 answer.setFirewallRuleDstIpAddr(String.valueOf(rule.getDestinationIpAddr().getValue()));
142 if (rule.getSourcePort() != null) {
143 answer.setFirewallRuleSrcPort(rule.getSourcePort().intValue());
145 if (rule.getDestinationPort() != null) {
146 answer.setFirewallRuleDstPort(rule.getDestinationPort().intValue());
148 if (rule.getPosition() != null) {
149 answer.setFirewallRulePosition(rule.getPosition().intValue());
151 if (rule.getAction() != null) {
152 answer.setFirewallRuleAction(rule.getAction());
158 protected FirewallRule toMd(NeutronFirewallRule rule) {
159 FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
160 if (rule.getID() != null) {
161 ruleBuilder.setUuid(toUuid(rule.getID()));
163 if (rule.getFirewallRuleName() != null) {
164 ruleBuilder.setName(rule.getFirewallRuleName());
166 if (rule.getFirewallRuleTenantID() != null) {
167 ruleBuilder.setTenantId(toUuid(rule.getFirewallRuleTenantID()));
169 if (rule.getFirewallRuleDescription() != null) {
170 ruleBuilder.setDescr(rule.getFirewallRuleDescription());
172 if (rule.getFirewallRuleStatus() != null) {
173 ruleBuilder.setStatus(rule.getFirewallRuleStatus());
175 if (rule.getFirewallRuleIsShared() != null) {
176 ruleBuilder.setShared(rule.getFirewallRuleIsShared());
178 if (rule.getFirewallRuleIsEnabled() != null) {
179 ruleBuilder.setEnabled(rule.getFirewallRuleIsEnabled());
181 if (rule.getFirewallRulePolicyID() != null) {
182 ruleBuilder.setFirewallPolicyId(toUuid(rule.getFirewallRulePolicyID()));
184 if (rule.getFirewallRuleProtocol() != null) {
185 ruleBuilder.setProtocol(rule.getFirewallRuleProtocol());
187 if (rule.getFirewallRuleIpVer() != null) {
188 ruleBuilder.setIpVersion(rule.getFirewallRuleIpVer().shortValue());
190 if (rule.getFirewallRuleSrcIpAddr() != null) {
191 IpAddress ipAddress = new IpAddress(rule.getFirewallRuleSrcIpAddr().toCharArray());
192 ruleBuilder.setSourceIpAddr(ipAddress);
194 if (rule.getFirewallRuleDstIpAddr() != null) {
195 IpAddress ipAddress = new IpAddress(rule.getFirewallRuleDstIpAddr().toCharArray());
196 ruleBuilder.setDestinationIpAddr(ipAddress);
198 if (rule.getFirewallRuleSrcPort() != null) {
199 ruleBuilder.setSourcePort(rule.getFirewallRuleSrcPort().shortValue());
201 if (rule.getFirewallRuleDstPort() != null) {
202 ruleBuilder.setDestinationPort(rule.getFirewallRuleDstPort().shortValue());
204 if (rule.getFirewallRulePosition() != null) {
205 ruleBuilder.setPosition(rule.getFirewallRulePosition().shortValue());
207 if (rule.getFirewallRuleAction() != null) {
208 ruleBuilder.setAction(rule.getFirewallRuleAction());
210 return ruleBuilder.build();
214 protected FirewallRule toMd(String uuid) {
215 FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
216 ruleBuilder.setUuid(toUuid(uuid));
217 return ruleBuilder.build();
220 public static void registerNewInterface(BundleContext context,
221 ProviderContext providerContext,
222 List<ServiceRegistration<?>> registrations) {
223 NeutronFirewallRuleInterface neutronFirewallRuleInterface = new NeutronFirewallRuleInterface(providerContext);
224 ServiceRegistration<INeutronFirewallRuleCRUD> neutronFirewallRuleInterfaceRegistration = context.registerService(INeutronFirewallRuleCRUD.class, neutronFirewallRuleInterface, null);
225 if(neutronFirewallRuleInterfaceRegistration != null) {
226 registrations.add(neutronFirewallRuleInterfaceRegistration);