1. Packages
  2. Vcd Provider
  3. API Docs
  4. getVmPlacementPolicy
vcd 3.14.1 published on Monday, Apr 14, 2025 by vmware

vcd.getVmPlacementPolicy

Explore with Pulumi AI

Provides a VMware Cloud Director VM Placement Policy data source. This can be used to read a VM Placement Policy.

Supported in provider v3.8+ and requires VCD 10.2+

Note: This resource can be used by both system administrators and tenant users.

Example Usage

System Administrators

System administrators have full privileges to retrieve information of the Provider VDC to which the VM Placement Policy belongs. The way to fetch a VM Placement Policy in this case would be:

import * as pulumi from "@pulumi/pulumi";
import * as vcd from "@pulumi/vcd";

const my_vdc = vcd.getOrgVdc({
    org: "test",
    name: "vdc-test",
});
const my_pvdc = my_vdc.then(my_vdc => vcd.getProviderVdc({
    name: my_vdc.providerVdcName,
}));
const tf_policy_name = my_pvdc.then(my_pvdc => vcd.getVmPlacementPolicy({
    name: "my-policy",
    providerVdcId: my_pvdc.id,
}));
export const policyId = tf_policy_name.then(tf_policy_name => tf_policy_name.id);
Copy
import pulumi
import pulumi_vcd as vcd

my_vdc = vcd.get_org_vdc(org="test",
    name="vdc-test")
my_pvdc = vcd.get_provider_vdc(name=my_vdc.provider_vdc_name)
tf_policy_name = vcd.get_vm_placement_policy(name="my-policy",
    provider_vdc_id=my_pvdc.id)
pulumi.export("policyId", tf_policy_name.id)
Copy
package main

import (
	"github.com/pulumi/pulumi-terraform-provider/sdks/go/vcd/v3/vcd"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		my_vdc, err := vcd.LookupOrgVdc(ctx, &vcd.LookupOrgVdcArgs{
			Org:  pulumi.StringRef("test"),
			Name: "vdc-test",
		}, nil)
		if err != nil {
			return err
		}
		my_pvdc, err := vcd.LookupProviderVdc(ctx, &vcd.LookupProviderVdcArgs{
			Name: my_vdc.ProviderVdcName,
		}, nil)
		if err != nil {
			return err
		}
		tf_policy_name, err := vcd.LookupVmPlacementPolicy(ctx, &vcd.LookupVmPlacementPolicyArgs{
			Name:          "my-policy",
			ProviderVdcId: pulumi.StringRef(my_pvdc.Id),
		}, nil)
		if err != nil {
			return err
		}
		ctx.Export("policyId", tf_policy_name.Id)
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Vcd = Pulumi.Vcd;

return await Deployment.RunAsync(() => 
{
    var my_vdc = Vcd.GetOrgVdc.Invoke(new()
    {
        Org = "test",
        Name = "vdc-test",
    });

    var my_pvdc = Vcd.GetProviderVdc.Invoke(new()
    {
        Name = my_vdc.Apply(getOrgVdcResult => getOrgVdcResult.ProviderVdcName),
    });

    var tf_policy_name = Vcd.GetVmPlacementPolicy.Invoke(new()
    {
        Name = "my-policy",
        ProviderVdcId = my_pvdc.Apply(getProviderVdcResult => getProviderVdcResult.Id),
    });

    return new Dictionary<string, object?>
    {
        ["policyId"] = tf_policy_name.Apply(tf_policy_name => tf_policy_name.Apply(getVmPlacementPolicyResult => getVmPlacementPolicyResult.Id)),
    };
});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vcd.VcdFunctions;
import com.pulumi.vcd.inputs.GetOrgVdcArgs;
import com.pulumi.vcd.inputs.GetProviderVdcArgs;
import com.pulumi.vcd.inputs.GetVmPlacementPolicyArgs;
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 my-vdc = VcdFunctions.getOrgVdc(GetOrgVdcArgs.builder()
            .org("test")
            .name("vdc-test")
            .build());

        final var my-pvdc = VcdFunctions.getProviderVdc(GetProviderVdcArgs.builder()
            .name(my_vdc.providerVdcName())
            .build());

        final var tf-policy-name = VcdFunctions.getVmPlacementPolicy(GetVmPlacementPolicyArgs.builder()
            .name("my-policy")
            .providerVdcId(my_pvdc.id())
            .build());

        ctx.export("policyId", tf_policy_name.id());
    }
}
Copy
variables:
  my-vdc:
    fn::invoke:
      function: vcd:getOrgVdc
      arguments:
        org: test
        name: vdc-test
  my-pvdc:
    fn::invoke:
      function: vcd:getProviderVdc
      arguments:
        name: ${["my-vdc"].providerVdcName}
  tf-policy-name:
    fn::invoke:
      function: vcd:getVmPlacementPolicy
      arguments:
        name: my-policy
        providerVdcId: ${["my-pvdc"].id}
