VMware {code} Community
duyuyang
Contributor
Contributor

AddDVPortgroup error

Hi,

When I add a VMware distributed virtual portgroup, it failed, fault string indicates that: Not initialized: boolean inherited.

Can anyone explain it to me? Any sample code?

Thanks,

Shawn

0 Kudos
3 Replies
lamw
Community Manager
Community Manager

Can you please provide the code you're using, makes debugging slightly easier Smiley Wink

Either attach the script or reply in a post wrapped in code tags.

=========================================================================

William Lam

VMware vExpert 2009

VMware ESX/ESXi scripts and resources at:

VMware Code Central - Scripts/Sample code for Developers and Administrators

VMware Developer Comuunity

Twitter: @lamw

If you find this information useful, please award points for "correct" or "helpful".

0 Kudos
duyuyang
Contributor
Contributor

Thanks, the code here:

sub add_portgroup {

my ($vdswitch_view, $dvpgname, $vlan, $hostname, $uplinks) = @_;

my $uplinkpolicy = new VMwareUplinkPortOrderPolicy(activeUplinkPort => $uplinks);

my $policy = new StringPolicy(value => "loadbalance_srcmac");

my $uplinkteamingpolicy = new VmwareUplinkPortTeamingPolicy(uplinkPortOrder => $uplinkpolicy, policy => $policy);

my $dvsportsetting = new VMwareDVSPortSetting(vlan => $vlan, uplinkTeamingPolicy => $uplinkteamingpolicy);

my $dvPGSpec = new DVPortgroupConfigSpec(name => $dvpgname, numPorts => 128, defaultPortConfig => $dvsportsetting);

my $dvPGSpecs = ;

eval {$vdswitch_view->AddDVPortgroup(spec => $dvPGSpecs);};

if ($@) {

print_plain($vdswitch_view->name, "AddDVPortgroup failed: " . $@->fault_string);

return 1;

}

print_plain($vdswitch, "Add $dvpgname succeeded");

return 0;

}

I figured maybe it is the many parameters I omitted, so I add the following "inherited", but it failed with the same fault string:

my $qostag = new IntPolicy(inherited => 'true');

my $security = new DVSSecurityPolicy(inherited => 'true');

my $txuplink = new BoolPolicy(inherited => 'true');

my $blocked = new BoolPolicy(inherited => 'true');

my $inshaping = new DVSTrafficShapingPolicy(inherited => 'true');

my $outshaping = new DVSTrafficShapingPolicy(inherited => 'true');

my $vendor = new DVSVendorSpecificConfig(inherited => 'true');

my $dvsportsetting = new VMwareDVSPortSetting(vlan => $vlan, uplinkTeamingPolicy => $uplinkteamingpolicy,

blocked => $blocked, inShapingPolicy => $inshaping,

outShapingPolicy => $outshaping, vendorSpecificConfig => $vendor,

qosTag => $qostag, securityPolicy => $security, txUplink => $txuplink);

0 Kudos
duyuyang
Contributor
Contributor

Thanks, problem solved.

sub add_dvportgroup {

my ($vdswitch_view, $dvpgname, $vlan, $uplinks) = @_;

                                    1. The following inherited fields are MUST #####################

my $uplinkpolicy = new VMwareUplinkPortOrderPolicy(inherited => 'false', activeUplinkPort => $uplinks);

my $policy = new StringPolicy(inherited => 'false', value => "loadbalance_srcmac");

my $uplinkteamingpolicy = new VmwareUplinkPortTeamingPolicy(inherited => 'false', uplinkPortOrder => $uplinkpolicy, policy => $policy);

my $qostag = new IntPolicy(inherited => 'true');

my $security = new DVSSecurityPolicy(inherited => 'true');

my $txuplink = new BoolPolicy(inherited => 'true');

my $blocked = new BoolPolicy(inherited => 'true');

my $inshaping = new DVSTrafficShapingPolicy(inherited => 'true');

my $outshaping = new DVSTrafficShapingPolicy(inherited => 'true');

my $vendor = new DVSVendorSpecificConfig(inherited => 'true');

my $dvsportsetting = new VMwareDVSPortSetting(vlan => $vlan, uplinkTeamingPolicy => $uplinkteamingpolicy,

blocked => $blocked, inShapingPolicy => $inshaping,

outShapingPolicy => $outshaping, vendorSpecificConfig => $vendor,

qosTag => $qostag, securityPolicy => $security, txUplink => $txuplink);

my $pgpolicy = new VMwareDVSPortgroupPolicy(blockOverrideAllowed => 'true', livePortMovingAllowed => 'false',

portConfigResetAtDisconnect => 'false', shapingOverrideAllowed => 'false',

vendorConfigOverrideAllowed => 'false', securityPolicyOverrideAllowed => 'false',

uplinkTeamingOverrideAllowed => 'false', vlanOverrideAllowed => 'false');

                                    1. type is a MUST ################

my $dvpgspec = new DVPortgroupConfigSpec(name => $dvpgname, type => "earlyBinding", numPorts => 128, policy => $pgpolicy, defaultPortConfig => $dvsportsetting);

my $dvpgspecs = ;

eval {$vdswitch_view->AddDVPortgroup(spec => $dvpgspecs);};

if ($@) {

print_plain($vdswitch_view->name, "AddDVPortgroup failed: " . $@->fault_string);

return 1;

}

print_plain($vdswitch_view->name, "Add $dvpgname succeeded");

return 0;

}

0 Kudos