/* * (non-Javadoc) * * @see * org.rhq.core.pluginapi.inventory.CreateChildResourceFacet#createResource * (org.rhq.core.pluginapi.inventory.CreateResourceReport) */ @Override public CreateResourceReport createResource(CreateResourceReport report) { ResourceType resourceType = report.getResourceType(); // if (resourceType.getName().equals("Translators")) { // createConfigurationBasedResource(report); // } else { createContentBasedResource(report); // } return report; }
protected void createContentBasedResource(CreateResourceReport createResourceReport) { Property versionProp = createResourceReport .getPackageDetails() .getDeploymentTimeConfiguration() .get(Operation.Value.VDB_VERSION); String name = createResourceReport.getPackageDetails().getKey().getName(); name = name.substring(name.lastIndexOf(File.separatorChar) + 1); String userSpecifiedName = createResourceReport.getUserSpecifiedResourceName(); String deployName = (userSpecifiedName != null ? userSpecifiedName : name); if (versionProp != null) { Integer vdbVersion = ((PropertySimple) versionProp).getIntegerValue(); // strip off vdb extension if user added it if (deployName.endsWith(DQPManagementView.VDB_EXT)) { deployName = deployName.substring(0, deployName.lastIndexOf(DQPManagementView.VDB_EXT)); } if (vdbVersion != null) { deployName = deployName + "." + ((Integer) vdbVersion).toString() + DQPManagementView.VDB_EXT; // $NON-NLS-1$ } // add vdb extension if there was no version if (!deployName.endsWith(DQPManagementView.VDB_EXT) && !deployName.endsWith(DQPManagementView.DYNAMIC_VDB_EXT)) { deployName = deployName + DQPManagementView.VDB_EXT; } // null out version PropertySimple nullVersionProperty = new PropertySimple(Operation.Value.VDB_VERSION, null); createResourceReport .getPackageDetails() .getDeploymentTimeConfiguration() .put(nullVersionProperty); createResourceReport.setUserSpecifiedResourceName(deployName); } getDeployer().deploy(createResourceReport, createResourceReport.getResourceType()); }
/** * Deploy content to the remote server - this is one half of #createResource * * @param report Create resource report that tells us what to do * @return report that tells us what has been done. */ protected CreateResourceReport deployContent(CreateResourceReport report) { ContentContext cctx = context.getContentContext(); ResourcePackageDetails details = report.getPackageDetails(); ContentServices contentServices = cctx.getContentServices(); String resourceTypeName = report.getResourceType().getName(); ASUploadConnection uploadConnection = new ASUploadConnection(host, port); OutputStream out = uploadConnection.getOutputStream(details.getFileName()); contentServices.downloadPackageBitsForChildResource( cctx, resourceTypeName, details.getKey(), out); JsonNode uploadResult = uploadConnection.finishUpload(); if (verbose) log.info(uploadResult); if (ASUploadConnection.isErrorReply(uploadResult)) { report.setStatus(CreateResourceStatus.FAILURE); report.setErrorMessage(ASUploadConnection.getFailureDescription(uploadResult)); return report; } String fileName = details.getFileName(); if (fileName.startsWith( "C:\\fakepath\\")) { // TODO this is a hack as the server adds the fake path somehow fileName = fileName.substring("C:\\fakepath\\".length()); } String tmpName = fileName; // TODO figure out the tmp-name biz with the AS guys JsonNode resultNode = uploadResult.get("result"); String hash = resultNode.get("BYTES_VALUE").getTextValue(); return runDeploymentMagicOnServer(report, fileName, tmpName, hash); }
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; }
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; }