You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2017/07/10 19:57:24 UTC

[52/52] [abbrv] ambari git commit: AMBARI-21077: Fix build issues after reverting patch for AMBARI-21077 and merging latest trunk (jluniya)

AMBARI-21077: Fix build issues after reverting patch for AMBARI-21077 and merging latest trunk (jluniya)


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

Branch: refs/heads/branch-feature-AMBARI-14714
Commit: ba7b5cbe8296c0d3bf26bc7648d58de57aee3f39
Parents: f491f7b
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Mon Jul 10 12:53:08 2017 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Mon Jul 10 12:53:08 2017 -0700

----------------------------------------------------------------------
 .../api/services/AbstractVersionService.java    | 370 -------------------
 .../api/services/MpackRequestSwagger.java       |  30 ++
 .../server/api/services/MpacksService.java      |  77 +++-
 .../api/services/RegistryRequestSwagger.java    |  30 ++
 .../server/api/services/RegistryService.java    |  66 +++-
 .../ambari/server/controller/MpackResponse.java |   9 +
 .../server/controller/RegistryResponse.java     |   9 +
 .../internal/MpackResourceProvider.java         |  19 +-
 .../internal/RegistryResourceProvider.java      |  11 +-
 .../server/upgrade/UpgradeCatalog251.java       |   5 -
 .../server/api/services/MpacksServiceTest.java  |   3 +-
 11 files changed, 226 insertions(+), 403 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/api/services/AbstractVersionService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AbstractVersionService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AbstractVersionService.java
