@pulumi/scm
Version:
A Pulumi package for managing resources on Strata Cloud Manager.. Based on terraform-provider-scm: version v0.2.1
170 lines • 6.96 kB
JavaScript
;
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.RemoteNetwork = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("./utilities");
/**
* RemoteNetwork resource
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as scm from "@pulumi/scm";
*
* // --- DEPENDENCY 1: IKE Crypto Profile ---
* // This profile defines the encryption and authentication algorithms for the IKE Gateway.
* // The values are taken from the 'createTestIKECryptoProfile' helper function.
* const example = new scm.IkeCryptoProfile("example", {
* name: "example-ike-crypto-11",
* folder: "Remote Networks",
* hashes: ["sha256"],
* dhGroups: ["group14"],
* encryptions: ["aes-256-cbc"],
* });
* // --- DEPENDENCY 2: IKE Gateway ---
* // This defines the VPN peer. It depends on the IKE Crypto Profile created above.
* // The values are taken from the 'createTestIKEGateway' helper function.
* const exampleIkeGateway = new scm.IkeGateway("example", {
* name: "example-ike-gateway-11",
* folder: "Remote Networks",
* authentication: {
* preSharedKey: {
* key: "secret",
* },
* },
* peerAddress: {
* ip: "1.1.1.1",
* },
* protocol: {
* ikev1: {
* ikeCryptoProfile: example.name,
* },
* },
* }, {
* dependsOn: [example],
* });
* // --- DEPENDENCY 3: IPsec Tunnel ---
* // This defines the tunnel interface itself and uses the IKE Gateway.
* // The values are taken from the 'createTestIPsecTunnel' helper function.
* const exampleIpsecTunnel = new scm.IpsecTunnel("example", {
* name: "example-ipsec-tunnel-11",
* folder: "Remote Networks",
* antiReplay: true,
* copyTos: false,
* enableGreEncapsulation: false,
* autoKey: {
* ikeGateways: [{
* name: exampleIkeGateway.name,
* }],
* ipsecCryptoProfile: "PaloAlto-Networks-IPSec-Crypto",
* },
* }, {
* dependsOn: [exampleIkeGateway],
* });
* // --- MAIN RESOURCE: Remote Network ---
* // This is the final resource, which uses the IPsec Tunnel created above.
* // The values are taken directly from the 'Test_deployment_services_RemoteNetworksAPIService_Create' test.
* const exampleRemoteNetwork = new scm.RemoteNetwork("example", {
* name: "example-remote-network-11",
* folder: "Remote Networks",
* licenseType: "FWAAS-AGGREGATE",
* region: "us-west-2",
* spnName: "us-west-dakota",
* subnets: ["192.168.1.0/24"],
* ipsecTunnel: exampleIpsecTunnel.name,
* protocol: {
* bgp: {
* enable: true,
* peerAs: "65000",
* localIpAddress: "169.254.1.1",
* peerIpAddress: "169.254.1.2",
* doNotExportRoutes: false,
* originateDefaultRoute: false,
* summarizeMobileUserRoutes: false,
* },
* },
* }, {
* dependsOn: [exampleIpsecTunnel],
* });
* ```
*/
class RemoteNetwork extends pulumi.CustomResource {
/**
* Get an existing RemoteNetwork resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name, id, state, opts) {
return new RemoteNetwork(name, state, { ...opts, id: id });
}
/**
* Returns true if the given object is an instance of RemoteNetwork. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === RemoteNetwork.__pulumiType;
}
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["ecmpLoadBalancing"] = state?.ecmpLoadBalancing;
resourceInputs["ecmpTunnels"] = state?.ecmpTunnels;
resourceInputs["encryptedValues"] = state?.encryptedValues;
resourceInputs["folder"] = state?.folder;
resourceInputs["ipsecTunnel"] = state?.ipsecTunnel;
resourceInputs["licenseType"] = state?.licenseType;
resourceInputs["name"] = state?.name;
resourceInputs["protocol"] = state?.protocol;
resourceInputs["region"] = state?.region;
resourceInputs["secondaryIpsecTunnel"] = state?.secondaryIpsecTunnel;
resourceInputs["spnName"] = state?.spnName;
resourceInputs["subnets"] = state?.subnets;
resourceInputs["tfid"] = state?.tfid;
}
else {
const args = argsOrState;
if (args?.folder === undefined && !opts.urn) {
throw new Error("Missing required property 'folder'");
}
if (args?.licenseType === undefined && !opts.urn) {
throw new Error("Missing required property 'licenseType'");
}
if (args?.region === undefined && !opts.urn) {
throw new Error("Missing required property 'region'");
}
resourceInputs["ecmpLoadBalancing"] = args?.ecmpLoadBalancing;
resourceInputs["ecmpTunnels"] = args?.ecmpTunnels;
resourceInputs["folder"] = args?.folder;
resourceInputs["ipsecTunnel"] = args?.ipsecTunnel;
resourceInputs["licenseType"] = args?.licenseType;
resourceInputs["name"] = args?.name;
resourceInputs["protocol"] = args?.protocol;
resourceInputs["region"] = args?.region;
resourceInputs["secondaryIpsecTunnel"] = args?.secondaryIpsecTunnel;
resourceInputs["spnName"] = args?.spnName;
resourceInputs["subnets"] = args?.subnets;
resourceInputs["encryptedValues"] = undefined /*out*/;
resourceInputs["tfid"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
const secretOpts = { additionalSecretOutputs: ["encryptedValues"] };
opts = pulumi.mergeOptions(opts, secretOpts);
super(RemoteNetwork.__pulumiType, name, resourceInputs, opts);
}
}
exports.RemoteNetwork = RemoteNetwork;
/** @internal */
RemoteNetwork.__pulumiType = 'scm:index/remoteNetwork:RemoteNetwork';
//# sourceMappingURL=remoteNetwork.js.map