Skip to content
Draft
1 change: 1 addition & 0 deletions .projenrc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ const serviceSpecSchemaTask = serviceSpecImporters.addTask('gen-schemas', {
'CloudWatchConsoleServiceDirectory',
'GetAttAllowList',
'OobRelationshipData',
// TODO: should i add something here?
].map((typeName: string) => ({
exec: [
'ts-json-schema-generator',
Expand Down
10 changes: 6 additions & 4 deletions packages/@aws-cdk/aws-service-spec/build/full-database.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as path from 'node:path';
import { SpecDatabase } from '@aws-cdk/service-spec-types';
import { DatabaseBuilder, DatabaseBuilderOptions, ReportAudience } from '@aws-cdk/service-spec-importers';
import { SpecDatabase } from '@aws-cdk/service-spec-types';
import { Augmentations } from './augmentations';
import { Scrutinies } from './scrutinies';
import { patchSamTemplateSpec } from './patches/sam-patches';
import { patchCloudFormationRegistry } from './patches/registry-patches';
import { patchSamTemplateSpec } from './patches/sam-patches';
import { Scrutinies } from './scrutinies';

const SOURCES = path.join(__dirname, '../../../../sources');

Expand All @@ -27,7 +27,9 @@ export class FullDatabase extends DatabaseBuilder {
path.join(SOURCES, 'CloudWatchConsoleServiceDirectory/CloudWatchConsoleServiceDirectory.json'),
)
.importScrutinies()
.importAugmentations();
.importAugmentations()
.importEventBridgeSchema(path.join(SOURCES, 'EventBridgeSchema'));
// TODO: Add patch options for the resources decider
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{
"$ref": "#/definitions/EventBridgeSchema",
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"EventBridgeSchema": {
"additionalProperties": false,
"description": "Root class of an EventBridge Schema",
"properties": {
"SchemaName": {
"type": "string"
},
"Content": {
"$ref": "#/definitions/EventBridgeContent"
},
"Description": {
"type": "string"
}
},
"required": [
"SchemaName",
"Content",
"Description"
],
"type": "object"
},
"EventBridgeContent": {
"additionalProperties": false,
"properties": {
"components": {
"$ref": "#/definitions/EventBridgeComponents"
}
},
"required": [
"components"
],
"type": "object"
},
"EventBridgeComponents": {
"additionalProperties": false,
"properties": {
"schemas": {
"$ref": "#/definitions/EventBridgeSchemas"
}
},
"required": [
"schemas"
],
"type": "object"
},
"EventBridgeSchemas": {
"additionalProperties": false,
"properties": {
"AWSEvent": {
"$ref": "#/definitions/AWSEvent"
}
},
"required": [
"AWSEvent"
],
"type": "object"
},
"AWSEvent": {
"additionalProperties": false,
"properties": {
"x-amazon-events-detail-type": {
"type": "string"
},
"x-amazon-events-source": {
"type": "string"
},
"properties": {
"$ref": "#/definitions/AWSEventProperties"
}
},
"required": [
"x-amazon-events-detail-type",
"x-amazon-events-source",
"properties"
],
"type": "object"
},
"AWSEventProperties": {
"additionalProperties": false,
"properties": {
"detail": {
"type": "object"
}
},
"required": [
"detail"
],
"type": "object"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const AVAILABLE_SOURCES: Record<string, keyof DatabaseBuilder> = {
cannedMetrics: 'importCannedMetrics',
arnTemplates: 'importArnTemplates',
oobRelationships: 'importOobRelationships',
eventbridgeschema: 'importEventBridgeSchema',
};

async function main() {
Expand Down
29 changes: 29 additions & 0 deletions packages/@aws-cdk/service-spec-importers/src/db-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { importArnTemplates } from './importers/import-arn-templates';
import { importCannedMetrics } from './importers/import-canned-metrics';
import { importCloudFormationDocumentation } from './importers/import-cloudformation-docs';
import { importCloudFormationRegistryResource } from './importers/import-cloudformation-registry';
import { importEventBridgeSchema } from './importers/import-eventbridge-schema';
import { importGetAttAllowList } from './importers/import-getatt-allowlist';
import { importOobRelationships } from './importers/import-oob-relationships';
import { ResourceSpecImporter, SAMSpecImporter } from './importers/import-resource-spec';
Expand All @@ -22,6 +23,7 @@ import {
loadSamSpec,
loadOobRelationships,
} from './loaders';
import { loadDefaultEventBridgeSchema } from './loaders/load-eventbridge-schema';
import { JsonLensPatcher } from './patching';
import { ProblemReport, ReportAudience } from './report';

Expand Down Expand Up @@ -209,6 +211,33 @@ export class DatabaseBuilder {
});
}

/**
* Import the EvnetBridge schema
*/
public importEventBridgeSchema(schemaDirectory: string) {
return this.addSourceImporter(async (db, report) => {
const regions = await loadDefaultEventBridgeSchema(schemaDirectory, {
...this.options,
report,
failureAudience: this.defaultProblemGrouping,
// patcher,
});
for (const region of regions) {
for (const event of region.events) {
// console.log({ region, resource: JSON.stringify(event, null, 2), name: event.SchemaName });
importEventBridgeSchema({
db,
event,
report,
region: region.regionName,
});
// const existing = db.lookup('event', 'name', 'equals', event.SchemaName.split('@')[1]);
// console.log('db-builder', { existing });
}
}
});
}

/**
* Look at a load result and report problems
*/
Expand Down
1 change: 1 addition & 0 deletions packages/@aws-cdk/service-spec-importers/src/diff-fmt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ export class DiffFormatter {
constructor(db1: SpecDatabase, db2: SpecDatabase) {
this.dbs = [db1, db2];
}
// TODO: I'm pretty sure i need to add something here to make my changes to show in the diff thingy

public format(diff: SpecDatabaseDiff): string {
const tree = new PrintableTree();
Expand Down
Loading
Loading