@upcloud/pulumi-upcloud 0.0.5

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.
Files changed (198) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +61 -0
  3. package/config/index.d.ts +1 -0
  4. package/config/index.js +21 -0
  5. package/config/index.js.map +1 -0
  6. package/config/vars.d.ts +25 -0
  7. package/config/vars.js +43 -0
  8. package/config/vars.js.map +1 -0
  9. package/floatingIpAddress.d.ts +128 -0
  10. package/floatingIpAddress.js +90 -0
  11. package/floatingIpAddress.js.map +1 -0
  12. package/gateway.d.ts +206 -0
  13. package/gateway.js +111 -0
  14. package/gateway.js.map +1 -0
  15. package/gatewayConnection.d.ts +157 -0
  16. package/gatewayConnection.js +105 -0
  17. package/gatewayConnection.js.map +1 -0
  18. package/gatewayConnectionTunnel.d.ts +129 -0
  19. package/gatewayConnectionTunnel.js +78 -0
  20. package/gatewayConnectionTunnel.js.map +1 -0
  21. package/getHosts.d.ts +55 -0
  22. package/getHosts.js +52 -0
  23. package/getHosts.js.map +1 -0
  24. package/getIpAddresses.d.ts +51 -0
  25. package/getIpAddresses.js +48 -0
  26. package/getIpAddresses.js.map +1 -0
  27. package/getKubernetesCluster.d.ts +33 -0
  28. package/getKubernetesCluster.js +28 -0
  29. package/getKubernetesCluster.js.map +1 -0
  30. package/getLoadBalancerDnsChallengeDomain.d.ts +40 -0
  31. package/getLoadBalancerDnsChallengeDomain.js +42 -0
  32. package/getLoadBalancerDnsChallengeDomain.js.map +1 -0
  33. package/getManagedDatabaseMysqlSessions.d.ts +83 -0
  34. package/getManagedDatabaseMysqlSessions.js +74 -0
  35. package/getManagedDatabaseMysqlSessions.js.map +1 -0
  36. package/getManagedDatabaseOpensearchIndices.d.ts +82 -0
  37. package/getManagedDatabaseOpensearchIndices.js +76 -0
  38. package/getManagedDatabaseOpensearchIndices.js.map +1 -0
  39. package/getManagedDatabasePostgresqlSessions.d.ts +83 -0
  40. package/getManagedDatabasePostgresqlSessions.js +74 -0
  41. package/getManagedDatabasePostgresqlSessions.js.map +1 -0
  42. package/getManagedDatabaseRedisSessions.d.ts +87 -0
  43. package/getManagedDatabaseRedisSessions.js +78 -0
  44. package/getManagedDatabaseRedisSessions.js.map +1 -0
  45. package/getManagedDatabaseValkeySessions.d.ts +83 -0
  46. package/getManagedDatabaseValkeySessions.js +74 -0
  47. package/getManagedDatabaseValkeySessions.js.map +1 -0
  48. package/getManagedObjectStoragePolicies.d.ts +33 -0
  49. package/getManagedObjectStoragePolicies.js +28 -0
  50. package/getManagedObjectStoragePolicies.js.map +1 -0
  51. package/getManagedObjectStorageRegions.d.ts +33 -0
  52. package/getManagedObjectStorageRegions.js +30 -0
  53. package/getManagedObjectStorageRegions.js.map +1 -0
  54. package/getNetworks.d.ts +60 -0
  55. package/getNetworks.js +56 -0
  56. package/getNetworks.js.map +1 -0
  57. package/getStorage.d.ts +163 -0
  58. package/getStorage.js +122 -0
  59. package/getStorage.js.map +1 -0
  60. package/getTags.d.ts +20 -0
  61. package/getTags.js +24 -0
  62. package/getTags.js.map +1 -0
  63. package/getZone.d.ts +42 -0
  64. package/getZone.js +32 -0
  65. package/getZone.js.map +1 -0
  66. package/getZones.d.ts +29 -0
  67. package/getZones.js +30 -0
  68. package/getZones.js.map +1 -0
  69. package/index.d.ts +177 -0
  70. package/index.js +287 -0
  71. package/index.js.map +1 -0
  72. package/kubernetesCluster.d.ts +237 -0
  73. package/kubernetesCluster.js +131 -0
  74. package/kubernetesCluster.js.map +1 -0
  75. package/kubernetesNodeGroup.d.ts +243 -0
  76. package/kubernetesNodeGroup.js +120 -0
  77. package/kubernetesNodeGroup.js.map +1 -0
  78. package/loadbalancer.d.ts +261 -0
  79. package/loadbalancer.js +122 -0
  80. package/loadbalancer.js.map +1 -0
  81. package/loadbalancerBackend.d.ts +121 -0
  82. package/loadbalancerBackend.js +90 -0
  83. package/loadbalancerBackend.js.map +1 -0
  84. package/loadbalancerBackendTlsConfig.d.ts +75 -0
  85. package/loadbalancerBackendTlsConfig.js +62 -0
  86. package/loadbalancerBackendTlsConfig.js.map +1 -0
  87. package/loadbalancerDynamicBackendMember.d.ts +169 -0
  88. package/loadbalancerDynamicBackendMember.js +119 -0
  89. package/loadbalancerDynamicBackendMember.js.map +1 -0
  90. package/loadbalancerDynamicCertificateBundle.d.ts +114 -0
  91. package/loadbalancerDynamicCertificateBundle.js +83 -0
  92. package/loadbalancerDynamicCertificateBundle.js.map +1 -0
  93. package/loadbalancerFrontend.d.ts +184 -0
  94. package/loadbalancerFrontend.js +126 -0
  95. package/loadbalancerFrontend.js.map +1 -0
  96. package/loadbalancerFrontendRule.d.ts +170 -0
  97. package/loadbalancerFrontendRule.js +125 -0
  98. package/loadbalancerFrontendRule.js.map +1 -0
  99. package/loadbalancerFrontendTlsConfig.d.ts +114 -0
  100. package/loadbalancerFrontendTlsConfig.js +101 -0
  101. package/loadbalancerFrontendTlsConfig.js.map +1 -0
  102. package/loadbalancerManualCertificateBundle.d.ts +111 -0
  103. package/loadbalancerManualCertificateBundle.js +72 -0
  104. package/loadbalancerManualCertificateBundle.js.map +1 -0
  105. package/loadbalancerResolver.d.ts +171 -0
  106. package/loadbalancerResolver.js +120 -0
  107. package/loadbalancerResolver.js.map +1 -0
  108. package/loadbalancerStaticBackendMember.d.ts +156 -0
  109. package/loadbalancerStaticBackendMember.js +106 -0
  110. package/loadbalancerStaticBackendMember.js.map +1 -0
  111. package/managedDatabaseLogicalDatabase.d.ts +109 -0
  112. package/managedDatabaseLogicalDatabase.js +83 -0
  113. package/managedDatabaseLogicalDatabase.js.map +1 -0
  114. package/managedDatabaseMysql.d.ts +298 -0
  115. package/managedDatabaseMysql.js +139 -0
  116. package/managedDatabaseMysql.js.map +1 -0
  117. package/managedDatabaseOpensearch.d.ts +317 -0
  118. package/managedDatabaseOpensearch.js +132 -0
  119. package/managedDatabaseOpensearch.js.map +1 -0
  120. package/managedDatabasePostgresql.d.ts +295 -0
  121. package/managedDatabasePostgresql.js +130 -0
  122. package/managedDatabasePostgresql.js.map +1 -0
  123. package/managedDatabaseRedis.d.ts +287 -0
  124. package/managedDatabaseRedis.js +128 -0
  125. package/managedDatabaseRedis.js.map +1 -0
  126. package/managedDatabaseUser.d.ts +163 -0
  127. package/managedDatabaseUser.js +94 -0
  128. package/managedDatabaseUser.js.map +1 -0
  129. package/managedDatabaseValkey.d.ts +285 -0
  130. package/managedDatabaseValkey.js +126 -0
  131. package/managedDatabaseValkey.js.map +1 -0
  132. package/managedObjectStorage.d.ts +178 -0
  133. package/managedObjectStorage.js +107 -0
  134. package/managedObjectStorage.js.map +1 -0
  135. package/managedObjectStorageBucket.d.ts +94 -0
  136. package/managedObjectStorageBucket.js +76 -0
  137. package/managedObjectStorageBucket.js.map +1 -0
  138. package/managedObjectStorageCustomDomain.d.ts +105 -0
  139. package/managedObjectStorageCustomDomain.js +89 -0
  140. package/managedObjectStorageCustomDomain.js.map +1 -0
  141. package/managedObjectStoragePolicy.d.ts +155 -0
  142. package/managedObjectStoragePolicy.js +93 -0
  143. package/managedObjectStoragePolicy.js.map +1 -0
  144. package/managedObjectStorageUser.d.ts +101 -0
  145. package/managedObjectStorageUser.js +80 -0
  146. package/managedObjectStorageUser.js.map +1 -0
  147. package/managedObjectStorageUserAccessKey.d.ts +128 -0
  148. package/managedObjectStorageUserAccessKey.js +96 -0
  149. package/managedObjectStorageUserAccessKey.js.map +1 -0
  150. package/managedObjectStorageUserPolicy.d.ts +100 -0
  151. package/managedObjectStorageUserPolicy.js +87 -0
  152. package/managedObjectStorageUserPolicy.js.map +1 -0
  153. package/network.d.ts +142 -0
  154. package/network.js +95 -0
  155. package/network.js.map +1 -0
  156. package/networkPeering.d.ts +137 -0
  157. package/networkPeering.js +96 -0
  158. package/networkPeering.js.map +1 -0
  159. package/objectStorage.d.ts +196 -0
  160. package/objectStorage.js +132 -0
  161. package/objectStorage.js.map +1 -0
  162. package/package.json +29 -0
  163. package/provider.d.ts +60 -0
  164. package/provider.js +50 -0
  165. package/provider.js.map +1 -0
  166. package/router.d.ts +124 -0
  167. package/router.js +77 -0
  168. package/router.js.map +1 -0
  169. package/server.d.ts +332 -0
  170. package/server.js +106 -0
  171. package/server.js.map +1 -0
  172. package/serverFirewallRules.d.ts +124 -0
  173. package/serverFirewallRules.js +107 -0
  174. package/serverFirewallRules.js.map +1 -0
  175. package/serverGroup.d.ts +160 -0
  176. package/serverGroup.js +91 -0
  177. package/serverGroup.js.map +1 -0
  178. package/storage.d.ts +210 -0
  179. package/storage.js +91 -0
  180. package/storage.js.map +1 -0
  181. package/storageTemplate.d.ts +151 -0
  182. package/storageTemplate.js +90 -0
  183. package/storageTemplate.js.map +1 -0
  184. package/tag.d.ts +75 -0
  185. package/tag.js +56 -0
  186. package/tag.js.map +1 -0
  187. package/types/index.d.ts +3 -0
  188. package/types/index.js +11 -0
  189. package/types/index.js.map +1 -0
  190. package/types/input.d.ts +3721 -0
  191. package/types/input.js +5 -0
  192. package/types/input.js.map +1 -0
  193. package/types/output.d.ts +3459 -0
  194. package/types/output.js +5 -0
  195. package/types/output.js.map +1 -0
  196. package/utilities.d.ts +8 -0
  197. package/utilities.js +101 -0
  198. package/utilities.js.map +1 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ManagedObjectStorageUserPolicy = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * This resource represents an UpCloud Managed Object Storage user policy attachment.
