/** * Constructor. * * @param stackContext stack context which provides module access to external functionality * @param serviceInfo associated service info * @param serviceDirectory used for all IO interaction with service directory in stack definition * @param isCommonService flag to mark a service as a common service */ public ServiceModule( StackContext stackContext, ServiceInfo serviceInfo, ServiceDirectory serviceDirectory, boolean isCommonService) { this.serviceInfo = serviceInfo; this.stackContext = stackContext; this.serviceDirectory = serviceDirectory; this.isCommonService = isCommonService; serviceInfo.setMetricsFile(serviceDirectory.getMetricsFile(serviceInfo.getName())); serviceInfo.setAlertsFile(serviceDirectory.getAlertsFile()); serviceInfo.setKerberosDescriptorFile(serviceDirectory.getKerberosDescriptorFile()); serviceInfo.setWidgetsDescriptorFile( serviceDirectory.getWidgetsDescriptorFile(serviceInfo.getName())); serviceInfo.setSchemaVersion(AmbariMetaInfo.SCHEMA_VERSION_2); serviceInfo.setServicePackageFolder(serviceDirectory.getPackageDir()); populateComponentModules(); populateConfigurationModules(); populateThemeModules(); validateServiceInfo(); }
@Override public void resolve( ServiceModule parentModule, Map<String, StackModule> allStacks, Map<String, ServiceModule> commonServices) throws AmbariException { if (!serviceInfo.isValid() || !parentModule.isValid()) return; ServiceInfo parent = parentModule.getModuleInfo(); if (serviceInfo.getComment() == null) { serviceInfo.setComment(parent.getComment()); } if (serviceInfo.getDisplayName() == null) { serviceInfo.setDisplayName(parent.getDisplayName()); } if (serviceInfo.getVersion() == null) { serviceInfo.setVersion(parent.getVersion()); } if (serviceInfo.getRequiredServices() == null || serviceInfo.getRequiredServices().size() == 0) { serviceInfo.setRequiredServices( parent.getRequiredServices() != null ? parent.getRequiredServices() : Collections.<String>emptyList()); } if (serviceInfo.isRestartRequiredAfterChange() == null) { serviceInfo.setRestartRequiredAfterChange(parent.isRestartRequiredAfterChange()); } if (serviceInfo.isRestartRequiredAfterRackChange() == null) { serviceInfo.setRestartRequiredAfterRackChange(parent.isRestartRequiredAfterRackChange()); } if (serviceInfo.isMonitoringService() == null) { serviceInfo.setMonitoringService(parent.isMonitoringService()); } if (serviceInfo.getOsSpecifics().isEmpty()) { serviceInfo.setOsSpecifics(parent.getOsSpecifics()); } if (serviceInfo.getCommandScript() == null) { serviceInfo.setCommandScript(parent.getCommandScript()); } if (serviceInfo.getServicePackageFolder() == null) { serviceInfo.setServicePackageFolder(parent.getServicePackageFolder()); } if (serviceInfo.getMetricsFile() == null) { serviceInfo.setMetricsFile(parent.getMetricsFile()); } if (serviceInfo.getAlertsFile() == null) { serviceInfo.setAlertsFile(parent.getAlertsFile()); } if (serviceInfo.getKerberosDescriptorFile() == null) { serviceInfo.setKerberosDescriptorFile(parent.getKerberosDescriptorFile()); } if (serviceInfo.getThemesMap().isEmpty()) { serviceInfo.setThemesMap(parent.getThemesMap()); } if (serviceInfo.getWidgetsDescriptorFile() == null) { serviceInfo.setWidgetsDescriptorFile(parent.getWidgetsDescriptorFile()); } mergeCustomCommands(parent.getCustomCommands(), serviceInfo.getCustomCommands()); mergeConfigDependencies(parent); mergeComponents(parentModule, allStacks, commonServices); mergeConfigurations(parentModule, allStacks, commonServices); mergeThemes(parentModule, allStacks, commonServices); mergeExcludedConfigTypes(parent); mergeServiceProperties(parent.getServicePropertyList()); }