summaryrefslogtreecommitdiffstats
path: root/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/InventoryInfoExtractor.java
blob: 631b72cc01aea521d6eab51fbf24f4d97e9e5275 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
 * ============LICENSE_START=======================================================
 * ONAP : APPC
 * ================================================================================
 * Copyright (C) 2018 Nokia. All rights reserved.
 * Copyright (C) 2018 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.flow.controller.node;

import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import org.apache.commons.lang3.StringUtils;
import org.onap.appc.flow.controller.interfaceData.InventoryInfo;
import org.onap.appc.flow.controller.interfaceData.Vm;
import org.onap.appc.flow.controller.interfaceData.VnfInfo;
import org.onap.appc.flow.controller.interfaceData.Vnfcslist;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;

/**
 * Helper class for FlowControlNode
 */
class InventoryInfoExtractor {

  private static final EELFLogger log = EELFManager.getInstance().getLogger(InventoryInfoExtractor.class);

  InventoryInfo getInventoryInfo(SvcLogicContext ctx, String vnfId)  {
    String fn = "InventoryInfoExtractor.getInventoryInfo";

    VnfInfo vnfInfo = new VnfInfo();
    vnfInfo.setVnfId(vnfId);
    vnfInfo.setVnfName(ctx.getAttribute("tmp.vnfInfo.vnf.vnf-name"));
    vnfInfo.setVnfType(ctx.getAttribute("tmp.vnfInfo.vnf.vnf-type"));
    vnfInfo.setIdentityUrl(getIdentityUrl(ctx,vnfInfo,vnfId));

    String vmcount = ctx.getAttribute("tmp.vnfInfo.vm-count");
    log.info(fn + "vmcount:" + vmcount);

    int vmCount = (StringUtils.isNotBlank(vmcount)) ? Integer.parseInt(vmcount) : 0;

    for (int i = 0; i < vmCount; i++) {
      processVm(ctx, vnfInfo, i);
    }

    InventoryInfo inventoryInfo = new InventoryInfo();
    inventoryInfo.setVnfInfo(vnfInfo);
    log.info(fn + "Inventory Output:" + inventoryInfo.toString());

    return inventoryInfo;
  }

  private void processVm(SvcLogicContext ctx, VnfInfo vnfInfo, int index) {
    Vm vm = new Vm();
    vm.setVserverId(ctx.getAttribute("tmp.vnfInfo.vm[" + index + "].vserver-id"));
    vm.setVmId(ctx.getAttribute("tmp.vnfInfo.vm[" + index + "].vserver-selflink"));
    int vnfcCount = Integer.parseInt(ctx.getAttribute("tmp.vnfInfo.vm[" + index + "].vnfc-count"));
    if (vnfcCount > 0) {
      Vnfcslist vnfc = new Vnfcslist();
      vnfc.setVnfcName(ctx.getAttribute("tmp.vnfInfo.vm[" + index + "].vnfc-name"));
      vnfc.setVnfcType(ctx.getAttribute("tmp.vnfInfo.vm[" + index + "].vnfc-type"));
      vm.setVnfc(vnfc);
    }
    vnfInfo.getVm().add(vm);
  }


  public String getIdentityUrl(SvcLogicContext ctx, VnfInfo vnfInfo, String vnfId) {
      String identityUrl = "";
      for (String key : ctx.getAttributeKeySet()) {
            log.debug("InventoryData " + key + "=" + ctx.getAttribute(key));
      }
      String urlFromPayload= ctx.getAttribute("AICIdentity");
      log.info("Url from payload:" + urlFromPayload);
      String urlFromAAI=ctx.getAttribute("tmp.vnfInfo.identity-url");

      if(StringUtils.isNotBlank(urlFromPayload)){
          identityUrl=urlFromPayload;
      }else if(StringUtils.isNotBlank(urlFromAAI)){
          identityUrl=urlFromAAI;
      }
    return identityUrl;


  }

}