X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fcommons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnorthbound%2Fcommons%2Futils%2FNorthboundUtils.java;h=58ba77697001b0e4d0b998098d0d17d15165a736;hp=3fedd0c9f8ea9d4fe8d5a470ca603e3298776f0a;hb=dad78e1fc8a7c67fa4b88cf09d6a952443462feb;hpb=39e1d43dc8f41f682fb818469a3aeb542e76ea8e diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java b/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java index 3fedd0c9f8..58ba776970 100644 --- a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java +++ b/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/utils/NorthboundUtils.java @@ -1,14 +1,85 @@ package org.opendaylight.controller.northbound.commons.utils; +import java.util.HashMap; +import java.util.Map; + +import javax.ws.rs.core.Response; + import org.opendaylight.controller.containermanager.IContainerAuthorization; import org.opendaylight.controller.sal.authorization.Privilege; import org.opendaylight.controller.sal.authorization.UserLevel; +import org.opendaylight.controller.sal.core.Description; +import org.opendaylight.controller.sal.core.Name; +import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.NodeConnector; import org.opendaylight.controller.sal.utils.GlobalConstants; import org.opendaylight.controller.sal.utils.ServiceHelper; +import org.opendaylight.controller.sal.utils.Status; +import org.opendaylight.controller.sal.utils.StatusCode; +import org.opendaylight.controller.switchmanager.ISwitchManager; import org.opendaylight.controller.usermanager.IUserManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NorthboundUtils { + private static final Map ResponseStatusMapping = new HashMap() { + private static final long serialVersionUID = 1L; + { + put(StatusCode.SUCCESS, Response.Status.OK); + put(StatusCode.BADREQUEST, Response.Status.BAD_REQUEST); + put(StatusCode.UNAUTHORIZED, Response.Status.UNAUTHORIZED); + put(StatusCode.FORBIDDEN, Response.Status.FORBIDDEN); + put(StatusCode.NOTFOUND, Response.Status.NOT_FOUND); + put(StatusCode.NOTALLOWED, Response.Status.FORBIDDEN); + put(StatusCode.NOTACCEPTABLE, Response.Status.NOT_ACCEPTABLE); + put(StatusCode.TIMEOUT, Response.Status.GONE); + put(StatusCode.CONFLICT, Response.Status.CONFLICT); + put(StatusCode.GONE, Response.Status.GONE); + put(StatusCode.UNSUPPORTED, Response.Status.BAD_REQUEST); + put(StatusCode.INTERNALERROR, Response.Status.INTERNAL_SERVER_ERROR); + put(StatusCode.NOTIMPLEMENTED, Response.Status.NOT_ACCEPTABLE); + put(StatusCode.NOSERVICE, Response.Status.SERVICE_UNAVAILABLE); + put(StatusCode.UNDEFINED, Response.Status.BAD_REQUEST); + } + }; + + private static final String AUDIT = "audit"; + + private static final Logger logger = LoggerFactory.getLogger(AUDIT); + + // Suppress default constructor for noninstantiability + private NorthboundUtils() { + } + + /** + * Returns Response.Status for a given status. If the status is null or if + * the corresponding StatusCode is not present in the ResponseStatusMapping, + * it returns null. + * + * @param status + * The Status + * @return The Response.Status for a given status + */ + public static Response.Status getResponseStatus(Status status) { + return ResponseStatusMapping.get(status.getCode()); + } + + /** + * Returns Response for a given status. If the status provided is null or if + * the corresponding StatusCode is not present in the ResponseStatusMapping, + * it returns Response with StatusType as INTERNAL_SERVER_ERROR. + * + * @param status + * The Status + * @return The Response for a given status. + */ + public static Response getResponse(Status status) { + if ((status == null) || (!ResponseStatusMapping.containsKey(status.getCode()))) { + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Action Result Unknown").build(); + } + return Response.status(ResponseStatusMapping.get(status.getCode())).entity(status.getDescription()).build(); + } /** * Returns whether the current user has the required privilege on the @@ -24,12 +95,10 @@ public class NorthboundUtils { * Class from where the function is invoked * @return The Status of the request, either Success or Unauthorized */ - public static boolean isAuthorized(String userName, String containerName, - Privilege required,Object bundle) { + public static boolean isAuthorized(String userName, String containerName, Privilege required, Object bundle) { - if (containerName.equals(GlobalConstants.DEFAULT.toString())) { - IUserManager auth = (IUserManager) ServiceHelper.getGlobalInstance( - IUserManager.class, bundle); + if (containerName.equals(GlobalConstants.DEFAULT.toString())) { + IUserManager auth = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, bundle); switch (required) { case WRITE: @@ -41,15 +110,14 @@ public class NorthboundUtils { } } else { - IContainerAuthorization auth = (IContainerAuthorization) ServiceHelper - .getGlobalInstance(IContainerAuthorization.class, bundle); + IContainerAuthorization auth = (IContainerAuthorization) ServiceHelper.getGlobalInstance( + IContainerAuthorization.class, bundle); if (auth == null) { return false; } - Privilege current = auth.getResourcePrivilege(userName, - containerName); + Privilege current = auth.getResourcePrivilege(userName, containerName); if (required.ordinal() > current.ordinal()) { return false; } @@ -57,4 +125,71 @@ public class NorthboundUtils { return true; } + public static void auditlog(String moduleName, String user, String action, String resource, + String containerName) { + String auditMsg = ""; + String mode = "REST"; + if (containerName != null) { + auditMsg = "Mode: " + mode + " User " + user + " " + action + " " + moduleName + " " + resource + " in container " + + containerName; + } else { + auditMsg = "Mode: " + mode + " User " + user + " " + action + " " + moduleName + " " + resource; + } + logger.trace(auditMsg); + } + + public static void auditlog(String moduleName, String user, String action, String resource) { + auditlog(moduleName, user, action, resource, null); + } + + public static String getNodeDesc(Node node, ISwitchManager switchManager) { + Description desc = (Description) switchManager.getNodeProp(node, + Description.propertyName); + String description = (desc == null) ? "" : desc.getValue(); + return (description.isEmpty() || description.equalsIgnoreCase("none")) ? node + .toString() : description; + } + + public static String getNodeDesc(Node node, String containerName, + Object bundle) { + ISwitchManager switchManager = (ISwitchManager) ServiceHelper + .getInstance(ISwitchManager.class, containerName, bundle); + if (switchManager == null) { + return null; + } + + return getNodeDesc(node, switchManager); + } + + public static String getNodeDesc(Node node, Object bundle) { + ISwitchManager switchManager = (ISwitchManager) ServiceHelper + .getInstance(ISwitchManager.class, + GlobalConstants.DEFAULT.toString(), bundle); + if (switchManager == null) { + return null; + } + + return getNodeDesc(node, switchManager); + } + + public static String getPortName(NodeConnector nodeConnector, + String container, Object bundle) { + ISwitchManager switchManager = (ISwitchManager) ServiceHelper + .getInstance(ISwitchManager.class, container, bundle); + return getPortName(nodeConnector, switchManager); + } + + public static String getPortName(NodeConnector nodeConnector, Object bundle) { + return getPortName(nodeConnector, GlobalConstants.DEFAULT.toString(), bundle); + } + + public static String getPortName(NodeConnector nodeConnector, + ISwitchManager switchManager) { + Name ncName = ((Name) switchManager.getNodeConnectorProp(nodeConnector, + Name.NamePropName)); + String nodeConnectorName = (ncName != null) ? ncName.getValue() : nodeConnector.getNodeConnectorIdAsString(); + nodeConnectorName = nodeConnectorName + "@" + + getNodeDesc(nodeConnector.getNode(), switchManager); + return nodeConnectorName.substring(0, nodeConnectorName.length()); + } }