Encryption tool changes for multiple ansibleserver 08/77608/6
authorGeorge, Lina (lg941u) <lg941u@att.com>
Wed, 30 Jan 2019 21:01:19 +0000 (16:01 -0500)
committerPatrick Brady <patrick.brady@att.com>
Tue, 5 Feb 2019 18:28:34 +0000 (18:28 +0000)
Issue-ID: APPC-1342
Change-Id: Ib1ff7845ad65cf13c06a96d6dcce023b06064dfa
Signed-off-by: George, Lina (lg941u) <lg941u@att.com>
12 files changed:
appc-config/appc-encryption-tool/provider/pom.xml
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ArtifactMapper.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/CloudOwnerList.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/FqdnList.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/ParseAdminArtifcat.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/fqdn/RegionIdList.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/Constants.java
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/EncryptionToolDGWrapper.java
appc-config/appc-encryption-tool/provider/src/main/java/org/onap/appc/encryptiontool/wrapper/WrapperEncryptionTool.java
appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/MockParseAdminArtifcat.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/test/java/org/onap/appc/encryptiontool/TestParseAdminArtifact.java [new file with mode: 0644]
appc-config/appc-encryption-tool/provider/src/test/resources/org/onap/appc/adminartifcat.json [new file with mode: 0644]

index 39672c6..8f3507e 100644 (file)
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
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 (file)
index 0000000..c7a1ad7
--- /dev/null
@@ -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> fqdnList = null;
+
+   @JsonProperty("fqdn-list")
+   public List<FqdnList> getFqdnList() {
+      return fqdnList;
+   }
+
+   @JsonProperty("fqdn-list")
+   public void setFqdnList(List<FqdnList> 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 (file)
index 0000000..d125227
--- /dev/null
@@ -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> 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<RegionIdList> getRegionIdList() {
+        return regionIdList;
+    }
+
+    @JsonProperty("region-id-list")
+    public void setRegionIdList(List<RegionIdList> 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 (file)
index 0000000..2c5eb20
--- /dev/null
@@ -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> 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<CloudOwnerList> getCloudOwnerList() {
+        return cloudOwnerList;
+    }
+
+    @JsonProperty("cloud-owner-list")
+    public void setCloudOwnerList(List<CloudOwnerList> 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 (file)
index 0000000..e68a6f4
--- /dev/null
@@ -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<String, String> parseAdminArtifact(ArtifactMapper js) {
+        List<FqdnList> fqdnList = js.getFqdnList();
+        Map<String, String> mp = new HashMap<String, String>();
+        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<String, String> 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 (file)
index 0000000..20de1fe
--- /dev/null
@@ -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<String> 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<String> getTenantIdList() {
+        return tenantIdList;
+    }
+
+    @JsonProperty("tenant-id-list")
+    public void setTenantIdList(List<String> tenantIdList) {
+        this.tenantIdList = tenantIdList;
+    }
+
+}
index 7575c98..e7c4b71 100644 (file)
@@ -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";
+
+}
index fa7075e..e730042 100644 (file)
@@ -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<String, String> 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");
index 86b0861..e29920e 100644 (file)
@@ -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<String> 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 (file)
index 0000000..8f00e5f
--- /dev/null
@@ -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 (file)
index 0000000..79c658c
--- /dev/null
@@ -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 (file)
index 0000000..94c43df
--- /dev/null
@@ -0,0 +1,93 @@
+\r
+\r
+{"fqdn-list": [\r
+      {\r
+      "vnf-management-server-fqdn": "fqdn-value1 url:port",\r
+      "cloud-owner-list":       [\r
+         {\r
+            "cloud-owner": "aic3.0",\r
+                          "region-id-list": [\r
+                                  {\r
+                                           "region-id": "san4a",\r
+                                           "tenant-id-list": [\r
+                                                            "tenantuuid1",\r
+                                                            "tenantuuid2"\r
+                                                   ]\r
+                                  },\r
+                                  {\r
+                                           "region-id": "san4b",\r
+                                           "tenant-id-list": [\r
+                                                            "tenantuuid1",\r
+                                                            "tenantuuid2"\r
+                                           ]\r
+                                  }\r
+                          ]\r
+         },\r
+         {\r
+            "cloud-owner": "nc1.0",\r
+                          "region-id-list": [\r
+                                  {\r
+                                           "region-id": "san4a",\r
+                                           "tenant-id-list": [\r
+                                                   \r
+                                                            "tenantuuid3",\r
+                                                            "tenantuuid4"\r
+                                                   \r
+                                           ]\r
+                                  }\r
+                          ]\r
+         }\r
+      ],\r
+           "description": "fqdn for east zone vUSP Production",\r
+      "username": "albino attuid",\r
+           "create-date": "",\r
+      "modify-username": "",\r
+      "modify-date": ""\r
+   },\r
+   {\r
+      "vnf-management-server-fqdn": "fqdn-value2 url:port",\r
+      "cloud-owner-list":       [\r
+         {\r
+            "cloud-owner": "aic3.0",\r
+                          "region-id-list": [\r
+                                  {\r
+                                           "region-id": "san4a",\r
+                                           "tenant-id-list": [\r
+                                                            "tenantuuid5",\r
+                                                            "tenantuuid6"\r
+                                                   ]\r
+                                  },\r
+                                  {\r
+                                           "region-id": "san4b",\r
+                                           "tenant-id-list": [\r
+                                                            "tenantuuid5",\r
+                                                            "tenantuuid6"\r
+                                           ]\r
+                                  }\r
+                          ]\r
+         },\r
+         {\r
+            "cloud-owner": "nc1.0",\r
+                          "region-id-list": [\r
+                                  {\r
+                                           "region-id": "san4a",\r
+                                           "tenant-id-list": [\r
+                                                   \r
+                                                            "tenantuuid7",\r
+                                                            "tenantuuid8"\r
+                                                   \r
+                                           ]\r
+                                  }\r
+                          ]\r
+         }\r
+      ],\r
+           "description": "fqdn for east zone vUSP E2E",\r
+      "username": "albino attuid",\r
+           "create-date": "",\r
+      "modify-username": "",\r
+      "modify-date": ""\r
+   }\r
+   \r
+   ]\r
+}\r
+\r