deleted file mode 100644
index a5712d4..0000000
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AbstractVersionService.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * 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 distributed 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.api.services;
-
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-
-import org.apache.ambari.server.api.rest.BootStrapResource;
-import org.apache.ambari.server.api.rest.HealthCheck;
-import org.apache.ambari.server.api.rest.KdcServerReachabilityCheck;
-import org.apache.ambari.server.api.util.ApiVersion;
-
-/**
- * Abstract class for single entry point for an API version
- */
-public abstract class AbstractVersionService {
-
-  /**
-   * Handles /actions request.
-   *
-   * @return action service
-   */
-  @Path("/actions")
-  public ActionService getActionService(@PathParam("apiVersion") String apiVersion) {
-    return new ActionService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /alert_targets request.
-   *
-   * @return alert targets service
-   */
-  @Path("/alert_targets")
-  public AlertTargetService getAlertTargetService(@PathParam("apiVersion") String apiVersion) {
-    return new AlertTargetService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /privileges request.
-   *
-   * @return privileges service
-   */
-  @Path("/privileges")
-  public AmbariPrivilegeService getAmbariPrivilegeService(@PathParam("apiVersion") String apiVersion) {
-    return new AmbariPrivilegeService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /blueprints request.
-   *
-   * @return blueprints service
-   */
-  @Path("/blueprints")
-  public BlueprintService getBlueprintService(@PathParam("apiVersion") String apiVersion) {
-    return new BlueprintService(ApiVersion.valueOf(apiVersion));
-  }
-
-
-  /**
-   * Handles /links request.
-   *
-   * @return extension links service
-   */
-  @Path("/links")
-  public ExtensionLinksService getExtensionLinksService(@PathParam("apiVersion") String apiVersion) {
-    return new ExtensionLinksService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /extensions request.
-   *
-   * @return extensions service
-   */
-  @Path("/extensions")
-  public ExtensionsService getExtensionsService(@PathParam("apiVersion") String apiVersion) {
-    return new ExtensionsService(ApiVersion.valueOf(apiVersion));
-  }
-
-
-  /**
-   * Handles /clusters request.
-   *
-   * @return cluster service
-   */
-  @Path("/clusters")
-  public ClusterService getClusterService(@PathParam("apiVersion") String apiVersion) {
-    return new ClusterService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /feeds request.
-   * TODO: Cleanup?
-   *
-   * @return feed service
-   */
-  @Path("/feeds")
-  public FeedService getFeedService(@PathParam("apiVersion") String apiVersion) {
-    return new FeedService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /groups request.
-   *
-   * @return group service
-   */
-  @Path("/groups")
-  public GroupService getGroupService(@PathParam("apiVersion") String apiVersion) {
-    return new GroupService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /hosts request.
-   *
-   * @return host service
-   */
-  @Path("/hosts")
-  public HostService getHostService(@PathParam("apiVersion") String apiVersion) {
-    return new HostService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /instances request.
-   * TODO: Cleanup?
-   *
-   * @return instance service
-   */
-  @Path("/instances")
-  public InstanceService getInstanceService(@PathParam("apiVersion") String apiVersion) {
-    return new InstanceService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /kerberos_descriptors request.
-   *
-   * @return kerberos descriptor service
-   */
-  @Path("/kerberos_descriptors")
-  public KerberosDescriptorService getKerberosDescriptorService(@PathParam("apiVersion") String apiVersion) {
-    return new KerberosDescriptorService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /keys request.
-   *
-   * @return key service
-   */
-  @Path("/keys")
-  public KeyService getKeyService(@PathParam("apiVersion") String apiVersion) {
-    return new KeyService();
-  }
-
-  /**
-   * Handles /ldap_sync_events request.
-   *
-   * @return Ldap sync event service
-   */
-  @Path("/ldap_sync_events")
-  public LdapSyncEventService getLdapSyncEventService(@PathParam("apiVersion") String apiVersion) {
-    return new LdapSyncEventService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /logout request.
-   *
-   * @return logout service
-   */
-  @Path("/logout")
-  public LogoutService getLogoutService(@PathParam("apiVersion") String apiVersion) {
-    return new LogoutService();
-  }
-
-  /**
-   * Handles /permissions request.
-   *
-   * @return permission service
-   */
-  @Path("/permissions")
-  public PermissionService getPermissionService(@PathParam("apiVersion") String apiVersion) {
-    return new PermissionService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /persist request.
-   *
-   * @return persist service
-   */
-  @Path("/persist")
-  public PersistKeyValueService getPersistKeyValueService(@PathParam("apiVersion") String apiVersion) {
-    return new PersistKeyValueService();
-  }
-
-  /**
-   * Handles /remoteclusters request
-   *
-   * @return remote clusters service
-   */
-  @Path("/remoteclusters")
-  public RemoteClustersService getRemoteClustersService(@PathParam("apiVersion") String apiVersion) {
-    return new RemoteClustersService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /requests request.
-   *
-   * @return request service
-   */
-  @Path("/requests")
-  public RequestService getRequestService(@PathParam("apiVersion") String apiVersion) {
-    return new RequestService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /settings request.
-   *
-   * @return request service
-   */
-  @Path("/settings")
-  public SettingService getSettingService(@PathParam("apiVersion") String apiVersion) {
-    return new SettingService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /authorizations request.
-   *
-   * @return role authorization service
-   */
-  @Path("/authorizations")
-  public RoleAuthorizationService getRoleAuthorizationService(@PathParam("apiVersion") String apiVersion) {
-    return new RoleAuthorizationService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /services request.
-   *
-   * @return root service service
-   */
-  @Path("/services")
-  public RootServiceService getRootServiceService(@PathParam("apiVersion") String apiVersion) {
-    return new RootServiceService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /targets request.
-   * TODO: Cleanup?
-   *
-   * @return target cluster service
-   */
-  @Path("/targets")
-  public TargetClusterService getTargetClusterService(@PathParam("apiVersion") String apiVersion) {
-    return new TargetClusterService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /users request.
-   *
-   * @return user service
-   */
-  @Path("/users")
-  public UserService getUserService(@PathParam("apiVersion") String apiVersion) {
-    return new UserService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /version_definitions request.
-   *
-   * @return version definition service
-   */
-  @Path("/version_definitions")
-  public VersionDefinitionService getVersionDefinitionService(@PathParam("apiVersion") String apiVersion) {
-    return new VersionDefinitionService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /views request.
-   *
-   * @return view service
-   */
-  @Path("/views")
-  public ViewService getViewService(@PathParam("apiVersion") String apiVersion) {
-    return new ViewService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /view/urls request.
-   *
-   * @return view urls service
-   */
-  @Path("/view/urls")
-  public ViewUrlsService getViewUrlsService(@PathParam("apiVersion") String apiVersion) {
-    return new ViewUrlsService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /stacks request.
-   *
-   * @return stacks service
-   */
-  @Path("/stacks")
-  public StacksService getStacksService(@PathParam("apiVersion") String apiVersion) {
-    return new StacksService(ApiVersion.valueOf(apiVersion));
-  }
-
-
-  /**
-   * Handles /bootstrap request.
-   *
-   * @return bootstrap service
-   */
-  @Path("/bootstrap")
-  public BootStrapResource getBootStrapResource(@PathParam("apiVersion") String apiVersion) {
-    return new BootStrapResource();
-  }
-
-
-  /**
-   * Handles /check request.
-   *
-   * @return health check service
-   */
-  @Path("/check")
-  public HealthCheck getHealthCheck(@PathParam("apiVersion") String apiVersion) {
-    return new HealthCheck();
-  }
-
-  /**
-   * Handles /kdc_check request.
-   *
-   * @return kdc server reachability service
-   */
-  @Path("/kdc_check")
-  public KdcServerReachabilityCheck getKdcServerReachabilityCheck(@PathParam("apiVersion") String apiVersion) {
-    return new KdcServerReachabilityCheck();
-  }
-
-  /**
-   * Handles /registries request.
-   *
-   * @return registry service
-   */
-  @Path("/registries")
-  public RegistryService getRegistryService(@PathParam("apiVersion") String apiVersion) {
-    return new RegistryService(ApiVersion.valueOf(apiVersion));
-  }
-
-  /**
-   * Handles /mpacks request.
-   *
-   * @return mpacks service
-   */
-  @Path("/mpacks")
-  public MpacksService getMpacksService(@PathParam("apiVersion") String apiVersion) {
-    return new MpacksService(ApiVersion.valueOf(apiVersion));
-  }
-}

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpackRequestSwagger.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpackRequestSwagger.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpackRequestSwagger.java
new file mode 100644
index 0000000..5fe5693
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpackRequestSwagger.java
@@ -0,0 +1,30 @@
+/*
+ * 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 distributed 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.api.services;
+
+import org.apache.ambari.server.controller.ApiModel;
+import org.apache.ambari.server.controller.MpackRequest;
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
+
+import io.swagger.annotations.ApiModelProperty;
+
+@SuppressWarnings("unused") // for Swagger
+public interface MpackRequestSwagger extends ApiModel {
+  @ApiModelProperty(name = MpackResourceProvider.RESPONSE_KEY)
+  MpackRequest getMpackRequest();
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/api/services/MpacksService.java
----------------------------------------------------------------------
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 47c1af4..4b7e025 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
@@ -26,22 +26,35 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.util.ApiVersion;
+import org.apache.ambari.server.controller.MpackResponse.MpackResponseWrapper;
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
 import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.http.HttpStatus;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 
 /**
  * Service for Mpacks Management.
  * Endpoint for Mpack Data
  */
-
+@Path("/mpacks/")
+@Api(value = "Mpacks", description = "Endpoint for mpack-specific operations")
 public class MpacksService extends BaseService {
 
-  public MpacksService(ApiVersion apiVersion) {
-    super(apiVersion);
+  private static final String MPACK_REQUEST_TYPE = "org.apache.ambari.server.api.services.MpackRequestSwagger";
+
+  public MpacksService() {
+    super();
   }
 
   /**
@@ -54,7 +67,28 @@ public class MpacksService extends BaseService {
    *
    */
   @GET
-  @Produces("text/plain")
+  @Produces(MediaType.TEXT_PLAIN)
+  @ApiOperation(value = "Returns all mpacks registered with this Ambari instance",
+    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),
+    @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,
+      dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+    @ApiImplicitParam(name = QUERY_FROM, value = QUERY_FROM_DESCRIPTION, allowableValues = QUERY_FROM_VALUES,
+      defaultValue = DEFAULT_FROM, dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+    @ApiImplicitParam(name = QUERY_TO, value = QUERY_TO_DESCRIPTION, allowableValues = QUERY_TO_VALUES,
+      dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+  })
+  @ApiResponses({
+    @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION),
+    @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND),
+    @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED),
+    @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
+    @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
+  })
   public Response getMpacks(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
     return handleRequest(headers, body, ui, Request.Type.GET,
             createMpackResource(null));
@@ -69,7 +103,20 @@ public class MpacksService extends BaseService {
    * @return information regarding the created mpack
    */
   @POST
-  @Produces("text/plain")
+  @Produces(MediaType.TEXT_PLAIN)
+  @ApiOperation(value = "Registers an mpack with this Ambari mpack")
+  @ApiImplicitParams({
+    @ApiImplicitParam(dataType = MPACK_REQUEST_TYPE, paramType = PARAM_TYPE_BODY)
+  })
+  @ApiResponses({
+    @ApiResponse(code = HttpStatus.SC_CREATED, message = MSG_SUCCESSFUL_OPERATION),
+    @ApiResponse(code = HttpStatus.SC_ACCEPTED, message = MSG_REQUEST_ACCEPTED),
+    @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = MSG_INVALID_ARGUMENTS),
+    @ApiResponse(code = HttpStatus.SC_CONFLICT, message = MSG_RESOURCE_ALREADY_EXISTS),
+    @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED),
+    @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
+    @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
+  })
   public Response createMpacks(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
     return handleRequest(headers, body, ui, Request.Type.POST, createMpackResource(null));
   }
@@ -82,8 +129,22 @@ public class MpacksService extends BaseService {
    */
   @GET
   @Path("{mpack_id}")
-  @Produces("text/plain")
-  public Response getMpack(String body, @Context HttpHeaders headers, @Context UriInfo ui, @PathParam("mpack_id") String mpackId) {
+  @Produces(MediaType.TEXT_PLAIN)
+  @ApiOperation(value = "Returns information about a specific mpack that is registered with this Ambari instance",
+    response = MpackResponseWrapper.class)
+  @ApiImplicitParams({
+    @ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, dataType = DATA_TYPE_STRING,
+      paramType = PARAM_TYPE_QUERY, defaultValue = MpackResourceProvider.ALL_PROPERTIES),
+  })
+  @ApiResponses({
+    @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION),
+    @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND),
+    @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED),
+    @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
+    @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) {
 
     return handleRequest(headers, body, ui, Request.Type.GET,
             createMpackResource(mpackId));

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryRequestSwagger.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryRequestSwagger.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryRequestSwagger.java
new file mode 100644
index 0000000..4399418
--- /dev/null
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryRequestSwagger.java
@@ -0,0 +1,30 @@
+/*
+ * 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 distributed 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.api.services;
+
+import org.apache.ambari.server.controller.ApiModel;
+import org.apache.ambari.server.controller.RegistryRequest;
+import org.apache.ambari.server.controller.internal.RegistryResourceProvider;
+
+import io.swagger.annotations.ApiModelProperty;
+
+@SuppressWarnings("unused") // for Swagger
+public interface RegistryRequestSwagger extends ApiModel {
+  @ApiModelProperty(name = RegistryResourceProvider.RESPONSE_KEY)
+  RegistryRequest getRegistryRequest();
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryService.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryService.java
index 5f1a0e4..8f5437d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryService.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/RegistryService.java
@@ -26,17 +26,31 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
 import org.apache.ambari.server.api.resources.ResourceInstance;
-import org.apache.ambari.server.api.util.ApiVersion;
+import org.apache.ambari.server.controller.RegistryResponse.RegistryResponseWrapper;
+import org.apache.ambari.server.controller.internal.RegistryResourceProvider;
 import org.apache.ambari.server.controller.spi.Resource;
+import org.apache.http.HttpStatus;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+@Path("/registries/")
+@Api(value = "Registries", description = "Endpoint for software registry specific operations")
 public class RegistryService extends BaseService {
 
-    public RegistryService(final ApiVersion apiVersion) {
-        super(apiVersion);
+    private static final String REGISTRY_REQUEST_TYPE = "org.apache.ambari.server.api.services.RegistryRequestSwagger";
+
+    public RegistryService() {
+        super();
     }
 
     /**
@@ -48,7 +62,20 @@ public class RegistryService extends BaseService {
      * @return information regarding the softare registry
      */
     @POST
-    @Produces("text/plain")
+    @Produces(MediaType.TEXT_PLAIN)
+    @ApiOperation(value = "Connect a software registry with this Ambari instance")
+    @ApiImplicitParams({
+      @ApiImplicitParam(dataType = REGISTRY_REQUEST_TYPE, paramType = PARAM_TYPE_BODY)
+    })
+    @ApiResponses({
+      @ApiResponse(code = HttpStatus.SC_CREATED, message = MSG_SUCCESSFUL_OPERATION),
+      @ApiResponse(code = HttpStatus.SC_ACCEPTED, message = MSG_REQUEST_ACCEPTED),
+      @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = MSG_INVALID_ARGUMENTS),
+      @ApiResponse(code = HttpStatus.SC_CONFLICT, message = MSG_RESOURCE_ALREADY_EXISTS),
+      @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED),
+      @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
+      @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
+    })
     public Response createRegistries(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
         return handleRequest(headers, body, ui, Request.Type.POST, createRegistryResource(null));
     }
@@ -63,7 +90,21 @@ public class RegistryService extends BaseService {
      *
      */
     @GET
-    @Produces("text/plain")
+    @Produces(MediaType.TEXT_PLAIN)
+    @ApiOperation(value = "Returns all software registry connected with this Ambari instance",
+      response = RegistryResponseWrapper.class, responseContainer = RESPONSE_CONTAINER_LIST)
+    @ApiImplicitParams({
+      @ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, dataType = DATA_TYPE_STRING,
+        paramType = PARAM_TYPE_QUERY, defaultValue = RegistryResourceProvider.REGISTRY_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,
+        dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+      @ApiImplicitParam(name = QUERY_FROM, value = QUERY_FROM_DESCRIPTION, allowableValues = QUERY_FROM_VALUES,
+        defaultValue = DEFAULT_FROM, dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+      @ApiImplicitParam(name = QUERY_TO, value = QUERY_TO_DESCRIPTION, allowableValues = QUERY_TO_VALUES,
+        dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY),
+    })
     public Response getRegistries(String body, @Context HttpHeaders headers, @Context UriInfo ui) {
         return handleRequest(headers, body, ui, Request.Type.GET,
                 createRegistryResource(null));
@@ -78,7 +119,20 @@ public class RegistryService extends BaseService {
      */
     @GET
     @Path("{registry_id}")
-    @Produces("text/plain")
+    @Produces(MediaType.TEXT_PLAIN)
+    @ApiOperation(value = "Returns information about a specific software registry that is connected with this Ambari instance",
+      response = RegistryResponseWrapper.class)
+    @ApiImplicitParams({
+      @ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, dataType = DATA_TYPE_STRING,
+        paramType = PARAM_TYPE_QUERY, defaultValue = RegistryResourceProvider.ALL_PROPERTIES),
+    })
+    @ApiResponses({
+      @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION),
+      @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND),
+      @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED),
+      @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED),
+      @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR),
+    })
     public Response getRegistry(String body, @Context HttpHeaders headers, @Context UriInfo ui,
             @PathParam("registry_id") String registryId) {
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/controller/MpackResponse.java
----------------------------------------------------------------------
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 76b0aba..ff42fde 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
@@ -17,8 +17,11 @@
  */
 package org.apache.ambari.server.controller;
 
+import org.apache.ambari.server.controller.internal.MpackResourceProvider;
 import org.apache.ambari.server.state.Mpack;
 
+import io.swagger.annotations.ApiModelProperty;
+
 /**
  * Represents a mpack response.
  */
@@ -106,4 +109,10 @@ public class MpackResponse {
     MpackResponse MpackResponse = (MpackResponse) obj;
     return getMpackId().equals(MpackResponse.getMpackId());
   }
+
+  public interface MpackResponseWrapper extends ApiModel {
+    @ApiModelProperty(name = MpackResourceProvider.RESPONSE_KEY)
+    @SuppressWarnings("unused")
+    MpackResponse getMpackResponse();
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/controller/RegistryResponse.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/RegistryResponse.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/RegistryResponse.java
index adb512c..729451f 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/RegistryResponse.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/RegistryResponse.java
@@ -17,9 +17,12 @@
  */
 package org.apache.ambari.server.controller;
 
+import org.apache.ambari.server.controller.internal.RegistryResourceProvider;
 import org.apache.ambari.server.registry.Registry;
 import org.apache.ambari.server.registry.RegistryType;
 
+import io.swagger.annotations.ApiModelProperty;
+
 /**
  * Represents a software registry response.
  */
@@ -87,4 +90,10 @@ public class RegistryResponse {
         RegistryResponse registryResponse = (RegistryResponse) obj;
         return getRegistryId().equals(registryResponse.getRegistryId());
     }
+
+    public interface RegistryResponseWrapper extends ApiModel {
+        @ApiModelProperty(name = RegistryResourceProvider.RESPONSE_KEY)
+        @SuppressWarnings("unused")
+        RegistryResponse getRegistryResponse();
+    }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/MpackResourceProvider.java
----------------------------------------------------------------------
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 99a28cb..1bef4cd 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
@@ -43,6 +43,7 @@ import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
 import org.apache.ambari.server.controller.utilities.PredicateHelper;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.orm.dao.MpackDAO;
 import org.apache.ambari.server.orm.dao.StackDAO;
 import org.apache.ambari.server.orm.entities.MpackEntity;
@@ -57,14 +58,16 @@ import com.google.inject.Inject;
 @StaticallyInject
 public class MpackResourceProvider extends AbstractControllerResourceProvider {
 
-  public static final String MPACK_ID = "MpackInfo/mpack_id";
-  public static final String REGISTRY_ID = "MpackInfo/registry_id";
-  public static final String MPACK_NAME = "MpackInfo/mpack_name";
-  public static final String MPACK_VERSION = "MpackInfo/mpack_version";
-  public static final String MPACK_URI = "MpackInfo/mpack_uri";
-  public static final String PACKLETS = "MpackInfo/packlets";
-  public static final String STACK_NAME_PROPERTY_ID = "MpackInfo/stack_name";
-  public static final String STACK_VERSION_PROPERTY_ID = "MpackInfo/stack_version";
+  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 REGISTRY_ID = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "registry_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_URI = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "mpack_uri";
+  public static final String PACKLETS = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "packlets";
+  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));

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RegistryResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RegistryResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RegistryResourceProvider.java
index 112b30f..715cd96 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RegistryResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RegistryResourceProvider.java
@@ -38,6 +38,7 @@ import org.apache.ambari.server.controller.spi.Resource;
 import org.apache.ambari.server.controller.spi.ResourceAlreadyExistsException;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.controller.spi.UnsupportedPropertyException;
+import org.apache.ambari.server.controller.utilities.PropertyHelper;
 import org.apache.ambari.server.registry.RegistryType;
 import org.apache.commons.lang.Validate;
 
@@ -46,10 +47,12 @@ import org.apache.commons.lang.Validate;
  */
 @StaticallyInject
 public class RegistryResourceProvider extends AbstractControllerResourceProvider {
-  public static final String REGISTRY_ID = "RegistryInfo/registry_id";
-  public static final String REGISTRY_NAME = "RegistryInfo/registry_name";
-  public static final String REGISTRY_TYPE = "RegistryInfo/registry_type";
-  public static final String REGISTRY_URI = "RegistryInfo/registry_uri";
+  public static final String RESPONSE_KEY = "RegistryInfo";
+  public static final String ALL_PROPERTIES = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "*";
+  public static final String REGISTRY_ID =  RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP +  "registry_id";
+  public static final String REGISTRY_NAME = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "registry_name";
+  public static final String REGISTRY_TYPE = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "registry_type";
+  public static final String REGISTRY_URI = RESPONSE_KEY + PropertyHelper.EXTERNAL_PATH_SEP + "registry_uri";
 
   private static Set<String> pkPropertyIds = new HashSet<>(
     Arrays.asList(REGISTRY_ID, REGISTRY_NAME));

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog251.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog251.java b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog251.java
index 87c4972..6200915 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog251.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog251.java
@@ -31,8 +31,6 @@ import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.Config;
 import org.apache.ambari.server.state.SecurityType;
 import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -40,9 +38,6 @@ import org.slf4j.LoggerFactory;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 
-import com.google.inject.Inject;
-import com.google.inject.Injector;
-
 /**
  * The {@link UpgradeCatalog251} upgrades Ambari from 2.5.0 to 2.5.1.
  */

http://git-wip-us.apache.org/repos/asf/ambari/blob/ba7b5cbe/ambari-server/src/test/java/org/apache/ambari/server/api/services/MpacksServiceTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/services/MpacksServiceTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/services/MpacksServiceTest.java
index d2c655a..3c3184c 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/api/services/MpacksServiceTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/api/services/MpacksServiceTest.java
@@ -29,7 +29,6 @@ import org.apache.ambari.server.api.resources.ResourceInstance;
 import org.apache.ambari.server.api.services.parsers.RequestBodyParser;
 import org.apache.ambari.server.api.services.serializers.ResultSerializer;
 
-import org.apache.ambari.server.api.util.ApiVersion;
 import org.apache.ambari.server.controller.spi.Resource;
 
 /**
@@ -65,7 +64,7 @@ public class MpacksServiceTest extends BaseServiceTest{
     private String m_mpackId;
 
     private TestMpacksService(String mpackId) {
-      super(ApiVersion.Default);
+      super();
       m_mpackId = mpackId;
     }