Hi,
I have four containers in my dcr.
1st container- root, 2nd - regions, 3rd - servers, 4th - depServers.
I have an element int he fourth container, called serverToDeploy. I am able to fetch the value of the third container and pass it to the array. And it gives me the complete set of array values. But when I try to get the element(serverToDeploy) value from the fourth container, the end result is only the final value of the iteration. If I have three values of "serverTodeploy", the result I am getting is only the third value.
Could someone help me out in this issue? Following is the code snippet.
( $hasError,$siteName,$releaseName,
$emailMode,$emailList,$regionArrayRef,$mappingArrayRef) = parseReleaseDCR ($releaseDCRPath, $applicationName, $subBranchName);
$serverListRef = $$regionArrayRef[$i][1];
%depServerDataHash = ();
foreach $depServerData(
@$serverListRef) {
for ($depServerArrayIndex=0; $depServerArrayIndex < scalar (
@$serverListRef); $depServerArrayIndex++) {
my $depServerDataHash =
@$serverListRef[$depServerArrayIndex];
my $serverToDeploy = %$depServerDataHash->{serverToDeploy};
push (
@serverToDeployList, $serverToDeploy); //The
@serverToDeployList gives me only the last value of the iteration
}
}
sub parseReleaseDCR {
($dcrFileName, $applicationName, $subBranchName) =
@_;
my
@regionList = $rootnode->list('regions');
my $numRegions = scalar (
@regionList);
for ($i = 0; $i < $numRegions; $i++) {
my $region = $regionList[$i];
my
@serverArray = ();
my
@serverList = $region->list('servers');
my $numServers = scalar(
@serverList);
for ($j = 0; $j < $numServers; $j++) {
my $server = $serverList[$j];
my %serverDataHash = ();
%serverDataHash -> {serverName} = $server->value('serverName');
my
@depServerList = $server->list('depServers');
foreach my $depServ(
@depServerList) {
my $serverToDeploy = $depServ->value('serverToDeploy');
%serverDataHash -> {serverToDeploy} = $serverToDeploy;
}
$serverArray[$j] = \%serverDataHash;
}
$regionArray[$i][0] = $regionName;
$regionArray[$i][1] = \
@serverArray;
}
Thanks.