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 2018/09/28 21:20:47 UTC
[ambari] 16/20: AMBARI-22979: Update software registry API to
support new mpack schema (jluniya) (#433)
This is an automated email from the ASF dual-hosted git repository.
mradhakrishnan pushed a commit to branch AMBARI-24711
in repository https://gitbox.apache.org/repos/asf/ambari.git
commit a77b2f93bc260e1513cd247079c6bcec70ed0382
Author: jayush <ja...@gmail.com>
AuthorDate: Thu Feb 22 10:49:13 2018 -0800
AMBARI-22979: Update software registry API to support new mpack schema (jluniya) (#433)
---
.../api/resources/MpackResourceDefinition.java | 2 +-
.../ambari/server/api/services/MpacksService.java | 24 ++---
.../ambari/server/controller/MpackRequest.java | 24 ++---
.../ambari/server/controller/MpackResponse.java | 75 +++++++------
.../controller/internal/MpackResourceProvider.java | 51 +++++----
.../apache/ambari/server/mpack/MpackManager.java | 61 +++++------
.../org/apache/ambari/server/orm/dao/MpackDAO.java | 14 +--
.../ambari/server/orm/entities/MpackEntity.java | 20 ++--
.../java/org/apache/ambari/server/state/Mpack.java | 117 +++++++--------------
.../apache/ambari/server/utils/MpackVersion.java | 83 ++++++++++++---
.../apache/ambari/server/utils/VersionUtils.java | 13 ++-
.../AmbariManagementControllerImplTest.java | 2 +-
.../ambari/server/controller/MpackRequestTest.java | 4 +-
.../server/controller/MpackResponseTest.java | 8 +-
.../internal/MpackResourceProviderTest.java | 20 ++--
.../apache/ambari/server/orm/dao/MpackDAOTest.java | 4 +-
.../server/orm/entities/MpackEntityTest.java | 6 +-
.../org/apache/ambari/server/state/MpackTest.java | 4 +-
.../ambari/server/utils/TestVersionUtils.java | 32 +++++-
19 files changed, 309 insertions(+), 255 deletions(-)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
index c9560ab..3875135 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/MpackResourceDefinition.java
@@ -86,7 +86,7 @@ public class MpackResourceDefinition extends BaseResourceDefinition {
Map<String, Object> mpackInfo = mapInfo.get("MpackInfo");
int idx = href.indexOf("stacks/");
- Long mpackId = (Long)mpackInfo.get("mpack_id");
+ Long mpackId = (Long)mpackInfo.get("id");
href = href.substring(0, idx) + "mpacks/" + mpackId;
resultNode.setProperty("href", href);
} else {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpacksService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpacksService.java
index c69ed01..4694841 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpacksService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpacksService.java
@@ -79,7 +79,7 @@ public class MpacksService extends BaseService {
response = MpackResponseWrapper.class, responseContainer = RESPONSE_CONTAINER_LIST)
@ApiImplicitParams({
@ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, dataType = DATA_TYPE_STRING,
- paramType = PARAM_TYPE_QUERY, defaultValue = MpackResourceProvider.MPACK_ID),
+ paramType = PARAM_TYPE_QUERY, defaultValue = MpackResourceProvider.MPACK_RESOURCE_ID),
@ApiImplicitParam(name = QUERY_SORT, value = QUERY_SORT_DESCRIPTION, dataType = DATA_TYPE_STRING,
paramType = PARAM_TYPE_QUERY),
@ApiImplicitParam(name = QUERY_PAGE_SIZE, value = QUERY_PAGE_SIZE_DESCRIPTION, defaultValue = DEFAULT_PAGE_SIZE,
@@ -129,13 +129,13 @@ public class MpacksService extends BaseService {
}
/***
- * Handles: GET /mpacks/{mpack_id}
- * Return a specific mpack given an mpack_id
+ * Handles: GET /mpacks/{id}
+ * Return a specific mpack given an id
*
* @param
*/
@GET
- @Path("{mpack_id}")
+ @Path("{id}")
@Produces(MediaType.TEXT_PLAIN)
@ApiOperation(value = "Returns information about a specific mpack that is registered with this Ambari instance",
response = MpackResponseWrapper.class)
@@ -151,14 +151,14 @@ public class MpacksService extends BaseService {
@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
})
public Response getMpack(String body, @Context HttpHeaders headers, @Context UriInfo ui,
- @PathParam("mpack_id") String mpackId) {
+ @PathParam("id") String id) {
return handleRequest(headers, body, ui, Request.Type.GET,
- createMpackResource(mpackId));
+ createMpackResource(id));
}
@DELETE
- @Path("{mpack_id}")
+ @Path("{id}")
@Produces(MediaType.TEXT_PLAIN)
@ApiOperation(value = "Deletes a selected management pack")
@ApiImplicitParams({
@@ -172,19 +172,19 @@ public class MpacksService extends BaseService {
@ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
})
- public Response deleteMpack(String body, @Context HttpHeaders headers, @Context UriInfo ui, @PathParam("mpack_id") String mpackId) {
+ public Response deleteMpack(String body, @Context HttpHeaders headers, @Context UriInfo ui, @PathParam("id") String id) {
return handleRequest(headers, body, ui, Request.Type.DELETE,
- createMpackResource(mpackId));
+ createMpackResource(id));
}
/**
* Create an mpack resource instance
- * @param mpackId
+ * @param id
* @return ResourceInstance
*/
- private ResourceInstance createMpackResource(String mpackId) {
+ private ResourceInstance createMpackResource(String id) {
return createResource(Resource.Type.Mpack,
- Collections.singletonMap(Resource.Type.Mpack, mpackId));
+ Collections.singletonMap(Resource.Type.Mpack, id));
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackRequest.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackRequest.java
index a705d18..49d0caa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackRequest.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackRequest.java
@@ -26,25 +26,25 @@ import org.apache.ambari.server.orm.entities.MpackEntity;
*/
public class MpackRequest {
- private Long mpackId;
+ private Long id;
+ private Long registryId;
private String mpackName;
private String mpackVersion;
private String mpackUri;
- private Long registryId;
- public MpackRequest(Long mpackId) {
- this.setMpackId(mpackId);
+ public MpackRequest(Long id) {
+ this.setId(id);
}
public MpackRequest() {
}
- public Long getMpackId() {
- return mpackId;
+ public Long getId() {
+ return id;
}
- public void setMpackId(Long mpackId) {
- this.mpackId = mpackId;
+ public void setId(Long id) {
+ this.id = id;
}
public String getMpackName() {
@@ -82,7 +82,7 @@ public class MpackRequest {
@Override
public int hashCode() {
int result = 1;
- result = 31 + getMpackId().hashCode();
+ result = 31 + getId().hashCode();
return result;
}
@@ -96,11 +96,11 @@ public class MpackRequest {
}
MpackRequest mpackRequest = (MpackRequest) obj;
- if (mpackId == null) {
- if (mpackRequest.mpackId != null) {
+ if (id == null) {
+ if (mpackRequest.id != null) {
return false;
}
- } else if (!mpackId.equals(mpackRequest.mpackId)) {
+ } else if (!id.equals(mpackRequest.id)) {
return false;
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackResponse.java
index 7d44c76..bc1e47d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackResponse.java
@@ -28,86 +28,93 @@ import io.swagger.annotations.ApiModelProperty;
*/
public class MpackResponse {
- private Long mpackId;
- private String mpackVersion;
+ private Long id;
+ private String mpackId;
private String mpackName;
+ private String mpackVersion;
private String mpackUri;
private Long registryId;
private String stackId;
private String description;
public MpackResponse(Mpack mpack) {
+ this.id = mpack.getResourceId();
this.mpackId = mpack.getMpackId();
- this.mpackVersion = mpack.getVersion();
- this.mpackUri = mpack.getMpacksUri();
this.mpackName = mpack.getName();
+ this.mpackVersion = mpack.getVersion();
+ this.mpackUri = mpack.getMpackUri();
this.registryId = mpack.getRegistryId();
- this.stackId = mpack.getStackId();
this.description = mpack.getDescription();
}
- public String getMpackVersion() {
- return mpackVersion;
+ public Long getId() {
+ return id;
}
- public String getMpackUri() {
- return mpackUri;
+ public void setId(Long id) {
+ this.id = id;
}
- public Long getMpackId() {
- return mpackId;
+ public Long getRegistryId() {
+ return registryId;
}
- public String getStackId() {
- return stackId;
+ public void setRegistryId(Long registryId) {
+ this.registryId = registryId;
}
- public void setStackId(String stackId) {
- this.stackId = stackId;
+ public String getMpackId() {
+ return mpackId;
+ }
+
+ public void setMpackId(String mpackId) {
+ this.mpackId = mpackId;
}
public String getMpackName() {
return mpackName;
}
- public Long getRegistryId() {
- return registryId;
+ public void setMpackName(String mpackName) {
+ this.mpackName = mpackName;
}
- public void setMpackVersion(String mpackVersion) {
- this.mpackVersion = mpackVersion;
+ public String getDescription() {
+ return description;
}
- public void setMpackName(String mpackName) {
- this.mpackName = mpackName;
+ public void setDescription(String description) {
+ this.description = description;
}
- public void setMpackUri(String mpackUri) {
- this.mpackUri = mpackUri;
+ public String getMpackVersion() {
+ return mpackVersion;
}
- public void setRegistryId(Long registryId) {
- this.registryId = registryId;
+ public void setMpackVersion(String mpackVersion) {
+ this.mpackVersion = mpackVersion;
}
- public void setMpackId(Long mpackId) {
- this.mpackId = mpackId;
+ public String getMpackUri() {
+ return mpackUri;
}
-
- public String getDescription() {
- return description;
+ public void setMpackUri(String mpackUri) {
+ this.mpackUri = mpackUri;
}
- public void setDescription(String description) {
- this.description = description;
+ public String getStackId() {
+ return stackId;
}
+ public void setStackId(String stackId) {
+ this.stackId = stackId;
+ }
@Override
public int hashCode() {
int result = 1;
- result = 31 + getMpackId().hashCode();
+ result = 31 + getId().hashCode();
return result;
}
@@ -120,7 +127,7 @@ public class MpackResponse {
return true;
}
MpackResponse MpackResponse = (MpackResponse) obj;
- return getMpackId().equals(MpackResponse.getMpackId());
+ return getId().equals(MpackResponse.getId());
}
public interface MpackResponseWrapper extends ApiModel {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
index 3771258..3169eda 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
@@ -69,19 +69,20 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
public static final String RESPONSE_KEY = "MpackInfo";
public static final String ALL_PROPERTIES = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "*";
- public static final String MPACK_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_id";
+ public static final String MPACK_RESOURCE_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "id";
public static final String REGISTRY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "registry_id";
+ public static final String MPACK_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_id";
public static final String MPACK_NAME = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_name";
public static final String MPACK_VERSION = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_version";
+ public static final String MPACK_DESCRIPTION = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_description";
public static final String MPACK_URI = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_uri";
public static final String MODULES = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "modules";
- public static final String MPACK_DESC = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "description";
public static final String STACK_NAME_PROPERTY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stack_name";
public static final String STACK_VERSION_PROPERTY_ID =
RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "stack_version";
private static Set<String> pkPropertyIds = new HashSet<>(
- Arrays.asList(MPACK_ID, STACK_NAME_PROPERTY_ID, STACK_VERSION_PROPERTY_ID));
+ Arrays.asList(MPACK_RESOURCE_ID, STACK_NAME_PROPERTY_ID, STACK_VERSION_PROPERTY_ID));
/**
* The property ids for an mpack resource.
@@ -104,18 +105,19 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
static {
// properties
- PROPERTY_IDS.add(MPACK_ID);
+ PROPERTY_IDS.add(MPACK_RESOURCE_ID);
PROPERTY_IDS.add(REGISTRY_ID);
+ PROPERTY_IDS.add(MPACK_ID);
PROPERTY_IDS.add(MPACK_NAME);
PROPERTY_IDS.add(MPACK_VERSION);
PROPERTY_IDS.add(MPACK_URI);
- PROPERTY_IDS.add(MPACK_DESC);
+ PROPERTY_IDS.add(MPACK_DESCRIPTION);
PROPERTY_IDS.add(MODULES);
PROPERTY_IDS.add(STACK_NAME_PROPERTY_ID);
PROPERTY_IDS.add(STACK_VERSION_PROPERTY_ID);
// keys
- KEY_PROPERTY_IDS.put(Resource.Type.Mpack, MPACK_ID);
+ KEY_PROPERTY_IDS.put(Resource.Type.Mpack, MPACK_RESOURCE_ID);
KEY_PROPERTY_IDS.put(Resource.Type.Stack, STACK_NAME_PROPERTY_ID);
KEY_PROPERTY_IDS.put(Resource.Type.StackVersion, STACK_VERSION_PROPERTY_ID);
@@ -145,11 +147,12 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
if (response != null) {
notifyCreate(Resource.Type.Mpack, request);
Resource resource = new ResourceImpl(Resource.Type.Mpack);
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
resource.setProperty(MPACK_ID, response.getMpackId());
resource.setProperty(MPACK_NAME, response.getMpackName());
resource.setProperty(MPACK_VERSION, response.getMpackVersion());
resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESC, response.getDescription());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
resource.setProperty(REGISTRY_ID, response.getRegistryId());
associatedResources.add(resource);
return getRequestStatus(null, associatedResources);
@@ -199,22 +202,23 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
Set<Map<String, Object>> properties = request.getProperties();
for (Map propertyMap : properties) {
//Mpack Download url is either given in the request body or is fetched using the registry id
- if (!propertyMap.containsKey(MPACK_URI) && !propertyMap.containsKey(REGISTRY_ID))
+ if (!propertyMap.containsKey(MPACK_URI) && !propertyMap.containsKey(REGISTRY_ID)) {
return null;
- //Fetch Mpack Download Url using the given registry id
- else if (!propertyMap.containsKey(MPACK_URI)) {
+ } else if (!propertyMap.containsKey(MPACK_URI)) {
+ // Retrieve mpack download url using the given registry id
mpackRequest.setRegistryId(Long.valueOf((String) propertyMap.get(REGISTRY_ID)));
mpackRequest.setMpackName((String) propertyMap.get(MPACK_NAME));
mpackRequest.setMpackVersion((String) propertyMap.get(MPACK_VERSION));
}
- //Directly download the mpack using the given url
- else
+ else {
+ //Directly download the mpack using the given url
mpackRequest.setMpackUri((String) propertyMap.get(MPACK_URI));
+ }
}
return mpackRequest;
-
}
+
@Override
public Set<Resource> getResources(Request request, Predicate predicate)
throws SystemException, UnsupportedPropertyException,
@@ -231,11 +235,12 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
}
for (MpackResponse response : responses){
Resource resource = new ResourceImpl(Resource.Type.Mpack);
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
resource.setProperty(MPACK_ID, response.getMpackId());
resource.setProperty(MPACK_NAME, response.getMpackName());
resource.setProperty(MPACK_VERSION, response.getMpackVersion());
resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESC, response.getDescription());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
resource.setProperty(REGISTRY_ID, response.getRegistryId());
results.add(resource);
}
@@ -251,11 +256,12 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
MpackResponse response = getManagementController().getMpack(mpackId);
Resource resource = new ResourceImpl(Resource.Type.Mpack);
if (null != response) {
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
resource.setProperty(MPACK_ID, response.getMpackId());
resource.setProperty(MPACK_NAME, response.getMpackName());
resource.setProperty(MPACK_VERSION, response.getMpackVersion());
resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESC, response.getDescription());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
resource.setProperty(REGISTRY_ID, response.getRegistryId());
resource.setProperty(STACK_NAME_PROPERTY_ID, stackName);
resource.setProperty(STACK_VERSION_PROPERTY_ID, stackVersion);
@@ -265,21 +271,22 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
return results;
}
- if (propertyMap.containsKey(MPACK_ID)) {
- Object objMpackId = propertyMap.get(MPACK_ID);
- if(objMpackId != null)
+ if (propertyMap.containsKey(MPACK_RESOURCE_ID)) {
+ Object objMpackId = propertyMap.get(MPACK_RESOURCE_ID);
+ if (objMpackId != null)
mpackId = Long.valueOf((String) objMpackId);
MpackResponse response = getManagementController().getMpack(mpackId);
Resource resource = new ResourceImpl(Resource.Type.Mpack);
if (null != response) {
+ resource.setProperty(MPACK_RESOURCE_ID, response.getId());
resource.setProperty(MPACK_ID, response.getMpackId());
resource.setProperty(MPACK_NAME, response.getMpackName());
resource.setProperty(MPACK_VERSION, response.getMpackVersion());
resource.setProperty(MPACK_URI, response.getMpackUri());
- resource.setProperty(MPACK_DESC, response.getDescription());
+ resource.setProperty(MPACK_DESCRIPTION, response.getDescription());
resource.setProperty(REGISTRY_ID, response.getRegistryId());
- List<Module> modules = getManagementController().getModules(response.getMpackId());
+ List<Module> modules = getManagementController().getModules(response.getId());
resource.setProperty(MODULES, modules);
results.add(resource);
}
@@ -307,8 +314,8 @@ public class MpackResourceProvider extends AbstractControllerResourceProvider {
if (getManagementController().getClusters().getClusters().size() > 0) {
throw new SystemException("Delete request cannot be completed since there is a cluster deployed");
} else {
- if (propertyMap.containsKey(MPACK_ID)) {
- Object objMpackId = propertyMap.get(MPACK_ID);
+ if (propertyMap.containsKey(MPACK_RESOURCE_ID)) {
+ Object objMpackId = propertyMap.get(MPACK_RESOURCE_ID);
if (objMpackId != null) {
mpackId = Long.valueOf((String) objMpackId);
LOG.info("Deleting Mpack, id = " + mpackId.toString());
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/mpack/MpackManager.java b/ambari-server/src/main/java/org/apache/ambari/server/mpack/MpackManager.java
index 29b59b3..123b587 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/mpack/MpackManager.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/mpack/MpackManager.java
@@ -126,9 +126,10 @@ public class MpackManager {
"UTF-8");
Gson gson = new Gson();
Mpack existingMpack = gson.fromJson(mpackJsonContents, Mpack.class);
- existingMpack.setMpackId(mpackEntity.getMpackId());
- existingMpack.setMpacksUri(mpackEntity.getMpackUri());
- mpackMap.put(mpackEntity.getMpackId(), existingMpack);
+ existingMpack.setResourceId(mpackEntity.getId());
+ existingMpack.setMpackUri(mpackEntity.getMpackUri());
+ existingMpack.setRegistryId(mpackEntity.getRegistryId());
+ mpackMap.put(mpackEntity.getId(), existingMpack);
}
}
}
@@ -163,7 +164,7 @@ public class MpackManager {
public MpackResponse registerMpack(MpackRequest mpackRequest)
throws IOException, IllegalArgumentException, ResourceAlreadyExistsException {
- Long mpackId;
+ Long mpackResourceId;
String mpackName = "";
String mpackVersion = "";
mpack = new Mpack();
@@ -175,27 +176,25 @@ public class MpackManager {
if (mpackRequest.getRegistryId() != null) {
mpackName = mpackRequest.getMpackName();
mpackVersion = mpackRequest.getMpackVersion();
- mpack.setRegistryId(mpackRequest.getRegistryId());
LOG.info("Mpack Registration via Registry :" + mpackName);
mpack = downloadMpackMetadata(mpackRequest.getMpackUri());
+ mpack.setRegistryId(mpackRequest.getRegistryId());
isValidMetadata = validateMpackInfo(mpackName, mpackVersion, mpack.getName(), mpack.getVersion());
if (isValidMetadata) {
mpackTarPath = downloadMpack(mpackRequest.getMpackUri(), mpack.getDefinition());
createMpackDirectory(mpack);
mpackDirectory = mpackStaging + File.separator + mpack.getName() + File.separator + mpack.getVersion();
+ } else {
+ String message =
+ "Incorrect information : Mismatch in - (" + mpackName + "," + mpack.getName() + ") or (" + mpackVersion
+ + "," + mpack.getVersion() + ")";
+ throw new IllegalArgumentException(message); //Mismatch in information
}
- else {
- String message =
- "Incorrect information : Mismatch in - (" + mpackName + "," + mpack.getName() + ") or (" + mpackVersion
- + "," + mpack.getVersion() + ")";
- throw new IllegalArgumentException(message); //Mismatch in information
- }
- }
- //Mpack registration using direct download
- else {
+ } else {
+ // Mpack registration using direct download
mpack = downloadMpackMetadata(mpackRequest.getMpackUri());
mpackTarPath = downloadMpack(mpackRequest.getMpackUri(), mpack.getDefinition());
@@ -208,13 +207,14 @@ public class MpackManager {
}
}
extractMpackTar(mpack, mpackTarPath, mpackDirectory);
- mpackId = populateDB(mpack);
-
- if (mpackId != null) {
- mpackMap.put(mpackId, mpack);
- mpack.setMpackId(mpackId);
- if (populateStackDB(mpack))
- return new MpackResponse(mpack);
+ mpack.setMpackUri(mpackRequest.getMpackUri());
+ mpackResourceId = populateDB(mpack);
+
+ if (mpackResourceId != null) {
+ mpackMap.put(mpackResourceId, mpack);
+ mpack.setResourceId(mpackResourceId);
+ populateStackDB(mpack);
+ return new MpackResponse(mpack);
}
String message = "Mpack :" + mpackRequest.getMpackName() + " version: " + mpackRequest.getMpackVersion()
+ " already exists in server";
@@ -476,9 +476,8 @@ public class MpackManager {
String actualMpackName,
String actualMpackVersion) {
- String strippedActualMpackVersion = actualMpackVersion.substring(0, actualMpackVersion.lastIndexOf('.'));
if (expectedMpackName.equalsIgnoreCase(actualMpackName) && expectedMpackVersion
- .equalsIgnoreCase(strippedActualMpackVersion)) {
+ .equalsIgnoreCase(actualMpackVersion)) {
return true;
} else {
LOG.info("Incorrect information : Mismatch in - (" + expectedMpackName + "," + actualMpackName + ") or ("
@@ -504,7 +503,7 @@ public class MpackManager {
MpackEntity mpackEntity = new MpackEntity();
mpackEntity.setMpackName(mpackName);
mpackEntity.setMpackVersion(mpackVersion);
- mpackEntity.setMpackUri(mpack.getMpacksUri());
+ mpackEntity.setMpackUri(mpack.getMpackUri());
mpackEntity.setRegistryId(mpack.getRegistryId());
Long mpackId = mpackDAO.create(mpackEntity);
return mpackId;
@@ -520,7 +519,7 @@ public class MpackManager {
* @param mpack
* @throws IOException
*/
- protected boolean populateStackDB(Mpack mpack) throws IOException {
+ protected void populateStackDB(Mpack mpack) throws IOException, ResourceAlreadyExistsException {
String stackName = mpack.getName();
String stackVersion = mpack.getVersion();
StackEntity stackEntity = stackDAO.find(stackName, stackVersion);
@@ -529,14 +528,12 @@ public class MpackManager {
stackEntity = new StackEntity();
stackEntity.setStackName(stackName);
stackEntity.setStackVersion(stackVersion);
-
- stackEntity.setMpackId(mpack.getMpackId());
+ stackEntity.setMpackId(mpack.getResourceId());
stackDAO.create(stackEntity);
- return true;
} else {
- LOG.error("Stack {}-{} already exists in the database", stackName, stackVersion);
- return false;
-
+ String message = "Stack " + stackName + "-" + stackVersion + " already exists";
+ LOG.error(message);
+ throw new ResourceAlreadyExistsException(message);
}
}
@@ -568,7 +565,7 @@ public class MpackManager {
LOG.info("Removing mpack :" + mpackName);
- mpackMap.remove(mpackEntity.getMpackId());
+ mpackMap.remove(mpackEntity.getId());
FileUtils.deleteDirectory(mpackDirToDelete);
if (mpackDirectory.isDirectory()) {
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/MpackDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/MpackDAO.java
index fb4e101..d0068c2 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/MpackDAO.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/MpackDAO.java
@@ -53,19 +53,19 @@ public class MpackDAO {
@Transactional
public Long create(MpackEntity mpackEntity) {
m_entityManagerProvider.get().persist(mpackEntity);
- return mpackEntity.getMpackId();
+ return mpackEntity.getId();
}
/**
* Gets an mpack with the specified ID.
*
- * @param mpackId
- * the ID of the alert to retrieve.
+ * @param id
+ * the ID of the mpack to retrieve.
* @return the mpack or {@code null} if none exists.
*/
@RequiresSession
- public MpackEntity findById(long mpackId) {
- return m_entityManagerProvider.get().find(MpackEntity.class, mpackId);
+ public MpackEntity findById(long id) {
+ return m_entityManagerProvider.get().find(MpackEntity.class, id);
}
/**
@@ -96,8 +96,8 @@ public class MpackDAO {
}
@Transactional
- public void removeById(Long mpackId) {
- m_entityManagerProvider.get().remove(findById(mpackId));
+ public void removeById(Long id) {
+ m_entityManagerProvider.get().remove(findById(id));
}
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/MpackEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/MpackEntity.java
index ed5aa6e..d555f91 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/MpackEntity.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/MpackEntity.java
@@ -40,7 +40,7 @@ import java.util.Objects;
@Entity
@TableGenerator(name = "mpack_id_generator", table = "ambari_sequences", pkColumnName = "sequence_name", valueColumnName = "sequence_value", pkColumnValue = "mpack_id_seq", initialValue = 1)
@NamedQueries({
- @NamedQuery(name = "MpackEntity.findById", query = "SELECT mpack FROM MpackEntity mpack where mpack.mpackId = :mpackId"),
+ @NamedQuery(name = "MpackEntity.findById", query = "SELECT mpack FROM MpackEntity mpack where mpack.id = :id"),
@NamedQuery(name = "MpackEntity.findAll", query = "SELECT mpack FROM MpackEntity mpack"),
@NamedQuery(name = "MpackEntity.findByNameVersion", query = "SELECT mpack FROM MpackEntity mpack where mpack.mpackName = :mpackName and mpack.mpackVersion = :mpackVersion")})
@@ -49,7 +49,7 @@ public class MpackEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "mpack_id_generator")
@Column(name = "id", nullable = false, updatable = false)
- private Long mpackId;
+ private Long id;
@Column(name = "registry_id", nullable = true, insertable = true, updatable = false, length = 10)
private Long registryId;
@@ -63,8 +63,8 @@ public class MpackEntity {
@Column(name = "mpack_uri", nullable = false)
private String mpackUri;
- public Long getMpackId() {
- return mpackId;
+ public Long getId() {
+ return id;
}
public Long getRegistryId() {
@@ -83,8 +83,8 @@ public class MpackEntity {
return mpackUri;
}
- public void setMpackId(Long mpackId) {
- this.mpackId = mpackId;
+ public void setId(Long id) {
+ this.id = id;
}
public void setRegistryId(Long registryId) {
@@ -120,7 +120,7 @@ public class MpackEntity {
MpackEntity that = (MpackEntity) object;
EqualsBuilder equalsBuilder = new EqualsBuilder();
- equalsBuilder.append(mpackId, that.mpackId);
+ equalsBuilder.append(id, that.id);
equalsBuilder.append(mpackName, that.mpackName);
equalsBuilder.append(mpackVersion, that.mpackVersion);
return equalsBuilder.isEquals();
@@ -129,7 +129,7 @@ public class MpackEntity {
/**
* Generates a hash for the mpack based on the following criteria:
* <ul>
- * <li>{@link #mpackId}
+ * <li>{@link #id}
* </ul>
* <p/>
* <p/>
@@ -137,7 +137,7 @@ public class MpackEntity {
*/
@Override
public int hashCode() {
- return Objects.hash(mpackId, mpackName, mpackVersion);
+ return Objects.hash(id, mpackName, mpackVersion);
}
/**
@@ -146,7 +146,7 @@ public class MpackEntity {
@Override
public String toString() {
StringBuilder buffer = new StringBuilder("MpackEntity{");
- buffer.append("mpackId=").append(mpackId);
+ buffer.append("id=").append(id);
if (null != registryId) {
buffer.append(", registryId=").append(registryId);
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/Mpack.java b/ambari-server/src/main/java/org/apache/ambari/server/state/Mpack.java
index 1bdd394..233cd95 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/Mpack.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/Mpack.java
@@ -27,18 +27,25 @@ import java.util.List;
*/
public class Mpack {
- private Long mpackId;
+ /**
+ * Mpack DB Id
+ */
+ private Long resourceId;
private Long registryId;
+ /**
+ * Mpack id as defined in mpack.json
+ */
+ @SerializedName("id")
+ private String mpackId;
+
@SerializedName("name")
private String name;
@SerializedName("version")
private String version;
- @SerializedName("artifacts-path")
- private String artifactsPath;
@SerializedName("prerequisites")
private HashMap<String, String> prerequisites;
@@ -46,15 +53,6 @@ public class Mpack {
@SerializedName("modules")
private List<Module> modules;
- @SerializedName("modules-path")
- private String modulesPath;
-
- @SerializedName("mpack-path")
- private String mpackPath;
-
- @SerializedName("stack-id")
- private String stackId;
-
@SerializedName("definition")
private String definition;
@@ -63,12 +61,12 @@ public class Mpack {
private String mpackUri;
- public Long getMpackId() {
- return mpackId;
+ public Long getResourceId() {
+ return resourceId;
}
- public void setMpackId(Long mpackId) {
- this.mpackId = mpackId;
+ public void setResourceId(Long resourceId) {
+ this.resourceId = resourceId;
}
public Long getRegistryId() {
@@ -79,12 +77,20 @@ public class Mpack {
this.registryId = registryId;
}
- public String getMpacksUri() {
+ public String getMpackUri() {
return mpackUri;
}
- public void setMpacksUri(String mpacksUri) {
- this.mpackUri = mpacksUri;
+ public void setMpackUri(String mpackUri) {
+ this.mpackUri = mpackUri;
+ }
+
+ public String getMpackId() {
+ return mpackId;
+ }
+
+ public void setMpackId(String mpackId) {
+ this.mpackId = mpackId;
}
public String getName() {
@@ -127,39 +133,6 @@ public class Mpack {
this.modules = modules;
}
- public String getStackId() {
- return stackId;
- }
-
- public void setStackId(String stackId) {
- this.stackId = stackId;
- }
-
-
- public String getArtifactsPath() {
- return artifactsPath;
- }
-
- public void setArtifactsPath(String artifactsPath) {
- this.artifactsPath = artifactsPath;
- }
-
- public String getModulesPath() {
- return modulesPath;
- }
-
- public void setModulesPath(String modulesPath) {
- this.modulesPath = modulesPath;
- }
-
- public String getMpackPath() {
- return mpackPath;
- }
-
- public void setMpackPath(String mpackPath) {
- this.mpackPath = mpackPath;
- }
-
public String getDefinition() {
return definition;
}
@@ -175,16 +148,13 @@ public class Mpack {
Mpack mpack = (Mpack) o;
- if (!mpackId.equals(mpack.mpackId)) return false;
+ if (!resourceId.equals(mpack.resourceId)) return false;
if (registryId != null ? !registryId.equals(mpack.registryId) : mpack.registryId != null) return false;
+ if (!mpackId.equals(mpack.mpackId)) return false;
if (!name.equals(mpack.name)) return false;
if (!version.equals(mpack.version)) return false;
- if (!artifactsPath.equals(mpack.artifactsPath)) return false;
if (!prerequisites.equals(mpack.prerequisites)) return false;
if (!modules.equals(mpack.modules)) return false;
- if (!modulesPath.equals(mpack.modulesPath)) return false;
- if (!mpackPath.equals(mpack.mpackPath)) return false;
- if (!stackId.equals(mpack.stackId)) return false;
if (!definition.equals(mpack.definition)) return false;
if (!description.equals(mpack.description)) return false;
return mpackUri.equals(mpack.mpackUri);
@@ -192,16 +162,13 @@ public class Mpack {
@Override
public int hashCode() {
- int result = mpackId.hashCode();
+ int result = resourceId.hashCode();
result = 31 * result + (registryId != null ? registryId.hashCode() : 0);
+ result = 31 * result + mpackId.hashCode();
result = 31 * result + name.hashCode();
result = 31 * result + version.hashCode();
- result = 31 * result + artifactsPath.hashCode();
result = 31 * result + prerequisites.hashCode();
result = 31 * result + modules.hashCode();
- result = 31 * result + modulesPath.hashCode();
- result = 31 * result + mpackPath.hashCode();
- result = 31 * result + stackId.hashCode();
result = 31 * result + definition.hashCode();
result = 31 * result + description.hashCode();
result = 31 * result + mpackUri.hashCode();
@@ -211,16 +178,13 @@ public class Mpack {
@Override
public String toString() {
return "Mpack{" +
- "mpackId=" + mpackId +
+ "id=" + resourceId +
", registryId=" + registryId +
+ ", mpackId='" + mpackId + '\'' +
", name='" + name + '\'' +
", version='" + version + '\'' +
- ", artifactsPath='" + artifactsPath + '\'' +
", prerequisites=" + prerequisites +
", modules=" + modules +
- ", modulesPath='" + modulesPath + '\'' +
- ", mpackPath='" + mpackPath + '\'' +
- ", stackId='" + stackId + '\'' +
", definition='" + definition + '\'' +
", description='" + description + '\'' +
", mpackUri='" + mpackUri + '\'' +
@@ -228,15 +192,17 @@ public class Mpack {
}
public void copyFrom(Mpack mpack) {
- if (this.name == null)
+ if (this.resourceId == null) {
+ this.resourceId = mpack.getResourceId();
+ }
+ if (this.name == null) {
this.name = mpack.getName();
if (this.mpackId == null)
this.mpackId = mpack.getMpackId();
if (this.version == null)
this.version = mpack.getVersion();
- if (this.stackId == null) {
- this.stackId = mpack.getStackId();
- if (this.registryId == null)
+ }
+ if (this.registryId == null) {
this.registryId = mpack.getRegistryId();
if (this.description == null)
this.description = mpack.getDescription();
@@ -244,18 +210,9 @@ public class Mpack {
if (this.modules == null) {
this.modules = mpack.getModules();
}
- if (this.artifactsPath == null) {
- this.artifactsPath = mpack.getArtifactsPath();
- }
if (this.prerequisites == null) {
this.prerequisites = mpack.getPrerequisites();
}
- if (this.modulesPath == null) {
- this.modulesPath = mpack.getModulesPath();
- }
- if (this.mpackPath == null) {
- this.mpackPath = mpack.getMpackPath();
- }
if (this.definition == null) {
this.definition = mpack.getDefinition();
}
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
index ad3fdc8..31bb167 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/MpackVersion.java
@@ -23,6 +23,9 @@ import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* This class should be used to compare mpack and stack versions.
* Base method which should be used is parse/parseStackVersion, depends
@@ -38,11 +41,15 @@ public class MpackVersion implements Comparable<MpackVersion> {
private final static String VERSION_WITH_HOTFIX_AND_BUILD_PATTERN = "^([0-9]+).([0-9]+).([0-9]+)-h([0-9]+)-b([0-9]+)";
private final static String VERSION_WITH_BUILD_PATTERN = "^([0-9]+).([0-9]+).([0-9]+)-b([0-9]+)";
private final static String LEGACY_STACK_VERSION_PATTERN = "^([0-9]+).([0-9]+).([0-9]+).([0-9]+)-([0-9]+)";
+ private final static String FORMAT_VERSION_PATTERN = "^([0-9]+)(\\.)?([0-9]+)?(\\.)?([0-9]+)?(-h)?([0-9]+)?(-b)?([0-9]+)?";
// Patterns for previous RE
private final static Pattern PATTERN_WITH_HOTFIX = Pattern.compile(VERSION_WITH_HOTFIX_AND_BUILD_PATTERN);
private final static Pattern PATTERN_LEGACY_STACK_VERSION = Pattern.compile(LEGACY_STACK_VERSION_PATTERN);
private final static Pattern PATTERN_WITHOUT_HOTFIX = Pattern.compile(VERSION_WITH_BUILD_PATTERN);
+ private final static Pattern PATTERN_FORMAT_VERSION = Pattern.compile(FORMAT_VERSION_PATTERN);
+
+ private final static Logger LOG = LoggerFactory.getLogger(MpackVersion.class);
// Parts of version
private int major;
@@ -68,20 +75,59 @@ public class MpackVersion implements Comparable<MpackVersion> {
* @return MpackVersion instance which contains parsed version
* */
public static MpackVersion parse(String mpackVersion) {
- Matcher versionMatcher = validateMpackVersion(mpackVersion);
- MpackVersion result = null;
+ return parse(mpackVersion, true);
+ }
+ public static MpackVersion parse(String mpackVersion, boolean strict) {
+
+ if(!strict) {
+ mpackVersion = format(mpackVersion);
+ }
+ Matcher versionMatcher = validateMpackVersion(mpackVersion);
+ if(versionMatcher == null) {
+ throw new IllegalArgumentException("Wrong format for mpack version");
+ }
if (versionMatcher.pattern().pattern().equals(VERSION_WITH_BUILD_PATTERN)) {
- result = new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
+ return new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
Integer.parseInt(versionMatcher.group(3)), 0, Integer.parseInt(versionMatcher.group(4)));
-
- } else {
- result = new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
+ } else if (versionMatcher.pattern().pattern().equals(VERSION_WITH_HOTFIX_AND_BUILD_PATTERN)) {
+ return new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
Integer.parseInt(versionMatcher.group(3)), Integer.parseInt(versionMatcher.group(4)), Integer.parseInt(versionMatcher.group(5)));
-
+ } else {
+ throw new IllegalArgumentException("Wrong format for mpack version");
}
+ }
- return result;
+ /**
+ * Method to format an mpack version in {major}.{minor}.{maint}-h{hotfix}-b{build} format
+ * @param mpackVersion input mpack version string
+ * @return formatted mpack version string
+ */
+ public static String format(String mpackVersion) {
+ Matcher m = PATTERN_FORMAT_VERSION.matcher(mpackVersion);
+ if(m.matches()) {
+ String majorVersion = m.group(1);
+ String minorVersion = m.group(3);
+ String maintVersion = m.group(5);
+ String hotfixNum = m.group(7);
+ String buildNum = m.group(9);
+ if(hotfixNum != null || buildNum != null) {
+ if(minorVersion == null || maintVersion == null) {
+ // Both minorVersion and maintVersion should be specified
+ throw new IllegalArgumentException("Wrong format for mpack version");
+ }
+ }
+ minorVersion = minorVersion != null? minorVersion: "0";
+ maintVersion = maintVersion != null? maintVersion: "0";
+ hotfixNum = hotfixNum != null? hotfixNum: "0";
+ buildNum = buildNum != null? buildNum: "0";
+ String formattedMpackVersion = String.format("%s.%s.%s-h%s-b%s",
+ majorVersion, minorVersion, maintVersion, hotfixNum, buildNum);
+ return formattedMpackVersion;
+
+ } else {
+ throw new IllegalArgumentException("Wrong format for mpack version");
+ }
}
/**
@@ -93,10 +139,18 @@ public class MpackVersion implements Comparable<MpackVersion> {
* */
public static MpackVersion parseStackVersion(String stackVersion) {
Matcher versionMatcher = validateStackVersion(stackVersion);
- MpackVersion result = new MpackVersion(Integer.parseInt(versionMatcher.group(1)), Integer.parseInt(versionMatcher.group(2)),
- Integer.parseInt(versionMatcher.group(3)), Integer.parseInt(versionMatcher.group(4)), Integer.parseInt(versionMatcher.group(5)));
+ if(versionMatcher == null) {
+ throw new IllegalArgumentException("Wrong format for mpack version");
+ }
- return result;
+ if(versionMatcher.pattern().pattern().equals(LEGACY_STACK_VERSION_PATTERN)) {
+ return new MpackVersion(Integer.parseInt(versionMatcher.group(1)),
+ Integer.parseInt(versionMatcher.group(2)),
+ Integer.parseInt(versionMatcher.group(3)), Integer.parseInt(versionMatcher.group(4)),
+ Integer.parseInt(versionMatcher.group(5)));
+ } else {
+ throw new IllegalArgumentException("Wrong format for mpack version");
+ }
}
/**
@@ -114,12 +168,9 @@ public class MpackVersion implements Comparable<MpackVersion> {
String stackVersion = StringUtils.trim(version);
- Matcher versionMatcher = PATTERN_WITH_HOTFIX.matcher(stackVersion);
+ Matcher versionMatcher = PATTERN_LEGACY_STACK_VERSION.matcher(stackVersion);
if (!versionMatcher.find()) {
- versionMatcher = PATTERN_LEGACY_STACK_VERSION.matcher(stackVersion);
- if (!versionMatcher.find()) {
- throw new IllegalArgumentException("Wrong format for stack version, should be N.N.N.N-N or N.N.N-hN-bN");
- }
+ throw new IllegalArgumentException("Wrong format for stack version, should be N.N.N.N-N or N.N.N-hN-bN");
}
return versionMatcher;
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
index 6a3d81c..4d1e302 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/utils/VersionUtils.java
@@ -20,7 +20,10 @@ package org.apache.ambari.server.utils;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.Nullable;
+
import org.apache.ambari.server.bootstrap.BootStrapImpl;
+
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
@@ -253,7 +256,15 @@ public class VersionUtils {
compare = v2 - v1;
return Integer.compare(compare, 0);
-
}
+ /**
+ * Helper function to compare two comparable versions with null checks
+ * @param v1 The first version
+ * @param v2 The second version
+ * @return 0 if both are equal, <0 if first one is lower, >0 otherwise
+ */
+ public static int compareTo(@Nullable Comparable v1, @Nullable Comparable v2) {
+ return v1 == null ? (v2 == null ? 0 : -1) : v2 == null ? 1 : v1.compareTo(v2);
+ }
}
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
index f30e030..1e06d18 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerImplTest.java
@@ -2452,7 +2452,7 @@ public class AmbariManagementControllerImplTest {
MpackRequest mpackRequest = createNiceMock(MpackRequest.class);
RequestStatusResponse response = new RequestStatusResponse(new Long(201));
Mpack mpack = new Mpack();
- mpack.setMpackId((long)100);
+ mpack.setResourceId((long)100);
mpack.setModules(new ArrayList<Module>());
mpack.setPrerequisites(new HashMap<String, String>());
mpack.setRegistryId(new Long(100));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackRequestTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackRequestTest.java
index e858e54..630fb15 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackRequestTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackRequestTest.java
@@ -28,8 +28,8 @@ public class MpackRequestTest {
@Test
public void testBasicGetAndSet() {
MpackRequest mpackRequest =
- new MpackRequest(new Long(1));
- Assert.assertEquals("1", mpackRequest.getMpackId());
+ new MpackRequest(1L);
+ Assert.assertEquals((Long)1L, mpackRequest.getId());
mpackRequest.setMpackUri("abc.tar.gz");
mpackRequest.setRegistryId(new Long(1));
mpackRequest.setMpackVersion("3.0");
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackResponseTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackResponseTest.java
index 22bcce7..3ef98c6 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackResponseTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/MpackResponseTest.java
@@ -36,8 +36,8 @@ public class MpackResponseTest {
@Test
public void testBasicGetAndSet() {
MpackResponse mpackResponse = new MpackResponse(setupMpack());
- Assert.assertEquals(new Long(100), mpackResponse.getMpackId());
- Assert.assertEquals("100",mpackResponse.getRegistryId());
+ Assert.assertEquals((Long)100L, mpackResponse.getId());
+ Assert.assertEquals((Long)100L, mpackResponse.getRegistryId());
Assert.assertEquals("3.0",mpackResponse.getMpackVersion());
Assert.assertEquals("abc.tar.gz",mpackResponse.getMpackUri());
Assert.assertEquals("testMpack", mpackResponse.getMpackName());
@@ -46,12 +46,12 @@ public class MpackResponseTest {
public Mpack setupMpack() {
Mpack mpack = new Mpack();
- mpack.setMpackId(100L);
+ mpack.setResourceId(100L);
mpack.setModules(new ArrayList<Module>());
mpack.setPrerequisites(new HashMap<String, String>());
mpack.setRegistryId(100L);
mpack.setVersion("3.0");
- mpack.setMpacksUri("abc.tar.gz");
+ mpack.setMpackUri("abc.tar.gz");
mpack.setDescription("Test mpack");
mpack.setName("testMpack");
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/MpackResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/MpackResourceProviderTest.java
index f3b5aad..f453684 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/MpackResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/MpackResourceProviderTest.java
@@ -90,14 +90,14 @@ public class MpackResourceProviderTest {
Resource.Type type = Resource.Type.Mpack;
Resource resourceExpected1 = new ResourceImpl(Resource.Type.Mpack);
- resourceExpected1.setProperty(MpackResourceProvider.MPACK_ID, (long)1);
+ resourceExpected1.setProperty(MpackResourceProvider.MPACK_RESOURCE_ID, (long)1);
resourceExpected1.setProperty(MpackResourceProvider.MPACK_NAME, "TestMpack1");
resourceExpected1.setProperty(MpackResourceProvider.MPACK_VERSION, "3.0");
resourceExpected1.setProperty(MpackResourceProvider.MPACK_URI, "abcd.tar.gz");
resourceExpected1.setProperty(MpackResourceProvider.REGISTRY_ID, null);
Resource resourceExpected2 = new ResourceImpl(Resource.Type.Mpack);
- resourceExpected2.setProperty(MpackResourceProvider.MPACK_ID, (long)2);
+ resourceExpected2.setProperty(MpackResourceProvider.MPACK_RESOURCE_ID, (long)2);
resourceExpected2.setProperty(MpackResourceProvider.MPACK_NAME, "TestMpack2");
resourceExpected2.setProperty(MpackResourceProvider.MPACK_VERSION, "3.0");
resourceExpected2.setProperty(MpackResourceProvider.MPACK_URI, "abc.tar.gz");
@@ -105,14 +105,14 @@ public class MpackResourceProviderTest {
List<MpackEntity> entities = new ArrayList<>();
MpackEntity entity = new MpackEntity();
- entity.setMpackId((long) 1);
+ entity.setId((long) 1);
entity.setMpackUri("abcd.tar.gz");
entity.setMpackName("TestMpack1");
entity.setMpackVersion("3.0");
entities.add(entity);
entity = new MpackEntity();
- entity.setMpackId((long) 2);
+ entity.setId((long) 2);
entity.setMpackUri("abc.tar.gz");
entity.setMpackName("TestMpack2");
entity.setMpackVersion("3.0");
@@ -138,7 +138,7 @@ public class MpackResourceProviderTest {
Assert.assertEquals(2, resources.size());
for (Resource resource : resources) {
- Long mpackId = (Long) resource.getPropertyValue(MpackResourceProvider.MPACK_ID);
+ Long mpackId = (Long) resource.getPropertyValue(MpackResourceProvider.MPACK_RESOURCE_ID);
if (mpackId == (long) 1) {
Assert.assertEquals(resourceExpected1.getPropertyValue(MpackResourceProvider.MPACK_NAME), (String) resource.getPropertyValue(MpackResourceProvider.MPACK_NAME));
Assert.assertEquals(resourceExpected1.getPropertyValue(MpackResourceProvider.MPACK_VERSION), (String) resource.getPropertyValue(MpackResourceProvider.MPACK_VERSION));
@@ -163,11 +163,11 @@ public class MpackResourceProviderTest {
Resource.Type type = Resource.Type.Mpack;
Predicate predicate = new PredicateBuilder().property(
- MpackResourceProvider.MPACK_ID).equals(
+ MpackResourceProvider.MPACK_RESOURCE_ID).equals(
Long.valueOf(1).toString()).toPredicate();
MpackEntity entity = new MpackEntity();
- entity.setMpackId((long) 1);
+ entity.setId((long) 1);
entity.setMpackUri("abcd.tar.gz");
entity.setMpackName("TestMpack1");
entity.setMpackVersion("3.0");
@@ -182,7 +182,7 @@ public class MpackResourceProviderTest {
packletArrayList.add(module);
Resource resourceExpected1 = new ResourceImpl(Resource.Type.Mpack);
- resourceExpected1.setProperty(MpackResourceProvider.MPACK_ID, (long)1);
+ resourceExpected1.setProperty(MpackResourceProvider.MPACK_RESOURCE_ID, (long)1);
resourceExpected1.setProperty(MpackResourceProvider.MPACK_NAME, "TestMpack1");
resourceExpected1.setProperty(MpackResourceProvider.MPACK_VERSION, "3.0");
resourceExpected1.setProperty(MpackResourceProvider.MPACK_URI, "abcd.tar.gz");
@@ -248,7 +248,7 @@ public class MpackResourceProviderTest {
Assert.assertEquals(1,associatedResources.size());
for(Resource r : associatedResources){
- Assert.assertEquals((long)100,r.getPropertyValue(MpackResourceProvider.MPACK_ID));
+ Assert.assertEquals((long)100,r.getPropertyValue(MpackResourceProvider.MPACK_RESOURCE_ID));
Assert.assertEquals("testMpack",r.getPropertyValue(MpackResourceProvider.MPACK_NAME));
Assert.assertEquals("3.0",r.getPropertyValue(MpackResourceProvider.MPACK_VERSION));
Assert.assertEquals("../../../../../../../resources/mpacks-v2/abc.tar.gz",r.getPropertyValue(MpackResourceProvider.MPACK_URI));
@@ -266,7 +266,7 @@ public class MpackResourceProviderTest {
public Mpack setupMpack() {
Mpack mpack = new Mpack();
- mpack.setMpackId((long)100);
+ mpack.setResourceId((long)100);
mpack.setModules(new ArrayList<Module>());
mpack.setPrerequisites(new HashMap<String, String>());
mpack.setRegistryId(new Long(100));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/MpackDAOTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/MpackDAOTest.java
index 7b45815..f589fe8 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/MpackDAOTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/dao/MpackDAOTest.java
@@ -53,7 +53,7 @@ public class MpackDAOTest {
// create 2 definitions
for (int i = 1; i < 3; i++) {
MpackEntity definition = new MpackEntity();
- definition.setMpackId(new Long(100)+i);
+ definition.setId(new Long(100)+i);
definition.setMpackName("testMpack" + i);
definition.setRegistryId(Long.valueOf(i));
definition.setMpackVersion("3.0.0.0-12"+i);
@@ -67,7 +67,7 @@ public class MpackDAOTest {
assertEquals(2, definitions.size());
definitions = m_dao.findByNameVersion("testMpack1","3.0.0.0-121");
assertEquals(1, definitions.size());
- assertEquals(new Long(101),(Long)definitions.get(0).getMpackId());
+ assertEquals(new Long(101),(Long)definitions.get(0).getId());
MpackEntity entity = m_dao.findById(new Long(102));
assertEquals(entity.getMpackName(),"testMpack2");
assertEquals(entity.getMpackVersion(),"3.0.0.0-122");
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/MpackEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/MpackEntityTest.java
index 7948111..4677837 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/MpackEntityTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/MpackEntityTest.java
@@ -38,12 +38,12 @@ public class MpackEntityTest {
Assert.assertEquals(entity1.hashCode(), entity2.hashCode());
Assert.assertTrue(Objects.equals(entity1, entity2));
- entity1.setMpackId(new Long(1));
- entity2.setMpackId(new Long(2));
+ entity1.setId(new Long(1));
+ entity2.setId(new Long(2));
Assert.assertNotSame(entity1.hashCode(), entity2.hashCode());
Assert.assertFalse(Objects.equals(entity1, entity2));
- entity2.setMpackId(new Long(1));
+ entity2.setId(new Long(1));
Assert.assertEquals(entity1.hashCode(), entity2.hashCode());
Assert.assertTrue(Objects.equals(entity1, entity2));
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java
index c561a7a..e478968 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/MpackTest.java
@@ -30,14 +30,14 @@ public class MpackTest {
public void testMpacks() {
Mpack mpack = new Mpack();
mpack.setName("name");
- mpack.setMpackId((long)100);
+ mpack.setResourceId((long)100);
mpack.setDescription("desc");
mpack.setVersion("3.0");
mpack.setMpacksUri("abc.tar.gz");
mpack.setRegistryId(new Long(100));
Assert.assertEquals("name", mpack.getName());
- Assert.assertEquals(new Long(100), mpack.getMpackId());
+ Assert.assertEquals(new Long(100), mpack.getResourceId());
Assert.assertEquals("desc", mpack.getDescription());
Assert.assertEquals("abc.tar.gz", mpack.getMpacksUri());
Assert.assertEquals(new Long(100), mpack.getRegistryId());
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
index 08c0a06..ebb7278 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/utils/TestVersionUtils.java
@@ -277,17 +277,41 @@ public class TestVersionUtils {
Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h0-b10").compareTo(MpackVersion.parse("2.2.3-b10")));
Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h0-b10").compareTo(MpackVersion.parse("1.2.3-h1-b10")));
Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h0-b10").compareTo(MpackVersion.parse("1.2.3-h0-b11")));
+
+ Assert.assertEquals(0, MpackVersion.parse("1", false).compareTo(MpackVersion.parse("1.0.0-h0-b0")));
+ Assert.assertEquals(0, MpackVersion.parse("1.0", false).compareTo(MpackVersion.parse("1.0.0-h0-b0")));
+ Assert.assertEquals(0, MpackVersion.parse("1.0.0", false).compareTo(MpackVersion.parse("1.0.0-h0-b0")));
+ Assert.assertEquals(0, MpackVersion.parse("1.0.0-b0", false).compareTo(MpackVersion.parse("1.0.0-h0-b0")));
+ Assert.assertEquals(0, MpackVersion.parse("1.0.0-h0-b0", false).compareTo(MpackVersion.parse("1.0.0-h0-b0")));
+
+ Assert.assertEquals(-1, MpackVersion.parse("1", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.0", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.0.0", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.0.0-b0", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.0.0-h0-b0", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+
+ Assert.assertEquals(1, MpackVersion.parse("2", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(1, MpackVersion.parse("1.1", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
+ Assert.assertEquals(1, MpackVersion.parse("1.0.1", false).compareTo(MpackVersion.parse("1.0.0-h0-b111")));
}
@Test
public void testStackVersionWithValidVersions() {
Assert.assertEquals(1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
- Assert.assertEquals(1, MpackVersion.parseStackVersion("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
+ Assert.assertEquals(1, MpackVersion.parse("1.2.4-h1-b1").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
+ Assert.assertEquals(1, MpackVersion.parse("1.3.3-h1-b1").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
+ Assert.assertEquals(1, MpackVersion.parse("2.2.3-h1-b1").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
+
+ Assert.assertEquals(0, MpackVersion.parse("1.2.3-h4-b888").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
+
Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.3.11-888")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.4.1-1")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.3.3.1-1")));
+ Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("2.2.3.1-1")));
+
Assert.assertEquals(1, MpackVersion.parseStackVersion("1.2.3.4-999").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
- Assert.assertEquals(0, MpackVersion.parseStackVersion("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.3-h10-b10")));
- Assert.assertEquals(0, MpackVersion.parseStackVersion("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("1.2.3.10-10")));
- Assert.assertEquals(-1, MpackVersion.parse("1.2.3-h10-b10").compareTo(MpackVersion.parseStackVersion("2.2.3.4-888")));
+ Assert.assertEquals(0, MpackVersion.parseStackVersion("1.2.3.4-999").compareTo(MpackVersion.parseStackVersion("1.2.3.4-999")));
+ Assert.assertEquals(-1, MpackVersion.parseStackVersion("1.2.3.1-999").compareTo(MpackVersion.parseStackVersion("1.2.3.4-888")));
}
@Test