Skip to content

Commit

Permalink
Fix some backstage deprecations
Browse files Browse the repository at this point in the history
Some of them are still not fixed, which are related to the standalone
service, which should be replaced with the new implementation as other
plugins already do in the community-plugins (https://github.com/backstage/community-plugins/tree/main/workspaces/azure-devops/packages)
  • Loading branch information
ivangonzalezacuna committed Jul 29, 2024
1 parent b4e3d65 commit 58e068a
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 96 deletions.
5 changes: 5 additions & 0 deletions .changeset/sweet-items-join.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@spreadshirt/backstage-plugin-s3-viewer-backend': patch
---

Fix some of the deprecations from the last Backstage version
1 change: 1 addition & 0 deletions plugins/s3-viewer-backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
"@aws-sdk/protocol-http": "^3.347.0",
"@aws-sdk/signature-v4": "^3.347.0",
"@backstage/backend-common": "^0.23.3",
"@backstage/backend-defaults": "^0.4.1",
"@backstage/backend-plugin-api": "^0.7.0",
"@backstage/backend-tasks": "^0.5.27",
"@backstage/config": "^1.2.0",
Expand Down
18 changes: 9 additions & 9 deletions plugins/s3-viewer-backend/src/service/S3BucketsProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import {
BucketDetails,
BucketDetailsFilters,
} from '@spreadshirt/backstage-plugin-s3-viewer-common';
import { LoggerService } from '@backstage/backend-plugin-api';
import { S3 } from '@aws-sdk/client-s3';
import {
PluginTaskScheduler,
TaskScheduleDefinition,
} from '@backstage/backend-tasks';
LoggerService,
SchedulerService,
SchedulerServiceTaskScheduleDefinition,
} from '@backstage/backend-plugin-api';
import { S3 } from '@aws-sdk/client-s3';
import { matches } from '../permissions';

