# Number of lines of code in new: 41
sub new {
my ($class, %args) = @_;
$class = ref($class) || $class;
my $validatorList = [];
$validatorList = [
new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'upgrade_policy',
'case_map' => {
'AFTER_CLEAN_SHUTDOWN' => ['upgrade_version'],
'ALWAYS' => ['upgrade_version'],
'NEVER' => [],
}),
new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'upgrade_status',
'case_map' => {
'FAILED' => ['upgrade_error'],
'NONE' => [],
'PENDING' => [],
'SUCCESS' => [],
}),
];
my $self = $class->SUPER::new('validator_list' => $validatorList, %args);
$self->{version} = $args{'version'};
$self->{upgrade_policy} = $args{'upgrade_policy'};
$self->{upgrade_version} = $args{'upgrade_version'};
$self->{upgrade_status} = $args{'upgrade_status'};
$self->{upgrade_error} = $args{'upgrade_error'};
$self->set_binding_class('binding_class' => 'Com::Vmware::Vcenter::Vm::Hardware::Info');
$self->set_binding_name('name' => 'com.vmware.vcenter.vm.hardware.info');
$self->set_binding_field('key' => 'version', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm', 'type_name' => 'Hardware::Version'));
$self->set_binding_field('key' => 'upgrade_policy', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm', 'type_name' => 'Hardware::UpgradePolicy'));
$self->set_binding_field('key' => 'upgrade_version', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm', 'type_name' => 'Hardware::Version')));
$self->set_binding_field('key' => 'upgrade_status', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm', 'type_name' => 'Hardware::UpgradeStatus'));
$self->set_binding_field('key' => 'upgrade_error', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ErrorType()));
bless $self, $class;
return $self;
}