diff --git a/src/cli/one_helper/oneuser_helper.rb b/src/cli/one_helper/oneuser_helper.rb index d3a78b0955..930f719e2e 100644 --- a/src/cli/one_helper/oneuser_helper.rb +++ b/src/cli/one_helper/oneuser_helper.rb @@ -82,6 +82,21 @@ class OneUserHelper < OpenNebulaHelper::OneHelper return 0, auth.password end + # Returns the driver to be used for 'oneuser create' + # @param options [Hash] oneuser command options + # @return [String] the authentication driver to use + def driver(options) + if options[:driver] + return options[:driver] + elsif options[:ssh] + return OpenNebula::User::SSH_AUTH + elsif options[:x509] + return OpenNebula::User::X509_AUTH + else + return OpenNebula::User::CORE_AUTH + end + end + def self.login(username, options) if options[:ssh] require 'ssh_auth' diff --git a/src/cli/oneuser b/src/cli/oneuser index 9bb2ba4a70..b1c6970c1b 100755 --- a/src/cli/oneuser +++ b/src/cli/oneuser @@ -159,8 +159,9 @@ cmd=CommandParser::CmdParser.new(ARGV) do end end + driver = helper.driver(options) + helper.create_resource(options) do |user| - driver = options[:driver] || OpenNebula::User::CORE_AUTH user.allocate(args[0], pass, driver) end end diff --git a/src/oca/ruby/OpenNebula/User.rb b/src/oca/ruby/OpenNebula/User.rb index 8e71ff5c6b..ed104a17f0 100644 --- a/src/oca/ruby/OpenNebula/User.rb +++ b/src/oca/ruby/OpenNebula/User.rb @@ -35,9 +35,15 @@ module OpenNebula SELF = -1 - #Selects core authentication driver + # Driver name for default core authentication CORE_AUTH = "core" + # Driver name for ssh authentication + SSH_AUTH = "ssh" + + # Driver name for x509 authentication + X509_AUTH = "x509" + # Creates a User description with just its identifier # this method should be used to create plain User objects. # +id+ the id of the user