protected void createComponentTest(
      String templateName,
      Map<String, MetaValue> propValues,
      String deploymentName,
      ComponentType componentType,
      String componentName)
      throws Exception {
    ManagementView mgtView = getManagementView();
    DeploymentTemplateInfo dsInfo = mgtView.getTemplate(templateName);
    assertNotNull("template " + templateName + " found", dsInfo);
    Map<String, ManagedProperty> props = dsInfo.getProperties();

    for (String propName : propValues.keySet()) {
      ManagedProperty prop = props.get(propName);
      // If the property does not exist on the template we don't set it
      if (prop == null) continue;

      log.debug("template property before: " + prop.getName() + "," + prop.getValue());
      assertNotNull("property " + propName + " found in template " + templateName, prop);
      prop.setValue(propValues.get(propName));
      log.debug("template property after: " + prop.getName() + "," + prop.getValue());
    }

    // Assert map composite
    if (dsInfo.getProperties().get("config-property") != null)
      assertTrue(
          dsInfo.getProperties().get("config-property").getMetaType()
              instanceof MapCompositeMetaType);

    mgtView.applyTemplate(deploymentName, dsInfo);

    // reload the view
    activeView = null;
    mgtView = getManagementView();
    ManagedComponent dsMC = getManagedComponent(mgtView, componentType, componentName);
    assertNotNull(dsMC);

    Set<String> mcPropNames = new HashSet<String>(dsMC.getPropertyNames());
    for (String propName : propValues.keySet()) {
      ManagedProperty prop = dsMC.getProperty(propName);
      log.debug("Checking: " + propName);
      assertNotNull(propName, prop);
      Object propValue = prop.getValue();
      Object expectedValue = propValues.get(propName);
      if (propValue instanceof MetaValue) {
        if (prop.getMetaType().isComposite()) {
          // TODO / FIXME - compare composites
          log.warn("Not checking composite: " + propValue);
        } else {
          // Compare the MetaValues
          assertEquals(prop.getName(), expectedValue, propValue);
        }
      } else if (propValue != null) {
        fail(prop.getName() + " is not a MetaValue: " + propValue);
      }

      mcPropNames.remove(propName);
    }

    if (!mcPropNames.isEmpty()) {
      log.warn(getName() + "> untested properties: " + mcPropNames);
      for (String propName : mcPropNames) {
        ManagedProperty prop = dsMC.getProperty(propName);
        log.info(prop);
      }
    }
  }
Esempio n. 2
0
  private CreateResourceReport createConfigurationBasedResource(
      CreateResourceReport createResourceReport) {
    ResourceType resourceType = createResourceReport.getResourceType();
    Configuration defaultPluginConfig = getDefaultPluginConfiguration(resourceType);
    Configuration resourceConfig = createResourceReport.getResourceConfiguration();
    String resourceName = getResourceName(defaultPluginConfig, resourceConfig);
    ComponentType componentType = ProfileServiceUtil.getComponentType(resourceType);
    ManagementView managementView = null;
    ;
    managementView = getConnection().getManagementView();

    if (ProfileServiceUtil.isManagedComponent(getConnection(), resourceName, componentType)) {
      createResourceReport.setStatus(CreateResourceStatus.FAILURE);
      createResourceReport.setErrorMessage(
          "A "
              + resourceType.getName() // $NON-NLS-1$
              + " named '"
              + resourceName
              + "' already exists."); //$NON-NLS-1$ //$NON-NLS-2$
      return createResourceReport;
    }

    createResourceReport.setResourceName(resourceName);
    String resourceKey = getResourceKey(resourceType, resourceName);
    createResourceReport.setResourceKey(resourceKey);

    PropertySimple templateNameProperty =
        resourceConfig.getSimple(TranslatorComponent.Config.TEMPLATE_NAME);
    String templateName = templateNameProperty.getStringValue();

    DeploymentTemplateInfo template;
    try {
      template = managementView.getTemplate(templateName);
      Map<String, ManagedProperty> managedProperties = template.getProperties();

      ProfileServiceUtil.convertConfigurationToManagedProperties(
          managedProperties, resourceConfig, resourceType, null);

      LOG.debug(
          "Applying template ["
              + templateName //$NON-NLS-1$
              + "] to create ManagedComponent of type ["
              + componentType //$NON-NLS-1$
              + "]..."); //$NON-NLS-1$
      try {
        managementView.applyTemplate(resourceName, template);
        managementView.process();
        createResourceReport.setStatus(CreateResourceStatus.SUCCESS);
      } catch (Exception e) {
        LOG.error(
            "Unable to apply template ["
                + templateName //$NON-NLS-1$
                + "] to create ManagedComponent of type " //$NON-NLS-1$
                + componentType
                + ".",
            e); //$NON-NLS-1$
        createResourceReport.setStatus(CreateResourceStatus.FAILURE);
        createResourceReport.setException(e);
      }
    } catch (NoSuchDeploymentException e) {
      LOG.error("Unable to find template [" + templateName + "].", e); // $NON-NLS-1$ //$NON-NLS-2$
      createResourceReport.setStatus(CreateResourceStatus.FAILURE);
      createResourceReport.setException(e);
    } catch (Exception e) {
      LOG.error("Unable to process create request", e); // $NON-NLS-1$
      createResourceReport.setStatus(CreateResourceStatus.FAILURE);
      createResourceReport.setException(e);
    }
    return createResourceReport;
  }