sparse-intern-71089
01/14/2021, 8:33 PMcolossal-monkey-98692
01/14/2021, 8:44 PMcolossal-monkey-98692
01/14/2021, 8:45 PMimport * as pulumi from '@pulumi/pulumi';
import { v4 as uuidv4 } from 'uuid';
import * as _ from 'lodash';
import * as aws_sdk from 'aws-sdk';
let ec2 = new aws_sdk.EC2();
export interface AttachSecurityGroupsArgs {
/**
* Security Groups to attach to network interfaces
*/
securityGroupIds: pulumi.Input<string>[];
/**
* Network Interface Id to attache security groups to
*/
networkInterfaceId?: pulumi.Input<string>;
}
interface State {
securityGroupIds: pulumi.Unwrap<string>[];
networkInterfaceId: pulumi.Unwrap<string>;
}
export class AttachSecurityGroups extends pulumi.dynamic.Resource {
public readonly securityGroupIds!: pulumi.Input<string>[];
public readonly networkInterfaceId!: pulumi.Input<string>;
constructor(
name: string,
attachSecurityGroupsArgs: AttachSecurityGroupsArgs,
opts?: pulumi.CustomResourceOptions
) {
const provider: pulumi.dynamic.ResourceProvider = {
diff: async (id: pulumi.ID, olds: State, news: State) => {
let changes = true;
let replacementProperties: string[] = ['securityGroupIds'];
return {
changes: changes,
replaces: replacementProperties.length > 0 ? replacementProperties : undefined,
deleteBeforeReplace: true,
};
},
create: async (inputs: State) => {
let networkInterface = await describeNetworkInterface(inputs.networkInterfaceId);
console.log(networkInterface);
return { id: uuidv4(), outs: inputs };
},
update: async (id: pulumi.ID, inputs: State, olds: State) => {
return { id: uuidv4(), outs: inputs };
},
delete: async (id: pulumi.ID, props: State) => {
return;
},
read: async (id: pulumi.ID, props: State) => {
return { id: uuidv4(), props: props };
},
};
super(provider, name, attachSecurityGroupsArgs, opts);
}
}
let describeNetworkInterface = (
networkInterfaceId: string
): Promise<aws_sdk.EC2.DescribeNetworkInterfacesResult> => {
return new Promise((resolve, reject) => {
var params = {
NetworkInterfaceIds: [networkInterfaceId],
};
console.log(params);
ec2.describeNetworkInterfaces(params, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
};
colossal-monkey-98692
01/14/2021, 8:56 PM