Search in sources :

Example 1 with ComputeSanBootImage

use of com.emc.storageos.db.client.model.ComputeSanBootImage in project coprhd-controller by CoprHD.

the class ComputeSystemService method isSPTBootDefinitionValid.

private boolean isSPTBootDefinitionValid(UCSServiceProfileTemplate serviceProfileTemplate, ComputeBootDef bootDef) {
    boolean valid = true;
    _log.debug("validating SPT Boot Def " + bootDef.getId().toString());
    if (bootDef.getEnforceVnicVhbaNames() == true) {
        _log.debug("enforce vhba vnic names -- true");
        URIQueryResultList uriVhbas = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getServiceProfileTemplateComputeElemetHBAsConstraint(serviceProfileTemplate.getId()), uriVhbas);
        List<ComputeElementHBA> vhbas = _dbClient.queryObject(ComputeElementHBA.class, uriVhbas, true);
        URIQueryResultList uriSanBoot = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootDefComputeSanBootConstraint(bootDef.getId()), uriSanBoot);
        List<ComputeSanBoot> computeSanBoots = _dbClient.queryObject(ComputeSanBoot.class, uriSanBoot, true);
        if (computeSanBoots == null || computeSanBoots.isEmpty()) {
            _log.error("SPT: " + serviceProfileTemplate.getLabel() + " no san boot policy specified");
            valid = false;
        }
        for (ComputeSanBoot computeSanBoot : computeSanBoots) {
            if (!computeSanBoot.getIsFirstBootDevice()) {
                _log.error("SPT: " + serviceProfileTemplate.getLabel() + " san is not the first boot device");
                valid = false;
            }
            URIQueryResultList sanImageUris = new URIQueryResultList();
            _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImageConstraint(computeSanBoot.getId()), sanImageUris);
            List<ComputeSanBootImage> sanBootImageList = _dbClient.queryObject(ComputeSanBootImage.class, sanImageUris, true);
            for (ComputeSanBootImage image : sanBootImageList) {
                boolean matched = false;
                for (ComputeElementHBA hba : vhbas) {
                    if (hba.getLabel().equals(image.getVnicName())) {
                        matched = true;
                    }
                }
                if (!matched) {
                    _log.error("SPT: " + serviceProfileTemplate.getLabel() + " enforces vnic and vhba names,but hba names in san boot policy do not match the names of the hbas on the template");
                    valid = false;
                }
            }
        }
        URIQueryResultList uriVnics = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getServiceProfileTemplateComputeVnicsConstraint(serviceProfileTemplate.getId()), uriVnics);
        List<ComputeVnic> vnics = _dbClient.queryObject(ComputeVnic.class, uriVnics, true);
        URIQueryResultList uriLanBoot = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootDefComputeLanBootConstraint(bootDef.getId()), uriLanBoot);
        List<ComputeLanBoot> computeLanBoots = _dbClient.queryObject(ComputeLanBoot.class, uriLanBoot, true);
        for (ComputeLanBoot computeLanBoot : computeLanBoots) {
            URIQueryResultList lanImageUris = new URIQueryResultList();
            _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeLanBootImagePathsConstraint(computeLanBoot.getId()), lanImageUris);
            List<ComputeLanBootImagePath> lanBootImageList = _dbClient.queryObject(ComputeLanBootImagePath.class, lanImageUris, true);
            for (ComputeLanBootImagePath image : lanBootImageList) {
                boolean matched = false;
                for (ComputeVnic nic : vnics) {
                    if (nic.getName().equals(image.getVnicName())) {
                        matched = true;
                    }
                }
                if (!matched) {
                    _log.error("SPT: " + serviceProfileTemplate.getLabel() + " enforces vnic and vhba names,but vnic names in lan boot policy do not match the names of the hbas on the template");
                    valid = false;
                }
            }
        }
    }
    return valid;
}
Also used : ComputeSanBootImage(com.emc.storageos.db.client.model.ComputeSanBootImage) ComputeElementHBA(com.emc.storageos.db.client.model.ComputeElementHBA) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList) ComputeLanBoot(com.emc.storageos.db.client.model.ComputeLanBoot) ComputeSanBoot(com.emc.storageos.db.client.model.ComputeSanBoot) ComputeLanBootImagePath(com.emc.storageos.db.client.model.ComputeLanBootImagePath) ComputeVnic(com.emc.storageos.db.client.model.ComputeVnic)

