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/30 19:04:48 UTC
[12/30] ambari git commit: Blueprint V2 data model (benyoka)
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java
new file mode 100644
index 0000000..351351b
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/HostGroupV2Impl.java
@@ -0,0 +1,124 @@
+package org.apache.ambari.server.topology;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.annotation.Nullable;
+
+import org.apache.ambari.server.controller.internal.ProvisionAction;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.google.common.base.Function;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+
+public class HostGroupV2Impl implements HostGroupV2, Configurable {
+
+ private String name;
+ private String blueprintName;
+ private List<ComponentV2> components;
+ private List<ServiceId> services;
+ private Configuration configuration;
+ private String cardinality;
+ private boolean containsMasterComponent;
+
+ public HostGroupV2Impl() { }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String getBlueprintName() {
+ return blueprintName;
+ }
+
+ @Override
+ public String getFullyQualifiedName() {
+ return blueprintName + ":" + name;
+ }
+
+ @Override
+ public Collection<ComponentV2> getComponents() {
+ return components;
+ }
+
+ @Override
+ public Collection<String> getComponentNames() {
+ return getComponentNames(components);
+ }
+
+ private Collection<String> getComponentNames(List<ComponentV2> components) {
+ return Lists.transform(components,
+ new Function<ComponentV2, String>() {
+ @Override public String apply(@Nullable ComponentV2 input) { return input.getName(); }
+ });
+ }
+
+ @Override
+ public Collection<String> getComponentNames(ProvisionAction provisionAction) {
+ List<ComponentV2> filtered =
+ ImmutableList.copyOf(Collections2.filter(components, Predicates.equalTo(provisionAction)));
+ return getComponentNames(filtered);
+ }
+
+ @Override
+ public Collection<ComponentV2> getComponents(ServiceId serviceId) {
+ return components.stream().filter(c -> c.getServiceId().equals(serviceId)).collect(Collectors.toList());
+ }
+
+ @Override
+ public boolean containsMasterComponent() {
+ return containsMasterComponent;
+ }
+
+ @Override
+ @JsonIgnore
+ public Collection<ServiceId> getServices() {
+ return services;
+ }
+
+ @Override
+ @JsonIgnore
+ public Collection<String> getServiceNames() {
+ return services.stream().map(s -> s.getName()).collect(Collectors.toList());
+ }
+
+ @Override
+ public Configuration getConfiguration() {
+ return configuration;
+ }
+
+ @Override
+ public String getCardinality() {
+ return cardinality;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setBlueprintName(String blueprintName) {
+ this.blueprintName = blueprintName;
+ }
+
+ public void setComponents(List<ComponentV2> components) {
+ this.components = components;
+ this.containsMasterComponent = components.stream().anyMatch(c -> c.isMasterComponent());
+ this.services = components.stream().map(c -> c.getServiceId()).collect(Collectors.toList());
+ }
+
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ public void setCardinality(String cardinality) {
+ this.cardinality = cardinality;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositoryVersion.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositoryVersion.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositoryVersion.java
new file mode 100644
index 0000000..8eb6663
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/RepositoryVersion.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distribut
+ * ed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ambari.server.topology;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class RepositoryVersion {
+ @JsonProperty("stack_id")
+ private String stackId;
+
+ @JsonProperty("repository_version")
+ private String repositoryVersion;
+
+ public RepositoryVersion() { }
+
+ public RepositoryVersion(String stackId, String repositoryVersion) {
+ this.stackId = stackId;
+ this.repositoryVersion = repositoryVersion;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ RepositoryVersion that = (RepositoryVersion) o;
+
+ if (stackId != null ? !stackId.equals(that.stackId) : that.stackId != null) return false;
+ return repositoryVersion != null ? repositoryVersion.equals(that.repositoryVersion) : that.repositoryVersion == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = stackId != null ? stackId.hashCode() : 0;
+ result = 31 * result + (repositoryVersion != null ? repositoryVersion.hashCode() : 0);
+ return result;
+ }
+
+ public String getStackId() {
+ return stackId;
+ }
+
+ public void setStackId(String stackId) {
+ this.stackId = stackId;
+ }
+
+ public String getRepositoryVersion() {
+ return repositoryVersion;
+ }
+
+ public void setRepositoryVersion(String repositoryVersion) {
+ this.repositoryVersion = repositoryVersion;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
index 4ff5504..7955169 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/SecurityConfiguration.java
@@ -21,6 +21,9 @@ package org.apache.ambari.server.topology;
import org.apache.ambari.server.state.SecurityType;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
/**
* Holds security related properties, the securityType and security descriptor (in case of KERBEROS
* kerberos_descriptor) either contains the whole descriptor or just the reference to it.
@@ -43,7 +46,9 @@ public class SecurityConfiguration {
*/
private String descriptor;
- public SecurityConfiguration(SecurityType type) {
+
+ @JsonCreator
+ public SecurityConfiguration(@JsonProperty("type") SecurityType type) {
this.type = type;
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
index 1505107..1dde7ea 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/Service.java
@@ -21,45 +21,19 @@ package org.apache.ambari.server.topology;
import java.util.Set;
-import org.apache.ambari.server.controller.internal.StackV2;
+import com.fasterxml.jackson.annotation.JsonProperty;
-public class Service {
+public class Service implements Configurable {
- private final String type;
+ private String type;
- private final String name;
+ private ServiceId id = new ServiceId();
- private final StackV2 stack;
+ private String stackId;
- private final Configuration configuration;
+ private Configuration configuration;
- private final ServiceGroup serviceGroup;
-
- private final Set<Service> dependentServices;
-
- public Service(String type, StackV2 stack, ServiceGroup serviceGroup) {
- this(type, type, stack, serviceGroup, null, null);
- }
-
- /**
- * In case there's no name specified name will be set to type.
- * @param type
- * @param name
- * @param stack
- * @param configuration
- */
- public Service(String type, String name, StackV2 stack, ServiceGroup serviceGroup, Configuration configuration, Set<Service> dependentServices) {
- this.type = type;
- if (name == null) {
- this.name = type;
- } else {
- this.name = name;
- }
- this.stack = stack;
- this.serviceGroup = serviceGroup;
- this.configuration = configuration;
- this.dependentServices = dependentServices;
- }
+ private Set<ServiceId> dependencies;
/**
* Gets the name of this service
@@ -67,26 +41,57 @@ public class Service {
* @return component name
*/
public String getName() {
- return this.name;
+ return this.id.getName();
+ }
+
+ public String getServiceGroup() {
+ return this.id.getServiceGroup();
}
public String getType() {
return type;
}
- public StackV2 getStack() {
- return stack;
+ public String getStackId() {
+ return stackId;
+ }
+
+ public Set<ServiceId> getDependencies() {
+ return dependencies;
}
public Configuration getConfiguration() {
return configuration;
}
- public ServiceGroup getServiceGroup() {
- return serviceGroup;
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void setName(String name) {
+ this.id.setName(name);
}
- public Set<Service> getDependentServices() {
- return dependentServices;
+ public void setServiceGroup(String serviceGroup) {
+ this.id.setServiceGroup(serviceGroup);
}
+
+ @JsonProperty("stack_id")
+ public void setStackId(String stackId) {
+ this.stackId = stackId;
+ }
+
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ public void setDependencies(Set<ServiceId> dependencies) {
+ this.dependencies = dependencies;
+ }
+
+ public ServiceId getId() {
+ return id;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceGroup.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceGroup.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceGroup.java
index 4b59293..13967c0 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceGroup.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceGroup.java
@@ -19,29 +19,22 @@
package org.apache.ambari.server.topology;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Set;
public class ServiceGroup {
- private final String name;
+ private String name = null;
- private final Collection<Service> services;
+ private Collection<Service> services = new ArrayList<>();
- private final Configuration configuration;
+ private Configuration configuration = null;
- private final Set<ServiceGroup> dependencies;
+ private Set<String> dependencies = new HashSet<>();
- public ServiceGroup(String name, Collection<Service> services) {
- this(name, services, null, null);
- }
-
- public ServiceGroup(String name, Collection<Service> services, Configuration configuration, Set<ServiceGroup> dependencies) {
- this.name = name;
- this.services = services;
- this.configuration = configuration;
- this.dependencies = dependencies;
- }
+ public ServiceGroup() { }
/**
* Gets the name of this service group
@@ -52,7 +45,6 @@ public class ServiceGroup {
return this.name;
}
-
public Collection<Service> getServices() {
return services;
}
@@ -61,8 +53,26 @@ public class ServiceGroup {
return configuration;
}
- public Set<ServiceGroup> getDependencies() {
+ public Set<String> getDependencies() {
return dependencies;
}
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setServices(Collection<Service> services) {
+ this.services = services;
+ services.forEach(s -> s.setServiceGroup(this.name));
+ }
+
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ public void setDependencies(Set<String> dependencies) {
+ this.dependencies = dependencies;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceId.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceId.java b/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceId.java
new file mode 100644
index 0000000..2aae1d3
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/topology/ServiceId.java
@@ -0,0 +1,52 @@
+package org.apache.ambari.server.topology;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ServiceId {
+ private String serviceGroup;
+ private String name;
+
+ public static ServiceId of(String name, String serviceGroup) {
+ ServiceId id = new ServiceId();
+ id.name = name;
+ id.serviceGroup = serviceGroup;
+ return id;
+ }
+
+ public String getServiceGroup() {
+ return serviceGroup;
+ }
+
+ @JsonProperty("service_group")
+ public void setServiceGroup(String serviceGroup) {
+ this.serviceGroup = serviceGroup;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @JsonProperty("service_name")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ ServiceId serviceId = (ServiceId) o;
+
+ if (serviceGroup != null ? !serviceGroup.equals(serviceId.serviceGroup) : serviceId.serviceGroup != null)
+ return false;
+ return name != null ? name.equals(serviceId.name) : serviceId.name == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = serviceGroup != null ? serviceGroup.hashCode() : 0;
+ result = 31 * result + (name != null ? name.hashCode() : 0);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/f82497d4/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/BlueprintImplV2Test.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/BlueprintImplV2Test.java b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/BlueprintImplV2Test.java
new file mode 100644
index 0000000..dbe269a
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/topology/validators/BlueprintImplV2Test.java
@@ -0,0 +1,9 @@
+package org.apache.ambari.server.topology.validators;
+
+public class BlueprintImplV2Test {
+
+ private static final String BLUEPRINT_LOCATION = "";
+
+
+
+}