Search in sources :

Example 1 with PInterface

use of org.onap.aai.domain.yang.PInterface in project so by onap.

the class ServicePluginFactory method getTPInfo.

private Map<String, Object> getTPInfo(AAIResourcesClient client, AAIResourceUri localTP, AAIResourceUri remoteTP) {
    Map<String, Object> tpInfo = new HashMap<>();
    if (localTP != null && remoteTP != null) {
        // give local tp
        String tpUrl = localTP.build().toString();
        String localNodeId = tpUrl.split("/")[4];
        tpInfo.put("local-access-node-id", localNodeId);
        logger.info("Get info for local TP :{}", localNodeId);
        Optional<Pnf> optLocalPnf = client.get(Pnf.class, AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(localNodeId)));
        getTpInfoFromLocalTp(tpInfo, optLocalPnf);
        String ltpIdStr = tpUrl.substring(tpUrl.lastIndexOf("/") + 1);
        if (ltpIdStr.contains("-")) {
            tpInfo.put("local-access-ltp-id", ltpIdStr.substring(ltpIdStr.lastIndexOf("-") + 1));
        }
        // give remote tp
        tpUrl = remoteTP.build().toString();
        PInterface intfRemote = client.get(PInterface.class, remoteTP).get();
        String remoteNodeId = tpUrl.split("/")[4];
        tpInfo.put("remote-access-node-id", remoteNodeId);
        logger.info("Get info for remote TP:{}", remoteNodeId);
        String[] networkRefRemote = intfRemote.getNetworkRef().split("-");
        Optional<Pnf> optRemotePnf = client.get(Pnf.class, AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(remoteNodeId)));
        getTpInfoFromRemoteTp(tpInfo, networkRefRemote, optRemotePnf);
        String ltpIdStrR = tpUrl.substring(tpUrl.lastIndexOf("/") + 1);
        if (ltpIdStrR.contains("-")) {
            tpInfo.put("remote-access-ltp-id", ltpIdStrR.substring(ltpIdStr.lastIndexOf("-") + 1));
        }
    }
    return tpInfo;
}
Also used : PInterface(org.onap.aai.domain.yang.PInterface) HashMap(java.util.HashMap) Pnf(org.onap.aai.domain.yang.Pnf)

Example 2 with PInterface

use of org.onap.aai.domain.yang.PInterface in project so by onap.

the class HeatBridgeImpl method createTransactionToDeleteSriovPfFromPserver.

