Skip to content

Commit 0777246

Browse files
authored
Remove getContentBlob Upload/Download URL (#17983)
* Remove getContentBlob Upload/Download URL * fix
1 parent 909955d commit 0777246

File tree

7 files changed

+0
-210
lines changed

7 files changed

+0
-210
lines changed

components/gitpod-protocol/go/gitpod-service.go

-46
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ type APIInterface interface {
6969
GetSSHPublicKeys(ctx context.Context) (res []*UserSSHPublicKeyValue, err error)
7070
AddSSHPublicKey(ctx context.Context, value *SSHPublicKeyValue) (res *UserSSHPublicKeyValue, err error)
7171
DeleteSSHPublicKey(ctx context.Context, id string) (err error)
72-
GetContentBlobUploadURL(ctx context.Context, name string) (url string, err error)
73-
GetContentBlobDownloadURL(ctx context.Context, name string) (url string, err error)
7472
GetGitpodTokens(ctx context.Context) (res []*APIToken, err error)
7573
GenerateNewGitpodToken(ctx context.Context, options *GenerateNewGitpodTokenOptions) (res string, err error)
7674
DeleteGitpodToken(ctx context.Context, tokenHash string) (err error)
@@ -196,10 +194,6 @@ const (
196194
FunctionAddSSHPublicKey FunctionName = "addSSHPublicKey"
197195
// FunctionDeleteSSHPublicKey is the name of the deleteSSHPublicKey function
198196
FunctionDeleteSSHPublicKey FunctionName = "deleteSSHPublicKey"
199-
// FunctionGetContentBlobUploadURL is the name fo the getContentBlobUploadUrl function
200-
FunctionGetContentBlobUploadURL FunctionName = "getContentBlobUploadUrl"
201-
// FunctionGetContentBlobDownloadURL is the name fo the getContentBlobDownloadUrl function
202-
FunctionGetContentBlobDownloadURL FunctionName = "getContentBlobDownloadUrl"
203197
// FunctionGetGitpodTokens is the name of the getGitpodTokens function
204198
FunctionGetGitpodTokens FunctionName = "getGitpodTokens"
205199
// FunctionGenerateNewGitpodToken is the name of the generateNewGitpodToken function
@@ -1189,46 +1183,6 @@ func (gp *APIoverJSONRPC) DeleteSSHPublicKey(ctx context.Context, id string) (er
11891183
return
11901184
}
11911185

1192-
// GetContentBlobUploadURL calls getContentBlobUploadUrl on the server
1193-
func (gp *APIoverJSONRPC) GetContentBlobUploadURL(ctx context.Context, name string) (url string, err error) {
1194-
if gp == nil {
1195-
err = errNotConnected
1196-
return
1197-
}
1198-
var _params []interface{}
1199-
1200-
_params = append(_params, name)
1201-
1202-
var result string
1203-
err = gp.C.Call(ctx, string(FunctionGetContentBlobUploadURL), _params, &result)
1204-
if err != nil {
1205-
return
1206-
}
1207-
url = result
1208-
1209-
return
1210-
}
1211-
1212-
// GetContentBlobDownloadURL calls getContentBlobDownloadUrl on the server
1213-
func (gp *APIoverJSONRPC) GetContentBlobDownloadURL(ctx context.Context, name string) (url string, err error) {
1214-
if gp == nil {
1215-
err = errNotConnected
1216-
return
1217-
}
1218-
var _params []interface{}
1219-
1220-
_params = append(_params, name)
1221-
1222-
var result string
1223-
err = gp.C.Call(ctx, string(FunctionGetContentBlobDownloadURL), _params, &result)
1224-
if err != nil {
1225-
return
1226-
}
1227-
url = result
1228-
1229-
return
1230-
}
1231-
12321186
// GetGitpodTokens calls getGitpodTokens on the server
12331187
func (gp *APIoverJSONRPC) GetGitpodTokens(ctx context.Context) (res []*APIToken, err error) {
12341188
if gp == nil {

components/gitpod-protocol/go/mock.go

-30
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/gitpod-protocol/src/gitpod-service.ts

-4
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,6 @@ export interface GitpodServer extends JsonRpcServer<GitpodClient>, AdminServer,
192192
getProjectEnvironmentVariables(projectId: string): Promise<ProjectEnvVar[]>;
193193
deleteProjectEnvironmentVariable(variableId: string): Promise<void>;
194194

195-
// content service
196-
getContentBlobUploadUrl(name: string): Promise<string>;
197-
getContentBlobDownloadUrl(name: string): Promise<string>;
198-
199195
// Gitpod token
200196
getGitpodTokens(): Promise<GitpodToken[]>;
201197
generateNewGitpodToken(options: GitpodServer.GenerateNewGitpodTokenOptions): Promise<string>;

components/server/src/auth/rate-limiter.ts

-2
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,6 @@ const defaultFunctions: FunctionsConfig = {
123123
triggerPrebuild: { group: "default", points: 1 },
124124
cancelPrebuild: { group: "default", points: 1 },
125125
updateProjectPartial: { group: "default", points: 1 },
126-
getContentBlobUploadUrl: { group: "default", points: 1 },
127-
getContentBlobDownloadUrl: { group: "default", points: 1 },
128126
getGitpodTokens: { group: "default", points: 1 },
129127
generateNewGitpodToken: { group: "default", points: 1 },
130128
deleteGitpodToken: { group: "default", points: 1 },

components/server/src/workspace/gitpod-server-impl.ts

-68
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
* See License.AGPL.txt in the project root for license information.
55
*/
66

7-
import {
8-
DownloadUrlRequest,
9-
DownloadUrlResponse,
10-
UploadUrlRequest,
11-
UploadUrlResponse,
12-
} from "@gitpod/content-service/lib/blobs_pb";
137
import {
148
AppInstallationDB,
159
UserDB,
@@ -169,7 +163,6 @@ import { formatPhoneNumber } from "../user/phone-numbers";
169163
import { IDEService } from "../ide-service";
170164
import { AttributionId } from "@gitpod/gitpod-protocol/lib/attribution";
171165
import * as grpc from "@grpc/grpc-js";
172-
import { CachingBlobServiceClientProvider } from "../util/content-service-sugar";
173166
import { CostCenterJSON } from "@gitpod/gitpod-protocol/lib/usage";
174167
import { createCookielessId, maskIp } from "../analytics";
175168
import {
@@ -270,9 +263,6 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
270263

271264
@inject(AuthProviderService) protected readonly authProviderService: AuthProviderService;
272265

273-
@inject(CachingBlobServiceClientProvider)
274-
protected readonly blobServiceClientProvider: CachingBlobServiceClientProvider;
275-
276266
@inject(GitTokenScopeGuesser) protected readonly gitTokenScopeGuesser: GitTokenScopeGuesser;
277267

278268
@inject(HeadlessLogService) protected readonly headlessLogService: HeadlessLogService;
@@ -3317,64 +3307,6 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
33173307
await this.projectsService.updateProjectPartial(partial);
33183308
}
33193309

3320-
public async getContentBlobUploadUrl(ctx: TraceContext, name: string): Promise<string> {
3321-
traceAPIParams(ctx, { name });
3322-
3323-
const user = await this.checkAndBlockUser("getContentBlobUploadUrl");
3324-
await this.guardAccess({ kind: "contentBlob", name: name, userID: user.id }, "create");
3325-
3326-
const uploadUrlRequest = new UploadUrlRequest();
3327-
uploadUrlRequest.setName(name);
3328-
uploadUrlRequest.setOwnerId(user.id);
3329-
3330-
const uploadUrlPromise = new Promise<UploadUrlResponse>((resolve, reject) => {
3331-
const client = this.blobServiceClientProvider.getDefault();
3332-
client.uploadUrl(uploadUrlRequest, (err: any, resp: UploadUrlResponse) => {
3333-
if (err) {
3334-
reject(err);
3335-
} else {
3336-
resolve(resp);
3337-
}
3338-
});
3339-
});
3340-
try {
3341-
const resp = (await uploadUrlPromise).toObject();
3342-
return resp.url;
3343-
} catch (err) {
3344-
log.error("Error getting content blob upload url: ", err);
3345-
throw err;
3346-
}
3347-
}
3348-
3349-
public async getContentBlobDownloadUrl(ctx: TraceContext, name: string): Promise<string> {
3350-
traceAPIParams(ctx, { name });
3351-
3352-
const user = await this.checkAndBlockUser("getContentBlobDownloadUrl");
3353-
await this.guardAccess({ kind: "contentBlob", name: name, userID: user.id }, "get");
3354-
3355-
const downloadUrlRequest = new DownloadUrlRequest();
3356-
downloadUrlRequest.setName(name);
3357-
downloadUrlRequest.setOwnerId(user.id);
3358-
3359-
const downloadUrlPromise = new Promise<DownloadUrlResponse>((resolve, reject) => {
3360-
const client = this.blobServiceClientProvider.getDefault();
3361-
client.downloadUrl(downloadUrlRequest, (err: any, resp: DownloadUrlResponse) => {
3362-
if (err) {
3363-
reject(err);
3364-
} else {
3365-
resolve(resp);
3366-
}
3367-
});
3368-
});
3369-
try {
3370-
const resp = (await downloadUrlPromise).toObject();
3371-
return resp.url;
3372-
} catch (err) {
3373-
log.error("Error getting content blob download url: ", err);
3374-
throw err;
3375-
}
3376-
}
3377-
33783310
public async getGitpodTokens(ctx: TraceContext): Promise<GitpodToken[]> {
33793311
const user = await this.checkAndBlockUser("getGitpodTokens");
33803312
const res = (await this.userDB.findAllGitpodTokensOfUser(user.id)).filter((v) => !v.deleted);

components/server/src/workspace/workspace-starter.ts

-2
Original file line numberDiff line numberDiff line change
@@ -1575,8 +1575,6 @@ export class WorkspaceStarter {
15751575
"function:stopWorkspace",
15761576
"function:getToken",
15771577
"function:getGitpodTokenScopes",
1578-
"function:getContentBlobUploadUrl",
1579-
"function:getContentBlobDownloadUrl",
15801578
"function:accessCodeSyncStorage",
15811579
"function:guessGitTokenScopes",
15821580
"function:getWorkspaceEnvVars",

test/tests/components/content-service/content-service_test.go

-58
Original file line numberDiff line numberDiff line change
@@ -223,64 +223,6 @@ func TestUploadDownloadBlob(t *testing.T) {
223223
testEnv.Test(t, f)
224224
}
225225

226-
// TestUploadDownloadBlobViaServer uploads a blob via server → content-server and downloads it afterwards
227-
func TestUploadDownloadBlobViaServer(t *testing.T) {
228-
integration.SkipWithoutUsername(t, username)
229-
f := features.New("UploadDownloadBlobViaServer").
230-
WithLabel("component", "content-server").
231-
Assess("it should uploads a blob via server → content-server and downloads it afterwards", func(_ context.Context, t *testing.T, cfg *envconf.Config) context.Context {
232-
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
233-
defer cancel()
234-
235-
api := integration.NewComponentAPI(ctx, cfg.Namespace(), kubeconfig, cfg.Client())
236-
t.Cleanup(func() {
237-
api.Done(t)
238-
})
239-
240-
blobContent := fmt.Sprintf("Hello Blobs! It's %s!", time.Now())
241-
242-
server, err := api.GitpodServer()
243-
if err != nil {
244-
t.Fatalf("cannot get content blob upload URL: %q", err)
245-
}
246-
247-
originalUrl, err := server.GetContentBlobUploadURL(ctx, "test-blob")
248-
if err != nil {
249-
t.Fatalf("cannot get content blob upload URL: %q", err)
250-
}
251-
updatedUrl, err := api.Storage(originalUrl)
252-
if err != nil {
253-
t.Fatalf("error resolving blob upload target url")
254-
}
255-
t.Logf("upload URL: %s", updatedUrl)
256-
257-
uploadBlob(t, originalUrl, updatedUrl, blobContent)
258-
259-
originalUrl, err = server.GetContentBlobDownloadURL(ctx, "test-blob")
260-
if err != nil {
261-
t.Fatalf("cannot get content blob download URL: %q", err)
262-
}
263-
264-
updatedUrl, err = api.Storage(originalUrl)
265-
if err != nil {
266-
t.Fatalf("error resolving blob download target url, %q", err)
267-
}
268-
t.Logf("download URL: %s", updatedUrl)
269-
270-
body := downloadBlob(t, originalUrl, updatedUrl)
271-
if string(body) != blobContent {
272-
t.Fatalf("blob content mismatch: should '%s' but is '%s'", blobContent, body)
273-
}
274-
275-
t.Log("Uploading and downloading blob to content store succeeded.")
276-
277-
return ctx
278-
}).
279-
Feature()
280-
281-
testEnv.Test(t, f)
282-
}
283-
284226
func uploadBlob(t *testing.T, originalUrl, updatedUrl, content string) {
285227
// Always use original URL to extract the host information.
286228
// This will avoid any Signature mismatch errors

0 commit comments

Comments
 (0)