Small fixes from review

Signed-off-by: Scott Guymer <scott.guymer@philips.com>
This commit is contained in:
Scott Guymer
2022-11-08 15:19:24 +01:00
parent 39403911c7
commit 0e7a67de4c
3 changed files with 32 additions and 11 deletions
@@ -138,6 +138,8 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
logger: Logger;
orgs: GithubMultiOrgConfig;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
});
// (undocumented)
static fromConfig(
@@ -145,6 +147,8 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
options: {
logger: Logger;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
},
): GithubMultiOrgReaderProcessor;
// (undocumented)
@@ -14,7 +14,11 @@
* limitations under the License.
*/
import { GroupEntity, UserEntity } from '@backstage/catalog-model';
import {
DEFAULT_NAMESPACE,
GroupEntity,
UserEntity,
} from '@backstage/catalog-model';
export function buildOrgHierarchy(groups: GroupEntity[]) {
const groupsByName = new Map(groups.map(g => [g.metadata.name, g]));
@@ -56,9 +60,11 @@ export function assignGroupsToUsers(
) {
const groupMemberUsers = new Map(
groups.map(group => {
const groupKey = group.metadata.namespace
? `${group.metadata.namespace}/${group.metadata.name}`
: group.metadata.name;
const groupKey =
group.metadata.namespace &&
group.metadata.namespace !== DEFAULT_NAMESPACE
? `${group.metadata.namespace}/${group.metadata.name}`
: group.metadata.name;
return [groupKey, group.spec.members || []];
}),
);
@@ -40,6 +40,8 @@ import {
getOrganizationUsers,
GithubMultiOrgConfig,
readGithubMultiOrgConfig,
TeamTransformer,
UserTransformer,
} from '../lib';
/**
@@ -60,6 +62,8 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
options: {
logger: Logger;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
},
) {
const c = config.getOptionalConfig('catalog.processors.githubMultiOrg');
@@ -72,12 +76,16 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
});
}
constructor(options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
orgs: GithubMultiOrgConfig;
githubCredentialsProvider?: GithubCredentialsProvider;
}) {
constructor(
private options: {
integrations: ScmIntegrationRegistry;
logger: Logger;
orgs: GithubMultiOrgConfig;
githubCredentialsProvider?: GithubCredentialsProvider;
userTransformer?: UserTransformer;
teamTransformer?: TeamTransformer;
},
) {
this.integrations = options.integrations;
this.logger = options.logger;
this.orgs = options.orgs;
@@ -133,12 +141,15 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor {
client,
orgConfig.name,
tokenType,
this.options.userTransformer,
);
const { groups } = await getOrganizationTeams(
client,
orgConfig.name,
async (team, ctx): Promise<GroupEntity | undefined> => {
const result = await defaultOrganizationTeamTransformer(team, ctx);
const result = this.options.teamTransformer
? await this.options.teamTransformer(team, ctx)
: await defaultOrganizationTeamTransformer(team, ctx);
if (result) {
result.metadata.namespace = orgConfig.groupNamespace;