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
Can you please provide the code you're using, makes debugging slightly easier
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
If you find this information useful, please award points for "correct" or "helpful".
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);
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);
Thanks, problem solved.
sub add_dvportgroup {
my ($vdswitch_view, $dvpgname, $vlan, $uplinks) = @_;
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');
type is a MUST ################
my $dvpgspec = new DVPortgroupConfigSpec(name => $dvpgname, type => "earlyBinding", numPorts => 128, policy => $pgpolicy, defaultPortConfig => $dvsportsetting);
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;
}