Search in sources :

Example 1 with OVFConfigurationTO

use of com.cloud.agent.api.to.deployasis.OVFConfigurationTO in project cloudstack by apache.

the class OVFHelper method getDeploymentOptionsFromDocumentTree.

private List<OVFConfigurationTO> getDeploymentOptionsFromDocumentTree(Document doc) {
    List<OVFConfigurationTO> options = new ArrayList<>();
    if (doc == null) {
        return options;
    }
    NodeList deploymentOptionSection = ovfParser.getElementsFromOVFDocument(doc, "DeploymentOptionSection");
    if (deploymentOptionSection.getLength() == 0) {
        return options;
    }
    Node hardwareSectionNode = deploymentOptionSection.item(0);
    NodeList childNodes = hardwareSectionNode.getChildNodes();
    int index = 0;
    for (int i = 0; i < childNodes.getLength(); i++) {
        Node node = childNodes.item(i);
        if (node != null && (node.getNodeName().equals("Configuration") || node.getNodeName().equals("ovf:Configuration"))) {
            Element configuration = (Element) node;
            String configurationId = ovfParser.getNodeAttribute(configuration, "id");
            String description = ovfParser.getChildNodeValue(configuration, "Description");
            String label = ovfParser.getChildNodeValue(configuration, "Label");
            OVFConfigurationTO option = new OVFConfigurationTO(configurationId, label, description, index);
            options.add(option);
            index++;
        }
    }
    return options;
}
Also used : OVFConfigurationTO(com.cloud.agent.api.to.deployasis.OVFConfigurationTO) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Element(org.w3c.dom.Element) ArrayList(java.util.ArrayList)

Example 2 with OVFConfigurationTO

use of com.cloud.agent.api.to.deployasis.OVFConfigurationTO in project cloudstack by apache.

the class OVFHelper method getVirtualHardwareSectionFromDocument.

/**
 * Retrieve the virtual hardware section and its deployment options as configurations
 */
public OVFVirtualHardwareSectionTO getVirtualHardwareSectionFromDocument(Document doc) {
    List<OVFConfigurationTO> configurations = getDeploymentOptionsFromDocumentTree(doc);
    List<OVFVirtualHardwareItemTO> items = getVirtualHardwareItemsFromDocumentTree(doc);
    if (CollectionUtils.isNotEmpty(configurations)) {
        for (OVFConfigurationTO configuration : configurations) {
            List<OVFVirtualHardwareItemTO> confItems = items.stream().filter(x -> StringUtils.isNotBlank(x.getConfigurationIds()) && hardwareItemContainsConfiguration(x, configuration.getId())).collect(Collectors.toList());
            configuration.setHardwareItems(confItems);
        }
    }
    List<OVFVirtualHardwareItemTO> commonItems = null;
    if (CollectionUtils.isNotEmpty(items)) {
        commonItems = items.stream().filter(x -> StringUtils.isBlank(x.getConfigurationIds())).collect(Collectors.toList());
    }
    String minimumHardwareVersion = getMinimumHardwareVersionFromDocumentTree(doc);
    return new OVFVirtualHardwareSectionTO(configurations, commonItems, minimumHardwareVersion);
}
Also used : OVFPropertyTO(com.cloud.agent.api.to.deployasis.OVFPropertyTO) Transformer(javax.xml.transform.Transformer) DOMSource(javax.xml.transform.dom.DOMSource) Arrays(java.util.Arrays) TransformerException(javax.xml.transform.TransformerException) StreamResult(javax.xml.transform.stream.StreamResult) InternalErrorException(com.cloud.exception.InternalErrorException) HashMap(java.util.HashMap) StringUtils(org.apache.commons.lang3.StringUtils) ArrayList(java.util.ArrayList) NumberUtils(org.apache.commons.lang.math.NumberUtils) ResourceType(com.cloud.configuration.Resource.ResourceType) Logger(org.apache.log4j.Logger) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) CollectionUtils(org.apache.commons.collections.CollectionUtils) Document(org.w3c.dom.Document) Map(java.util.Map) Node(org.w3c.dom.Node) LinkedList(java.util.LinkedList) OVFVirtualHardwareSectionTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareSectionTO) PrintWriter(java.io.PrintWriter) DatadiskTO(com.cloud.agent.api.to.DatadiskTO) NodeList(org.w3c.dom.NodeList) StringWriter(java.io.StringWriter) IOException(java.io.IOException) Pair(com.cloud.utils.Pair) Collectors(java.util.stream.Collectors) File(java.io.File) OVFEulaSectionTO(com.cloud.agent.api.to.deployasis.OVFEulaSectionTO) OVFVirtualHardwareItemTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareItemTO) OVFConfigurationTO(com.cloud.agent.api.to.deployasis.OVFConfigurationTO) CompressionUtil(com.cloud.utils.compression.CompressionUtil) List(java.util.List) Element(org.w3c.dom.Element) DocumentTraversal(org.w3c.dom.traversal.DocumentTraversal) NodeIterator(org.w3c.dom.traversal.NodeIterator) SAXException(org.xml.sax.SAXException) TransformerFactory(javax.xml.transform.TransformerFactory) NodeFilter(org.w3c.dom.traversal.NodeFilter) Collections(java.util.Collections) OVFNetworkTO(com.cloud.agent.api.to.deployasis.OVFNetworkTO) OVFVirtualHardwareItemTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareItemTO) OVFConfigurationTO(com.cloud.agent.api.to.deployasis.OVFConfigurationTO) OVFVirtualHardwareSectionTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareSectionTO)

