# ==================================================================================
-# Copyright (c) 2019 Nokia
-# Copyright (c) 2018-2019 AT&T Intellectual Property.
+# Copyright (c) 2019 Nordix Foundation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
responses:
'200':
description: >
- Successfully got the list of all nearRT-RICs.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_NRRids_list_schema"
-
+ "$ref": "#/components/schemas/output_NRRids_list_code_schema"
+
'/A1-ADAPTER-API:getHealthCheck':
post:
description: >
responses:
'200':
description: >
- Successfully got the health status.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_healthstatus_schema"
-
+ "$ref": "#/components/schemas/output_healthstatus_code_schema"
+
'/A1-ADAPTER-API:getPolicyTypes':
post:
description: >
responses:
'200':
description: >
- Successfully got the list of all policy-type-ids.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_PTids_list_schema"
-
+ "$ref": "#/components/schemas/output_PTids_list_code_schema"
+
'/A1-ADAPTER-API:createPolicyType':
post:
description: >
schema:
"$ref": "#/components/schemas/input_NRRid_PTid_desc_name_PT_schema"
responses:
- '201':
+ '200':
description: >
- Successfully created the policy type.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_status_code_schema"
- '400':
- description: >
- illegal policy_type_id, or this policy type already exists
-
+ "$ref": "#/components/schemas/output_code_schema"
+
'/A1-ADAPTER-API:getPolicyType':
post:
description: >
responses:
'200':
description: >
- Successfully got the policy type.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_desc_name_PT_schema"
- '404':
- description: >
- there is no policy type with this policy_type_id
-
+ "$ref": "#/components/schemas/output_desc_name_PT_code_schema"
+
'/A1-ADAPTER-API:deletePolicyType':
post:
description: >
schema:
"$ref": "#/components/schemas/input_NRRid_PTid_schema"
responses:
- '204':
- description: >
- Successfully deleted the policy type.
- '400':
- description: >
- Policy type cannot be deleted because there are instances. All instances must be removed before a policy type can be deleted.
- '404':
+ '200':
description: >
- there is no policy type with this policy_type_id
-
+ Successfully got the response.
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/output_code_schema"
+
'/A1-ADAPTER-API:getPolicyInstances':
post:
description: >
responses:
'200':
description: >
- Successfully got the list of all policy-instance-ids for this policy-type-id.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_PIids_list_schema"
- '404':
- description: >
- there is no policy type with this policy_type_id
-
+ "$ref": "#/components/schemas/output_PIids_list_code_schema"
+
'/A1-ADAPTER-API:createPolicyInstance':
post:
description: >
schema:
"$ref": "#/components/schemas/input_NRRid_PTid_PIid_PI_schema"
responses:
- '201':
- description: >
- Successfully created the policy instance.
- '400':
- description: >
- Bad input data for this policy instance.
- '404':
+ '200':
description: >
- there is no policy type with this policy_type_id
-
+ Successfully got the response.
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/output_code_schema"
+
'/A1-ADAPTER-API:getPolicyInstance':
post:
description: >
responses:
'200':
description: >
- Successfully got the policy instance.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_PI_schema"
- '404':
- description: >
- there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
+ "$ref": "#/components/schemas/output_PI_code_schema"
'/A1-ADAPTER-API:deletePolicyInstance':
post:
schema:
"$ref": "#/components/schemas/input_NRRid_PTid_PIid_schema"
responses:
- '204':
- description: >
- Successfully deleted the policy instance.
- '404':
+ '200':
description: >
- there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
-
+ Successfully got the response.
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/output_code_schema"
+
'/A1-ADAPTER-API:getStatus':
post:
description: >
responses:
'200':
description: >
- Successfully got the policy instance status.
+ Successfully got the response.
content:
application/json:
schema:
- "$ref": "#/components/schemas/output_status_schema"
- '404':
- description: >
- there is no policy instance with this policy_instance_id or there is no policy type with this policy_type_id
+ "$ref": "#/components/schemas/output_status_code_schema"
-components:
+components:
schemas:
input_NRRid_schema:
type: object
properties:
near-rt-ric-id:
"$ref": "#/components/schemas/near_rt_ric_id"
-
+
input_NRRid_PTid_schema:
type: object
required:
"$ref": "#/components/schemas/near_rt_ric_id"
policy-type-id:
"$ref": "#/components/schemas/policy_type_id"
-
+
input_NRRid_PTid_PIid_schema:
type: object
required:
"$ref": "#/components/schemas/policy_type_id"
policy-instance-id:
"$ref": "#/components/schemas/policy_instance_id"
-
+
input_NRRid_PTid_PIid_PI_schema:
type: object
required:
"$ref": "#/components/schemas/policy_instance_id"
policy-instance:
"$ref": "#/components/schemas/policy_instance"
-
+
input_NRRid_PTid_desc_name_PT_schema:
type: object
required:
type: string
policy-type:
"$ref": "#/components/schemas/policy_type"
-
- output_NRRids_list_schema:
+
+ output_NRRids_list_code_schema:
type: object
required:
- output
type: object
required:
- near-rt-ric-id-list
+ - code
additionalProperties: false
properties:
near-rt-ric-id-list:
type: array
items:
"$ref": "#/components/schemas/near_rt_ric_id"
-
- output_healthstatus_schema:
+ code:
+ type: string
+
+ output_healthstatus_code_schema:
type: object
required:
- output
type: object
required:
- health-status
+ - code
additionalProperties: false
properties:
health-status:
type: boolean
-
- output_desc_name_PT_schema:
+ code:
+ type: string
+
+ output_desc_name_PT_code_schema:
type: object
required:
- output
- description
- name
- policy_type
+ - code
additionalProperties: false
properties:
description:
type: string
policy-type:
"$ref": "#/components/schemas/policy_type"
-
- output_PTids_list_schema:
+ code:
+ type: string
+
+ output_PTids_list_code_schema:
type: object
required:
- output
type: object
required:
- policy-type-id-list
+ - code
additionalProperties: false
properties:
policy-type-id-list:
type: array
items:
"$ref": "#/components/schemas/policy_type_id"
-
- output_PIids_list_schema:
+ code:
+ type: string
+
+ output_PIids_list_code_schema:
type: object
required:
- output
type: object
required:
- policy-instance-id-list
+ - code
additionalProperties: false
properties:
policy-instance-id-list:
type: array
items:
"$ref": "#/components/schemas/policy_instance_id"
-
- output_PI_schema:
+ code:
+ type: string
+
+ output_PI_code_schema:
type: object
required:
- output
type: object
required:
- policy-instance
+ - code
additionalProperties: false
properties:
policy-instance:
"$ref": "#/components/schemas/policy_instance"
-
- output_status_schema:
+ code:
+ type: string
+
+ output_code_schema:
type: object
required:
- output
output:
type: object
required:
- - status
+ - code
additionalProperties: false
properties:
- status:
+ code:
type: string
-
+
output_status_code_schema:
type: object
required:
type: string
code:
type: string
-
+
near_rt_ric_id:
description: >
represents a near RT RIC identifier. Currently this can be any string.
type: string
example: near-rt-ric-1
-
+
policy_type_id:
description: >
- represents a policy type identifier. Currently this is restricted to an integer range.
+ represents a policy type identifier. Currently this is an integer.
type: integer
- minimum: 20000
- maximum: 21023
example: 20000
policy_instance_id:
represents a policy instance identifier. UUIDs are advisable but can be any string
type: string
example: 3d2157af-6a8f-4a7c-810f-38c2f824bf12
-
+
policy_type:
description: >
represents a policy type. String is used for now to represent this
type: string
- example:
+ example:
"{type: A}"
-
+
policy_instance:
description: >
represents a policy instance. String is used for now to represent this
type: string
- example:
+ example:
"{slice_id: slice-1, priority_level: high}"
-
+
securitySchemes:
basicAuth:
type: http
scheme: basic
-
+
security:
- basicAuth: []
\ No newline at end of file
import org.oransc.ric.a1controller.client.model.InputNRRidPTidSchemaInput;
import org.oransc.ric.a1controller.client.model.InputNRRidSchema;
import org.oransc.ric.a1controller.client.model.InputNRRidSchemaInput;
-import org.oransc.ric.a1controller.client.model.OutputDescNamePTSchema;
-import org.oransc.ric.a1controller.client.model.OutputDescNamePTSchemaOutput;
-import org.oransc.ric.a1controller.client.model.OutputPISchema;
-import org.oransc.ric.a1controller.client.model.OutputPIidsListSchema;
-import org.oransc.ric.a1controller.client.model.OutputPTidsListSchema;
+import org.oransc.ric.a1controller.client.model.OutputCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputDescNamePTCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputDescNamePTCodeSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputPICodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputPIidsListCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputPTidsListCodeSchema;
import org.oransc.ric.portal.dashboard.DashboardApplication;
import org.oransc.ric.portal.dashboard.DashboardConstants;
+import org.oransc.ric.portal.dashboard.exceptions.HttpBadRequestException;
+import org.oransc.ric.portal.dashboard.exceptions.HttpInternalServerErrorException;
+import org.oransc.ric.portal.dashboard.exceptions.HttpNotFoundException;
+import org.oransc.ric.portal.dashboard.exceptions.HttpNotImplementedException;
import org.oransc.ric.portal.dashboard.model.PolicyInstance;
import org.oransc.ric.portal.dashboard.model.PolicyInstances;
import org.oransc.ric.portal.dashboard.model.PolicyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.access.annotation.Secured;
import org.springframework.util.Assert;
nrrid.setNearRtRicId(NEAR_RT_RIC_ID);
InputNRRidSchema inputSchema = new InputNRRidSchema();
inputSchema.setInput(nrrid);
- OutputPTidsListSchema outputPTidsListSchema =
+ OutputPTidsListCodeSchema outputPTidsListCodeSchema =
a1ControllerApi.a1ControllerGetAllPolicyTypes(inputSchema);
- List<Integer> policyTypeIds = outputPTidsListSchema.getOutput().getPolicyTypeIdList();
+ checkHttpError(outputPTidsListCodeSchema.getOutput().getCode());
+ List<Integer> policyTypeIds = outputPTidsListCodeSchema.getOutput().getPolicyTypeIdList();
PolicyTypes policyTypes = new PolicyTypes();
InputNRRidPTidSchema typeSchema = new InputNRRidPTidSchema();
InputNRRidPTidSchemaInput typeId = new InputNRRidPTidSchemaInput();
for (Integer policyTypeId : policyTypeIds) {
typeId.setPolicyTypeId(policyTypeId);
typeSchema.setInput(typeId);
- OutputDescNamePTSchema controllerGetPolicyType =
+ OutputDescNamePTCodeSchema controllerGetPolicyType =
a1ControllerApi.a1ControllerGetPolicyType(typeSchema);
- OutputDescNamePTSchemaOutput policyTypeSchema = controllerGetPolicyType.getOutput();
+ checkHttpError(controllerGetPolicyType.getOutput().getCode());
+ OutputDescNamePTCodeSchemaOutput policyTypeSchema = controllerGetPolicyType.getOutput();
PolicyType type = new PolicyType(policyTypeId, policyTypeSchema.getName(),
policyTypeSchema.getDescription(), policyTypeSchema.getPolicyType().toString());
policyTypes.add(type);
typeIdInput.setPolicyTypeId(policyTypeId);
InputNRRidPTidSchema inputSchema = new InputNRRidPTidSchema();
inputSchema.setInput(typeIdInput);
- OutputPIidsListSchema controllerGetAllInstancesForType =
+ OutputPIidsListCodeSchema controllerGetAllInstancesForType =
a1ControllerApi.a1ControllerGetAllInstancesForType(inputSchema);
+ checkHttpError(controllerGetAllInstancesForType.getOutput().getCode());
List<String> instancesForType = controllerGetAllInstancesForType.getOutput().getPolicyInstanceIdList();
PolicyInstances instances = new PolicyInstances();
InputNRRidPTidPIidSchemaInput instanceIdInput = new InputNRRidPTidPIidSchemaInput();
for (String instanceId : instancesForType) {
instanceIdInput.setPolicyInstanceId(instanceId);
instanceInputSchema.setInput(instanceIdInput);
- OutputPISchema policyInstance =
+ OutputPICodeSchema policyInstance =
a1ControllerApi.a1ControllerGetPolicyInstance(instanceInputSchema);
+ checkHttpError(policyInstance.getOutput().getCode());
PolicyInstance instance =
new PolicyInstance(instanceId, policyInstance.getOutput().getPolicyInstance());
instances.add(instance);
instanceIdInput.setPolicyInstanceId(policyInstanceId);
InputNRRidPTidPIidSchema inputSchema = new InputNRRidPTidPIidSchema();
inputSchema.setInput(instanceIdInput);
- OutputPISchema policyInstance = a1ControllerApi.a1ControllerGetPolicyInstance(inputSchema);
+ OutputPICodeSchema policyInstance = a1ControllerApi.a1ControllerGetPolicyInstance(inputSchema);
+ checkHttpError(policyInstance.getOutput().getCode());
return policyInstance.getOutput().getPolicyInstance();
}
createInstanceInput.setPolicyInstance(instance);
InputNRRidPTidPIidPISchema inputSchema = new InputNRRidPTidPIidPISchema();
inputSchema.setInput(createInstanceInput);
- a1ControllerApi.a1ControllerCreatePolicyInstance(inputSchema);
+ OutputCodeSchema outputCodeSchema = a1ControllerApi.a1ControllerCreatePolicyInstance(inputSchema);
+ checkHttpError(outputCodeSchema.getOutput().getCode());
}
@ApiOperation(value = "Deletes the policy instances for the given policy type.")
instanceIdInput.setPolicyInstanceId(policyInstanceId);
InputNRRidPTidPIidSchema inputSchema = new InputNRRidPTidPIidSchema();
inputSchema.setInput(instanceIdInput);
- a1ControllerApi.a1ControllerDeletePolicyInstance(inputSchema);
+ OutputCodeSchema outputCodeSchema = a1ControllerApi.a1ControllerDeletePolicyInstance(inputSchema);
+ checkHttpError(outputCodeSchema.getOutput().getCode());
+ }
+
+ private void checkHttpError(String httpCode) {
+ logger.debug("Http Response Code: {}", httpCode);
+ if (httpCode.equals(String.valueOf(HttpStatus.NOT_FOUND.value()))) {
+ logger.error("Caught HttpNotFoundException");
+ throw new HttpNotFoundException("Not Found Exception");
+ } else if (httpCode.equals(String.valueOf(HttpStatus.BAD_REQUEST.value()))) {
+ logger.error("Caught HttpBadRequestException");
+ throw new HttpBadRequestException("Bad Request Exception");
+ } else if (httpCode.equals(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()))) {
+ logger.error("Caught HttpInternalServerErrorException");
+ throw new HttpInternalServerErrorException("Internal Server Error Exception");
+ } else if (httpCode.equals(String.valueOf(HttpStatus.NOT_IMPLEMENTED.value()))) {
+ logger.error("Caught HttpNotImplementedException");
+ throw new HttpNotImplementedException("Not Implemented Exception");
+ }
}
}
--- /dev/null
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================LICENSE_END===================================
+ */
+package org.oransc.ric.portal.dashboard.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.BAD_REQUEST)
+public class HttpBadRequestException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1402302710014461941L;
+
+ public HttpBadRequestException(String message) {
+ super(message);
+ }
+
+}
--- /dev/null
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================LICENSE_END===================================
+ */
+package org.oransc.ric.portal.dashboard.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
+public class HttpInternalServerErrorException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6821547799515184764L;
+
+ public HttpInternalServerErrorException(String message) {
+ super(message);
+ }
+
+}
--- /dev/null
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================LICENSE_END===================================
+ */
+package org.oransc.ric.portal.dashboard.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.NOT_FOUND)
+public class HttpNotFoundException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4755191883669549764L;
+
+ public HttpNotFoundException(String message) {
+ super(message);
+ }
+
+}
--- /dev/null
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================LICENSE_END===================================
+ */
+package org.oransc.ric.portal.dashboard.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.NOT_IMPLEMENTED)
+public class HttpNotImplementedException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2697666454489763009L;
+
+ public HttpNotImplementedException(String message) {
+ super(message);
+ }
+
+}
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-
+import com.fasterxml.jackson.core.JsonProcessingException;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-
import org.oransc.ric.a1controller.client.api.A1ControllerApi;
import org.oransc.ric.a1controller.client.invoker.ApiClient;
import org.oransc.ric.a1controller.client.model.InputNRRidPTidPIidPISchema;
import org.oransc.ric.a1controller.client.model.InputNRRidPTidPIidSchema;
import org.oransc.ric.a1controller.client.model.InputNRRidPTidSchema;
import org.oransc.ric.a1controller.client.model.InputNRRidSchema;
-import org.oransc.ric.a1controller.client.model.OutputDescNamePTSchema;
-import org.oransc.ric.a1controller.client.model.OutputDescNamePTSchemaOutput;
-import org.oransc.ric.a1controller.client.model.OutputPISchema;
-import org.oransc.ric.a1controller.client.model.OutputPISchemaOutput;
-import org.oransc.ric.a1controller.client.model.OutputPIidsListSchema;
-import org.oransc.ric.a1controller.client.model.OutputPIidsListSchemaOutput;
-import org.oransc.ric.a1controller.client.model.OutputPTidsListSchema;
-import org.oransc.ric.a1controller.client.model.OutputPTidsListSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputCodeSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputDescNamePTCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputDescNamePTCodeSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputPICodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputPICodeSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputPIidsListCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputPIidsListCodeSchemaOutput;
+import org.oransc.ric.a1controller.client.model.OutputPTidsListCodeSchema;
+import org.oransc.ric.a1controller.client.model.OutputPTidsListCodeSchemaOutput;
import org.oransc.ric.portal.dashboard.model.PolicyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Profile;
import org.springframework.http.HttpStatus;
-import com.fasterxml.jackson.core.JsonProcessingException;
-
/**
* Creates a mock implementation of the A1 controller client API.
*/
Thread.sleep(delayMs);
}
List<Integer> types = database.getTypes();
- OutputPTidsListSchemaOutput output = new OutputPTidsListSchemaOutput();
+ OutputPTidsListCodeSchemaOutput output = new OutputPTidsListCodeSchemaOutput();
output.setPolicyTypeIdList(types);
- OutputPTidsListSchema outputSchema = new OutputPTidsListSchema();
+ output.setCode(String.valueOf(HttpStatus.OK.value()));
+ OutputPTidsListCodeSchema outputSchema = new OutputPTidsListCodeSchema();
outputSchema.setOutput(output);
return outputSchema;
}).when(mockApi).a1ControllerGetAllPolicyTypes(any(InputNRRidSchema.class));
}
InputNRRidPTidSchema input = inv.<InputNRRidPTidSchema>getArgument(0);
PolicyType policyType = database.getPolicyType(input.getInput().getPolicyTypeId());
- OutputDescNamePTSchemaOutput type = new OutputDescNamePTSchemaOutput();
+ OutputDescNamePTCodeSchemaOutput type = new OutputDescNamePTCodeSchemaOutput();
type.setName(policyType.getName());
type.setDescription(policyType.getDescription());
type.setPolicyType(database.normalize(policyType.getCreateSchema()));
- OutputDescNamePTSchema outputSchema = new OutputDescNamePTSchema();
+ type.setCode(String.valueOf(HttpStatus.OK.value()));
+ OutputDescNamePTCodeSchema outputSchema = new OutputDescNamePTCodeSchema();
outputSchema.setOutput(type);
return outputSchema;
}).when(mockApi).a1ControllerGetPolicyType(any(InputNRRidPTidSchema.class));
}
InputNRRidPTidSchema input = inv.<InputNRRidPTidSchema>getArgument(0);
List<String> instances = database.getInstances(Optional.of(input.getInput().getPolicyTypeId()));
- OutputPIidsListSchemaOutput instancesOutput = new OutputPIidsListSchemaOutput();
+ OutputPIidsListCodeSchemaOutput instancesOutput = new OutputPIidsListCodeSchemaOutput();
instancesOutput.setPolicyInstanceIdList(instances);
- OutputPIidsListSchema outputSchema = new OutputPIidsListSchema();
+ instancesOutput.setCode(String.valueOf(HttpStatus.OK.value()));
+ OutputPIidsListCodeSchema outputSchema = new OutputPIidsListCodeSchema();
outputSchema.setOutput(instancesOutput);
return outputSchema;
}).when(mockApi).a1ControllerGetAllInstancesForType(any(InputNRRidPTidSchema.class));
Integer polcyTypeId = input.getInput().getPolicyTypeId();
String instanceId = input.getInput().getPolicyInstanceId();
String instance = database.normalize(database.getInstance(polcyTypeId, instanceId));
- OutputPISchemaOutput instanceOutput = new OutputPISchemaOutput();
+ OutputPICodeSchemaOutput instanceOutput = new OutputPICodeSchemaOutput();
instanceOutput.setPolicyInstance(instance);
- OutputPISchema outputSchema = new OutputPISchema();
+ instanceOutput.setCode(String.valueOf(HttpStatus.OK.value()));
+ OutputPICodeSchema outputSchema = new OutputPICodeSchema();
outputSchema.setOutput(instanceOutput);
return outputSchema;
}).when(mockApi).a1ControllerGetPolicyInstance(any(InputNRRidPTidPIidSchema.class));
String instanceId = input.getInput().getPolicyInstanceId();
String instance = input.getInput().getPolicyInstance();
database.putInstance(polcyTypeId, instanceId, instance);
- return null;
+ OutputCodeSchemaOutput outputCodeSchemaOutput = new OutputCodeSchemaOutput();
+ outputCodeSchemaOutput.setCode(String.valueOf(HttpStatus.CREATED.value()));
+ OutputCodeSchema outputCodeSchema = new OutputCodeSchema();
+ outputCodeSchema.setOutput(outputCodeSchemaOutput);
+ return outputCodeSchema;
}).when(mockApi).a1ControllerCreatePolicyInstance(any(InputNRRidPTidPIidPISchema.class));
doAnswer(inv -> {
Integer polcyTypeId = input.getInput().getPolicyTypeId();
String instanceId = input.getInput().getPolicyInstanceId();
database.deleteInstance(polcyTypeId, instanceId);
- return null;
+ OutputCodeSchemaOutput outputCodeSchemaOutput = new OutputCodeSchemaOutput();
+ outputCodeSchemaOutput.setCode(String.valueOf(HttpStatus.NO_CONTENT.value()));
+ OutputCodeSchema outputCodeSchema = new OutputCodeSchema();
+ outputCodeSchema.setOutput(outputCodeSchemaOutput);
+ return outputCodeSchema;
}).when(mockApi).a1ControllerDeletePolicyInstance(any(InputNRRidPTidPIidSchema.class));
return mockApi;
\r
revision "2019-10-02" {\r
description\r
- "A1 adapter for Frankfurt";\r
+ "A1 adapter";\r
}\r
\r
-///Flattend interface using RPC\r
+ ///Flattend interface using RPC\r
\r
//Get an array of near-rt-ric IDs,\r
//Each item in the returned array will be regarded as one near-rt-ric-id.\r
leaf-list near-rt-ric-id-list {\r
type string;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
leaf health-status {\r
type boolean;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
leaf-list policy-type-id-list {\r
type uint32;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
}\r
}\r
output {\r
- leaf status {\r
- type string;\r
- }\r
leaf code {\r
type string;\r
}\r
leaf policy-type {\r
type string;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
type uint32;\r
}\r
}\r
+ output {\r
+ leaf code {\r
+ type string;\r
+ }\r
+ }\r
}\r
\r
//Get an array of string policy instance ids\r
leaf-list policy-instance-id-list {\r
type string;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
type string;\r
}\r
}\r
+ output {\r
+ leaf code {\r
+ type string;\r
+ }\r
+ }\r
}\r
\r
///Get a policy instance\r
leaf policy-instance {\r
type string;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
\r
type string;\r
}\r
}\r
+ output {\r
+ leaf code {\r
+ type string;\r
+ }\r
+ }\r
}\r
\r
//Get the status for a policy instance\r
leaf status {\r
type string;\r
}\r
+ leaf code {\r
+ type string;\r
+ }\r
}\r
}\r
}
\ No newline at end of file
<artifactId>nonrt-ric-api-model</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
--- /dev/null
+package org.onap.sdnc.northbound.exceptions;
+
+public class NearRtRicNotFoundException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4503072266424371087L;
+
+ public NearRtRicNotFoundException(String message) {
+ super(message);
+ }
+
+}
package org.onap.sdnc.northbound.provider;
-import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.gson.Gson;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.json.JSONObject;
+import org.onap.sdnc.northbound.exceptions.NearRtRicNotFoundException;
import org.onap.sdnc.northbound.restadpter.NearRicUrlProvider;
import org.onap.sdnc.northbound.restadpter.RestAdapter;
import org.onap.sdnc.northbound.restadpter.RestAdapterImpl;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestClientResponseException;
/**
* Defines a base implementation for your provider. This class overrides the generated interface
protected static final String NO_SERVICE_LOGIC_ACTIVE = "No service logic active for ";
private static final String NON_NULL_PARAM = "non-null";
private static final String NULL_PARAM = "null";
- private static final String RESPONSE_SUCCESS = "Success";
- private static final String RESPONSE_CODE_SUCCESS = "200";
private final Logger log = LoggerFactory.getLogger(NonrtRicApiProvider.class);
private final ExecutorService executor;
public ListenableFuture<RpcResult<CreatePolicyInstanceOutput>> createPolicyInstance(
CreatePolicyInstanceInput input) {
log.info("Start of createPolicyInstance");
- String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
- log.info("PUT Request input.getPolicyInstance() : {} ", input.getPolicyInstance());
- restAdapter.put(uri, input.getPolicyInstance());
CreatePolicyInstanceOutputBuilder responseBuilder = new CreatePolicyInstanceOutputBuilder();
+ try {
+ String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
+ log.info("PUT Request input.getPolicyInstance() : {} ", input.getPolicyInstance());
+ ResponseEntity<Void> response = restAdapter.put(uri, input.getPolicyInstance());
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
+ }
log.info("End of createPolicyInstance");
RpcResult<CreatePolicyInstanceOutput> rpcResult = RpcResultBuilder
.<CreatePolicyInstanceOutput>status(true).withResult(responseBuilder.build()).build();
public ListenableFuture<RpcResult<CreatePolicyTypeOutput>> createPolicyType(
CreatePolicyTypeInput input) {
log.info("Start of createPolicyType");
- String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()));
- log.info("PUT Request input.getPolicyType() : {} ", input.getPolicyType());
- restAdapter.put(uri, input.getPolicyType());
CreatePolicyTypeOutputBuilder responseBuilder = new CreatePolicyTypeOutputBuilder();
- responseBuilder.setCode(RESPONSE_CODE_SUCCESS);
- responseBuilder.setStatus(RESPONSE_SUCCESS);
+ try {
+ String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()));
+ log.info("PUT Request input.getPolicyType() : {} ", input.getPolicyType());
+ ResponseEntity<Void> response = restAdapter.put(uri, input.getPolicyType());
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
+ }
log.info("End of createPolicyType");
RpcResult<CreatePolicyTypeOutput> rpcResult = RpcResultBuilder
.<CreatePolicyTypeOutput>status(true).withResult(responseBuilder.build()).build();
public ListenableFuture<RpcResult<DeletePolicyInstanceOutput>> deletePolicyInstance(
DeletePolicyInstanceInput input) {
log.info("Start of deletePolicyInstance");
- String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
- restAdapter.delete(uri);
DeletePolicyInstanceOutputBuilder responseBuilder = new DeletePolicyInstanceOutputBuilder();
+ try {
+ String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
+ ResponseEntity<Void> response = restAdapter.delete(uri);
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
+ }
log.info("End of deletePolicyInstance");
RpcResult<DeletePolicyInstanceOutput> rpcResult = RpcResultBuilder
.<DeletePolicyInstanceOutput>status(true).withResult(responseBuilder.build()).build();
public ListenableFuture<RpcResult<DeletePolicyTypeOutput>> deletePolicyType(
DeletePolicyTypeInput input) {
log.info("Start of deletePolicyType");
- String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()));
- restAdapter.delete(uri);
DeletePolicyTypeOutputBuilder responseBuilder = new DeletePolicyTypeOutputBuilder();
+ try {
+ String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()));
+ ResponseEntity<Void> response = restAdapter.delete(uri);
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
+ }
log.info("End of deletePolicyType");
RpcResult<DeletePolicyTypeOutput> rpcResult = RpcResultBuilder
.<DeletePolicyTypeOutput>status(true).withResult(responseBuilder.build()).build();
public ListenableFuture<RpcResult<GetHealthCheckOutput>> getHealthCheck(
GetHealthCheckInput input) {
log.info("Start of getHealthCheck");
- String uri = nearRicUrlProvider.getHealthCheck(String.valueOf(input.getNearRtRicId()));
- restAdapter.get(uri, String.class);
GetHealthCheckOutputBuilder responseBuilder = new GetHealthCheckOutputBuilder();
- responseBuilder.setHealthStatus(true);
+ try {
+ String uri = nearRicUrlProvider.getHealthCheck(String.valueOf(input.getNearRtRicId()));
+ ResponseEntity<Object> response = restAdapter.get(uri, Object.class);
+ responseBuilder.setHealthStatus(false);
+ if (response.getStatusCode().equals(HttpStatus.OK)) {
+ responseBuilder.setHealthStatus(true);
+ }
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
+ }
log.info("End of getHealthCheck");
RpcResult<GetHealthCheckOutput> rpcResult = RpcResultBuilder.<GetHealthCheckOutput>status(true)
.withResult(responseBuilder.build()).build();
log.info("Start of getNearRTRICs");
GetNearRTRICsOutputBuilder responseBuilder = new GetNearRTRICsOutputBuilder();
responseBuilder.setNearRtRicIdList(nearRicUrlProvider.getNearRTRicIdsList());
+ responseBuilder.setCode(HttpStatus.OK.toString());
log.info("End of getNearRTRICs");
RpcResult<GetNearRTRICsOutput> rpcResult = RpcResultBuilder.<GetNearRTRICsOutput>status(true)
.withResult(responseBuilder.build()).build();
GetPolicyInstanceInput input) {
log.info("Start of getPolicyInstance");
log.info("Policy Type Id : {}, Policy Instance Id : {}", input.getPolicyTypeId(), input.getPolicyInstanceId());
- String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
- Optional<String> policyInstance = restAdapter.get(uri, String.class);
GetPolicyInstanceOutputBuilder responseBuilder = new GetPolicyInstanceOutputBuilder();
- if (policyInstance.isPresent()) {
- log.info("Response policyInstance.get() : {} ", policyInstance.get());
- responseBuilder.setPolicyInstance(policyInstance.get());
+ try {
+ String uri = nearRicUrlProvider.getPolicyInstanceId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
+ ResponseEntity<String> response = restAdapter.get(uri, String.class);
+ if (response.hasBody()) {
+ log.info("Response getPolicyInstance : {} ", response.getBody());
+ responseBuilder.setPolicyInstance(response.getBody());
+ }
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
}
log.info("End of getPolicyInstance");
RpcResult<GetPolicyInstanceOutput> rpcResult = RpcResultBuilder
public ListenableFuture<RpcResult<GetPolicyInstancesOutput>> getPolicyInstances(
GetPolicyInstancesInput input) {
log.info("Start of getPolicyInstances");
- String uri = nearRicUrlProvider.getPolicyInstances(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()));
- Optional<List<String>> policyInstances = restAdapter.get(uri, List.class);
GetPolicyInstancesOutputBuilder responseBuilder = new GetPolicyInstancesOutputBuilder();
- if (policyInstances.isPresent()) {
- log.info("Response policyInstances.get() : {} ", policyInstances.get());
- responseBuilder.setPolicyInstanceIdList(policyInstances.get());
+ try {
+ String uri = nearRicUrlProvider.getPolicyInstances(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()));
+ ResponseEntity<List<String>> response = restAdapter.get(uri, List.class);
+ if (response.hasBody()) {
+ log.info("Response getPolicyInstances : {} ", response.getBody());
+ responseBuilder.setPolicyInstanceIdList(response.getBody());
+ }
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
}
log.info("End of getPolicyInstances");
RpcResult<GetPolicyInstancesOutput> rpcResult = RpcResultBuilder
public ListenableFuture<RpcResult<GetPolicyTypeOutput>> getPolicyType(GetPolicyTypeInput input) {
log.info("Start of getPolicyType");
log.info("Policy Type Id : {} ", input.getPolicyTypeId());
- String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()));
- Optional<String> policyType = restAdapter.get(uri, String.class);
GetPolicyTypeOutputBuilder responseBuilder = new GetPolicyTypeOutputBuilder();
- if (policyType.isPresent()) {
- log.info("Response policyType.get() : {} ", policyType.get());
- JSONObject policyTypeObj = new JSONObject(policyType.get());
- responseBuilder.setDescription(policyTypeObj.getString("description"));
- responseBuilder.setName(policyTypeObj.getString("name"));
- responseBuilder.setPolicyType(policyTypeObj.getJSONObject("create_schema").toString());
+ try {
+ String uri = nearRicUrlProvider.getPolicyTypeId(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()));
+ ResponseEntity<String> response = restAdapter.get(uri, String.class);
+ if (response.hasBody()) {
+ log.info("Response getPolicyType : {} ", response.getBody());
+ JSONObject policyTypeObj = new JSONObject(response.getBody());
+ responseBuilder.setDescription(policyTypeObj.getString("description"));
+ responseBuilder.setName(policyTypeObj.getString("name"));
+ responseBuilder.setPolicyType(policyTypeObj.getJSONObject("create_schema").toString());
+ }
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
}
log.info("End of getPolicyType");
RpcResult<GetPolicyTypeOutput> rpcResult = RpcResultBuilder.<GetPolicyTypeOutput>status(true)
public ListenableFuture<RpcResult<GetPolicyTypesOutput>> getPolicyTypes(
GetPolicyTypesInput input) {
log.info("Start of getPolicyTypes");
- String uri = nearRicUrlProvider.getPolicyTypes(String.valueOf(input.getNearRtRicId()));
- Optional<List<Integer>> policyTypes = restAdapter.get(uri, List.class);
GetPolicyTypesOutputBuilder responseBuilder = new GetPolicyTypesOutputBuilder();
- if (policyTypes.isPresent()) {
- log.info("Response policyTypes.get() : {} ", policyTypes.get());
- List<Integer> policyTypesListInteger = policyTypes.get();
- List<Long> policyTypesListLong = new ArrayList<>();
- for(Integer i : policyTypesListInteger){
- policyTypesListLong.add(i.longValue());
+ try {
+ String uri = nearRicUrlProvider.getPolicyTypes(String.valueOf(input.getNearRtRicId()));
+ ResponseEntity<List<Integer>> response = restAdapter.get(uri, List.class);
+ if (response.hasBody()) {
+ log.info("Response getPolicyTypes : {} ", response.getBody());
+ List<Integer> policyTypesListInteger = response.getBody();
+ List<Long> policyTypesListLong = new ArrayList<>();
+ for(Integer i : policyTypesListInteger){
+ policyTypesListLong.add(i.longValue());
+ }
+ responseBuilder.setPolicyTypeIdList(policyTypesListLong);
}
- responseBuilder.setPolicyTypeIdList(policyTypesListLong);
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
}
log.info("End of getPolicyTypes");
RpcResult<GetPolicyTypesOutput> rpcResult = RpcResultBuilder.<GetPolicyTypesOutput>status(true)
@Override
public ListenableFuture<RpcResult<GetStatusOutput>> getStatus(GetStatusInput input) {
log.info("Start of getStatus");
- String uri = nearRicUrlProvider.getPolicyInstanceIdStatus(String.valueOf(input.getNearRtRicId()),
- String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
- Optional<String> status = restAdapter.get(uri, String.class);
GetStatusOutputBuilder responseBuilder = new GetStatusOutputBuilder();
- if (status.isPresent()) {
- log.info("Response status.get() : {} ", status.get());
- JSONObject statusObj = new JSONObject(status.get());
- responseBuilder.setStatus(statusObj.getString("status"));
+ try {
+ String uri = nearRicUrlProvider.getPolicyInstanceIdStatus(String.valueOf(input.getNearRtRicId()),
+ String.valueOf(input.getPolicyTypeId()), String.valueOf(input.getPolicyInstanceId()));
+ ResponseEntity<List<Object>> response = restAdapter.get(uri, List.class);
+ if (response.hasBody()) {
+ log.info("Response getStatus : {} ", response.getBody());
+ // only return the status of first handler for compliance with current yang model, ignore handler_id
+ JSONObject statusObj = new JSONObject(new Gson().toJson(response.getBody().get(0)));
+ responseBuilder.setStatus(statusObj.getString("status"));
+ }
+ responseBuilder.setCode(response.getStatusCode().toString());
+ } catch (NearRtRicNotFoundException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(HttpStatus.INTERNAL_SERVER_ERROR.toString());
+ } catch (RestClientResponseException ex) {
+ log.error("Caught exception: {}", ex);
+ responseBuilder.setCode(String.valueOf(ex.getRawStatusCode()));
}
log.info("End of getStatus");
RpcResult<GetStatusOutput> rpcResult =
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
+import org.onap.sdnc.northbound.exceptions.NearRtRicNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.util.UriComponentsBuilder;
* @return the base url
*/
public String getBaseUrl(final String nearRtRicId) {
+ if (!nearRicMap.containsKey(nearRtRicId)) {
+ throw new NearRtRicNotFoundException("NearRtRic with this ID is not known by the A1 controller");
+ }
String baseUrl = "http://" + nearRicMap.get(nearRtRicId) + "/a1-p/";
return UriComponentsBuilder.fromUriString(baseUrl).build().toString();
}
* @param policyTypeId Policy Type Id
* @return the policy type id url
*/
- public String getPolicyTypeId(final String nearRtRicId, final String policyTypeId) {
+ public String getPolicyTypeId(final String nearRtRicId,
+ final String policyTypeId) {
return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicId)).pathSegment("policytypes")
.pathSegment(policyTypeId).build().toString();
}
* @param policyTypeId Policy Type Id
* @return the policy instances for the given policy type
*/
- public String getPolicyInstances(final String nearRtRicId, final String policyTypeId) {
+ public String getPolicyInstances(final String nearRtRicId,
+ final String policyTypeId) {
return UriComponentsBuilder.fromUriString(getPolicyTypeId(nearRtRicId, policyTypeId)).pathSegment("policies")
.build().toString();
}
* @param policyInstanceId Policy Instance Id
* @return the policy instance id for the given policy type
*/
- public String getPolicyInstanceId(final String nearRtRicId, final String policyTypeId, final String policyInstanceId) {
+ public String getPolicyInstanceId(final String nearRtRicId, final String policyTypeId,
+ final String policyInstanceId) {
return UriComponentsBuilder.fromUriString(getPolicyTypeId(nearRtRicId, policyTypeId)).pathSegment("policies")
.pathSegment(policyInstanceId).build().toString();
}
package org.onap.sdnc.northbound.restadpter;
-import com.google.common.base.Optional;
-
+import org.springframework.http.ResponseEntity;
/**
* An interface to wrap the generic HTTP methods
* @return the converted object
*/
- <T> Optional<T> get(final String url, final Class<?> clazz);
+ <T> ResponseEntity<T> get(final String url, final Class<?> clazz);
/**
* Create or update a resource by PUTting the given object to the URI.
* @param request the String to be PUT (may be {@code null})
* @return the response code
*/
- <T> Optional<T> put(final String url, final String body);
+ <T> ResponseEntity<T> put(final String url, final String body);
/**
* Delete resource for the given object to the URI.
* @param url the URL
* @return the response code
*/
- <T> Optional<T> delete(final String url);
+ <T> ResponseEntity<T> delete(final String url);
}
package org.onap.sdnc.northbound.restadpter;
-import com.google.common.base.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
}
@Override
- public <T> Optional<T> get(String uri, Class<?> clazz) {
+ public <T> ResponseEntity<T> get(String uri, Class<?> clazz) {
HttpEntity<?> entity = getHttpEntity(null);
- final ResponseEntity<T> response = invokeHttpRequest(uri, HttpMethod.GET, clazz, entity);
- return buildOptional(response);
+ return invokeHttpRequest(uri, HttpMethod.GET, clazz, entity);
}
@Override
- public <T> Optional<T> put(String uri, String body) {
+ public <T> ResponseEntity<T> put(String uri, String body) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(body, headers);
- final ResponseEntity<T> response = invokeHttpRequest(uri, HttpMethod.PUT, null, entity);
- return buildOptional(response);
+ return invokeHttpRequest(uri, HttpMethod.PUT, null, entity);
}
@Override
- public <T> Optional<T> delete(String uri) {
+ public <T> ResponseEntity<T> delete(String uri) {
HttpEntity<?> entity = getHttpEntity(null);
- final ResponseEntity<T> response = invokeHttpRequest(uri, HttpMethod.DELETE, null, entity);
- return buildOptional(response);
+ return invokeHttpRequest(uri, HttpMethod.DELETE, null, entity);
}
@SuppressWarnings("unchecked")
HttpEntity<?> entity) {
return (ResponseEntity<T>) restTemplate.exchange(uri, httpMethod, entity, clazz);
}
-
- private <T> Optional<T> buildOptional(ResponseEntity<T> response) {
- if (!response.getStatusCode().equals(HttpStatus.OK)
- & !response.getStatusCode().equals(HttpStatus.CREATED)
- & !response.getStatusCode().equals(HttpStatus.NO_CONTENT)) {
- log.error("Failed to get the Response, Status Code = {}", response.getStatusCode());
- return Optional.absent();
- }
- if (response.hasBody()) {
- return Optional.of(response.getBody());
- }
- return Optional.absent();
- }
}
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
-import com.google.common.base.Optional;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyInstanceInputBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyInstanceOutput;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyTypeInputBuilder;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.CreatePolicyTypeOutput;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyInstanceInputBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyInstanceOutput;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyTypeInputBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.DeletePolicyTypeOutput;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetHealthCheckInputBuilder;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetHealthCheckOutput;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetNearRTRICsInputBuilder;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetNearRTRICsOutput;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstanceInputBuilder;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstanceOutput;
import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.a1.adapter.rev191002.GetPolicyInstancesInputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
/**
* This class Tests all the methods in NonrtRicApiProvider
mockRpcProviderRegistry);
}
+ @Test
+ public void testCreatePolicyInstance() throws InterruptedException, ExecutionException {
+ CreatePolicyInstanceInputBuilder inputBuilder = new CreatePolicyInstanceInputBuilder();
+ inputBuilder.setNearRtRicId(nearRtRicId);
+ inputBuilder.setPolicyTypeId(policyTypeId);
+ inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
+ Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
+ String uri = nearRicUrlProvider.getPolicyInstanceId(inputBuilder.build().getNearRtRicId(),
+ String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
+ ResponseEntity<Object> createPolicyInstanceResponse = new ResponseEntity<>(HttpStatus.CREATED);
+ when(restAdapter.put(eq(uri), anyObject())).thenReturn(createPolicyInstanceResponse);
+ ListenableFuture<RpcResult<CreatePolicyInstanceOutput>> result =
+ nonrtRicApiProvider.createPolicyInstance(inputBuilder.build());
+ Assert.assertEquals(String.valueOf(HttpStatus.CREATED.value()), result.get().getResult().getCode());
+ }
+
+ @Test
+ public void testDeletePolicyInstance() throws InterruptedException, ExecutionException {
+ DeletePolicyInstanceInputBuilder inputBuilder = new DeletePolicyInstanceInputBuilder();
+ inputBuilder.setNearRtRicId(nearRtRicId);
+ inputBuilder.setPolicyTypeId(policyTypeId);
+ inputBuilder.setPolicyInstanceId(policyTypeInstanceId);
+ Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
+ String uri = nearRicUrlProvider.getPolicyInstanceId(inputBuilder.build().getNearRtRicId(),
+ String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
+ ResponseEntity<Object> deletePolicyInstanceResponse = new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ when(restAdapter.delete(eq(uri))).thenReturn(deletePolicyInstanceResponse);
+ ListenableFuture<RpcResult<DeletePolicyInstanceOutput>> result =
+ nonrtRicApiProvider.deletePolicyInstance(inputBuilder.build());
+ Assert.assertEquals(String.valueOf(HttpStatus.NO_CONTENT.value()), result.get().getResult().getCode());
+ }
+
+ @Test
+ public void testGetNearRTRICs() throws InterruptedException, ExecutionException {
+ GetNearRTRICsInputBuilder inputBuilder = new GetNearRTRICsInputBuilder();
+ ListenableFuture<RpcResult<GetNearRTRICsOutput>> result =
+ nonrtRicApiProvider.getNearRTRICs(inputBuilder.build());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
+ }
+
@Test
public void testCreatePolicyType() throws InterruptedException, ExecutionException {
CreatePolicyTypeInputBuilder inputBuilder = new CreatePolicyTypeInputBuilder();
Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
String uri = nearRicUrlProvider.getPolicyTypeId(inputBuilder.build().getNearRtRicId(),
String.valueOf(inputBuilder.build().getPolicyTypeId()));
- Optional<Object> createPolicyTyperesponse = null;
- when(restAdapter.put(eq(uri), anyObject())).thenReturn(createPolicyTyperesponse);
+ ResponseEntity<Object> createPolicyTypeResponse = new ResponseEntity<>(HttpStatus.CREATED);
+ when(restAdapter.put(eq(uri), anyObject())).thenReturn(createPolicyTypeResponse);
ListenableFuture<RpcResult<CreatePolicyTypeOutput>> result =
nonrtRicApiProvider.createPolicyType(inputBuilder.build());
- Assert.assertEquals("Success", result.get().getResult().getStatus());
+ Assert.assertEquals(String.valueOf(HttpStatus.CREATED.value()), result.get().getResult().getCode());
+ }
+
+ @Test
+ public void testDeletePolicyType() throws InterruptedException, ExecutionException {
+ DeletePolicyTypeInputBuilder inputBuilder = new DeletePolicyTypeInputBuilder();
+ inputBuilder.setNearRtRicId(nearRtRicId);
+ inputBuilder.setPolicyTypeId(policyTypeId);
+ Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
+ String uri = nearRicUrlProvider.getPolicyTypeId(inputBuilder.build().getNearRtRicId(),
+ String.valueOf(inputBuilder.build().getPolicyTypeId()));
+ ResponseEntity<Object> deletePolicyTypeResponse = new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ when(restAdapter.delete(eq(uri))).thenReturn(deletePolicyTypeResponse);
+ ListenableFuture<RpcResult<DeletePolicyTypeOutput>> result =
+ nonrtRicApiProvider.deletePolicyType(inputBuilder.build());
+ Assert.assertEquals(String.valueOf(HttpStatus.NO_CONTENT.value()), result.get().getResult().getCode());
}
@Test
String.valueOf(inputBuilder.build().getPolicyTypeId()));
String policyType =
"{\"name\":\"Policy type 1\",\"description\":\"PT 1\",\"policy_type_id\":1,\"create_schema\":{}}";
- when(restAdapter.get(eq(uri), anyObject())).thenReturn(Optional.of(policyType));
+ ResponseEntity<Object> getPolicyTypeResponse = new ResponseEntity<>(policyType, HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(getPolicyTypeResponse);
ListenableFuture<RpcResult<GetPolicyTypeOutput>> result =
nonrtRicApiProvider.getPolicyType(inputBuilder.build());
Assert.assertEquals("Policy type 1", result.get().getResult().getName());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
@Test
policyTypesInteger.add(20001);
List<Long> policyTypesLong = new ArrayList<>();
policyTypesLong.add(20001L);
- when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(Optional.of(policyTypesInteger));
+ ResponseEntity<Object> getPolicyTypesResponse = new ResponseEntity<>(policyTypesInteger, HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getPolicyTypesResponse);
ListenableFuture<RpcResult<GetPolicyTypesOutput>> result =
nonrtRicApiProvider.getPolicyTypes(inputBuilder.build());
Assert.assertEquals(policyTypesLong, result.get().getResult().getPolicyTypeIdList());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
@Test
String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
String policyInstance =
"{\"scope\":{\"ue_id\":\"2\"},\"statement\":{\"priority_level\":\"1\"},\"policy_id\":\"pi12\"}";
- when(restAdapter.get(eq(uri), eq(String.class)))
- .thenReturn(Optional.of(policyInstance));
+ ResponseEntity<Object> getPolicyInstanceResponse = new ResponseEntity<>(policyInstance, HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(getPolicyInstanceResponse);
ListenableFuture<RpcResult<GetPolicyInstanceOutput>> result =
nonrtRicApiProvider.getPolicyInstance(inputBuilder.build());
Assert.assertEquals(policyInstance, result.get().getResult().getPolicyInstance());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
@Test
String.valueOf(inputBuilder.build().getPolicyTypeId()));
List<String> policyInstances = new ArrayList<>();
policyInstances.add("3d2157af-6a8f-4a7c-810f-38c2f824bf12");
- when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(Optional.of(policyInstances));
+ ResponseEntity<Object> getPolicyInstancesResponse = new ResponseEntity<>(policyInstances, HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getPolicyInstancesResponse);
ListenableFuture<RpcResult<GetPolicyInstancesOutput>> result =
nonrtRicApiProvider.getPolicyInstances(inputBuilder.build());
Assert.assertEquals(policyInstances, result.get().getResult().getPolicyInstanceIdList());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
@Test
Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
String uri = nearRicUrlProvider.getPolicyInstanceIdStatus(inputBuilder.build().getNearRtRicId(),
String.valueOf(inputBuilder.build().getPolicyTypeId()), inputBuilder.getPolicyInstanceId());
- String policyInstanceStatus = "{\"status\":\"enforced\"}";
- when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(Optional.of(policyInstanceStatus));
+ String policyInstanceStatus = "[{\"handler_id\":\"NearRTRIC-1\",\"status\":\"enforced\"}]";
+ ResponseEntity<Object> getStatusResponse =
+ new ResponseEntity<>(new Gson().fromJson(policyInstanceStatus, List.class), HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(List.class))).thenReturn(getStatusResponse);
ListenableFuture<RpcResult<GetStatusOutput>> result =
nonrtRicApiProvider.getStatus(inputBuilder.build());
Assert.assertEquals("enforced", result.get().getResult().getStatus());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
@Test
- public void testHealthCheck() throws InterruptedException, ExecutionException {
+ public void testGetHealthCheck() throws InterruptedException, ExecutionException {
GetHealthCheckInputBuilder inputBuilder = new GetHealthCheckInputBuilder();
inputBuilder.setNearRtRicId(nearRtRicId);
Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter);
String uri = nearRicUrlProvider.getHealthCheck(inputBuilder.build().getNearRtRicId());
- String healthCheckStatus = "";
- when(restAdapter.get(eq(uri), eq(String.class))).thenReturn(null);
+ ResponseEntity<Object> getHealthCheckResponse = new ResponseEntity<>(HttpStatus.OK);
+ when(restAdapter.get(eq(uri), eq(Object.class))).thenReturn(getHealthCheckResponse);
ListenableFuture<RpcResult<GetHealthCheckOutput>> result =
nonrtRicApiProvider.getHealthCheck(inputBuilder.build());
Assert.assertEquals(true, result.get().getResult().isHealthStatus());
+ Assert.assertEquals(String.valueOf(HttpStatus.OK.value()), result.get().getResult().getCode());
}
}