Skip to content

Commit c023ac2

Browse files
committed
update
1 parent c672ece commit c023ac2

File tree

3 files changed

+168
-58
lines changed

3 files changed

+168
-58
lines changed

Common/Naming/index.ts

+60-57
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
import { ConventionProps } from "../../types";
2-
import { replaceAll } from "../Helpers";
3-
import { getResourceName } from "../ResourceEnv";
4-
import { organization, stack } from "../StackEnv";
1+
import { ConventionProps } from '../../types';
2+
import { replaceAll } from '../Helpers';
3+
import { getResourceName } from '../ResourceEnv';
4+
import { organization, stack } from '../StackEnv';
55

66
/** The method to get Resource group Name*/
77
export const getResourceGroupName = (name: string): string =>
88
getResourceName(name, {
9-
suffix: organization ? `grp-${organization}` : "grp",
9+
suffix: organization ? `grp-${organization}` : 'grp',
1010
});
1111

1212
/** Get Azure Storage Account and CosmosDb Name*/
1313
export const getStorageName = (name: string): string => {
14-
name = getResourceName(name, { suffix: "stg" });
15-
name = replaceAll(name, "-", "");
16-
name = replaceAll(name, ".", "");
14+
name = getResourceName(name, { suffix: 'stg' });
15+
name = replaceAll(name, '-', '');
16+
name = replaceAll(name, '.', '');
1717
return name.toLowerCase().substring(0, 24);
1818
};
1919

2020
/** Get Vault Secret Name. Remove the stack name and replace all _ with - then lower cases. */
2121
export const getSecretName = (name: string) => {
22-
name = name.replace(`${stack}-`, "");
23-
name = name.replace(stack, "");
24-
name = replaceAll(name, " ", "-");
25-
return replaceAll(name, "_", "-").toLowerCase();
22+
name = name.replace(`${stack}-`, '');
23+
name = name.replace(stack, '');
24+
name = replaceAll(name, ' ', '-');
25+
return replaceAll(name, '_', '-').toLowerCase();
2626
};
2727

