Repository: ambari Updated Branches: refs/heads/branch-feature-AMBARI-14714 72bac1f7f -> 527c4a2d7
http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java index 881f172..755a80f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java @@ -289,7 +289,7 @@ public class ClusterImpl implements Cluster { @Inject private StackDAO stackDAO; - private volatile Multimap<String, String> serviceConfigTypes; + private volatile Multimap<Long, String> serviceConfigTypes; /** * Used to publish events relating to cluster CRUD operations and to receive @@ -348,9 +348,8 @@ public class ClusterImpl implements Cluster { loadRequestExecutions(); - if (desiredStackVersion != null && !StringUtils.isEmpty(desiredStackVersion.getStackName()) && ! - StringUtils.isEmpty(desiredStackVersion.getStackVersion())) { - loadServiceConfigTypes(); + if (servicesById != null && !servicesById.isEmpty()) { + loadServicesConfigTypes(servicesById.values()); } // register to receive stuff @@ -358,41 +357,42 @@ public class ClusterImpl implements Cluster { this.eventPublisher = eventPublisher; } - private void loadServiceConfigTypes() throws AmbariException { + private void loadServicesConfigTypes(Collection<Service> services) throws AmbariException { + for (Service service : services) { + loadServiceConfigTypes(service); + } + } + + private void loadServiceConfigTypes(Service service) throws AmbariException { + if (serviceConfigTypes == null) { + serviceConfigTypes = HashMultimap.create(); + } else { + serviceConfigTypes.removeAll(service.getServiceId()); + } try { - serviceConfigTypes = collectServiceConfigTypesMapping(); + serviceConfigTypes.putAll(service.getServiceId(), collectServiceConfigTypes(service)); } catch (AmbariException e) { - LOG.error("Cannot load stack info:", e); + LOG.error("Cannot load service info:", e); throw e; } - LOG.info("Service config types loaded: {}", serviceConfigTypes); + LOG.info("Updated service config types: {}", serviceConfigTypes); } /** - * Construct config type to service name mapping + * Construct config types for concrete service * - * @throws AmbariException when stack or its part not found + * @throws AmbariException when stack or service not found */ - private Multimap<String, String> collectServiceConfigTypesMapping() throws AmbariException { - Multimap<String, String> serviceConfigTypes = HashMultimap.create(); - - Map<String, ServiceInfo> serviceInfoMap = null; + private Collection<String> collectServiceConfigTypes(Service service) throws AmbariException { + ServiceInfo serviceInfo; try { - serviceInfoMap = ambariMetaInfo.getServices(desiredStackVersion.getStackName(), desiredStackVersion.getStackVersion()); + serviceInfo = ambariMetaInfo.getService(service); } catch (ParentObjectNotFoundException e) { LOG.error("Service config versioning disabled due to exception: ", e); - return serviceConfigTypes; - } - for (Entry<String, ServiceInfo> entry : serviceInfoMap.entrySet()) { - String serviceName = entry.getKey(); - ServiceInfo serviceInfo = entry.getValue(); - Set<String> configTypes = serviceInfo.getConfigTypeAttributes().keySet(); - for (String configType : configTypes) { - serviceConfigTypes.put(serviceName, configType); - } + throw e; } - return serviceConfigTypes; + return serviceInfo.getConfigTypeAttributes().keySet(); } /** @@ -448,9 +448,10 @@ public class ClusterImpl implements Cluster { try { if (ambariMetaInfo.getService(stackId.getStackName(), stackId.getStackVersion(), serviceEntity.getServiceType()) != null) { - services.put(serviceEntity.getServiceName(), - serviceFactory.createExisting(this, getServiceGroup(serviceEntity.getServiceGroupId()), serviceEntity)); - stackId = getService(serviceEntity.getServiceName()).getDesiredStackId(); + Service service = serviceFactory.createExisting(this, getServiceGroup(serviceEntity.getServiceGroupId()), serviceEntity); + services.put(serviceEntity.getServiceName(), service); + stackId = getService(serviceEntity.getServiceName()).getDesiredStackId(); + servicesById.put(serviceEntity.getServiceId(), service); } } catch (AmbariException e) { @@ -874,7 +875,15 @@ public class ClusterImpl implements Cluster { LOG.debug("Adding a new Service, clusterName={}, clusterId={}, serviceName={} serviceType={}", getClusterName(), getClusterId(), service.getName(), service.getServiceType()); } + //TODO get rid of services map services.put(service.getName(), service); + + servicesById.put(service.getServiceId(), service); + try { + loadServiceConfigTypes(service); + } catch (AmbariException e) { + e.printStackTrace(); + } } /** @@ -1047,15 +1056,53 @@ public class ClusterImpl implements Cluster { } @Override + public Service getService(String serviceGroupName, String serviceName) throws AmbariException { + Service service = null; + //TODO use serviceIds instead of service name (remove this if) + if (serviceGroupName == null) { + service = getService(serviceName); + if (null == service) { + throw new ServiceNotFoundException(getClusterName(), serviceName); + } + } else { + for (Service serviceCandidate : servicesById.values()) { + if (serviceCandidate.getClusterId().equals(this.getClusterId()) + && StringUtils.equals(serviceCandidate.getServiceGroupName(), serviceGroupName) + && StringUtils.equals(serviceCandidate.getName(), serviceName)) { + if (service == null) { + service = serviceCandidate; + } else { + LOG.error("Two services entities found for same serviceGroup and serviceName : service1 {%s}, service2 {%s}", service, serviceCandidate); + throw new AmbariException(String.format("Two services entities found for same serviceGroup and serviceName : service1 {%s}, service2 {%s}", service, serviceCandidate)); + } + } + } + } + + if (null == service) { + throw new ServiceNotFoundException(getClusterName(), serviceName); + } + + return service; + } + + @Override public Service getService(Long serviceId) throws AmbariException { Service service = servicesById.get(serviceId); if (null == service) { throw new ServiceNotFoundException(getClusterName(), serviceId); } - return service; } + private Service getServiceOrNull(Long serviceId) { + try { + return getService(serviceId); + } catch (AmbariException e) { + return null; + } + } + @Override public Map<String, Service> getServices() { return new HashMap<>(services); @@ -1126,8 +1173,6 @@ public class ClusterImpl implements Cluster { clusterEntity.setDesiredStack(stackEntity); clusterEntity = clusterDAO.merge(clusterEntity); - - loadServiceConfigTypes(); } finally { clusterGlobalLock.writeLock().unlock(); } @@ -1569,6 +1614,9 @@ public class ClusterImpl implements Cluster { service.delete(); serviceComponentHosts.remove(serviceName); + services.remove(serviceName); + servicesById.remove(service.getServiceId()); + serviceConfigTypes.removeAll(service.getServiceId()); for (List<ServiceComponentHost> serviceComponents : serviceComponentHostsByHost.values()) { Iterables.removeIf(serviceComponents, new Predicate<ServiceComponentHost>() { @@ -1639,12 +1687,12 @@ public class ClusterImpl implements Cluster { } @Override - public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs) { + public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs) throws AmbariException { return addDesiredConfig(user, configs, null); } @Override - public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs, String serviceConfigVersionNote) { + public ServiceConfigVersionResponse addDesiredConfig(String user, Set<Config> configs, String serviceConfigVersionNote) throws AmbariException { if (null == user) { throw new NullPointerException("User must be specified."); } @@ -1721,7 +1769,8 @@ public class ClusterImpl implements Cluster { for (ClusterConfigEntity configEntity : entities) { if (allVersions || configEntity.isSelected()) { DesiredConfig desiredConfig = new DesiredConfig(); - desiredConfig.setServiceName(null); + desiredConfig.setServiceId(null); + desiredConfig.setServiceGroupId(null); desiredConfig.setTag(configEntity.getTag()); if (!allConfigs.containsKey(configEntity.getType())) { @@ -1787,7 +1836,7 @@ public class ClusterImpl implements Cluster { @Override public ServiceConfigVersionResponse createServiceConfigVersion( - String serviceName, String user, String note, ConfigGroup configGroup) { + Long serviceId, String user, String note, ConfigGroup configGroup) throws AmbariException { // Create next service config version ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); @@ -1808,24 +1857,23 @@ public class ClusterImpl implements Cluster { serviceConfigEntity.setClusterConfigEntities(configEntities); } else { - List<ClusterConfigEntity> configEntities = getClusterConfigEntitiesByService(serviceName); + List<ClusterConfigEntity> configEntities = getClusterConfigEntitiesByService(serviceId); serviceConfigEntity.setClusterConfigEntities(configEntities); } long nextServiceConfigVersion = serviceConfigDAO.findNextServiceConfigVersion(clusterId, - serviceName); + serviceId); - // get the correct stack ID to use when creating the service config - StackEntity stackEntity = clusterEntity.getDesiredStack(); - Service service = services.get(serviceName); - if (null != service) { - StackId serviceStackId = service.getDesiredStackId(); - stackEntity = stackDAO.find(serviceStackId); - } + Service service = getService(serviceId); + StackId serviceStackId = service.getDesiredStackId(); + StackEntity stackEntity = stackDAO.find(serviceStackId); + ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findById(clusterId, service.getServiceGroupId(), service.getServiceId()); - serviceConfigEntity.setServiceName(serviceName); + serviceConfigEntity.setServiceId(serviceId); serviceConfigEntity.setClusterEntity(clusterEntity); + serviceConfigEntity.setServiceGroupId(service.getServiceGroupId()); + serviceConfigEntity.setClusterServiceEntity(clusterServiceEntity); serviceConfigEntity.setVersion(nextServiceConfigVersion); serviceConfigEntity.setUser(user); serviceConfigEntity.setNote(note); @@ -1843,7 +1891,7 @@ public class ClusterImpl implements Cluster { String configGroupName = configGroup == null ? ServiceConfigVersionResponse.DEFAULT_CONFIG_GROUP_NAME : configGroup.getName(); configChangeLog.info("(configchange) Creating config version. cluster: '{}', changed by: '{}', " + "service_name: '{}', config_group: '{}', config_group_id: '{}', version: '{}', create_timestamp: '{}', note: '{}'", - getClusterName(), user, serviceName, configGroupName, + getClusterName(), user, getService(serviceId).getName(), configGroupName, configGroup == null ? "null" : configGroup.getId(), serviceConfigEntity.getVersion(), serviceConfigEntity.getCreateTimestamp(), serviceConfigEntity.getNote()); @@ -1854,42 +1902,47 @@ public class ClusterImpl implements Cluster { } @Override - public String getServiceForConfigTypes(Collection<String> configTypes) { + public Long getServiceForConfigTypes(Collection<String> configTypes) { //debug LOG.info("Looking for service for config types {}", configTypes); - String serviceName = null; + Long serviceId = null; for (String configType : configTypes) { - for (Entry<String, String> entry : serviceConfigTypes.entries()) { + for (Entry<Long, String> entry : serviceConfigTypes.entries()) { if (StringUtils.equals(entry.getValue(), configType)) { - if (serviceName != null) { - if (entry.getKey() != null && !StringUtils.equals(serviceName, entry.getKey())) { + if (serviceId != null) { + if (entry.getKey() != null && !serviceId.equals(entry.getKey())) { throw new IllegalArgumentException(String.format("Config type %s belongs to %s service, " + - "but also qualified for %s", configType, serviceName, entry.getKey())); + "but also qualified for %s", configType, getServiceOrNull(serviceId), getServiceOrNull(entry.getKey()))); } } else { - serviceName = entry.getKey(); + serviceId = entry.getKey(); } } } } - LOG.info("Service {} returning", serviceName); - return serviceName; + if (serviceId == null) { + LOG.warn("Can't find serviceId for {}, there is a problem if there's no cluster-env", configTypes); + } else { + LOG.info("Service {} returning", getServiceOrNull(serviceId)); + } + + return serviceId; } @Override - public String getServiceByConfigType(String configType) { - for (Entry<String, String> entry : serviceConfigTypes.entries()) { - String serviceName = entry.getKey(); + public Service getServiceByConfigType(String configType) { + for (Entry<Long, String> entry : serviceConfigTypes.entries()) { + Long serviceId = entry.getKey(); String type = entry.getValue(); if (StringUtils.equals(type, configType)) { - return serviceName; + return getServiceOrNull(serviceId); } } return null; } @Override - public ServiceConfigVersionResponse setServiceConfigVersion(String serviceName, Long version, String user, String note) throws AmbariException { + public ServiceConfigVersionResponse setServiceConfigVersion(Long serviceId, Long version, String user, String note) throws AmbariException { if (null == user) { throw new NullPointerException("User must be specified."); } @@ -1897,7 +1950,7 @@ public class ClusterImpl implements Cluster { clusterGlobalLock.writeLock().lock(); try { ServiceConfigVersionResponse serviceConfigVersionResponse = applyServiceConfigVersion( - serviceName, version, user, note); + serviceId, version, user, note); return serviceConfigVersionResponse; } finally { clusterGlobalLock.writeLock().unlock(); @@ -2008,12 +2061,12 @@ public class ClusterImpl implements Cluster { } @Override - public List<ServiceConfigVersionResponse> getActiveServiceConfigVersionResponse(String serviceName) { + public List<ServiceConfigVersionResponse> getActiveServiceConfigVersionResponse(Long serviceId) { clusterGlobalLock.readLock().lock(); try { List<ServiceConfigEntity> activeServiceConfigVersionEntities = new ArrayList<>(); List<ServiceConfigVersionResponse> activeServiceConfigVersionResponses = new ArrayList<>(); - activeServiceConfigVersionEntities.addAll(serviceConfigDAO.getLastServiceConfigsForService(getClusterId(), serviceName)); + activeServiceConfigVersionEntities.addAll(serviceConfigDAO.getLastServiceConfigsForService(getClusterId(), serviceId)); for (ServiceConfigEntity serviceConfigEntity : activeServiceConfigVersionEntities) { ServiceConfigVersionResponse serviceConfigVersionResponse = getServiceConfigVersionResponseWithConfig(convertToServiceConfigVersionResponse(serviceConfigEntity), serviceConfigEntity); serviceConfigVersionResponse.setIsCurrent(true); @@ -2044,17 +2097,6 @@ public class ClusterImpl implements Cluster { return serviceConfigVersionResponse; } - - @RequiresSession - ServiceConfigVersionResponse getActiveServiceConfigVersion(String serviceName) { - ServiceConfigEntity lastServiceConfig = serviceConfigDAO.getLastServiceConfig(getClusterId(), serviceName); - if (lastServiceConfig == null) { - LOG.debug("No service config version found for service {}", serviceName); - return null; - } - return convertToServiceConfigVersionResponse(lastServiceConfig); - } - @RequiresSession ServiceConfigVersionResponse convertToServiceConfigVersionResponse(ServiceConfigEntity serviceConfigEntity) { Long groupId = serviceConfigEntity.getGroupId(); @@ -2082,11 +2124,11 @@ public class ClusterImpl implements Cluster { } @Transactional - ServiceConfigVersionResponse applyServiceConfigVersion(String serviceName, Long serviceConfigVersion, String user, + ServiceConfigVersionResponse applyServiceConfigVersion(Long serviceId, Long serviceConfigVersion, String user, String serviceConfigVersionNote) throws AmbariException { - ServiceConfigEntity serviceConfigEntity = serviceConfigDAO.findByServiceAndVersion(serviceName, serviceConfigVersion); + ServiceConfigEntity serviceConfigEntity = serviceConfigDAO.findByServiceAndVersion(serviceId, serviceConfigVersion); if (serviceConfigEntity == null) { - throw new ObjectNotFoundException("Service config version with serviceName={} and version={} not found"); + throw new ObjectNotFoundException("Service config version with serviceId={} and version={} not found"); } // disable all configs related to service @@ -2096,7 +2138,7 @@ public class ClusterImpl implements Cluster { // In that case eclipselink will revert changes to cached, if entity has fluchGroup and it // needs to be refreshed. Actually we don't need to change same antities in few steps, so i // decided to filter out. duplicates and do not change them. It will be better for performance and bug will be fixed. - Collection<String> configTypes = serviceConfigTypes.get(serviceName); + Collection<String> configTypes = serviceConfigTypes.get(serviceId); List<ClusterConfigEntity> enabledConfigs = clusterDAO.getEnabledConfigsByTypes(clusterId, configTypes); List<ClusterConfigEntity> serviceConfigEntities = serviceConfigEntity.getClusterConfigEntities(); ArrayList<ClusterConfigEntity> duplicatevalues = new ArrayList<>(serviceConfigEntities); @@ -2145,12 +2187,14 @@ public class ClusterImpl implements Cluster { ClusterEntity clusterEntity = getClusterEntity(); long nextServiceConfigVersion = serviceConfigDAO.findNextServiceConfigVersion( - clusterEntity.getClusterId(), serviceName); + clusterEntity.getClusterId(), serviceId); ServiceConfigEntity serviceConfigEntityClone = new ServiceConfigEntity(); serviceConfigEntityClone.setCreateTimestamp(System.currentTimeMillis()); serviceConfigEntityClone.setUser(user); - serviceConfigEntityClone.setServiceName(serviceName); + serviceConfigEntityClone.setServiceId(serviceId); + serviceConfigEntityClone.setServiceGroupId(serviceConfigEntity.getServiceGroupId()); + serviceConfigEntityClone.setClusterServiceEntity(serviceConfigEntity.getClusterServiceEntity()); serviceConfigEntityClone.setClusterEntity(clusterEntity); serviceConfigEntityClone.setStack(serviceConfigEntity.getStack()); serviceConfigEntityClone.setClusterConfigEntities(serviceConfigEntity.getClusterConfigEntities()); @@ -2166,21 +2210,21 @@ public class ClusterImpl implements Cluster { } @Transactional - ServiceConfigVersionResponse applyConfigs(Set<Config> configs, String user, String serviceConfigVersionNote) { + ServiceConfigVersionResponse applyConfigs(Set<Config> configs, String user, String serviceConfigVersionNote) throws AmbariException { - String serviceName = null; + Long serviceId = null; for (Config config : configs) { - for (Entry<String, String> entry : serviceConfigTypes.entries()) { + for (Entry<Long, String> entry : serviceConfigTypes.entries()) { if (StringUtils.equals(entry.getValue(), config.getType())) { - if (serviceName == null) { - serviceName = entry.getKey(); + if (serviceId == null) { + serviceId = entry.getKey(); break; - } else if (!serviceName.equals(entry.getKey())) { + } else if (!serviceId.equals(entry.getKey())) { String error = String.format("Updating configs for multiple services by a " + "single API request isn't supported. Conflicting services %s and %s for %s", - serviceName, entry.getKey(), config.getType()); + getServiceOrNull(serviceId).getName(), getServiceOrNull(entry.getKey()).getName(), config.getType()); IllegalArgumentException exception = new IllegalArgumentException(error); - LOG.error(error + ", config version not created for {}", serviceName); + LOG.error(error + ", config version not created for {}", getServiceOrNull(serviceId).getName()); throw exception; } else { break; @@ -2208,7 +2252,7 @@ public class ClusterImpl implements Cluster { clusterEntity = clusterDAO.merge(clusterEntity); - if (serviceName == null) { + if (serviceId == null) { ArrayList<String> configTypes = new ArrayList<>(); for (Config config : configs) { configTypes.add(config.getType()); @@ -2216,19 +2260,19 @@ public class ClusterImpl implements Cluster { LOG.error("No service found for config types '{}', service config version not created", configTypes); return null; } else { - return createServiceConfigVersion(serviceName, user, serviceConfigVersionNote); + return createServiceConfigVersion(serviceId, user, serviceConfigVersionNote); } } - private ServiceConfigVersionResponse createServiceConfigVersion(String serviceName, String user, - String serviceConfigVersionNote) { + private ServiceConfigVersionResponse createServiceConfigVersion(Long serviceId, String user, + String serviceConfigVersionNote) throws AmbariException { //create next service config version - return createServiceConfigVersion(serviceName, user, serviceConfigVersionNote, null); + return createServiceConfigVersion(serviceId, user, serviceConfigVersionNote, null); } - private List<ClusterConfigEntity> getClusterConfigEntitiesByService(String serviceName) { - Collection<String> configTypes = serviceConfigTypes.get(serviceName); + private List<ClusterConfigEntity> getClusterConfigEntitiesByService(Long serviceId) { + Collection<String> configTypes = serviceConfigTypes.get(serviceId); return clusterDAO.getEnabledConfigsByTypes(getClusterId(), new ArrayList<>(configTypes)); } @@ -2267,7 +2311,8 @@ public class ClusterImpl implements Cluster { for (HostConfigMapping mappingEntity : mappingEntities) { DesiredConfig desiredConfig = new DesiredConfig(); desiredConfig.setTag(mappingEntity.getVersion()); - desiredConfig.setServiceName(mappingEntity.getServiceName()); + desiredConfig.setServiceId(mappingEntity.getServiceId()); + desiredConfig.setServiceGroupId(mappingEntity.getServiceGroupId()); desiredConfigsByHost.get(mappingEntity.getHostId()).put(mappingEntity.getType(), desiredConfig); } @@ -2642,7 +2687,7 @@ public class ClusterImpl implements Cluster { */ @Override @Transactional - public void applyLatestConfigurations(StackId stackId, String serviceName) { + public void applyLatestConfigurations(StackId stackId, Long serviceId) { clusterGlobalLock.writeLock().lock(); try { @@ -2655,7 +2700,7 @@ public class ClusterImpl implements Cluster { // find the latest configurations for the service Set<String> configTypesForService = new HashSet<>(); List<ServiceConfigEntity> latestServiceConfigs = serviceConfigDAO.getLastServiceConfigsForService( - getClusterId(), serviceName); + getClusterId(), serviceId); // process the current service configurations for (ServiceConfigEntity serviceConfig : latestServiceConfigs) { @@ -2704,7 +2749,7 @@ public class ClusterImpl implements Cluster { LOG.info( "Applied latest configurations for {} on stack {}. The the following types were modified: {}", - serviceName, stackId, StringUtils.join(configTypesForService, ',')); + getServiceOrNull(serviceId), stackId, StringUtils.join(configTypesForService, ',')); } finally { clusterGlobalLock.writeLock().unlock(); @@ -2739,12 +2784,12 @@ public class ClusterImpl implements Cluster { * * @param stackId * the stack to remove configurations for (not {@code null}). - * @param serviceName - * the service name (not {@code null}). + * @param serviceId + * the service ID (not {@code null}). * @see #clusterGlobalLock */ @Transactional - void removeAllConfigsForStack(StackId stackId, String serviceName) { + void removeAllConfigsForStack(StackId stackId, Long serviceId) { ClusterEntity clusterEntity = getClusterEntity(); // make sure the entity isn't stale in the current unit of work. @@ -2764,7 +2809,7 @@ public class ClusterImpl implements Cluster { // get the service configs only for the service List<ServiceConfigEntity> serviceConfigs = serviceConfigDAO.getServiceConfigsForServiceAndStack( - clusterId, stackId, serviceName); + clusterId, stackId, serviceId); // remove all service configurations and associated configs for (ServiceConfigEntity serviceConfig : serviceConfigs) { @@ -2784,7 +2829,7 @@ public class ClusterImpl implements Cluster { clusterEntity.setClusterConfigEntities(allClusterConfigEntities); clusterEntity = clusterDAO.merge(clusterEntity); - LOG.info("Removed the following configuration types for {} on stack {}: {}", serviceName, + LOG.info("Removed the following configuration types for {} on stack {}: {}", getServiceOrNull(serviceId).getName(), stackId, StringUtils.join(removedConfigurationTypes, ',')); } @@ -2792,10 +2837,10 @@ public class ClusterImpl implements Cluster { * {@inheritDoc} */ @Override - public void removeConfigurations(StackId stackId, String serviceName) { + public void removeConfigurations(StackId stackId, Long serviceId) { clusterGlobalLock.writeLock().lock(); try { - removeAllConfigsForStack(stackId, serviceName); + removeAllConfigsForStack(stackId, serviceId); cacheConfigurations(); } finally { clusterGlobalLock.writeLock().unlock(); @@ -2830,17 +2875,6 @@ public class ClusterImpl implements Cluster { private void loadStackVersion() { desiredStackVersion = new StackId(getClusterEntity().getDesiredStack()); - - if (!StringUtils.isEmpty(desiredStackVersion.getStackName()) - && !StringUtils.isEmpty(desiredStackVersion.getStackVersion())) { - try { - loadServiceConfigTypes(); - } catch (AmbariException e) { - // TODO recheck wrapping exception here, required for lazy loading after - // invalidation - throw new RuntimeException(e); - } - } } /** http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java index 0393145..324f43c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroup.java @@ -134,7 +134,14 @@ public interface ConfigGroup { /** * Name of service which config group is wired to */ - String getServiceName(); + Long getServiceId(); - void setServiceName(String serviceName); + void setServiceId(Long serviceId); + + /** + * Id of service group which config group is wired to + */ + Long getServiceGroupId(); + + void setServiceGroupId(Long serviceGroupId); } http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java index f6fecce..06f9e6d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupFactory.java @@ -33,7 +33,8 @@ public interface ConfigGroupFactory { * Creates and saves a new {@link ConfigGroup}. */ ConfigGroup createNew(@Assisted("cluster") Cluster cluster, - @Assisted("serviceName") @Nullable String serviceName, @Assisted("name") String name, + @Assisted("serviceGroupId") @Nullable Long serviceGroupId, + @Assisted("serviceId") @Nullable Long serviceId, @Assisted("name") String name, @Assisted("tag") String tag, @Assisted("description") String description, @Assisted("configs") Map<String, Config> configs, @Assisted("hosts") Map<Long, Host> hosts); http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java index d1fbf1d..33902af 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java @@ -36,12 +36,14 @@ import org.apache.ambari.server.controller.ConfigGroupResponse; import org.apache.ambari.server.controller.internal.ConfigurationResourceProvider; import org.apache.ambari.server.logging.LockFactory; import org.apache.ambari.server.orm.dao.ClusterDAO; +import org.apache.ambari.server.orm.dao.ClusterServiceDAO; import org.apache.ambari.server.orm.dao.ConfigGroupConfigMappingDAO; import org.apache.ambari.server.orm.dao.ConfigGroupDAO; import org.apache.ambari.server.orm.dao.ConfigGroupHostMappingDAO; import org.apache.ambari.server.orm.dao.HostDAO; import org.apache.ambari.server.orm.entities.ClusterConfigEntity; import org.apache.ambari.server.orm.entities.ClusterEntity; +import org.apache.ambari.server.orm.entities.ClusterServiceEntity; import org.apache.ambari.server.orm.entities.ConfigGroupConfigMappingEntity; import org.apache.ambari.server.orm.entities.ConfigGroupEntity; import org.apache.ambari.server.orm.entities.ConfigGroupHostMappingEntity; @@ -67,7 +69,8 @@ public class ConfigGroupImpl implements ConfigGroup { private ConcurrentMap<Long, Host> m_hosts; private ConcurrentMap<String, Config> m_configurations; private String configGroupName; - private String serviceName; + private Long serviceId; + private Long serviceGroupId; private long configGroupId; /** @@ -91,17 +94,20 @@ public class ConfigGroupImpl implements ConfigGroup { private final ClusterDAO clusterDAO; + private final ClusterServiceDAO clusterServiceDAO; + private final ConfigFactory configFactory; @AssistedInject public ConfigGroupImpl(@Assisted("cluster") Cluster cluster, - @Assisted("serviceName") @Nullable String serviceName, @Assisted("name") String name, - @Assisted("tag") String tag, @Assisted("description") String description, - @Assisted("configs") Map<String, Config> configurations, - @Assisted("hosts") Map<Long, Host> hosts, Clusters clusters, ConfigFactory configFactory, - ClusterDAO clusterDAO, HostDAO hostDAO, ConfigGroupDAO configGroupDAO, - ConfigGroupConfigMappingDAO configGroupConfigMappingDAO, - ConfigGroupHostMappingDAO configGroupHostMappingDAO, LockFactory lockFactory) + @Assisted("serviceGroupId") @Nullable Long serviceGroupId, + @Assisted("serviceId") @Nullable Long serviceId, @Assisted("name") String name, + @Assisted("tag") String tag, @Assisted("description") String description, + @Assisted("configs") Map<String, Config> configurations, + @Assisted("hosts") Map<Long, Host> hosts, Clusters clusters, ConfigFactory configFactory, + ClusterDAO clusterDAO, HostDAO hostDAO, ConfigGroupDAO configGroupDAO, + ConfigGroupConfigMappingDAO configGroupConfigMappingDAO, + ConfigGroupHostMappingDAO configGroupHostMappingDAO, ClusterServiceDAO clusterServiceDAO, LockFactory lockFactory) throws AmbariException { this.configFactory = configFactory; @@ -110,11 +116,13 @@ public class ConfigGroupImpl implements ConfigGroup { this.configGroupDAO = configGroupDAO; this.configGroupConfigMappingDAO = configGroupConfigMappingDAO; this.configGroupHostMappingDAO = configGroupHostMappingDAO; + this.clusterServiceDAO = clusterServiceDAO; hostLock = lockFactory.newReadWriteLock(hostLockLabel); this.cluster = cluster; - this.serviceName = serviceName; + this.serviceGroupId = serviceGroupId; + this.serviceId = serviceId; configGroupName = name; ConfigGroupEntity configGroupEntity = new ConfigGroupEntity(); @@ -122,7 +130,10 @@ public class ConfigGroupImpl implements ConfigGroup { configGroupEntity.setGroupName(name); configGroupEntity.setTag(tag); configGroupEntity.setDescription(description); - configGroupEntity.setServiceName(serviceName); + configGroupEntity.setServiceId(serviceId); + configGroupEntity.setServiceGroupId(serviceGroupId); + ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findById(cluster.getClusterId(), serviceGroupId, serviceId); + configGroupEntity.setClusterServiceEntity(clusterServiceEntity); m_hosts = hosts == null ? new ConcurrentHashMap<>() : new ConcurrentHashMap<>(hosts); @@ -140,7 +151,7 @@ public class ConfigGroupImpl implements ConfigGroup { Clusters clusters, ConfigFactory configFactory, ClusterDAO clusterDAO, HostDAO hostDAO, ConfigGroupDAO configGroupDAO, ConfigGroupConfigMappingDAO configGroupConfigMappingDAO, - ConfigGroupHostMappingDAO configGroupHostMappingDAO, LockFactory lockFactory) { + ConfigGroupHostMappingDAO configGroupHostMappingDAO, ClusterServiceDAO clusterServiceDAO, LockFactory lockFactory) { this.configFactory = configFactory; this.clusterDAO = clusterDAO; @@ -148,13 +159,15 @@ public class ConfigGroupImpl implements ConfigGroup { this.configGroupDAO = configGroupDAO; this.configGroupConfigMappingDAO = configGroupConfigMappingDAO; this.configGroupHostMappingDAO = configGroupHostMappingDAO; + this.clusterServiceDAO = clusterServiceDAO; hostLock = lockFactory.newReadWriteLock(hostLockLabel); this.cluster = cluster; configGroupId = configGroupEntity.getGroupId(); configGroupName = configGroupEntity.getGroupName(); - serviceName = configGroupEntity.getServiceName(); + serviceId = configGroupEntity.getServiceId(); + serviceGroupId = configGroupEntity.getServiceGroupId(); m_configurations = new ConcurrentHashMap<>(); m_hosts = new ConcurrentHashMap<>(); @@ -347,6 +360,10 @@ public class ConfigGroupImpl implements ConfigGroup { ClusterEntity clusterEntity = clusterDAO.findById(cluster.getClusterId()); configGroupEntity.setClusterEntity(clusterEntity); configGroupEntity.setTimestamp(System.currentTimeMillis()); + configGroupEntity.setServiceGroupId(serviceGroupId); + configGroupEntity.setServiceId(serviceId); + ClusterServiceEntity clusterServiceEntity = clusterServiceDAO.findById(cluster.getClusterId(), serviceGroupId, serviceId); + configGroupEntity.setClusterServiceEntity(clusterServiceEntity); configGroupDAO.create(configGroupEntity); configGroupId = configGroupEntity.getGroupId(); @@ -416,8 +433,7 @@ public class ConfigGroupImpl implements ConfigGroup { (cluster.getClusterId(), config.getType(), config.getTag()); if (clusterConfigEntity == null) { - String serviceName = getServiceName(); - Service service = cluster.getService(serviceName); + Service service = cluster.getService(serviceId); config = configFactory.createNew(service.getDesiredStackId(), cluster, config.getType(), config.getTag(), config.getProperties(), config.getPropertiesAttributes()); @@ -507,17 +523,30 @@ public class ConfigGroupImpl implements ConfigGroup { } @Override - public String getServiceName() { - return serviceName; + public Long getServiceId() { + return serviceId; + } + + @Override + public void setServiceId(Long serviceId) { + ConfigGroupEntity configGroupEntity = getConfigGroupEntity(); + configGroupEntity.setServiceId(serviceId); + configGroupDAO.merge(configGroupEntity); + + this.serviceId = serviceId; + } + @Override + public Long getServiceGroupId() { + return serviceGroupId; } @Override - public void setServiceName(String serviceName) { + public void setServiceGroupId(Long serviceGroupId) { ConfigGroupEntity configGroupEntity = getConfigGroupEntity(); - configGroupEntity.setServiceName(serviceName); + configGroupEntity.setServiceGroupId(serviceGroupId); configGroupDAO.merge(configGroupEntity); - this.serviceName = serviceName; + this.serviceId = serviceGroupId; } /** http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java index 4285ba9..7ec3112 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/host/HostImpl.java @@ -1021,7 +1021,8 @@ public class HostImpl implements Host { DesiredConfig dc = new DesiredConfig(); dc.setTag(e.getVersion()); - dc.setServiceName(e.getServiceName()); + dc.setServiceGroupId(e.getServiceGroupId()); + dc.setServiceId(e.getServiceId()); map.put(e.getType(), dc); } http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java index e5eb11c..8a32265 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/AmbariContext.java @@ -712,7 +712,7 @@ public class AmbariContext { }); ConfigGroupRequest request = new ConfigGroupRequest(null, clusterName, - absoluteGroupName, service.getName(), service.getName(), "Host Group Configuration", + absoluteGroupName, service.getName(), service.getServiceGroupName(), service.getName(), "Host Group Configuration", Sets.newHashSet(filteredGroupHosts), serviceConfigs); // get the config group provider and create config group resource http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java index 46c75c5..317e29f 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java @@ -149,4 +149,11 @@ public class Service implements Configurable { ", stackId='" + stackId + '\'' + '}'; } + + public String getServiceGroupName() { + if (serviceGroup != null) { + return serviceGroup.getName(); + } + return null; + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java index a2e2f6f..5a2b92a 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/AbstractUpgradeCatalog.java @@ -555,7 +555,7 @@ public abstract class AbstractUpgradeCatalog implements UpgradeCatalog { } Multimap<ConfigUpdateType, Entry<String, String>> propertiesToLog = ArrayListMultimap.create(); - String serviceName = cluster.getServiceByConfigType(configType); + String serviceName = cluster.getServiceByConfigType(configType).getName(); Map<String, String> mergedProperties = mergeProperties(oldConfigProperties, properties, updateIfExists, propertiesToLog); http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql index 36ff3b7..e1e7c9e 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql @@ -122,20 +122,6 @@ CREATE TABLE ambari_configuration ( CONSTRAINT FK_ambari_conf_conf_base FOREIGN KEY (id) REFERENCES configuration_base (id) ); -CREATE TABLE serviceconfig ( - service_config_id BIGINT NOT NULL, - cluster_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, - version BIGINT NOT NULL, - create_timestamp BIGINT NOT NULL, - stack_id BIGINT NOT NULL, - user_name VARCHAR(255) NOT NULL DEFAULT '_db', - group_id BIGINT, - note VARCHAR(3000), - CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - CREATE TABLE hosts ( host_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, @@ -156,20 +142,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id BIGINT NOT NULL, - host_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id BIGINT NOT NULL, - config_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id BIGINT NOT NULL, service_group_name VARCHAR(255) NOT NULL, @@ -207,6 +179,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id BIGINT NOT NULL, + cluster_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + version BIGINT NOT NULL, + create_timestamp BIGINT NOT NULL, + stack_id BIGINT NOT NULL, + user_name VARCHAR(255) NOT NULL DEFAULT '_db', + group_id BIGINT, + note VARCHAR(3000), + CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_id, version)); + +CREATE TABLE serviceconfighosts ( + service_config_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id BIGINT NOT NULL, + config_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, @@ -499,12 +501,14 @@ CREATE TABLE hostconfigmapping ( host_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY (cluster_id, host_id, type_name, create_timestamp), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -525,8 +529,10 @@ CREATE TABLE configgroup ( tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp BIGINT NOT NULL, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql index 70a6543..b438e69 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -141,20 +141,6 @@ CREATE TABLE ambari_configuration ( CONSTRAINT FK_ambari_conf_conf_base FOREIGN KEY (id) REFERENCES configuration_base (id) ); -CREATE TABLE serviceconfig ( - service_config_id BIGINT NOT NULL, - cluster_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, - version BIGINT NOT NULL, - create_timestamp BIGINT NOT NULL, - stack_id BIGINT NOT NULL, - user_name VARCHAR(255) NOT NULL DEFAULT '_db', - group_id BIGINT, - note LONGTEXT, - CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - CREATE TABLE hosts ( host_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, @@ -175,20 +161,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id BIGINT NOT NULL, - host_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id BIGINT NOT NULL, - config_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id BIGINT NOT NULL, service_group_name VARCHAR(255) NOT NULL, @@ -226,6 +198,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id BIGINT NOT NULL, + cluster_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + version BIGINT NOT NULL, + create_timestamp BIGINT NOT NULL, + stack_id BIGINT NOT NULL, + user_name VARCHAR(255) NOT NULL DEFAULT '_db', + group_id BIGINT, + note LONGTEXT, + CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_id, version)); + +CREATE TABLE serviceconfighosts ( + service_config_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id BIGINT NOT NULL, + config_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, @@ -511,11 +513,13 @@ CREATE TABLE hostconfigmapping ( cluster_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, selected INTEGER NOT NULL DEFAULT 0, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, version_tag VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY (create_timestamp, host_id, cluster_id, type_name), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -542,8 +546,10 @@ CREATE TABLE configgroup ( tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp BIGINT NOT NULL, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql index 7c5f0fd..aab7f95 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -122,21 +122,6 @@ CREATE TABLE ambari_configuration ( CONSTRAINT FK_ambari_conf_conf_base FOREIGN KEY (id) REFERENCES configuration_base (id) ); -CREATE TABLE serviceconfig ( - service_config_id NUMBER(19) NOT NULL, - cluster_id NUMBER(19) NOT NULL, - service_name VARCHAR(255) NOT NULL, - version NUMBER(19) NOT NULL, - create_timestamp NUMBER(19) NOT NULL, - stack_id NUMBER(19) NOT NULL, - user_name VARCHAR(255) DEFAULT '_db' NOT NULL, - group_id NUMBER(19), - note CLOB, - CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - - CREATE TABLE hosts ( host_id NUMBER(19) NOT NULL, host_name VARCHAR2(255) NOT NULL, @@ -157,20 +142,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id NUMBER(19) NOT NULL, - host_id NUMBER(19) NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id NUMBER(19) NOT NULL, - config_id NUMBER(19) NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id NUMBER(19) NOT NULL, service_group_name VARCHAR2(255) NOT NULL, @@ -208,6 +179,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id NUMBER(19) NOT NULL, + cluster_id NUMBER(19) NOT NULL, + service_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, + version NUMBER(19) NOT NULL, + create_timestamp NUMBER(19) NOT NULL, + stack_id NUMBER(19) NOT NULL, + user_name VARCHAR(255) DEFAULT '_db' NOT NULL, + group_id NUMBER(19), + note CLOB, + CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_id, version)); + +CREATE TABLE serviceconfighosts ( + service_config_id NUMBER(19) NOT NULL, + host_id NUMBER(19) NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id NUMBER(19) NOT NULL, + config_id NUMBER(19) NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id NUMBER(19) NOT NULL, current_cluster_state VARCHAR2(255) NULL, @@ -493,11 +494,13 @@ CREATE TABLE hostconfigmapping ( cluster_id NUMBER(19) NOT NULL, type_name VARCHAR2(255) NOT NULL, selected NUMBER(10) NOT NULL, - service_name VARCHAR2(255) NULL, + service_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, version_tag VARCHAR2(255) NOT NULL, user_name VARCHAR(255) DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY (create_timestamp, host_id, cluster_id, type_name), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -524,8 +527,10 @@ CREATE TABLE configgroup ( tag VARCHAR2(1024) NOT NULL, description VARCHAR2(1024), create_timestamp NUMBER(19) NOT NULL, - service_name VARCHAR(255), + service_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql index dfef1ce..8832818 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -123,20 +123,6 @@ CREATE TABLE clusterconfig ( CONSTRAINT UQ_config_type_tag UNIQUE (cluster_id, type_name, version_tag), CONSTRAINT UQ_config_type_version UNIQUE (cluster_id, type_name, version)); -CREATE TABLE serviceconfig ( - service_config_id BIGINT NOT NULL, - cluster_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, - version BIGINT NOT NULL, - create_timestamp BIGINT NOT NULL, - stack_id BIGINT NOT NULL, - user_name VARCHAR(255) NOT NULL DEFAULT '_db', - group_id BIGINT, - note TEXT, - CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - CREATE TABLE hosts ( host_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, @@ -157,20 +143,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id BIGINT NOT NULL, - host_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id BIGINT NOT NULL, - config_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id BIGINT NOT NULL, service_group_name VARCHAR(255) NOT NULL, @@ -208,6 +180,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id BIGINT NOT NULL, + cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, + version BIGINT NOT NULL, + create_timestamp BIGINT NOT NULL, + stack_id BIGINT NOT NULL, + user_name VARCHAR(255) NOT NULL DEFAULT '_db', + group_id BIGINT, + note TEXT, + CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_id, version )); + +CREATE TABLE serviceconfighosts ( + service_config_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id BIGINT NOT NULL, + config_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, @@ -499,12 +501,14 @@ CREATE TABLE hostconfigmapping ( host_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, - service_name VARCHAR(255), + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY (cluster_id, host_id, type_name, create_timestamp), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -524,8 +528,10 @@ CREATE TABLE configgroup ( tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp BIGINT NOT NULL, - service_name VARCHAR(255), + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql index 870555d..135707b 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -121,20 +121,6 @@ CREATE TABLE ambari_configuration ( CONSTRAINT FK_ambari_conf_conf_base FOREIGN KEY (id) REFERENCES configuration_base (id) ); -CREATE TABLE serviceconfig ( - service_config_id NUMERIC(19) NOT NULL, - cluster_id NUMERIC(19) NOT NULL, - service_name VARCHAR(255) NOT NULL, - version NUMERIC(19) NOT NULL, - create_timestamp NUMERIC(19) NOT NULL, - stack_id NUMERIC(19) NOT NULL, - user_name VARCHAR(255) NOT NULL DEFAULT '_db', - group_id NUMERIC(19), - note TEXT, - CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - CREATE TABLE hosts ( host_id NUMERIC(19) NOT NULL, host_name VARCHAR(255) NOT NULL, @@ -155,20 +141,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id NUMERIC(19) NOT NULL, - host_id NUMERIC(19) NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id NUMERIC(19) NOT NULL, - config_id NUMERIC(19) NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id NUMERIC(19) NOT NULL, service_group_name VARCHAR(255) NOT NULL, @@ -206,6 +178,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id NUMERIC(19) NOT NULL, + cluster_id NUMERIC(19) NOT NULL, + service_id NUMERIC(19) NOT NULL, + service_group_id NUMERIC(19) NOT NULL, + version NUMERIC(19) NOT NULL, + create_timestamp NUMERIC(19) NOT NULL, + stack_id NUMERIC(19) NOT NULL, + user_name VARCHAR(255) NOT NULL DEFAULT '_db', + group_id NUMERIC(19), + note TEXT, + CONSTRAINT PK_serviceconfig PRIMARY KEY (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_id, version)); + +CREATE TABLE serviceconfighosts ( + service_config_id NUMERIC(19) NOT NULL, + host_id NUMERIC(19) NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id NUMERIC(19) NOT NULL, + config_id NUMERIC(19) NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id NUMERIC(19) NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, @@ -489,11 +491,13 @@ CREATE TABLE hostconfigmapping ( cluster_id NUMERIC(19) NOT NULL, type_name VARCHAR(255) NOT NULL, selected INTEGER NOT NULL DEFAULT 0, - service_name VARCHAR(255), + service_id NUMERIC(19) NOT NULL, + service_group_id NUMERIC(19) NOT NULL, version_tag VARCHAR(255) NOT NULL, user_name VARCHAR(255) NOT NULL DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY (create_timestamp, host_id, cluster_id, type_name), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -520,8 +524,10 @@ CREATE TABLE configgroup ( tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp NUMERIC(19) NOT NULL, - service_name VARCHAR(255), + service_id NUMERIC(19) NOT NULL, + service_group_id NUMERIC(19) NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql index 641b959..7d93aad 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -135,20 +135,6 @@ CREATE TABLE ambari_configuration ( CONSTRAINT FK_ambari_conf_conf_base FOREIGN KEY (id) REFERENCES configuration_base (id) ); -CREATE TABLE serviceconfig ( - service_config_id BIGINT NOT NULL, - cluster_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, - version BIGINT NOT NULL, - create_timestamp BIGINT NOT NULL, - stack_id BIGINT NOT NULL, - user_name VARCHAR(255) NOT NULL DEFAULT '_db', - group_id BIGINT, - note VARCHAR(MAX), - CONSTRAINT PK_serviceconfig PRIMARY KEY CLUSTERED (service_config_id), - CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), - CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); - CREATE TABLE hosts ( host_id BIGINT NOT NULL, host_name VARCHAR(255) NOT NULL, @@ -169,20 +155,6 @@ CREATE TABLE hosts ( CONSTRAINT PK_hosts PRIMARY KEY CLUSTERED (host_id), CONSTRAINT UQ_hosts_host_name UNIQUE (host_name)); -CREATE TABLE serviceconfighosts ( - service_config_id BIGINT NOT NULL, - host_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfighosts PRIMARY KEY CLUSTERED (service_config_id, host_id), - CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), - CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - -CREATE TABLE serviceconfigmapping ( - service_config_id BIGINT NOT NULL, - config_id BIGINT NOT NULL, - CONSTRAINT PK_serviceconfigmapping PRIMARY KEY CLUSTERED (service_config_id, config_id), - CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), - CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); - CREATE TABLE servicegroups ( id BIGINT NOT NULL, service_group_name VARCHAR(255) NOT NULL, @@ -220,6 +192,36 @@ CREATE TABLE servicedependencies ( CONSTRAINT FK_servicedependencies_service_group_cluster_id FOREIGN KEY (service_id, service_group_id, service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CONSTRAINT FK_servicedependencies_dependent_service_group_cluster_id FOREIGN KEY (dependent_service_id, dependent_service_group_id, dependent_service_cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); +CREATE TABLE serviceconfig ( + service_config_id BIGINT NOT NULL, + cluster_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + version BIGINT NOT NULL, + create_timestamp BIGINT NOT NULL, + stack_id BIGINT NOT NULL, + user_name VARCHAR(255) NOT NULL DEFAULT '_db', + group_id BIGINT, + note VARCHAR(MAX), + CONSTRAINT PK_serviceconfig PRIMARY KEY CLUSTERED (service_config_id), + CONSTRAINT FK_serviceconfig_stack_id FOREIGN KEY (stack_id) REFERENCES stack(stack_id), + CONSTRAINT FK_serviceconfig_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), + CONSTRAINT UQ_scv_service_version UNIQUE (cluster_id, service_name, version)); + +CREATE TABLE serviceconfighosts ( + service_config_id BIGINT NOT NULL, + host_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfighosts PRIMARY KEY CLUSTERED (service_config_id, host_id), + CONSTRAINT FK_scvhosts_host_id FOREIGN KEY (host_id) REFERENCES hosts(host_id), + CONSTRAINT FK_scvhosts_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + +CREATE TABLE serviceconfigmapping ( + service_config_id BIGINT NOT NULL, + config_id BIGINT NOT NULL, + CONSTRAINT PK_serviceconfigmapping PRIMARY KEY CLUSTERED (service_config_id, config_id), + CONSTRAINT FK_scvm_config FOREIGN KEY (config_id) REFERENCES clusterconfig(config_id), + CONSTRAINT FK_scvm_scv FOREIGN KEY (service_config_id) REFERENCES serviceconfig(service_config_id)); + CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, current_cluster_state VARCHAR(255) NOT NULL, @@ -502,12 +504,14 @@ CREATE TABLE hostconfigmapping ( host_id BIGINT NOT NULL, type_name VARCHAR(255) NOT NULL, version_tag VARCHAR(255) NOT NULL, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, create_timestamp BIGINT NOT NULL, selected INTEGER NOT NULL DEFAULT 0, user_name VARCHAR(255) NOT NULL DEFAULT '_db', CONSTRAINT PK_hostconfigmapping PRIMARY KEY CLUSTERED (cluster_id, host_id, type_name, create_timestamp), CONSTRAINT FK_hostconfmapping_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id), + CONSTRAINT FK_hostconfmapping_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_hostconfmapping_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id)); CREATE TABLE metainfo ( @@ -528,8 +532,10 @@ CREATE TABLE configgroup ( tag VARCHAR(1024) NOT NULL, description VARCHAR(1024), create_timestamp BIGINT NOT NULL, - service_name VARCHAR(255), + service_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, CONSTRAINT PK_configgroup PRIMARY KEY CLUSTERED (group_id), + CONSTRAINT FK_configgroup_cluster_service FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id), CONSTRAINT FK_configgroup_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE confgroupclusterconfigmapping ( http://git-wip-us.apache.org/repos/asf/ambari/blob/527c4a2d/ambari-server/src/test/java/org/apache/ambari/server/checks/ServiceCheckValidityCheckTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServiceCheckValidityCheckTest.java b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServiceCheckValidityCheckTest.java index 7485257..2ff4d32 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/checks/ServiceCheckValidityCheckTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/checks/ServiceCheckValidityCheckTest.java @@ -55,6 +55,8 @@ public class ServiceCheckValidityCheckTest { private static final String CLUSTER_NAME = "cluster1"; private static final long CLUSTER_ID = 1L; private static final String SERVICE_NAME = "HDFS"; + private static final long SERVICE_ID = 2L; + private static final long SERVICE_GROUP_ID = 3L; private static final long CONFIG_CREATE_TIMESTAMP = 1461518722202L; private static final long SERVICE_CHECK_START_TIME = CONFIG_CREATE_TIMESTAMP - 2000L; private static final String SERVICE_COMPONENT_NAME = "service component"; @@ -132,13 +134,14 @@ public class ServiceCheckValidityCheckTest { when(service.getServiceComponents()).thenReturn(ImmutableMap.of(SERVICE_COMPONENT_NAME, serviceComponent)); ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); - serviceConfigEntity.setServiceName(SERVICE_NAME); + serviceConfigEntity.setServiceId(SERVICE_ID); + serviceConfigEntity.setServiceGroupId(SERVICE_GROUP_ID); serviceConfigEntity.setCreateTimestamp(CONFIG_CREATE_TIMESTAMP); LastServiceCheckDTO lastServiceCheckDTO1 = new LastServiceCheckDTO(Role.ZOOKEEPER_QUORUM_SERVICE_CHECK.name(), SERVICE_CHECK_START_TIME); LastServiceCheckDTO lastServiceCheckDTO2 = new LastServiceCheckDTO(Role.HDFS_SERVICE_CHECK.name(), SERVICE_CHECK_START_TIME); - when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_NAME))).thenReturn(serviceConfigEntity); + when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_ID))).thenReturn(serviceConfigEntity); when(hostRoleCommandDAO.getLatestServiceChecksByRole(any(Long.class))).thenReturn(asList(lastServiceCheckDTO1, lastServiceCheckDTO2)); PrerequisiteCheck check = new PrerequisiteCheck(null, CLUSTER_NAME); @@ -159,12 +162,13 @@ public class ServiceCheckValidityCheckTest { when(service.getServiceComponents()).thenReturn(ImmutableMap.of(SERVICE_COMPONENT_NAME, serviceComponent)); ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); - serviceConfigEntity.setServiceName(SERVICE_NAME); + serviceConfigEntity.setServiceId(SERVICE_ID); + serviceConfigEntity.setServiceGroupId(SERVICE_GROUP_ID); serviceConfigEntity.setCreateTimestamp(CONFIG_CREATE_TIMESTAMP); LastServiceCheckDTO lastServiceCheckDTO = new LastServiceCheckDTO(Role.HDFS_SERVICE_CHECK.name(), SERVICE_CHECK_START_TIME); - when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_NAME))).thenReturn(serviceConfigEntity); + when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_ID))).thenReturn(serviceConfigEntity); when(hostRoleCommandDAO.getLatestServiceChecksByRole(any(Long.class))).thenReturn(singletonList(lastServiceCheckDTO)); PrerequisiteCheck check = new PrerequisiteCheck(null, CLUSTER_NAME); @@ -182,10 +186,11 @@ public class ServiceCheckValidityCheckTest { when(service.getServiceComponents()).thenReturn(ImmutableMap.of(SERVICE_COMPONENT_NAME, serviceComponent)); ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); - serviceConfigEntity.setServiceName(SERVICE_NAME); + serviceConfigEntity.setServiceId(SERVICE_ID); + serviceConfigEntity.setServiceGroupId(SERVICE_GROUP_ID); serviceConfigEntity.setCreateTimestamp(CONFIG_CREATE_TIMESTAMP); - when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_NAME))).thenReturn(serviceConfigEntity); + when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_ID))).thenReturn(serviceConfigEntity); when(hostRoleCommandDAO.getLatestServiceChecksByRole(any(Long.class))).thenReturn(Collections.<LastServiceCheckDTO>emptyList()); PrerequisiteCheck check = new PrerequisiteCheck(null, CLUSTER_NAME); @@ -202,13 +207,14 @@ public class ServiceCheckValidityCheckTest { when(service.getServiceComponents()).thenReturn(ImmutableMap.of(SERVICE_COMPONENT_NAME, serviceComponent)); ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); - serviceConfigEntity.setServiceName(SERVICE_NAME); + serviceConfigEntity.setServiceId(SERVICE_ID); + serviceConfigEntity.setServiceGroupId(SERVICE_GROUP_ID); serviceConfigEntity.setCreateTimestamp(CONFIG_CREATE_TIMESTAMP); LastServiceCheckDTO lastServiceCheckDTO1 = new LastServiceCheckDTO(Role.HDFS_SERVICE_CHECK.name(), SERVICE_CHECK_START_TIME); LastServiceCheckDTO lastServiceCheckDTO2 = new LastServiceCheckDTO(Role.HDFS_SERVICE_CHECK.name(), CONFIG_CREATE_TIMESTAMP - 1L); - when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_NAME))).thenReturn(serviceConfigEntity); + when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_ID))).thenReturn(serviceConfigEntity); when(hostRoleCommandDAO.getLatestServiceChecksByRole(any(Long.class))).thenReturn(asList(lastServiceCheckDTO1, lastServiceCheckDTO2)); PrerequisiteCheck check = new PrerequisiteCheck(null, CLUSTER_NAME); @@ -235,7 +241,8 @@ public class ServiceCheckValidityCheckTest { when(service.getServiceComponents()).thenReturn(ImmutableMap.of(SERVICE_COMPONENT_NAME, serviceComponent)); ServiceConfigEntity serviceConfigEntity = new ServiceConfigEntity(); - serviceConfigEntity.setServiceName(SERVICE_NAME); + serviceConfigEntity.setServiceId(SERVICE_ID); + serviceConfigEntity.setServiceGroupId(SERVICE_GROUP_ID); serviceConfigEntity.setCreateTimestamp(CONFIG_CREATE_TIMESTAMP); String hdfsRole = Role.HDFS_SERVICE_CHECK.name(); @@ -244,7 +251,7 @@ public class ServiceCheckValidityCheckTest { LastServiceCheckDTO lastServiceCheckDTO1 = new LastServiceCheckDTO(hdfsRole, SERVICE_CHECK_START_TIME); LastServiceCheckDTO lastServiceCheckDTO2 = new LastServiceCheckDTO(hdfs2Role, CONFIG_CREATE_TIMESTAMP - 1L); - when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_NAME))).thenReturn(serviceConfigEntity); + when(serviceConfigDAO.getLastServiceConfig(eq(CLUSTER_ID), eq(SERVICE_ID))).thenReturn(serviceConfigEntity); when(hostRoleCommandDAO.getLatestServiceChecksByRole(any(Long.class))).thenReturn(asList(lastServiceCheckDTO1, lastServiceCheckDTO2)); PrerequisiteCheck check = new PrerequisiteCheck(null, CLUSTER_NAME);