private void createTransactionToDeleteSriovPfFromPserver(List<AAIResourceUri> vserverUris) {
    Map<String, List<String>> pserverToPciIdMap = getPserverToPciIdMap(vserverUris);
    for (Map.Entry<String, List<String>> entry : pserverToPciIdMap.entrySet()) {
        String pserverName = entry.getKey();
        List<String> pciIds = entry.getValue();
        Optional<Pserver> pserver = resourcesClient.get(Pserver.class, AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().pserver(pserverName)).depth(Depth.TWO));
        if (pserver.isPresent()) {
            // For each pserver/p-interface match sriov-vfs by pic-id and delete them.
            pserver.get().getPInterfaces().getPInterface().stream().filter(pIf -> pIf.getSriovPfs() != null && CollectionUtils.isNotEmpty(pIf.getSriovPfs().getSriovPf())).forEach(pIf -> pIf.getSriovPfs().getSriovPf().forEach(sriovPf -> {
                if (pciIds.contains(sriovPf.getPfPciId())) {
                    logger.debug("creating transaction to delete SR-IOV PF: " + pIf.getInterfaceName() + " from PServer: " + pserverName);
                    if (env.getProperty("heatBridgeDryrun", Boolean.class, false)) {
                        logger.debug("Would delete Sriov Pf: {}", AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().pserver(pserverName).pInterface(pIf.getInterfaceName()).sriovPf(sriovPf.getPfPciId())).build());
                    } else {
                        resourcesClient.delete(AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().pserver(pserverName).pInterface(pIf.getInterfaceName()).sriovPf(sriovPf.getPfPciId())));
                    }
                }
            }));
        }
    }
}
Also used : Depth(org.onap.aaiclient.client.graphinventory.entities.uri.Depth) AaiHelper(org.onap.so.heatbridge.helpers.AaiHelper) AAIUriFactory(org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory) Node(org.onap.aaiclient.client.graphinventory.entities.Node) Server(org.openstack4j.model.compute.Server) LoggerFactory(org.slf4j.LoggerFactory) HeatBridgeUtils(org.onap.so.heatbridge.utils.HeatBridgeUtils) StringUtils(org.apache.commons.lang3.StringUtils) DSLQueryBuilder(org.onap.aaiclient.client.graphinventory.entities.DSLQueryBuilder) Map(java.util.Map) Resource(org.openstack4j.model.heat.Resource) AAIDSLQueryClient(org.onap.aaiclient.client.aai.AAIDSLQueryClient) Vlan(org.onap.aai.domain.yang.Vlan) UriBuilder(javax.ws.rs.core.UriBuilder) Pserver(org.onap.aai.domain.yang.Pserver) TypeReference(com.fasterxml.jackson.core.type.TypeReference) L3Network(org.onap.aai.domain.yang.L3Network) DSLQuery(org.onap.aaiclient.client.graphinventory.entities.DSLQuery) AAISingleTransactionClient(org.onap.aaiclient.client.aai.AAISingleTransactionClient) ImmutableMap(com.google.common.collect.ImmutableMap) Predicate(java.util.function.Predicate) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) L3InterfaceIpv4AddressList(org.onap.aai.domain.yang.L3InterfaceIpv4AddressList) Collectors(java.util.stream.Collectors) MsoCloudClientFactoryImpl(org.onap.so.heatbridge.factory.MsoCloudClientFactoryImpl) NotFoundException(javax.ws.rs.NotFoundException) IPAddressString(inet.ipaddr.IPAddressString) Objects(java.util.Objects) NetworkType(org.openstack4j.model.network.NetworkType) VolumeAttachment(org.openstack4j.model.storage.block.VolumeAttachment) List(java.util.List) Environment(org.springframework.core.env.Environment) InetAddressValidator(org.apache.commons.validator.routines.InetAddressValidator) SriovPf(org.onap.aai.domain.yang.SriovPf) Optional(java.util.Optional) WebApplicationException(javax.ws.rs.WebApplicationException) Flavor(org.onap.aai.domain.yang.Flavor) Results(org.onap.aaiclient.client.aai.entities.Results) Volume(org.onap.aai.domain.yang.Volume) Relationships(org.onap.aaiclient.client.aai.entities.Relationships) Image(org.onap.aai.domain.yang.Image) CloudIdentity(org.onap.so.db.catalog.beans.CloudIdentity) L3InterfaceIpv6AddressList(org.onap.aai.domain.yang.L3InterfaceIpv6AddressList) Network(org.openstack4j.model.network.Network) Relationship(org.onap.aai.domain.yang.Relationship) Types(org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types) BulkProcessFailed(org.onap.aaiclient.client.graphinventory.exceptions.BulkProcessFailed) HashMap(java.util.HashMap) Function(java.util.function.Function) ArrayList(java.util.ArrayList) Strings(com.google.common.base.Strings) RelationshipList(org.onap.aai.domain.yang.RelationshipList) CollectionUtils(org.apache.commons.collections.CollectionUtils) ServerType(org.onap.so.db.catalog.beans.ServerType) DSLStartNode(org.onap.aaiclient.client.graphinventory.entities.DSLStartNode) OpenstackClientFactoryImpl(org.onap.so.heatbridge.openstack.factory.OpenstackClientFactoryImpl) IP(org.openstack4j.model.network.IP) Start(org.onap.aaiclient.client.graphinventory.entities.Start) HeatBridgeConstants(org.onap.so.heatbridge.constants.HeatBridgeConstants) SpringContextHelper(org.onap.so.spring.SpringContextHelper) LInterface(org.onap.aai.domain.yang.LInterface) Nonnull(javax.annotation.Nonnull) AAIResultWrapper(org.onap.aaiclient.client.aai.entities.AAIResultWrapper) org.onap.aaiclient.client.graphinventory.entities.__(org.onap.aaiclient.client.graphinventory.entities.__) Port(org.openstack4j.model.network.Port) Subnets(org.onap.aai.domain.yang.Subnets) AAIResourcesClient(org.onap.aaiclient.client.aai.AAIResourcesClient) Format(org.onap.aaiclient.client.graphinventory.Format) Logger(org.slf4j.Logger) AAIFluentTypeBuilder(org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder) AAIResourceUri(org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) Subnet(org.openstack4j.model.network.Subnet) Pathed(org.onap.aaiclient.client.graphinventory.entities.Pathed) TraversalBuilder(org.onap.aaiclient.client.graphinventory.entities.TraversalBuilder) Vserver(org.onap.aai.domain.yang.Vserver) PInterface(org.onap.aai.domain.yang.PInterface) Preconditions(com.google.common.base.Preconditions) SriovVf(org.onap.aai.domain.yang.SriovVf) NodeType(org.onap.so.cloud.resource.beans.NodeType) OpenstackClient(org.onap.so.heatbridge.openstack.api.OpenstackClient) Pserver(org.onap.aai.domain.yang.Pserver) L3InterfaceIpv4AddressList(org.onap.aai.domain.yang.L3InterfaceIpv4AddressList) List(java.util.List) L3InterfaceIpv6AddressList(org.onap.aai.domain.yang.L3InterfaceIpv6AddressList) ArrayList(java.util.ArrayList) RelationshipList(org.onap.aai.domain.yang.RelationshipList) IPAddressString(inet.ipaddr.IPAddressString) Map(java.util.Map) ImmutableMap(com.google.common.collect.ImmutableMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap)

