Search in sources :

Example 1 with LsInstantiateNNamedTemplate

use of com.emc.cloud.platform.ucs.in.model.LsInstantiateNNamedTemplate in project coprhd-controller by CoprHD.

the class UCSMServiceImpl method createServiceProfileFromTemplate.

/**
 * Create Service Profile from ServiceProfileTemplate
 *
 * @param ucsmURL
 * @param username
 * @param password
 * @param serviceProfileDns
 * @param errorMessage
 * @return
 * @throws ClientGeneralException
 */
@Override
public LsServer createServiceProfileFromTemplate(String ucsmURL, String username, String password, String serviceProfileTemplateDn, String serviceProfileName, StringBuffer errorMessage) throws ClientGeneralException {
    if (serviceProfileTemplateDn == null || serviceProfileTemplateDn.isEmpty()) {
        throw new ClientGeneralException(ClientMessageKeys.EXPECTED_PARAMETER_WAS_NULL, new String[] { "serviceProfileTemplateDn" });
    }
    LsServer createdServiceProfile = null;
    List<LsServer> existingLsServers = getAllLsServers(ucsmURL, username, password, false);
    if (StringUtils.isNotBlank(serviceProfileName)) {
        String serviceProfileNameToUse = serviceProfileName;
        int index = 0;
        boolean serviceProfileNameIsDuplicate = isServiceProfileDuplicate(existingLsServers, serviceProfileNameToUse);
        if (!serviceProfileNameIsDuplicate) {
            if (serviceProfileNameToUse.length() > 32) {
                serviceProfileNameToUse = StringUtils.substringBefore(serviceProfileName, ".");
                if (serviceProfileNameToUse.length() > 32) {
                    serviceProfileNameToUse = StringUtils.substring(serviceProfileNameToUse, 0, 32);
                }
                serviceProfileNameIsDuplicate = isServiceProfileDuplicate(existingLsServers, serviceProfileNameToUse);
            }
        }
        while (serviceProfileNameIsDuplicate) {
            index++;
            serviceProfileNameToUse = serviceProfileName + "_" + Integer.toString(index);
            if (serviceProfileNameToUse.length() > 32) {
                serviceProfileNameToUse = StringUtils.substringBefore(serviceProfileName, ".") + "_" + Integer.toString(index);
                if (serviceProfileNameToUse.length() > 32) {
                    serviceProfileNameToUse = StringUtils.substring(serviceProfileNameToUse, 0, 32 - (Integer.toString(index).length() + 1));
                }
            }
            serviceProfileNameIsDuplicate = isServiceProfileDuplicate(existingLsServers, serviceProfileNameToUse);
        }
        try {
            ComputeSession computeSession = sessionManager.getSession(ucsmURL, username, password);
            LsInstantiateNNamedTemplate namedTemplate = new LsInstantiateNNamedTemplate();
            namedTemplate.setDn(serviceProfileTemplateDn);
            namedTemplate.setInHierarchical(Boolean.toString(false));
            String orgName = serviceProfileTemplateDn.substring(0, serviceProfileTemplateDn.lastIndexOf("/"));
            namedTemplate.setInTargetOrg(orgName);
            Dn dn = new Dn();
            dn.setValue(serviceProfileNameToUse);
            DnSet dnSet = new DnSet();
            dnSet.getDn().add(dn);
            namedTemplate.getContent().add(factory.createLsInstantiateNNamedTemplateInNameSet(dnSet));
            com.emc.cloud.platform.ucs.out.model.LsInstantiateNNamedTemplate namedTemplateOut = computeSession.execute(factory.createLsInstantiateNNamedTemplate(namedTemplate), com.emc.cloud.platform.ucs.out.model.LsInstantiateNNamedTemplate.class);
            if (namedTemplateOut != null && namedTemplateOut.getContent() != null) {
                if (!namedTemplateOut.getContent().isEmpty()) {
                    /*
                         * Expecting only one element to be returned!
                         */
                    for (Serializable contentElement : namedTemplateOut.getContent()) {
                        if (contentElement instanceof JAXBElement<?> && ((JAXBElement<?>) contentElement).getValue() != null) {
                            if (((JAXBElement<?>) contentElement).getValue() instanceof ConfigSet) {
                                ConfigSet configSet = (ConfigSet) ((JAXBElement<?>) contentElement).getValue();
                                for (JAXBElement<?> contentElement2 : configSet.getManagedObject()) {
                                    if (contentElement2.getValue() != null && contentElement2.getValue() instanceof LsServer) {
                                        createdServiceProfile = (LsServer) contentElement2.getValue();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            String errorDescription = null;
            if (namedTemplateOut != null) {
                errorDescription = namedTemplateOut.getErrorDescr();
            }
            if (errorDescription != null) {
                log.error("Error received from UCS: " + errorDescription);
                errorMessage.append("Error received from UCS: " + errorDescription);
            }
        } catch (ClientGeneralException e) {
            log.error("Unable to create service profile : " + serviceProfileName + " From SPT : " + serviceProfileTemplateDn, e);
            throw e;
        }
    } else {
        throw new ClientGeneralException(ClientMessageKeys.EXPECTED_PARAMETER_WAS_NULL, new String[] { "serviceProfileName" });
    }
    if (createdServiceProfile != null) {
        // re-fetch service profile so we have the correct uuid; else uuid of lsServer says 'derived'
        createdServiceProfile = getLsServerByDn(ucsmURL, username, password, createdServiceProfile.getDn());
    }
    return createdServiceProfile;
}
Also used : Serializable(java.io.Serializable) LsInstantiateNNamedTemplate(com.emc.cloud.platform.ucs.in.model.LsInstantiateNNamedTemplate) LsServer(com.emc.cloud.platform.ucs.out.model.LsServer) DnSet(com.emc.cloud.platform.ucs.in.model.DnSet) ConfigResolveDn(com.emc.cloud.platform.ucs.in.model.ConfigResolveDn) Dn(com.emc.cloud.platform.ucs.in.model.DnSet.Dn) JAXBElement(javax.xml.bind.JAXBElement) ClientGeneralException(com.emc.cloud.platform.clientlib.ClientGeneralException) ConfigSet(com.emc.cloud.platform.ucs.out.model.ConfigSet)

Aggregations

ClientGeneralException (com.emc.cloud.platform.clientlib.ClientGeneralException)1 ConfigResolveDn (com.emc.cloud.platform.ucs.in.model.ConfigResolveDn)1 DnSet (com.emc.cloud.platform.ucs.in.model.DnSet)1 Dn (com.emc.cloud.platform.ucs.in.model.DnSet.Dn)1 LsInstantiateNNamedTemplate (com.emc.cloud.platform.ucs.in.model.LsInstantiateNNamedTemplate)1 ConfigSet (com.emc.cloud.platform.ucs.out.model.ConfigSet)1 LsServer (com.emc.cloud.platform.ucs.out.model.LsServer)1 Serializable (java.io.Serializable)1 JAXBElement (javax.xml.bind.JAXBElement)1