powerflex 1.8.0 published on Monday, Apr 14, 2025 by dell
Powerflex Provider
Generate Provider
The Powerflex provider must be installed as a Local Package by following the instructions for Any Terraform Provider:
pulumi package add terraform-provider dell/powerflex
Overview
The Pulumi provider for Dell PowerFlex can be used to interact with a Dell PowerFlex array in order to manage the array resources.
Example Usage
provider.tf
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: nodejs
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
import * as pulumi from "@pulumi/pulumi";
import * as powerflex from "@pulumi/powerflex";
const pd = new powerflex.ProtectionDomain("pd", {name: "domain_1"});
const sds1 = new powerflex.Sds("sds1", {
name: "sds_1",
protectionDomainId: pd.id,
ipLists: [{
ip: "10.10.10.1",
role: "all",
}],
}, {
dependsOn: [pd],
});
const sds2 = new powerflex.Sds("sds2", {
name: "sds_2",
protectionDomainId: pd.id,
ipLists: [{
ip: "10.10.10.2",
role: "all",
}],
}, {
dependsOn: [pd],
});
const sds3 = new powerflex.Sds("sds3", {
name: "sds_3",
protectionDomainId: pd.id,
ipLists: [{
ip: "10.10.10.3",
role: "all",
}],
}, {
dependsOn: [pd],
});
const sp = new powerflex.StoragePool("sp", {
name: "SP",
protectionDomainId: pd.id,
mediaType: "HDD",
useRmcache: true,
useRfcache: true,
});
const device1 = new powerflex.Device("device1", {
name: "device1",
devicePath: "/dev/sdb",
sdsId: sds1.id,
storagePoolId: sp.id,
mediaType: "HDD",
externalAccelerationType: "ReadAndWrite",
}, {
dependsOn: [sp],
});
const device2 = new powerflex.Device("device2", {
name: "device2",
devicePath: "/dev/sdb",
sdsId: sds2.id,
storagePoolId: sp.id,
mediaType: "HDD",
externalAccelerationType: "ReadAndWrite",
}, {
dependsOn: [sp],
});
const device3 = new powerflex.Device("device3", {
name: "device3",
devicePath: "/dev/sdb",
sdsId: sds3.id,
storagePoolId: sp.id,
mediaType: "HDD",
externalAccelerationType: "ReadAndWrite",
}, {
dependsOn: [sp],
});
const volume = new powerflex.Volume("volume", {
name: "volume1",
protectionDomainId: pd.id,
storagePoolId: sp.id,
size: 16,
volumeType: "ThinProvisioned",
}, {
dependsOn: [
device1,
device2,
device3,
],
});
const map = new powerflex.SdcVolumesMapping("map", {
sdcVolumesMappingId: "e3d105e900000005",
volumeLists: [{
volumeId: volume.id,
limitIops: 140,
limitBwInMbps: 19,
accessMode: "ReadOnly",
}],
}, {
dependsOn: [volume],
});
const upload_test = new powerflex.Package("upload-test", {filePaths: [
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm",
]});
const user = new powerflex.User("user", {
name: "NewUser",
role: "Monitor",
password: "Password123",
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: python
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
import pulumi
import pulumi_powerflex as powerflex
pd = powerflex.ProtectionDomain("pd", name="domain_1")
sds1 = powerflex.Sds("sds1",
name="sds_1",
protection_domain_id=pd.id,
ip_lists=[{
"ip": "10.10.10.1",
"role": "all",
}],
opts = pulumi.ResourceOptions(depends_on=[pd]))
sds2 = powerflex.Sds("sds2",
name="sds_2",
protection_domain_id=pd.id,
ip_lists=[{
"ip": "10.10.10.2",
"role": "all",
}],
opts = pulumi.ResourceOptions(depends_on=[pd]))
sds3 = powerflex.Sds("sds3",
name="sds_3",
protection_domain_id=pd.id,
ip_lists=[{
"ip": "10.10.10.3",
"role": "all",
}],
opts = pulumi.ResourceOptions(depends_on=[pd]))
sp = powerflex.StoragePool("sp",
name="SP",
protection_domain_id=pd.id,
media_type="HDD",
use_rmcache=True,
use_rfcache=True)
device1 = powerflex.Device("device1",
name="device1",
device_path="/dev/sdb",
sds_id=sds1.id,
storage_pool_id=sp.id,
media_type="HDD",
external_acceleration_type="ReadAndWrite",
opts = pulumi.ResourceOptions(depends_on=[sp]))
device2 = powerflex.Device("device2",
name="device2",
device_path="/dev/sdb",
sds_id=sds2.id,
storage_pool_id=sp.id,
media_type="HDD",
external_acceleration_type="ReadAndWrite",
opts = pulumi.ResourceOptions(depends_on=[sp]))
device3 = powerflex.Device("device3",
name="device3",
device_path="/dev/sdb",
sds_id=sds3.id,
storage_pool_id=sp.id,
media_type="HDD",
external_acceleration_type="ReadAndWrite",
opts = pulumi.ResourceOptions(depends_on=[sp]))
volume = powerflex.Volume("volume",
name="volume1",
protection_domain_id=pd.id,
storage_pool_id=sp.id,
size=16,
volume_type="ThinProvisioned",
opts = pulumi.ResourceOptions(depends_on=[
device1,
device2,
device3,
]))
map = powerflex.SdcVolumesMapping("map",
sdc_volumes_mapping_id="e3d105e900000005",
volume_lists=[{
"volume_id": volume.id,
"limit_iops": 140,
"limit_bw_in_mbps": 19,
"access_mode": "ReadOnly",
}],
opts = pulumi.ResourceOptions(depends_on=[volume]))
upload_test = powerflex.Package("upload-test", file_paths=[
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm",
])
user = powerflex.User("user",
name="NewUser",
role="Monitor",
password="Password123")
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: dotnet
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Powerflex = Pulumi.Powerflex;
return await Deployment.RunAsync(() =>
{
var pd = new Powerflex.ProtectionDomain("pd", new()
{
Name = "domain_1",
});
var sds1 = new Powerflex.Sds("sds1", new()
{
Name = "sds_1",
ProtectionDomainId = pd.Id,
IpLists = new[]
{
new Powerflex.Inputs.SdsIpListArgs
{
Ip = "10.10.10.1",
Role = "all",
},
},
}, new CustomResourceOptions
{
DependsOn =
{
pd,
},
});
var sds2 = new Powerflex.Sds("sds2", new()
{
Name = "sds_2",
ProtectionDomainId = pd.Id,
IpLists = new[]
{
new Powerflex.Inputs.SdsIpListArgs
{
Ip = "10.10.10.2",
Role = "all",
},
},
}, new CustomResourceOptions
{
DependsOn =
{
pd,
},
});
var sds3 = new Powerflex.Sds("sds3", new()
{
Name = "sds_3",
ProtectionDomainId = pd.Id,
IpLists = new[]
{
new Powerflex.Inputs.SdsIpListArgs
{
Ip = "10.10.10.3",
Role = "all",
},
},
}, new CustomResourceOptions
{
DependsOn =
{
pd,
},
});
var sp = new Powerflex.StoragePool("sp", new()
{
Name = "SP",
ProtectionDomainId = pd.Id,
MediaType = "HDD",
UseRmcache = true,
UseRfcache = true,
});
var device1 = new Powerflex.Device("device1", new()
{
Name = "device1",
DevicePath = "/dev/sdb",
SdsId = sds1.Id,
StoragePoolId = sp.Id,
MediaType = "HDD",
ExternalAccelerationType = "ReadAndWrite",
}, new CustomResourceOptions
{
DependsOn =
{
sp,
},
});
var device2 = new Powerflex.Device("device2", new()
{
Name = "device2",
DevicePath = "/dev/sdb",
SdsId = sds2.Id,
StoragePoolId = sp.Id,
MediaType = "HDD",
ExternalAccelerationType = "ReadAndWrite",
}, new CustomResourceOptions
{
DependsOn =
{
sp,
},
});
var device3 = new Powerflex.Device("device3", new()
{
Name = "device3",
DevicePath = "/dev/sdb",
SdsId = sds3.Id,
StoragePoolId = sp.Id,
MediaType = "HDD",
ExternalAccelerationType = "ReadAndWrite",
}, new CustomResourceOptions
{
DependsOn =
{
sp,
},
});
var volume = new Powerflex.Volume("volume", new()
{
Name = "volume1",
ProtectionDomainId = pd.Id,
StoragePoolId = sp.Id,
Size = 16,
VolumeType = "ThinProvisioned",
}, new CustomResourceOptions
{
DependsOn =
{
device1,
device2,
device3,
},
});
var map = new Powerflex.SdcVolumesMapping("map", new()
{
SdcVolumesMappingId = "e3d105e900000005",
VolumeLists = new[]
{
new Powerflex.Inputs.SdcVolumesMappingVolumeListArgs
{
VolumeId = volume.Id,
LimitIops = 140,
LimitBwInMbps = 19,
AccessMode = "ReadOnly",
},
},
}, new CustomResourceOptions
{
DependsOn =
{
volume,
},
});
var upload_test = new Powerflex.Package("upload-test", new()
{
FilePaths = new[]
{
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm",
},
});
var user = new Powerflex.User("user", new()
{
Name = "NewUser",
Role = "Monitor",
Password = "Password123",
});
});
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: go
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
package main
import (
"github.com/pulumi/pulumi-pulumi-provider/sdks/go/powerflex/powerflex"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
pd, err := powerflex.NewProtectionDomain(ctx, "pd", &powerflex.ProtectionDomainArgs{
Name: pulumi.String("domain_1"),
})
if err != nil {
return err
}
sds1, err := powerflex.NewSds(ctx, "sds1", &powerflex.SdsArgs{
Name: pulumi.String("sds_1"),
ProtectionDomainId: pd.ID(),
IpLists: powerflex.SdsIpListArray{
&powerflex.SdsIpListArgs{
Ip: pulumi.String("10.10.10.1"),
Role: pulumi.String("all"),
},
},
}, pulumi.DependsOn([]pulumi.Resource{
pd,
}))
if err != nil {
return err
}
sds2, err := powerflex.NewSds(ctx, "sds2", &powerflex.SdsArgs{
Name: pulumi.String("sds_2"),
ProtectionDomainId: pd.ID(),
IpLists: powerflex.SdsIpListArray{
&powerflex.SdsIpListArgs{
Ip: pulumi.String("10.10.10.2"),
Role: pulumi.String("all"),
},
},
}, pulumi.DependsOn([]pulumi.Resource{
pd,
}))
if err != nil {
return err
}
sds3, err := powerflex.NewSds(ctx, "sds3", &powerflex.SdsArgs{
Name: pulumi.String("sds_3"),
ProtectionDomainId: pd.ID(),
IpLists: powerflex.SdsIpListArray{
&powerflex.SdsIpListArgs{
Ip: pulumi.String("10.10.10.3"),
Role: pulumi.String("all"),
},
},
}, pulumi.DependsOn([]pulumi.Resource{
pd,
}))
if err != nil {
return err
}
sp, err := powerflex.NewStoragePool(ctx, "sp", &powerflex.StoragePoolArgs{
Name: pulumi.String("SP"),
ProtectionDomainId: pd.ID(),
MediaType: pulumi.String("HDD"),
UseRmcache: pulumi.Bool(true),
UseRfcache: pulumi.Bool(true),
})
if err != nil {
return err
}
device1, err := powerflex.NewDevice(ctx, "device1", &powerflex.DeviceArgs{
Name: pulumi.String("device1"),
DevicePath: pulumi.String("/dev/sdb"),
SdsId: sds1.ID(),
StoragePoolId: sp.ID(),
MediaType: pulumi.String("HDD"),
ExternalAccelerationType: pulumi.String("ReadAndWrite"),
}, pulumi.DependsOn([]pulumi.Resource{
sp,
}))
if err != nil {
return err
}
device2, err := powerflex.NewDevice(ctx, "device2", &powerflex.DeviceArgs{
Name: pulumi.String("device2"),
DevicePath: pulumi.String("/dev/sdb"),
SdsId: sds2.ID(),
StoragePoolId: sp.ID(),
MediaType: pulumi.String("HDD"),
ExternalAccelerationType: pulumi.String("ReadAndWrite"),
}, pulumi.DependsOn([]pulumi.Resource{
sp,
}))
if err != nil {
return err
}
device3, err := powerflex.NewDevice(ctx, "device3", &powerflex.DeviceArgs{
Name: pulumi.String("device3"),
DevicePath: pulumi.String("/dev/sdb"),
SdsId: sds3.ID(),
StoragePoolId: sp.ID(),
MediaType: pulumi.String("HDD"),
ExternalAccelerationType: pulumi.String("ReadAndWrite"),
}, pulumi.DependsOn([]pulumi.Resource{
sp,
}))
if err != nil {
return err
}
volume, err := powerflex.NewVolume(ctx, "volume", &powerflex.VolumeArgs{
Name: pulumi.String("volume1"),
ProtectionDomainId: pd.ID(),
StoragePoolId: sp.ID(),
Size: pulumi.Float64(16),
VolumeType: pulumi.String("ThinProvisioned"),
}, pulumi.DependsOn([]pulumi.Resource{
device1,
device2,
device3,
}))
if err != nil {
return err
}
_, err = powerflex.NewSdcVolumesMapping(ctx, "map", &powerflex.SdcVolumesMappingArgs{
SdcVolumesMappingId: pulumi.String("e3d105e900000005"),
VolumeLists: powerflex.SdcVolumesMappingVolumeListArray{
&powerflex.SdcVolumesMappingVolumeListArgs{
VolumeId: volume.ID(),
LimitIops: pulumi.Float64(140),
LimitBwInMbps: pulumi.Float64(19),
AccessMode: pulumi.String("ReadOnly"),
},
},
}, pulumi.DependsOn([]pulumi.Resource{
volume,
}))
if err != nil {
return err
}
_, err = powerflex.NewPackage(ctx, "upload-test", &powerflex.PackageArgs{
FilePaths: pulumi.StringArray{
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm"),
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm"),
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm"),
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm"),
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm"),
pulumi.String("/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm"),
},
})
if err != nil {
return err
}
_, err = powerflex.NewUser(ctx, "user", &powerflex.UserArgs{
Name: pulumi.String("NewUser"),
Role: pulumi.String("Monitor"),
Password: pulumi.String("Password123"),
})
if err != nil {
return err
}
return nil
})
}
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: yaml
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
resources:
pd:
type: powerflex:ProtectionDomain
properties:
name: domain_1
sds1:
type: powerflex:Sds
properties:
name: sds_1
protectionDomainId: ${pd.id}
ipLists:
- ip: 10.10.10.1
role: all
options:
dependsOn:
- ${pd}
sds2:
type: powerflex:Sds
properties:
name: sds_2
protectionDomainId: ${pd.id}
ipLists:
- ip: 10.10.10.2
role: all
options:
dependsOn:
- ${pd}
sds3:
type: powerflex:Sds
properties:
name: sds_3
protectionDomainId: ${pd.id}
ipLists:
- ip: 10.10.10.3
role: all
options:
dependsOn:
- ${pd}
sp:
type: powerflex:StoragePool
properties:
name: SP
protectionDomainId: ${pd.id}
mediaType: HDD
useRmcache: true
useRfcache: true
device1:
type: powerflex:Device
properties:
name: device1
devicePath: /dev/sdb
sdsId: ${sds1.id}
storagePoolId: ${sp.id}
mediaType: HDD
externalAccelerationType: ReadAndWrite
options:
dependsOn:
- ${sp}
device2:
type: powerflex:Device
properties:
name: device2
devicePath: /dev/sdb
sdsId: ${sds2.id}
storagePoolId: ${sp.id}
mediaType: HDD
externalAccelerationType: ReadAndWrite
options:
dependsOn:
- ${sp}
device3:
type: powerflex:Device
properties:
name: device3
devicePath: /dev/sdb
sdsId: ${sds3.id}
storagePoolId: ${sp.id}
mediaType: HDD
externalAccelerationType: ReadAndWrite
options:
dependsOn:
- ${sp}
volume:
type: powerflex:Volume
properties:
name: volume1
protectionDomainId: ${pd.id}
storagePoolId: ${sp.id}
size: 16
volumeType: ThinProvisioned
options:
dependsOn:
- ${device1}
- ${device2}
- ${device3}
map:
type: powerflex:SdcVolumesMapping
properties:
sdcVolumesMappingId: e3d105e900000005
volumeLists:
- volumeId: ${volume.id}
limitIops: 140
limitBwInMbps: 19
accessMode: ReadOnly
options:
dependsOn:
- ${volume}
upload-test:
type: powerflex:Package
properties:
filePaths:
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm
- /root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm
user:
type: powerflex:User
properties:
name: NewUser
role: Monitor
password: Password123
# Pulumi.yaml provider configuration file
name: configuration-example
runtime: java
config:
powerflex:endpoint:
value: 'TODO: var.endpoint'
powerflex:insecure:
value: true
powerflex:password:
value: 'TODO: var.password'
powerflex:timeout:
value: 120
powerflex:username:
value: 'TODO: var.username'
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.powerflex.ProtectionDomain;
import com.pulumi.powerflex.ProtectionDomainArgs;
import com.pulumi.powerflex.Sds;
import com.pulumi.powerflex.SdsArgs;
import com.pulumi.powerflex.inputs.SdsIpListArgs;
import com.pulumi.powerflex.StoragePool;
import com.pulumi.powerflex.StoragePoolArgs;
import com.pulumi.powerflex.Device;
import com.pulumi.powerflex.DeviceArgs;
import com.pulumi.powerflex.Volume;
import com.pulumi.powerflex.VolumeArgs;
import com.pulumi.powerflex.SdcVolumesMapping;
import com.pulumi.powerflex.SdcVolumesMappingArgs;
import com.pulumi.powerflex.inputs.SdcVolumesMappingVolumeListArgs;
import com.pulumi.powerflex.Package;
import com.pulumi.powerflex.PackageArgs;
import com.pulumi.powerflex.User;
import com.pulumi.powerflex.UserArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var pd = new ProtectionDomain("pd", ProtectionDomainArgs.builder()
.name("domain_1")
.build());
var sds1 = new Sds("sds1", SdsArgs.builder()
.name("sds_1")
.protectionDomainId(pd.id())
.ipLists(SdsIpListArgs.builder()
.ip("10.10.10.1")
.role("all")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(pd)
.build());
var sds2 = new Sds("sds2", SdsArgs.builder()
.name("sds_2")
.protectionDomainId(pd.id())
.ipLists(SdsIpListArgs.builder()
.ip("10.10.10.2")
.role("all")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(pd)
.build());
var sds3 = new Sds("sds3", SdsArgs.builder()
.name("sds_3")
.protectionDomainId(pd.id())
.ipLists(SdsIpListArgs.builder()
.ip("10.10.10.3")
.role("all")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(pd)
.build());
var sp = new StoragePool("sp", StoragePoolArgs.builder()
.name("SP")
.protectionDomainId(pd.id())
.mediaType("HDD")
.useRmcache(true)
.useRfcache(true)
.build());
var device1 = new Device("device1", DeviceArgs.builder()
.name("device1")
.devicePath("/dev/sdb")
.sdsId(sds1.id())
.storagePoolId(sp.id())
.mediaType("HDD")
.externalAccelerationType("ReadAndWrite")
.build(), CustomResourceOptions.builder()
.dependsOn(sp)
.build());
var device2 = new Device("device2", DeviceArgs.builder()
.name("device2")
.devicePath("/dev/sdb")
.sdsId(sds2.id())
.storagePoolId(sp.id())
.mediaType("HDD")
.externalAccelerationType("ReadAndWrite")
.build(), CustomResourceOptions.builder()
.dependsOn(sp)
.build());
var device3 = new Device("device3", DeviceArgs.builder()
.name("device3")
.devicePath("/dev/sdb")
.sdsId(sds3.id())
.storagePoolId(sp.id())
.mediaType("HDD")
.externalAccelerationType("ReadAndWrite")
.build(), CustomResourceOptions.builder()
.dependsOn(sp)
.build());
var volume = new Volume("volume", VolumeArgs.builder()
.name("volume1")
.protectionDomainId(pd.id())
.storagePoolId(sp.id())
.size(16)
.volumeType("ThinProvisioned")
.build(), CustomResourceOptions.builder()
.dependsOn(
device1,
device2,
device3)
.build());
var map = new SdcVolumesMapping("map", SdcVolumesMappingArgs.builder()
.sdcVolumesMappingId("e3d105e900000005")
.volumeLists(SdcVolumesMappingVolumeListArgs.builder()
.volumeId(volume.id())
.limitIops(140)
.limitBwInMbps(19)
.accessMode("ReadOnly")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(volume)
.build());
var upload_test = new Package("upload-test", PackageArgs.builder()
.filePaths(
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-lia-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-mdm-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sds-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdc-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdr-3.6-700.103.el7.x86_64.rpm",
"/root/powerflex_packages/PowerFlex_3.6.700.103_RHEL_OEL7/EMC-ScaleIO-sdt-3.6-700.103.el7.x86_64.rpm")
.build());
var user = new User("user", UserArgs.builder()
.name("NewUser")
.role("Monitor")
.password("Password123")
.build());
}
}
variables.tf
import * as pulumi from "@pulumi/pulumi";
const config = new pulumi.Config();
// Stores the username of PowerFlex host.
const username = config.require("username");
// Stores the password of PowerFlex host.
const password = config.require("password");
// Stores the endpoint of PowerFlex host. eg: https://10.1.1.1:443, here 443 is port where API requests are getting accepted
const endpoint = config.require("endpoint");
import pulumi
config = pulumi.Config()
# Stores the username of PowerFlex host.
username = config.require("username")
# Stores the password of PowerFlex host.
password = config.require("password")
# Stores the endpoint of PowerFlex host. eg: https://10.1.1.1:443, here 443 is port where API requests are getting accepted
endpoint = config.require("endpoint")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
return await Deployment.RunAsync(() =>
{
var config = new Config();
// Stores the username of PowerFlex host.
var username = config.Require("username");
// Stores the password of PowerFlex host.
var password = config.Require("password");
// Stores the endpoint of PowerFlex host. eg: https://10.1.1.1:443, here 443 is port where API requests are getting accepted
var endpoint = config.Require("endpoint");
});
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
// Stores the username of PowerFlex host.
username := cfg.Require("username")
// Stores the password of PowerFlex host.
password := cfg.Require("password")
// Stores the endpoint of PowerFlex host. eg: https://10.1.1.1:443, here 443 is port where API requests are getting accepted
endpoint := cfg.Require("endpoint")
return nil
})
}
configuration:
# /*
# Copyright (c) 2023-2024 Dell Inc., or its subsidiaries. All Rights Reserved.
# Licensed under the Mozilla Public License Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://mozilla.org/MPL/2.0/
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# */
username:
type: string
password:
type: string
endpoint:
type: string
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var config = ctx.config();
final var username = config.get("username");
final var password = config.get("password");
final var endpoint = config.get("endpoint");
}
}
Configuration Reference
Required
endpoint
(String) The PowerFlex Gateway server URL (inclusive of the port).password
(String, Sensitive) The password required for the authentication.username
(String) The username required for authentication.insecure
(Boolean) Specifies if the user wants to skip SSL verification.timeout
(Number) HTTPS timeout.