Example 3 with PInterface

use of org.onap.aai.domain.yang.PInterface in project so by onap.

the class HeatBridgeImplTest method testUpdateLInterfaceVlan.

@Test
public void testUpdateLInterfaceVlan() throws HeatBridgeException {
    // Arrange
    List<Resource> stackResources = (List<Resource>) extractTestStackResources();
    Port port = mock(Port.class);
    when(port.getId()).thenReturn("test-port-id");
    when(port.getName()).thenReturn("test-port-name");
    when(port.getvNicType()).thenReturn(HeatBridgeConstants.OS_SRIOV_PORT_TYPE);
    when(port.getMacAddress()).thenReturn("78:4f:43:68:e2:78");
    when(port.getNetworkId()).thenReturn("890a203a-23gg-56jh-df67-731656a8f13a");
    when(port.getDeviceId()).thenReturn("test-device-id");
    LInterface lIf = new LInterface();
    lIf.setInterfaceId("test-port-id");
    lIf.setInterfaceType("SRIOV");
    lIf.setInterfaceName("name");
    String pfPciId = "0000:08:00.0";
    when(port.getProfile()).thenReturn(ImmutableMap.of(HeatBridgeConstants.OS_PCI_SLOT_KEY, pfPciId, HeatBridgeConstants.OS_PHYSICAL_NETWORK_KEY, "physical_network_id"));
    IP ip = mock(IP.class);
    Set<IP> ipSet = new HashSet<>();
    ipSet.add(ip);
    when(ip.getIpAddress()).thenReturn("2606:ae00:2e60:100::226");
    when(ip.getSubnetId()).thenReturn("testSubnetId");
    when(port.getFixedIps()).thenAnswer(x -> ipSet);
    Subnet subnet = mock(Subnet.class);
    when(subnet.getCidr()).thenReturn("169.254.100.0/24");
    when(osClient.getSubnetById("testSubnetId")).thenReturn(subnet);
    Network network = mock(Network.class);
    when(network.getId()).thenReturn("test-network-id");
    when(network.getNetworkType()).thenReturn(NetworkType.VLAN);
    when(network.getProviderSegID()).thenReturn("2345");
    when(network.getProviderPhyNet()).thenReturn("ovsnet");
    doNothing().when(heatbridge).processOVS(any(), any(), any());
    when(osClient.getNetworkById(anyString())).thenReturn(network);
    SriovPf sriovPf = new SriovPf();
    sriovPf.setPfPciId(pfPciId);
    PInterface pIf = mock(PInterface.class);
    when(pIf.getInterfaceName()).thenReturn("test-port-id");
    when(resourcesClient.get(eq(PInterface.class), any(AAIResourceUri.class))).thenReturn(Optional.of(pIf));
    // Act
    heatbridge.createVlanAndSriovVF(port, lIf, "hostname");
    // Assert
    verify(transaction, times(2)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
    verify(osClient, times(1)).getNetworkById(anyString());
    verify(heatbridge, times(0)).processOVS(any(), any(), any());
}
Also used : Optional(java.util.Optional) Port(org.openstack4j.model.network.Port) IP(org.openstack4j.model.network.IP) Resource(org.openstack4j.model.heat.Resource) HeatResource(org.openstack4j.openstack.heat.domain.HeatResource) AAIResourceUri(org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) SriovPf(org.onap.aai.domain.yang.SriovPf) PInterface(org.onap.aai.domain.yang.PInterface) Network(org.openstack4j.model.network.Network) LInterface(org.onap.aai.domain.yang.LInterface) List(java.util.List) L3InterfaceIpv6AddressList(org.onap.aai.domain.yang.L3InterfaceIpv6AddressList) ArrayList(java.util.ArrayList) RelationshipList(org.onap.aai.domain.yang.RelationshipList) Subnet(org.openstack4j.model.network.Subnet) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 4 with PInterface

use of org.onap.aai.domain.yang.PInterface in project so by onap.

the class HeatBridgeImplTest method testUpdateVserverLInterfacesToAai_skipVlans.

@Test
public void testUpdateVserverLInterfacesToAai_skipVlans() throws HeatBridgeException, JsonParseException, JsonMappingException, IOException {
    // Arrange
    List<Resource> stackResources = (List<Resource>) extractTestStackResources();
    Port port = mock(Port.class);
    when(port.getId()).thenReturn("test-port-id");
    when(port.getName()).thenReturn("test-port-name");
    when(port.getvNicType()).thenReturn(HeatBridgeConstants.OS_SRIOV_PORT_TYPE);
    when(port.getMacAddress()).thenReturn("78:4f:43:68:e2:78");
    when(port.getNetworkId()).thenReturn("890a203a-23gg-56jh-df67-731656a8f13a");
    when(port.getDeviceId()).thenReturn("test-device-id");
    String pfPciId = "0000:08:00.0";
    when(port.getProfile()).thenReturn(ImmutableMap.of(HeatBridgeConstants.OS_PCI_SLOT_KEY, pfPciId, HeatBridgeConstants.OS_PHYSICAL_NETWORK_KEY, "physical_network_id"));
    Network network = mock(Network.class);
    when(network.getId()).thenReturn("test-network-id");
    when(network.getNetworkType()).thenReturn(NetworkType.VLAN);
    when(network.getProviderSegID()).thenReturn("2345");
    when(osClient.getPortById("212a203a-9764-4f42-84ea-731536a8f13a")).thenReturn(port);
    when(osClient.getPortById("387e3904-8948-43d1-8635-b6c2042b54da")).thenReturn(port);
    when(osClient.getPortById("70a09dfd-f1c5-4bc8-bd8f-dc539b8d662a")).thenReturn(port);
    when(osClient.getPortById("12f88b4d-c8a4-4fbd-bcb4-7e36af02430b")).thenReturn(port);
    when(osClient.getPortById("c54b9f45-b413-4937-bbe4-3c8a5689cfc9")).thenReturn(port);
    when(osClient.getNetworkById(anyString())).thenReturn(network);
    PInterface pIf = mock(PInterface.class);
    when(pIf.getInterfaceName()).thenReturn("test-port-id");
    doNothing().when(heatbridge).updateSriovPfToSriovVF(any(), any());
    // Act
    heatbridge.buildAddVserverLInterfacesToAaiAction(stackResources, Arrays.asList("1", "2"), "CloudOwner");
    // Assert
    verify(transaction, times(5)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
    verify(osClient, times(5)).getPortById(anyString());
    verify(osClient, times(5)).getNetworkById(anyString());
}
Also used : PInterface(org.onap.aai.domain.yang.PInterface) Optional(java.util.Optional) Port(org.openstack4j.model.network.Port) Network(org.openstack4j.model.network.Network) Resource(org.openstack4j.model.heat.Resource) HeatResource(org.openstack4j.openstack.heat.domain.HeatResource) AAIResourceUri(org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri) List(java.util.List) L3InterfaceIpv6AddressList(org.onap.aai.domain.yang.L3InterfaceIpv6AddressList) ArrayList(java.util.ArrayList) RelationshipList(org.onap.aai.domain.yang.RelationshipList) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Test(org.junit.Test)

Example 5 with PInterface

use of org.onap.aai.domain.yang.PInterface in project so by onap.

the class AaiHelper method buildPInterface.

/**
 * Transform Openstack Server object to AAI PInterface object
 *
 * @param port Openstack port object
 * @return AAI PInterface object
 */
public PInterface buildPInterface(Port port) {
    Map<String, Object> portProfile = port.getProfile();
    PInterface pInterface = new PInterface();
    pInterface.setInterfaceName(portProfile.get(HeatBridgeConstants.OS_PHYSICAL_NETWORK_KEY).toString());
    pInterface.setInMaint(false);
    pInterface.setInterfaceRole(HeatBridgeConstants.OS_PHYSICAL_INTERFACE_KEY);
    return pInterface;
}
Also used : PInterface(org.onap.aai.domain.yang.PInterface)

Aggregations

PInterface (org.onap.aai.domain.yang.PInterface)7 ArrayList (java.util.ArrayList)5 List (java.util.List)5 Optional (java.util.Optional)5 L3InterfaceIpv6AddressList (org.onap.aai.domain.yang.L3InterfaceIpv6AddressList)5 RelationshipList (org.onap.aai.domain.yang.RelationshipList)5 AAIResourceUri (org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri)5 Resource (org.openstack4j.model.heat.Resource)5 Network (org.openstack4j.model.network.Network)5 Port (org.openstack4j.model.network.Port)5 Test (org.junit.Test)4 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)4 HeatResource (org.openstack4j.openstack.heat.domain.HeatResource)4 HashMap (java.util.HashMap)2 LInterface (org.onap.aai.domain.yang.LInterface)2 SriovPf (org.onap.aai.domain.yang.SriovPf)2 IP (org.openstack4j.model.network.IP)2 Subnet (org.openstack4j.model.network.Subnet)2 TypeReference (com.fasterxml.jackson.core.type.TypeReference)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1