if (domDataBrokerService.isPresent()) {
return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), CONFIGURATION, path);
}
- throw new RestconfDocumentedException("DOM data broker service isn't available for mount point.");
+ final String errMsg = "DOM data broker service isn't available for mount point " + path;
+ LOG.warn(errMsg);
+ throw new RestconfDocumentedException(errMsg);
}
// READ operational
if (domDataBrokerService.isPresent()) {
return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), OPERATIONAL, path);
}
- throw new RestconfDocumentedException("DOM data broker service isn't available for mount point.");
+ final String errMsg = "DOM data broker service isn't available for mount point " + path;
+ LOG.warn(errMsg);
+ throw new RestconfDocumentedException(errMsg);
}
// PUT configuration
return putDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path,
payload, mountPoint.getSchemaContext());
}
- throw new RestconfDocumentedException("DOM data broker service isn't available for mount point.");
+ final String errMsg = "DOM data broker service isn't available for mount point " + path;
+ LOG.warn(errMsg);
+ throw new RestconfDocumentedException(errMsg);
}
// POST configuration
return postDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path,
payload, mountPoint.getSchemaContext());
}
- throw new RestconfDocumentedException("DOM data broker service isn't available for mount point.");
+ final String errMsg = "DOM data broker service isn't available for mount point " + path;
+ LOG.warn(errMsg);
+ throw new RestconfDocumentedException(errMsg);
}
// DELETE configuration
if (domDataBrokerService.isPresent()) {
return deleteDataViaTransaction(domDataBrokerService.get().newWriteOnlyTransaction(), CONFIGURATION, path);
}
- throw new RestconfDocumentedException("DOM data broker service isn't available for mount point.");
+ final String errMsg = "DOM data broker service isn't available for mount point " + path;
+ LOG.warn(errMsg);
+ throw new RestconfDocumentedException(errMsg);
}
// RPC
LOG.debug("Reading result data from transaction.");
optional = listenableFuture.get();
} catch (InterruptedException | ExecutionException e) {
+ LOG.warn("Exception by reading " + datastore.name() + " via Restconf: {}", path, e);
throw new RestconfDocumentedException("Problem to get data from transaction.", e.getCause());
}
try {
if (futureDatastoreData.get()) {
final String errMsg = "Post Configuration via Restconf was not executed because data already exists";
- LOG.debug(errMsg + ":{}", path);
+ LOG.trace(errMsg + ":{}", path);
rWTransaction.cancel();
throw new RestconfDocumentedException("Data already exists for path: " + path, ErrorType.PROTOCOL,
ErrorTag.DATA_EXISTS);
}
} catch (InterruptedException | ExecutionException e) {
- LOG.trace("It wasn't possible to get data loaded from datastore at path " + path);
+ LOG.warn("It wasn't possible to get data loaded from datastore at path " + path, e);
}
}
SAL_REMOTE_AUG_IDENTIFIER = new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(QName.create(SAL_REMOTE_AUGMENT, "scope"),
QName.create(SAL_REMOTE_AUGMENT, "datastore")));
} catch (final ParseException e) {
- throw new RestconfDocumentedException(
- "It wasn't possible to convert revision date of sal-remote-augment to date", ErrorType.APPLICATION,
- ErrorTag.OPERATION_FAILED);
+ final String errMsg = "It wasn't possible to convert revision date of sal-remote-augment to date";
+ LOG.debug(errMsg);
+ throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
} catch (final URISyntaxException e) {
- throw new RestconfDocumentedException(
- "It wasn't possible to create instance of URI class with "+NETCONF_BASE+" URI", ErrorType.APPLICATION,
- ErrorTag.OPERATION_FAILED);
+ final String errMsg = "It wasn't possible to create instance of URI class with "+NETCONF_BASE+" URI";
+ throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
}
}
if ( ! identifier.contains(ControllerContext.MOUNT)) {
final String errMsg = "URI has bad format. If modules behind mount point should be showed,"
+ " URI has to end with " + ControllerContext.MOUNT;
+ LOG.debug(errMsg + " for " + identifier);
throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
}
if (module == null) {
final String errMsg = "Module with name '" + moduleNameAndRevision.getLocalName()
+ "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found.";
+ LOG.debug(errMsg);
throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT);
}
} else {
final String errMsg = "URI has bad format. If operations behind mount point should be showed, URI has to end with ";
+ LOG.debug(errMsg + ControllerContext.MOUNT + " for " + identifier);
throw new RestconfDocumentedException(errMsg + ControllerContext.MOUNT, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
}
private Module getRestconfModule() {
final Module restconfModule = controllerContext.getRestconfModule();
if (restconfModule == null) {
+ LOG.debug("ietf-restconf module was not found.");
throw new RestconfDocumentedException("ietf-restconf module was not found.", ErrorType.APPLICATION,
ErrorTag.OPERATION_NOT_SUPPORTED);
}
final Iterable<String> split = splitter.split(moduleNameAndRevision);
final List<String> pathArgs = Lists.<String> newArrayList(split);
if (pathArgs.size() < 2) {
+ LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
throw new RestconfDocumentedException(
"URI has bad format. End of URI should be in format \'moduleName/yyyy-MM-dd\'", ErrorType.PROTOCOL,
ErrorTag.INVALID_VALUE);
final Date moduleRevision = REVISION_FORMAT.parse(revision);
return QName.create(null, moduleRevision, moduleName);
} catch (final ParseException e) {
+ LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
throw new RestconfDocumentedException("URI has bad format. It should be \'moduleName/yyyy-MM-dd\'",
ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
}
if (identifier.contains(MOUNT_POINT_MODULE_NAME) && mountPoint != null) {
final Optional<DOMRpcService> mountRpcServices = mountPoint.getService(DOMRpcService.class);
if ( ! mountRpcServices.isPresent()) {
+ LOG.debug("Error: Rpc service is missing.");
throw new RestconfDocumentedException("Rpc service is missing.");
}
schemaContext = mountPoint.getSchemaContext();
if (retValue.getErrors() == null || retValue.getErrors().isEmpty()) {
return retValue;
}
+ LOG.debug("RpcError message", retValue.getErrors());
throw new RestconfDocumentedException("RpcError message", null, retValue.getErrors());
} catch (final InterruptedException e) {
- throw new RestconfDocumentedException(
- "The operation was interrupted while executing and did not complete.", ErrorType.RPC,
- ErrorTag.PARTIAL_OPERATION);
+ final String errMsg = "The operation was interrupted while executing and did not complete.";
+ LOG.debug("Rpc Interrupt - " + errMsg, e);
+ throw new RestconfDocumentedException(errMsg, ErrorType.RPC, ErrorTag.PARTIAL_OPERATION);
} catch (final ExecutionException e) {
+ LOG.debug("Execution RpcError: ", e);
Throwable cause = e.getCause();
if (cause != null) {
while (cause.getCause() != null) {
throw new RestconfDocumentedException(cause.getMessage(), ErrorType.PROTOCOL,
ErrorTag.INVALID_VALUE);
}
-
- throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",
- cause);
+ throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",cause);
} else {
- throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",
- e);
+ throw new RestconfDocumentedException("The operation encountered an unexpected error while executing.",e);
}
} catch (final CancellationException e) {
- throw new RestconfDocumentedException("The operation was cancelled while executing.", ErrorType.RPC,
- ErrorTag.PARTIAL_OPERATION);
+ final String errMsg = "The operation was cancelled while executing.";
+ LOG.debug("Cancel RpcExecution: " + errMsg, e);
+ throw new RestconfDocumentedException(errMsg, ErrorType.RPC, ErrorTag.PARTIAL_OPERATION);
}
}
final Object pathValue = path.isPresent() ? path.get().getValue() : null;
if (!(pathValue instanceof YangInstanceIdentifier)) {
- throw new RestconfDocumentedException("Instance identifier was not normalized correctly.",
- ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
+ final String errMsg = "Instance identifier was not normalized correctly ";
+ LOG.debug(errMsg + rpcQName);
+ throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED);
}
final YangInstanceIdentifier pathIdentifier = ((YangInstanceIdentifier) pathValue);
if (!pathIdentifier.isEmpty()) {
final String fullRestconfIdentifier = controllerContext.toFullRestconfIdentifier(pathIdentifier, null);
- LogicalDatastoreType datastore = parseEnumTypeParameter(value, LogicalDatastoreType.class,
- DATASTORE_PARAM_NAME);
+ LogicalDatastoreType datastore = parseEnumTypeParameter(value, LogicalDatastoreType.class, DATASTORE_PARAM_NAME);
datastore = datastore == null ? DEFAULT_DATASTORE : datastore;
DataChangeScope scope = parseEnumTypeParameter(value, DataChangeScope.class, SCOPE_PARAM_NAME);
}
if (Strings.isNullOrEmpty(streamName)) {
- throw new RestconfDocumentedException(
- "Path is empty or contains value node which is not Container or List build-in type.",
- ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
+ final String errMsg = "Path is empty or contains value node which is not Container or List build-in type.";
+ LOG.debug(errMsg + pathIdentifier);
+ throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
}
final QName outputQname = QName.create(rpcQName, "output");
} else if (identifier.indexOf("/") != CHAR_NOT_FOUND) {
final String slashErrorMsg = String.format("Identifier %n%s%ncan\'t contain slash "
+ "character (/).%nIf slash is part of identifier name then use %%2F placeholder.", identifier);
+ LOG.debug(slashErrorMsg);
throw new RestconfDocumentedException(slashErrorMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
} else {
identifierEncoded = identifier;
}
if (rpc == null) {
+ LOG.debug("RPC " + identifierDecoded + " does not exist.");
throw new RestconfDocumentedException("RPC does not exist.", ErrorType.RPC, ErrorTag.UNKNOWN_ELEMENT);
}
if (rpc.getInput() != null) {
+ LOG.debug("RPC " + rpc + " does not need input value.");
// FIXME : find a correct Error from specification
throw new IllegalStateException("RPC " + rpc + " does'n need input value!");
}
private RpcDefinition findRpc(final SchemaContext schemaContext, final String identifierDecoded) {
final String[] splittedIdentifier = identifierDecoded.split(":");
if (splittedIdentifier.length != 2) {
- throw new RestconfDocumentedException(identifierDecoded
- + " couldn't be splitted to 2 parts (module:rpc name)", ErrorType.APPLICATION,
- ErrorTag.INVALID_VALUE);
+ final String errMsg = identifierDecoded + " couldn't be splitted to 2 parts (module:rpc name)";
+ LOG.debug(errMsg);
+ throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.INVALID_VALUE);
}
for (final Module module : schemaContext.getModules()) {
if (module.getName().equals(splittedIdentifier[0])) {
data = broker.readConfigurationData(normalizedII);
}
if(data == null) {
- throw new RestconfDocumentedException(
- "Request could not be completed because the relevant data model content does not exist.",
- ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
+ final String errMsg = "Request could not be completed because the relevant data model content does not exist ";
+ LOG.debug(errMsg + identifier);
+ throw new RestconfDocumentedException(errMsg, ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
}
return new NormalizedNodeContext(iiWithData, data);
}
data = broker.readOperationalData(normalizedII);
}
if(data == null) {
- throw new RestconfDocumentedException(
- "Request could not be completed because the relevant data model content does not exist.",
- ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
+ final String errMsg = "Request could not be completed because the relevant data model content does not exist ";
+ LOG.debug(errMsg + identifier);
+ throw new RestconfDocumentedException(errMsg , ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
}
return new NormalizedNodeContext(iiWithData, data);
}
} catch (final TransactionCommitFailedException e) {
if(e instanceof OptimisticLockFailedException) {
if(--tries <= 0) {
- LOG.debug("Got OptimisticLockFailedException on last try - failing");
+ LOG.debug("Got OptimisticLockFailedException on last try - failing " + identifier);
throw new RestconfDocumentedException(e.getMessage(), e, e.getErrorList());
}
- LOG.debug("Got OptimisticLockFailedException - trying again");
+ LOG.debug("Got OptimisticLockFailedException - trying again " + identifier);
} else {
+ LOG.debug("Update ConfigDataStore fail " + identifier, e);
throw new RestconfDocumentedException(e.getMessage(), e, e.getErrorList());
}
}
if (parentSchemaNode instanceof RpcDefinition) {
return yangIdent;
}
- final String errMsg = "Error parsing input: DataSchemaNode has not children";
+ final String errMsg = "Error parsing input: DataSchemaNode has not children ";
+ LOG.info(errMsg + yangIdent);
throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE);
}
} catch(final RestconfDocumentedException e) {
throw e;
} catch (final Exception e) {
- throw new RestconfDocumentedException("Error creating data", e);
+ final String errMsg = "Error creating data ";
+ LOG.info(errMsg + uriInfo.getPath(), e);
+ throw new RestconfDocumentedException(errMsg, e);
}
final ResponseBuilder responseBuilder = Response.status(Status.NO_CONTENT);
try {
uriBuilder.path(controllerContext.toFullRestconfIdentifier(normalizedII, mountPoint));
} catch (final Exception e) {
- LOG.debug("Location for instance identifier"+normalizedII+"wasn't created", e);
+ LOG.info("Location for instance identifier" + normalizedII + "wasn't created", e);
return null;
}
return uriBuilder.build();
if (searchedException.isPresent()) {
throw new RestconfDocumentedException("Data specified for deleting doesn't exist.", ErrorType.APPLICATION, ErrorTag.DATA_MISSING);
}
- throw new RestconfDocumentedException("Error while deleting data", e);
+ final String errMsg = "Error while deleting data";
+ LOG.info(errMsg, e);
+ throw new RestconfDocumentedException(errMsg, e);
}
return Response.status(Status.OK).build();
}