A simplified version of setup_new_user.rb script, where all the create user and links...
[arvados.git] / services / api / script / setup-new-user.rb
1 #!/usr/bin/env ruby
2
3 abort 'Error: Ruby >= 1.9.3 required.' if RUBY_VERSION < '1.9.3'
4
5 require 'logger'
6 require 'trollop'
7 log = Logger.new STDERR
8 log.progname = $0.split('/').last
9
10 opts = Trollop::options do
11   banner ''
12   banner "Usage: #{log.progname} " +
13     "{user_uuid_or_email} {user_and_repo_name} {vm_uuid}"
14   banner ''
15   opt :debug, <<-eos
16 Show debug messages.
17   eos
18   opt :create, <<-eos
19 Create a new user with the given email address if an existing user \
20 is not found.
21   eos
22   opt :openid_prefix, <<-eos, default: 'https://www.google.com/accounts/o8/id'
23 If creating a new user record, require authentication from an OpenID \
24 with this OpenID prefix *and* a matching email address in order to \
25 claim the account.
26   eos
27   opt :force, <<-eos
28 Continue even if sanity checks raise flags: the given user is already \
29 active, the given repository already exists, etc.
30   eos
31   opt :n, 'Do not change anything, just probe'
32 end
33
34 log.level = (ENV['DEBUG'] || opts.debug) ? Logger::DEBUG : Logger::WARN
35     
36 if ARGV.count != 3
37   Trollop::die "required arguments are missing"
38 end
39 user_arg, user_repo_name, vm_uuid = ARGV
40
41 require 'arvados'
42 arv = Arvados.new(api_version: 'v1')
43
44 begin
45         new_user = arv.user.create(user_param: user_arg, repo_name: user_repo_name, vm_uuid: vm_uuid, openid_prefix: opts.openid_prefix, just_probe: opts.n, user: {})
46         log.warn new_user
47 rescue Exception => e #Arvados::TransactionFailedError
48         log.warn e.message
49 end
50