diff options
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap')
6 files changed, 249 insertions, 3 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java index 8cf51c961..6038ea455 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NetworkCmProxyDataService.java @@ -24,6 +24,7 @@ package org.onap.cps.ncmp.api; import java.util.Collection; import org.checkerframework.checker.nullness.qual.NonNull; +import org.onap.cps.ncmp.api.models.DmiPluginRegistration; import org.onap.cps.spi.FetchDescendantsOption; import org.onap.cps.spi.model.DataNode; @@ -98,4 +99,11 @@ public interface NetworkCmProxyDataService { */ void replaceNodeTree(@NonNull String cmHandle, @NonNull String parentNodeXpath, @NonNull String jsonData); + /** + * Registration of New CM Handles. + * + * @param dmiPluginRegistration Dmi Plugin Registration + */ + void updateDmiPluginRegistration(DmiPluginRegistration dmiPluginRegistration); + } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java index fd8519542..f97ea029d 100755 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImpl.java @@ -22,27 +22,56 @@ package org.onap.cps.ncmp.api.impl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; +import lombok.extern.slf4j.Slf4j; import org.onap.cps.api.CpsDataService; import org.onap.cps.api.CpsQueryService; import org.onap.cps.ncmp.api.NetworkCmProxyDataService; +import org.onap.cps.ncmp.api.models.CmHandle; +import org.onap.cps.ncmp.api.models.DmiPluginRegistration; +import org.onap.cps.ncmp.api.models.PersistenceCmHandle; +import org.onap.cps.ncmp.api.models.PersistenceCmHandlesList; import org.onap.cps.spi.FetchDescendantsOption; +import org.onap.cps.spi.exceptions.DataValidationException; import org.onap.cps.spi.model.DataNode; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +@Slf4j @Service public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService { private static final String NF_PROXY_DATASPACE_NAME = "NFP-Operational"; - @Autowired + private static final String NCMP_DATASPACE_NAME = "NCMP-Admin"; + + private static final String NCMP_ANCHOR_NAME = "ncmp-dmi-registry"; + + private static final String NCMP_DATA_TOP_PATH = "/dmi-registry"; + private CpsDataService cpsDataService; - @Autowired + private ObjectMapper objectMapper; + private CpsQueryService cpsQueryService; + /** + * Constructor Injection for Dependencies. + * @param cpsDataService Data Service Interface + * @param cpsQueryService Query Service Interface + * @param objectMapper Object Mapper + */ + public NetworkCmProxyDataServiceImpl(final CpsDataService cpsDataService, + final CpsQueryService cpsQueryService, final ObjectMapper objectMapper) { + this.cpsDataService = cpsDataService; + this.cpsQueryService = cpsQueryService; + this.objectMapper = objectMapper; + } + private String getDataspaceName() { return NF_PROXY_DATASPACE_NAME; } @@ -82,4 +111,28 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService public void replaceNodeTree(final String cmHandle, final String parentNodeXpath, final String jsonData) { cpsDataService.replaceNodeTree(getDataspaceName(), cmHandle, parentNodeXpath, jsonData); } + + @Override + public void updateDmiPluginRegistration(final DmiPluginRegistration dmiPluginRegistration) { + try { + final List<PersistenceCmHandle> persistenceCmHandles = + new ArrayList<>(); + for (final CmHandle cmHandle: dmiPluginRegistration.getCreatedCmHandles()) { + final PersistenceCmHandle persistenceCmHandle = new PersistenceCmHandle(); + persistenceCmHandle.setDmiServiceName(dmiPluginRegistration.getDmiPlugin()); + persistenceCmHandle.setId(cmHandle.getCmHandle()); + persistenceCmHandle.setAdditionalProperties(cmHandle.getCmHandleProperties()); + persistenceCmHandles.add(persistenceCmHandle); + } + final PersistenceCmHandlesList persistenceCmHandlesList = new PersistenceCmHandlesList(); + persistenceCmHandlesList.setCmHandles(persistenceCmHandles); + final String cmHandleJsonData = objectMapper.writeValueAsString(persistenceCmHandlesList); + cpsDataService.saveListNodeData(NCMP_DATASPACE_NAME, NCMP_ANCHOR_NAME, NCMP_DATA_TOP_PATH, + cmHandleJsonData); + } catch (final JsonProcessingException e) { + throw new DataValidationException( + "Parsing error occurred while processing DMI Plugin Registration" + dmiPluginRegistration, e + .getMessage(), e); + } + } } diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java new file mode 100644 index 000000000..0d1c7693a --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/CmHandle.java @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.models; + +import java.util.Map; +import lombok.Getter; +import lombok.Setter; +import org.springframework.validation.annotation.Validated; + +/** + * CmHandle. + */ +@Validated +@Getter +@Setter +public class CmHandle { + + private String cmHandle; + + private Map<String, String> cmHandleProperties; + +} diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java new file mode 100644 index 000000000..4017c4a56 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/DmiPluginRegistration.java @@ -0,0 +1,39 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + + +package org.onap.cps.ncmp.api.models; + +import java.util.List; +import lombok.Getter; +import lombok.Setter; + +/** + * DmiRegistry. + */ +@Getter +@Setter +public class DmiPluginRegistration { + + private String dmiPlugin; + + private List<CmHandle> createdCmHandles; + +} diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java new file mode 100644 index 000000000..a3f47040b --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandle.java @@ -0,0 +1,70 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + + +package org.onap.cps.ncmp.api.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * DmiRegistry. + */ +@Getter +@Setter +@NoArgsConstructor +public class PersistenceCmHandle { + + private String id; + + @JsonProperty("dmi-service-name") + private String dmiServiceName; + + @JsonProperty("additional-properties") + private List<AdditionalProperty> additionalProperties; + + /** + * Set Additional Properties map, key and value pair. + * @param additionalPropertiesAsMap Map of Additional Properties + */ + public void setAdditionalProperties(final Map<String, String> additionalPropertiesAsMap) { + additionalProperties = new ArrayList<>(additionalPropertiesAsMap.size()); + for (final Map.Entry<String, String> entry : additionalPropertiesAsMap.entrySet()) { + additionalProperties.add(new AdditionalProperty(entry.getKey(), entry.getValue())); + } + } + + @AllArgsConstructor + private static class AdditionalProperty { + + @JsonProperty() + private final String name; + + @JsonProperty() + private final String value; + } + +} diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java new file mode 100644 index 000000000..95e8515d5 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/PersistenceCmHandlesList.java @@ -0,0 +1,36 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.ncmp.api.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.ArrayList; +import java.util.List; + +public class PersistenceCmHandlesList { + + @JsonProperty("cm-handles") + private List<PersistenceCmHandle> cmHandles; + + public void setCmHandles(final List<PersistenceCmHandle> cmHandlesAsList) { + cmHandles = new ArrayList<>(cmHandlesAsList); + } + +} |