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.NetvirtAcl;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtAclInstance;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtAclInterface;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtElan;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtElanInstance;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtQos;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtQosPolicyInstance;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtVpn;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtVpnInstance;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.Ofplugin;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
36 * The Utility class for SRM Shell.
38 public final class SrmCliUtils {
40 private static final Logger LOG = LoggerFactory.getLogger(SrmCliUtils.class);
42 private SrmCliUtils() { }
44 private static final ImmutableMap<String, Class<? extends EntityTypeBase>> ENTITY_TYPE_MAP =
45 new ImmutableMap.Builder<String, Class<? extends EntityTypeBase>>()
46 .put("SERVICE", EntityTypeService.class)
47 .put("INSTANCE", EntityTypeInstance.class)
50 private static final ImmutableMap<String, Class<? extends EntityNameBase>> SERVICE_NAME_MAP =
51 new ImmutableMap.Builder<String, Class<? extends EntityNameBase>>()
52 .put("ITM", GeniusItm.class)
53 .put("IFM", GeniusIfm.class)
54 .put("VPN", NetvirtVpn.class)
55 .put("ELAN", NetvirtElan.class)
56 .put("ACL", NetvirtAcl.class)
57 .put("OFPLUGIN", Ofplugin.class)
58 .put("QOS", NetvirtQos.class)
61 private static final ImmutableMap<String, Class<? extends EntityNameBase>> INSTANCE_NAME_MAP =
62 new ImmutableMap.Builder<String, Class<? extends EntityNameBase>>()
63 .put("ITM-TEP", GeniusItmTep.class)
64 .put("ITM-TZ", GeniusItmTz.class)
65 .put("IFM-IFACE", GeniusIfmInterface.class)
66 .put("VPN-INSTANCE", NetvirtVpnInstance.class)
67 .put("ELAN-INSTANCE", NetvirtElanInstance.class)
68 .put("QOS-POLICY-INSTANCE", NetvirtQosPolicyInstance.class)
69 .put("ACL-INTERFACE", NetvirtAclInterface.class)
70 .put("ACL-INSTANCE", NetvirtAclInstance.class)
74 * Get EntityName given name in string.
76 * @param strType Entity Type as a string
77 * @return EntityName for use
79 public static Class<? extends EntityTypeBase> getEntityType(String strType) {
80 LOG.debug("Getting entityType for type {}", strType);
81 return ENTITY_TYPE_MAP.get(strType.toUpperCase(Locale.ROOT));
85 * Get EntityName given name in string.
87 * @param type Entity Type class
88 * @param strName Entity Name as a string
89 * @return EntityName for use
91 public static Class<? extends EntityNameBase> getEntityName(Class<? extends EntityTypeBase> type, String strName) {
92 LOG.debug("Getting entityName for type {} and name: {}", type, strName);
93 if (EntityTypeService.class.equals(type)) {
94 return SERVICE_NAME_MAP.get(strName.toUpperCase(Locale.ROOT));
95 } else if (EntityTypeInstance.class.equals(type)) {
96 return INSTANCE_NAME_MAP.get(strName.toUpperCase(Locale.ROOT));
102 public static String getTypeHelp() {
103 StringBuilder help = new StringBuilder("Supported Entity Types are:\n");
104 for (String entityType : SrmCliUtils.ENTITY_TYPE_MAP.keySet()) {
105 help.append("\t").append(entityType).append("/").append(entityType.toLowerCase(Locale.ROOT)).append("\n");
107 return help.toString();
110 public static String getNameHelp(Class<? extends EntityTypeBase> entityType) {
111 StringBuilder help = new StringBuilder("Supported Entity Names for type");
113 if (EntityTypeService.class.equals(entityType)) {
114 help.append(" SERVICE are:\n");
115 for (String entityName : SrmCliUtils.SERVICE_NAME_MAP.keySet()) {
116 help.append(String.format("\t%s/%s%n", entityName.toLowerCase(Locale.ROOT), entityName));
118 } else if (EntityTypeInstance.class.equals(entityType)) {
119 help.append(" INSTANCE are:\n");
120 for (String entityName : SrmCliUtils.INSTANCE_NAME_MAP.keySet()) {
121 help.append(String.format("\t%s/%s%n", entityName.toLowerCase(Locale.ROOT), entityName));
124 return help.toString();