outputs:
  policyId: ${["tf-policy-name"].id}
Copy

Tenant Users

Tenant users don’t have access to Provider VDC information so the only way to retrieve VM Placement Policies is to fetch them using the VDC information. The only constraint is that the desired VM Placement Policy must be assigned to the VDC.

import * as pulumi from "@pulumi/pulumi";
import * as vcd from "@pulumi/vcd";

const my_vdc = vcd.getOrgVdc({
    org: "test",
    name: "vdc-test",
});
const tf_policy_name = my_vdc.then(my_vdc => vcd.getVmPlacementPolicy({
    name: "my-policy",
    vdcId: my_vdc.id,
}));
export const policyId = tf_policy_name.then(tf_policy_name => tf_policy_name.id);
Copy
import pulumi
import pulumi_vcd as vcd

my_vdc = vcd.get_org_vdc(org="test",
    name="vdc-test")
tf_policy_name = vcd.get_vm_placement_policy(name="my-policy",
    vdc_id=my_vdc.id)
pulumi.export("policyId", tf_policy_name.id)
Copy
package main

import (
	"github.com/pulumi/pulumi-terraform-provider/sdks/go/vcd/v3/vcd"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		my_vdc, err := vcd.LookupOrgVdc(ctx, &vcd.LookupOrgVdcArgs{
			Org:  pulumi.StringRef("test"),
			Name: "vdc-test",
		}, nil)
		if err != nil {
			return err
		}
		tf_policy_name, err := vcd.LookupVmPlacementPolicy(ctx, &vcd.LookupVmPlacementPolicyArgs{
			Name:  "my-policy",
			VdcId: pulumi.StringRef(my_vdc.Id),
		}, nil)
		if err != nil {
			return err
		}
		ctx.Export("policyId", tf_policy_name.Id)
		return nil
	})
}
Copy
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Vcd = Pulumi.Vcd;

return await Deployment.RunAsync(() => 
{
    var my_vdc = Vcd.GetOrgVdc.Invoke(new()
    {
        Org = "test",
        Name = "vdc-test",
    });

    var tf_policy_name = Vcd.GetVmPlacementPolicy.Invoke(new()
    {
        Name = "my-policy",
        VdcId = my_vdc.Apply(getOrgVdcResult => getOrgVdcResult.Id),
    });

    return new Dictionary<string, object?>
    {
        ["policyId"] = tf_policy_name.Apply(tf_policy_name => tf_policy_name.Apply(getVmPlacementPolicyResult => getVmPlacementPolicyResult.Id)),
    };
});
Copy
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vcd.VcdFunctions;
import com.pulumi.vcd.inputs.GetOrgVdcArgs;
import com.pulumi.vcd.inputs.GetVmPlacementPolicyArgs;
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 my-vdc = VcdFunctions.getOrgVdc(GetOrgVdcArgs.builder()
            .org("test")
            .name("vdc-test")
            .build());

        final var tf-policy-name = VcdFunctions.getVmPlacementPolicy(GetVmPlacementPolicyArgs.builder()
            .name("my-policy")
            .vdcId(my_vdc.id())
            .build());

        ctx.export("policyId", tf_policy_name.id());
    }
}
Copy
variables:
  my-vdc:
    fn::invoke:
      function: vcd:getOrgVdc
      arguments:
        org: test
        name: vdc-test
  tf-policy-name:
    fn::invoke:
      function: vcd:getVmPlacementPolicy
      arguments:
        name: my-policy
        vdcId: ${["my-vdc"].id}
outputs:
  policyId: ${["tf-policy-name"].id}
Copy

Using getVmPlacementPolicy

Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

function getVmPlacementPolicy(args: GetVmPlacementPolicyArgs, opts?: InvokeOptions): Promise<GetVmPlacementPolicyResult>
function getVmPlacementPolicyOutput(args: GetVmPlacementPolicyOutputArgs, opts?: InvokeOptions): Output<GetVmPlacementPolicyResult>
Copy
def get_vm_placement_policy(id: Optional[str] = None,
                            name: Optional[str] = None,
                            provider_vdc_id: Optional[str] = None,
                            vdc_id: Optional[str] = None,
                            opts: Optional[InvokeOptions] = None) -> GetVmPlacementPolicyResult
