Skip to content

Commit

Permalink
feat(resource-binding): Create a file with a security group ID when i…
Browse files Browse the repository at this point in the history
…t is defined as AccessSecurityGroupId in the resource manifest
  • Loading branch information
Florian Aymard committed Feb 14, 2025
1 parent fd3d3e2 commit af19df8
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 3 deletions.
12 changes: 12 additions & 0 deletions backstage-plugins/plugins/aws-apps-backend/src/api/aws-platform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,12 @@ export class AwsAppsPlatformApi {
content: resourceBindContent,
});

input.securityGroupIds.forEach((securityGroupId) => actions.push({
action: 'create',
file_path: `.iac/security-groups/${input.envName}/${input.providerName}/${securityGroupId}`,
content: ''
}))

const change:ICommitChange = {
commitMessage: `Bind Resource`,
branch: 'main',
Expand Down Expand Up @@ -352,6 +358,12 @@ export class AwsAppsPlatformApi {
content: resourceBindContent,
});

input.securityGroupIds.forEach((securityGroupId) => actions.push({
action: 'delete',
file_path: `.iac/security-groups/${input.envName}/${input.providerName}/${securityGroupId}`,
content: ''
}))

const change:ICommitChange = {
commitMessage: `UnBind Resource`,
branch: 'main',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,13 +309,15 @@ export async function createRouter(options: RouterOptions): Promise<express.Rout
const resourceName = req.body.resourceName?.toString();
const resourceEntityRef = req.body.resourceEntityRef?.toString();
const policies = req.body.policies;
const securityGroupIds = req.body.securityGroupIds || [];
const params: BindResourceParams = {
envName,
appName,
providerName,
resourceName,
resourceEntityRef,
policies
policies,
securityGroupIds
};
// console.log(params)
const results = await apiPlatformClient.bindResource(repoInfo,params, secretName);
Expand All @@ -337,12 +339,14 @@ export async function createRouter(options: RouterOptions): Promise<express.Rout
const resourceName = req.body.resourceName?.toString();
const resourceEntityRef = req.body.resourceEntityRef?.toString();
const policies = req.body.policies;
const securityGroupIds = req.body.securityGroupIds || [];
const params: BindResourceParams = {
envName,
appName,
providerName,
resourceName,
resourceEntityRef,
securityGroupIds,
policies
};
// console.log(params)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export interface ResourceBinding {
provider: string;
resourceArn: string;
associatedResources?: AssociatedResources[]
securityGroupIds?: string[]
entityRef?:string;
}

Expand All @@ -55,6 +56,7 @@ export interface BindResourceParams {
resourceName:string;
resourceEntityRef:string;
policies: ResourcePolicy[];
securityGroupIds: string[];
appName: string;
}

Expand Down
6 changes: 4 additions & 2 deletions backstage-plugins/plugins/aws-apps/src/api/OPAApiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,8 @@ export class OPAApiClient implements OPAApi {
envName: params.envName,
policies: params.policies,
resourceName: params.resourceName,
resourceEntityRef: params.resourceEntityRef
resourceEntityRef: params.resourceEntityRef,
securityGroupIds: params.securityGroupIds
}

const bindResponse = this.fetch<any>('/platform/bind-resource', HTTP.POST, postBody);
Expand Down Expand Up @@ -259,7 +260,8 @@ export class OPAApiClient implements OPAApi {
envName: params.envName,
policies: params.policies,
resourceName: params.resourceName,
resourceEntityRef: params.resourceEntityRef
resourceEntityRef: params.resourceEntityRef,
securityGroupIds: params.securityGroupIds
}

const unBindResponse = this.fetch<any>('/platform/unbind-resource', HTTP.POST, postBody);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ const ResourceBindingCard = ({
resourceArn: providerAppData['Arn'],
id: providerAppData['Arn'],
entityRef: "resource:default/" + et!.metadata.name,
securityGroupIds: providerAppData['AccessSecurityGroupId'] ? [providerAppData['AccessSecurityGroupId']] : [],
associatedResources: [associatedRDSResources]
})
}
Expand Down Expand Up @@ -173,6 +174,7 @@ const ResourceBindingCard = ({
appName: entity.metadata.name,
resourceName: item.resourceName,
resourceEntityRef: item.id,
securityGroupIds: item.securityGroupIds || [],
policies
};

Expand Down Expand Up @@ -214,6 +216,7 @@ const ResourceBindingCard = ({
appName: entity.metadata.name,
resourceName: item.resourceName,
resourceEntityRef: item.entityRef!,
securityGroupIds: item.securityGroupIds || [],
policies
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ export const ResourceSelectorDialog = ({
provider: p,
resourceArn: providerAppData['Arn'],
id,
securityGroupIds: providerAppData['AccessSecurityGroupId'] ? [providerAppData['AccessSecurityGroupId']] : [],
associatedResources: [associatedRDSResources]
})
}
Expand Down

0 comments on commit af19df8

Please sign in to comment.