2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.netvirt.neutronvpn.shell;
11 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
13 import java.util.ArrayList;
14 import java.util.Collections;
15 import java.util.List;
16 import org.apache.karaf.shell.commands.Command;
17 import org.apache.karaf.shell.commands.Option;
18 import org.apache.karaf.shell.console.OsgiCommandSupport;
19 import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
20 import org.opendaylight.mdsal.binding.api.DataBroker;
21 import org.opendaylight.netvirt.dhcpservice.api.DhcpMConstants;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DhcpConfig;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DhcpConfigBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.dhcp.config.Configs;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.dhcp.config.ConfigsBuilder;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
30 @Command(scope = "vpnservice", name = "dhcp-configure", description = "configuring parameters for DHCP Service")
31 public class DhcpConfigureCommand extends OsgiCommandSupport {
33 private static final Logger LOG = LoggerFactory.getLogger(DhcpConfigureCommand.class);
35 @Option(name = "-ld", aliases = {"--leaseDuration"}, description = "Lease Duration", required = false,
37 Integer leaseDuration;
39 @Option(name = "-dd", aliases = {"--defaultDomain"}, description = "Default Domain", required = false,
43 private DataBroker dataBroker;
45 public void setDataBroker(DataBroker broker) {
46 this.dataBroker = broker;
50 protected Object doExecute() throws Exception {
51 if (defaultDomain == null && leaseDuration == null) {
52 session.getConsole().println(getHelp());
55 Integer currLeaseDuration = DhcpMConstants.DEFAULT_LEASE_TIME;
56 String currDefDomain = DhcpMConstants.DEFAULT_DOMAIN_NAME;
57 ConfigsBuilder dccBuilder = new ConfigsBuilder();
58 InstanceIdentifier<DhcpConfig> iid = InstanceIdentifier.create(DhcpConfig.class);
59 DhcpConfig currentConfig = SingleTransactionDataBroker.syncRead(dataBroker, CONFIGURATION, iid);
60 if (currentConfig != null && currentConfig.getConfigs() != null
61 && !currentConfig.getConfigs().isEmpty()) {
62 Configs dhcpConfig = new ArrayList<Configs>(currentConfig.getConfigs().values()).get(0);
63 if (dhcpConfig.getLeaseDuration() != null) {
64 currLeaseDuration = dhcpConfig.getLeaseDuration();
66 if (dhcpConfig.getDefaultDomain() != null) {
67 currDefDomain = dhcpConfig.getDefaultDomain();
70 LOG.error("doExecute: DHCP config not present");
73 dccBuilder.setLeaseDuration(leaseDuration == null ? currLeaseDuration : leaseDuration);
74 dccBuilder.setDefaultDomain(defaultDomain == null ? currDefDomain : defaultDomain);
76 List<Configs> configList = Collections.singletonList(dccBuilder.build());
77 DhcpConfigBuilder dcBuilder = new DhcpConfigBuilder();
78 dcBuilder.setConfigs(configList);
79 SingleTransactionDataBroker.syncWrite(dataBroker, CONFIGURATION, iid, dcBuilder.build());
83 private String getHelp() {
85 + "exec dhcp-configure \n"
86 + "[-ld/--leaseDuration leaseTime] [-dd/--defaultDomain defaultDomain]";