Rework the error routine so it will not error out.
- Under a certain condition, the variable $freenas_rest_connection would not be defined resulting in a perl ‘blessed’ error. Added logic to see if a variable is being passed in the @_ and use it, else use $freenas_rest_connection. - Use caller (1)[3] instead of passing the function name through the @_.
This commit is contained in:
		
							parent
							
								
									739b6fb0f6
								
							
						
					
					
						commit
						a40e0ac299
					
				|  | @ -358,7 +358,7 @@ sub freenas_api_connect { | ||||||
|         syslog("info", (caller(0))[3] . " : REST connection successful to '" . $apihost . "' using the '" . $scheme . "' protocol"); |         syslog("info", (caller(0))[3] . " : REST connection successful to '" . $apihost . "' using the '" . $scheme . "' protocol"); | ||||||
|         $runawayprevent = 0; |         $runawayprevent = 0; | ||||||
|     } elsif ($runawayprevent > 1) {    # Make sure we are not recursion calling. |     } elsif ($runawayprevent > 1) {    # Make sure we are not recursion calling. | ||||||
|         freenas_api_log_error($freenas_server_list->{$apihost}, "freenas_api_call"); |         freenas_api_log_error($freenas_server_list->{$apihost}); | ||||||
|         die "Loop recursion prevention"; |         die "Loop recursion prevention"; | ||||||
|     } elsif ($code == 302) {           # A 302 from FreeNAS means it doesn't like v1.0 APIs. |     } elsif ($code == 302) {           # A 302 from FreeNAS means it doesn't like v1.0 APIs. | ||||||
|         syslog("info", (caller(0))[3] . " : Changing to v2.0 API's"); |         syslog("info", (caller(0))[3] . " : Changing to v2.0 API's"); | ||||||
|  | @ -371,7 +371,7 @@ sub freenas_api_connect { | ||||||
|         $scfg->{freenas_use_ssl} = 1; |         $scfg->{freenas_use_ssl} = 1; | ||||||
|         freenas_api_connect($scfg); |         freenas_api_connect($scfg); | ||||||
|     } else {                           # For now, any other code we fail. |     } else {                           # For now, any other code we fail. | ||||||
|         freenas_api_log_error($freenas_server_list->{$apihost}, "freenas_api_call"); |         freenas_api_log_error($freenas_server_list->{$apihost}); | ||||||
|         die "Unable to connect to the FreeNAS API service at '" . $apihost . "' using the '" . $scheme . "' protocol"; |         die "Unable to connect to the FreeNAS API service at '" . $apihost . "' using the '" . $scheme . "' protocol"; | ||||||
|     } |     } | ||||||
|     $freenas_rest_connection = $freenas_server_list->{$apihost}; |     $freenas_rest_connection = $freenas_server_list->{$apihost}; | ||||||
|  | @ -448,9 +448,10 @@ sub freenas_api_call { | ||||||
| # Writes the Response and Content to SysLog  | # Writes the Response and Content to SysLog  | ||||||
| # | # | ||||||
| sub freenas_api_log_error { | sub freenas_api_log_error { | ||||||
|     my ($method) = @_; |     my ($rest_connection) = @_; | ||||||
|     syslog("info","[ERROR]FreeNAS::API::" . $method . " : Response code: " . $freenas_rest_connection->responseCode()); |     my $connection = ((defined $rest_connection) ? $rest_connection : $freenas_rest_connection); | ||||||
|     syslog("info","[ERROR]FreeNAS::API::" . $method . " : Response content: " . $freenas_rest_connection->responseContent()); |     syslog("info","[ERROR]FreeNAS::API::" . (caller(1))[3] . " : Response code: " . $connection->responseCode()); | ||||||
|  |     syslog("info","[ERROR]FreeNAS::API::" . (caller(1))[3] . " : Response content: " . $connection->responseContent()); | ||||||
|     return 1; |     return 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -469,7 +470,7 @@ sub freenas_iscsi_get_globalconfiguration { | ||||||
|         syslog("info", (caller(0))[3] . " : target_basename=" . $result->{$freenas_api_variables->{'basename'}}); |         syslog("info", (caller(0))[3] . " : target_basename=" . $result->{$freenas_api_variables->{'basename'}}); | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("get_globalconfig"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -490,7 +491,7 @@ sub freenas_iscsi_get_extent { | ||||||
|         syslog("info", (caller(0))[3] . " : successful"); |         syslog("info", (caller(0))[3] . " : successful"); | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("get_extent"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -526,7 +527,7 @@ sub freenas_iscsi_create_extent { | ||||||
|         syslog("info", "FreeNAS::API::create_extent(lun_path=" . $result->{$freenas_api_variables->{'extentpath'}} . ") : successful"); |         syslog("info", "FreeNAS::API::create_extent(lun_path=" . $result->{$freenas_api_variables->{'extentpath'}} . ") : successful"); | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("create_extent"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -548,7 +549,7 @@ sub freenas_iscsi_remove_extent { | ||||||
|         syslog("info", (caller(0))[3] . "(extent_id=$extent_id) : successful"); |         syslog("info", (caller(0))[3] . "(extent_id=$extent_id) : successful"); | ||||||
|         return 1; |         return 1; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("remove_extent"); |         freenas_api_log_error(); | ||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -569,7 +570,7 @@ sub freenas_iscsi_get_target { | ||||||
|         syslog("info", (caller(0))[3] . " : successful"); |         syslog("info", (caller(0))[3] . " : successful"); | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("get_target"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -599,7 +600,7 @@ sub freenas_iscsi_get_target_to_extent { | ||||||
|         } |         } | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("get_target_to_extent"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -630,7 +631,7 @@ sub freenas_iscsi_create_target_to_extent { | ||||||
|         syslog("info", (caller(0))[3] . "(target_id=$target_id, extent_id=$extent_id, lun_id=$lun_id) : successful"); |         syslog("info", (caller(0))[3] . "(target_id=$target_id, extent_id=$extent_id, lun_id=$lun_id) : successful"); | ||||||
|         return $result; |         return $result; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("create_target_to_extent"); |         freenas_api_log_error(); | ||||||
|         return undef; |         return undef; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -658,7 +659,7 @@ sub freenas_iscsi_remove_target_to_extent { | ||||||
|         syslog("info", (caller(0))[3] . "(link_id=$link_id) : successful"); |         syslog("info", (caller(0))[3] . "(link_id=$link_id) : successful"); | ||||||
|         return 1; |         return 1; | ||||||
|     } else { |     } else { | ||||||
|         freenas_api_log_error("remove_target_to_extent"); |         freenas_api_log_error(); | ||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue