"bigstorderv_mpt" => { "%export_name" => "/bb/bigstor/derv", "%filer_device" => "nydevnfs_derv", "%filer_volume" => "/vol/derv" }, "bigstormtg_mpt" => { "%export_name" => "/bb/bigstor/mtgmodel", "%filer_device" => { "\@ridge" => "njdevnfs_mtge", "\@west" => "nydevnfs_mtge" }, "%filer_volume" => "/vol/mtge" }, "build10_mpt" => { "%export_name" => "/bb/source", "%filer_device" => { "\@ridge" => "rnap7751-s", "\@west" => "nydevnfs_sunbbsource" }, "%filer_volume" => { "\@ridge" => "/vol/sunbbsource_c", "\@west" => "/vol/sunbbsource" } }, #### while (my( $kTag, $vTag ) = each %{$nfshashofhashes} ) { next if ( ref $vTag ne 'HASH' ); print "TAG > $kTag\n"; my $default = delete $vTag->{'%default'}; while (my( $kNFSMNT, $vNFSMNT ) = each %{$vTag} ) { next if ($kNFSMNT =~ m/optswt_nfs\b/); #print "...$kTag $kNFSMNT\n"; my $default = delete $vNFSMNT->{'default'} // delete $vNFSMNT->{'%default'}; while (my($kDEFAULT, $vDEFAULT) = each %{$default}) { #Get all the defaults key/value pairs for each nfs hash #print "$kNFSMNT:$kDEFAULT $vDEFAULT\n"; $MNTOPTS = "$vDEFAULT" if ($kDEFAULT eq '%mount_opts'); $MNTUSER = "$vDEFAULT" if ($kDEFAULT eq '%mount_user'); $MNTGRP = "$vDEFAULT" if ($kDEFAULT eq '%mount_group'); $MNTACL = "$vDEFAULT" if ($kDEFAULT eq '%mount_acl'); } while (my( $kNFSTOKEN, $vNFSTOKEN ) = each %{$vNFSMNT} ) { next if ( $kNFSTOKEN =~ m/\%comment\b/ ); #print "*** $kTag $kNFSTOKEN $vNFSTOKEN\n"; #Prints @dev home7_mpt, @dev home-lnk-mpt etc and value which is a hash containg %export_name, %filer_device etc $FILERDEVICE = $vNFSTOKEN->{'%filer_device'}; $FILERDEVICEHASH = ref $FILERDEVICE ? $FILERDEVICE : { '' => $FILERDEVICE }; $FILERVOLUME = $vNFSTOKEN->{'%filer_volume'}; $FILERVOLUMEHASH = ref $FILERVOLUME ? $FILERVOLUME : { '' => $FILERVOLUME }; $EXPORTFS = $vNFSTOKEN->{'%export_name'}; #print "$kTag $kNFSTOKEN $FILERDEVICE $FILERVOLUME $EXPORTFS\n"; ###Process %filer_device and %filer_volume. Sometimes %filer_device is a hash. Sometimes %filer_volume is a hash. Sometimes both are hashes. Sometimes neither are hashes :-( # my ($FDEVICE, $WESTFDEVICE, $RIDGEFDEVICE, $VOLUME, $WESTVOL, $RIDGEVOL); for my $DataCenterFD (keys %{$FILERDEVICEHASH}) { $FDEVICE = $FILERDEVICEHASH->{$DataCenterFD} // $FILERDEVICEHASH->{''}; #print "$DataCenterFD\n"; for my $DataCenterVD (keys %{$FILERVOLUMEHASH}) { $VOLUME = $FILERVOLUMEHASH->{$DataCenterVD} // $FILERVOLUMEHASH->{''}; #print "$DataCenterVD\n"; ##NEARLY WORKING. JUST NEED TO MATCH VOLUME VALUES TO EITHER A @WEST/@RIDGE FILERDEVICE @WEST/@RIDGE #This prints out a line in this format: @dev bigstormtg_mpt @ridge /bb/bigstor/mtgmodel /vol/mtge print "$kTag $kNFSTOKEN $FDEVICE $DataCenterFD $EXPORTFS $VOLUME\n"; } } } } } }