transcriber: sprinkle final to public class
[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 com.google.common.collect.ImmutableBiMap;
12 import java.util.List;
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
14 import org.opendaylight.neutron.spi.INeutronFirewallRuleCRUD;
15 import org.opendaylight.neutron.spi.NeutronFirewallRule;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.IpVersionBase;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.IpVersionV4;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.IpVersionV6;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.NeutronUtils.FwProtocolMapper;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.ActionAllow;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.ActionBase;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.ActionDeny;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.FirewallRuleAttributes.Protocol;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.rules.attributes.FirewallRules;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.rules.attributes.firewall.rules.FirewallRule;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.fwaas.rev150712.rules.attributes.firewall.rules.FirewallRuleBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.types.rev160517.IpPrefixOrAddress;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 public final class NeutronFirewallRuleInterface extends
34         AbstractNeutronInterface<FirewallRule, FirewallRules, NeutronFirewallRule> implements INeutronFirewallRuleCRUD {
35     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronFirewallRuleInterface.class);
36
37     private static final ImmutableBiMap<Class<? extends ActionBase>,
38             String> ACTION_MAP = new ImmutableBiMap.Builder<Class<? extends ActionBase>, String>()
39                     .put(ActionAllow.class, "allow").put(ActionDeny.class, "deny").build();
40
41     private static final ImmutableBiMap<Class<? extends IpVersionBase>,
42             Integer> IP_VERSION_MAP = new ImmutableBiMap.Builder<Class<? extends IpVersionBase>, Integer>()
43                     .put(IpVersionV4.class, Integer.valueOf(4)).put(IpVersionV6.class, Integer.valueOf(6)).build();
44
45     NeutronFirewallRuleInterface(DataBroker db) {
46         super(db);
47     }
48
49     @Override
50     protected List<FirewallRule> getDataObjectList(FirewallRules rules) {
51         return rules.getFirewallRule();
52     }
53
54     @Override
55     protected InstanceIdentifier<FirewallRule> createInstanceIdentifier(FirewallRule item) {
56         return InstanceIdentifier.create(Neutron.class).child(FirewallRules.class).child(FirewallRule.class,
57                 item.getKey());
58     }
59
60     @Override
61     protected InstanceIdentifier<FirewallRules> createInstanceIdentifier() {
62         return InstanceIdentifier.create(Neutron.class).child(FirewallRules.class);
63     }
64
65     protected NeutronFirewallRule fromMd(FirewallRule rule) {
66         final NeutronFirewallRule answer = new NeutronFirewallRule();
67         if (rule.getUuid() != null) {
68             answer.setID(rule.getUuid().getValue());
69         }
70         if (rule.getName() != null) {
71             answer.setFirewallRuleName(rule.getName());
72         }
73         if (rule.getTenantId() != null) {
74             answer.setTenantID(rule.getTenantId());
75         }
76         if (rule.isShared() != null) {
77             answer.setFirewallRuleIsShared(rule.isShared());
78         }
79         if (rule.isEnabled() != null) {
80             answer.setFirewallRuleIsEnabled(rule.isEnabled());
81         }
82         if (rule.getFirewallPolicyId() != null) {
83             answer.setFirewallRulePolicyID(rule.getFirewallPolicyId().getValue());
84         }
85         if (rule.getProtocol() != null) {
86             final Protocol protocol = rule.getProtocol();
87             if (protocol.getUint8() != null) {
88                 // uint8
89                 answer.setFirewallRuleProtocol(protocol.getUint8().toString());
90             } else {
91                 // symbolic protocol name
92                 answer.setFirewallRuleProtocol(FwProtocolMapper.getName(protocol.getIdentityref()));
93             }
94         }
95         if (rule.getIpVersion() != null) {
96             answer.setFirewallRuleIpVer(IP_VERSION_MAP.get(rule.getIpVersion()));
97         }
98         if (rule.getSourceIpAddr() != null) {
99             answer.setFirewallRuleSrcIpAddr(String.valueOf(rule.getSourceIpAddr().getValue()));
100         }
101         if (rule.getDestinationIpAddr() != null) {
102             answer.setFirewallRuleDstIpAddr(String.valueOf(rule.getDestinationIpAddr().getValue()));
103         }
104         if (rule.getSourcePortRangeMin() != null) {
105             answer.setFirewallRuleSrcPortRangeMin(rule.getSourcePortRangeMin());
106         }
107         if (rule.getSourcePortRangeMax() != null) {
108             answer.setFirewallRuleSrcPortRangeMax(rule.getSourcePortRangeMax());
109         }
110         if (rule.getDestinationPortRangeMin() != null) {
111             answer.setFirewallRuleDstPortRangeMin(rule.getDestinationPortRangeMin());
112         }
113         if (rule.getDestinationPortRangeMax() != null) {
114             answer.setFirewallRuleDstPortRangeMax(rule.getDestinationPortRangeMax());
115         }
116         if (rule.getPosition() != null) {
117             answer.setFirewallRulePosition(Integer.valueOf(rule.getPosition().intValue()));
118         }
119         if (rule.getAction() != null) {
120             answer.setFirewallRuleAction(ACTION_MAP.get(rule.getAction()));
121         }
122         return answer;
123     }
124
125     @Override
126     protected FirewallRule toMd(NeutronFirewallRule rule) {
127         final FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
128         if (rule.getID() != null) {
129             ruleBuilder.setUuid(toUuid(rule.getID()));
130         }
131         if (rule.getFirewallRuleName() != null) {
132             ruleBuilder.setName(rule.getFirewallRuleName());
133         }
134         if (rule.getTenantID() != null) {
135             ruleBuilder.setTenantId(toUuid(rule.getTenantID()));
136         }
137         if (rule.getFirewallRuleIsShared() != null) {
138             ruleBuilder.setShared(rule.getFirewallRuleIsShared());
139         }
140         if (rule.getFirewallRuleIsEnabled() != null) {
141             ruleBuilder.setEnabled(rule.getFirewallRuleIsEnabled());
142         }
143         if (rule.getFirewallRulePolicyID() != null) {
144             ruleBuilder.setFirewallPolicyId(toUuid(rule.getFirewallRulePolicyID()));
145         }
146         if (rule.getFirewallRuleProtocol() != null) {
147             final String protocolString = rule.getFirewallRuleProtocol();
148             final Protocol protocol = new Protocol(protocolString.toCharArray());
149             ruleBuilder.setProtocol(protocol);
150         }
151         if (rule.getFirewallRuleIpVer() != null) {
152             final ImmutableBiMap<Integer, Class<? extends IpVersionBase>> mapper = IP_VERSION_MAP.inverse();
153             ruleBuilder.setIpVersion(mapper.get(rule.getFirewallRuleIpVer()));
154         }
155         if (rule.getFirewallRuleSrcIpAddr() != null) {
156             final IpPrefixOrAddress ipAddress = new IpPrefixOrAddress(rule.getFirewallRuleSrcIpAddr().toCharArray());
157             ruleBuilder.setSourceIpAddr(ipAddress);
158         }
159         if (rule.getFirewallRuleDstIpAddr() != null) {
160             final IpPrefixOrAddress ipAddress = new IpPrefixOrAddress(rule.getFirewallRuleDstIpAddr().toCharArray());
161             ruleBuilder.setDestinationIpAddr(ipAddress);
162         }
163         if (rule.getFirewallRuleSrcPortRangeMin() != null) {
164             ruleBuilder.setSourcePortRangeMin(rule.getFirewallRuleSrcPortRangeMin());
165         }
166         if (rule.getFirewallRuleSrcPortRangeMax() != null) {
167             ruleBuilder.setSourcePortRangeMax(rule.getFirewallRuleSrcPortRangeMax());
168         }
169         if (rule.getFirewallRuleDstPortRangeMin() != null) {
170             ruleBuilder.setDestinationPortRangeMin(rule.getFirewallRuleDstPortRangeMin());
171         }
172         if (rule.getFirewallRuleDstPortRangeMax() != null) {
173             ruleBuilder.setDestinationPortRangeMax(rule.getFirewallRuleDstPortRangeMax());
174         }
175         if (rule.getFirewallRulePosition() != null) {
176             ruleBuilder.setPosition(rule.getFirewallRulePosition().shortValue());
177         }
178         if (rule.getFirewallRuleAction() != null) {
179             final ImmutableBiMap<String, Class<? extends ActionBase>> mapper = ACTION_MAP.inverse();
180             ruleBuilder.setAction(mapper.get(rule.getFirewallRuleAction()));
181         }
182         return ruleBuilder.build();
183     }
184
185     @Override
186     protected FirewallRule toMd(String uuid) {
187         final FirewallRuleBuilder ruleBuilder = new FirewallRuleBuilder();
188         ruleBuilder.setUuid(toUuid(uuid));
189         return ruleBuilder.build();
190     }
191 }