Example 2 with ComputeSanBootImage

use of com.emc.storageos.db.client.model.ComputeSanBootImage in project coprhd-controller by CoprHD.

the class ComputeSystemService method isSanBootValidForVarrays.

private boolean isSanBootValidForVarrays(StringSet varrayIds, ComputeSanBoot computeSanBoot) {
    _log.debug("validate San Boot For Varrays");
    boolean isValid = true;
    if (computeSanBoot.getOrder() > 1) {
        _log.error("San boot should be the first boot device");
        isValid = false;
        return isValid;
    }
    URIQueryResultList sanImageUris = new URIQueryResultList();
    _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImageConstraint(computeSanBoot.getId()), sanImageUris);
    List<ComputeSanBootImage> sanBootImageList = _dbClient.queryObject(ComputeSanBootImage.class, sanImageUris, true);
    for (ComputeSanBootImage image : sanBootImageList) {
        URIQueryResultList sanImagePathUris = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImagePathConstraint(image.getId()), sanImagePathUris);
        List<ComputeSanBootImagePath> sanBootImagePathList = _dbClient.queryObject(ComputeSanBootImagePath.class, sanImagePathUris, true);
        // Validate the sanboot targets
        StringSet portWWPNs = new StringSet();
        for (ComputeSanBootImagePath imagePath : sanBootImagePathList) {
            String portWWPN = imagePath.getPortWWN();
            portWWPNs.add(portWWPN);
        }
        if (!portWWPNs.isEmpty()) {
            isValid = isSanBootTargetValidForVarrays(varrayIds, portWWPNs);
            if (!isValid) {
                return isValid;
            }
        } else {
            _log.debug("No san boot targets specified");
        }
    }
    return isValid;
}
Also used : ComputeSanBootImagePath(com.emc.storageos.db.client.model.ComputeSanBootImagePath) StringSet(com.emc.storageos.db.client.model.StringSet) ComputeSanBootImage(com.emc.storageos.db.client.model.ComputeSanBootImage) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 3 with ComputeSanBootImage

use of com.emc.storageos.db.client.model.ComputeSanBootImage in project coprhd-controller by CoprHD.

the class ComputeSystemService method isSPTBootPolicyValid.

private boolean isSPTBootPolicyValid(UCSServiceProfileTemplate serviceProfileTemplate, ComputeBootPolicy bootPolicy) {
    boolean valid = true;
    _log.debug("validating SPT Boot Policy" + bootPolicy.getId().toString());
    if (bootPolicy.getEnforceVnicVhbaNames() == true) {
        _log.debug("enforce vhba vnic names -- true");
        URIQueryResultList uriVhbas = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getServiceProfileTemplateComputeElemetHBAsConstraint(serviceProfileTemplate.getId()), uriVhbas);
        List<ComputeElementHBA> vhbas = _dbClient.queryObject(ComputeElementHBA.class, uriVhbas, true);
        URIQueryResultList uriSanBoot = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootPolicyComputeSanBootConstraint(bootPolicy.getId()), uriSanBoot);
        List<ComputeSanBoot> computeSanBoots = _dbClient.queryObject(ComputeSanBoot.class, uriSanBoot, true);
        if (computeSanBoots == null || computeSanBoots.isEmpty()) {
            _log.error("SPT: " + serviceProfileTemplate.getLabel() + " no san boot policy specified");
            valid = false;
        }
        for (ComputeSanBoot computeSanBoot : computeSanBoots) {
            if (!computeSanBoot.getIsFirstBootDevice()) {
                _log.error("SPT: " + serviceProfileTemplate.getLabel() + " san is not the first boot device");
                valid = false;
            }
            URIQueryResultList sanImageUris = new URIQueryResultList();
            _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImageConstraint(computeSanBoot.getId()), sanImageUris);
            List<ComputeSanBootImage> sanBootImageList = _dbClient.queryObject(ComputeSanBootImage.class, sanImageUris, true);
            for (ComputeSanBootImage image : sanBootImageList) {
                boolean matched = false;
                for (ComputeElementHBA hba : vhbas) {
                    if (hba.getLabel().equals(image.getVnicName())) {
                        matched = true;
                    }
                }
                if (!matched) {
                    _log.error("SPT: " + serviceProfileTemplate.getLabel() + " enforces vnic and vhba names,but hba names in san boot policy do not match the names of the hbas on the template");
                    valid = false;
                }
            }
        }
        URIQueryResultList uriVnics = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getServiceProfileTemplateComputeVnicsConstraint(serviceProfileTemplate.getId()), uriVnics);
        List<ComputeVnic> vnics = _dbClient.queryObject(ComputeVnic.class, uriVnics, true);
        URIQueryResultList uriLanBoot = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootPolicyComputeLanBootConstraint(bootPolicy.getId()), uriLanBoot);
        List<ComputeLanBoot> computeLanBoots = _dbClient.queryObject(ComputeLanBoot.class, uriLanBoot, true);
        for (ComputeLanBoot computeLanBoot : computeLanBoots) {
            URIQueryResultList lanImageUris = new URIQueryResultList();
            _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeLanBootImagePathsConstraint(computeLanBoot.getId()), lanImageUris);
            List<ComputeLanBootImagePath> lanBootImageList = _dbClient.queryObject(ComputeLanBootImagePath.class, lanImageUris, true);
            for (ComputeLanBootImagePath image : lanBootImageList) {
                boolean matched = false;
                for (ComputeVnic nic : vnics) {
                    if (nic.getName().equals(image.getVnicName())) {
                        matched = true;
                    }
                }
                if (!matched) {
                    _log.error("SPT: " + serviceProfileTemplate.getLabel() + " enforces vnic and vhba names,but vnic names in lan boot policy do not match the names of the hbas on the template");
                    valid = false;
                }
            }
        }
    }
    return valid;
}
Also used : ComputeSanBootImage(com.emc.storageos.db.client.model.ComputeSanBootImage) ComputeElementHBA(com.emc.storageos.db.client.model.ComputeElementHBA) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList) ComputeLanBoot(com.emc.storageos.db.client.model.ComputeLanBoot) ComputeSanBoot(com.emc.storageos.db.client.model.ComputeSanBoot) ComputeLanBootImagePath(com.emc.storageos.db.client.model.ComputeLanBootImagePath) ComputeVnic(com.emc.storageos.db.client.model.ComputeVnic)

Example 4 with ComputeSanBootImage

use of com.emc.storageos.db.client.model.ComputeSanBootImage in project coprhd-controller by CoprHD.

the class UcsDiscoveryWorker method reconcileComputeSanBootImage.

private ComputeSanBootImage reconcileComputeSanBootImage(LsbootSanImage sanImage, ComputeSanBootImage computeSanImage, ComputeSanBoot sanBoot) {
    if (computeSanImage != null) {
        computeSanImage.setDn(sanImage.getDn());
        computeSanImage.setVnicName(sanImage.getVnicName());
        _dbClient.persistObject(computeSanImage);
    }
    if (computeSanImage == null) {
        computeSanImage = new ComputeSanBootImage();
        URI uriSanBootImage = URIUtil.createId(ComputeSanBootImage.class);
        computeSanImage.setId(uriSanBootImage);
        computeSanImage.setType(sanImage.getType());
        computeSanImage.setVnicName(sanImage.getVnicName());
        computeSanImage.setDn(sanImage.getDn());
        computeSanImage.setComputeSanBoot(sanBoot.getId());
        _dbClient.createObject(computeSanImage);
    }
    Map<String, ComputeSanBootImagePath> computeSanBootImagePathMap = new HashMap<String, ComputeSanBootImagePath>();
    URIQueryResultList sanImagePathUris = new URIQueryResultList();
    _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImagePathConstraint(computeSanImage.getId()), sanImagePathUris);
    List<ComputeSanBootImagePath> sanBootPathList = _dbClient.queryObject(ComputeSanBootImagePath.class, sanImagePathUris, true);
    if (sanBootPathList != null && !sanBootPathList.isEmpty()) {
        for (ComputeSanBootImagePath sanBootImagePath : sanBootPathList) {
            computeSanBootImagePathMap.put(sanBootImagePath.getType(), sanBootImagePath);
        }
    }
    if (sanImage.getContent() != null && !sanImage.getContent().isEmpty()) {
        for (Serializable e2 : sanImage.getContent()) {
            if (e2 instanceof JAXBElement<?>) {
                if (((JAXBElement) e2).getValue() instanceof LsbootSanImagePath) {
                    LsbootSanImagePath lsSanImagePath = (LsbootSanImagePath) ((JAXBElement) e2).getValue();
                    ComputeSanBootImagePath sanBootImagePath = computeSanBootImagePathMap.get(lsSanImagePath.getType());
                    computeSanBootImagePathMap.remove(lsSanImagePath.getType());
                    sanBootImagePath = reconcileComputeSanBootImagePath(lsSanImagePath, sanBootImagePath, computeSanImage);
                }
            }
        }
    }
    deleteComputeSanBootImagePaths(new ArrayList<ComputeSanBootImagePath>(computeSanBootImagePathMap.values()));
    return computeSanImage;
}
Also used : ComputeSanBootImagePath(com.emc.storageos.db.client.model.ComputeSanBootImagePath) LsbootSanImagePath(com.emc.cloud.platform.ucs.out.model.LsbootSanImagePath) Serializable(java.io.Serializable) HashMap(java.util.HashMap) ComputeSanBootImage(com.emc.storageos.db.client.model.ComputeSanBootImage) JAXBElement(javax.xml.bind.JAXBElement) URI(java.net.URI) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 5 with ComputeSanBootImage

use of com.emc.storageos.db.client.model.ComputeSanBootImage in project coprhd-controller by CoprHD.

the class UcsDiscoveryWorker method deleteBootPolicies.

