@mikarinneoracle/oci-cdk-code-only-preview 0.0.1 → 0.0.2
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/package.json +1 -1
- package/lib/.gen/providers/oci/identity-dynamic-group/index.d.ts +0 -166
- package/lib/.gen/providers/oci/identity-dynamic-group/index.js +0 -408
- package/lib/bin/deploy-with-build.js +0 -132
- package/lib/test/java-function/aws-cdk/bin/app.d.ts +0 -2
- package/lib/test/java-function/aws-cdk/bin/app.js +0 -51
- package/lib/test/java-function/aws-cdk/lib/function-stack.d.ts +0 -11
- package/lib/test/java-function/aws-cdk/lib/function-stack.js +0 -159
- package/lib/test/java-function/aws-cdk/lib/test-function-stack.d.ts +0 -5
- package/lib/test/java-function/aws-cdk/lib/test-function-stack.js +0 -94
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-deployment/index.d.ts +0 -5356
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-deployment/index.js +0 -14972
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-gateway/index.d.ts +0 -449
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/apigateway-gateway/index.js +0 -1149
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/artifacts-container-repository/index.d.ts +0 -217
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/artifacts-container-repository/index.js +0 -563
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-internet-gateway/index.d.ts +0 -176
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-internet-gateway/index.js +0 -431
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-route-table/index.d.ts +0 -255
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-route-table/index.js +0 -644
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-security-list/index.d.ts +0 -752
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-security-list/index.js +0 -2091
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-service-gateway/index.d.ts +0 -220
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-service-gateway/index.js +0 -543
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-subnet/index.d.ts +0 -251
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-subnet/index.js +0 -612
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-vcn/index.d.ts +0 -270
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/core-vcn/index.js +0 -672
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/data-oci-core-services/index.d.ts +0 -150
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/data-oci-core-services/index.js +0 -386
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-application/index.d.ts +0 -330
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-application/index.js +0 -821
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-function/index.d.ts +0 -322
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/functions-function/index.js +0 -820
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/provider/index.d.ts +0 -190
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/provider/index.js +0 -391
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/vault-secret/index.d.ts +0 -439
- package/lib/test/java-function/oci-cdk/.gen/providers/oci/vault-secret/index.js +0 -1146
- package/lib/test/java-function/oci-cdk/bin/app.d.ts +0 -2
- package/lib/test/java-function/oci-cdk/bin/app.js +0 -34
- package/lib/test/java-function/oci-cdk/config/oci-config.d.ts +0 -68
- package/lib/test/java-function/oci-cdk/config/oci-config.js +0 -202
- package/lib/test/java-function/oci-cdk/lib/function-stack.d.ts +0 -31
- package/lib/test/java-function/oci-cdk/lib/function-stack.js +0 -549
- package/lib/test/java-function/oci-cdk/lib/test-function-stack.d.ts +0 -17
- package/lib/test/java-function/oci-cdk/lib/test-function-stack.js +0 -99
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const cdktf_1 = require("cdktf");
|
|
5
|
-
const function_stack_1 = require("../lib/function-stack");
|
|
6
|
-
const oci_config_1 = require("../config/oci-config");
|
|
7
|
-
(async () => {
|
|
8
|
-
const ociConfig = await (0, oci_config_1.getOciConfig)();
|
|
9
|
-
const app = new cdktf_1.App();
|
|
10
|
-
const stackName = process.env.OCI_STACK_NAME || 'function-stack';
|
|
11
|
-
new function_stack_1.FunctionStack(app, stackName, {
|
|
12
|
-
compartmentId: ociConfig.compartmentId,
|
|
13
|
-
ocirCompartmentId: ociConfig.ocirCompartmentId,
|
|
14
|
-
tenancyId: ociConfig.tenancyId,
|
|
15
|
-
region: ociConfig.region,
|
|
16
|
-
namespace: ociConfig.namespace,
|
|
17
|
-
functionAppName: ociConfig.functionAppName,
|
|
18
|
-
functionName: ociConfig.functionName,
|
|
19
|
-
ocirRepositoryName: ociConfig.ocirRepositoryName,
|
|
20
|
-
apiGwPathPrefix: ociConfig.apiGwPathPrefix,
|
|
21
|
-
apiGwRoutePath: ociConfig.apiGwRoutePath,
|
|
22
|
-
apiGwMethods: ociConfig.apiGwMethods,
|
|
23
|
-
pgUrl: ociConfig.pgUrl,
|
|
24
|
-
vaultOcid: ociConfig.vaultOcid,
|
|
25
|
-
keyOcid: ociConfig.keyOcid,
|
|
26
|
-
pgSecretOcid: ociConfig.pgSecretOcid,
|
|
27
|
-
backend: ociConfig.backend,
|
|
28
|
-
});
|
|
29
|
-
app.synth();
|
|
30
|
-
})().catch((e) => {
|
|
31
|
-
console.error(e);
|
|
32
|
-
process.exit(1);
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC9qYXZhLWZ1bmN0aW9uL29jaS1jZGsvYmluL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBNEI7QUFDNUIsMERBQXNEO0FBQ3RELHFEQUFvRDtBQUVwRCxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQ1YsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFBLHlCQUFZLEdBQUUsQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQUcsRUFBRSxDQUFDO0lBQ3RCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLGdCQUFnQixDQUFDO0lBRWpFLElBQUksOEJBQWEsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFO1FBQ2hDLGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtRQUN0QyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsaUJBQWlCO1FBQzlDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztRQUM5QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1FBQzlCLGVBQWUsRUFBRSxTQUFTLENBQUMsZUFBZTtRQUMxQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7UUFDcEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLGtCQUFrQjtRQUNoRCxlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7UUFDMUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQ3hDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWTtRQUNwQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDdEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1FBQzlCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVk7UUFDcEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO0tBQzNCLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNkLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBBcHAgfSBmcm9tICdjZGt0Zic7XG5pbXBvcnQgeyBGdW5jdGlvblN0YWNrIH0gZnJvbSAnLi4vbGliL2Z1bmN0aW9uLXN0YWNrJztcbmltcG9ydCB7IGdldE9jaUNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9vY2ktY29uZmlnJztcblxuKGFzeW5jICgpID0+IHtcbiAgY29uc3Qgb2NpQ29uZmlnID0gYXdhaXQgZ2V0T2NpQ29uZmlnKCk7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAgY29uc3Qgc3RhY2tOYW1lID0gcHJvY2Vzcy5lbnYuT0NJX1NUQUNLX05BTUUgfHwgJ2Z1bmN0aW9uLXN0YWNrJztcblxuICBuZXcgRnVuY3Rpb25TdGFjayhhcHAsIHN0YWNrTmFtZSwge1xuICAgIGNvbXBhcnRtZW50SWQ6IG9jaUNvbmZpZy5jb21wYXJ0bWVudElkLFxuICAgIG9jaXJDb21wYXJ0bWVudElkOiBvY2lDb25maWcub2NpckNvbXBhcnRtZW50SWQsXG4gICAgdGVuYW5jeUlkOiBvY2lDb25maWcudGVuYW5jeUlkLFxuICAgIHJlZ2lvbjogb2NpQ29uZmlnLnJlZ2lvbixcbiAgICBuYW1lc3BhY2U6IG9jaUNvbmZpZy5uYW1lc3BhY2UsXG4gICAgZnVuY3Rpb25BcHBOYW1lOiBvY2lDb25maWcuZnVuY3Rpb25BcHBOYW1lLFxuICAgIGZ1bmN0aW9uTmFtZTogb2NpQ29uZmlnLmZ1bmN0aW9uTmFtZSxcbiAgICBvY2lyUmVwb3NpdG9yeU5hbWU6IG9jaUNvbmZpZy5vY2lyUmVwb3NpdG9yeU5hbWUsXG4gICAgYXBpR3dQYXRoUHJlZml4OiBvY2lDb25maWcuYXBpR3dQYXRoUHJlZml4LFxuICAgIGFwaUd3Um91dGVQYXRoOiBvY2lDb25maWcuYXBpR3dSb3V0ZVBhdGgsXG4gICAgYXBpR3dNZXRob2RzOiBvY2lDb25maWcuYXBpR3dNZXRob2RzLFxuICAgIHBnVXJsOiBvY2lDb25maWcucGdVcmwsXG4gICAgdmF1bHRPY2lkOiBvY2lDb25maWcudmF1bHRPY2lkLFxuICAgIGtleU9jaWQ6IG9jaUNvbmZpZy5rZXlPY2lkLFxuICAgIHBnU2VjcmV0T2NpZDogb2NpQ29uZmlnLnBnU2VjcmV0T2NpZCxcbiAgICBiYWNrZW5kOiBvY2lDb25maWcuYmFja2VuZCxcbiAgfSk7XG5cbiAgYXBwLnN5bnRoKCk7XG59KSgpLmNhdGNoKChlKSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OCI Configuration for Test Function
|
|
3
|
-
*
|
|
4
|
-
* Required env vars (no defaults; throws if missing):
|
|
5
|
-
* - OCI_COMPARTMENT_OCID (or OCI_COMPARTMENT_ID)
|
|
6
|
-
* - OCI_OCIR_COMPARTMENT_OCID (or same as compartment; root allowed if explicitly set)
|
|
7
|
-
* - OCI_TENANCY_OCID (or OCI_TENANCY_ID) – if unset, read from OCI CLI config (see below)
|
|
8
|
-
* - OCI_REGION – if unset, read from OCI CLI config (see below)
|
|
9
|
-
*
|
|
10
|
-
* OCI CLI config: default file is ~/.oci/config, default profile is DEFAULT.
|
|
11
|
-
* - OCI_NAMESPACE – if unset, obtained via OCI SDK (Object Storage getNamespace, same as "oci os ns get")
|
|
12
|
-
* - OCI_FUNCTION_APP_NAME
|
|
13
|
-
* - OCI_FUNCTION_NAME
|
|
14
|
-
* - OCI_OCIR_REPOSITORY_NAME (if unset, uses OCI_FUNCTION_APP_NAME)
|
|
15
|
-
*
|
|
16
|
-
* Optional – API Gateway deployment (defaults: pathPrefix '/', route path '/{path*}', methods GET,POST,OPTIONS):
|
|
17
|
-
* - OCI_APIGW_PATH_PREFIX
|
|
18
|
-
* - OCI_APIGW_ROUTE_PATH
|
|
19
|
-
* - OCI_APIGW_METHODS (comma-separated, e.g. GET,POST,OPTIONS)
|
|
20
|
-
*
|
|
21
|
-
* Optional (OCI CLI config): config file default is ~/.oci/config, profile default is DEFAULT.
|
|
22
|
-
* - OCI_CONFIG_FILE – override config file path
|
|
23
|
-
* - OCI_CLI_PROFILE – override profile name
|
|
24
|
-
* - PG_URL – PostgreSQL connection string. If set with OCI_VAULT_OCID, stack creates Vault secret (OCI_KEY_OCID required). Otherwise passed to function as config (clear-text; warning emitted).
|
|
25
|
-
* - OCI_VAULT_OCID, OCI_KEY_OCID – when set with PG_URL, stack creates secret in Vault.
|
|
26
|
-
* - PG_SECRET_OCID – existing OCI Vault secret OCID for PG (when PG_URL is not set).
|
|
27
|
-
*
|
|
28
|
-
* The Functions resource requires the container image to already exist in OCIR
|
|
29
|
-
* (e.g. build and push with scripts/build-docker.sh and scripts/deploy-oci-function.sh).
|
|
30
|
-
*/
|
|
31
|
-
export interface OciBackendConfig {
|
|
32
|
-
type: 'oci' | 'http' | 'local';
|
|
33
|
-
bucket?: string;
|
|
34
|
-
key?: string;
|
|
35
|
-
address?: string;
|
|
36
|
-
updateMethod?: string;
|
|
37
|
-
lockAddress?: string;
|
|
38
|
-
unlockAddress?: string;
|
|
39
|
-
}
|
|
40
|
-
export interface OciConfig {
|
|
41
|
-
compartmentId: string;
|
|
42
|
-
ocirCompartmentId?: string;
|
|
43
|
-
tenancyId: string;
|
|
44
|
-
region: string;
|
|
45
|
-
namespace: string;
|
|
46
|
-
functionAppName: string;
|
|
47
|
-
functionName: string;
|
|
48
|
-
ocirRepositoryName?: string;
|
|
49
|
-
/** When set, stack creates Vault secret (pg-url) from this value (requires vaultOcid and keyOcid when using Vault). */
|
|
50
|
-
pgUrl?: string;
|
|
51
|
-
/** Vault OCID for creating pg-url secret (required when pgUrl is set and using Vault). */
|
|
52
|
-
vaultOcid?: string;
|
|
53
|
-
/** KMS Key OCID for encrypting pg-url secret (required when vaultOcid is set). */
|
|
54
|
-
keyOcid?: string;
|
|
55
|
-
/** When pgUrl is not set: use this existing OCI Vault secret OCID for PG (set PG_SECRET_OCID env var). */
|
|
56
|
-
pgSecretOcid?: string;
|
|
57
|
-
/** API Gateway deployment path prefix (OCI_APIGW_PATH_PREFIX). Default '/'. */
|
|
58
|
-
apiGwPathPrefix?: string;
|
|
59
|
-
/** API Gateway route path (OCI_APIGW_ROUTE_PATH). Default '/{path*}'. */
|
|
60
|
-
apiGwRoutePath?: string;
|
|
61
|
-
/** API Gateway route methods (OCI_APIGW_METHODS). Default 'GET,POST,OPTIONS'. */
|
|
62
|
-
apiGwMethods?: string[];
|
|
63
|
-
backend?: OciBackendConfig;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Load OCI config from env and CLI config. When OCI_NAMESPACE is unset, fetches it via OCI SDK (getNamespace).
|
|
67
|
-
*/
|
|
68
|
-
export declare function getOciConfig(): Promise<OciConfig>;
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* OCI Configuration for Test Function
|
|
4
|
-
*
|
|
5
|
-
* Required env vars (no defaults; throws if missing):
|
|
6
|
-
* - OCI_COMPARTMENT_OCID (or OCI_COMPARTMENT_ID)
|
|
7
|
-
* - OCI_OCIR_COMPARTMENT_OCID (or same as compartment; root allowed if explicitly set)
|
|
8
|
-
* - OCI_TENANCY_OCID (or OCI_TENANCY_ID) – if unset, read from OCI CLI config (see below)
|
|
9
|
-
* - OCI_REGION – if unset, read from OCI CLI config (see below)
|
|
10
|
-
*
|
|
11
|
-
* OCI CLI config: default file is ~/.oci/config, default profile is DEFAULT.
|
|
12
|
-
* - OCI_NAMESPACE – if unset, obtained via OCI SDK (Object Storage getNamespace, same as "oci os ns get")
|
|
13
|
-
* - OCI_FUNCTION_APP_NAME
|
|
14
|
-
* - OCI_FUNCTION_NAME
|
|
15
|
-
* - OCI_OCIR_REPOSITORY_NAME (if unset, uses OCI_FUNCTION_APP_NAME)
|
|
16
|
-
*
|
|
17
|
-
* Optional – API Gateway deployment (defaults: pathPrefix '/', route path '/{path*}', methods GET,POST,OPTIONS):
|
|
18
|
-
* - OCI_APIGW_PATH_PREFIX
|
|
19
|
-
* - OCI_APIGW_ROUTE_PATH
|
|
20
|
-
* - OCI_APIGW_METHODS (comma-separated, e.g. GET,POST,OPTIONS)
|
|
21
|
-
*
|
|
22
|
-
* Optional (OCI CLI config): config file default is ~/.oci/config, profile default is DEFAULT.
|
|
23
|
-
* - OCI_CONFIG_FILE – override config file path
|
|
24
|
-
* - OCI_CLI_PROFILE – override profile name
|
|
25
|
-
* - PG_URL – PostgreSQL connection string. If set with OCI_VAULT_OCID, stack creates Vault secret (OCI_KEY_OCID required). Otherwise passed to function as config (clear-text; warning emitted).
|
|
26
|
-
* - OCI_VAULT_OCID, OCI_KEY_OCID – when set with PG_URL, stack creates secret in Vault.
|
|
27
|
-
* - PG_SECRET_OCID – existing OCI Vault secret OCID for PG (when PG_URL is not set).
|
|
28
|
-
*
|
|
29
|
-
* The Functions resource requires the container image to already exist in OCIR
|
|
30
|
-
* (e.g. build and push with scripts/build-docker.sh and scripts/deploy-oci-function.sh).
|
|
31
|
-
*/
|
|
32
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
33
|
-
if (k2 === undefined) k2 = k;
|
|
34
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
35
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
36
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
37
|
-
}
|
|
38
|
-
Object.defineProperty(o, k2, desc);
|
|
39
|
-
}) : (function(o, m, k, k2) {
|
|
40
|
-
if (k2 === undefined) k2 = k;
|
|
41
|
-
o[k2] = m[k];
|
|
42
|
-
}));
|
|
43
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
44
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
45
|
-
}) : function(o, v) {
|
|
46
|
-
o["default"] = v;
|
|
47
|
-
});
|
|
48
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
49
|
-
var ownKeys = function(o) {
|
|
50
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
51
|
-
var ar = [];
|
|
52
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
53
|
-
return ar;
|
|
54
|
-
};
|
|
55
|
-
return ownKeys(o);
|
|
56
|
-
};
|
|
57
|
-
return function (mod) {
|
|
58
|
-
if (mod && mod.__esModule) return mod;
|
|
59
|
-
var result = {};
|
|
60
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
61
|
-
__setModuleDefault(result, mod);
|
|
62
|
-
return result;
|
|
63
|
-
};
|
|
64
|
-
})();
|
|
65
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
-
exports.getOciConfig = getOciConfig;
|
|
67
|
-
const fs = __importStar(require("fs"));
|
|
68
|
-
const path = __importStar(require("path"));
|
|
69
|
-
const os = __importStar(require("os"));
|
|
70
|
-
const common = __importStar(require("oci-common"));
|
|
71
|
-
const objectstorage = __importStar(require("oci-objectstorage"));
|
|
72
|
-
/** Read tenancy and region from OCI CLI config. Default file: ~/.oci/config, default profile: DEFAULT. */
|
|
73
|
-
function readTenancyAndRegionFromCliConfig() {
|
|
74
|
-
const configPath = process.env.OCI_CONFIG_FILE || path.join(os.homedir(), '.oci', 'config');
|
|
75
|
-
const profile = process.env.OCI_CLI_PROFILE || 'DEFAULT';
|
|
76
|
-
try {
|
|
77
|
-
if (!fs.existsSync(configPath))
|
|
78
|
-
return {};
|
|
79
|
-
const content = fs.readFileSync(configPath, 'utf-8');
|
|
80
|
-
const lines = content.split(/\r?\n/);
|
|
81
|
-
let inProfile = false;
|
|
82
|
-
const result = {};
|
|
83
|
-
for (const line of lines) {
|
|
84
|
-
const trimmed = line.trim();
|
|
85
|
-
if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
|
|
86
|
-
inProfile = trimmed.slice(1, -1) === profile;
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (!inProfile)
|
|
90
|
-
continue;
|
|
91
|
-
const eq = trimmed.indexOf('=');
|
|
92
|
-
if (eq <= 0)
|
|
93
|
-
continue;
|
|
94
|
-
const key = trimmed.slice(0, eq).trim().toLowerCase();
|
|
95
|
-
const value = trimmed.slice(eq + 1).trim();
|
|
96
|
-
if (key === 'tenancy')
|
|
97
|
-
result.tenancy = value;
|
|
98
|
-
if (key === 'region')
|
|
99
|
-
result.region = value;
|
|
100
|
-
}
|
|
101
|
-
return result;
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
return {};
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/** Get object storage namespace via OCI SDK (same as "oci os ns get"). Uses ~/.oci/config, DEFAULT profile. */
|
|
108
|
-
async function getNamespaceFromOciSdk(compartmentId, region) {
|
|
109
|
-
const configPath = process.env.OCI_CONFIG_FILE || path.join(os.homedir(), '.oci', 'config');
|
|
110
|
-
const profile = process.env.OCI_CLI_PROFILE || 'DEFAULT';
|
|
111
|
-
try {
|
|
112
|
-
const provider = new common.ConfigFileAuthenticationDetailsProvider(configPath, profile);
|
|
113
|
-
const client = new objectstorage.ObjectStorageClient({ authenticationDetailsProvider: provider });
|
|
114
|
-
client.regionId = region;
|
|
115
|
-
const response = await client.getNamespace({
|
|
116
|
-
compartmentId,
|
|
117
|
-
});
|
|
118
|
-
return response.value?.trim();
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const backendType = (process.env.OCI_STATE_BACKEND_TYPE || 'local');
|
|
125
|
-
const backendConfig = backendType === 'local'
|
|
126
|
-
? undefined
|
|
127
|
-
: backendType === 'oci'
|
|
128
|
-
? {
|
|
129
|
-
type: 'oci',
|
|
130
|
-
bucket: process.env.OCI_STATE_BUCKET || 'tf-state',
|
|
131
|
-
key: process.env.OCI_STATE_KEY || 'function-stack/terraform.tfstate',
|
|
132
|
-
}
|
|
133
|
-
: {
|
|
134
|
-
type: 'http',
|
|
135
|
-
address: process.env.OCI_STATE_HTTP_ADDRESS || '',
|
|
136
|
-
updateMethod: process.env.OCI_STATE_HTTP_UPDATE_METHOD || 'PUT',
|
|
137
|
-
lockAddress: process.env.OCI_STATE_HTTP_LOCK_ADDRESS,
|
|
138
|
-
unlockAddress: process.env.OCI_STATE_HTTP_UNLOCK_ADDRESS,
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* Load OCI config from env and CLI config. When OCI_NAMESPACE is unset, fetches it via OCI SDK (getNamespace).
|
|
142
|
-
*/
|
|
143
|
-
async function getOciConfig() {
|
|
144
|
-
const compartmentId = process.env.OCI_COMPARTMENT_OCID?.trim() || process.env.OCI_COMPARTMENT_ID?.trim();
|
|
145
|
-
if (!compartmentId) {
|
|
146
|
-
throw new Error('OCI_COMPARTMENT_OCID is required (or OCI_COMPARTMENT_ID). Example: export OCI_COMPARTMENT_OCID="ocid1.compartment.oc1..aaaaaaa..."');
|
|
147
|
-
}
|
|
148
|
-
const ocirCompartmentOcid = process.env.OCI_OCIR_COMPARTMENT_OCID?.trim() || process.env.OCI_OCIR_COMPARTMENT_ID?.trim() || compartmentId;
|
|
149
|
-
if (!ocirCompartmentOcid) {
|
|
150
|
-
throw new Error('OCI_OCIR_COMPARTMENT_OCID is required (or set OCI_COMPARTMENT_OCID to use the same compartment). ' +
|
|
151
|
-
'Example: export OCI_OCIR_COMPARTMENT_OCID="ocid1.compartment.oc1..aaaaaaa..."');
|
|
152
|
-
}
|
|
153
|
-
const cliConfig = readTenancyAndRegionFromCliConfig();
|
|
154
|
-
const tenancyId = process.env.OCI_TENANCY_OCID?.trim() || process.env.OCI_TENANCY_ID?.trim() || cliConfig.tenancy?.trim();
|
|
155
|
-
if (!tenancyId) {
|
|
156
|
-
throw new Error('OCI_TENANCY_OCID is required (or OCI_TENANCY_ID), or run "oci setup config" so it can be read from ~/.oci/config');
|
|
157
|
-
}
|
|
158
|
-
const region = process.env.OCI_REGION?.trim() || cliConfig.region?.trim();
|
|
159
|
-
if (!region) {
|
|
160
|
-
throw new Error('OCI_REGION is required (or set in ~/.oci/config). Example: export OCI_REGION="eu-frankfurt-1"');
|
|
161
|
-
}
|
|
162
|
-
let namespace = process.env.OCI_NAMESPACE?.trim();
|
|
163
|
-
if (!namespace || namespace === 'your-namespace') {
|
|
164
|
-
namespace = (await getNamespaceFromOciSdk(compartmentId, region)) ?? '';
|
|
165
|
-
}
|
|
166
|
-
if (!namespace) {
|
|
167
|
-
throw new Error('OCI_NAMESPACE is required. Set it, or ensure OCI SDK can read it (oci setup config and same credentials for Object Storage). ' +
|
|
168
|
-
'Example: export OCI_NAMESPACE="your-actual-namespace"');
|
|
169
|
-
}
|
|
170
|
-
const functionAppName = process.env.OCI_FUNCTION_APP_NAME?.trim();
|
|
171
|
-
if (!functionAppName) {
|
|
172
|
-
throw new Error('OCI_FUNCTION_APP_NAME is required. Example: export OCI_FUNCTION_APP_NAME="my-function-app"');
|
|
173
|
-
}
|
|
174
|
-
const functionName = process.env.OCI_FUNCTION_NAME?.trim();
|
|
175
|
-
if (!functionName) {
|
|
176
|
-
throw new Error('OCI_FUNCTION_NAME is required. Example: export OCI_FUNCTION_NAME="my-function"');
|
|
177
|
-
}
|
|
178
|
-
const ocirRepositoryName = process.env.OCI_OCIR_REPOSITORY_NAME?.trim() || functionAppName;
|
|
179
|
-
const apiGwMethodsStr = process.env.OCI_APIGW_METHODS?.trim();
|
|
180
|
-
const apiGwMethods = apiGwMethodsStr
|
|
181
|
-
? apiGwMethodsStr.split(',').map((m) => m.trim()).filter(Boolean)
|
|
182
|
-
: undefined;
|
|
183
|
-
return {
|
|
184
|
-
compartmentId,
|
|
185
|
-
ocirCompartmentId: ocirCompartmentOcid,
|
|
186
|
-
tenancyId,
|
|
187
|
-
region,
|
|
188
|
-
namespace,
|
|
189
|
-
functionAppName,
|
|
190
|
-
functionName,
|
|
191
|
-
ocirRepositoryName,
|
|
192
|
-
apiGwPathPrefix: process.env.OCI_APIGW_PATH_PREFIX?.trim() || undefined,
|
|
193
|
-
apiGwRoutePath: process.env.OCI_APIGW_ROUTE_PATH?.trim() || undefined,
|
|
194
|
-
apiGwMethods: apiGwMethods && apiGwMethods.length > 0 ? apiGwMethods : undefined,
|
|
195
|
-
pgUrl: process.env.PG_URL?.trim() || undefined,
|
|
196
|
-
vaultOcid: process.env.OCI_VAULT_OCID?.trim() || undefined,
|
|
197
|
-
keyOcid: process.env.OCI_KEY_OCID?.trim() || undefined,
|
|
198
|
-
pgSecretOcid: process.env.PG_SECRET_OCID?.trim() || undefined,
|
|
199
|
-
backend: backendConfig,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NpLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvamF2YS1mdW5jdGlvbi9vY2ktY2RrL2NvbmZpZy9vY2ktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0hILG9DQWlGQztBQS9MRCx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHVDQUF5QjtBQUN6QixtREFBcUM7QUFDckMsaUVBQW1EO0FBRW5ELDBHQUEwRztBQUMxRyxTQUFTLGlDQUFpQztJQUN4QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDO0lBQ3pELElBQUksQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUEwQyxFQUFFLENBQUM7UUFDekQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFD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Q0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWQsT0FBTztRQUNMLGFBQWE7UUFDYixpQkFBaUIsRUFBRSxtQkFBbUI7UUFDdEMsU0FBUztRQUNULE1BQU07UUFDTixTQUFTO1FBQ1QsZUFBZTtRQUNmLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUN2RSxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQ3JFLFlBQVksRUFBRSxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNoRixLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUM5QyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUMxRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUN0RCxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUM3RCxPQUFPLEVBQUUsYUFBYTtLQUN2QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT0NJIENvbmZpZ3VyYXRpb24gZm9yIFRlc3QgRnVuY3Rpb25cbiAqXG4gKiBSZXF1aXJlZCBlbnYgdmFycyAobm8gZGVmYXVsdHM7IHRocm93cyBpZiBtaXNzaW5nKTpcbiAqIC0gT0NJX0NPTVBBUlRNRU5UX09DSUQgKG9yIE9DSV9DT01QQVJUTUVOVF9JRClcbiAqIC0gT0NJX09DSVJfQ09NUEFSVE1FTlRfT0NJRCAob3Igc2FtZSBhcyBjb21wYXJ0bWVudDsgcm9vdCBhbGxvd2VkIGlmIGV4cGxpY2l0bHkgc2V0KVxuICogLSBPQ0lfVEVOQU5DWV9PQ0lEIChvciBPQ0lfVEVOQU5DWV9JRCkg4oCTIGlmIHVuc2V0LCByZWFkIGZyb20gT0NJIENMSSBjb25maWcgKHNlZSBiZWxvdylcbiAqIC0gT0NJX1JFR0lPTiDigJMgaWYgdW5zZXQsIHJlYWQgZnJvbSBPQ0kgQ0xJIGNvbmZpZyAoc2VlIGJlbG93KVxuICpcbiAqIE9DSSBDTEkgY29uZmlnOiBkZWZhdWx0IGZpbGUgaXMgfi8ub2NpL2NvbmZpZywgZGVmYXVsdCBwcm9maWxlIGlzIERFRkFVTFQuXG4gKiAtIE9DSV9OQU1FU1BBQ0Ug4oCTIGlmIHVuc2V0LCBvYnRhaW5lZCB2aWEgT0NJIFNESyAoT2JqZWN0IFN0b3JhZ2UgZ2V0TmFtZXNwYWNlLCBzYW1lIGFzIFwib2NpIG9zIG5zIGdldFwiKVxuICogLSBPQ0lfRlVOQ1RJT05fQVBQX05BTUVcbiAqIC0gT0NJX0ZVTkNUSU9OX05BTUVcbiAqIC0gT0NJX09DSVJfUkVQT1NJVE9SWV9OQU1FIChpZiB1bnNldCwgdXNlcyBPQ0lfRlVOQ1RJT05fQVBQX05BTUUpXG4gKlxuICogT3B0aW9uYWwg4oCTIEFQSSBHYXRld2F5IGRlcGxveW1lbnQgKGRlZmF1bHRzOiBwYXRoUHJlZml4ICcvJywgcm91dGUgcGF0aCAnL3twYXRoKn0nLCBtZXRob2RzIEdFVCxQT1NULE9QVElPTlMpOlxuICogLSBPQ0lfQVBJR1dfUEFUSF9QUkVGSVhcbiAqIC0gT0NJX0FQSUdXX1JPVVRFX1BBVEhcbiAqIC0gT0NJX0FQSUdXX01FVEhPRFMgKGNvbW1hLXNlcGFyYXRlZCwgZS5nLiBHRVQsUE9TVCxPUFRJT05TKVxuICpcbiAqIE9wdGlvbmFsIChPQ0kgQ0xJIGNvbmZpZyk6IGNvbmZpZyBmaWxlIGRlZmF1bHQgaXMgfi8ub2NpL2NvbmZpZywgcHJvZmlsZSBkZWZhdWx0IGlzIERFRkFVTFQuXG4gKiAtIE9DSV9DT05GSUdfRklMRSDigJMgb3ZlcnJpZGUgY29uZmlnIGZpbGUgcGF0aFxuICogLSBPQ0lfQ0xJX1BST0ZJTEUg4oCTIG92ZXJyaWRlIHByb2ZpbGUgbmFtZVxuICogLSBQR19VUkwg4oCTIFBvc3RncmVTUUwgY29ubmVjdGlvbiBzdHJpbmcuIElmIHNldCB3aXRoIE9DSV9WQVVMVF9PQ0lELCBzdGFjayBjcmVhdGVzIFZhdWx0IHNlY3JldCAoT0NJX0tFWV9PQ0lEIHJlcXVpcmVkKS4gT3RoZXJ3aXNlIHBhc3NlZCB0byBmdW5jdGlvbiBhcyBjb25maWcgKGNsZWFyLXRleHQ7IHdhcm5pbmcgZW1pdHRlZCkuXG4gKiAtIE9DSV9WQVVMVF9PQ0lELCBPQ0lfS0VZX09DSUQg4oCTIHdoZW4gc2V0IHdpdGggUEdfVVJMLCBzdGFjayBjcmVhdGVzIHNlY3JldCBpbiBWYXVsdC5cbiAqIC0gUEdfU0VDUkVUX09DSUQg4oCTIGV4aXN0aW5nIE9DSSBWYXVsdCBzZWNyZXQgT0NJRCBmb3IgUEcgKHdoZW4gUEdfVVJMIGlzIG5vdCBzZXQpLlxuICpcbiAqIFRoZSBGdW5jdGlvbnMgcmVzb3VyY2UgcmVxdWlyZXMgdGhlIGNvbnRhaW5lciBpbWFnZSB0byBhbHJlYWR5IGV4aXN0IGluIE9DSVJcbiAqIChlLmcuIGJ1aWxkIGFuZCBwdXNoIHdpdGggc2NyaXB0cy9idWlsZC1kb2NrZXIuc2ggYW5kIHNjcmlwdHMvZGVwbG95LW9jaS1mdW5jdGlvbi5zaCkuXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIGNvbW1vbiBmcm9tICdvY2ktY29tbW9uJztcbmltcG9ydCAqIGFzIG9iamVjdHN0b3JhZ2UgZnJvbSAnb2NpLW9iamVjdHN0b3JhZ2UnO1xuXG4vKiogUmVhZCB0ZW5hbmN5IGFuZCByZWdpb24gZnJvbSBPQ0kgQ0xJIGNvbmZpZy4gRGVmYXVsdCBmaWxlOiB+Ly5vY2kvY29uZmlnLCBkZWZhdWx0IHByb2ZpbGU6IERFRkFVTFQuICovXG5mdW5jdGlvbiByZWFkVGVuYW5jeUFuZFJlZ2lvbkZyb21DbGlDb25maWcoKTogeyB0ZW5hbmN5Pzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmcgfSB7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5PQ0lfQ09ORklHX0ZJTEUgfHwgcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5vY2knLCAnY29uZmlnJyk7XG4gIGNvbnN0IHByb2ZpbGUgPSBwcm9jZXNzLmVudi5PQ0lfQ0xJX1BST0ZJTEUgfHwgJ0RFRkFVTFQnO1xuICB0cnkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdQYXRoKSkgcmV0dXJuIHt9O1xuICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoY29uZmlnUGF0aCwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgbGV0IGluUHJvZmlsZSA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc3VsdDogeyB0ZW5hbmN5Pzogc3RyaW5nOyByZWdpb24/OiBzdHJpbmcgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQuc3RhcnRzV2l0aCgnWycpICYmIHRyaW1tZWQuZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICBpblByb2ZpbGUgPSB0cmltbWVkLnNsaWNlKDEsIC0xKSA9PT0gcHJvZmlsZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWluUHJvZmlsZSkgY29udGludWU7XG4gICAgICBjb25zdCBlcSA9IHRyaW1tZWQuaW5kZXhPZignPScpO1xuICAgICAgaWYgKGVxIDw9IDApIGNvbnRpbnVlO1xuICAgICAgY29uc3Qga2V5ID0gdHJpbW1lZC5zbGljZSgwLCBlcSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRyaW1tZWQuc2xpY2UoZXEgKyAxKS50cmltKCk7XG4gICAgICBpZiAoa2V5ID09PSAndGVuYW5jeScpIHJlc3VsdC50ZW5hbmN5ID0gdmFsdWU7XG4gICAgICBpZiAoa2V5ID09PSAncmVnaW9uJykgcmVzdWx0LnJlZ2lvbiA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqIEdldCBvYmplY3Qgc3RvcmFnZSBuYW1lc3BhY2UgdmlhIE9DSSBTREsgKHNhbWUgYXMgXCJvY2kgb3MgbnMgZ2V0XCIpLiBVc2VzIH4vLm9jaS9jb25maWcsIERFRkFVTFQgcHJvZmlsZS4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE5hbWVzcGFjZUZyb21PY2lTZGsoY29tcGFydG1lbnRJZDogc3RyaW5nLCByZWdpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwcm9jZXNzLmVudi5PQ0lfQ09ORklHX0ZJTEUgfHwgcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5vY2knLCAnY29uZmlnJyk7XG4gIGNvbnN0IHByb2ZpbGUgPSBwcm9jZXNzLmVudi5PQ0lfQ0xJX1BST0ZJTEUgfHwgJ0RFRkFVTFQnO1xuICB0cnkge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGNvbW1vbi5Db25maWdGaWxlQXV0aGVudGljYXRpb25EZXRhaWxzUHJvdmlkZXIoY29uZmlnUGF0aCwgcHJvZmlsZSk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IG9iamVjdHN0b3JhZ2UuT2JqZWN0U3RvcmFnZUNsaWVudCh7IGF1dGhlbnRpY2F0aW9uRGV0YWlsc1Byb3ZpZGVyOiBwcm92aWRlciB9KTtcbiAgICBjbGllbnQucmVnaW9uSWQgPSByZWdpb247XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0TmFtZXNwYWNlKHtcbiAgICAgIGNvbXBhcnRtZW50SWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnZhbHVlPy50cmltKCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPY2lCYWNrZW5kQ29uZmlnIHtcbiAgdHlwZTogJ29jaScgfCAnaHR0cCcgfCAnbG9jYWwnO1xuICBidWNrZXQ/OiBzdHJpbmc7XG4gIGtleT86IHN0cmluZztcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgdXBkYXRlTWV0aG9kPzogc3RyaW5nO1xuICBsb2NrQWRkcmVzcz86IHN0cmluZztcbiAgdW5sb2NrQWRkcmVzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPY2lDb25maWcge1xuICBjb21wYXJ0bWVudElkOiBzdHJpbmc7XG4gIG9jaXJDb21wYXJ0bWVudElkPzogc3RyaW5nO1xuICB0ZW5hbmN5SWQ6IHN0cmluZztcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBmdW5jdGlvbkFwcE5hbWU6IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIG9jaXJSZXBvc2l0b3J5TmFtZT86IHN0cmluZztcbiAgLyoqIFdoZW4gc2V0LCBzdGFjayBjcmVhdGVzIFZhdWx0IHNlY3JldCAocGctdXJsKSBmcm9tIHRoaXMgdmFsdWUgKHJlcXVpcmVzIHZhdWx0T2NpZCBhbmQga2V5T2NpZCB3aGVuIHVzaW5nIFZhdWx0KS4gKi9cbiAgcGdVcmw/OiBzdHJpbmc7XG4gIC8qKiBWYXVsdCBPQ0lEIGZvciBjcmVhdGluZyBwZy11cmwgc2VjcmV0IChyZXF1aXJlZCB3aGVuIHBnVXJsIGlzIHNldCBhbmQgdXNpbmcgVmF1bHQpLiAqL1xuICB2YXVsdE9jaWQ/OiBzdHJpbmc7XG4gIC8qKiBLTVMgS2V5IE9DSUQgZm9yIGVuY3J5cHRpbmcgcGctdXJsIHNlY3JldCAocmVxdWlyZWQgd2hlbiB2YXVsdE9jaWQgaXMgc2V0KS4gKi9cbiAga2V5T2NpZD86IHN0cmluZztcbiAgLyoqIFdoZW4gcGdVcmwgaXMgbm90IHNldDogdXNlIHRoaXMgZXhpc3RpbmcgT0NJIFZhdWx0IHNlY3JldCBPQ0lEIGZvciBQRyAoc2V0IFBHX1NFQ1JFVF9PQ0lEIGVudiB2YXIpLiAqL1xuICBwZ1NlY3JldE9jaWQ/OiBzdHJpbmc7XG4gIC8qKiBBUEkgR2F0ZXdheSBkZXBsb3ltZW50IHBhdGggcHJlZml4IChPQ0lfQVBJR1dfUEFUSF9QUkVGSVgpLiBEZWZhdWx0ICcvJy4gKi9cbiAgYXBpR3dQYXRoUHJlZml4Pzogc3RyaW5nO1xuICAvKiogQVBJIEdhdGV3YXkgcm91dGUgcGF0aCAoT0NJX0FQSUdXX1JPVVRFX1BBVEgpLiBEZWZhdWx0ICcve3BhdGgqfScuICovXG4gIGFwaUd3Um91dGVQYXRoPzogc3RyaW5nO1xuICAvKiogQVBJIEdhdGV3YXkgcm91dGUgbWV0aG9kcyAoT0NJX0FQSUdXX01FVEhPRFMpLiBEZWZhdWx0ICdHRVQsUE9TVCxPUFRJT05TJy4gKi9cbiAgYXBpR3dNZXRob2RzPzogc3RyaW5nW107XG4gIGJhY2tlbmQ/OiBPY2lCYWNrZW5kQ29uZmlnO1xufVxuXG5jb25zdCBiYWNrZW5kVHlwZSA9IChwcm9jZXNzLmVudi5PQ0lfU1RBVEVfQkFDS0VORF9UWVBFIHx8ICdsb2NhbCcpIGFzICdvY2knIHwgJ2h0dHAnIHwgJ2xvY2FsJztcblxuY29uc3QgYmFja2VuZENvbmZpZzogT2NpQmFja2VuZENvbmZpZyB8IHVuZGVmaW5lZCA9IGJhY2tlbmRUeXBlID09PSAnbG9jYWwnXG4gID8gdW5kZWZpbmVkXG4gIDogYmFja2VuZFR5cGUgPT09ICdvY2knXG4gICAgPyB7XG4gICAgICAgIHR5cGU6ICdvY2knLFxuICAgICAgICBidWNrZXQ6IHByb2Nlc3MuZW52Lk9DSV9TVEFURV9CVUNLRVQgfHwgJ3RmLXN0YXRlJyxcbiAgICAgICAga2V5OiBwcm9jZXNzLmVudi5PQ0lfU1RBVEVfS0VZIHx8ICdmdW5jdGlvbi1zdGFjay90ZXJyYWZvcm0udGZzdGF0ZScsXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIHR5cGU6ICdodHRwJyxcbiAgICAgICAgYWRkcmVzczogcHJvY2Vzcy5lbnYuT0NJX1NUQVRFX0hUVFBfQUREUkVTUyB8fCAnJyxcbiAgICAgICAgdXBkYXRlTWV0aG9kOiBwcm9jZXNzLmVudi5PQ0lfU1RBVEVfSFRUUF9VUERBVEVfTUVUSE9EIHx8ICdQVVQnLFxuICAgICAgICBsb2NrQWRkcmVzczogcHJvY2Vzcy5lbnYuT0NJX1NUQVRFX0hUVFBfTE9DS19BRERSRVNTLFxuICAgICAgICB1bmxvY2tBZGRyZXNzOiBwcm9jZXNzLmVudi5PQ0lfU1RBVEVfSFRUUF9VTkxPQ0tfQUREUkVTUyxcbiAgICAgIH07XG5cbi8qKlxuICogTG9hZCBPQ0kgY29uZmlnIGZyb20gZW52IGFuZCBDTEkgY29uZmlnLiBXaGVuIE9DSV9OQU1FU1BBQ0UgaXMgdW5zZXQsIGZldGNoZXMgaXQgdmlhIE9DSSBTREsgKGdldE5hbWVzcGFjZSkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRPY2lDb25maWcoKTogUHJvbWlzZTxPY2lDb25maWc+IHtcbiAgY29uc3QgY29tcGFydG1lbnRJZCA9IHByb2Nlc3MuZW52Lk9DSV9DT01QQVJUTUVOVF9PQ0lEPy50cmltKCkgfHwgcHJvY2Vzcy5lbnYuT0NJX0NPTVBBUlRNRU5UX0lEPy50cmltKCk7XG4gIGlmICghY29tcGFydG1lbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPQ0lfQ09NUEFSVE1FTlRfT0NJRCBpcyByZXF1aXJlZCAob3IgT0NJX0NPTVBBUlRNRU5UX0lEKS4gRXhhbXBsZTogZXhwb3J0IE9DSV9DT01QQVJUTUVOVF9PQ0lEPVwib2NpZDEuY29tcGFydG1lbnQub2MxLi5hYWFhYWFhLi4uXCInXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG9jaXJDb21wYXJ0bWVudE9jaWQgPSBwcm9jZXNzLmVudi5PQ0lfT0NJUl9DT01QQVJUTUVOVF9PQ0lEPy50cmltKCkgfHwgcHJvY2Vzcy5lbnYuT0NJX09DSVJfQ09NUEFSVE1FTlRfSUQ/LnRyaW0oKSB8fCBjb21wYXJ0bWVudElkO1xuICBpZiAoIW9jaXJDb21wYXJ0bWVudE9jaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT0NJX09DSVJfQ09NUEFSVE1FTlRfT0NJRCBpcyByZXF1aXJlZCAob3Igc2V0IE9DSV9DT01QQVJUTUVOVF9PQ0lEIHRvIHVzZSB0aGUgc2FtZSBjb21wYXJ0bWVudCkuICcgK1xuICAgICAgJ0V4YW1wbGU6IGV4cG9ydCBPQ0lfT0NJUl9DT01QQVJUTUVOVF9PQ0lEPVwib2NpZDEuY29tcGFydG1lbnQub2MxLi5hYWFhYWFhLi4uXCInXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGNsaUNvbmZpZyA9IHJlYWRUZW5hbmN5QW5kUmVnaW9uRnJvbUNsaUNvbmZpZygpO1xuICBjb25zdCB0ZW5hbmN5SWQgPSBwcm9jZXNzLmVudi5PQ0lfVEVOQU5DWV9PQ0lEPy50cmltKCkgfHwgcHJvY2Vzcy5lbnYuT0NJX1RFTkFOQ1lfSUQ/LnRyaW0oKSB8fCBjbGlDb25maWcudGVuYW5jeT8udHJpbSgpO1xuICBpZiAoIXRlbmFuY3lJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPQ0lfVEVOQU5DWV9PQ0lEIGlzIHJlcXVpcmVkIChvciBPQ0lfVEVOQU5DWV9JRCksIG9yIHJ1biBcIm9jaSBzZXR1cCBjb25maWdcIiBzbyBpdCBjYW4gYmUgcmVhZCBmcm9tIH4vLm9jaS9jb25maWcnXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52Lk9DSV9SRUdJT04/LnRyaW0oKSB8fCBjbGlDb25maWcucmVnaW9uPy50cmltKCk7XG4gIGlmICghcmVnaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09DSV9SRUdJT04gaXMgcmVxdWlyZWQgKG9yIHNldCBpbiB+Ly5vY2kvY29uZmlnKS4gRXhhbXBsZTogZXhwb3J0IE9DSV9SRUdJT049XCJldS1mcmFua2Z1cnQtMVwiJ1xuICAgICk7XG4gIH1cblxuICBsZXQgbmFtZXNwYWNlID0gcHJvY2Vzcy5lbnYuT0NJX05BTUVTUEFDRT8udHJpbSgpO1xuICBpZiAoIW5hbWVzcGFjZSB8fCBuYW1lc3BhY2UgPT09ICd5b3VyLW5hbWVzcGFjZScpIHtcbiAgICBuYW1lc3BhY2UgPSAoYXdhaXQgZ2V0TmFtZXNwYWNlRnJvbU9jaVNkayhjb21wYXJ0bWVudElkLCByZWdpb24pKSA/PyAnJztcbiAgfVxuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPQ0lfTkFNRVNQQUNFIGlzIHJlcXVpcmVkLiBTZXQgaXQsIG9yIGVuc3VyZSBPQ0kgU0RLIGNhbiByZWFkIGl0IChvY2kgc2V0dXAgY29uZmlnIGFuZCBzYW1lIGNyZWRlbnRpYWxzIGZvciBPYmplY3QgU3RvcmFnZSkuICcgK1xuICAgICAgJ0V4YW1wbGU6IGV4cG9ydCBPQ0lfTkFNRVNQQUNFPVwieW91ci1hY3R1YWwtbmFtZXNwYWNlXCInXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bmN0aW9uQXBwTmFtZSA9IHByb2Nlc3MuZW52Lk9DSV9GVU5DVElPTl9BUFBfTkFNRT8udHJpbSgpO1xuICBpZiAoIWZ1bmN0aW9uQXBwTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdPQ0lfRlVOQ1RJT05fQVBQX05BTUUgaXMgcmVxdWlyZWQuIEV4YW1wbGU6IGV4cG9ydCBPQ0lfRlVOQ1RJT05fQVBQX05BTUU9XCJteS1mdW5jdGlvbi1hcHBcIidcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25OYW1lID0gcHJvY2Vzcy5lbnYuT0NJX0ZVTkNUSU9OX05BTUU/LnRyaW0oKTtcbiAgaWYgKCFmdW5jdGlvbk5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnT0NJX0ZVTkNUSU9OX05BTUUgaXMgcmVxdWlyZWQuIEV4YW1wbGU6IGV4cG9ydCBPQ0lfRlVOQ1RJT05fTkFNRT1cIm15LWZ1bmN0aW9uXCInXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG9jaXJSZXBvc2l0b3J5TmFtZSA9IHByb2Nlc3MuZW52Lk9DSV9PQ0lSX1JFUE9TSVRPUllfTkFNRT8udHJpbSgpIHx8IGZ1bmN0aW9uQXBwTmFtZTtcblxuICBjb25zdCBhcGlHd01ldGhvZHNTdHIgPSBwcm9jZXNzLmVudi5PQ0lfQVBJR1dfTUVUSE9EUz8udHJpbSgpO1xuICBjb25zdCBhcGlHd01ldGhvZHMgPSBhcGlHd01ldGhvZHNTdHJcbiAgICA/IGFwaUd3TWV0aG9kc1N0ci5zcGxpdCgnLCcpLm1hcCgobSkgPT4gbS50cmltKCkpLmZpbHRlcihCb29sZWFuKVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgY29tcGFydG1lbnRJZCxcbiAgICBvY2lyQ29tcGFydG1lbnRJZDogb2NpckNvbXBhcnRtZW50T2NpZCxcbiAgICB0ZW5hbmN5SWQsXG4gICAgcmVnaW9uLFxuICAgIG5hbWVzcGFjZSxcbiAgICBmdW5jdGlvbkFwcE5hbWUsXG4gICAgZnVuY3Rpb25OYW1lLFxuICAgIG9jaXJSZXBvc2l0b3J5TmFtZSxcbiAgICBhcGlHd1BhdGhQcmVmaXg6IHByb2Nlc3MuZW52Lk9DSV9BUElHV19QQVRIX1BSRUZJWD8udHJpbSgpIHx8IHVuZGVmaW5lZCxcbiAgICBhcGlHd1JvdXRlUGF0aDogcHJvY2Vzcy5lbnYuT0NJX0FQSUdXX1JPVVRFX1BBVEg/LnRyaW0oKSB8fCB1bmRlZmluZWQsXG4gICAgYXBpR3dNZXRob2RzOiBhcGlHd01ldGhvZHMgJiYgYXBpR3dNZXRob2RzLmxlbmd0aCA+IDAgPyBhcGlHd01ldGhvZHMgOiB1bmRlZmluZWQsXG4gICAgcGdVcmw6IHByb2Nlc3MuZW52LlBHX1VSTD8udHJpbSgpIHx8IHVuZGVmaW5lZCxcbiAgICB2YXVsdE9jaWQ6IHByb2Nlc3MuZW52Lk9DSV9WQVVMVF9PQ0lEPy50cmltKCkgfHwgdW5kZWZpbmVkLFxuICAgIGtleU9jaWQ6IHByb2Nlc3MuZW52Lk9DSV9LRVlfT0NJRD8udHJpbSgpIHx8IHVuZGVmaW5lZCxcbiAgICBwZ1NlY3JldE9jaWQ6IHByb2Nlc3MuZW52LlBHX1NFQ1JFVF9PQ0lEPy50cmltKCkgfHwgdW5kZWZpbmVkLFxuICAgIGJhY2tlbmQ6IGJhY2tlbmRDb25maWcsXG4gIH07XG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Construct } from 'constructs';
|
|
2
|
-
import { TerraformStack } from 'cdktf';
|
|
3
|
-
import { OciBackendConfig } from '../config/oci-config';
|
|
4
|
-
export interface OciStackConfig {
|
|
5
|
-
compartmentId: string;
|
|
6
|
-
ocirCompartmentId?: string;
|
|
7
|
-
tenancyId: string;
|
|
8
|
-
region: string;
|
|
9
|
-
namespace: string;
|
|
10
|
-
functionAppName: string;
|
|
11
|
-
functionName: string;
|
|
12
|
-
ocirRepositoryName?: string;
|
|
13
|
-
/** When set with vaultOcid and keyOcid, stack creates Vault secret (pg-url) and function uses it. */
|
|
14
|
-
pgUrl?: string;
|
|
15
|
-
/** Vault OCID (required with keyOcid when pgUrl is set and using Vault). */
|
|
16
|
-
vaultOcid?: string;
|
|
17
|
-
/** KMS Key OCID (required when vaultOcid is set). */
|
|
18
|
-
keyOcid?: string;
|
|
19
|
-
/** When pgUrl is not set: existing OCI Vault secret OCID for PG (function config key: PG_SECRET_OCID). */
|
|
20
|
-
pgSecretOcid?: string;
|
|
21
|
-
/** API Gateway deployment path prefix. Default '/'. */
|
|
22
|
-
apiGwPathPrefix?: string;
|
|
23
|
-
/** API Gateway route path. Default '/{path*}'. */
|
|
24
|
-
apiGwRoutePath?: string;
|
|
25
|
-
/** API Gateway route methods. Default ['GET', 'POST', 'OPTIONS']. */
|
|
26
|
-
apiGwMethods?: string[];
|
|
27
|
-
backend?: OciBackendConfig;
|
|
28
|
-
}
|
|
29
|
-
export declare class FunctionStack extends TerraformStack {
|
|
30
|
-
constructor(scope: Construct, id: string, config: OciStackConfig);
|
|
31
|
-
}
|