2 * Copyright (c) 2017 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.genius.srm.shell;
11 import com.google.common.collect.ImmutableMap;
12 import java.util.Locale;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.EntityNameBase;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.EntityTypeBase;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.EntityTypeInstance;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.EntityTypeService;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.GeniusIfm;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.GeniusIfmInterface;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.GeniusItm;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.GeniusItmTep;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.GeniusItmTz;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtElan;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtElanInstance;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtQos;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtQosPolicyInstance;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtVpn;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtVpnInstance;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.Ofplugin;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
33 * The Utility class for SRM Shell.
35 public final class SrmCliUtils {
37 private static final Logger LOG = LoggerFactory.getLogger(SrmCliUtils.class);
39 private SrmCliUtils() { }
41 private static final ImmutableMap<String, Class<? extends EntityTypeBase>> ENTITY_TYPE_MAP =
42 new ImmutableMap.Builder<String, Class<? extends EntityTypeBase>>()
43 .put("SERVICE", EntityTypeService.class)
44 .put("INSTANCE", EntityTypeInstance.class)
47 private static final ImmutableMap<String, Class<? extends EntityNameBase>> SERVICE_NAME_MAP =
48 new ImmutableMap.Builder<String, Class<? extends EntityNameBase>>()
49 .put("ITM", GeniusItm.class)
50 .put("IFM", GeniusIfm.class)
51 .put("VPN", NetvirtVpn.class)
52 .put("ELAN", NetvirtElan.class)
53 .put("OFPLUGIN", Ofplugin.class)
54 .put("QOS", NetvirtQos.class)
57 private static final ImmutableMap<String, Class<? extends EntityNameBase>> INSTANCE_NAME_MAP =
58 new ImmutableMap.Builder<String, Class<? extends EntityNameBase>>()
59 .put("ITM-TEP", GeniusItmTep.class)
60 .put("ITM-TZ", GeniusItmTz.class)
61 .put("IFM-IFACE", GeniusIfmInterface.class)
62 .put("VPN-INSTANCE", NetvirtVpnInstance.class)
63 .put("ELAN-INSTANCE", NetvirtElanInstance.class)
64 .put("QOS-POLICY-INSTANCE", NetvirtQosPolicyInstance.class)
68 * Get EntityName given name in string.
70 * @param strType Entity Type as a string
71 * @return EntityName for use
73 public static Class<? extends EntityTypeBase> getEntityType(String strType) {
74 LOG.debug("Getting entityType for type {}", strType);
75 return ENTITY_TYPE_MAP.get(strType.toUpperCase(Locale.ROOT));
79 * Get EntityName given name in string.
81 * @param type Entity Type class
82 * @param strName Entity Name as a string
83 * @return EntityName for use
85 public static Class<? extends EntityNameBase> getEntityName(Class<? extends EntityTypeBase> type, String strName) {
86 LOG.debug("Getting entityName for type {} and name: {}", type, strName);
87 if (EntityTypeService.class.equals(type)) {
88 return SERVICE_NAME_MAP.get(strName.toUpperCase(Locale.ROOT));
89 } else if (EntityTypeInstance.class.equals(type)) {
90 return INSTANCE_NAME_MAP.get(strName.toUpperCase(Locale.ROOT));
96 public static String getTypeHelp() {
97 StringBuilder help = new StringBuilder("Supported Entity Types are:\n");
98 for (String entityType : SrmCliUtils.ENTITY_TYPE_MAP.keySet()) {
99 help.append("\t").append(entityType).append("/").append(entityType.toLowerCase(Locale.ROOT)).append("\n");
101 return help.toString();
104 public static String getNameHelp(Class<? extends EntityTypeBase> entityType) {
105 StringBuilder help = new StringBuilder("Supported Entity Names for type");
107 if (EntityTypeService.class.equals(entityType)) {
108 help.append(" SERVICE are:\n");
109 for (String entityName : SrmCliUtils.SERVICE_NAME_MAP.keySet()) {
110 help.append(String.format("\t%s/%s%n", entityName.toLowerCase(Locale.ROOT), entityName));
112 } else if (EntityTypeInstance.class.equals(entityType)) {
113 help.append(" INSTANCE are:\n");
114 for (String entityName : SrmCliUtils.INSTANCE_NAME_MAP.keySet()) {
115 help.append(String.format("\t%s/%s%n", entityName.toLowerCase(Locale.ROOT), entityName));
118 return help.toString();