Search in sources :

Example 1 with ComputeLanBootImagePath

use of com.emc.storageos.db.client.model.ComputeLanBootImagePath 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 ComputeLanBootImagePath

use of com.emc.storageos.db.client.model.ComputeLanBootImagePath 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 3 with ComputeLanBootImagePath

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

the class UcsDiscoveryWorker method deleteComputeLanBoot.

private void deleteComputeLanBoot(List<ComputeLanBoot> lanBootList) {
    List<ComputeLanBoot> removeLanBoots = new ArrayList<ComputeLanBoot>();
    for (ComputeLanBoot lanBoot : lanBootList) {
        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()) {
            deleteComputeLanBootImagePaths(lanBootPathList);
        }
        removeLanBoots.add(lanBoot);
    }
    deleteDataObjects(new ArrayList<DataObject>(removeLanBoots));
}
Also used : ComputeLanBoot(com.emc.storageos.db.client.model.ComputeLanBoot) DataObject(com.emc.storageos.db.client.model.DataObject) DiscoveredDataObject(com.emc.storageos.db.client.model.DiscoveredDataObject) ComputeLanBootImagePath(com.emc.storageos.db.client.model.ComputeLanBootImagePath) ArrayList(java.util.ArrayList) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 4 with ComputeLanBootImagePath

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

the class UcsDiscoveryWorker method reconcileComputeLanBootImagePath.

private ComputeLanBootImagePath reconcileComputeLanBootImagePath(LsbootLanImagePath lanImagePath, ComputeLanBootImagePath lanImage, ComputeLanBoot lanBoot) {
    if (lanImage != null) {
        lanImage.setDn(lanImagePath.getDn());
        lanImage.setType(lanImagePath.getType());
        lanImage.setVnicName(lanImagePath.getVnicName());
        _dbClient.persistObject(lanImage);
    } else {
        lanImage = new ComputeLanBootImagePath();
        URI uriLanBootImage = URIUtil.createId(ComputeLanBootImagePath.class);
        lanImage.setComputeLanBoot(lanBoot.getId());
        lanImage.setId(uriLanBootImage);
        lanImage.setDn(lanImagePath.getDn());
        lanImage.setType(lanImagePath.getType());
        lanImage.setVnicName(lanImagePath.getVnicName());
        _dbClient.createObject(lanImage);
    }
    return lanImage;
}
Also used : ComputeLanBootImagePath(com.emc.storageos.db.client.model.ComputeLanBootImagePath) URI(java.net.URI)

Example 5 with ComputeLanBootImagePath

use of com.emc.storageos.db.client.model.ComputeLanBootImagePath 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

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