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, FirewallRules, 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 protected List<FirewallRule> getDataObjectList(FirewallRules rules) {
54 return rules.getFirewallRule();
58 public List<NeutronFirewallRule> getAllNeutronFirewallRules() {
63 public boolean addNeutronFirewallRule(NeutronFirewallRule input) {
68 public boolean removeNeutronFirewallRule(String uuid) {
73 public boolean updateNeutronFirewallRule(String uuid, NeutronFirewallRule delta) {
74 return update(uuid, delta);
78 public boolean neutronFirewallRuleInUse(String firewallRuleUUID) {
79 return !exists(firewallRuleUUID);
83 protected InstanceIdentifier<FirewallRule> createInstanceIdentifier(FirewallRule item) {
84 return InstanceIdentifier.create(Neutron.class)
85 .child(FirewallRules.class)
86 .child(FirewallRule.class, item.getKey());
90 protected InstanceIdentifier<FirewallRules> createInstanceIdentifier() {
91 return InstanceIdentifier.create(Neutron.class)
92 .child(FirewallRules.class);
95 protected NeutronFirewallRule fromMd(FirewallRule rule) {
96 NeutronFirewallRule answer = new NeutronFirewallRule();
97 if (rule.getUuid() != null) {
98 answer.setID(rule.getUuid().getValue());
100 if (rule.getName() != null) {
101 answer.setFirewallRuleName(rule.getName());
103 if (rule.getTenantId() != null) {
104 answer.setTenantID(rule.getTenantId());
106 if (rule.getDescr() != null) {
107 answer.setFirewallRuleDescription(rule.getDescr());
109 if (rule.getStatus() != null) {
110 answer.setFirewallRuleStatus(rule.getStatus());
112 if (rule.isShared() != null) {
113 answer.setFirewallRuleIsShared(rule.isShared());
115 if (rule.isEnabled() != null) {
116 answer.setFirewallRuleIsEnabled(rule.isEnabled());
118 if (rule.getFirewallPolicyId() != null) {
119 answer.setFirewallRulePolicyID(rule.getFirewallPolicyId().getValue());
121 if (rule.getProtocol() != null) {
122 answer.setFirewallRuleProtocol(rule.getProtocol());
124 if (rule.getIpVersion() != null) {
125 answer.setFirewallRuleIpVer(rule.getIpVersion().intValue());
127 if (rule.getSourceIpAddr() != null) {
128 answer.setFirewallRuleSrcIpAddr(String.valueOf(rule.getSourceIpAddr().getValue()));
130 if (rule.getDestinationIpAddr() != null) {
131 answer.setFirewallRuleDstIpAddr(String.valueOf(rule.getDestinationIpAddr().getValue()));
133 if (rule.getSourcePort() != null) {
134 answer.setFirewallRuleSrcPort(rule.getSourcePort().intValue());
136 if (rule.getDestinationPort() != null) {
137 answer.setFirewallRuleDstPort(rule.getDestinationPort().intValue());
139 if (rule.getPosition() != null) {
140 answer.setFirewallRulePosition(rule.getPosition().intValue());
142 if (rule.getAction() != null) {
143 answer.setFirewallRuleAction(rule.getAction());
149 protected FirewallRule toMd(NeutronFirewallRule rule) {
150 FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
151 if (rule.getID() != null) {
152 ruleBuilder.setUuid(toUuid(rule.getID()));
154 if (rule.getFirewallRuleName() != null) {
155 ruleBuilder.setName(rule.getFirewallRuleName());
157 if (rule.getTenantID() != null) {
158 ruleBuilder.setTenantId(toUuid(rule.getTenantID()));
160 if (rule.getFirewallRuleDescription() != null) {
161 ruleBuilder.setDescr(rule.getFirewallRuleDescription());
163 if (rule.getFirewallRuleStatus() != null) {
164 ruleBuilder.setStatus(rule.getFirewallRuleStatus());
166 if (rule.getFirewallRuleIsShared() != null) {
167 ruleBuilder.setShared(rule.getFirewallRuleIsShared());
169 if (rule.getFirewallRuleIsEnabled() != null) {
170 ruleBuilder.setEnabled(rule.getFirewallRuleIsEnabled());
172 if (rule.getFirewallRulePolicyID() != null) {
173 ruleBuilder.setFirewallPolicyId(toUuid(rule.getFirewallRulePolicyID()));
175 if (rule.getFirewallRuleProtocol() != null) {
176 ruleBuilder.setProtocol(rule.getFirewallRuleProtocol());
178 if (rule.getFirewallRuleIpVer() != null) {
179 ruleBuilder.setIpVersion(rule.getFirewallRuleIpVer().shortValue());
181 if (rule.getFirewallRuleSrcIpAddr() != null) {
182 IpAddress ipAddress = new IpAddress(rule.getFirewallRuleSrcIpAddr().toCharArray());
183 ruleBuilder.setSourceIpAddr(ipAddress);
185 if (rule.getFirewallRuleDstIpAddr() != null) {
186 IpAddress ipAddress = new IpAddress(rule.getFirewallRuleDstIpAddr().toCharArray());
187 ruleBuilder.setDestinationIpAddr(ipAddress);
189 if (rule.getFirewallRuleSrcPort() != null) {
190 ruleBuilder.setSourcePort(rule.getFirewallRuleSrcPort().shortValue());
192 if (rule.getFirewallRuleDstPort() != null) {
193 ruleBuilder.setDestinationPort(rule.getFirewallRuleDstPort().shortValue());
195 if (rule.getFirewallRulePosition() != null) {
196 ruleBuilder.setPosition(rule.getFirewallRulePosition().shortValue());
198 if (rule.getFirewallRuleAction() != null) {
199 ruleBuilder.setAction(rule.getFirewallRuleAction());
201 return ruleBuilder.build();
205 protected FirewallRule toMd(String uuid) {
206 FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
207 ruleBuilder.setUuid(toUuid(uuid));
208 return ruleBuilder.build();
211 public static void registerNewInterface(BundleContext context,
212 ProviderContext providerContext,
213 List<ServiceRegistration<?>> registrations) {
214 NeutronFirewallRuleInterface neutronFirewallRuleInterface = new NeutronFirewallRuleInterface(providerContext);
215 ServiceRegistration<INeutronFirewallRuleCRUD> neutronFirewallRuleInterfaceRegistration = context.registerService(INeutronFirewallRuleCRUD.class, neutronFirewallRuleInterface, null);
216 if(neutronFirewallRuleInterfaceRegistration != null) {
217 registrations.add(neutronFirewallRuleInterfaceRegistration);