[pve-devel] [PATCH] - add ssl / https support for nexenta - die with content for json errors

Alexandre DERUMIER aderumier at odiso.com
Wed Aug 8 06:15:31 CEST 2012


about

"-    my $obj = from_json($res->content);
-    print $obj->{error}->{message} if $obj->{error}->{message};
-    return undef if $obj->{error}->{message};"

I don't die here, because in alloc_image for exemple:

1)nexenta_create_zvol($name, $size, $scfg);
2)nexenta_create_lu($name, $scfg);
3)die "error create zvol" if !nexenta_add_lun_mapping_entry($name, $scfg);

or free_image

1)nexenta_delete_lu($name, $scfg);
2)die "error deleting volume" if !nexenta_delete_zvol($name, $scfg);


if something goes wrong in last step, and that we wan't retry again to add/remove,
It'll retry the firsts steps and die.
So I never die on the firsts steps.
(I could manage some kind of rollback if something goes wrong, but if something hang in the rollback, this is difficult to manage)


----- Mail original ----- 

De: "Stefan Priebe" <s.priebe at profihost.ag> 
À: pve-devel at pve.proxmox.com 
Cc: "spriebe" <git at profihost.ag> 
Envoyé: Mardi 7 Août 2012 22:14:18 
Objet: [pve-devel] [PATCH] - add ssl / https support for nexenta - die with content for json errors 

From: spriebe <git at profihost.ag> 


Signed-off-by: Stefan Priebe <s.priebe at profihost.ag> 
--- 
PVE/Storage/NexentaPlugin.pm | 16 ++++++++++++---- 
1 files changed, 12 insertions(+), 4 deletions(-) 

diff --git a/PVE/Storage/NexentaPlugin.pm b/PVE/Storage/NexentaPlugin.pm 
index 6ad92d9..34de7ef 100644 
--- a/PVE/Storage/NexentaPlugin.pm 
+++ b/PVE/Storage/NexentaPlugin.pm 
@@ -16,7 +16,7 @@ use base qw(PVE::Storage::Plugin); 
sub nexenta_request { 
my ($scfg, $json) = @_; 

- my $uri = "http://".$scfg->{portal}.":2000/rest/nms/"; 
+ my $uri = ( $scfg->{ssl} ? "https" : "http" ) . "://" . $scfg->{portal} . ":2000/rest/nms/"; 
my $req = HTTP::Request->new( 'POST', $uri ); 

$req->header( 'Content-Type' => 'application/json' ); 
@@ -29,9 +29,12 @@ sub nexenta_request { 
if (!$res->is_success) { 
die $res->content; 
} 
- my $obj = from_json($res->content); 
- print $obj->{error}->{message} if $obj->{error}->{message}; 
- return undef if $obj->{error}->{message}; 
+ 
+ my $obj = eval { from_json($res->content); }; 
+ die "JSON not valid. Content: " . $res->content if ($@); 
+ 
+ die "Nexenta API Error: " . $obj->{error}->{message} if $obj->{error}->{message}; 
+ 
return $obj->{result} if $obj->{result}; 
return 1; 
} 
@@ -139,6 +142,10 @@ sub plugindata { 

sub properties { 
return { 
+ ssl => { 
+ description => "ssl", 
+ type => 'bool', 
+ }, 
login => { 
description => "login", 
type => 'string', 
@@ -156,6 +163,7 @@ sub properties { 

sub options { 
return { 
+ ssl => { fixed => 1 }, 
target => { fixed => 1 }, 
portal => { fixed => 1 }, 
login => { fixed => 1 }, 
-- 
1.7.2.5 

_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 



-- 

-- 



	

Alexandre D e rumier 

Ingénieur Systèmes et Réseaux 


Fixe : 03 20 68 88 85 

Fax : 03 20 68 90 88 


45 Bvd du Général Leclerc 59100 Roubaix 
12 rue Marivaux 75002 Paris 



More information about the pve-devel mailing list