Skip to content

Commit 0614c52

Browse files
committed
[PLAT-14756] Releases API RBAC cleanup
Summary: Cleanup rbac actions on releases api. Also make the upload api exposed (was internal/hidden) Test Plan: unit tests Reviewers: anijhawan, muthu, sneelakantan, #yba-api-review Reviewed By: muthu, #yba-api-review Subscribers: yugaware Differential Revision: https://phorge.dev.yugabyte.com/D36853
1 parent 5891faa commit 0614c52

File tree

6 files changed

+1275
-36
lines changed

6 files changed

+1275
-36
lines changed

managed/src/main/java/com/yugabyte/yw/controllers/ReleasesController.java

+15-19
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@
4848

4949
@Api(
5050
value = "New Release management",
51-
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH),
52-
hidden = true)
51+
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH))
5352
@Slf4j
5453
public class ReleasesController extends AuthenticatedController {
5554
@Inject ReleasesUtils releasesUtils;
@@ -58,8 +57,7 @@ public class ReleasesController extends AuthenticatedController {
5857
value = "Create a release",
5958
response = YBPCreateSuccess.class,
6059
nickname = "createNewRelease",
61-
notes = "YbaApi Internal new releases list",
62-
hidden = true) // TODO: remove hidden once complete.
60+
notes = "WARNING: This is a preview API that could change: create a ybdb release")
6361
@ApiImplicitParams({
6462
@ApiImplicitParam(
6563
name = "Release",
@@ -74,7 +72,7 @@ public class ReleasesController extends AuthenticatedController {
7472
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
7573
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
7674
})
77-
@YbaApi(visibility = YbaApiVisibility.INTERNAL, sinceYBAVersion = "2.21.1.0")
75+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
7876
public Result create(UUID customerUUID, Http.Request request) {
7977
Customer.getOrBadRequest(customerUUID);
8078
CreateRelease reqRelease =
@@ -132,15 +130,14 @@ public Result create(UUID customerUUID, Http.Request request) {
132130
response = ResponseRelease.class,
133131
responseContainer = "List",
134132
nickname = "listNewReleases",
135-
notes = "YbaApi Internal new releases list",
136-
hidden = true) // TODO: Remove hidden once complete
133+
notes = "WARNING: This is a preview API that could change: list ybdb releases")
137134
@AuthzPath({
138135
@RequiredPermissionOnResource(
139136
requiredPermission =
140-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
137+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.READ),
141138
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
142139
})
143-
@YbaApi(visibility = YbaApiVisibility.INTERNAL, sinceYBAVersion = "2.21.1.0")
140+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
144141
public Result list(UUID customerUUID, @Nullable String deploymentType, Http.Request request) {
145142
Customer.getOrBadRequest(customerUUID);
146143

@@ -181,14 +178,14 @@ public Result list(UUID customerUUID, @Nullable String deploymentType, Http.Requ
181178
value = "Get a release",
182179
response = ResponseRelease.class,
183180
nickname = "getNewRelease",
184-
notes = "YbaApi Internal new release get",
185-
hidden = true)
181+
notes = "WARNING: This is a preview API that could change: get a specific ybdb release")
186182
@AuthzPath({
187183
@RequiredPermissionOnResource(
188184
requiredPermission =
189-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
185+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.READ),
190186
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
191187
})
188+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
192189
public Result get(UUID customerUUID, UUID releaseUUID, Http.Request request) {
193190
Customer.getOrBadRequest(customerUUID);
194191
Release release = Release.getOrBadRequest(releaseUUID);
@@ -201,14 +198,14 @@ public Result get(UUID customerUUID, UUID releaseUUID, Http.Request request) {
201198
value = "delete a release",
202199
response = YBPSuccess.class,
203200
nickname = "deleteNewRelease",
204-
notes = "YbaApi Internal new release delete",
205-
hidden = true)
201+
notes = "WARNING: This is a preview API that could change: delete a ybdb release")
206202
@AuthzPath({
207203
@RequiredPermissionOnResource(
208204
requiredPermission =
209-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
205+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.DELETE),
210206
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
211207
})
208+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
212209
public Result delete(UUID customerUUID, UUID releaseUUID, Http.Request request) {
213210
Customer.getOrBadRequest(customerUUID);
214211
Release release = Release.get(releaseUUID);
@@ -235,8 +232,7 @@ public Result delete(UUID customerUUID, UUID releaseUUID, Http.Request request)
235232
value = "Update a release",
236233
response = YBPSuccess.class,
237234
nickname = "updateNewRelease",
238-
notes = "YbaApi Internal new releases update",
239-
hidden = true) // TODO: remove hidden once complete.
235+
notes = "WARNING: This is a preview API that could change: update or edit a ybdb release")
240236
@ApiImplicitParams({
241237
@ApiImplicitParam(
242238
name = "Release",
@@ -248,10 +244,10 @@ public Result delete(UUID customerUUID, UUID releaseUUID, Http.Request request)
248244
@AuthzPath({
249245
@RequiredPermissionOnResource(
250246
requiredPermission =
251-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
247+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.UPDATE),
252248
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
253249
})
254-
@YbaApi(visibility = YbaApiVisibility.INTERNAL, sinceYBAVersion = "2.21.1.0")
250+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
255251
public Result update(UUID customerUUID, UUID releaseUUID, Http.Request request) {
256252
Customer.getOrBadRequest(customerUUID);
257253
Release release = Release.getOrBadRequest(releaseUUID);

managed/src/main/java/com/yugabyte/yw/controllers/ReleasesExtractMetadataController.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import com.yugabyte.yw.forms.PlatformResults.YBPCreateSuccess;
1313
import com.yugabyte.yw.forms.PlatformResults.YBPSuccess;
1414
import com.yugabyte.yw.models.Customer;
15+
import com.yugabyte.yw.models.common.YbaApi;
16+
import com.yugabyte.yw.models.common.YbaApi.YbaApiVisibility;
1517
import com.yugabyte.yw.rbac.annotations.AuthzPath;
1618
import com.yugabyte.yw.rbac.annotations.PermissionAttribute;
1719
import com.yugabyte.yw.rbac.annotations.RequiredPermissionOnResource;
@@ -37,8 +39,7 @@
3739

3840
@Api(
3941
value = "Extract metadata from remote tarball",
40-
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH),
41-
hidden = true)
42+
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH))
4243
@Slf4j
4344
public class ReleasesExtractMetadataController extends AuthenticatedController {
4445

@@ -56,8 +57,9 @@ public class ReleasesExtractMetadataController extends AuthenticatedController {
5657
value = "helper to extract release metadata from a remote tarball",
5758
response = YBPSuccess.class,
5859
nickname = "extractMetadata",
59-
notes = "YbaApi Internal extract metadata",
60-
hidden = true)
60+
notes =
61+
"WARNING: This is a preview API that could change: start extracting metadata from a"
62+
+ " remote tgz url")
6163
@ApiImplicitParams({
6264
@ApiImplicitParam(
6365
name = "Release URL",
@@ -72,6 +74,7 @@ public class ReleasesExtractMetadataController extends AuthenticatedController {
7274
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
7375
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
7476
})
77+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
7578
public Result extract_metadata(UUID customerUUID, Http.Request request) {
7679
Customer.getOrBadRequest(customerUUID);
7780
ExtractMetadata em =
@@ -115,14 +118,16 @@ public void run() {
115118
value = "get the extract release metadata from a remote tarball",
116119
response = ResponseExtractMetadata.class,
117120
nickname = "extractMetadata",
118-
notes = "YbaApi Internal extract metadata",
119-
hidden = true)
121+
notes =
122+
"WARNING: This is a preview API that could change: Get extract metadata and its"
123+
+ " progress.")
120124
@AuthzPath({
121125
@RequiredPermissionOnResource(
122126
requiredPermission =
123-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
127+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.READ),
124128
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
125129
})
130+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
126131
public Result getMetadata(UUID customerUUID, UUID metadataUUID, Http.Request request) {
127132
ResponseExtractMetadata metadata = metadataMap.get(metadataUUID);
128133
Customer.getOrBadRequest(customerUUID);

managed/src/main/java/com/yugabyte/yw/controllers/ReleasesUploadController.java

+7-10
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@
3535

3636
@Api(
3737
value = "Upload Release packages",
38-
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH),
39-
hidden = true)
38+
authorizations = @Authorization(AbstractPlatformController.API_KEY_AUTH))
4039
@Slf4j
4140
public class ReleasesUploadController extends AuthenticatedController {
4241

@@ -52,15 +51,14 @@ public ReleasesUploadController(Config appConfig, ReleasesUtils releasesUtils) {
5251
@ApiOperation(
5352
value = "upload a release tgz",
5453
nickname = "uploadRelease",
55-
notes = "YbaApi Internal upload release",
56-
hidden = true) // TODO: remove hidden once complete.
54+
notes = "WARNING: This is a preview API that could change: upload release tgz file")
5755
@AuthzPath({
5856
@RequiredPermissionOnResource(
5957
requiredPermission =
6058
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
6159
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
6260
})
63-
@YbaApi(visibility = YbaApiVisibility.INTERNAL, sinceYBAVersion = "2.21.1.0")
61+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
6462
public Result upload(UUID customerUUID, Http.Request request) {
6563
Customer.getOrBadRequest(customerUUID);
6664

@@ -98,16 +96,15 @@ public Result upload(UUID customerUUID, Http.Request request) {
9896
@ApiOperation(
9997
value = "get an uploaded release metadata",
10098
nickname = "getUploadRelease",
101-
notes = "YbaApi Internal get uploaded release metadata",
102-
response = ResponseExtractMetadata.class,
103-
hidden = true) // TODO: remove hidden once complete.
99+
notes = "WARNING: This is a preview API that could change: get uploaded release metadata",
100+
response = ResponseExtractMetadata.class)
104101
@AuthzPath({
105102
@RequiredPermissionOnResource(
106103
requiredPermission =
107-
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.CREATE),
104+
@PermissionAttribute(resourceType = ResourceType.OTHER, action = Action.READ),
108105
resourceLocation = @Resource(path = Util.CUSTOMERS, sourceType = SourceType.ENDPOINT))
109106
})
110-
@YbaApi(visibility = YbaApiVisibility.INTERNAL, sinceYBAVersion = "2.21.1.0")
107+
@YbaApi(visibility = YbaApiVisibility.PREVIEW, sinceYBAVersion = "2024.2.0.0")
111108
public Result get(UUID customerUUID, UUID fileUUID, Http.Request request) {
112109
Customer.getOrBadRequest(customerUUID);
113110
ReleaseLocalFile rlf = ReleaseLocalFile.getOrBadRequest(fileUUID);

managed/src/main/java/com/yugabyte/yw/controllers/apiModels/ResponseRelease.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.yugabyte.yw.controllers.apiModels;
22

3+
import com.fasterxml.jackson.annotation.JsonFormat;
34
import com.fasterxml.jackson.annotation.JsonInclude;
45
import com.yugabyte.yw.cloud.PublicCloudConstants;
56
import com.yugabyte.yw.models.ReleaseArtifact;
7+
import io.swagger.annotations.ApiModelProperty;
68
import java.util.Date;
79
import java.util.List;
810
import java.util.UUID;
@@ -33,6 +35,9 @@ public static class Artifact {
3335
public static class Universe {
3436
public UUID uuid;
3537
public String name;
38+
39+
@ApiModelProperty(value = "Universe creation date", example = "2024-07-28T01:02:03Z")
40+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
3641
public Date creation_date;
3742

3843
public Universe(UUID uuid, String name, Date creation_date) {

0 commit comments

Comments
 (0)