2 * Copyright (c) 2017 Intel Corporation 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.hostconfig.utils;
11 import java.text.ParseException;
12 import java.text.SimpleDateFormat;
13 import java.util.Date;
14 import java.util.concurrent.ExecutionException;
16 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
17 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
18 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.hostconfig.rev150712.hostconfig.attributes.Hostconfigs;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.hostconfig.rev150712.hostconfig.attributes.hostconfigs.Hostconfig;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.hostconfig.rev150712.hostconfig.attributes.hostconfigs.HostconfigBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
27 public class NeutronHostconfigUtils {
28 private static final Logger LOG = LoggerFactory.getLogger(NeutronHostconfigUtils.class);
29 private final DataBroker dataBroker;
37 public NeutronHostconfigUtils(final DataBroker dataBroker) {
38 this.dataBroker = dataBroker;
41 public void updateMdsal(Hostconfig hostConfig, Action action) {
42 InstanceIdentifier<Hostconfig> hostConfigId;
43 if (hostConfig == null) {
50 final WriteTransaction writeTx = dataBroker.newWriteOnlyTransaction();
51 hostConfigId = createInstanceIdentifier(hostConfig);
52 writeTx.put(LogicalDatastoreType.OPERATIONAL, hostConfigId, hostConfig, true);
53 writeTx.submit().get();
54 LOG.trace("Hostconfig updated for node {}", hostConfig.getHostId());
57 final WriteTransaction delTx = dataBroker.newWriteOnlyTransaction();
58 hostConfigId = createInstanceIdentifier(hostConfig);
59 delTx.delete(LogicalDatastoreType.OPERATIONAL, hostConfigId);
60 LOG.trace("Hostconfig deleted for node {}", hostConfig.getHostId());
66 } catch (InterruptedException | ExecutionException e) {
67 LOG.warn("Hostconfig transaction commit failed to DS.", e);
71 public Hostconfig buildHostConfigInfo(String hostId, String hostType, String hostConfig) {
72 HostconfigBuilder hostconfigBuilder = new HostconfigBuilder();
73 hostconfigBuilder.setHostId(hostId);
74 hostconfigBuilder.setHostType(hostType);
75 hostconfigBuilder.setConfig(hostConfig);
76 return hostconfigBuilder.build();
79 private InstanceIdentifier<Hostconfig> createInstanceIdentifier(Hostconfig hostconfig) {
80 return InstanceIdentifier.create(Neutron.class).child(Hostconfigs.class)
81 .child(Hostconfig.class, hostconfig.getKey());
85 * Used for parsing model revisions.
87 public static Date parseDate(final String strDate) {
88 final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
90 return formatter.parse(strDate);
91 } catch (final ParseException e) {
92 throw new IllegalArgumentException("Date " + strDate + " not valid.", e);