export class S3BucketsProvider implements BucketsProvider {
Expand All @@ -22,21 +22,21 @@ export class S3BucketsProvider implements BucketsProvider {

constructor(
readonly logger: LoggerService,
readonly scheduler: PluginTaskScheduler,
readonly scheduler: SchedulerService,
readonly credentialsProvider: CredentialsProvider,
readonly statsProvider: BucketStatsProvider | undefined,
readonly schedule: TaskScheduleDefinition | undefined,
readonly schedule: SchedulerServiceTaskScheduleDefinition | undefined,
) {
this.buckets = [];
this.bucketCreds = [];
}

static create(
logger: LoggerService,
scheduler: PluginTaskScheduler,
scheduler: SchedulerService,
credentialsProvider: CredentialsProvider,
statsProvider: BucketStatsProvider | undefined,
schedule: TaskScheduleDefinition | undefined,
schedule: SchedulerServiceTaskScheduleDefinition | undefined,
): S3BucketsProvider {
const bucketsProvider = new S3BucketsProvider(
logger,
Expand Down
27 changes: 12 additions & 15 deletions plugins/s3-viewer-backend/src/service/S3Builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,17 @@ import {
} from '@spreadshirt/backstage-plugin-s3-viewer-node';
import { S3BucketsProvider } from './S3BucketsProvider';
import { S3Client } from './S3Api';
import { errorHandler } from '@backstage/backend-common';
import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';
import {
AuthService,
DiscoveryService,
HttpAuthService,
LoggerService,
PermissionsService,
readSchedulerServiceTaskScheduleDefinitionFromConfig,
SchedulerService,
SchedulerServiceTaskScheduleDefinition,
} from '@backstage/backend-plugin-api';
import {
PluginTaskScheduler,
TaskScheduleDefinition,
readTaskScheduleDefinitionFromConfig,
} from '@backstage/backend-tasks';
import { assertError, NotAllowedError, NotFoundError } from '@backstage/errors';
import {
AuthorizeResult,
Expand All @@ -41,7 +39,7 @@ export interface S3Environment {
auth: AuthService;
logger: LoggerService;
config: Config;
scheduler: PluginTaskScheduler;
scheduler: SchedulerService;
discovery: DiscoveryService;
permissions: PermissionsService;
httpAuth: HttpAuthService;
Expand Down Expand Up @@ -82,13 +80,12 @@ export class S3Builder {
? { frequency: this.refreshInterval, timeout: this.refreshInterval }
: undefined;

const schedule: TaskScheduleDefinition | undefined = config.has(
's3.bucketRefreshSchedule',
)
? readTaskScheduleDefinitionFromConfig(
config.getConfig('s3.bucketRefreshSchedule'),
)
: fallbackSchedule;
const schedule: SchedulerServiceTaskScheduleDefinition | undefined =
config.has('s3.bucketRefreshSchedule')
? readSchedulerServiceTaskScheduleDefinitionFromConfig(
config.getConfig('s3.bucketRefreshSchedule'),
)
: fallbackSchedule;

const credentialsProvider =
this.credentialsProvider ?? this.buildCredentialsProvider();
Expand Down Expand Up @@ -420,7 +417,7 @@ export class S3Builder {
body.on('end', () => res.send());
});

router.use(errorHandler());
router.use(MiddlewareFactory.create(this.env).error());

return router;
}
Expand Down
84 changes: 25 additions & 59 deletions plugins/s3-viewer-backend/src/service/router.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,87 +14,53 @@
* limitations under the License.
*/

import {
DatabaseManager,
getVoidLogger,
HostDiscovery,
PluginDatabaseManager,
ServerTokenManager,
} from '@backstage/backend-common';
import { TaskScheduler } from '@backstage/backend-tasks';
import { ConfigReader } from '@backstage/config';
import express from 'express';
import request from 'supertest';
import { Knex } from 'knex';
import { mockServices } from '@backstage/backend-test-utils';
import { ServerPermissionClient } from '@backstage/plugin-permission-node';

import { createRouter } from './router';

describe('createRouter', () => {
let app: express.Express;
const logger = getVoidLogger();

beforeAll(async () => {
const pluginDatabase: PluginDatabaseManager = {
getClient: () => {
return Promise.resolve({
migrate: {
latest: () => {},
const config = mockServices.rootConfig({
data: {
app: {
title: 'backstage example app',
baseUrl: 'http://localhost:3000',
},
backend: {
baseUrl: 'http://localhost:7007',
listen: { port: 7007 },
auth: {
keys: [
{
secret: 'a-secret-key',
},
],
},
}) as unknown as Promise<Knex>;
},
};
const databaseManager: Partial<DatabaseManager> = {
forPlugin: () => pluginDatabase,
};
const manager = databaseManager as DatabaseManager;

const config = new ConfigReader({
app: {
title: 'backstage example app',
baseUrl: 'http://localhost:3000',
},
backend: {
baseUrl: 'http://localhost:7007',
listen: { port: 7007 },
auth: {
keys: [
},
permission: { enabled: true },
s3: {
bucketLocatorMethods: [
{
secret: 'a-secret-key',
type: 'config',
platforms: [],
},
],
},
},
permission: { enabled: true },
s3: {
bucketLocatorMethods: [
{
type: 'config',
platforms: [],
},
],
},
});

const discovery = HostDiscovery.fromConfig(config);
const tokenManager = ServerTokenManager.fromConfig(config, {
logger,
});

const permissions = ServerPermissionClient.fromConfig(config, {
discovery,
tokenManager,
});

const router = await createRouter({
logger,
logger: mockServices.logger.mock(),
config,
scheduler: new TaskScheduler(manager, logger).forPlugin('s3-viewer'),
scheduler: mockServices.scheduler.mock(),
auth: mockServices.auth(),
httpAuth: mockServices.httpAuth(),
discovery,
permissions,
discovery: mockServices.discovery.mock(),
permissions: mockServices.permissions.mock(),
});
app = express().use(router);
});
Expand Down
18 changes: 7 additions & 11 deletions plugins/s3-viewer-backend/src/service/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,21 @@
* limitations under the License.
*/

import {
HostDiscovery,
createLegacyAuthAdapters,
} from '@backstage/backend-common';
import { PluginTaskScheduler } from '@backstage/backend-tasks';
import { createLegacyAuthAdapters } from '@backstage/backend-common';
import { HostDiscovery } from '@backstage/backend-defaults/discovery';
import { Config } from '@backstage/config';
import express from 'express';
import {
AuthService,
DiscoveryService,
HttpAuthService,
LoggerService,
PermissionsService,
RootConfigService,
SchedulerService,
} from '@backstage/backend-plugin-api';
import { S3Builder } from './S3Builder';
import {
PermissionPolicy,
ServerPermissionClient,
} from '@backstage/plugin-permission-node';
import { PermissionPolicy } from '@backstage/plugin-permission-node';
import { createRouter as createPermissionPlugin } from '@backstage/plugin-permission-backend';
import {
AuthorizeResult,
Expand All @@ -42,8 +38,8 @@ import {
export interface RouterOptions {
logger: LoggerService;
config: RootConfigService;
scheduler: PluginTaskScheduler;
permissions: ServerPermissionClient;
scheduler: SchedulerService;
permissions: PermissionsService;
discovery: DiscoveryService;
auth?: AuthService;
httpAuth?: HttpAuthService;
Expand Down
2 changes: 1 addition & 1 deletion plugins/s3-viewer-backend/src/service/standaloneServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
*/

import {
HostDiscovery,
ServerTokenManager,
createServiceBuilder,
loadBackendConfig,
} from '@backstage/backend-common';
import { HostDiscovery } from '@backstage/backend-defaults/discovery';
import { TaskScheduler } from '@backstage/backend-tasks';
import { Server } from 'http';
import { LoggerService } from '@backstage/backend-plugin-api';
Expand Down
2 changes: 1 addition & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2476,7 +2476,7 @@
yauzl "^3.0.0"
yn "^4.0.0"

"@backstage/backend-defaults@^0.4.0":
"@backstage/backend-defaults@^0.4.0", "@backstage/backend-defaults@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@backstage/backend-defaults/-/backend-defaults-0.4.1.tgz#072f5bbd2bb8a8c4998f6baba7e1134d7171a8dc"
integrity sha512-dLuFjJCPsWDJQzdauNQMdPjinV2YB+k6Jx2JSx04l3SCspjdmBRnZf/jwIrPcQyzgQrCQhupHeprYq7wJSXgbA==
Expand Down

0 comments on commit 58e068a

Please sign in to comment.