You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mr...@apache.org on 2017/10/02 16:51:05 UTC

ambari git commit: AMBARI-22036 : Update services API to explicitly take stack id as a parameter (mradhakrishnan)

Repository: ambari
Updated Branches:
  refs/heads/branch-feature-AMBARI-14714 4a278c1ce -> 1a076807f


AMBARI-22036 : Update services API to explicitly take stack id as a parameter (mradhakrishnan)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1a076807
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1a076807
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1a076807

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: 1a076807ff449fffcb4ffc33fb9ec3f250c0bcd9
Parents: 4a278c1
Author: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
Authored: Mon Oct 2 09:50:08 2017 -0700
Committer: Madhuvanthi Radhakrishnan <mr...@hortonworks.com>
Committed: Mon Oct 2 09:50:08 2017 -0700

----------------------------------------------------------------------
 .../server/api/services/AmbariMetaInfo.java     |  6 ++--
 .../server/controller/ServiceRequest.java       | 30 +++++++++++++++++---
 .../internal/ServiceResourceProvider.java       | 25 +++++++++++++---
 .../apache/ambari/server/state/StackInfo.java   |  4 +--
 .../ambari/server/topology/AmbariContext.java   |  2 +-
 5 files changed, 53 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1a076807/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index 843b032..fd15105 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@ -552,12 +552,12 @@ public class AmbariMetaInfo {
     return getService(stackId.getStackName(), stackId.getStackVersion(), service.getName());
   }
 
