ca71a0116ab7a27281d7b55499d1b735904a86fa
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIPSECPolicyInterface.java
1 /*
2  * Copyright (c) 2015 IBM Corporation 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.List;
12
13 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
14 import org.opendaylight.neutron.spi.INeutronVPNIPSECPolicyCRUD;
15 import org.opendaylight.neutron.spi.NeutronVPNIPSECPolicy;
16 import org.opendaylight.neutron.spi.NeutronVPNLifetime;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecpolicy.attributes.LifetimeBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecpolicies.attributes.IpsecPolicies;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecpolicies.attributes.ipsec.policies.Ipsecpolicy;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecpolicies.attributes.ipsec.policies.IpsecpolicyBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23 import org.osgi.framework.BundleContext;
24 import org.osgi.framework.ServiceRegistration;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28 public class NeutronVPNIPSECPolicyInterface extends AbstractNeutronInterface<Ipsecpolicy, IpsecPolicies, NeutronVPNIPSECPolicy> implements INeutronVPNIPSECPolicyCRUD {
29     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIPSECPolicyInterface.class);
30
31     NeutronVPNIPSECPolicyInterface(ProviderContext providerContext) {
32         super(providerContext);
33     }
34
35     // IfNBVPNIPSECPolicyCRUD methods
36
37     @Override
38     protected List<Ipsecpolicy> getDataObjectList(IpsecPolicies policies) {
39         return policies.getIpsecpolicy();
40     }
41
42     protected NeutronVPNIPSECPolicy fromMd(Ipsecpolicy ipsecPolicy) {
43         final NeutronVPNIPSECPolicy answer = new NeutronVPNIPSECPolicy();
44         if (ipsecPolicy.getName() != null) {
45             answer.setName(ipsecPolicy.getName());
46         }
47         if (ipsecPolicy.getTenantId() != null) {
48             answer.setTenantID(ipsecPolicy.getTenantId());
49         }
50         if (ipsecPolicy.getAuthAlgorithm() != null) {
51             answer.setAuthAlgorithm(ipsecPolicy.getAuthAlgorithm());
52         }
53         if (ipsecPolicy.getEncryptionAlgorithm() != null) {
54             answer.setEncryptionAlgorithm(ipsecPolicy.getEncryptionAlgorithm());
55         }
56         if (ipsecPolicy.getTransformProtocol() != null) {
57             answer.setTransformProtocol(ipsecPolicy.getTransformProtocol());
58         }
59         if (ipsecPolicy.getEncapsulationMode() != null) {
60             answer.setEncapsulationMode(ipsecPolicy.getEncapsulationMode());
61         }
62         if (ipsecPolicy.getPfs() != null) {
63             answer.setPerfectForwardSecrecy(ipsecPolicy.getPfs());
64         }
65         if (ipsecPolicy.getLifetime() !=null) {
66             final NeutronVPNLifetime vpnLifetime = new NeutronVPNLifetime();
67             vpnLifetime.setUnits(ipsecPolicy.getLifetime().getUnits());
68             vpnLifetime.setValue(ipsecPolicy.getLifetime().getValue());
69             answer.setLifetime(vpnLifetime);
70         }
71         if (ipsecPolicy.getUuid() != null) {
72             answer.setID(ipsecPolicy.getUuid().getValue());
73         }
74         return answer;
75     }
76
77     @Override
78     protected Ipsecpolicy toMd(NeutronVPNIPSECPolicy ipsecPolicy) {
79         final IpsecpolicyBuilder ipsecPolicyBuilder = new IpsecpolicyBuilder();
80         if (ipsecPolicy.getName() != null) {
81             ipsecPolicyBuilder.setName(ipsecPolicy.getName());
82         }
83         if (ipsecPolicy.getTenantID() != null) {
84             ipsecPolicyBuilder.setTenantId(toUuid(ipsecPolicy.getTenantID()));
85         }
86         if (ipsecPolicy.getAuthAlgorithm() != null) {
87             ipsecPolicyBuilder.setAuthAlgorithm(ipsecPolicy.getAuthAlgorithm());
88         }
89         if (ipsecPolicy.getEncryptionAlgorithm() != null) {
90             ipsecPolicyBuilder.setEncryptionAlgorithm(ipsecPolicy.getEncryptionAlgorithm());
91         }
92         if (ipsecPolicy.getTransformProtocol() != null) {
93             ipsecPolicyBuilder.setTransformProtocol(ipsecPolicy.getTransformProtocol());
94         }
95         if (ipsecPolicy.getEncapsulationMode() != null) {
96             ipsecPolicyBuilder.setEncapsulationMode(ipsecPolicy.getEncapsulationMode());
97         }
98         if (ipsecPolicy.getPerfectForwardSecrecy() != null) {
99             ipsecPolicyBuilder.setPfs(ipsecPolicy.getPerfectForwardSecrecy());
100         }
101         if (ipsecPolicy.getLifetime() !=null) {
102             final NeutronVPNLifetime vpnLifetime = ipsecPolicy.getLifetime();
103             final LifetimeBuilder lifetimeBuilder = new LifetimeBuilder();
104             lifetimeBuilder.setUnits(vpnLifetime.getUnits());
105             lifetimeBuilder.setValue(vpnLifetime.getValue());
106             ipsecPolicyBuilder.setLifetime(lifetimeBuilder.build());
107         }
108         if (ipsecPolicy.getID() != null) {
109             ipsecPolicyBuilder.setUuid(toUuid(ipsecPolicy.getID()));
110         } else {
111             LOGGER.warn("Attempting to write neutron vpnIPSECPolicy without UUID");
112         }
113         return ipsecPolicyBuilder.build();
114     }
115
116
117     @Override
118     protected InstanceIdentifier<Ipsecpolicy> createInstanceIdentifier(Ipsecpolicy ipsecPolicy) {
119         return InstanceIdentifier.create(Neutron.class)
120                  .child(IpsecPolicies.class)
121                  .child(Ipsecpolicy.class, ipsecPolicy.getKey());
122     }
123
124     @Override
125     protected InstanceIdentifier<IpsecPolicies> createInstanceIdentifier() {
126         return InstanceIdentifier.create(Neutron.class)
127                  .child(IpsecPolicies.class);
128     }
129
130     @Override
131     protected Ipsecpolicy toMd(String uuid) {
132         final IpsecpolicyBuilder ipsecPolicyBuilder = new IpsecpolicyBuilder();
133         ipsecPolicyBuilder.setUuid(toUuid(uuid));
134         return ipsecPolicyBuilder.build();
135     }
136
137     public static void registerNewInterface(BundleContext context,
138                                             ProviderContext providerContext,
139                                             List<ServiceRegistration<?>> registrations) {
140         final NeutronVPNIPSECPolicyInterface neutronVPNIPSECPolicyInterface = new NeutronVPNIPSECPolicyInterface(providerContext);
141         final ServiceRegistration<INeutronVPNIPSECPolicyCRUD> neutronVPNIPSECPolicyInterfaceRegistration = context.registerService(INeutronVPNIPSECPolicyCRUD.class, neutronVPNIPSECPolicyInterface, null);
142         if(neutronVPNIPSECPolicyInterfaceRegistration != null) {
143             registrations.add(neutronVPNIPSECPolicyInterfaceRegistration);
144         }
145     }
146 }