private void deleteBootPolicies(List<ComputeBootPolicy> bootPolicies) {
    List<ComputeSanBootImagePath> removeSanBootImagePaths = new ArrayList<ComputeSanBootImagePath>();
    List<ComputeSanBootImage> removeSanBootImages = new ArrayList<ComputeSanBootImage>();
    List<ComputeSanBoot> removeSanBoots = new ArrayList<ComputeSanBoot>();
    List<ComputeLanBootImagePath> removeLanBootImagePaths = new ArrayList<ComputeLanBootImagePath>();
    List<ComputeLanBoot> removeLanBoots = new ArrayList<ComputeLanBoot>();
    for (ComputeBootPolicy bootPolicy : bootPolicies) {
        // Retrieve associated ComputeSanBoot and delete it
        URIQueryResultList sanBootUris = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootDefComputeSanBootConstraint(bootPolicy.getId()), sanBootUris);
        List<ComputeSanBoot> sanBootList = _dbClient.queryObject(ComputeSanBoot.class, sanBootUris, true);
        if (sanBootList != null && !sanBootList.isEmpty()) {
            for (ComputeSanBoot sanBoot : sanBootList) {
                URIQueryResultList sanImageUris = new URIQueryResultList();
                _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImageConstraint(sanBoot.getId()), sanImageUris);
                List<ComputeSanBootImage> sanBootImageList = _dbClient.queryObject(ComputeSanBootImage.class, sanImageUris, true);
                if (sanBootImageList != null && !sanBootImageList.isEmpty()) {
                    for (ComputeSanBootImage computeSanImage : sanBootImageList) {
                        URIQueryResultList sanImagePathUris = new URIQueryResultList();
                        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeSanBootImagePathConstraint(computeSanImage.getId()), sanImagePathUris);
                        List<ComputeSanBootImagePath> sanBootPathList = _dbClient.queryObject(ComputeSanBootImagePath.class, sanImagePathUris, true);
                        if (sanBootPathList != null && !sanBootPathList.isEmpty()) {
                            removeSanBootImagePaths.addAll(sanBootPathList);
                        }
                        removeSanBootImages.add(computeSanImage);
                    }
                }
                removeSanBoots.add(sanBoot);
            }
        }
        // Retrieve associated ComputeLanBoot and delete it
        URIQueryResultList lanBootUris = new URIQueryResultList();
        _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeBootDefComputeLanBootConstraint(bootPolicy.getId()), lanBootUris);
        List<ComputeLanBoot> lanBootList = _dbClient.queryObject(ComputeLanBoot.class, lanBootUris, true);
        if (lanBootList != null && !lanBootList.isEmpty()) {
            ComputeLanBoot lanBoot = lanBootList.get(0);
            URIQueryResultList lanImageUris = new URIQueryResultList();
            _dbClient.queryByConstraint(ContainmentConstraint.Factory.getComputeLanBootImagePathsConstraint(lanBoot.getId()), lanImageUris);
            List<ComputeLanBootImagePath> lanBootPathList = _dbClient.queryObject(ComputeLanBootImagePath.class, lanImageUris, true);
            if (lanBootPathList != null && !lanBootPathList.isEmpty()) {
                removeLanBootImagePaths.addAll(lanBootPathList);
            }
            removeLanBoots.add(lanBoot);
        }
    }
    deleteDataObjects(new ArrayList<DataObject>(removeLanBootImagePaths));
    deleteDataObjects(new ArrayList<DataObject>(removeLanBoots));
    deleteDataObjects(new ArrayList<DataObject>(removeSanBootImagePaths));
    deleteDataObjects(new ArrayList<DataObject>(removeSanBootImages));
    deleteDataObjects(new ArrayList<DataObject>(removeSanBoots));
    deleteDataObjects(new ArrayList<DataObject>(bootPolicies));
}
Also used : ArrayList(java.util.ArrayList) ComputeSanBootImage(com.emc.storageos.db.client.model.ComputeSanBootImage) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList) ComputeSanBootImagePath(com.emc.storageos.db.client.model.ComputeSanBootImagePath) ComputeLanBoot(com.emc.storageos.db.client.model.ComputeLanBoot) DataObject(com.emc.storageos.db.client.model.DataObject) DiscoveredDataObject(com.emc.storageos.db.client.model.DiscoveredDataObject) ComputeSanBoot(com.emc.storageos.db.client.model.ComputeSanBoot) ComputeLanBootImagePath(com.emc.storageos.db.client.model.ComputeLanBootImagePath) ComputeBootPolicy(com.emc.storageos.db.client.model.ComputeBootPolicy)

Aggregations

URIQueryResultList (com.emc.storageos.db.client.constraint.URIQueryResultList)9 ComputeSanBootImage (com.emc.storageos.db.client.model.ComputeSanBootImage)9 ComputeSanBoot (com.emc.storageos.db.client.model.ComputeSanBoot)6 ComputeSanBootImagePath (com.emc.storageos.db.client.model.ComputeSanBootImagePath)4 ComputeLanBoot (com.emc.storageos.db.client.model.ComputeLanBoot)3 ComputeLanBootImagePath (com.emc.storageos.db.client.model.ComputeLanBootImagePath)3 DataObject (com.emc.storageos.db.client.model.DataObject)3 DiscoveredDataObject (com.emc.storageos.db.client.model.DiscoveredDataObject)3 Serializable (java.io.Serializable)3 URI (java.net.URI)3 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 JAXBElement (javax.xml.bind.JAXBElement)3 LsbootSanImage (com.emc.cloud.platform.ucs.out.model.LsbootSanImage)2 ComputeElementHBA (com.emc.storageos.db.client.model.ComputeElementHBA)2 ComputeVnic (com.emc.storageos.db.client.model.ComputeVnic)2 LsbootSanImagePath (com.emc.cloud.platform.ucs.out.model.LsbootSanImagePath)1 ComputeBootPolicy (com.emc.storageos.db.client.model.ComputeBootPolicy)1 StringSet (com.emc.storageos.db.client.model.StringSet)1