10
+ *
11
+ * ## Example Usage
12
+ *
13
+ * ```typescript
14
+ * import * as pulumi from "@pulumi/pulumi";
15
+ * import * as upcloud from "@upcloud/pulumi-upcloud";
16
+ *
17
+ * const thisManagedObjectStorage = new upcloud.ManagedObjectStorage("thisManagedObjectStorage", {
18
+ * region: "europe-1",
19
+ * configuredStatus: "started",
20
+ * });
21
+ * const thisManagedObjectStoragePolicy = new upcloud.ManagedObjectStoragePolicy("thisManagedObjectStoragePolicy", {
22
+ * description: "example description",
23
+ * document: "%7B%22Version%22%3A%20%222012-10-17%22%2C%20%20%22Statement%22%3A%20%5B%7B%22Action%22%3A%20%5B%22iam%3AGetUser%22%5D%2C%20%22Resource%22%3A%20%22%2A%22%2C%20%22Effect%22%3A%20%22Allow%22%2C%20%22Sid%22%3A%20%22editor%22%7D%5D%7D",
24
+ * serviceUuid: thisManagedObjectStorage.id,
25
+ * });
26
+ * const thisManagedObjectStorageUser = new upcloud.ManagedObjectStorageUser("thisManagedObjectStorageUser", {
27
+ * username: "example",
28
+ * serviceUuid: thisManagedObjectStorage.id,
29
+ * });
30
+ * const thisManagedObjectStorageUserPolicy = new upcloud.ManagedObjectStorageUserPolicy("thisManagedObjectStorageUserPolicy", {
31
+ * username: thisManagedObjectStorageUser.username,
32
+ * serviceUuid: thisManagedObjectStorage.id,
33
+ * });
34
+ * ```
35
+ */
36
+ class ManagedObjectStorageUserPolicy extends pulumi.CustomResource {
37
+ /**
38
+ * Get an existing ManagedObjectStorageUserPolicy resource's state with the given name, ID, and optional extra
39
+ * properties used to qualify the lookup.
40
+ *
41
+ * @param name The _unique_ name of the resulting resource.
42
+ * @param id The _unique_ provider ID of the resource to lookup.
43
+ * @param state Any extra arguments used during the lookup.
44
+ * @param opts Optional settings to control the behavior of the CustomResource.
45
+ */
46
+ static get(name, id, state, opts) {
47
+ return new ManagedObjectStorageUserPolicy(name, state, Object.assign(Object.assign({}, opts), { id: id }));
48
+ }
49
+ /**
50
+ * Returns true if the given object is an instance of ManagedObjectStorageUserPolicy. This is designed to work even
51
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
52
+ */
53
+ static isInstance(obj) {
54
+ if (obj === undefined || obj === null) {
55
+ return false;
56
+ }
57
+ return obj['__pulumiType'] === ManagedObjectStorageUserPolicy.__pulumiType;
58
+ }
59
+ constructor(name, argsOrState, opts) {
60
+ let resourceInputs = {};
61
+ opts = opts || {};
62
+ if (opts.id) {
63
+ const state = argsOrState;
64
+ resourceInputs["name"] = state ? state.name : undefined;
65
+ resourceInputs["serviceUuid"] = state ? state.serviceUuid : undefined;
66
+ resourceInputs["username"] = state ? state.username : undefined;
67
+ }
68
+ else {
69
+ const args = argsOrState;
70
+ if ((!args || args.serviceUuid === undefined) && !opts.urn) {
71
+ throw new Error("Missing required property 'serviceUuid'");
72
+ }
73
+ if ((!args || args.username === undefined) && !opts.urn) {
74
+ throw new Error("Missing required property 'username'");
75
+ }
76
+ resourceInputs["name"] = args ? args.name : undefined;
77
+ resourceInputs["serviceUuid"] = args ? args.serviceUuid : undefined;
78
+ resourceInputs["username"] = args ? args.username : undefined;
79
+ }
80
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
81
+ super(ManagedObjectStorageUserPolicy.__pulumiType, name, resourceInputs, opts);
82
+ }
83
+ }
84
+ exports.ManagedObjectStorageUserPolicy = ManagedObjectStorageUserPolicy;
85
+ /** @internal */
86
+ ManagedObjectStorageUserPolicy.__pulumiType = 'upcloud:index/managedObjectStorageUserPolicy:ManagedObjectStorageUserPolicy';
87
+ //# sourceMappingURL=managedObjectStorageUserPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedObjectStorageUserPolicy.js","sourceRoot":"","sources":["../managedObjectStorageUserPolicy.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,8BAA+B,SAAQ,MAAM,CAAC,cAAc;IACrE;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAA2C,EAAE,IAAmC;QACzI,OAAO,IAAI,8BAA8B,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IACrF,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,8BAA8B,CAAC,YAAY,CAAC;IAC/E,CAAC;IAuBD,YAAY,IAAY,EAAE,WAAsF,EAAE,IAAmC;QACjJ,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAA8D,CAAC;YAC7E,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,cAAc,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;SACnE;aAAM;YACH,MAAM,IAAI,GAAG,WAA6D,CAAC;YAC3E,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACrD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aAC3D;YACD,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;SACjE;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,8BAA8B,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;;AAvEL,wEAwEC;AA1DG,gBAAgB;AACO,2CAAY,GAAG,6EAA6E,CAAC"}
package/network.d.ts ADDED
@@ -0,0 +1,142 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * This resource represents an SDN private network that cloud servers and other resources from the same zone can be attached to.
6
+ *
7
+ * ## Example Usage
8
+ *
9
+ * ```typescript
10
+ * import * as pulumi from "@pulumi/pulumi";
11
+ * import * as upcloud from "@upcloud/pulumi-upcloud";
12
+ *
13
+ * const exampleRouter = new upcloud.Router("exampleRouter", {});
14
+ * // SDN network with a router
15
+ * const exampleNetwork = new upcloud.Network("exampleNetwork", {
16
+ * zone: "nl-ams1",
17
+ * router: exampleRouter.id,
18
+ * ipNetwork: {
19
+ * address: "10.0.0.0/24",
20
+ * dhcp: true,
21
+ * dhcpDefaultRoute: false,
22
+ * family: "IPv4",
23
+ * gateway: "10.0.0.1",
24
+ * },
25
+ * });
26
+ * ```
27
+ *
28
+ * ## Import
29
+ *
30
+ * ```sh
31
+ * $ pulumi import upcloud:index/network:Network my_example_network 03e44422-07b8-4798-a597-c8eab1fa64df
32
+ * ```
33
+ */
34
+ export declare class Network extends pulumi.CustomResource {
35
+ /**
36
+ * Get an existing Network resource's state with the given name, ID, and optional extra
37
+ * properties used to qualify the lookup.
38
+ *
39
+ * @param name The _unique_ name of the resulting resource.
40
+ * @param id The _unique_ provider ID of the resource to lookup.
41
+ * @param state Any extra arguments used during the lookup.
42
+ * @param opts Optional settings to control the behavior of the CustomResource.
43
+ */
44
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NetworkState, opts?: pulumi.CustomResourceOptions): Network;
45
+ /**
46
+ * Returns true if the given object is an instance of Network. This is designed to work even
47
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
48
+ */
49
+ static isInstance(obj: any): obj is Network;
50
+ /**
51
+ * IP subnet within the network. Network must have exactly one IP subnet.
52
+ */
53
+ readonly ipNetwork: pulumi.Output<outputs.NetworkIpNetwork>;
54
+ /**
55
+ * User defined key-value pairs to classify the network.
56
+ */
57
+ readonly labels: pulumi.Output<{
58
+ [key: string]: string;
59
+ }>;
60
+ /**
61
+ * Name of the network.
62
+ */
63
+ readonly name: pulumi.Output<string>;
64
+ /**
65
+ * UUID of a router to attach to this network.
66
+ */
67
+ readonly router: pulumi.Output<string | undefined>;
68
+ /**
69
+ * The network type
70
+ */
71
+ readonly type: pulumi.Output<string>;
72
+ /**
73
+ * The zone the network is in, e.g. `de-fra1`. You can list available zones with `upctl zone list`.
74
+ */
75
+ readonly zone: pulumi.Output<string>;
76
+ /**
77
+ * Create a Network resource with the given unique name, arguments, and options.
78
+ *
79
+ * @param name The _unique_ name of the resource.
80
+ * @param args The arguments to use to populate this resource's properties.
81
+ * @param opts A bag of options that control this resource's behavior.
82
+ */
83
+ constructor(name: string, args: NetworkArgs, opts?: pulumi.CustomResourceOptions);
84
+ }
85
+ /**
86
+ * Input properties used for looking up and filtering Network resources.
87
+ */
88
+ export interface NetworkState {
89
+ /**
90
+ * IP subnet within the network. Network must have exactly one IP subnet.
91
+ */
92
+ ipNetwork?: pulumi.Input<inputs.NetworkIpNetwork>;
93
+ /**
94
+ * User defined key-value pairs to classify the network.
95
+ */
96
+ labels?: pulumi.Input<{
97
+ [key: string]: pulumi.Input<string>;
98
+ }>;
99
+ /**
100
+ * Name of the network.
101
+ */
102
+ name?: pulumi.Input<string>;
103
+ /**
104
+ * UUID of a router to attach to this network.
105
+ */
106
+ router?: pulumi.Input<string>;
107
+ /**
108
+ * The network type
109
+ */
110
+ type?: pulumi.Input<string>;
111
+ /**
112
+ * The zone the network is in, e.g. `de-fra1`. You can list available zones with `upctl zone list`.
113
+ */
114
+ zone?: pulumi.Input<string>;
115
+ }
116
+ /**
117
+ * The set of arguments for constructing a Network resource.
118
+ */
119
+ export interface NetworkArgs {
120
+ /**
121
+ * IP subnet within the network. Network must have exactly one IP subnet.
122
+ */
123
+ ipNetwork: pulumi.Input<inputs.NetworkIpNetwork>;
124
+ /**
125
+ * User defined key-value pairs to classify the network.
126
+ */
127
+ labels?: pulumi.Input<{
128
+ [key: string]: pulumi.Input<string>;
129
+ }>;
130
+ /**
131
+ * Name of the network.
132
+ */
133
+ name?: pulumi.Input<string>;
134
+ /**
135
+ * UUID of a router to attach to this network.
136
+ */
137
+ router?: pulumi.Input<string>;
138
+ /**
139
+ * The zone the network is in, e.g. `de-fra1`. You can list available zones with `upctl zone list`.
140
+ */
141
+ zone: pulumi.Input<string>;
142
+ }
package/network.js ADDED
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Network = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * This resource represents an SDN private network that cloud servers and other resources from the same zone can be attached to.
10
+ *
11
+ * ## Example Usage
12
+ *
13
+ * ```typescript
14
+ * import * as pulumi from "@pulumi/pulumi";
15
+ * import * as upcloud from "@upcloud/pulumi-upcloud";
16
+ *
17
+ * const exampleRouter = new upcloud.Router("exampleRouter", {});
18
+ * // SDN network with a router
19
+ * const exampleNetwork = new upcloud.Network("exampleNetwork", {
20
+ * zone: "nl-ams1",
21
+ * router: exampleRouter.id,
22
+ * ipNetwork: {
23
+ * address: "10.0.0.0/24",
24
+ * dhcp: true,
25
+ * dhcpDefaultRoute: false,
26
+ * family: "IPv4",
27
+ * gateway: "10.0.0.1",
28
+ * },
29
+ * });
30
+ * ```
31
+ *
32
+ * ## Import
33
+ *
34
+ * ```sh
35
+ * $ pulumi import upcloud:index/network:Network my_example_network 03e44422-07b8-4798-a597-c8eab1fa64df
36
+ * ```
37
+ */
38
+ class Network extends pulumi.CustomResource {
39
+ /**
40
+ * Get an existing Network resource's state with the given name, ID, and optional extra
41
+ * properties used to qualify the lookup.
42
+ *
43
+ * @param name The _unique_ name of the resulting resource.
44
+ * @param id The _unique_ provider ID of the resource to lookup.
45
+ * @param state Any extra arguments used during the lookup.
46
+ * @param opts Optional settings to control the behavior of the CustomResource.
47
+ */
48
+ static get(name, id, state, opts) {
49
+ return new Network(name, state, Object.assign(Object.assign({}, opts), { id: id }));
50
+ }
51
+ /**
52
+ * Returns true if the given object is an instance of Network. This is designed to work even
53
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
54
+ */
55
+ static isInstance(obj) {
56
+ if (obj === undefined || obj === null) {
57
+ return false;
58
+ }
59
+ return obj['__pulumiType'] === Network.__pulumiType;
60
+ }
61
+ constructor(name, argsOrState, opts) {
62
+ let resourceInputs = {};
63
+ opts = opts || {};
64
+ if (opts.id) {
65
+ const state = argsOrState;
66
+ resourceInputs["ipNetwork"] = state ? state.ipNetwork : undefined;
67
+ resourceInputs["labels"] = state ? state.labels : undefined;
68
+ resourceInputs["name"] = state ? state.name : undefined;
69
+ resourceInputs["router"] = state ? state.router : undefined;
70
+ resourceInputs["type"] = state ? state.type : undefined;
71
+ resourceInputs["zone"] = state ? state.zone : undefined;
72
+ }
73
+ else {
74
+ const args = argsOrState;
75
+ if ((!args || args.ipNetwork === undefined) && !opts.urn) {
76
+ throw new Error("Missing required property 'ipNetwork'");
77
+ }
78
+ if ((!args || args.zone === undefined) && !opts.urn) {
79
+ throw new Error("Missing required property 'zone'");
80
+ }
81
+ resourceInputs["ipNetwork"] = args ? args.ipNetwork : undefined;
82
+ resourceInputs["labels"] = args ? args.labels : undefined;
83
+ resourceInputs["name"] = args ? args.name : undefined;
84
+ resourceInputs["router"] = args ? args.router : undefined;
85
+ resourceInputs["zone"] = args ? args.zone : undefined;
86
+ resourceInputs["type"] = undefined /*out*/;
87
+ }
88
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
89
+ super(Network.__pulumiType, name, resourceInputs, opts);
90
+ }
91
+ }
92
+ exports.Network = Network;
93
+ /** @internal */
94
+ Network.__pulumiType = 'upcloud:index/network:Network';
95
+ //# sourceMappingURL=network.js.map
package/network.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import * as pulumi from "@pulumi/pulumi";
2
+ import * as inputs from "./types/input";
3
+ import * as outputs from "./types/output";
4
+ /**
5
+ * Network peerings can be used to connect networks across accounts. For the network peering to become active, the peering must be made from both directions.
6
+ *
7
+ * ## Example Usage
8
+ *
9
+ * ```typescript
10
+ * import * as pulumi from "@pulumi/pulumi";
11
+ * import * as upcloud from "@upcloud/pulumi-upcloud";
12
+ *
13
+ * // Network peering requires the networks to have routers attached to them.
14
+ * const thisRouter = new upcloud.Router("thisRouter", {});
15
+ * const example = new upcloud.Network("example", {
16
+ * zone: "nl-ams1",
17
+ * router: upcloud_router.example.id,
18
+ * ipNetwork: {
19
+ * address: "10.0.0.0/24",
20
+ * dhcp: true,
21
+ * family: "IPv4",
22
+ * },
23
+ * });
24
+ * let thisNetworkPeering: upcloud.NetworkPeering | undefined;
25
+ * if (1 == true) {
26
+ * thisNetworkPeering = new upcloud.NetworkPeering("thisNetworkPeering", {
27
+ * network: {
28
+ * uuid: example.id,
29
+ * },
30
+ * peerNetwork: {
31
+ * uuid: "0305723a-e5cb-4ef6-985d-e36ed44d133a",
32
+ * },
33
+ * });
34
+ * }
35
+ * ```
36
+ */
37
+ export declare class NetworkPeering extends pulumi.CustomResource {
38
+ /**
39
+ * Get an existing NetworkPeering resource's state with the given name, ID, and optional extra
40
+ * properties used to qualify the lookup.
41
+ *
42
+ * @param name The _unique_ name of the resulting resource.
43
+ * @param id The _unique_ provider ID of the resource to lookup.
44
+ * @param state Any extra arguments used during the lookup.
45
+ * @param opts Optional settings to control the behavior of the CustomResource.
46
+ */
47
+ static get(name: string, id: pulumi.Input<pulumi.ID>, state?: NetworkPeeringState, opts?: pulumi.CustomResourceOptions): NetworkPeering;
48
+ /**
49
+ * Returns true if the given object is an instance of NetworkPeering. This is designed to work even
50
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
51
+ */
52
+ static isInstance(obj: any): obj is NetworkPeering;
53
+ /**
54
+ * Configured status of the network peering.
55
+ */
56
+ readonly configuredStatus: pulumi.Output<string>;
57
+ /**
58
+ * User defined key-value pairs to classify the network peering.
59
+ */
60
+ readonly labels: pulumi.Output<{
61
+ [key: string]: string;
62
+ }>;
63
+ /**
64
+ * Name of the network peering.
65
+ */
66
+ readonly name: pulumi.Output<string>;
67
+ /**
68
+ * Local network of the network peering.
69
+ */
70
+ readonly network: pulumi.Output<outputs.NetworkPeeringNetwork>;
71
+ /**
72
+ * Peer network of the network peering.
73
+ */
74
+ readonly peerNetwork: pulumi.Output<outputs.NetworkPeeringPeerNetwork>;
75
+ /**
76
+ * Create a NetworkPeering resource with the given unique name, arguments, and options.
77
+ *
78
+ * @param name The _unique_ name of the resource.
79
+ * @param args The arguments to use to populate this resource's properties.
80
+ * @param opts A bag of options that control this resource's behavior.
81
+ */
82
+ constructor(name: string, args: NetworkPeeringArgs, opts?: pulumi.CustomResourceOptions);
83
+ }
84
+ /**
85
+ * Input properties used for looking up and filtering NetworkPeering resources.
86
+ */
87
+ export interface NetworkPeeringState {
88
+ /**
89
+ * Configured status of the network peering.
90
+ */
91
+ configuredStatus?: pulumi.Input<string>;
92
+ /**
93
+ * User defined key-value pairs to classify the network peering.
94
+ */
95
+ labels?: pulumi.Input<{
96
+ [key: string]: pulumi.Input<string>;
97
+ }>;
98
+ /**
99
+ * Name of the network peering.
100
+ */
101
+ name?: pulumi.Input<string>;
102
+ /**
103
+ * Local network of the network peering.
104
+ */
105
+ network?: pulumi.Input<inputs.NetworkPeeringNetwork>;
106
+ /**
107
+ * Peer network of the network peering.
108
+ */
109
+ peerNetwork?: pulumi.Input<inputs.NetworkPeeringPeerNetwork>;
110
+ }
111
+ /**
112
+ * The set of arguments for constructing a NetworkPeering resource.
113
+ */
114
+ export interface NetworkPeeringArgs {
115
+ /**
116
+ * Configured status of the network peering.
117
+ */
118
+ configuredStatus?: pulumi.Input<string>;
119
+ /**
120
+ * User defined key-value pairs to classify the network peering.
121
+ */
122
+ labels?: pulumi.Input<{
123
+ [key: string]: pulumi.Input<string>;
124
+ }>;
125
+ /**
126
+ * Name of the network peering.
127
+ */
128
+ name?: pulumi.Input<string>;
129
+ /**
130
+ * Local network of the network peering.
131
+ */
132
+ network: pulumi.Input<inputs.NetworkPeeringNetwork>;
133
+ /**
134
+ * Peer network of the network peering.
135
+ */
136
+ peerNetwork: pulumi.Input<inputs.NetworkPeeringPeerNetwork>;
137
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ // *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.NetworkPeering = void 0;
6
+ const pulumi = require("@pulumi/pulumi");
7
+ const utilities = require("./utilities");
8
+ /**
9
+ * Network peerings can be used to connect networks across accounts. For the network peering to become active, the peering must be made from both directions.
10
+ *
11
+ * ## Example Usage
12
+ *
13
+ * ```typescript
14
+ * import * as pulumi from "@pulumi/pulumi";
15
+ * import * as upcloud from "@upcloud/pulumi-upcloud";
16
+ *
17
+ * // Network peering requires the networks to have routers attached to them.
18
+ * const thisRouter = new upcloud.Router("thisRouter", {});
19
+ * const example = new upcloud.Network("example", {
20
+ * zone: "nl-ams1",
21
+ * router: upcloud_router.example.id,
22
+ * ipNetwork: {
23
+ * address: "10.0.0.0/24",
24
+ * dhcp: true,
25
+ * family: "IPv4",
26
+ * },
27
+ * });
28
+ * let thisNetworkPeering: upcloud.NetworkPeering | undefined;
29
+ * if (1 == true) {
30
+ * thisNetworkPeering = new upcloud.NetworkPeering("thisNetworkPeering", {
31
+ * network: {
32
+ * uuid: example.id,
33
+ * },
34
+ * peerNetwork: {
35
+ * uuid: "0305723a-e5cb-4ef6-985d-e36ed44d133a",
36
+ * },
37
+ * });
38
+ * }
39
+ * ```
40
+ */
41
+ class NetworkPeering extends pulumi.CustomResource {
42
+ /**
43
+ * Get an existing NetworkPeering resource's state with the given name, ID, and optional extra
44
+ * properties used to qualify the lookup.
45
+ *
46
+ * @param name The _unique_ name of the resulting resource.
47
+ * @param id The _unique_ provider ID of the resource to lookup.
48
+ * @param state Any extra arguments used during the lookup.
49
+ * @param opts Optional settings to control the behavior of the CustomResource.
50
+ */
51
+ static get(name, id, state, opts) {
52
+ return new NetworkPeering(name, state, Object.assign(Object.assign({}, opts), { id: id }));
53
+ }
54
+ /**
55
+ * Returns true if the given object is an instance of NetworkPeering. This is designed to work even
56
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
57
+ */
58
+ static isInstance(obj) {
59
+ if (obj === undefined || obj === null) {
60
+ return false;
61
+ }
62
+ return obj['__pulumiType'] === NetworkPeering.__pulumiType;
63
+ }
64
+ constructor(name, argsOrState, opts) {
65
+ let resourceInputs = {};
66
+ opts = opts || {};
67
+ if (opts.id) {
68
+ const state = argsOrState;
69
+ resourceInputs["configuredStatus"] = state ? state.configuredStatus : undefined;
70
+ resourceInputs["labels"] = state ? state.labels : undefined;
71
+ resourceInputs["name"] = state ? state.name : undefined;
72
+ resourceInputs["network"] = state ? state.network : undefined;
73
+ resourceInputs["peerNetwork"] = state ? state.peerNetwork : undefined;
74
+ }
75
+ else {
76
+ const args = argsOrState;
77
+ if ((!args || args.network === undefined) && !opts.urn) {
78
+ throw new Error("Missing required property 'network'");
79
+ }
80
+ if ((!args || args.peerNetwork === undefined) && !opts.urn) {
81
+ throw new Error("Missing required property 'peerNetwork'");
82
+ }
83
+ resourceInputs["configuredStatus"] = args ? args.configuredStatus : undefined;
84
+ resourceInputs["labels"] = args ? args.labels : undefined;
85
+ resourceInputs["name"] = args ? args.name : undefined;
86
+ resourceInputs["network"] = args ? args.network : undefined;
87
+ resourceInputs["peerNetwork"] = args ? args.peerNetwork : undefined;
88
+ }
89
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
90
+ super(NetworkPeering.__pulumiType, name, resourceInputs, opts);
91
+ }
92
+ }
93
+ exports.NetworkPeering = NetworkPeering;
94
+ /** @internal */
95
+ NetworkPeering.__pulumiType = 'upcloud:index/networkPeering:NetworkPeering';
96
+ //# sourceMappingURL=networkPeering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkPeering.js","sourceRoot":"","sources":["../networkPeering.ts"],"names":[],"mappings":"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"}