Merge "Fixes Bug 4379"
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronFirewallRuleInterface.java
1 /*
2  * Copyright (c) 2014, 2015 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.neutron.transcriber;
10
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
15 import java.util.Set;
16
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;
21
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;
28
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;
34
35 public class NeutronFirewallRuleInterface extends AbstractNeutronInterface<FirewallRule, FirewallRules, NeutronFirewallRule> implements INeutronFirewallRuleCRUD {
36     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronFirewallRuleInterface.class);
37
38     NeutronFirewallRuleInterface(ProviderContext providerContext) {
39         super(providerContext);
40     }
41
42     @Override
43     public boolean neutronFirewallRuleExists(String uuid) {
44         return exists(uuid);
45     }
46
47     @Override
48     public NeutronFirewallRule getNeutronFirewallRule(String uuid) {
49         return get(uuid);
50     }
51
52     @Override
53     protected List<FirewallRule> getDataObjectList(FirewallRules rules) {
54         return rules.getFirewallRule();
55     }
56
57     @Override
58     public List<NeutronFirewallRule> getAllNeutronFirewallRules() {
59         return getAll();
60     }
61
62     @Override
63     public boolean addNeutronFirewallRule(NeutronFirewallRule input) {
64         return add(input);
65     }
66
67     @Override
68     public boolean removeNeutronFirewallRule(String uuid) {
69         return remove(uuid);
70     }
71
72     @Override
73     public boolean updateNeutronFirewallRule(String uuid, NeutronFirewallRule delta) {
74         return update(uuid, delta);
75     }
76
77     @Override
78     public boolean neutronFirewallRuleInUse(String firewallRuleUUID) {
79         return !exists(firewallRuleUUID);
80     }
81
82     @Override
83     protected InstanceIdentifier<FirewallRule> createInstanceIdentifier(FirewallRule item) {
84         return InstanceIdentifier.create(Neutron.class)
85                 .child(FirewallRules.class)
86                 .child(FirewallRule.class, item.getKey());
87     }
88
89     @Override
90     protected InstanceIdentifier<FirewallRules> createInstanceIdentifier() {
91         return InstanceIdentifier.create(Neutron.class)
92                 .child(FirewallRules.class);
93     }
94
95     protected NeutronFirewallRule fromMd(FirewallRule rule) {
96         NeutronFirewallRule answer = new NeutronFirewallRule();
97         if (rule.getUuid() != null) {
98             answer.setID(rule.getUuid().getValue());
99         }
100         if (rule.getName() != null) {
101             answer.setFirewallRuleName(rule.getName());
102         }
103         if (rule.getTenantId() != null) {
104             answer.setTenantID(rule.getTenantId());
105         }
106         if (rule.getDescr() != null) {
107             answer.setFirewallRuleDescription(rule.getDescr());
108         }
109         if (rule.getStatus() != null) {
110             answer.setFirewallRuleStatus(rule.getStatus());
111         }
112         if (rule.isShared() != null) {
113             answer.setFirewallRuleIsShared(rule.isShared());
114         }
115         if (rule.isEnabled() != null) {
116             answer.setFirewallRuleIsEnabled(rule.isEnabled());
117         }
118         if (rule.getFirewallPolicyId() != null) {
119             answer.setFirewallRulePolicyID(rule.getFirewallPolicyId().getValue());
120         }
121         if (rule.getProtocol() != null) {
122             answer.setFirewallRuleProtocol(rule.getProtocol());
123         }
124         if (rule.getIpVersion() != null) {
125             answer.setFirewallRuleIpVer(rule.getIpVersion().intValue());
126         }
127         if (rule.getSourceIpAddr() != null) {
128             answer.setFirewallRuleSrcIpAddr(String.valueOf(rule.getSourceIpAddr().getValue()));
129         }
130         if (rule.getDestinationIpAddr() != null) {
131             answer.setFirewallRuleDstIpAddr(String.valueOf(rule.getDestinationIpAddr().getValue()));
132         }
133         if (rule.getSourcePort() != null) {
134             answer.setFirewallRuleSrcPort(rule.getSourcePort().intValue());
135         }
136         if (rule.getDestinationPort() != null) {
137             answer.setFirewallRuleDstPort(rule.getDestinationPort().intValue());
138         }
139         if (rule.getPosition() != null) {
140             answer.setFirewallRulePosition(rule.getPosition().intValue());
141         }
142         if (rule.getAction() != null) {
143             answer.setFirewallRuleAction(rule.getAction());
144         }
145         return answer;
146     }
147
148     @Override
149     protected FirewallRule toMd(NeutronFirewallRule rule) {
150         FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
151         if (rule.getID() != null) {
152             ruleBuilder.setUuid(toUuid(rule.getID()));
153         }
154         if (rule.getFirewallRuleName() != null) {
155             ruleBuilder.setName(rule.getFirewallRuleName());
156         }
157         if (rule.getTenantID() != null) {
158             ruleBuilder.setTenantId(toUuid(rule.getTenantID()));
159         }
160         if (rule.getFirewallRuleDescription() != null) {
161             ruleBuilder.setDescr(rule.getFirewallRuleDescription());
162         }
163         if (rule.getFirewallRuleStatus() != null) {
164             ruleBuilder.setStatus(rule.getFirewallRuleStatus());
165         }
166         if (rule.getFirewallRuleIsShared() != null) {
167             ruleBuilder.setShared(rule.getFirewallRuleIsShared());
168         }
169         if (rule.getFirewallRuleIsEnabled() != null) {
170             ruleBuilder.setEnabled(rule.getFirewallRuleIsEnabled());
171         }
172         if (rule.getFirewallRulePolicyID() != null) {
173             ruleBuilder.setFirewallPolicyId(toUuid(rule.getFirewallRulePolicyID()));
174         }
175         if (rule.getFirewallRuleProtocol() != null) {
176             ruleBuilder.setProtocol(rule.getFirewallRuleProtocol());
177         }
178         if (rule.getFirewallRuleIpVer() != null) {
179             ruleBuilder.setIpVersion(rule.getFirewallRuleIpVer().shortValue());
180         }
181         if (rule.getFirewallRuleSrcIpAddr() != null) {
182             IpAddress ipAddress = new IpAddress(rule.getFirewallRuleSrcIpAddr().toCharArray());
183             ruleBuilder.setSourceIpAddr(ipAddress);
184         }
185         if (rule.getFirewallRuleDstIpAddr() != null) {
186             IpAddress ipAddress = new IpAddress(rule.getFirewallRuleDstIpAddr().toCharArray());
187             ruleBuilder.setDestinationIpAddr(ipAddress);
188         }
189         if (rule.getFirewallRuleSrcPort() != null) {
190             ruleBuilder.setSourcePort(rule.getFirewallRuleSrcPort().shortValue());
191         }
192         if (rule.getFirewallRuleDstPort() != null) {
193             ruleBuilder.setDestinationPort(rule.getFirewallRuleDstPort().shortValue());
194         }
195         if (rule.getFirewallRulePosition() != null) {
196             ruleBuilder.setPosition(rule.getFirewallRulePosition().shortValue());
197         }
198         if (rule.getFirewallRuleAction() != null) {
199             ruleBuilder.setAction(rule.getFirewallRuleAction());
200         }
201         return ruleBuilder.build();
202     }
203
204     @Override
205     protected FirewallRule toMd(String uuid) {
206         FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
207         ruleBuilder.setUuid(toUuid(uuid));
208         return ruleBuilder.build();
209     }
210
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);
218         }
219     }
220 }