2 * Copyright (c) 2012-2013 NEC Corporation
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this
7 * distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
10 package org.opendaylight.vtn.javaapi.resources.logical;
12 import java.util.ArrayList;
13 import java.util.List;
15 import com.google.gson.JsonObject;
16 import org.opendaylight.vtn.core.ipc.ClientSession;
17 import org.opendaylight.vtn.core.util.Logger;
18 import org.opendaylight.vtn.javaapi.annotation.UNCField;
19 import org.opendaylight.vtn.javaapi.annotation.UNCVtnService;
20 import org.opendaylight.vtn.javaapi.constants.VtnServiceConsts;
21 import org.opendaylight.vtn.javaapi.constants.VtnServiceJsonConsts;
22 import org.opendaylight.vtn.javaapi.exception.VtnServiceException;
23 import org.opendaylight.vtn.javaapi.ipc.IpcRequestProcessor;
24 import org.opendaylight.vtn.javaapi.ipc.conversion.IpcLogicalResponseFactory;
25 import org.opendaylight.vtn.javaapi.ipc.enums.IpcRequestPacketEnum;
26 import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum;
27 import org.opendaylight.vtn.javaapi.ipc.enums.UncCommonEnum.UncResultCode;
28 import org.opendaylight.vtn.javaapi.ipc.enums.UncJavaAPIErrorCode;
29 import org.opendaylight.vtn.javaapi.ipc.enums.UncUPLLEnums;
30 import org.opendaylight.vtn.javaapi.resources.AbstractResource;
31 import org.opendaylight.vtn.javaapi.validation.logical.VBridgeFlowFilterEntriesResourceValidator;
34 * The Class VRouterInterfaceFlowFilterEntriesResource implements post and get
38 /* This class handles post and get methods */
39 @UNCVtnService(path = "/vtns/{vtn_name}/vrouters/{vrt_name}/interfaces/{if_name}/flowfilters/{ff_type}/flowfilterentries")
40 public class VRouterInterfaceFlowFilterEntriesResource extends AbstractResource {
44 private String vtnName;
47 private String vrtName;
50 private String ifName;
53 private String ffType;
55 /** The Constant LOG. */
56 private static final Logger LOG = Logger
57 .getLogger(VRouterInterfaceFlowFilterEntriesResource.class
61 * Instantiates a new v router interface flow filter entries resource.
63 public VRouterInterfaceFlowFilterEntriesResource() {
65 LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#VRouterInterfaceFlowFilterEntriesResource()");
66 setValidator(new VBridgeFlowFilterEntriesResourceValidator(this));
67 LOG.trace("Completed VRouterInterfaceFlowFilterEntriesResource#VRouterInterfaceFlowFilterEntriesResource()");
73 public String getVtnName() {
80 public String getVrtName() {
87 public String getIfName() {
94 public String getFfType() {
99 * Implementation of Post method of VRouterInterfaceFlowFilterEntry API
102 * the request Json object
105 * @throws VtnServiceException
108 public int post(final JsonObject requestBody) throws VtnServiceException {
109 LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#post()");
110 ClientSession session = null;
111 IpcRequestProcessor requestProcessor = null;
112 int status = ClientSession.RESP_FATAL;
114 LOG.debug("Start Ipc framework call");
115 session = getConnPool().getSession(
116 UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,
117 UncUPLLEnums.UPLL_IPC_SERVICE_NAME,
118 UncUPLLEnums.ServiceID.UPLL_EDIT_SVC_ID.ordinal(),
119 getExceptionHandler());
120 LOG.debug("Session created successfully");
121 requestProcessor = new IpcRequestProcessor(session, getSessionID(),
122 getConfigID(), getExceptionHandler());
123 requestProcessor.createIpcRequestPacket(
124 IpcRequestPacketEnum.KT_VRTIF_FLOWFILTER_ENTRY_CREATE,
125 requestBody, getUriParameters(requestBody));
126 LOG.debug("Request packet created successfully");
127 status = requestProcessor.processIpcRequest();
128 LOG.debug("Request packet processed with status" + status);
129 LOG.debug("Complete Ipc framework call");
130 } catch (final VtnServiceException e) {
131 getExceptionHandler()
132 .raise(Thread.currentThread().getStackTrace()[1]
134 + VtnServiceConsts.HYPHEN
135 + Thread.currentThread().getStackTrace()[1]
137 UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(),
138 UncJavaAPIErrorCode.IPC_SERVER_ERROR
139 .getErrorMessage(), e);
142 if (status == ClientSession.RESP_FATAL) {
143 if (null != requestProcessor.getErrorJson()) {
144 setInfo(requestProcessor.getErrorJson());
146 createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR
149 status = UncResultCode.UNC_SERVER_ERROR.getValue();
151 getConnPool().destroySession(session);
153 LOG.trace("Completed VRouterInterfaceFlowFilterEntriesResource#post()");
158 * Implementation of Get method of VRouterInterfaceFlowFilterEntry API
161 * the request Json object
164 * @throws VtnServiceException
167 public int get(final JsonObject requestBody) throws VtnServiceException {
168 LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#get()");
169 ClientSession session = null;
170 IpcRequestProcessor requestProcessor = null;
171 int status = ClientSession.RESP_FATAL;
173 LOG.debug("Start Ipc framework call");
174 session = getConnPool().getSession(
175 UncUPLLEnums.UPLL_IPC_CHANNEL_NAME,
176 UncUPLLEnums.UPLL_IPC_SERVICE_NAME,
177 UncUPLLEnums.ServiceID.UPLL_READ_SVC_ID.ordinal(),
178 getExceptionHandler());
179 LOG.debug("Session created successfully");
180 requestProcessor = new IpcRequestProcessor(session, getSessionID(),
181 getConfigID(), getExceptionHandler());
182 requestProcessor.createIpcRequestPacket(
183 IpcRequestPacketEnum.KT_VRTIF_FLOWFILTER_ENTRY_GET,
184 requestBody, getUriParameters(requestBody));
185 LOG.debug("Request packet created successfully");
186 status = requestProcessor.processIpcRequest();
187 LOG.debug("Request packet processed with status" + status);
188 final IpcLogicalResponseFactory responseGenerator = new IpcLogicalResponseFactory();
189 setInfo(responseGenerator
190 .getVRouterInterfaceFlowFilterEntryResponse(
191 requestProcessor.getIpcResponsePacket(),
192 requestBody, VtnServiceJsonConsts.LIST));
193 LOG.debug("Response object created successfully");
194 LOG.debug("Complete Ipc framework call");
195 } catch (final VtnServiceException e) {
196 getExceptionHandler()
197 .raise(Thread.currentThread().getStackTrace()[1]
199 + VtnServiceConsts.HYPHEN
200 + Thread.currentThread().getStackTrace()[1]
202 UncJavaAPIErrorCode.IPC_SERVER_ERROR.getErrorCode(),
203 UncJavaAPIErrorCode.IPC_SERVER_ERROR
204 .getErrorMessage(), e);
207 if (status == ClientSession.RESP_FATAL) {
208 if (null != requestProcessor
209 && null != requestProcessor.getErrorJson()) {
210 setInfo(requestProcessor.getErrorJson());
212 createErrorInfo(UncCommonEnum.UncResultCode.UNC_SERVER_ERROR
215 status = UncResultCode.UNC_SERVER_ERROR.getValue();
217 getConnPool().destroySession(session);
219 LOG.trace("Completed VRouterInterfaceFlowFilterEntriesResource#get()");
224 * Add URI parameters to list
228 private List<String> getUriParameters(final JsonObject requestBody) {
229 LOG.trace("Start VRouterInterfaceFlowFilterEntriesResource#getUriParameters()");
230 final List<String> uriParameters = new ArrayList<String>();
231 uriParameters.add(vtnName);
232 uriParameters.add(vrtName);
233 uriParameters.add(ifName);
234 uriParameters.add(ffType);
235 if (requestBody != null && requestBody.has(VtnServiceJsonConsts.INDEX)) {
236 uriParameters.add(requestBody.get(VtnServiceJsonConsts.INDEX)
238 }LOG.trace("Completed VRouterInterfaceFlowFilterEntriesResource#getUriParameters()");
239 return uriParameters;