def get_vm_placement_policy_output(id: Optional[pulumi.Input[str]] = None,
                            name: Optional[pulumi.Input[str]] = None,
                            provider_vdc_id: Optional[pulumi.Input[str]] = None,
                            vdc_id: Optional[pulumi.Input[str]] = None,
                            opts: Optional[InvokeOptions] = None) -> Output[GetVmPlacementPolicyResult]
Copy
func LookupVmPlacementPolicy(ctx *Context, args *LookupVmPlacementPolicyArgs, opts ...InvokeOption) (*LookupVmPlacementPolicyResult, error)
func LookupVmPlacementPolicyOutput(ctx *Context, args *LookupVmPlacementPolicyOutputArgs, opts ...InvokeOption) LookupVmPlacementPolicyResultOutput
Copy

> Note: This function is named LookupVmPlacementPolicy in the Go SDK.

public static class GetVmPlacementPolicy 
{
    public static Task<GetVmPlacementPolicyResult> InvokeAsync(GetVmPlacementPolicyArgs args, InvokeOptions? opts = null)
    public static Output<GetVmPlacementPolicyResult> Invoke(GetVmPlacementPolicyInvokeArgs args, InvokeOptions? opts = null)
}
Copy
public static CompletableFuture<GetVmPlacementPolicyResult> getVmPlacementPolicy(GetVmPlacementPolicyArgs args, InvokeOptions options)
public static Output<GetVmPlacementPolicyResult> getVmPlacementPolicy(GetVmPlacementPolicyArgs args, InvokeOptions options)
Copy
fn::invoke:
  function: vcd:index/getVmPlacementPolicy:getVmPlacementPolicy
  arguments:
    # arguments dictionary
Copy

The following arguments are supported:

Name This property is required. string
The name VM Placement Policy.
Id string
ProviderVdcId string
The ID of the Provider VDC to which the VM Placement Policy belongs.
VdcId string
The ID of the VDC to which the VM Placement Policy is assigned.
Name This property is required. string
The name VM Placement Policy.
Id string
ProviderVdcId string
The ID of the Provider VDC to which the VM Placement Policy belongs.
VdcId string
The ID of the VDC to which the VM Placement Policy is assigned.
name This property is required. String
The name VM Placement Policy.
id String
providerVdcId String
The ID of the Provider VDC to which the VM Placement Policy belongs.
vdcId String
The ID of the VDC to which the VM Placement Policy is assigned.
name This property is required. string
The name VM Placement Policy.
id string
providerVdcId string
The ID of the Provider VDC to which the VM Placement Policy belongs.
vdcId string
The ID of the VDC to which the VM Placement Policy is assigned.
name This property is required. str
The name VM Placement Policy.
id str
provider_vdc_id str
The ID of the Provider VDC to which the VM Placement Policy belongs.
vdc_id str
The ID of the VDC to which the VM Placement Policy is assigned.
name This property is required. String
The name VM Placement Policy.
id String
providerVdcId String
The ID of the Provider VDC to which the VM Placement Policy belongs.
vdcId String
The ID of the VDC to which the VM Placement Policy is assigned.

getVmPlacementPolicy Result

The following output properties are available:

Description string
Id string
LogicalVmGroupIds List<string>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
Name string
VmGroupIds List<string>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
ProviderVdcId string
VdcId string
Description string
Id string
LogicalVmGroupIds []string
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
Name string
VmGroupIds []string
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
ProviderVdcId string
VdcId string
description String
id String
logicalVmGroupIds List<String>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
name String
vmGroupIds List<String>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
providerVdcId String
vdcId String
description string
id string
logicalVmGroupIds string[]
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
name string
vmGroupIds string[]
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
providerVdcId string
vdcId string
description str
id str
logical_vm_group_ids Sequence[str]
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
name str
vm_group_ids Sequence[str]
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
provider_vdc_id str
vdc_id str
description String
id String
logicalVmGroupIds List<String>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
name String
vmGroupIds List<String>
This attribute can't be retrieved if the data source is used by a tenant user when fetching by vdc_id.
providerVdcId String
vdcId String

Package Details

Repository
vcd vmware/terraform-provider-vcd
License
Notes
This Pulumi package is based on the vcd Terraform Provider.