Merge "Make I*Aware interfaces deprecated"
[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,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     public List<NeutronFirewallRule> getAll() {
54         Set<NeutronFirewallRule> allFirewallRules = new HashSet<NeutronFirewallRule>();
55         FirewallRules rules = readMd(createInstanceIdentifier());
56         if (rules != null) {
57             for (FirewallRule rule: rules.getFirewallRule()) {
58                 allFirewallRules.add(fromMd(rule));
59             }
60         }
61         LOGGER.debug("Exiting getFirewallRules, Found {} OpenStackFirewallRule", allFirewallRules.size());
62         List<NeutronFirewallRule> ans = new ArrayList<NeutronFirewallRule>();
63         ans.addAll(allFirewallRules);
64         return ans;
65     }
66
67     @Override
68     public List<NeutronFirewallRule> getAllNeutronFirewallRules() {
69         return getAll();
70     }
71
72     @Override
73     public boolean addNeutronFirewallRule(NeutronFirewallRule input) {
74         return add(input);
75     }
76
77     @Override
78     public boolean removeNeutronFirewallRule(String uuid) {
79         return remove(uuid);
80     }
81
82     @Override
83     public boolean updateNeutronFirewallRule(String uuid, NeutronFirewallRule delta) {
84         return update(uuid, delta);
85     }
86
87     @Override
88     public boolean neutronFirewallRuleInUse(String firewallRuleUUID) {
89         return !exists(firewallRuleUUID);
90     }
91
92     @Override
93     protected InstanceIdentifier<FirewallRule> createInstanceIdentifier(FirewallRule item) {
94         return InstanceIdentifier.create(Neutron.class)
95                 .child(FirewallRules.class)
96                 .child(FirewallRule.class, item.getKey());
97     }
98
99     protected InstanceIdentifier<FirewallRules> createInstanceIdentifier() {
100         return InstanceIdentifier.create(Neutron.class)
101                 .child(FirewallRules.class);
102     }
103
104     protected NeutronFirewallRule fromMd(FirewallRule rule) {
105         NeutronFirewallRule answer = new NeutronFirewallRule();
106         if (rule.getUuid() != null) {
107             answer.setID(rule.getUuid().getValue());
108         }
109         if (rule.getName() != null) {
110             answer.setFirewallRuleName(rule.getName());
111         }
112         if (rule.getTenantId() != null) {
113             answer.setFirewallRuleTenantID(rule.getTenantId().getValue().replace("-",""));
114         }
115         if (rule.getDescr() != null) {
116             answer.setFirewallRuleDescription(rule.getDescr());
117         }
118         if (rule.getStatus() != null) {
119             answer.setFirewallRuleStatus(rule.getStatus());
120         }
121         if (rule.isShared() != null) {
122             answer.setFirewallRuleIsShared(rule.isShared());
123         }
124         if (rule.isEnabled() != null) {
125             answer.setFirewallRuleIsEnabled(rule.isEnabled());
126         }
127         if (rule.getFirewallPolicyId() != null) {
128             answer.setFirewallRulePolicyID(rule.getFirewallPolicyId().getValue());
129         }
130         if (rule.getProtocol() != null) {
131             answer.setFirewallRuleProtocol(rule.getProtocol());
132         }
133         if (rule.getIpVersion() != null) {
134             answer.setFirewallRuleIpVer(rule.getIpVersion().intValue());
135         }
136         if (rule.getSourceIpAddr() != null) {
137             answer.setFirewallRuleSrcIpAddr(String.valueOf(rule.getSourceIpAddr().getValue()));
138         }
139         if (rule.getDestinationIpAddr() != null) {
140             answer.setFirewallRuleDstIpAddr(String.valueOf(rule.getDestinationIpAddr().getValue()));
141         }
142         if (rule.getSourcePort() != null) {
143             answer.setFirewallRuleSrcPort(rule.getSourcePort().intValue());
144         }
145         if (rule.getDestinationPort() != null) {
146             answer.setFirewallRuleDstPort(rule.getDestinationPort().intValue());
147         }
148         if (rule.getPosition() != null) {
149             answer.setFirewallRulePosition(rule.getPosition().intValue());
150         }
151         if (rule.getAction() != null) {
152             answer.setFirewallRuleAction(rule.getAction());
153         }
154         return answer;
155     }
156
157     @Override
158     protected FirewallRule toMd(NeutronFirewallRule rule) {
159         FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
160         if (rule.getID() != null) {
161             ruleBuilder.setUuid(toUuid(rule.getID()));
162         }
163         if (rule.getFirewallRuleName() != null) {
164             ruleBuilder.setName(rule.getFirewallRuleName());
165         }
166         if (rule.getFirewallRuleTenantID() != null) {
167             ruleBuilder.setTenantId(toUuid(rule.getFirewallRuleTenantID()));
168         }
169         if (rule.getFirewallRuleDescription() != null) {
170             ruleBuilder.setDescr(rule.getFirewallRuleDescription());
171         }
172         if (rule.getFirewallRuleStatus() != null) {
173             ruleBuilder.setStatus(rule.getFirewallRuleStatus());
174         }
175         if (rule.getFirewallRuleIsShared() != null) {
176             ruleBuilder.setShared(rule.getFirewallRuleIsShared());
177         }
178         if (rule.getFirewallRuleIsEnabled() != null) {
179             ruleBuilder.setEnabled(rule.getFirewallRuleIsEnabled());
180         }
181         if (rule.getFirewallRulePolicyID() != null) {
182             ruleBuilder.setFirewallPolicyId(toUuid(rule.getFirewallRulePolicyID()));
183         }
184         if (rule.getFirewallRuleProtocol() != null) {
185             ruleBuilder.setProtocol(rule.getFirewallRuleProtocol());
186         }
187         if (rule.getFirewallRuleIpVer() != null) {
188             ruleBuilder.setIpVersion(rule.getFirewallRuleIpVer().shortValue());
189         }
190         if (rule.getFirewallRuleSrcIpAddr() != null) {
191             IpAddress ipAddress = new IpAddress(rule.getFirewallRuleSrcIpAddr().toCharArray());
192             ruleBuilder.setSourceIpAddr(ipAddress);
193         }
194         if (rule.getFirewallRuleDstIpAddr() != null) {
195             IpAddress ipAddress = new IpAddress(rule.getFirewallRuleDstIpAddr().toCharArray());
196             ruleBuilder.setDestinationIpAddr(ipAddress);
197         }
198         if (rule.getFirewallRuleSrcPort() != null) {
199             ruleBuilder.setSourcePort(rule.getFirewallRuleSrcPort().shortValue());
200         }
201         if (rule.getFirewallRuleDstPort() != null) {
202             ruleBuilder.setDestinationPort(rule.getFirewallRuleDstPort().shortValue());
203         }
204         if (rule.getFirewallRulePosition() != null) {
205             ruleBuilder.setPosition(rule.getFirewallRulePosition().shortValue());
206         }
207         if (rule.getFirewallRuleAction() != null) {
208             ruleBuilder.setAction(rule.getFirewallRuleAction());
209         }
210         return ruleBuilder.build();
211     }
212
213     @Override
214     protected FirewallRule toMd(String uuid) {
215         FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
216         ruleBuilder.setUuid(toUuid(uuid));
217         return ruleBuilder.build();
218     }
219
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);
227         }
228     }
229 }