From beac33deccb8b7f98e7f96a17541abb81b246d16 Mon Sep 17 00:00:00 2001 From: "George, Lina (lg941u)" Date: Wed, 30 Jan 2019 16:01:19 -0500 Subject: Encryption tool changes for multiple ansibleserver Issue-ID: APPC-1342 Change-Id: Ib1ff7845ad65cf13c06a96d6dcce023b06064dfa Signed-off-by: George, Lina (lg941u) --- appc-config/appc-encryption-tool/provider/pom.xml | 8 + .../appc/encryptiontool/fqdn/ArtifactMapper.java | 45 ++++++ .../appc/encryptiontool/fqdn/CloudOwnerList.java | 57 +++++++ .../onap/appc/encryptiontool/fqdn/FqdnList.java | 113 ++++++++++++++ .../encryptiontool/fqdn/ParseAdminArtifcat.java | 168 +++++++++++++++++++++ .../appc/encryptiontool/fqdn/RegionIdList.java | 57 +++++++ .../appc/encryptiontool/wrapper/Constants.java | 10 +- .../wrapper/EncryptionToolDGWrapper.java | 84 +++++++++-- .../wrapper/WrapperEncryptionTool.java | 81 ++++++++-- .../encryptiontool/MockParseAdminArtifcat.java | 48 ++++++ .../encryptiontool/TestParseAdminArtifact.java | 63 ++++++++ .../resources/org/onap/appc/adminartifcat.json | 93 ++++++++++++ 12 files changed, 799 insertions(+), 28 deletions(-) create mode 100644 appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ArtifactMapper.java create mode 100644 appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/CloudOwnerList.java create mode 100644 appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/FqdnList.java create mode 100644 appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ParseAdminArtifcat.java create mode 100644 appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/RegionIdList.java create mode 100644 appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/MockParseAdminArtifcat.java create mode 100644 appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/TestParseAdminArtifact.java create mode 100644 appc-config/appc-encryption-tool/provider/src/test/resources/org/onap/appc/adminartifcat.json (limited to 'appc-config/appc-encryption-tool') diff --git a/appc-config/appc-encryption-tool/provider/pom.xml b/appc-config/appc-encryption-tool/provider/pom.xml index 39672c6e6..8f3507ec2 100644 --- a/appc-config/appc-encryption-tool/provider/pom.xml +++ b/appc-config/appc-encryption-tool/provider/pom.xml @@ -90,6 +90,14 @@ junit test + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-databind + diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ArtifactMapper.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ArtifactMapper.java new file mode 100644 index 000000000..c7a1ad76e --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ArtifactMapper.java @@ -0,0 +1,45 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool.fqdn; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@JsonIgnoreProperties(ignoreUnknown = true) +public class ArtifactMapper { + private List fqdnList = null; + + @JsonProperty("fqdn-list") + public List getFqdnList() { + return fqdnList; + } + + @JsonProperty("fqdn-list") + public void setFqdnList(List fqdnList) { + this.fqdnList = fqdnList; + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/CloudOwnerList.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/CloudOwnerList.java new file mode 100644 index 000000000..d12522750 --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/CloudOwnerList.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool.fqdn; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "cloud-owner", "region-id-list" }) +public class CloudOwnerList { + + private String cloudOwner; + private List regionIdList = null; + + @JsonProperty("cloud-owner") + public String getCloudOwner() { + return cloudOwner; + } + + @JsonProperty("cloud-owner") + public void setCloudOwner(String cloudOwner) { + this.cloudOwner = cloudOwner; + } + + @JsonProperty("region-id-list") + public List getRegionIdList() { + return regionIdList; + } + + @JsonProperty("region-id-list") + public void setRegionIdList(List regionIdList) { + this.regionIdList = regionIdList; + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/FqdnList.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/FqdnList.java new file mode 100644 index 000000000..2c5eb202d --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/FqdnList.java @@ -0,0 +1,113 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool.fqdn; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "vnf-management-server-fqdn", "cloud-owner-list", "description", "username", "create-date", + "modify-username", "modify-date" }) +public class FqdnList { + + private String vnfManagementServerFqdn; + private List cloudOwnerList = null; + private String description; + private String username; + private String createDate; + private String modifyUsername; + private String modifyDate; + + @JsonProperty("vnf-management-server-fqdn") + public String getVnfManagementServerFqdn() { + return vnfManagementServerFqdn; + } + + @JsonProperty("vnf-management-server-fqdn") + public void setVnfManagementServerFqdn(String vnfManagementServerFqdn) { + this.vnfManagementServerFqdn = vnfManagementServerFqdn; + } + + @JsonProperty("cloud-owner-list") + public List getCloudOwnerList() { + return cloudOwnerList; + } + + @JsonProperty("cloud-owner-list") + public void setCloudOwnerList(List cloudOwnerList) { + this.cloudOwnerList = cloudOwnerList; + } + + @JsonProperty("description") + public String getDescription() { + return description; + } + + @JsonProperty("description") + public void setDescription(String description) { + this.description = description; + } + + @JsonProperty("username") + public String getUsername() { + return username; + } + + @JsonProperty("username") + public void setUsername(String username) { + this.username = username; + } + + @JsonProperty("create-date") + public String getCreateDate() { + return createDate; + } + + @JsonProperty("create-date") + public void setCreateDate(String createDate) { + this.createDate = createDate; + } + + @JsonProperty("modify-username") + public String getModifyUsername() { + return modifyUsername; + } + + @JsonProperty("modify-username") + public void setModifyUsername(String modifyUsername) { + this.modifyUsername = modifyUsername; + } + + @JsonProperty("modify-date") + public String getModifyDate() { + return modifyDate; + } + + @JsonProperty("modify-date") + public void setModifyDate(String modifyDate) { + this.modifyDate = modifyDate; + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ParseAdminArtifcat.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ParseAdminArtifcat.java new file mode 100644 index 000000000..e68a6f444 --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ParseAdminArtifcat.java @@ -0,0 +1,168 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool.fqdn; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import org.apache.commons.lang.StringUtils; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class ParseAdminArtifcat implements SvcLogicJavaPlugin { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(ParseAdminArtifcat.class); + private static ParseAdminArtifcat parseArtifact = null; + private static String fqdn = null; + private SvcLogicResource serviceLogic; + + public static ParseAdminArtifcat initialise() { + parseArtifact = new ParseAdminArtifcat(); + return parseArtifact; + } + + public ParseAdminArtifcat() { + serviceLogic = new SqlResource(); + } + + protected ParseAdminArtifcat(SqlResource svcLogic) { + serviceLogic = svcLogic; + } + + protected static Map parseAdminArtifact(ArtifactMapper js) { + List fqdnList = js.getFqdnList(); + Map mp = new HashMap(); + for (FqdnList listFqdn : fqdnList) { + + for (CloudOwnerList clList : listFqdn.getCloudOwnerList()) { + + for (RegionIdList rgList : clList.getRegionIdList()) { + + for (String tenantId : rgList.getTenantIdList()) { + mp.put(clList.getCloudOwner().trim() + ";" + rgList.getRegionId().trim() + ";" + tenantId, + listFqdn.getVnfManagementServerFqdn()); + log.info("list of mapped details from admin artifact" + clList.getCloudOwner().trim() + ";" + + rgList.getRegionId().trim() + ";" + tenantId + "-->" + + listFqdn.getVnfManagementServerFqdn()); + } + + } + + } + + } + + return mp; + + } + + public String retrieveFqdn(SvcLogicContext ctx) + throws SvcLogicException, RuntimeException, JsonProcessingException, IOException { + String tenantId = ""; + String cloudOwner = ""; + String cloudRegionId = ""; + String jsonContent = getAdminArtifact(ctx); + if (jsonContent == null) { + throw new RuntimeException("Artifact content missing"); + } + + if (StringUtils.isNotBlank(ctx.getAttribute("payloadTenant"))) { + tenantId = ctx.getAttribute("payloadTenant"); + } else { + tenantId = ctx.getAttribute("tenantAai"); + } + if (StringUtils.isNotBlank(ctx.getAttribute("payloadCloudOwner"))) { + cloudOwner = ctx.getAttribute("payloadCloudOwner"); + } else { + cloudOwner = ctx.getAttribute("cloudOwneraai"); + } + if (StringUtils.isNotBlank(ctx.getAttribute("payloadCloudRegion"))) { + cloudRegionId = ctx.getAttribute("payloadCloudRegion"); + } else { + cloudRegionId = ctx.getAttribute("cloudRegionAai"); + + } + + String key = cloudOwner.trim() + ";" + cloudRegionId.trim() + ";" + tenantId.trim(); + log.info("cloudowner--cloudregion--tenantid retrieved constructed :" + key); + log.info("tenantid--cloudowner--cloudregion retrieved from payload :" + ctx.getAttribute("payloadTenant") + ":" + + ctx.getAttribute("payloadCloudOwner") + ":" + ctx.getAttribute("payloadCloudRegion")); + log.info("tenantid--cloudowner--cloudregion retrieved from a&ai : " + ctx.getAttribute("tenantAai") + ":" + + ctx.getAttribute("cloudOwneraai") + ":" + ctx.getAttribute("cloudRegionAai")); + try { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); + ArtifactMapper js = objectMapper.readValue(jsonContent, ArtifactMapper.class); + Map mp = parseAdminArtifact(js); + for (String t : mp.keySet()) { + if (t.contains(key)) { + log.info("Matching fqdn from admin artifact found for a&ai data :" + key); + fqdn = mp.get(key); + } + } + log.info(fqdn + "--> url and port retrieved "); + } catch (IOException e) { + log.error(e.getMessage()); + } + return fqdn; + } + + public String getAdminArtifact(SvcLogicContext ctx) { + + QueryStatus status = null; + String fn = "ParseAdminArtifcat:getAdminArtifact"; + String jsonContent = null; + String artifcatName = "ansible_admin_FQDN_Artifact_0.0.1V.json"; + try { + String query = "SELECT ARTIFACT_CONTENT as adminjson" + " FROM ASDC_ARTIFACTS " + "WHERE ARTIFACT_NAME = '" + + artifcatName + "' " + "ORDER BY INTERNAL_VERSION DESC LIMIT 1 "; + log.info("Getting artifact details :" + query); + status = serviceLogic.query("SQL", false, null, query, null, null, ctx); + jsonContent = ctx.getAttribute("adminjson"); + log.info("adminjsonblock:" + jsonContent); + if (status == QueryStatus.FAILURE) { + log.info(fn + ": Error retrieving artifact details"); + throw new SvcLogicException("Error retrieving artifact details"); + } + } catch (Exception e) { + log.debug("Error while accessing database" + e.getMessage()); + log.info("Error connecting to database" + e.getMessage()); + log.error("Error accessing database", e); + throw new RuntimeException(e); + } + return jsonContent; + + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/RegionIdList.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/RegionIdList.java new file mode 100644 index 000000000..20de1fe72 --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/RegionIdList.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool.fqdn; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ "region-id", "tenant-id-list" }) +public class RegionIdList { + + private String regionId; + private List tenantIdList = null; + + @JsonProperty("region-id") + public String getRegionId() { + return regionId; + } + + @JsonProperty("region-id") + public void setRegionId(String regionId) { + this.regionId = regionId; + } + + @JsonProperty("tenant-id-list") + public List getTenantIdList() { + return tenantIdList; + } + + @JsonProperty("tenant-id-list") + public void setTenantIdList(List tenantIdList) { + this.tenantIdList = tenantIdList; + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/Constants.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/Constants.java index 7575c98b0..e7c4b712c 100644 --- a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/Constants.java +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/Constants.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP : APPC * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs * ============================================================================= @@ -32,4 +32,10 @@ public class Constants private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR"; public static final String APPC_CONFIG_DIR="/opt/onap/appc/data/properties"; -} \ No newline at end of file + + public static final String VNF_TYPE="vnf_Type"; + public static final String ACTION="action"; + public static final String PROTOCOL="protocol"; + public static final String URL="url"; + +} diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/EncryptionToolDGWrapper.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/EncryptionToolDGWrapper.java index fa7075eff..e73004206 100644 --- a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/EncryptionToolDGWrapper.java +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/EncryptionToolDGWrapper.java @@ -35,29 +35,25 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource; +import org.onap.appc.encryptiontool.fqdn.ParseAdminArtifcat; public class EncryptionToolDGWrapper implements SvcLogicJavaPlugin { private static final EELFLogger log = EELFManager.getInstance().getLogger(EncryptionToolDGWrapper.class); private SvcLogicResource serviceLogic; private static EncryptionToolDGWrapper dgGeneralDBService = null; + ParseAdminArtifcat artifact = new ParseAdminArtifcat(); public static EncryptionToolDGWrapper initialise() { - if (dgGeneralDBService == null) { - dgGeneralDBService = new EncryptionToolDGWrapper(); - } + dgGeneralDBService = new EncryptionToolDGWrapper(); return dgGeneralDBService; } public EncryptionToolDGWrapper() { - if (serviceLogic == null) { - serviceLogic = new SqlResource(); - } + serviceLogic = new SqlResource(); } protected EncryptionToolDGWrapper(SqlResource svcLogic) { - if (serviceLogic == null) { - serviceLogic = svcLogic; - } + serviceLogic = svcLogic; } public void runEncryption(Map inParams, SvcLogicContext ctx) throws SvcLogicException { @@ -85,14 +81,76 @@ public class EncryptionToolDGWrapper implements SvcLogicJavaPlugin { String password = ""; String port = "0"; String url = ""; + String key = ""; QueryStatus status = null; - + Integer cnt = 0; + String tenantAai = inParams.get("tenantAai"); + String cloudOwneraai = inParams.get("cldOwnerAai"); + String cloudRegionAai = inParams.get("cldRegionAai"); + String payloadFqdn = inParams.get("payloadFqdn"); + String payloadTenant = inParams.get("payloadTenant"); + String payloadCloudOwner = inParams.get("payloadCloudOwner"); + String payloadCloudRegion = inParams.get("payloadCloudRegion"); + ctx.setAttribute("payloadTenant", payloadTenant); + ctx.setAttribute("payloadCloudOwner", payloadCloudOwner); + ctx.setAttribute("payloadCloudRegion", payloadCloudRegion); + ctx.setAttribute("tenantAai", tenantAai); + ctx.setAttribute("cloudOwneraai", cloudOwneraai); + ctx.setAttribute("cloudRegionAai", cloudRegionAai); responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; + String basicQuery = "SELECT USER_NAME ,PASSWORD,PORT_NUMBER ,URL FROM DEVICE_AUTHENTICATION WHERE VNF_TYPE = $" + + Constants.VNF_TYPE + " AND PROTOCOL = $" + Constants.PROTOCOL + "" + " AND ACTION = $" + + Constants.ACTION + ""; + String urlAppend = " "; try { if (serviceLogic != null && ctx != null) { - String key = "SELECT USER_NAME ,PASSWORD,PORT_NUMBER,URL FROM DEVICE_AUTHENTICATION WHERE VNF_TYPE = '" - + vnf_Type + "' AND PROTOCOL = '" + protocol + "' AND ACTION = '" + action + "'"; - log.info("Getting authentication details :" + key); + if (protocol.equalsIgnoreCase("ansible")) { + if (payloadFqdn != null && payloadFqdn.trim().length() > 0) { + url = payloadFqdn; + log.info("url from payload" + url); + urlAppend = " AND URL = $" + Constants.URL + ""; + key = basicQuery + urlAppend; + } else { + key = "SELECT COUNT(*) AS MULTIPLE FROM DEVICE_AUTHENTICATION WHERE VNF_TYPE = $" + + Constants.VNF_TYPE + " AND PROTOCOL = $" + Constants.PROTOCOL + " AND ACTION = $" + + Constants.ACTION + ""; + status = serviceLogic.query("SQL", false, null, key, null, null, ctx); + log.info("Checking number of records for ansible:" + key); + cnt = Integer.parseInt(ctx.getAttribute("MULTIPLE")); + if (cnt > 1) { + String fqdnwithPort = artifact.retrieveFqdn(ctx); + if (StringUtils.isNotBlank(fqdnwithPort) && fqdnwithPort.contains(":")) { + + int index = StringUtils.ordinalIndexOf(fqdnwithPort, ":", 3); + url = fqdnwithPort.substring(0, index); + urlAppend = " AND URL = $" + Constants.URL + ""; + key = basicQuery + urlAppend; + } else { + throw new SvcLogicException( + fn + ": NOT_FOUND! No FQDN match found in admin artifact for " + vnf_Type + + " " + protocol + "" + action + ""); + } + } else if (cnt == 1) { + key = basicQuery; + } else { + if (status == QueryStatus.FAILURE) { + log.info(fn + ":: Error retrieving credentials"); + throw new SvcLogicException("Error retrieving credentials"); + } + if (status == QueryStatus.NOT_FOUND) { + log.info(fn + ":: NOT_FOUND! No data found in device_authentication table for " + + vnf_Type + " " + protocol + "" + action + ""); + throw new SvcLogicException( + fn + ":: NOT_FOUND! No data found in device_authentication table for " + + vnf_Type + " " + protocol + "" + action + ""); + } + } + } + + } else { + key = basicQuery; + log.info("Getting authentication details :" + key); + } status = serviceLogic.query("SQL", false, null, key, null, null, ctx); if (status == QueryStatus.FAILURE) { log.info(fn + ":: Error retrieving credentials"); diff --git a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/WrapperEncryptionTool.java b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/WrapperEncryptionTool.java index 86b0861cb..e29920ec6 100644 --- a/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/WrapperEncryptionTool.java +++ b/appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/WrapperEncryptionTool.java @@ -42,13 +42,16 @@ public class WrapperEncryptionTool { } public static void main(String[] args) { - String vnfType = args[0]; - String protocol = args[1]; - String user = args[2]; - String password = args[3]; - String action = args[4]; - String port = args[5]; - String url = args[6]; + String vnfType = args[0]; + String protocol = args[1]; + String user = args[2]; + String password = args[3]; + String action = args[4]; + String port = args[5]; + String url = args[6]; + log.info("vnfType = " + vnfType + " protocol = " + protocol + " user=" + user + " password=" + password + + " action=" + action + " port=" + port + " url=" + url); + if (StringUtils.isBlank(user)) { log.info("ERROR-USER can not be null"); return; @@ -61,9 +64,63 @@ public class WrapperEncryptionTool { log.info("ERROR-PROTOCOL ,Action and VNF-TYPE both can not be null"); return; } + if (protocol.equalsIgnoreCase("ansible") && (StringUtils.isBlank(url))) { + log.info("URL cannot be null for Ansible"); + return; + } EncryptionTool et = EncryptionTool.getInstance(); String enPass = et.encrypt(password); - updateProperties(user, vnfType, enPass, action, port, url, protocol); + log.info("enPass =" + enPass); + if (protocol.equalsIgnoreCase("ansible")) + updatePropertiesAnsible(user, vnfType, enPass, action, port, url, protocol); + else + updateProperties(user, vnfType, enPass, action, port, url, protocol); + } + + public static void updatePropertiesAnsible(String user, String vnfType, String enPass, String action, String port, + String url, String protocol) { + DBResourceManager dbResourceManager = null; + ArrayList getList = new ArrayList<>(); + getList.add(vnfType); + getList.add(protocol); + getList.add(action); + getList.add(url); + String whereClause = " VNF_TYPE = ? AND PROTOCOL = ? AND ACTION = ? AND URL = ? "; + String setClause = " USER_NAME = ?, PASSWORD = ?, PORT_NUMBER = ? "; + String insertClause = " USER_NAME,PASSWORD,PORT_NUMBER,URL,VNF_TYPE,PROTOCOL,ACTION"; + String insertsetClause = " ?,?,?,?,?,?,?"; + try { + dbResourceManager = DbServiceUtil.initDbLibService(); + CachedRowSet data = DbServiceUtil.getData(Constants.DEVICE_AUTHENTICATION, getList, Constants.SCHEMA_SDNCTL, + "*", whereClause); + int rowCount = 0; + if (data.first()) { + rowCount++; + log.info(rowCount + "rowcount"); + } + getList.clear(); + getList.add(user); + getList.add(enPass); + getList.add(port); + getList.add(url); + getList.add(vnfType); + getList.add(protocol); + getList.add(action); + if (rowCount == 1) { + DbServiceUtil.updateDB(Constants.DEVICE_AUTHENTICATION, getList, whereClause, setClause); + log.info("APPC-MESSAGE: Password Updated Successfully"); + } else { + DbServiceUtil.insertDB(Constants.DEVICE_AUTHENTICATION, getList, insertClause, insertsetClause); + log.info("APPC-MESSAGE: password Inserted Successfully"); + } + } catch (Exception e) { + log.debug("Caught Exception", e); + log.info("Caught exception", e); + log.info("APPC-MESSAGE:" + e.getMessage()); + + } finally { + dbResourceManager.cleanUp(); + } } public static void updateProperties(String user, String vnfType, String enPass, String action, String port, @@ -84,7 +141,7 @@ public class WrapperEncryptionTool { int rowCount = 0; if (data.first()) { rowCount++; - log.info(rowCount + "rowcount"); + log.info(rowCount + "rowcount"); } getList.clear(); getList.add(user); @@ -105,11 +162,9 @@ public class WrapperEncryptionTool { log.debug("Caught Exception", e); log.info("Caught exception", e); log.info("APPC-MESSAGE:" + e.getMessage()); + } finally { - //When dbResourceManager is not created then no need to cleanup - if (dbResourceManager != null) { - dbResourceManager.cleanUp(); - } + dbResourceManager.cleanUp(); } } diff --git a/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/MockParseAdminArtifcat.java b/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/MockParseAdminArtifcat.java new file mode 100644 index 000000000..8f00e5fd3 --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/MockParseAdminArtifcat.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool; + +import java.io.FileInputStream; +import java.io.IOException; +import org.apache.commons.io.IOUtils; +import org.onap.appc.encryptiontool.fqdn.ParseAdminArtifcat; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; + +public class MockParseAdminArtifcat extends ParseAdminArtifcat { + + @Override + public String getAdminArtifact(SvcLogicContext ctx) { + try { + return readInput("src/test/resources/org/onap/appc/adminartifcat.json"); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private String readInput(String inputFile) throws IOException { + String file = null; + FileInputStream fileInputStream = new FileInputStream(inputFile); + file = IOUtils.toString(fileInputStream, "UTF-8"); + return file; + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/TestParseAdminArtifact.java b/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/TestParseAdminArtifact.java new file mode 100644 index 000000000..79c658c55 --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/TestParseAdminArtifact.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. + * ============================================================================= + * 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.onap.appc.encryptiontool; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.apache.commons.lang3.StringUtils; +import org.junit.Before; +import org.junit.Test; +import org.onap.appc.encryptiontool.fqdn.ParseAdminArtifcat; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; + +import com.fasterxml.jackson.core.JsonProcessingException; + +public class TestParseAdminArtifact { + SvcLogicContext ctx = null; + ParseAdminArtifcat parseAdminArtifact = null; + + @Before + public void setup() throws IOException { + parseAdminArtifact = new MockParseAdminArtifcat(); + } + + @Test + public void testRetrieveFqdn() throws Exception { + ctx = new SvcLogicContext(); + ctx.setAttribute("tenantAai", "tenantuuid1"); + ctx.setAttribute("cloudOwneraai", "aic3.0"); + ctx.setAttribute("cloudRegionAai", "san4a"); + try { + String fqdnMatchPayload = parseAdminArtifact.retrieveFqdn(ctx); + assertEquals("fqdn-value1 url:port", fqdnMatchPayload); + + } catch (SvcLogicException | RuntimeException | IOException e) { + e.printStackTrace(); + throw new Exception("Failed to retrieve fqdn:"+ e.getMessage()); + } + + } + +} diff --git a/appc-config/appc-encryption-tool/provider/src/test/resources/org/onap/appc/adminartifcat.json b/appc-config/appc-encryption-tool/provider/src/test/resources/org/onap/appc/adminartifcat.json new file mode 100644 index 000000000..94c43df2b --- /dev/null +++ b/appc-config/appc-encryption-tool/provider/src/test/resources/org/onap/appc/adminartifcat.json @@ -0,0 +1,93 @@ + + +{"fqdn-list": [ + { + "vnf-management-server-fqdn": "fqdn-value1 url:port", + "cloud-owner-list": [ + { + "cloud-owner": "aic3.0", + "region-id-list": [ + { + "region-id": "san4a", + "tenant-id-list": [ + "tenantuuid1", + "tenantuuid2" + ] + }, + { + "region-id": "san4b", + "tenant-id-list": [ + "tenantuuid1", + "tenantuuid2" + ] + } + ] + }, + { + "cloud-owner": "nc1.0", + "region-id-list": [ + { + "region-id": "san4a", + "tenant-id-list": [ + + "tenantuuid3", + "tenantuuid4" + + ] + } + ] + } + ], + "description": "fqdn for east zone vUSP Production", + "username": "albino attuid", + "create-date": "", + "modify-username": "", + "modify-date": "" + }, + { + "vnf-management-server-fqdn": "fqdn-value2 url:port", + "cloud-owner-list": [ + { + "cloud-owner": "aic3.0", + "region-id-list": [ + { + "region-id": "san4a", + "tenant-id-list": [ + "tenantuuid5", + "tenantuuid6" + ] + }, + { + "region-id": "san4b", + "tenant-id-list": [ + "tenantuuid5", + "tenantuuid6" + ] + } + ] + }, + { + "cloud-owner": "nc1.0", + "region-id-list": [ + { + "region-id": "san4a", + "tenant-id-list": [ + + "tenantuuid7", + "tenantuuid8" + + ] + } + ] + } + ], + "description": "fqdn for east zone vUSP E2E", + "username": "albino attuid", + "create-date": "", + "modify-username": "", + "modify-date": "" + } + + ] +} + -- cgit 1.2.3-korg