Example 3 with OVFConfigurationTO

use of com.cloud.agent.api.to.deployasis.OVFConfigurationTO in project cloudstack by apache.

the class OVAProcessor method createOvfInformationTO.

private OVFInformationTO createOvfInformationTO(OVFHelper ovfHelper, Document doc, String ovfFilePath) throws InternalErrorException {
    OVFInformationTO ovfInformationTO = new OVFInformationTO();
    List<DatadiskTO> disks = ovfHelper.getOVFVolumeInfoFromFile(ovfFilePath, doc, null);
    if (CollectionUtils.isNotEmpty(disks)) {
        if (LOGGER.isTraceEnabled()) {
            LOGGER.trace(String.format("Found %d disks in template %s", disks.size(), ovfFilePath));
        }
        ovfInformationTO.setDisks(disks);
    }
    List<OVFNetworkTO> nets = ovfHelper.getNetPrerequisitesFromDocument(doc);
    if (CollectionUtils.isNotEmpty(nets)) {
        LOGGER.info("Found " + nets.size() + " prerequisite networks");
        ovfInformationTO.setNetworks(nets);
    } else if (LOGGER.isTraceEnabled()) {
        LOGGER.trace(String.format("no net prerequisites found in template %s", ovfFilePath));
    }
    List<OVFPropertyTO> ovfProperties = ovfHelper.getConfigurableOVFPropertiesFromDocument(doc);
    if (CollectionUtils.isNotEmpty(ovfProperties)) {
        LOGGER.info("Found " + ovfProperties.size() + " configurable OVF properties");
        ovfInformationTO.setProperties(ovfProperties);
    } else if (LOGGER.isTraceEnabled()) {
        LOGGER.trace(String.format("no ovf properties found in template %s", ovfFilePath));
    }
    OVFVirtualHardwareSectionTO hardwareSection = ovfHelper.getVirtualHardwareSectionFromDocument(doc);
    List<OVFConfigurationTO> configurations = hardwareSection.getConfigurations();
    if (CollectionUtils.isNotEmpty(configurations)) {
        LOGGER.info("Found " + configurations.size() + " deployment option configurations");
    }
    List<OVFVirtualHardwareItemTO> hardwareItems = hardwareSection.getCommonHardwareItems();
    if (CollectionUtils.isNotEmpty(hardwareItems)) {
        LOGGER.info("Found " + hardwareItems.size() + " virtual hardware items");
    }
    if (StringUtils.isNotBlank(hardwareSection.getMinimiumHardwareVersion())) {
        LOGGER.info("Found minimum hardware version " + hardwareSection.getMinimiumHardwareVersion());
    }
    ovfInformationTO.setHardwareSection(hardwareSection);
    List<OVFEulaSectionTO> eulaSections = ovfHelper.getEulaSectionsFromDocument(doc);
    if (CollectionUtils.isNotEmpty(eulaSections)) {
        LOGGER.info("Found " + eulaSections.size() + " license agreements");
        ovfInformationTO.setEulaSections(eulaSections);
    }
    Pair<String, String> guestOsPair = ovfHelper.getOperatingSystemInfoFromDocument(doc);
    if (guestOsPair != null) {
        LOGGER.info("Found guest OS information: " + guestOsPair.first() + " - " + guestOsPair.second());
        ovfInformationTO.setGuestOsInfo(guestOsPair);
    }
    return ovfInformationTO;
}
Also used : OVFInformationTO(com.cloud.agent.api.to.OVFInformationTO) OVFConfigurationTO(com.cloud.agent.api.to.deployasis.OVFConfigurationTO) OVFNetworkTO(com.cloud.agent.api.to.deployasis.OVFNetworkTO) OVFPropertyTO(com.cloud.agent.api.to.deployasis.OVFPropertyTO) OVFEulaSectionTO(com.cloud.agent.api.to.deployasis.OVFEulaSectionTO) OVFVirtualHardwareItemTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareItemTO) DatadiskTO(com.cloud.agent.api.to.DatadiskTO) OVFVirtualHardwareSectionTO(com.cloud.agent.api.to.deployasis.OVFVirtualHardwareSectionTO)

Aggregations

OVFConfigurationTO (com.cloud.agent.api.to.deployasis.OVFConfigurationTO)3 DatadiskTO (com.cloud.agent.api.to.DatadiskTO)2 OVFEulaSectionTO (com.cloud.agent.api.to.deployasis.OVFEulaSectionTO)2 OVFNetworkTO (com.cloud.agent.api.to.deployasis.OVFNetworkTO)2 OVFPropertyTO (com.cloud.agent.api.to.deployasis.OVFPropertyTO)2 OVFVirtualHardwareItemTO (com.cloud.agent.api.to.deployasis.OVFVirtualHardwareItemTO)2 OVFVirtualHardwareSectionTO (com.cloud.agent.api.to.deployasis.OVFVirtualHardwareSectionTO)2 ArrayList (java.util.ArrayList)2 Element (org.w3c.dom.Element)2 Node (org.w3c.dom.Node)2 NodeList (org.w3c.dom.NodeList)2 OVFInformationTO (com.cloud.agent.api.to.OVFInformationTO)1 ResourceType (com.cloud.configuration.Resource.ResourceType)1 InternalErrorException (com.cloud.exception.InternalErrorException)1 Pair (com.cloud.utils.Pair)1 CompressionUtil (com.cloud.utils.compression.CompressionUtil)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1 File (java.io.File)1 IOException (java.io.IOException)1 PrintWriter (java.io.PrintWriter)1