-  public ServiceInfo getService(String stackName, String version, String serviceDisplayName) throws AmbariException {
-    ServiceInfo service = getStack(stackName, version).getService(serviceDisplayName);
+  public ServiceInfo getService(String stackName, String version, String serviceName) throws AmbariException {
+    ServiceInfo service = getStack(stackName, version).getService(serviceName);
 
     if (service == null) {
       throw new StackAccessException("stackName=" + stackName + ", stackVersion=" +
-                                     version + ", serviceDisplayName=" + serviceDisplayName);
+                                     version + ", serviceName=" + serviceName);
     }
 
     return service;

http://git-wip-us.apache.org/repos/asf/ambari/blob/1a076807/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java
index b084582..59a700e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/ServiceRequest.java
@@ -18,6 +18,7 @@
 package org.apache.ambari.server.controller;
 
 import org.apache.ambari.server.orm.entities.RepositoryVersionEntity;
+import org.apache.ambari.server.state.StackId;
 
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,6 +33,8 @@ public class ServiceRequest {
   private String credentialStoreEnabled; // CREATE/UPDATE/GET
   private String credentialStoreSupported; //GET
 
+  private StackId desiredStackId;
+
   private Long desiredRepositoryVersionId;
   /**
    * Short-lived object that gets set while validating a request
@@ -39,8 +42,8 @@ public class ServiceRequest {
   private RepositoryVersionEntity resolvedRepository;
 
   public ServiceRequest(String clusterName, String serviceGroupName, String serviceName,
-      Long desiredRepositoryVersionId, String desiredState) {
-    this(clusterName, serviceGroupName, serviceName, serviceName, desiredRepositoryVersionId, desiredState, null);
+      Long desiredRepositoryVersionId, String desiredState, StackId desiredStackId) {
+    this(clusterName, serviceGroupName, serviceName, serviceName, desiredRepositoryVersionId, desiredState, null,desiredStackId );
   }
 
   public ServiceRequest(String clusterName,
@@ -49,7 +52,8 @@ public class ServiceRequest {
                         String serviceDisplayName,
                         Long desiredRepositoryVersionId,
                         String desiredState,
-                        String credentialStoreEnabled) {
+                        String credentialStoreEnabled,
+                        StackId desiredStackId) {
     this.clusterName = clusterName;
     this.serviceGroupName = serviceGroupName;
     this.serviceName = serviceName;
@@ -63,6 +67,7 @@ public class ServiceRequest {
     // Credential store supported cannot be changed after
     // creation since it comes from the stack definition.
     // We can update credential store enabled alone.
+    this.desiredStackId = desiredStackId;
   }
 
   /**
@@ -155,6 +160,22 @@ public class ServiceRequest {
   @ApiModelProperty(name = "credential_store_supporteds")
   public void setCredentialStoreSupported(String credentialStoreSupported) { this.credentialStoreSupported = credentialStoreSupported; }
 
+
+  /***
+   *
+   * @return associated stackid with the service
+   */
+  public StackId getDesiredStackId() {
+    return desiredStackId;
+  }
+
+  /***
+   * @param desiredStackId associated with the service
+   */
+  public void setDesiredStackId(StackId desiredStackId) {
+    this.desiredStackId = desiredStackId;
+  }
+
   @Override
   public String toString() {
     StringBuilder sb = new StringBuilder();
@@ -164,7 +185,8 @@ public class ServiceRequest {
       + ", desiredState=" + desiredState
       + ", maintenanceState=" + maintenanceState
       + ", credentialStoreEnabled=" + credentialStoreEnabled
-      + ", credentialStoreSupported=" + credentialStoreSupported);
+      + ", credentialStoreSupported=" + credentialStoreSupported
+      + ", desiredStackId=" + desiredStackId);
     return sb.toString();
   }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1a076807/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
index ad0f4ec7..f8eb878 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java
@@ -427,6 +427,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
   private ServiceRequest getRequest(Map<String, Object> properties) {
 
     String desiredRepoId = (String) properties.get(SERVICE_DESIRED_REPO_VERSION_ID_PROPERTY_ID);
+    String stackid = (String) properties.get(SERVICE_DESIRED_STACK_PROPERTY_ID);
 
     ServiceRequest svcRequest = new ServiceRequest(
         (String) properties.get(SERVICE_CLUSTER_NAME_PROPERTY_ID),
@@ -435,7 +436,8 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
         (String) properties.get(SERVICE_SERVICE_DISPLAY_NAME_PROPERTY_ID),
         null == desiredRepoId ? null : Long.valueOf(desiredRepoId),
         (String) properties.get(SERVICE_SERVICE_STATE_PROPERTY_ID),
-        (String) properties.get(SERVICE_CREDENTIAL_STORE_ENABLED_PROPERTY_ID));
+        (String) properties.get(SERVICE_CREDENTIAL_STORE_ENABLED_PROPERTY_ID),
+            null == stackid ? null : new StackId(stackid));
 
     Object o = properties.get(SERVICE_MAINTENANCE_STATE_PROPERTY_ID);
     if (null != o) {
@@ -478,7 +480,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
         throw new AmbariException("Could not find any repository on the request.");
       }
 
-      Service s = cluster.addService(sg, request.getServiceName(), request.getServiceDisplayName(), repositoryVersion);
+      Service s = cluster.addService(sg, request.getServiceName(), request.getServiceName(), repositoryVersion);
       if (repositoryVersion.getType() != RepositoryType.STANDARD
           && cluster.getProvisioningState() == State.INIT) {
         throw new AmbariException(String.format(
@@ -1087,10 +1089,13 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
       final String serviceGroupName = request.getServiceGroupName();
       final String serviceName = request.getServiceName();
       final String serviceDisplayName = request.getServiceDisplayName();
+      final StackId desiredStackId = request.getDesiredStackId();
       Validate.notNull(clusterName, "Cluster name should be provided when creating a service");
       Validate.notNull(serviceGroupName, "Service group name should be provided when creating a service");
       Validate.notEmpty(serviceName, "Service name should be provided when creating a service");
       Validate.notEmpty(serviceDisplayName, "Service display name should be provided when creating a service");
+      //Todo Add after UI is ready
+      //Validate.notNull(desiredStackId, "Service display name should be provided when creating a service");
 
       if (LOG.isDebugEnabled()) {
         LOG.debug("Received a createService request, clusterId={}, serviceName={}, request={}", clusterName, serviceName, request);
@@ -1142,13 +1147,24 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
       if (null == desiredRepositoryVersion) {
         Set<Long> repoIds = new HashSet<>();
 
-        for (Service service : cluster.getServices().values()) {
-          RepositoryVersionEntity serviceRepo = service.getDesiredRepositoryVersion();
+        if(desiredStackId != null) {
+          //Todo : How to filter out the right repoversion entity based on the stack id?
+          List<RepositoryVersionEntity> list = repositoryVersionDAO.findByStack(desiredStackId);
+          RepositoryVersionEntity serviceRepo = list.remove(0);
           if (null != serviceRepo.getParentId()) {
             repoIds.add(serviceRepo.getParentId());
           } else {
             repoIds.add(serviceRepo.getId());
           }
+        } else { //Todo : Remove after UI is ready
+          for (Service service : cluster.getServices().values()) {
+            RepositoryVersionEntity serviceRepo = service.getDesiredRepositoryVersion();
+            if (null != serviceRepo.getParentId()) {
+              repoIds.add(serviceRepo.getParentId());
+            } else {
+              repoIds.add(serviceRepo.getId());
+            }
+          }
         }
 
         LOG.info("{} was not specified; the following repository ids were found: {}",
@@ -1175,6 +1191,7 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
       }
 
       StackId stackId = repositoryVersion.getStackId();
+      //StackId stackId = desiredStackId; //Todo Replace after UI is ready
 
       request.setResolvedRepository(repositoryVersion);
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1a076807/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 4b4e43d..ab0e368 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
@@ -172,10 +172,10 @@ public class StackInfo implements Comparable<StackInfo>, Validable {
     return services;
   }
 
-  public ServiceInfo getService(String serviceDisplayName) {
+  public ServiceInfo getService(String serviceName) {
     Collection<ServiceInfo> services = getServices();
     for (ServiceInfo service : services) {
-      if (service.getName().equals(serviceDisplayName)) {
+      if (service.getName().equals(serviceName)) {
         return service;
       }
     }

http://git-wip-us.apache.org/repos/asf/ambari/blob/1a076807/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 57e1160..5af2a86 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
@@ -329,7 +329,7 @@ public class AmbariContext {
     for (String service : services) {
       String credentialStoreEnabled = topology.getBlueprint().getCredentialStoreEnabled(service);
       serviceRequests.add(new ServiceRequest(clusterName, null, service, service,
-              repositoryVersionId, null, credentialStoreEnabled));
+              repositoryVersionId, null, credentialStoreEnabled, null));
 
       for (String component : topology.getBlueprint().getComponents(service)) {
         String recoveryEnabled = topology.getBlueprint().getRecoveryEnabled(service, component);