From: Wolfgang Link Date: Fri, 16 Mar 2018 09:22:52 +0000 (+0100) Subject: Add cifs in create API call. X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=a4a9405d766debaa2fe8215f934e80be46ad6705;p=pve-storage.git Add cifs in create API call. In this patch the nodes will be deleted if the nodes parameter comes with a empty string. We need this in the GUI when update the nodes in the config to reset if a nodes. If we do not erase the empty hash the storage online check would be skipped. Also the password and user would not be verified. --- diff --git a/PVE/API2/Storage/Config.pm b/PVE/API2/Storage/Config.pm index 2d76e59..a697e8d 100755 --- a/PVE/API2/Storage/Config.pm +++ b/PVE/API2/Storage/Config.pm @@ -12,6 +12,7 @@ use HTTP::Status qw(:constants); use Storable qw(dclone); use PVE::JSONSchema qw(get_standard_option); use PVE::RPCEnvironment; +use PVE::PTY; use PVE::RESTHandler; @@ -139,6 +140,13 @@ __PACKAGE__->register_method ({ my $type = extract_param($param, 'type'); my $storeid = extract_param($param, 'storage'); + # revent an empty nodelist. + # fix me in section config create never need an empty entity. + delete $param->{nodes} if !$param->{nodes}; + + my $password = extract_param($param, 'password') + if $type eq 'cifs' && $param->{username}; + if ($param->{portal}) { $param->{portal} = PVE::Storage::resolv_portal($param->{portal}); } @@ -190,11 +198,21 @@ __PACKAGE__->register_method ({ die "failed to copy ceph authx keyring for storage '$storeid': $err\n"; } } - - # try to activate if enabled on local node, - # we only do this to detect errors/problems sooner - if (PVE::Storage::storage_check_enabled($cfg, $storeid, undef, 1)) { - PVE::Storage::activate_storage($cfg, $storeid); + # create a password file in /etc/pve/priv, + # this file is used as a cert_file at mount time. + my $cred_file = &$set_cifs_credentials($password, $storeid) + if defined($password); + + eval { + # try to activate if enabled on local node, + # we only do this to detect errors/problems sooner + if (PVE::Storage::storage_check_enabled($cfg, $storeid, undef, 1)) { + PVE::Storage::activate_storage($cfg, $storeid); + } + }; + if(my $err = $@) { + unlink $cred_file if defined($cred_file); + die $err; } PVE::Storage::write_config($cfg);