@firestartr/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/build/_loadurl.js +50 -0
- package/build/bin/feature-downloader.d.ts +5 -0
- package/build/bin/render-feature.d.ts +2 -0
- package/build/bin/test-feature.d.ts +1 -0
- package/build/index.d.ts +9 -0
- package/build/index.js +267629 -0
- package/build/provisioner/cdktf.json +11 -0
- package/build/provisioner/dist-cdktf/client.d.ts +2 -0
- package/build/provisioner/dist-cdktf/client.js +39 -0
- package/build/provisioner/dist-cdktf/index.js +67192 -0
- package/build/provisioner/dist-cdktf/index.js.map +1 -0
- package/build/provisioner/dist-cdktf/sourcemap-register.js +1 -0
- package/build/provisioner/dist-cdktf/src/cdktf.d.ts +1 -0
- package/build/provisioner/dist-cdktf/src/cdktf.js +89 -0
- package/build/provisioner/dist-cdktf/src/config/config.d.ts +6 -0
- package/build/provisioner/dist-cdktf/src/config/config.js +47 -0
- package/build/provisioner/dist-cdktf/src/entities/base/Entity.d.ts +41 -0
- package/build/provisioner/dist-cdktf/src/entities/base/Entity.js +137 -0
- package/build/provisioner/dist-cdktf/src/entities/base/auxiliars/ConfigAux.d.ts +28 -0
- package/build/provisioner/dist-cdktf/src/entities/base/auxiliars/ConfigAux.js +56 -0
- package/build/provisioner/dist-cdktf/src/entities/feature/FirestartrGithubRepositoryFeature.d.ts +8 -0
- package/build/provisioner/dist-cdktf/src/entities/feature/FirestartrGithubRepositoryFeature.js +15 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/FirestartrGithubGroup.d.ts +8 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/FirestartrGithubGroup.js +17 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/auxiliars/TeamConfigAux.d.ts +29 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/auxiliars/TeamConfigAux.js +35 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/helpers/TeamMembersHelper.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/helpers/TeamMembersHelper.js +28 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/helpers/TeamsHelper.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubgroup/helpers/TeamsHelper.js +23 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubmembership/FirestartrGithubMembership.d.ts +8 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubmembership/FirestartrGithubMembership.js +15 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubmembership/helpers/MembershipHelper.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubmembership/helpers/MembershipHelper.js +19 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/FirestartrGithubRepository.d.ts +9 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/FirestartrGithubRepository.js +30 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/auxiliars/RepositoryConfigAux.d.ts +52 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/auxiliars/RepositoryConfigAux.js +72 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/ActionsHelper.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/ActionsHelper.js +19 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/CodeownersHelper.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/CodeownersHelper.js +24 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/DefaultBranchHelper.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/DefaultBranchHelper.js +17 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/RepositoryHelper.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/RepositoryHelper.js +72 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/RepositoryTeamsHelper.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrgithubrepository/helpers/RepositoryTeamsHelper.js +49 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrterraformmodule/FirestartrTerraformModule.d.ts +10 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrterraformmodule/FirestartrTerraformModule.js +17 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrterraformmodule/auxiliars/terraformModuleHelper.d.ts +13 -0
- package/build/provisioner/dist-cdktf/src/entities/firestartrterraformmodule/auxiliars/terraformModuleHelper.js +36 -0
- package/build/provisioner/dist-cdktf/src/entities/index.d.ts +2 -0
- package/build/provisioner/dist-cdktf/src/entities/index.js +32 -0
- package/build/provisioner/dist-cdktf/src/entities/system/SystemEntity.d.ts +9 -0
- package/build/provisioner/dist-cdktf/src/entities/system/SystemEntity.js +18 -0
- package/build/provisioner/dist-cdktf/src/features/index.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/features/index.js +9 -0
- package/build/provisioner/dist-cdktf/src/features/installer.d.ts +1 -0
- package/build/provisioner/dist-cdktf/src/features/installer.js +101 -0
- package/build/provisioner/dist-cdktf/src/features/preparer.d.ts +1 -0
- package/build/provisioner/dist-cdktf/src/features/preparer.js +64 -0
- package/build/provisioner/dist-cdktf/src/features/provisioner.d.ts +3 -0
- package/build/provisioner/dist-cdktf/src/features/provisioner.js +74 -0
- package/build/provisioner/dist-cdktf/src/features/uninstaller.d.ts +1 -0
- package/build/provisioner/dist-cdktf/src/features/uninstaller.js +29 -0
- package/build/provisioner/dist-cdktf/src/handlers/index.d.ts +3 -0
- package/build/provisioner/dist-cdktf/src/handlers/index.js +56 -0
- package/build/provisioner/dist-cdktf/src/index.d.ts +11 -0
- package/build/provisioner/dist-cdktf/src/index.js +12 -0
- package/build/provisioner/dist-cdktf/src/loader.d.ts +2 -0
- package/build/provisioner/dist-cdktf/src/loader.js +15 -0
- package/build/provisioner/dist-cdktf/src/providers/backend.d.ts +6 -0
- package/build/provisioner/dist-cdktf/src/providers/backend.js +44 -0
- package/build/provisioner/dist-cdktf/src/providers/index.d.ts +12 -0
- package/build/provisioner/dist-cdktf/src/providers/index.js +19 -0
- package/build/provisioner/dist-cdktf/src/providers/provider.d.ts +4 -0
- package/build/provisioner/dist-cdktf/src/providers/provider.js +28 -0
- package/build/provisioner/dist-cdktf/src/resources/github_feature/index.d.ts +8 -0
- package/build/provisioner/dist-cdktf/src/resources/github_feature/index.js +61 -0
- package/build/provisioner/dist-cdktf/src/resources/github_feature/preprocessor.d.ts +2 -0
- package/build/provisioner/dist-cdktf/src/resources/github_feature/preprocessor.js +18 -0
- package/build/provisioner/dist-cdktf/src/resources/github_group/index.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/resources/github_group/index.js +36 -0
- package/build/provisioner/dist-cdktf/src/resources/github_membership/index.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/resources/github_membership/index.js +36 -0
- package/build/provisioner/dist-cdktf/src/resources/github_repository/index.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/resources/github_repository/index.js +36 -0
- package/build/provisioner/dist-cdktf/src/resources/index.d.ts +13 -0
- package/build/provisioner/dist-cdktf/src/resources/index.js +14 -0
- package/build/provisioner/dist-cdktf/src/resources/resource.d.ts +17 -0
- package/build/provisioner/dist-cdktf/src/resources/resource.js +69 -0
- package/build/provisioner/dist-cdktf/src/resources/terraform_module/index.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/resources/terraform_module/index.js +33 -0
- package/build/provisioner/dist-cdktf/src/stacks/GithubStack.d.ts +6 -0
- package/build/provisioner/dist-cdktf/src/stacks/GithubStack.js +41 -0
- package/build/provisioner/dist-cdktf/src/stacks/TerraformModuleStack.d.ts +7 -0
- package/build/provisioner/dist-cdktf/src/stacks/TerraformModuleStack.js +37 -0
- package/build/provisioner/dist-cdktf/src/stacks/base.d.ts +17 -0
- package/build/provisioner/dist-cdktf/src/stacks/base.js +70 -0
- package/build/provisioner/dist-cdktf/src/stacks/index.d.ts +6 -0
- package/build/provisioner/dist-cdktf/src/stacks/index.js +26 -0
- package/build/provisioner/dist-cdktf/src/terraform.d.ts +5 -0
- package/build/provisioner/dist-cdktf/src/terraform.js +132 -0
- package/build/provisioner/dist-cdktf/tsconfig.cdktf.tsbuildinfo +1 -0
- package/build/provisioner/dist-cdktf/zipSync.js +30 -0
- package/build/src/common.d.ts +3 -0
- package/build/src/render.d.ts +1 -0
- package/build/src/update_file.d.ts +1 -0
- package/build/src/validate.d.ts +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create = void 0;
|
|
4
|
+
async function create(resource) {
|
|
5
|
+
// it has files?
|
|
6
|
+
for (const file of resource.get("main_artifact").spec.files) {
|
|
7
|
+
await onFileCreation(resource, file);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.create = create;
|
|
11
|
+
function onFileCreation(resource, file) {
|
|
12
|
+
if (file.userManaged) {
|
|
13
|
+
// d
|
|
14
|
+
// status
|
|
15
|
+
// FAILED
|
|
16
|
+
// reason:
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FirestartrGithubGroup = void 0;
|
|
7
|
+
const resource_1 = require("../resource");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const log = (0, debug_1.default)('firestartr:provisioner:github_group');
|
|
10
|
+
class FirestartrGithubGroup extends resource_1.Resource {
|
|
11
|
+
static kind() {
|
|
12
|
+
return 'FirestartrGithubGroup';
|
|
13
|
+
}
|
|
14
|
+
async preprocess() {
|
|
15
|
+
switch (this.get('operation')) {
|
|
16
|
+
case "CREATE":
|
|
17
|
+
log("CREATE");
|
|
18
|
+
break;
|
|
19
|
+
case "UPDATE":
|
|
20
|
+
log("UPDATED");
|
|
21
|
+
break;
|
|
22
|
+
case "DELETE":
|
|
23
|
+
log("DELETED");
|
|
24
|
+
break;
|
|
25
|
+
case "IMPORT":
|
|
26
|
+
log("IMPORT");
|
|
27
|
+
break;
|
|
28
|
+
case "IMPORT_SKIP_PLAN":
|
|
29
|
+
log("IMPORT_SKIP_PLAN");
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
log("UNKNOWN");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.FirestartrGithubGroup = FirestartrGithubGroup;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FirestartrGithubMembership = void 0;
|
|
7
|
+
const resource_1 = require("../resource");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const log = (0, debug_1.default)('firestartr:provisioner:github_membership');
|
|
10
|
+
class FirestartrGithubMembership extends resource_1.Resource {
|
|
11
|
+
static kind() {
|
|
12
|
+
return 'FirestartrGithubMembership';
|
|
13
|
+
}
|
|
14
|
+
async preprocess() {
|
|
15
|
+
switch (this.get('operation')) {
|
|
16
|
+
case "CREATE":
|
|
17
|
+
log("CREATE");
|
|
18
|
+
break;
|
|
19
|
+
case "UPDATE":
|
|
20
|
+
log("UPDATED");
|
|
21
|
+
break;
|
|
22
|
+
case "DELETE":
|
|
23
|
+
log("DELETED");
|
|
24
|
+
break;
|
|
25
|
+
case "IMPORT":
|
|
26
|
+
log("IMPORT");
|
|
27
|
+
break;
|
|
28
|
+
case "IMPORT_SKIP_PLAN":
|
|
29
|
+
log("IMPORT_SKIP_PLAN");
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
log("UNKNOWN");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.FirestartrGithubMembership = FirestartrGithubMembership;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FirestartrGithubRepository = void 0;
|
|
7
|
+
const resource_1 = require("../resource");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const log = (0, debug_1.default)('firestartr:provisioner:github_repository');
|
|
10
|
+
class FirestartrGithubRepository extends resource_1.Resource {
|
|
11
|
+
static kind() {
|
|
12
|
+
return 'FirestartrGithubRepository';
|
|
13
|
+
}
|
|
14
|
+
async preprocess() {
|
|
15
|
+
switch (this.get('operation')) {
|
|
16
|
+
case "CREATE":
|
|
17
|
+
log("CREATE");
|
|
18
|
+
break;
|
|
19
|
+
case "UPDATE":
|
|
20
|
+
log("UPDATED");
|
|
21
|
+
break;
|
|
22
|
+
case "DELETE":
|
|
23
|
+
log("DELETED");
|
|
24
|
+
break;
|
|
25
|
+
case "IMPORT":
|
|
26
|
+
log("IMPORT");
|
|
27
|
+
break;
|
|
28
|
+
case "IMPORT_SKIP_PLAN":
|
|
29
|
+
log("IMPORT_SKIP_PLAN");
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
log("UNKNOWN");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.FirestartrGithubRepository = FirestartrGithubRepository;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FirestartrGithubRepositoryFeature } from './github_feature';
|
|
2
|
+
import { FirestartrGithubRepository } from './github_repository';
|
|
3
|
+
import { FirestartrGithubMembership } from './github_membership';
|
|
4
|
+
import { FirestartrGithubGroup } from './github_group';
|
|
5
|
+
import { FirestartrTerraformModule } from './terraform_module';
|
|
6
|
+
declare const _default: {
|
|
7
|
+
FirestartrGithubRepositoryFeature: typeof FirestartrGithubRepositoryFeature;
|
|
8
|
+
FirestartrGithubRepository: typeof FirestartrGithubRepository;
|
|
9
|
+
FirestartrGithubMembership: typeof FirestartrGithubMembership;
|
|
10
|
+
FirestartrGithubGroup: typeof FirestartrGithubGroup;
|
|
11
|
+
FirestartrTerraformModule: typeof FirestartrTerraformModule;
|
|
12
|
+
};
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const github_feature_1 = require("./github_feature");
|
|
4
|
+
const github_repository_1 = require("./github_repository");
|
|
5
|
+
const github_membership_1 = require("./github_membership");
|
|
6
|
+
const github_group_1 = require("./github_group");
|
|
7
|
+
const terraform_module_1 = require("./terraform_module");
|
|
8
|
+
exports.default = {
|
|
9
|
+
FirestartrGithubRepositoryFeature: github_feature_1.FirestartrGithubRepositoryFeature,
|
|
10
|
+
FirestartrGithubRepository: github_repository_1.FirestartrGithubRepository,
|
|
11
|
+
FirestartrGithubMembership: github_membership_1.FirestartrGithubMembership,
|
|
12
|
+
FirestartrGithubGroup: github_group_1.FirestartrGithubGroup,
|
|
13
|
+
FirestartrTerraformModule: terraform_module_1.FirestartrTerraformModule,
|
|
14
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class Resource {
|
|
2
|
+
data: any;
|
|
3
|
+
output: string;
|
|
4
|
+
logFn: Function;
|
|
5
|
+
setLogger(fn: Function): void;
|
|
6
|
+
constructor(mainCR: any, operation: string, deps?: any[]);
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
artifact(): any;
|
|
9
|
+
synth(): Promise<void>;
|
|
10
|
+
log(msg: string): void;
|
|
11
|
+
runTerraform(): Promise<void>;
|
|
12
|
+
preprocess(): Promise<void>;
|
|
13
|
+
crs(): void;
|
|
14
|
+
env(): void;
|
|
15
|
+
set(k: string, v: any): void;
|
|
16
|
+
get(k: string): any;
|
|
17
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Resource = void 0;
|
|
4
|
+
const cdktf_1 = require("../cdktf");
|
|
5
|
+
const terraform_1 = require("../terraform");
|
|
6
|
+
class Resource {
|
|
7
|
+
data = {};
|
|
8
|
+
output = '';
|
|
9
|
+
logFn = (msg) => console.log(msg);
|
|
10
|
+
setLogger(fn) {
|
|
11
|
+
this.logFn = fn;
|
|
12
|
+
}
|
|
13
|
+
constructor(mainCR, operation, deps = []) {
|
|
14
|
+
this.set('main_artifact', mainCR);
|
|
15
|
+
this.set('operation', operation);
|
|
16
|
+
this.set('deps', deps);
|
|
17
|
+
}
|
|
18
|
+
async run() {
|
|
19
|
+
try {
|
|
20
|
+
await this.preprocess();
|
|
21
|
+
await this.synth();
|
|
22
|
+
await this.runTerraform();
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
throw `error: ${JSON.stringify(err, null, 4)}`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
artifact() {
|
|
29
|
+
return this.get('main_artifact');
|
|
30
|
+
}
|
|
31
|
+
async synth() {
|
|
32
|
+
const isImport = this.get('operation') === 'IMPORT' || this.get('operation') === 'IMPORT_SKIP_PLAN';
|
|
33
|
+
await (0, cdktf_1.runCDKTF)(this.get('main_artifact'), "synth", this.get('deps'), isImport);
|
|
34
|
+
}
|
|
35
|
+
log(msg) {
|
|
36
|
+
this.logFn(msg);
|
|
37
|
+
}
|
|
38
|
+
async runTerraform() {
|
|
39
|
+
let output = '';
|
|
40
|
+
output += await (0, terraform_1.terraformInit)(this.get('main_artifact'));
|
|
41
|
+
output += await (0, terraform_1.terraformPlan)(this.get('main_artifact'));
|
|
42
|
+
if (this.get('operation') === 'CREATE' || this.get('operation') === 'UPDATE') {
|
|
43
|
+
output += await (0, terraform_1.terraformApply)(this.get('main_artifact'), false, true);
|
|
44
|
+
}
|
|
45
|
+
else if (this.get('operation') === 'DELETE') {
|
|
46
|
+
output += await (0, terraform_1.terraformDestroy)(this.get('main_artifact'));
|
|
47
|
+
}
|
|
48
|
+
else if (this.get('operation') === 'IMPORT') {
|
|
49
|
+
output += await (0, terraform_1.terraformApply)(this.get('main_artifact'), true, false);
|
|
50
|
+
}
|
|
51
|
+
else if (this.get('operation') === 'IMPORT_SKIP_PLAN') {
|
|
52
|
+
output += await (0, terraform_1.terraformApply)(this.get('main_artifact'), true, true);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error(`unknown operation: ${this.get('operation')}`);
|
|
56
|
+
}
|
|
57
|
+
this.set('output', output);
|
|
58
|
+
}
|
|
59
|
+
async preprocess() { }
|
|
60
|
+
crs() { }
|
|
61
|
+
env() { }
|
|
62
|
+
set(k, v) {
|
|
63
|
+
this.data[k] = v;
|
|
64
|
+
}
|
|
65
|
+
get(k) {
|
|
66
|
+
return this.data[k];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.Resource = Resource;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FirestartrTerraformModule = void 0;
|
|
7
|
+
const resource_1 = require("../resource");
|
|
8
|
+
const debug_1 = __importDefault(require("debug"));
|
|
9
|
+
const log = (0, debug_1.default)('firestartr:provisioner:terraform_module');
|
|
10
|
+
class FirestartrTerraformModule extends resource_1.Resource {
|
|
11
|
+
static kind() {
|
|
12
|
+
return 'FirestartrTerraformModule';
|
|
13
|
+
}
|
|
14
|
+
async preprocess() {
|
|
15
|
+
const operation = this.get('operation');
|
|
16
|
+
log(operation);
|
|
17
|
+
switch (operation) {
|
|
18
|
+
case "CREATE":
|
|
19
|
+
break;
|
|
20
|
+
case "UPDATE":
|
|
21
|
+
break;
|
|
22
|
+
case "DELETE":
|
|
23
|
+
break;
|
|
24
|
+
case "IMPORT":
|
|
25
|
+
break;
|
|
26
|
+
case "IMPORT_SKIP_PLAN":
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.FirestartrTerraformModule = FirestartrTerraformModule;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TerraformProvider } from 'cdktf';
|
|
2
|
+
import { BaseStack } from './base';
|
|
3
|
+
export declare class GithubStack extends BaseStack {
|
|
4
|
+
provisionEntity(isImport: boolean, entity: any, deps: any, tfStatePath: string, orgConfig: any): Promise<void>;
|
|
5
|
+
initProviders(scope: any, tfStatePath: string, backendConfig: any, providerConfig: any, deps: any): TerraformProvider;
|
|
6
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GithubStack = void 0;
|
|
7
|
+
const provider_1 = require("@cdktf/provider-github/lib/provider");
|
|
8
|
+
const entities_1 = require("../entities");
|
|
9
|
+
const debug_1 = __importDefault(require("debug"));
|
|
10
|
+
const base_1 = require("./base");
|
|
11
|
+
const catalog_common_1 = __importDefault(require("catalog_common"));
|
|
12
|
+
const providers_1 = require("../providers");
|
|
13
|
+
const messageLog = (0, debug_1.default)('firestartr:provisioner:stacks:githubstack');
|
|
14
|
+
class GithubStack extends base_1.BaseStack {
|
|
15
|
+
async provisionEntity(isImport, entity, deps, tfStatePath, orgConfig) {
|
|
16
|
+
try {
|
|
17
|
+
const { backendConfig, providerConfig } = this.getRefContextConfigs(entity, deps);
|
|
18
|
+
this.initProviders(this, tfStatePath, backendConfig, providerConfig, deps);
|
|
19
|
+
const instance = (0, entities_1.getEntityInstance)(entity, deps);
|
|
20
|
+
await instance.provision({ scope: this });
|
|
21
|
+
if (isImport) {
|
|
22
|
+
instance.importResources();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
messageLog("Error: provisionEntity: %s", err);
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
initProviders(scope, tfStatePath, backendConfig, providerConfig, deps) {
|
|
31
|
+
if (providerConfig.spec.type != providers_1.FirestartrTerraformProvider.GITHUB)
|
|
32
|
+
throw `Provider type ${providerConfig.spec.type} is not supported`;
|
|
33
|
+
const backendSecrets = this.getRefContextFromCr(backendConfig, deps);
|
|
34
|
+
const providerSecrets = this.getRefContextFromCr(providerConfig, deps);
|
|
35
|
+
const backendConfigData = this.replaceConfigSecrets(JSON.parse(backendConfig.spec.config), backendSecrets);
|
|
36
|
+
const providerConfigData = this.replaceConfigSecrets(JSON.parse(providerConfig.spec.config), providerSecrets);
|
|
37
|
+
(0, providers_1.createBackend)(scope, backendConfig.spec.type, tfStatePath, backendConfigData);
|
|
38
|
+
return new provider_1.GithubProvider(scope, tfStatePath, catalog_common_1.default.generic.transformKeysToCamelCase(providerConfigData));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.GithubStack = GithubStack;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FirestartrTerraformModuleEntity } from "../entities/firestartrterraformmodule/FirestartrTerraformModule";
|
|
2
|
+
import { BaseStack } from "./base";
|
|
3
|
+
import { TerraformProvider } from "cdktf";
|
|
4
|
+
export declare class TerraformModuleStack extends BaseStack {
|
|
5
|
+
provisionEntity(isImport: boolean, entity: FirestartrTerraformModuleEntity, deps: any, tfStatePath: string, orgConfig: any): Promise<void>;
|
|
6
|
+
initProviders(scope: BaseStack, name: string, tfStatePath: string, backendConfig: any, providerConfig: any, deps: any): TerraformProvider;
|
|
7
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TerraformModuleStack = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
const FirestartrTerraformModule_1 = require("../entities/firestartrterraformmodule/FirestartrTerraformModule");
|
|
9
|
+
const base_1 = require("./base");
|
|
10
|
+
const providers_1 = require("../providers");
|
|
11
|
+
const messageLog = (0, debug_1.default)("firestartr:provisioner:stacks:terraformmodulestack");
|
|
12
|
+
class TerraformModuleStack extends base_1.BaseStack {
|
|
13
|
+
async provisionEntity(isImport, entity, deps, tfStatePath, orgConfig) {
|
|
14
|
+
try {
|
|
15
|
+
const { backendConfig, providerConfig } = this.getRefContextConfigs(entity, deps);
|
|
16
|
+
const provider = this.initProviders(this, entity.metadata.name, tfStatePath, backendConfig, providerConfig, deps);
|
|
17
|
+
const instance = new FirestartrTerraformModule_1.FirestartrTerraformModuleEntity(entity, provider, deps);
|
|
18
|
+
await instance.provision({ scope: this });
|
|
19
|
+
if (isImport) {
|
|
20
|
+
instance.importResources();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
messageLog("Error: provisionEntity: %s", err);
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
initProviders(scope, name, tfStatePath, backendConfig, providerConfig, deps) {
|
|
29
|
+
const backendSecrets = this.getRefContextFromCr(backendConfig, deps);
|
|
30
|
+
const providerSecrets = this.getRefContextFromCr(providerConfig, deps);
|
|
31
|
+
const backendConfigData = this.replaceConfigSecrets(JSON.parse(backendConfig.spec.config), backendSecrets);
|
|
32
|
+
const providerConfigData = this.replaceConfigSecrets(JSON.parse(providerConfig.spec.config), providerSecrets);
|
|
33
|
+
(0, providers_1.createBackend)(scope, backendConfig.spec.type, tfStatePath, backendConfigData);
|
|
34
|
+
return (0, providers_1.createProvider)(scope, providerConfig.spec.type, name, providerConfigData);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.TerraformModuleStack = TerraformModuleStack;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TerraformProvider, TerraformStack } from "cdktf";
|
|
2
|
+
export declare class SecretNotFound extends Error {
|
|
3
|
+
constructor(secretName: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class SecretKeyNotFound extends Error {
|
|
6
|
+
constructor(secretName: string, keyName: string);
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class BaseStack extends TerraformStack {
|
|
9
|
+
abstract provisionEntity(isImport: boolean, entity: any, deps: any, tfStatePath: string, orgConfig: any): Promise<void>;
|
|
10
|
+
abstract initProviders(scope: any, name: string, tfStatePath: string, backend: any, provider: any, deps: any): TerraformProvider;
|
|
11
|
+
protected getRefContextConfigs(entity: any, deps: any): {
|
|
12
|
+
backendConfig: any;
|
|
13
|
+
providerConfig: any;
|
|
14
|
+
};
|
|
15
|
+
protected getRefContextFromCr(cr: any, deps: any): any;
|
|
16
|
+
protected replaceConfigSecrets(config: any, secrets: any): any;
|
|
17
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseStack = exports.SecretKeyNotFound = exports.SecretNotFound = void 0;
|
|
4
|
+
const cdktf_1 = require("cdktf");
|
|
5
|
+
class SecretNotFound extends Error {
|
|
6
|
+
constructor(secretName) {
|
|
7
|
+
super(`Secret ${secretName} not found`);
|
|
8
|
+
this.name = "SecretNotFound";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.SecretNotFound = SecretNotFound;
|
|
12
|
+
class SecretKeyNotFound extends Error {
|
|
13
|
+
constructor(secretName, keyName) {
|
|
14
|
+
super(`Secret ${secretName} does not have key ${keyName}`);
|
|
15
|
+
this.name = "SecretKeyNotFound";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.SecretKeyNotFound = SecretKeyNotFound;
|
|
19
|
+
class BaseStack extends cdktf_1.TerraformStack {
|
|
20
|
+
getRefContextConfigs(entity, deps) {
|
|
21
|
+
const backendRef = entity.spec.context.backend.ref;
|
|
22
|
+
if (deps[`${backendRef.kind}-${backendRef.name}`] === undefined)
|
|
23
|
+
console.error(`Could not find backend ${backendRef.kind}-${backendRef.name}`);
|
|
24
|
+
const backendConfig = deps[`${backendRef.kind}-${backendRef.name}`].cr;
|
|
25
|
+
const providerRef = entity.spec.context.provider.ref;
|
|
26
|
+
if (deps[`${providerRef.kind}-${providerRef.name}`] === undefined)
|
|
27
|
+
console.error(`Could not find provider ${providerRef.kind}-${providerRef.name}`);
|
|
28
|
+
const providerConfig = deps[`${providerRef.kind}-${providerRef.name}`].cr;
|
|
29
|
+
return {
|
|
30
|
+
backendConfig,
|
|
31
|
+
providerConfig
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
getRefContextFromCr(cr, deps) {
|
|
35
|
+
const secrets = {};
|
|
36
|
+
// check first there are any secrets to resolve
|
|
37
|
+
if (cr.spec.secrets === undefined)
|
|
38
|
+
return secrets;
|
|
39
|
+
for (const i of Object.entries(cr.spec.secrets)) {
|
|
40
|
+
const [objectKey, value] = i;
|
|
41
|
+
const { key, name } = value.secretRef;
|
|
42
|
+
const secretDepKeyName = `Secret-${name}`;
|
|
43
|
+
const secret = deps[secretDepKeyName];
|
|
44
|
+
if (secret.cr.data[key] === undefined)
|
|
45
|
+
throw new SecretKeyNotFound(name, key);
|
|
46
|
+
secrets[objectKey] = Buffer.from(secret.cr.data[key], 'base64');
|
|
47
|
+
}
|
|
48
|
+
return secrets;
|
|
49
|
+
}
|
|
50
|
+
replaceConfigSecrets(config, secrets) {
|
|
51
|
+
for (let key in config) {
|
|
52
|
+
if (typeof config[key] === 'object' && config[key] !== null) {
|
|
53
|
+
// If the property is an object, call this function recursively
|
|
54
|
+
this.replaceConfigSecrets(config[key], secrets);
|
|
55
|
+
}
|
|
56
|
+
else if (typeof config[key] === 'string') {
|
|
57
|
+
// If the property is a string and its value is equal to secrets.something,
|
|
58
|
+
// replace the value with the value of the 'something' key in the secrets object
|
|
59
|
+
config[key] = config[key].replace(/\$\{\{ secrets\.(.*?) \}\}/g, function (_, group1) {
|
|
60
|
+
if (!secrets[group1]) {
|
|
61
|
+
throw new SecretNotFound(group1);
|
|
62
|
+
}
|
|
63
|
+
return secrets[group1];
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return config;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.BaseStack = BaseStack;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseStack } from "./base";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
export declare class StackNotFoundError extends Error {
|
|
4
|
+
constructor(kind: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function getStackByEntity(entity: any): new (app: Construct, tfStatePath: string) => BaseStack;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getStackByEntity = exports.StackNotFoundError = void 0;
|
|
4
|
+
const GithubStack_1 = require("./GithubStack");
|
|
5
|
+
const TerraformModuleStack_1 = require("./TerraformModuleStack");
|
|
6
|
+
class StackNotFoundError extends Error {
|
|
7
|
+
constructor(kind) {
|
|
8
|
+
super(`Stack not found for kind ${kind}`);
|
|
9
|
+
this.name = 'StackNotFoundError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.StackNotFoundError = StackNotFoundError;
|
|
13
|
+
function getStackByEntity(entity) {
|
|
14
|
+
switch (entity.kind) {
|
|
15
|
+
case 'FirestartrGithubRepository':
|
|
16
|
+
case 'FirestartrGithubGroup':
|
|
17
|
+
case 'FirestartrGithubMembership':
|
|
18
|
+
case 'FirestartrGithubRepositoryFeature':
|
|
19
|
+
return GithubStack_1.GithubStack;
|
|
20
|
+
case 'FirestartrTerraformModule':
|
|
21
|
+
return TerraformModuleStack_1.TerraformModuleStack;
|
|
22
|
+
default:
|
|
23
|
+
throw new StackNotFoundError(entity.kind);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.getStackByEntity = getStackByEntity;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function runTerraform(entity: any, command: Array<string>): Promise<unknown>;
|
|
2
|
+
export declare function terraformInit(entity: any): Promise<unknown>;
|
|
3
|
+
export declare function terraformPlan(entity: any): Promise<unknown>;
|
|
4
|
+
export declare function terraformApply(entity: any, isImport?: boolean, skipPlan?: boolean): Promise<unknown>;
|
|
5
|
+
export declare function terraformDestroy(entity: any): Promise<unknown>;
|