2828
export const getCertName = (name: string) => {
@@ -32,150 +32,153 @@ export const getCertName = (name: string) => {
3232

3333
export const getConnectionName = (
3434
name: string,
35-
type: "primary" | "secondary"
35+
type: 'primary' | 'secondary'
3636
) => `${getSecretName(name)}-conn-${type}`;
3737

38-
export const getKeyName = (name: string, type: "primary" | "secondary") =>
38+
export const getKeyName = (name: string, type: 'primary' | 'secondary') =>
3939
`${getSecretName(name)}-key-${type}`;
4040

4141
export const getPasswordName = (
4242
name: string,
43-
type: "primary" | "secondary" | null
43+
type: 'primary' | 'secondary' | null
4444
) =>
4545
type === null
46-
? getResourceName(name, { suffix: "pwd" })
46+
? getResourceName(name, { suffix: 'pwd' })
4747
: `${getSecretName(name)}-pwd-${type}`;
4848

4949
export const getAutomationAccountName = (name: string) =>
50-
getResourceName(name, { suffix: "acc-auto" });
50+
getResourceName(name, { suffix: 'acc-auto' });
5151

5252
export const getB2cName = (name: string) =>
53-
getResourceName(name, { suffix: "b2c" });
53+
getResourceName(name, { suffix: 'b2c' });
5454

5555
export const getCosmosDbName = (name: string) =>
56-
getResourceName(name, { suffix: "cdb" });
56+
getResourceName(name, { suffix: 'cdb' });
5757

5858
export const getAppConfigName = (name: string) =>
59-
getResourceName(name, { suffix: "cfg" });
59+
getResourceName(name, { suffix: 'cfg' });
6060

6161
export const getApimName = (name: string) =>
62-
getResourceName(name, { suffix: "apim" });
62+
getResourceName(name, { suffix: 'apim' });
6363

6464
export const getSshName = (name: string) =>
65-
getResourceName(name, { suffix: "ssh" });
65+
getResourceName(name, { suffix: 'ssh' });
6666

6767
export const getIdentityName = (name: string) => getResourceName(name);
6868

6969
export const getManagedIdentityName = (name: string) =>
70-
getResourceName(name, { suffix: "mid" });
70+
getResourceName(name, { suffix: 'mid' });
7171

7272
export const getAksName = (name: string) =>
73-
getResourceName(name, { suffix: "aks" });
73+
getResourceName(name, { suffix: 'aks' });
7474

7575
export const getK8sProviderName = (name: string) =>
76-
getResourceName(name, { suffix: "ks-pvd" });
76+
getResourceName(name, { suffix: 'ks-pvd' });
7777

7878
export const getAppInsightName = (name: string) =>
79-
getResourceName(name, { suffix: "isg" });
79+
getResourceName(name, { suffix: 'isg' });
8080

8181
export const getLogWpName = (name: string) =>
82-
getResourceName(name, { suffix: "wp" });
82+
getResourceName(name, { suffix: 'wp' });
8383

8484
export const getWebTestName = (name: string) =>
85-
getResourceName(name, { suffix: "hlz" });
85+
getResourceName(name, { suffix: 'hlz' });
8686

8787
export const getAlertName = (name: string) =>
88-
getResourceName(name, { suffix: "alt" });
88+
getResourceName(name, { suffix: 'alt' });
8989

9090
export const getRedisCacheName = (name: string) =>
91-
getResourceName(name, { suffix: "rds" });
91+
getResourceName(name, { suffix: 'rds' });
9292

9393
export const getServiceBusName = (name: string) =>
94-
getResourceName(name, { suffix: "bus" });
94+
getResourceName(name, { suffix: 'bus' });
9595

9696
export const getPrivateEndpointName = (name: string) =>
97-
getResourceName(name, { suffix: "pre" });
97+
getResourceName(name, { suffix: 'pre' });
9898

9999
export const getSignalRName = (name: string) =>
100-
getResourceName(name, { suffix: "sigr" });
100+
getResourceName(name, { suffix: 'sigr' });
101101

102102
export const getElasticPoolName = (name: string) =>
103-
getResourceName(name, { suffix: "elp" });
103+
getResourceName(name, { suffix: 'elp' });
104104

105105
export const getSqlDbName = (name: string) =>
106-
getResourceName(name, { suffix: "db" });
106+
getResourceName(name, { suffix: 'db' });
107107

108108
export const getSqlServerName = (name: string) =>
109-
getResourceName(name, { suffix: "sql" });
109+
getResourceName(name, { suffix: 'sql' });
110110

111111
export const getFirewallName = (name: string) =>
112-
getResourceName(name, { suffix: "fw" });
112+
getResourceName(name, { suffix: 'fw' });
113113

114114
export const getFirewallPolicyName = (name: string) =>
115-
getResourceName(name, { suffix: "fwp" });
115+
getResourceName(name, { suffix: 'fwp' });
116116

117117
export const getFirewallPolicyGroupName = (name: string) =>
118-
getResourceName(name, { suffix: "fw-pg" });
118+
getResourceName(name, { suffix: 'fw-pg' });
119119

120120
export const getVMName = (name: string) =>
121-
getResourceName(name, { suffix: "vm" });
121+
getResourceName(name, { suffix: 'vm' });
122122

123123
export const getNICName = (name: string) =>
124-
getResourceName(name, { suffix: "nic" });
124+
getResourceName(name, { suffix: 'nic' });
125125

126126
export const getVnetName = (name: string) =>
127-
getResourceName(name, { suffix: "vnt" });
127+
getResourceName(name, { suffix: 'vnt' });
128128

129129
export const getWanName = (name: string) =>
130-
getResourceName(name, { suffix: "wan" });
130+
getResourceName(name, { suffix: 'wan' });
131131

132132
export const getHubName = (name: string) =>
133-
getResourceName(name, { suffix: "hub" });
133+
getResourceName(name, { suffix: 'hub' });
134+
135+
export const getIotHubName = (name: string) =>
136+
getResourceName(name, { suffix: 'iot' });
134137

135138
export const getRouteName = (name: string) =>
136-
getResourceName(name, { suffix: "route" });
139+
getResourceName(name, { suffix: 'route' });
137140

138141
export const getRouteItemName = (name: string) =>
139-
getResourceName(name, { suffix: "", includeOrgName: false });
142+
getResourceName(name, { suffix: '', includeOrgName: false });
140143

141144
export const getNetworkSecurityGroupName = (name: string) =>
142-
getResourceName(name, { suffix: "nsg" });
145+
getResourceName(name, { suffix: 'nsg' });
143146

144147
export const getIpAddressName = (name: string) =>
145-
getResourceName(name, { suffix: "ip" });
148+
getResourceName(name, { suffix: 'ip' });
146149

147150
export const getIpAddressPrefixName = (name: string) =>
148-
getResourceName(name, { suffix: "ipx" });
151+
getResourceName(name, { suffix: 'ipx' });
149152

150153
export const getAppGatewayName = (name: string) =>
151-
getResourceName(name, { suffix: "gtw" });
154+
getResourceName(name, { suffix: 'gtw' });
152155

153156
export const getBastionName = (name: string) =>
154-
getResourceName(name, { suffix: "bst" });
157+
getResourceName(name, { suffix: 'bst' });
155158

156159
/**Key vault allow to disable or custom the convention. The max length of vault name is 24*/
157160
export const getKeyVaultName = (
158161
name: string,
159162
convention: ConventionProps | false = {
160-
suffix: "vlt",
163+
suffix: 'vlt',
161164
}
162165
) =>
163166
getResourceName(
164167
name,
165-
convention == false ? { prefix: "", suffix: "" } : convention
168+
convention == false ? { prefix: '', suffix: '' } : convention
166169
).substring(0, 24);
167170

168171
export const getCdnEndpointName = (name: string) =>
169-
getResourceName(name, { suffix: "cdn" });
172+
getResourceName(name, { suffix: 'cdn' });
170173

171174
/**The CDN Profile is created to Global group so no prefix*/
172175
export const getCdnProfileName = (name: string) =>
173-
getResourceName(name, { suffix: "cdn-pfl" });
176+
getResourceName(name, { suffix: 'cdn-pfl' });
174177

175178
/**The Azure Container Registry is created to Global group so no prefix*/
176179
export const getAcrName = (name: string) =>
177-
replaceAll(getResourceName(name, { prefix: "", suffix: "acr" }), "-", "");
180+
replaceAll(getResourceName(name, { prefix: '', suffix: 'acr' }), '-', '');
178181

179182
/**The App Cert Order is created to Global group so no prefix*/
180183
export const getCertOrderName = (name: string) =>
181-
getResourceName(name.replace(".", "-"), { prefix: "", suffix: "ca" });
184+
getResourceName(name.replace('.', '-'), { prefix: '', suffix: 'ca' });

IOT/Hub/index.ts

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import { BasicResourceArgs } from '../../types';
2+
import { getIotHubName } from '../../Common/Naming';
3+
import * as devices from '@pulumi/azure-native/devices';
4+
import { defaultTags, subscriptionId } from '../../Common/AzureEnv';
5+
import { Input } from '@pulumi/pulumi';
6+
7+
interface Props extends BasicResourceArgs {
8+
sku?: devices.IotHubSku;
9+
storage?: {
10+
connectionString: Input<string>;
11+
fileContainerName: Input<string>;
12+
messageContainerName: Input<string>;
13+
};
14+
}
15+
16+
export default ({
17+
name,
18+
group,
19+
sku = devices.IotHubSku.F1,
20+
storage,
21+
dependsOn,
22+
}: Props) => {
23+
const hubName = getIotHubName(name);
24+
25+
const hub = new devices.IotHubResource(
26+
hubName,
27+
{
28+
resourceName: hubName,
29+
...group,
30+
31+
sku: { name: sku },
32+
tags: defaultTags,
33+
34+
properties: {
35+
//authorizationPolicies: [{}],
36+
//cloudToDevice:{}
37+
//comments
38+
enableFileUploadNotifications: false,
39+
storageEndpoints: storage
40+
? {
41+
$default: {
42+
connectionString: storage.connectionString,
43+
containerName: storage.fileContainerName,
44+
sasTtlAsIso8601: 'PT1H',
45+
},
46+
}
47+
: undefined,
48+
//eventHubEndpoints: {},
49+
features: devices.v20160203.Capabilities.None,
50+
//ipFilterRules: {},
51+
//networkRuleSets: {},
52+
messagingEndpoints: {
53+
fileNotifications: {
54+
lockDurationAsIso8601: 'PT1M',
55+
maxDeliveryCount: 10,
56+
ttlAsIso8601: 'PT1H',
57+
},
58+
},
59+
minTlsVersion: '1.2',
60+
//privateEndpointConnections: {},
61+
routing: {
62+
endpoints: {
63+
//eventHubs: [],
64+
//serviceBusQueues: [],
65+
//serviceBusTopics: [],
66+
storageContainers: storage
67+
? [
68+
{
69+
/**
70+
* The name that identifies this endpoint. The name can only include alphanumeric characters, periods, underscores, hyphens and has a maximum length of 64 characters. The following names are reserved: events, operationsMonitoringEvents, fileNotifications, $default. Endpoint names must be unique across endpoint types.
71+
*/
72+
name: 'hubStorage',
73+
resourceGroup: group.resourceGroupName,
74+
subscriptionId,
75+
76+
batchFrequencyInSeconds: 300,
77+
connectionString: storage.connectionString,
78+
containerName: storage.messageContainerName,
79+
encoding: 'avro',
80+
/**
81+
* File name format for the blob. Default format is {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. All parameters are mandatory but can be reordered.
82+
*/
83+
//fileNameFormat?: pulumi.Input<string>;
84+
/**
85+
* Maximum number of bytes for each blob written to storage. Value should be between 10485760(10MB) and 524288000(500MB). Default value is 314572800(300MB).
86+
*/
87+
//maxChunkSizeInBytes?: pulumi.Input<number>;
88+
},
89+
]
90+
: undefined,
91+
},
92+
// fallbackRoute: {
93+
// condition: 'true',
94+
// endpointNames: ['events'],
95+
// isEnabled: true,
96+
// name: `$fallback`,
97+
// source: 'DeviceMessages',
98+
// },
99+
//routes: [],
100+
},
101+
},
102+
},
103+
{ dependsOn }
104+
);
105+
106+
return hub;
107+
};

types.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export interface ApimInfo extends Omit<ResourceInfo, 'resourceName' | 'id'> {
5252
serviceName: string;
5353
}
5454

55-
export interface BasicResourceArgs {
55+
export interface BasicResourceArgs extends BasicArgs {
5656
name: string;
5757
group: ResourceGroupInfo;
5858
}

0 commit comments

Comments
 (0)