http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java index 0247774..cf08f0c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/ServiceImpl.java @@ -41,6 +41,7 @@ import org.apache.ambari.server.orm.dao.ClusterDAO; import org.apache.ambari.server.orm.dao.ClusterServiceDAO; import org.apache.ambari.server.orm.dao.ServiceConfigDAO; import org.apache.ambari.server.orm.dao.ServiceDesiredStateDAO; +import org.apache.ambari.server.orm.dao.ServiceGroupDAO; import org.apache.ambari.server.orm.entities.ClusterConfigEntity; import org.apache.ambari.server.orm.entities.ClusterEntity; import org.apache.ambari.server.orm.entities.ClusterServiceEntity; @@ -50,9 +51,9 @@ import org.apache.ambari.server.orm.entities.ServiceComponentDesiredStateEntity; import org.apache.ambari.server.orm.entities.ServiceConfigEntity; import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntity; import org.apache.ambari.server.orm.entities.ServiceDesiredStateEntityPK; +import org.apache.ambari.server.orm.entities.ServiceGroupEntity; import org.apache.ambari.server.orm.entities.StackEntity; import org.apache.ambari.server.serveraction.kerberos.Component; -import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,6 +72,7 @@ public class ServiceImpl implements Service { private static final Logger LOG = LoggerFactory.getLogger(ServiceImpl.class); private final Cluster cluster; + private final ServiceGroup serviceGroup; private final ConcurrentMap<String, ServiceComponent> components = new ConcurrentHashMap<>(); private boolean isClientOnlyService; private boolean isCredentialStoreSupported; @@ -83,6 +85,7 @@ public class ServiceImpl implements Service { private final ClusterServiceDAO clusterServiceDAO; private final ServiceDesiredStateDAO serviceDesiredStateDAO; private final ClusterDAO clusterDAO; + private final ServiceGroupDAO serviceGroupDAO; private final ServiceComponentFactory serviceComponentFactory; /** @@ -91,32 +94,50 @@ public class ServiceImpl implements Service { private final AmbariEventPublisher eventPublisher; /** + * The id of the service. + */ + private Long serviceId; + + /** * The name of the service. */ private final String serviceName; private final String displayName; + /** + * The stack service name. + */ + private final String serviceDisplayName; + @AssistedInject - ServiceImpl(@Assisted Cluster cluster, @Assisted String serviceName, - @Assisted RepositoryVersionEntity desiredRepositoryVersion, ClusterDAO clusterDAO, - ClusterServiceDAO clusterServiceDAO, ServiceDesiredStateDAO serviceDesiredStateDAO, - ServiceComponentFactory serviceComponentFactory, AmbariMetaInfo ambariMetaInfo, - AmbariEventPublisher eventPublisher) throws AmbariException { + ServiceImpl(@Assisted Cluster cluster, @Assisted ServiceGroup serviceGroup, + @Assisted("serviceName") String serviceName, @Assisted("serviceDisplayName") String serviceDisplayName, + @Assisted RepositoryVersionEntity desiredRepositoryVersion, + ClusterDAO clusterDAO, ServiceGroupDAO serviceGroupDAO, + ClusterServiceDAO clusterServiceDAO, ServiceDesiredStateDAO serviceDesiredStateDAO, + ServiceComponentFactory serviceComponentFactory, AmbariMetaInfo ambariMetaInfo, + AmbariEventPublisher eventPublisher) throws AmbariException { this.cluster = cluster; + this.serviceGroup = serviceGroup; this.clusterDAO = clusterDAO; + this.serviceGroupDAO = serviceGroupDAO; this.clusterServiceDAO = clusterServiceDAO; this.serviceDesiredStateDAO = serviceDesiredStateDAO; this.serviceComponentFactory = serviceComponentFactory; this.eventPublisher = eventPublisher; this.serviceName = serviceName; + this.serviceDisplayName = serviceDisplayName; this.ambariMetaInfo = ambariMetaInfo; ClusterServiceEntity serviceEntity = new ClusterServiceEntity(); serviceEntity.setClusterId(cluster.getClusterId()); + serviceEntity.setServiceGroupId(serviceGroup.getServiceGroupId()); serviceEntity.setServiceName(serviceName); + serviceEntity.setServiceDisplayName(serviceDisplayName); + ServiceDesiredStateEntity serviceDesiredStateEntity = new ServiceDesiredStateEntity(); - serviceDesiredStateEntity.setServiceName(serviceName); serviceDesiredStateEntity.setClusterId(cluster.getClusterId()); + serviceDesiredStateEntity.setServiceGroupId(serviceGroup.getServiceGroupId()); serviceDesiredStateEntity.setDesiredRepositoryVersion(desiredRepositoryVersion); serviceDesiredStateEntityPK = getServiceDesiredStateEntityPK(serviceDesiredStateEntity); serviceEntityPK = getServiceEntityPK(serviceEntity); @@ -127,7 +148,7 @@ public class ServiceImpl implements Service { StackId stackId = desiredRepositoryVersion.getStackId(); ServiceInfo sInfo = ambariMetaInfo.getService(stackId.getStackName(), - stackId.getStackVersion(), serviceName); + stackId.getStackVersion(), serviceDisplayName); displayName = sInfo.getDisplayName(); isClientOnlyService = sInfo.isClientOnlyService(); @@ -138,18 +159,23 @@ public class ServiceImpl implements Service { } @AssistedInject - ServiceImpl(@Assisted Cluster cluster, @Assisted ClusterServiceEntity serviceEntity, - ClusterDAO clusterDAO, ClusterServiceDAO clusterServiceDAO, - ServiceDesiredStateDAO serviceDesiredStateDAO, - ServiceComponentFactory serviceComponentFactory, AmbariMetaInfo ambariMetaInfo, - AmbariEventPublisher eventPublisher) throws AmbariException { + ServiceImpl(@Assisted Cluster cluster, @Assisted ServiceGroup serviceGroup, + @Assisted ClusterServiceEntity serviceEntity, + ClusterDAO clusterDAO, ServiceGroupDAO serviceGroupDAO, + ClusterServiceDAO clusterServiceDAO, ServiceDesiredStateDAO serviceDesiredStateDAO, + ServiceComponentFactory serviceComponentFactory, AmbariMetaInfo ambariMetaInfo, + AmbariEventPublisher eventPublisher) throws AmbariException { this.cluster = cluster; + this.serviceGroup = serviceGroup; this.clusterDAO = clusterDAO; + this.serviceGroupDAO = serviceGroupDAO; this.clusterServiceDAO = clusterServiceDAO; this.serviceDesiredStateDAO = serviceDesiredStateDAO; this.serviceComponentFactory = serviceComponentFactory; this.eventPublisher = eventPublisher; - serviceName = serviceEntity.getServiceName(); + this.serviceId = serviceEntity.getServiceId(); + this.serviceName = serviceEntity.getServiceName(); + this.serviceDisplayName = serviceEntity.getServiceDisplayName(); this.ambariMetaInfo = ambariMetaInfo; ServiceDesiredStateEntity serviceDesiredStateEntity = serviceEntity.getServiceDesiredStateEntity(); @@ -166,8 +192,8 @@ public class ServiceImpl implements Service { } catch(ProvisionException ex) { StackId stackId = new StackId(serviceComponentDesiredStateEntity.getDesiredStack()); LOG.error(String.format("Can not get component info: stackName=%s, stackVersion=%s, serviceName=%s, componentName=%s", - stackId.getStackName(), stackId.getStackVersion(), - serviceEntity.getServiceName(),serviceComponentDesiredStateEntity.getComponentName())); + stackId.getStackName(), stackId.getStackVersion(), + serviceEntity.getServiceDisplayName(), serviceComponentDesiredStateEntity.getComponentName())); ex.printStackTrace(); } } @@ -206,21 +232,32 @@ public class ServiceImpl implements Service { } @Override - public String getName() { - return serviceName; - } + public String getName() { return serviceName; } @Override - public String getDisplayName() { - return StringUtils.isBlank(displayName) ? serviceName : displayName; + public String getServiceDisplayName() { + return serviceDisplayName; } @Override - public long getClusterId() { + public Long getClusterId() { return cluster.getClusterId(); } @Override + public Long getServiceGroupId() { + return serviceGroup.getServiceGroupId(); + } + + @Override + public String getServiceGroupName() { + return serviceGroup.getServiceGroupName(); + } + + @Override + public Long getServiceId() { return serviceId; } + + @Override public Map<String, ServiceComponent> getServiceComponents() { return new HashMap<>(components); } @@ -239,7 +276,7 @@ public class ServiceImpl implements Service { throw new AmbariException("Cannot add duplicate ServiceComponent" + ", clusterName=" + cluster.getClusterName() + ", clusterId=" + cluster.getClusterId() - + ", serviceName=" + getName() + + ", serviceName=" + getServiceDisplayName() + ", serviceComponentName=" + component.getName()); } @@ -260,7 +297,7 @@ public class ServiceImpl implements Service { ServiceComponent serviceComponent = components.get(componentName); if (null == serviceComponent) { throw new ServiceComponentNotFoundException(cluster.getClusterName(), - getName(), componentName); + getName(), getServiceDisplayName(), serviceGroup.getServiceGroupName(), componentName); } return serviceComponent; @@ -276,7 +313,7 @@ public class ServiceImpl implements Service { public void setDesiredState(State state) { if (LOG.isDebugEnabled()) { LOG.debug("Setting DesiredState of Service, clusterName={}, clusterId={}, serviceName={}, oldDesiredState={}, newDesiredState={}", - cluster.getClusterName(), cluster.getClusterId(), getName(), getDesiredState(), state); + cluster.getClusterName(), cluster.getClusterId(), getServiceDisplayName(), getDesiredState(), state); } ServiceDesiredStateEntity serviceDesiredStateEntity = getServiceDesiredStateEntity(); @@ -347,8 +384,9 @@ public class ServiceImpl implements Service { StackId desiredStackId = desiredRespositoryVersion.getStackId(); ServiceResponse r = new ServiceResponse(cluster.getClusterId(), cluster.getClusterName(), - getName(), desiredStackId, desiredRespositoryVersion.getVersion(), getRepositoryState(), - getDesiredState().toString(), isCredentialStoreSupported(), isCredentialStoreEnabled()); + serviceGroup.getServiceGroupId(), serviceGroup.getServiceGroupName(), + getServiceId(), getName(), getServiceDisplayName(), desiredStackId, desiredRespositoryVersion.getVersion(), + getRepositoryState(), getDesiredState().toString(), isCredentialStoreSupported(), isCredentialStoreEnabled()); r.setDesiredRepositoryVersionId(desiredRespositoryVersion.getId()); @@ -414,7 +452,7 @@ public class ServiceImpl implements Service { public void setCredentialStoreEnabled(boolean credentialStoreEnabled) { if (LOG.isDebugEnabled()) { LOG.debug("Setting CredentialStoreEnabled of Service, clusterName={}, clusterId={}, serviceName={}, oldCredentialStoreEnabled={}, newCredentialStoreEnabled={}", - cluster.getClusterName(), cluster.getClusterId(), getName(), isCredentialStoreEnabled(), credentialStoreEnabled); + cluster.getClusterName(), cluster.getClusterId(), getServiceDisplayName(), isCredentialStoreEnabled(), credentialStoreEnabled); } ServiceDesiredStateEntity desiredStateEntity = getServiceDesiredStateEntity(); @@ -431,6 +469,7 @@ public class ServiceImpl implements Service { @Override public void debugDump(StringBuilder sb) { sb.append("Service={ serviceName=").append(getName()) + .append(", serviceDisplayName=").append(getServiceDisplayName()) .append(", clusterName=").append(cluster.getClusterName()) .append(", clusterId=").append(cluster.getClusterId()) .append(", desiredStackVersion=").append(getDesiredStackId()) @@ -460,7 +499,7 @@ public class ServiceImpl implements Service { cluster.addService(this); ServiceInstalledEvent event = new ServiceInstalledEvent(getClusterId(), stackId.getStackName(), - stackId.getStackVersion(), getName()); + stackId.getStackVersion(), getName(), serviceDisplayName, serviceGroup.getServiceGroupName()); eventPublisher.publish(event); } @@ -469,10 +508,17 @@ public class ServiceImpl implements Service { void persistEntities(ClusterServiceEntity serviceEntity) { long clusterId = cluster.getClusterId(); ClusterEntity clusterEntity = clusterDAO.findById(clusterId); + ServiceGroupEntity serviceGroupEntity = serviceGroupDAO.findByClusterAndServiceGroupIds( + clusterId, serviceGroup.getServiceGroupId()); + serviceEntity.setServiceGroupEntity(serviceGroupEntity); serviceEntity.setClusterEntity(clusterEntity); clusterServiceDAO.create(serviceEntity); + serviceId = serviceEntity.getServiceId(); + serviceEntityPK.setServiceId(serviceId); + serviceDesiredStateEntityPK.setServiceId(serviceId); clusterEntity.getClusterServiceEntities().add(serviceEntity); clusterDAO.merge(clusterEntity); + serviceGroupDAO.merge(serviceGroupEntity); clusterServiceDAO.merge(serviceEntity); } @@ -486,9 +532,9 @@ public class ServiceImpl implements Service { // for (ServiceComponent sc : components.values()) { if (!sc.canBeRemoved()) { - LOG.warn("Found non removable component when trying to delete service" + ", clusterName=" - + cluster.getClusterName() + ", serviceName=" + getName() + ", componentName=" - + sc.getName()); + LOG.warn("Found non-removable component when trying to delete service" + ", clusterName=" + + cluster.getClusterName() + ", serviceName=" + getName() + ", serviceDisplayName=" + + getServiceDisplayName() + ", componentName=" + sc.getName()); return false; } } @@ -509,7 +555,7 @@ public class ServiceImpl implements Service { } } - LOG.info("Deleting all configuration associations for {} on cluster {}", getName(), cluster.getClusterName()); + LOG.info("Deleting all configuration associations for {} on cluster {}", getServiceDisplayName(), cluster.getClusterName()); List<ServiceConfigEntity> serviceConfigEntities = serviceConfigDAO.findByService(cluster.getClusterId(), getName()); @@ -527,13 +573,13 @@ public class ServiceImpl implements Service { lock.lock(); try { LOG.info("Deleting all components for service" + ", clusterName=" + cluster.getClusterName() - + ", serviceName=" + getName()); + + ", serviceDisplayName=" + getServiceDisplayName()); // FIXME check dependencies from meta layer for (ServiceComponent component : components.values()) { if (!component.canBeRemoved()) { throw new AmbariException("Found non removable component when trying to" + " delete all components from service" + ", clusterName=" + cluster.getClusterName() - + ", serviceName=" + getName() + ", componentName=" + component.getName()); + + ", getServiceDisplayName=" + getServiceDisplayName() + ", componentName=" + component.getName()); } } @@ -554,12 +600,12 @@ public class ServiceImpl implements Service { try { ServiceComponent component = getServiceComponent(componentName); LOG.info("Deleting servicecomponent for cluster" + ", clusterName=" + cluster.getClusterName() - + ", serviceName=" + getName() + ", componentName=" + componentName); + + ", getServiceDisplayName=" + getServiceDisplayName() + ", componentName=" + componentName); // FIXME check dependencies from meta layer if (!component.canBeRemoved()) { throw new AmbariException("Could not delete component from cluster" + ", clusterName=" + cluster.getClusterName() - + ", serviceName=" + getName() + + ", getServiceDisplayName=" + getServiceDisplayName() + ", componentName=" + componentName); } @@ -591,8 +637,9 @@ public class ServiceImpl implements Service { return; } - ServiceRemovedEvent event = new ServiceRemovedEvent(getClusterId(), stackId.getStackName(), - stackId.getStackVersion(), getName(), components); + ServiceRemovedEvent event = new ServiceRemovedEvent(getClusterId(), stackId.getStackName(), stackId.getStackVersion(), + getName(), getServiceDisplayName(), + serviceGroup.getServiceGroupName(), components); eventPublisher.publish(event); } @@ -632,14 +679,16 @@ public class ServiceImpl implements Service { private ClusterServiceEntityPK getServiceEntityPK(ClusterServiceEntity serviceEntity) { ClusterServiceEntityPK pk = new ClusterServiceEntityPK(); pk.setClusterId(serviceEntity.getClusterId()); - pk.setServiceName(serviceEntity.getServiceName()); + pk.setServiceGroupId(serviceEntity.getServiceGroupId()); + pk.setServiceId(serviceEntity.getServiceId()); return pk; } private ServiceDesiredStateEntityPK getServiceDesiredStateEntityPK(ServiceDesiredStateEntity serviceDesiredStateEntity) { ServiceDesiredStateEntityPK pk = new ServiceDesiredStateEntityPK(); pk.setClusterId(serviceDesiredStateEntity.getClusterId()); - pk.setServiceName(serviceDesiredStateEntity.getServiceName()); + pk.setServiceGroupId(serviceDesiredStateEntity.getServiceGroupId()); + pk.setServiceId(serviceDesiredStateEntity.getServiceId()); return pk; }
http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java index 1494488..6417b6e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/StackInfo.java @@ -169,10 +169,10 @@ public class StackInfo implements Comparable<StackInfo>, Validable { return services; } - public ServiceInfo getService(String name) { + public ServiceInfo getService(String serviceDisplayName) { Collection<ServiceInfo> services = getServices(); for (ServiceInfo service : services) { - if (service.getName().equals(name)) { + if (service.getName().equals(serviceDisplayName)) { return service; } } http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 605cb7a..f18aaa3 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 @@ -59,6 +59,7 @@ import org.apache.ambari.server.controller.ClusterResponse; import org.apache.ambari.server.controller.ConfigurationResponse; import org.apache.ambari.server.controller.MaintenanceStateHelper; import org.apache.ambari.server.controller.RootServiceResponseFactory.Services; +import org.apache.ambari.server.controller.ServiceComponentHostResponse; import org.apache.ambari.server.controller.ServiceConfigVersionResponse; import org.apache.ambari.server.events.AmbariEvent.AmbariEventType; import org.apache.ambari.server.events.ClusterConfigChangedEvent; @@ -171,8 +172,10 @@ public class ClusterImpl implements Cluster { private StackId desiredStackVersion; private final ConcurrentSkipListMap<String, Service> services = new ConcurrentSkipListMap<>(); + private final ConcurrentSkipListMap<Long, Service> servicesById = new ConcurrentSkipListMap<>(); private Map<String, ServiceGroup> serviceGroups = new ConcurrentSkipListMap<>(); + private final Map<Long, ServiceGroup> serviceGroupsById = new ConcurrentSkipListMap<>(); /** * [ Config Type -> [ Config Version Tag -> Config ] ] @@ -435,7 +438,7 @@ public class ClusterImpl implements Cluster { if (ambariMetaInfo.getService(stackId.getStackName(), stackId.getStackVersion(), serviceEntity.getServiceName()) != null) { services.put(serviceEntity.getServiceName(), - serviceFactory.createExisting(this, serviceEntity)); + serviceFactory.createExisting(this, getServiceGroup(serviceEntity.getServiceGroupId()), serviceEntity)); } } catch (AmbariException e) { LOG.error(String.format( @@ -452,6 +455,7 @@ public class ClusterImpl implements Cluster { for (ServiceGroupEntity serviceGroupEntity : clusterEntity.getServiceGroupEntities()) { ServiceGroup sg = serviceGroupFactory.createExisting(this, serviceGroupEntity); serviceGroups.put(serviceGroupEntity.getServiceGroupName(), sg); + serviceGroupsById.put(serviceGroupEntity.getServiceGroupId(), sg); } } } @@ -622,12 +626,17 @@ public class ClusterImpl implements Cluster { @Override @Transactional - public void addServiceComponentHosts(Collection<ServiceComponentHost> serviceComponentHosts) throws AmbariException { + public Set<ServiceComponentHostResponse> addServiceComponentHosts(Collection<ServiceComponentHost> serviceComponentHosts) throws AmbariException { + Set<ServiceComponentHostResponse> createdSvcHostCmpnt = new HashSet<>(); + Cluster cluster = null; for (ServiceComponentHost serviceComponentHost : serviceComponentHosts) { Service service = getService(serviceComponentHost.getServiceName()); + cluster = service.getCluster(); ServiceComponent serviceComponent = service.getServiceComponent(serviceComponentHost.getServiceComponentName()); serviceComponent.addServiceComponentHost(serviceComponentHost); + createdSvcHostCmpnt.add(serviceComponentHost.convertToResponse(cluster.getDesiredConfigs())); } + return createdSvcHostCmpnt; } public void addServiceComponentHost(ServiceComponentHost svcCompHost) @@ -768,7 +777,7 @@ public class ClusterImpl implements Cluster { } @Override - public long getClusterId() { + public Long getClusterId() { // Add cluster creates the managed entity before creating the Cluster // instance so id would not be null. return clusterId; @@ -843,7 +852,8 @@ public class ClusterImpl implements Cluster { @Override public void addService(Service service) { if (LOG.isDebugEnabled()) { - LOG.debug("Adding a new Service, clusterName={}, clusterId={}, serviceName={}", getClusterName(), getClusterId(), service.getName()); + LOG.debug("Adding a new Service, clusterName={}, clusterId={}, serviceName={} serviceDisplayName={}", + getClusterName(), getClusterId(), service.getName(), service.getServiceDisplayName()); } services.put(service.getName(), service); } @@ -852,16 +862,17 @@ public class ClusterImpl implements Cluster { * {@inheritDoc} */ @Override - public Service addService(String serviceName, RepositoryVersionEntity repositoryVersion) throws AmbariException { + public Service addService(ServiceGroup serviceGroup, String serviceName, String serviceDisplayName, + RepositoryVersionEntity repositoryVersion) throws AmbariException { if (services.containsKey(serviceName)) { - String message = MessageFormat.format("The {0} service already exists in {1}", serviceName, + String message = MessageFormat.format("The {0} service already exists in {1}", serviceDisplayName, getClusterName()); throw new AmbariException(message); } @Experimental(feature = ExperimentalFeature.PATCH_UPGRADES) - Service service = serviceFactory.createNew(this, serviceName, repositoryVersion); + Service service = serviceFactory.createNew(this, serviceGroup, serviceName, serviceDisplayName, repositoryVersion); addService(service); return service; @@ -875,6 +886,7 @@ public class ClusterImpl implements Cluster { + serviceGroup.getServiceGroupName()); } serviceGroups.put(serviceGroup.getServiceGroupName(), serviceGroup); + serviceGroupsById.put(serviceGroup.getServiceGroupId(), serviceGroup); } @Override @@ -900,11 +912,26 @@ public class ClusterImpl implements Cluster { } @Override + public Service getService(Long serviceId) throws AmbariException { + Service service = servicesById.get(serviceId); + if (null == service) { + throw new ServiceNotFoundException(getClusterName(), serviceId); + } + + return service; + } + + @Override public Map<String, Service> getServices() { return new HashMap<>(services); } @Override + public Map<Long, Service> getServicesById() { + return new HashMap<Long, Service>(servicesById); + } + + @Override public Service getServiceByComponentName(String componentName) throws AmbariException { for (Service service : services.values()) { for (ServiceComponent component : service.getServiceComponents().values()) { @@ -928,6 +955,16 @@ public class ClusterImpl implements Cluster { return serviceGroup; } + + @Override + public ServiceGroup getServiceGroup(Long serviceGroupId) throws ServiceGroupNotFoundException { + ServiceGroup serviceGroup = serviceGroupsById.get(serviceGroupId); + if(null == serviceGroup) { + throw new ServiceGroupNotFoundException(getClusterName(), serviceGroupId); + } + return serviceGroup; + } + @Override public Map<String, ServiceGroup> getServiceGroups() throws AmbariException { return new HashMap<String, ServiceGroup>(serviceGroups); @@ -1356,6 +1393,7 @@ public class ClusterImpl implements Cluster { Long serviceGroupId = serviceGroup.getServiceGroupId(); deleteServiceGroup(serviceGroup); serviceGroups.remove(serviceGroupName); + serviceGroupsById.remove(serviceGroupId); } finally { clusterGlobalLock.writeLock().unlock(); } http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 3ceaa48..37f5af9 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 @@ -1157,9 +1157,9 @@ public class HostImpl implements Host { HostEntity hostEntity = getHostEntity(); for (HostComponentStateEntity componentState : hostEntity.getHostComponentStateEntities()) { - ComponentInfo component = ambariMetaInfo.getComponent(stackId.getStackName(), - stackId.getStackVersion(), componentState.getServiceName(), - componentState.getComponentName()); + String serviceDisplayName = componentState.getServiceComponentDesiredStateEntity().getClusterServiceEntity().getServiceName(); + ComponentInfo component = ambariMetaInfo.getComponent(stackId.getStackName(), stackId.getStackVersion(), + serviceDisplayName, componentState.getComponentName()); if (component.isVersionAdvertised()) { return true; http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/java/org/apache/ambari/server/state/repository/VersionDefinitionXml.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/repository/VersionDefinitionXml.java b/ambari-server/src/main/java/org/apache/ambari/server/state/repository/VersionDefinitionXml.java index 45d8e8e..78a87b3 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/repository/VersionDefinitionXml.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/repository/VersionDefinitionXml.java @@ -281,7 +281,7 @@ public class VersionDefinitionXml { continue; } - ServiceVersionSummary summary = new ServiceVersionSummary(service.getDisplayName()); + ServiceVersionSummary summary = new ServiceVersionSummary(service.getServiceDisplayName()); summaries.put(service.getName(), summary); String serviceVersion = service.getDesiredRepositoryVersion().getVersion(); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java index 230b031..54cbc3d 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostImpl.java @@ -64,10 +64,12 @@ import org.apache.ambari.server.state.HostConfig; import org.apache.ambari.server.state.HostState; import org.apache.ambari.server.state.MaintenanceState; import org.apache.ambari.server.state.RepositoryVersionState; +import org.apache.ambari.server.state.Service; import org.apache.ambari.server.state.ServiceComponent; import org.apache.ambari.server.state.ServiceComponentHost; import org.apache.ambari.server.state.ServiceComponentHostEvent; import org.apache.ambari.server.state.ServiceComponentHostEventType; +import org.apache.ambari.server.state.ServiceGroup; import org.apache.ambari.server.state.StackId; import org.apache.ambari.server.state.StackInfo; import org.apache.ambari.server.state.State; @@ -785,8 +787,9 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { HostComponentStateEntity stateEntity = new HostComponentStateEntity(); stateEntity.setClusterId(serviceComponent.getClusterId()); + stateEntity.setServiceGroupId(serviceComponent.getServiceGroupId()); + stateEntity.setServiceId(serviceComponent.getServiceId()); stateEntity.setComponentName(serviceComponent.getName()); - stateEntity.setServiceName(serviceComponent.getServiceName()); stateEntity.setVersion(State.UNKNOWN.toString()); stateEntity.setHostEntity(hostEntity); stateEntity.setCurrentState(stateMachine.getCurrentState()); @@ -795,7 +798,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { HostComponentDesiredStateEntity desiredStateEntity = new HostComponentDesiredStateEntity(); desiredStateEntity.setClusterId(serviceComponent.getClusterId()); desiredStateEntity.setComponentName(serviceComponent.getName()); - desiredStateEntity.setServiceName(serviceComponent.getServiceName()); + desiredStateEntity.setServiceId(serviceComponent.getServiceId()); desiredStateEntity.setHostEntity(hostEntity); desiredStateEntity.setDesiredState(State.INIT); @@ -809,8 +812,8 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { // publish the service component installed event ServiceComponentInstalledEvent event = new ServiceComponentInstalledEvent(getClusterId(), - stackId.getStackName(), stackId.getStackVersion(), getServiceName(), - getServiceComponentName(), getHostName(), isRecoveryEnabled()); + stackId.getStackName(), stackId.getStackVersion(), getServiceName(), getServiceDisplayName(), + getServiceGroupName(), getServiceComponentName(), getHostName(), isRecoveryEnabled()); eventPublisher.publish(event); @@ -1055,7 +1058,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { } @Override - public long getClusterId() { + public Long getClusterId() { return serviceComponent.getClusterId(); } @@ -1065,11 +1068,40 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { } @Override + public String getServiceDisplayName() { + return serviceComponent.getServiceDisplayName(); + } + + @Override + public Long getServiceId() { + return serviceComponent.getServiceId(); + } + + @Override + public Long getHostComponentId() { + return hostComponentStateId; + } + + @Override public boolean isClientComponent() { return serviceComponent.isClientComponent(); } @Override + public Long getServiceGroupId() { return serviceComponent.getServiceGroupId(); } + + @Override + public String getServiceGroupName() { + try { + Cluster cluster = clusters.getCluster(getClusterId()); + ServiceGroup sg = cluster.getServiceGroup(getServiceGroupId()); + return sg.getServiceGroupName(); + } catch (AmbariException e) { + return null; + } + } + + @Override public State getDesiredState() { HostComponentDesiredStateEntity desiredStateEntity = getDesiredStateEntity(); if (desiredStateEntity != null) { @@ -1142,8 +1174,18 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { HostComponentDesiredStateEntity hostComponentDesiredStateEntity = getDesiredStateEntity(); String clusterName = serviceComponent.getClusterName(); - String serviceName = serviceComponent.getServiceName(); + Long clusterId = serviceComponent.getClusterId(); + String serviceName = serviceComponent.getServiceDisplayName(); + Cluster cluster = null; + Service service = null; + try { + cluster = clusters.getCluster(clusterName); + service = cluster.getService(serviceName); + } catch (AmbariException e) { + e.printStackTrace(); + } String serviceComponentName = serviceComponent.getName(); + Long hostComponentId = getHostComponentId(); String hostName = getHostName(); String publicHostName = hostEntity.getPublicHostName(); String state = getState().toString(); @@ -1168,9 +1210,10 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { desiredRepositoryVersion = repositoryVersion.getVersion(); } - ServiceComponentHostResponse r = new ServiceComponentHostResponse(clusterName, serviceName, - serviceComponentName, displayName, hostName, publicHostName, state, getVersion(), - desiredState, desiredStackId, desiredRepositoryVersion, componentAdminState); + ServiceComponentHostResponse r = new ServiceComponentHostResponse(clusterId, clusterName, service.getServiceGroupId(), + service.getServiceGroupName(), service.getServiceId(), service.getName(), service.getServiceDisplayName(), + hostComponentId, serviceComponentName, displayName, hostName, publicHostName, state, getVersion(), + desiredState, desiredStackId, desiredRepositoryVersion, componentAdminState); r.setActualConfigs(actualConfigs); r.setUpgradeState(upgradeState); @@ -1213,7 +1256,7 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { void persistEntities(HostEntity hostEntity, HostComponentStateEntity stateEntity, HostComponentDesiredStateEntity desiredStateEntity) { ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity = serviceComponentDesiredStateDAO.findByName( - serviceComponent.getClusterId(), serviceComponent.getServiceName(), + serviceComponent.getClusterId(), serviceComponent.getServiceGroupId(), serviceComponent.getServiceId(), serviceComponent.getName()); desiredStateEntity.setServiceComponentDesiredStateEntity(serviceComponentDesiredStateEntity); @@ -1264,12 +1307,14 @@ public class ServiceComponentHostImpl implements ServiceComponentHost { String stackVersion = stackId.getStackVersion(); String stackName = stackId.getStackName(); String serviceName = getServiceName(); + String serviceDisplayName = getServiceDisplayName(); + String serviceGroupName = getServiceGroupName(); String componentName = getServiceComponentName(); String hostName = getHostName(); boolean recoveryEnabled = isRecoveryEnabled(); ServiceComponentUninstalledEvent event = new ServiceComponentUninstalledEvent( - clusterId, stackName, stackVersion, serviceName, componentName, + clusterId, stackName, stackVersion, serviceName, serviceDisplayName, serviceGroupName, componentName, hostName, recoveryEnabled); eventPublisher.publish(event); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostSummary.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostSummary.java b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostSummary.java index e9359ef..4615ff6 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostSummary.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/state/svccomphost/ServiceComponentHostSummary.java @@ -67,9 +67,10 @@ public class ServiceComponentHostSummary { String stackVersion = repositoryVersion.getStackVersion(); for (HostComponentStateEntity hostComponentStateEntity : allHostComponents) { - ComponentInfo compInfo = ambariMetaInfo.getComponent( - stackName, stackVersion, hostComponentStateEntity.getServiceName(), - hostComponentStateEntity.getComponentName()); + String serviceDisplayName = hostComponentStateEntity.getServiceComponentDesiredStateEntity(). + getClusterServiceEntity().getServiceDisplayName(); + ComponentInfo compInfo = ambariMetaInfo.getComponent(stackName, stackVersion, serviceDisplayName, + hostComponentStateEntity.getComponentName()); if (!compInfo.isVersionAdvertised()) { // Some Components cannot advertise a version. E.g., ZKF, AMBARI_METRICS, Kerberos http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 662f9aa..b66a169 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 @@ -243,7 +243,8 @@ public class AmbariContext { Set<ServiceComponentRequest> componentRequests = new HashSet<>(); for (String service : services) { String credentialStoreEnabled = topology.getBlueprint().getCredentialStoreEnabled(service); - serviceRequests.add(new ServiceRequest(clusterName, service, repositoryVersionId, null, credentialStoreEnabled)); + serviceRequests.add(new ServiceRequest(clusterName, null, service, service, + repositoryVersionId, null, credentialStoreEnabled)); for (String component : topology.getBlueprint().getComponents(service)) { String recoveryEnabled = topology.getBlueprint().getRecoveryEnabled(service, component); @@ -318,7 +319,7 @@ public class AmbariContext { //todo: handle this in a generic manner. These checks are all over the code try { if (cluster.getService(service) != null && !component.equals("AMBARI_SERVER")) { - requests.add(new ServiceComponentHostRequest(clusterName, service, component, hostName, null)); + requests.add(new ServiceComponentHostRequest(clusterName, null, service, component, hostName, null)); } } catch(AmbariException se) { LOG.warn("Service already deleted from cluster: {}", service); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 b1a13d3..1781fdd 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Derby-CREATE.sql @@ -160,11 +160,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, @@ -195,15 +198,16 @@ CREATE TABLE servicecomponentdesiredstate ( id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, recovery_enabled SMALLINT NOT NULL DEFAULT 0, repo_state VARCHAR(255) NOT NULL DEFAULT 'NOT_REQUIRED', CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id BIGINT NOT NULL, @@ -211,14 +215,15 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL, restart_required SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_id, host_id, service_group_id, cluster_id), CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE TABLE hostcomponentstate ( @@ -228,13 +233,14 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', CONSTRAINT pk_hostcomponentstate PRIMARY KEY (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); -CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); +CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_id, cluster_id); CREATE TABLE hoststate ( agent_version VARCHAR(255) NOT NULL, @@ -259,15 +265,16 @@ CREATE TABLE host_version ( CREATE TABLE servicedesiredstate ( cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, credential_store_enabled SMALLINT NOT NULL DEFAULT 0, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE adminprincipaltype ( principal_type_id INTEGER NOT NULL, @@ -1069,6 +1076,8 @@ INSERT INTO ambari_sequences (sequence_name, sequence_value) UNION ALL SELECT 'service_group_id_seq', 1 FROM SYSIBM.SYSDUMMY1 UNION ALL + SELECT 'service_id_seq', 1 FROM SYSIBM.SYSDUMMY1 + UNION ALL SELECT 'host_id_seq', 0 FROM SYSIBM.SYSDUMMY1 UNION ALL SELECT 'user_id_seq', 2 FROM SYSIBM.SYSDUMMY1 http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 2beee0f..1d885b5 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-MySQL-CREATE.sql @@ -179,11 +179,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, @@ -214,15 +217,16 @@ CREATE TABLE servicecomponentdesiredstate ( id BIGINT NOT NULL, component_name VARCHAR(100) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(100) NOT NULL, recovery_enabled SMALLINT NOT NULL DEFAULT 0, repo_state VARCHAR(255) NOT NULL DEFAULT 'NOT_REQUIRED', CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id BIGINT NOT NULL, @@ -230,14 +234,15 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(100) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(100) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', restart_required TINYINT(1) NOT NULL DEFAULT 0, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_id, host_id, service_group_id, cluster_id), CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE TABLE hostcomponentstate ( @@ -247,13 +252,14 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(100) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', CONSTRAINT pk_hostcomponentstate PRIMARY KEY (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); -CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); +CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_id, cluster_id); CREATE TABLE hoststate ( agent_version VARCHAR(255) NOT NULL, @@ -278,15 +284,16 @@ CREATE TABLE host_version ( CREATE TABLE servicedesiredstate ( cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', credential_store_enabled SMALLINT NOT NULL DEFAULT 0, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE adminprincipaltype ( principal_type_id INTEGER NOT NULL, @@ -1083,6 +1090,7 @@ CREATE INDEX idx_alert_notice_state on alert_notice(notify_state); INSERT INTO ambari_sequences(sequence_name, sequence_value) VALUES ('cluster_id_seq', 1), ('service_group_id_seq', 1), + ('service_id_seq', 1), ('host_id_seq', 0), ('host_role_command_id_seq', 1), ('user_id_seq', 2), http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 190eb8b..3988396 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Oracle-CREATE.sql @@ -161,11 +161,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id NUMBER(19) NOT NULL, service_name VARCHAR2(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, service_enabled NUMBER(10) NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id NUMBER(19) NOT NULL, @@ -196,15 +199,16 @@ CREATE TABLE servicecomponentdesiredstate ( id NUMBER(19) NOT NULL, component_name VARCHAR2(255) NOT NULL, cluster_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, + service_id NUMBER(19) NOT NULL, desired_repo_version_id NUMBER(19) NOT NULL, desired_state VARCHAR2(255) NOT NULL, - service_name VARCHAR2(255) NOT NULL, recovery_enabled SMALLINT DEFAULT 0 NOT NULL, repo_state VARCHAR2(255) DEFAULT 'NOT_REQUIRED' NOT NULL, CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id NUMBER(19) NOT NULL, @@ -212,14 +216,15 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR2(255) NOT NULL, desired_state VARCHAR2(255) NOT NULL, host_id NUMBER(19) NOT NULL, - service_name VARCHAR2(255) NOT NULL, + service_group_id NUMBER(19) NOT NULL, + service_id NUMBER(19) NOT NULL, admin_state VARCHAR2(32) NULL, maintenance_state VARCHAR2(32) NOT NULL, restart_required NUMBER(1) DEFAULT 0 NOT NULL, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_id, host_id, service_group_id, host_id, cluster_id), CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE TABLE hostcomponentstate ( id NUMBER(19) NOT NULL, @@ -228,11 +233,12 @@ CREATE TABLE hostcomponentstate ( version VARCHAR2(32) DEFAULT 'UNKNOWN' NOT NULL, current_state VARCHAR2(255) NOT NULL, host_id NUMBER(19) NOT NULL, - service_name VARCHAR2(255) NOT NULL, + service_group_id NUMBER(19) NOT NULL, + service_id NUMBER(19) NOT NULL, upgrade_state VARCHAR2(32) DEFAULT 'NONE' NOT NULL, CONSTRAINT pk_hostcomponentstate PRIMARY KEY (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); @@ -259,15 +265,16 @@ CREATE TABLE host_version ( CREATE TABLE servicedesiredstate ( cluster_id NUMBER(19) NOT NULL, + service_group_id NUMBER(19) NOT NULL, + service_id NUMBER(19) NOT NULL, desired_host_role_mapping NUMBER(10) NOT NULL, desired_repo_version_id NUMBER(19) NOT NULL, desired_state VARCHAR2(255) NOT NULL, - service_name VARCHAR2(255) NOT NULL, maintenance_state VARCHAR2(32) NOT NULL, credential_store_enabled SMALLINT DEFAULT 0 NOT NULL, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_group_id, service_id, cluster_id) REFERENCES clusterservices (service_group_id, id, cluster_id)); CREATE TABLE adminprincipaltype ( principal_type_id NUMBER(10) NOT NULL, @@ -1063,6 +1070,7 @@ CREATE INDEX idx_alert_notice_state on alert_notice(notify_state); -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0. INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_role_command_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_id_seq', 1); +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('user_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('group_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('member_id_seq', 0); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 0f6b075..68ee541 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql @@ -160,11 +160,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, service_enabled INTEGER NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, @@ -194,15 +197,16 @@ CREATE TABLE servicecomponentdesiredstate ( id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, recovery_enabled SMALLINT NOT NULL DEFAULT 0, repo_state VARCHAR(255) NOT NULL DEFAULT 'NOT_REQUIRED', CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id BIGINT NOT NULL, @@ -210,14 +214,15 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL, restart_required SMALLINT NOT NULL DEFAULT 0, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_id, host_id, service_group_id, cluster_id), CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE TABLE hostcomponentstate ( id BIGINT NOT NULL, @@ -226,13 +231,14 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', CONSTRAINT pk_hostcomponentstate PRIMARY KEY (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); -CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); +CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_id, cluster_id); CREATE TABLE hoststate ( agent_version VARCHAR(255) NOT NULL, @@ -257,15 +263,16 @@ CREATE TABLE host_version ( CREATE TABLE servicedesiredstate ( cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, credential_store_enabled SMALLINT NOT NULL DEFAULT 0, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE adminprincipaltype ( @@ -1064,6 +1071,7 @@ BEGIN; INSERT INTO ambari_sequences (sequence_name, sequence_value) VALUES ('cluster_id_seq', 1), ('service_group_id_seq', 1), + ('service_id_seq', 1), ('host_id_seq', 0), ('user_id_seq', 2), ('group_id_seq', 1), http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 668d1e7..f8d2002 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLAnywhere-CREATE.sql @@ -159,11 +159,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id NUMERIC(19) NOT NULL, service_name VARCHAR(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id NUMERIC(19) NOT NULL, + service_group_id NUMERIC(19) NOT NULL, service_enabled INTEGER NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id NUMERIC(19) NOT NULL, @@ -193,15 +196,16 @@ CREATE TABLE servicecomponentdesiredstate ( id NUMERIC(19) NOT NULL, component_name VARCHAR(255) NOT NULL, cluster_id NUMERIC(19) NOT NULL, + service_group_id NUMERIC(19) NOT NULL, + service_id NUMERIC(19) NOT NULL, desired_repo_version_id NUMERIC(19) NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, recovery_enabled SMALLINT NOT NULL DEFAULT 0, repo_state VARCHAR(255) NOT NULL DEFAULT 'NOT_REQUIRED', CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id NUMERIC(19) NOT NULL, @@ -209,14 +213,15 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_id NUMERIC(19) NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', restart_required BIT NOT NULL DEFAULT 0, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_name, host_id, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE (component_name, service_id, host_id, service_group_id, cluster_id), CONSTRAINT FK_hcdesiredstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE TABLE hostcomponentstate ( id NUMERIC(19) NOT NULL, @@ -225,11 +230,12 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_state VARCHAR(255) NOT NULL, host_id NUMERIC(19) NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', CONSTRAINT PK_hostcomponentstate PRIMARY KEY (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); @@ -256,15 +262,16 @@ CREATE TABLE host_version ( CREATE TABLE servicedesiredstate ( cluster_id NUMERIC(19) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_repo_version_id NUMERIC(19) NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL DEFAULT 'ACTIVE', credential_store_enabled SMALLINT NOT NULL DEFAULT 0, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE adminprincipaltype ( principal_type_id INTEGER NOT NULL, @@ -1061,6 +1068,7 @@ CREATE INDEX idx_alert_notice_state on alert_notice(notify_state); -- In order for the first ID to be 1, must initialize the ambari_sequences table with a sequence_value of 0. INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('cluster_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_group_id_seq', 1); +INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('service_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_id_seq', 0); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('host_role_command_id_seq', 1); INSERT INTO ambari_sequences(sequence_name, sequence_value) values ('user_id_seq', 2); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/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 d7afe73..4f7406c 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATE.sql @@ -173,11 +173,14 @@ CREATE TABLE servicegroups ( CONSTRAINT FK_servicegroups_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); CREATE TABLE clusterservices ( + id BIGINT NOT NULL, service_name VARCHAR(255) NOT NULL, + service_display_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, service_enabled INT NOT NULL, - CONSTRAINT PK_clusterservices PRIMARY KEY CLUSTERED (service_name, cluster_id), - CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (cluster_id) REFERENCES clusters (cluster_id)); + CONSTRAINT PK_clusterservices PRIMARY KEY (id, service_group_id, cluster_id), + CONSTRAINT FK_clusterservices_cluster_id FOREIGN KEY (service_group_id, cluster_id) REFERENCES servicegroups (id, cluster_id)); CREATE TABLE clusterstate ( cluster_id BIGINT NOT NULL, @@ -207,15 +210,16 @@ CREATE TABLE servicecomponentdesiredstate ( id BIGINT NOT NULL, component_name VARCHAR(255) NOT NULL, cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, recovery_enabled SMALLINT NOT NULL DEFAULT 0, repo_state VARCHAR(255) NOT NULL DEFAULT 'NOT_REQUIRED', CONSTRAINT pk_sc_desiredstate PRIMARY KEY (id), - CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_name, cluster_id), + CONSTRAINT UQ_scdesiredstate_name UNIQUE(component_name, service_id, service_group_id, cluster_id), CONSTRAINT FK_scds_desired_repo_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT srvccmponentdesiredstatesrvcnm FOREIGN KEY (service_id, service_group_id, cluster_id) REFERENCES clusterservices (id, service_group_id, cluster_id)); CREATE TABLE hostcomponentdesiredstate ( id BIGINT NOT NULL, @@ -223,13 +227,14 @@ CREATE TABLE hostcomponentdesiredstate ( component_name VARCHAR(255) NOT NULL, desired_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, admin_state VARCHAR(32), maintenance_state VARCHAR(32) NOT NULL, restart_required BIT NOT NULL DEFAULT 0, CONSTRAINT PK_hostcomponentdesiredstate PRIMARY KEY CLUSTERED (id), - CONSTRAINT UQ_hcdesiredstate_name UNIQUE NONCLUSTERED (component_name, service_name, host_id, cluster_id), - CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id), + CONSTRAINT UQ_hcdesiredstate_name UNIQUE NONCLUSTERED (component_name, service_id, host_id, service_group_id, cluster_id), + CONSTRAINT hstcmpnntdesiredstatecmpnntnme FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id), CONSTRAINT hstcmponentdesiredstatehstid FOREIGN KEY (host_id) REFERENCES hosts (host_id)); @@ -240,11 +245,12 @@ CREATE TABLE hostcomponentstate ( version VARCHAR(32) NOT NULL DEFAULT 'UNKNOWN', current_state VARCHAR(255) NOT NULL, host_id BIGINT NOT NULL, - service_name VARCHAR(255) NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, upgrade_state VARCHAR(32) NOT NULL DEFAULT 'NONE', CONSTRAINT PK_hostcomponentstate PRIMARY KEY CLUSTERED (id), CONSTRAINT FK_hostcomponentstate_host_id FOREIGN KEY (host_id) REFERENCES hosts (host_id), - CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_name, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_name, cluster_id)); + CONSTRAINT hstcomponentstatecomponentname FOREIGN KEY (component_name, service_id, service_group_id, cluster_id) REFERENCES servicecomponentdesiredstate (component_name, service_id, service_group_id, cluster_id)); CREATE NONCLUSTERED INDEX idx_host_component_state on hostcomponentstate(host_id, component_name, service_name, cluster_id); @@ -261,15 +267,16 @@ CREATE TABLE hoststate ( CREATE TABLE servicedesiredstate ( cluster_id BIGINT NOT NULL, + service_group_id BIGINT NOT NULL, + service_id BIGINT NOT NULL, desired_host_role_mapping INTEGER NOT NULL, desired_repo_version_id BIGINT NOT NULL, desired_state VARCHAR(255) NOT NULL, - service_name VARCHAR(255) NOT NULL, maintenance_state VARCHAR(32) NOT NULL, credential_store_enabled SMALLINT NOT NULL DEFAULT 0, - CONSTRAINT PK_servicedesiredstate PRIMARY KEY CLUSTERED (cluster_id,service_name), + CONSTRAINT PK_servicedesiredstate PRIMARY KEY CLUSTERED (cluster_id, service_group_id, service_id), CONSTRAINT FK_repo_version_id FOREIGN KEY (desired_repo_version_id) REFERENCES repo_version (repo_version_id), - CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_name, cluster_id) REFERENCES clusterservices (service_name, cluster_id)); + CONSTRAINT servicedesiredstateservicename FOREIGN KEY (service_group_id, service_id, cluster_id) REFERENCES clusterservices (service_group_id, id, cluster_id)); CREATE TABLE adminprincipaltype ( principal_type_id INTEGER NOT NULL, @@ -1087,7 +1094,8 @@ BEGIN TRANSACTION INSERT INTO ambari_sequences (sequence_name, [sequence_value]) VALUES ('cluster_id_seq', 1), - ('service_group_id_seq', 1) + ('service_group_id_seq', 1), + ('service_id_seq', 1), ('host_id_seq', 0), ('user_id_seq', 2), ('group_id_seq', 1), http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/resources/key_properties.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/key_properties.json b/ambari-server/src/main/resources/key_properties.json index 5d76062..17d7cc4 100644 --- a/ambari-server/src/main/resources/key_properties.json +++ b/ambari-server/src/main/resources/key_properties.json @@ -8,7 +8,9 @@ }, "HostComponent": { "Cluster": "HostRoles/cluster_name", + "ServiceGroup": "HostRoles/service_group_name", "Host": "HostRoles/host_name", + "Service": "HostRoles/service_display_name", "HostComponent": "HostRoles/component_name", "Component": "HostRoles/component_name" }, http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/main/resources/properties.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/properties.json b/ambari-server/src/main/resources/properties.json index 11ca7f6..c691ca9 100644 --- a/ambari-server/src/main/resources/properties.json +++ b/ambari-server/src/main/resources/properties.json @@ -41,9 +41,13 @@ "HostComponent":[ "HostRoles/role_id", "HostRoles/cluster_name", + "HostRoles/cluster_id", + "HostRoles/service_group_id", + "HostRoles/service_group_name", "HostRoles/host_name", "HostRoles/public_host_name", "HostRoles/component_name", + "HostRoles/id", "HostRoles/display_name", "HostRoles/state", "HostRoles/desired_state", @@ -55,7 +59,9 @@ "HostRoles/stale_configs", "HostRoles/desired_admin_state", "HostRoles/maintenance_state", + "HostRoles/service_id", "HostRoles/service_name", + "HostRoles/service_display_name", "HostRoles/upgrade_state", "_" ], http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java index 58d4c3e..22860ce 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeCatalogHelper.java @@ -134,7 +134,8 @@ public class UpgradeCatalogHelper { ServiceDesiredStateEntity serviceDesiredStateEntity = new ServiceDesiredStateEntity(); serviceDesiredStateEntity.setDesiredRepositoryVersion(desiredRepositoryVersion); serviceDesiredStateEntity.setClusterId(1L); - serviceDesiredStateEntity.setServiceName(serviceName); + serviceDesiredStateEntity.setServiceGroupId(1L); + serviceDesiredStateEntity.setServiceId(1L); serviceDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity); clusterServiceEntity.setServiceDesiredStateEntity(serviceDesiredStateEntity); @@ -179,7 +180,8 @@ public class UpgradeCatalogHelper { ServiceComponentDesiredStateEntity componentDesiredStateEntity = new ServiceComponentDesiredStateEntity(); componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity); componentDesiredStateEntity.setComponentName(componentName); - componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName()); + componentDesiredStateEntity.setServiceGroupId(clusterServiceEntity.getServiceGroupId()); + componentDesiredStateEntity.setServiceId(clusterServiceEntity.getServiceId()); componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity); componentDesiredStateEntity.setClusterId(clusterServiceEntity.getClusterId()); componentDesiredStateEntity.setDesiredRepositoryVersion(desiredRepositoryVersion); @@ -190,7 +192,8 @@ public class UpgradeCatalogHelper { HostComponentDesiredStateEntity hostComponentDesiredStateEntity = new HostComponentDesiredStateEntity(); hostComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId()); hostComponentDesiredStateEntity.setComponentName(componentName); - hostComponentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName()); + hostComponentDesiredStateEntity.setServiceGroupId(clusterServiceEntity.getServiceGroupId()); + hostComponentDesiredStateEntity.setServiceId(clusterServiceEntity.getServiceId()); hostComponentDesiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE); hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity); hostComponentDesiredStateEntity.setHostEntity(hostEntity); @@ -199,7 +202,8 @@ public class UpgradeCatalogHelper { HostComponentStateEntity hostComponentStateEntity = new HostComponentStateEntity(); hostComponentStateEntity.setHostEntity(hostEntity); hostComponentStateEntity.setComponentName(componentName); - hostComponentStateEntity.setServiceName(clusterServiceEntity.getServiceName()); + hostComponentStateEntity.setServiceGroupId(clusterServiceEntity.getServiceGroupId()); + hostComponentStateEntity.setServiceId(clusterServiceEntity.getServiceId()); hostComponentStateEntity.setClusterId(clusterEntity.getClusterId()); hostComponentStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-web/app/app.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/app.js b/ambari-web/app/app.js index 2c638e4..2526baa 100644 --- a/ambari-web/app/app.js +++ b/ambari-web/app/app.js @@ -48,6 +48,12 @@ module.exports = Em.Application.create({ }.property('auth'), /** + * default/base service group name ('core') + * @type {String} + */ + defaultServiceGroupName: 'core', + + /** * @type {boolean} * @default false */ http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-web/app/controllers/global/update_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/global/update_controller.js b/ambari-web/app/controllers/global/update_controller.js index 8a3f984..7a6f228 100644 --- a/ambari-web/app/controllers/global/update_controller.js +++ b/ambari-web/app/controllers/global/update_controller.js @@ -457,6 +457,7 @@ App.UpdateController = Em.Controller.extend({ realUrl = '/components/?' + flumeHandlerParam + atsHandlerParam + haComponents + 'ServiceComponentInfo/category=MASTER&fields=' + 'ServiceComponentInfo/service_name,' + + 'ServiceComponentInfo/service_display_name,' + 'host_components/HostRoles/display_name,' + 'host_components/HostRoles/host_name,' + 'host_components/HostRoles/public_host_name,' + @@ -536,7 +537,7 @@ App.UpdateController = Em.Controller.extend({ updateComponentsState: function (callback) { var testUrl = '/data/services/HDP2/components_state.json'; - var realUrl = '/components/?fields=ServiceComponentInfo/service_name,' + + var realUrl = '/components/?fields=ServiceComponentInfo/service_name,ServiceComponentInfo/service_display_name,' + 'ServiceComponentInfo/category,ServiceComponentInfo/installed_count,ServiceComponentInfo/started_count,ServiceComponentInfo/init_count,ServiceComponentInfo/install_failed_count,ServiceComponentInfo/unknown_count,ServiceComponentInfo/total_count,ServiceComponentInfo/display_name,host_components/HostRoles/host_name&minimal_response=true'; var url = this.getUrl(testUrl, realUrl); http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-web/app/controllers/main/admin/kerberos/step3_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/kerberos/step3_controller.js b/ambari-web/app/controllers/main/admin/kerberos/step3_controller.js index 15be4f9..ee6153b 100644 --- a/ambari-web/app/controllers/main/admin/kerberos/step3_controller.js +++ b/ambari-web/app/controllers/main/admin/kerberos/step3_controller.js @@ -45,7 +45,7 @@ App.KerberosWizardStep3Controller = App.KerberosProgressPageController.extend({ data: { context: Em.I18n.t('requestInfo.kerberosService'), ServiceInfo: {"state": "INSTALLED"}, - urlParams: "ServiceInfo/state=INSTALLED&ServiceInfo/service_name=KERBEROS" + urlParams: "ServiceInfo/state=INSTALLED&ServiceInfo/service_display_name=KERBEROS" }, success: 'startPolling', error: 'onTaskError' http://git-wip-us.apache.org/repos/asf/ambari/blob/f3520c09/ambari-web/app/controllers/main/service/add_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/service/add_controller.js b/ambari-web/app/controllers/main/service/add_controller.js index c11bcf2..0c54e30 100644 --- a/ambari-web/app/controllers/main/service/add_controller.js +++ b/ambari-web/app/controllers/main/service/add_controller.js @@ -428,7 +428,7 @@ App.AddServiceController = App.WizardController.extend(App.AddSecurityConfigs, { return { "context": Em.I18n.t('requestInfo.installServices'), "ServiceInfo": {"state": "INSTALLED"}, - "urlParams": "ServiceInfo/service_name.in(" + selectedServices.join(',') + ")" + "urlParams": "ServiceInfo/service_display_name.in(" + selectedServices.join(',') + ")" }; },