@@ -329,27 +329,58 @@ sub getSnapshotTime {
329329# if timezone defined as GMT+/-offset return undef
330330# parameters:
331331# - timezone
332- # Return 0 if OK
332+ # Return timezone of OK or N/A if timezone is not recognized by perl
333333
334334sub checkTZ {
335335 my $self = shift ;
336336 my $timezone = shift ;
337337 logger($self -> {_debug }, " Entering Snapshot_obj::checkTZ" ,1);
338338
339+ # fixes for timezones supported by Delphix but not recognized by Perl
340+ if ($timezone eq ' Etc/Zulu' ) {
341+ $timezone = ' UTC' ;
342+ }
343+ if ($timezone eq ' Zulu' ) {
344+ $timezone = ' UTC' ;
345+ }
346+ if ($timezone eq ' Etc/Universal' ) {
347+ $timezone = ' UTC' ;
348+ }
349+ if ($timezone eq ' Universal' ) {
350+ $timezone = ' UTC' ;
351+ }
352+ if ($timezone eq ' Etc/Greenwich' ) {
353+ $timezone = ' GMT' ;
354+ }
355+ if ($timezone eq ' Greenwich' ) {
356+ $timezone = ' GMT' ;
357+ }
358+ if ($timezone eq ' GMT0' ) {
359+ $timezone = ' GMT' ;
360+ }
361+ if ($timezone eq ' Etc/GMT0' ) {
362+ $timezone = ' GMT' ;
363+ }
364+ if ($timezone eq ' Etc/GMT-0' ) {
365+ $timezone = ' GMT' ;
366+ }
367+ if ($timezone eq ' Etc/GMT+0' ) {
368+ $timezone = ' GMT' ;
369+ }
339370
340371 my $checktime = time ();
341372 my $dt = ParseDate($checktime );
342373 my $tz = new Date::Manip::TZ;
343374 my ($err ,$date ,$offset ,$isdst ,$abbrev ) = $tz -> convert_from_gmt($dt , $timezone );
344375
345- if (defined ( $abbrev ) ) {
376+ if (! $err ) {
346377 logger($self -> {_debug }, " checkTZ abbrev-" . $abbrev ,1);
347378 } else {
348379 logger($self -> {_debug }, " checkTZ abbrev-undefined" ,1);
380+ $timezone = ' N/A' ;
349381 }
350382
351- return $err ;
352-
383+ return $timezone ;
353384}
354385
355386# Procedure getSnapshotTimeZone
@@ -366,30 +397,11 @@ sub getSnapshotTimeZone {
366397 chomp ($ts );
367398 my @temp = split (' ,' ,$ts );
368399 my $ret = $temp [0];
369- if ($ret eq ' Etc/Zulu' ) {
370- $ret = ' Etc/GMT' ;
371- }
372-
373- if ($ret eq ' Greenwich' ) {
374- $ret = ' GMT+00:00' ;
375- }
376-
377- my $tz = new Date::Manip::TZ;
378-
379- my @zone = (' Etc/GMT' );
380- my ($err ,$val ) = $tz -> define_offset(' +0000' , @zone );
381-
382- logger($self -> {debug }, " Setting GMT timezone err-" . $err );
383-
384- @zone = (' Asia/Singapore' );
385- ($err ,$val ) = $tz -> define_offset(' +0800' , @zone );
386-
387- logger($self -> {debug }, " Setting SGT timezone err-" . $err );
388400
389401 if (! ($ret =~ / [a-zA-Z]{3}.\d\d :\d\d / )) {
390- if ( $self -> checkTZ( $ret )) {
391- $ret = ' N/A ' ;
392- }
402+ # if timezone is not GMT+-00:00 format
403+ # check if this format can be recognized and amended by checkTZ function
404+ $ret = $self -> checkTZ( $ret );
393405 }
394406
395407 return $ret ;
0 commit comments