@Override public CreateResourceReport createResource(CreateResourceReport report) { if (report.getPackageDetails() != null) { // Content deployment return deployContent(report); } else { report.setStatus(CreateResourceStatus.INVALID_CONFIGURATION); Address createAddress = new Address(address); createAddress.add( report.getPluginConfiguration().getSimpleValue("path", ""), report.getUserSpecifiedResourceName()); Operation op = new Operation("add", createAddress); for (Property prop : report.getResourceConfiguration().getProperties()) { if (prop instanceof PropertySimple) { PropertySimple ps = (PropertySimple) prop; String value = ps.getStringValue(); op.addAdditionalProperty(prop.getName(), value); } // TODO more types } Result result = getASConnection().execute(op); if (result.isSuccess()) { report.setStatus(CreateResourceStatus.SUCCESS); report.setResourceKey(address.getPath()); report.setResourceName(report.getUserSpecifiedResourceName()); } else { report.setStatus(CreateResourceStatus.FAILURE); report.setErrorMessage(result.getFailureDescription()); } } return report; }
/** * Update or create a Datasource file * * @param deploymentFile * @param name * @param report */ public static void updateDatasource( File deploymentFile, String name, CreateResourceReport report) { try { updateDatasource(deploymentFile, name, report.getResourceConfiguration()); report.setStatus(CreateResourceStatus.SUCCESS); } catch (IOException e) { report.setException(e); log.error("IO error occurred while updating datasource at file: " + deploymentFile, e); } catch (JDOMException e) { report.setException(e); log.error("Parsing error occurred while updating datasource at file: " + deploymentFile, e); } }
public CreateResourceReport createResource(CreateResourceReport report) { JBossASServerComponent parentResourceComponent = getResourceContext().getParentResourceComponent(); String resourceTypeName = report.getResourceType().getName(); String objectNamePreString; boolean isTopic = false; if (resourceTypeName.contains("Topic")) { objectNamePreString = TOPIC_MBEAN_NAME; isTopic = true; } else { objectNamePreString = QUEUE_MBEAN_NAME; } Configuration config = report.getResourceConfiguration(); String name = config.getSimple("MBeanName").getStringValue(); PropertySimple nameTemplateProp = report.getPluginConfiguration().getSimple("nameTemplate"); String rName = nameTemplateProp.getStringValue(); //noinspection ConstantConditions rName = rName.replace("{name}", name); EmsConnection connection = parentResourceComponent.getEmsConnection(); if (DeploymentUtility.isDuplicateJndiName(connection, objectNamePreString, name)) { report.setStatus(CreateResourceStatus.FAILURE); report.setErrorMessage("Duplicate JNDI Name, a resource with that name already exists"); return report; } PropertySimple pluginNameProperty = new PropertySimple("name", rName); getResourceContext().getPluginConfiguration().put(pluginNameProperty); File deployDir = new File(parentResourceComponent.getConfigurationPath() + "/deploy"); File deploymentFile = new File(deployDir, FileNameUtility.formatFileName(name) + "-destination-service.xml"); xmlEditor = new JBossMessagingConfigurationEditor(resourceTypeName); xmlEditor.updateConfiguration(deploymentFile, name, report); try { parentResourceComponent.deployFile(deploymentFile); } catch (Exception e) { JBossASServerComponent.setErrorOnCreateResourceReport(report, e.getLocalizedMessage(), e); return report; } // This key needs to be the same as the object name string used in discovery, defined in the // plugin descriptor // jboss.messaging.destination:service=<Queue|Topic>,name=%name% String serviceString = (isTopic ? "Topic" : "Queue"); String objectName = "jboss.messaging.destination:name=" + name + ",service=" + serviceString; try { // IMPORTANT: The object name must be canonicalized so it matches the resource key that // MBeanResourceDiscoveryComponent uses, which is the canonical object name. objectName = getCanonicalName(objectName); report.setResourceKey(objectName); } catch (MalformedObjectNameException e) { log.warn("Invalid key [" + objectName + "]: " + e.getMessage()); return report; } report.setResourceName(rName); try { Thread.sleep(5000L); } catch (InterruptedException e) { log.info("Sleep after datasource create interrupted", e); Thread.currentThread().interrupt(); } return report; }
@Override public CreateResourceReport createResource(CreateResourceReport report) { report.setStatus(CreateResourceStatus.INVALID_CONFIGURATION); Address createAddress = new Address(this.address); String path = report.getPluginConfiguration().getSimpleValue("path", ""); String resourceName; if (!path.contains("=")) { // this is not a singleton subsystem // resources like example=test1 and example=test2 can be created resourceName = report.getUserSpecifiedResourceName(); } else { // this is a request to create a true singleton subsystem // both the path and the name are set at resource level configuration resourceName = path.substring(path.indexOf('=') + 1); path = path.substring(0, path.indexOf('=')); } createAddress.add(path, resourceName); Operation op = new Operation("add", createAddress); for (Property prop : report.getResourceConfiguration().getProperties()) { SimpleEntry<String, ?> entry = null; boolean isEntryEligible = true; if (prop instanceof PropertySimple) { PropertySimple propertySimple = (PropertySimple) prop; PropertyDefinitionSimple propertyDefinition = this.configurationDefinition.getPropertyDefinitionSimple(propertySimple.getName()); if (propertyDefinition == null || (!propertyDefinition.isRequired() && propertySimple.getStringValue() == null)) { isEntryEligible = false; } else { entry = preparePropertySimple(propertySimple, propertyDefinition); } } else if (prop instanceof PropertyList) { PropertyList propertyList = (PropertyList) prop; PropertyDefinitionList propertyDefinition = this.configurationDefinition.getPropertyDefinitionList(propertyList.getName()); if (!propertyDefinition.isRequired() && propertyList.getList().size() == 0) { isEntryEligible = false; } else { entry = preparePropertyList(propertyList, propertyDefinition); } } else if (prop instanceof PropertyMap) { PropertyMap propertyMap = (PropertyMap) prop; PropertyDefinitionMap propertyDefinition = this.configurationDefinition.getPropertyDefinitionMap(propertyMap.getName()); if (!propertyDefinition.isRequired() && propertyMap.getMap().size() == 0) { isEntryEligible = false; } else { entry = preparePropertyMap(propertyMap, propertyDefinition); } } if (isEntryEligible) { op.addAdditionalProperty(entry.getKey(), entry.getValue()); } } Result result = this.connection.execute(op); if (result.isSuccess()) { report.setStatus(CreateResourceStatus.SUCCESS); report.setResourceKey(createAddress.getPath()); report.setResourceName(report.getUserSpecifiedResourceName()); } else { report.setStatus(CreateResourceStatus.FAILURE); report.setErrorMessage(result.getFailureDescription()); } return report; }
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; }