arvados-login-sync 0.1.20161018143726 → 0.1.20161021200845

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/arvados-login-sync +40 -16
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e3ad3433425add7575e18420152fff83fb8c738
4
- data.tar.gz: 5efbc9ab38321f8b6a4e997d63c469195919d7bb
3
+ metadata.gz: d2553513ca970d72e9a639e61b8b26eb8e8692aa
4
+ data.tar.gz: c491d7eea6888e807f6080c8ea7c8b3dfc75883e
5
5
  SHA512:
6
- metadata.gz: b7c09fb2e812e1bf248e64312046998fcb3de7f1b001c82960dd10e2cff44698646c56a8fc23f09cfd8f75dca2abdf5231035e7c94ab8f204ccb4de0eec16e18
7
- data.tar.gz: afc9b71294d789cdc032cb66495e0a97eaf961ad3844047eff9afed70025c751779d5c8785f03a2a3006a797b9dca44740b8a858b50e2ed22b05484ce3c16c54
6
+ metadata.gz: 55002005a5b93990e4d81226399129303f6314de45900cb9a70421bffa110e3ec4c9a0bc84f0e9b6b2c7ac091bca1dbdc8745dceb6e02672550a0a1a5f0e4489
7
+ data.tar.gz: b7a582e2275cec292a4b851d438f391a6712fb0b550de0164cf510982256655571e38347c34899e0ab71135c05621b3df690689e536ee33a7e1ce785642db7bc
@@ -21,13 +21,12 @@ exclusive_banner = "############################################################
21
21
  start_banner = "### BEGIN Arvados-managed keys -- changes between markers will be overwritten\n"
22
22
  end_banner = "### END Arvados-managed keys -- changes between markers will be overwritten\n"
23
23
 
24
- keys = ''
24
+ # Don't try to create any local accounts
25
+ skip_missing_users = ARGV.index("--skip-missing-users")
25
26
 
26
- seen = Hash.new
27
+ keys = ''
27
28
 
28
29
  begin
29
- uids = Hash[Etc.to_enum(:passwd).map { |ent| [ent.name, ent.uid] }]
30
- gids = Hash[Etc.to_enum(:group).map { |ent| [ent.name, ent.gid] }]
31
30
  arv = Arvados.new({ :suppress_ssl_warnings => false })
32
31
 
33
32
  vm_uuid = ENV['ARVADOS_VIRTUAL_MACHINE_UUID']
@@ -52,8 +51,24 @@ begin
52
51
  uid_min = new_uid_min if (new_uid_min > 0)
53
52
  end
54
53
  end
55
- logins.reject! { |l| (uids[l[:username]] || 65535) < uid_min }
56
54
 
55
+ pwnam = Hash.new()
56
+ logins.reject! do |l|
57
+ return false if pwnam[l[:username]]
58
+ begin
59
+ pwnam[l[:username]] = Etc.getpwnam(l[:username])
60
+ rescue
61
+ if skip_missing_users
62
+ STDERR.puts "Account #{l[:username]} not found. Skipping"
63
+ true
64
+ end
65
+ else
66
+ if pwnam[l[:username]].uid < uid_min
67
+ STDERR.puts "Account #{l[:username]} uid #{pwnam[l[:username]].uid} < uid_min #{uid_min}. Skipping"
68
+ true
69
+ end
70
+ end
71
+ end
57
72
  keys = Hash.new()
58
73
 
59
74
  # Collect all keys
@@ -74,24 +89,33 @@ begin
74
89
 
75
90
  logins.each do |l|
76
91
  next if seen[l[:username]]
77
- seen[l[:username]] = true if not seen.has_key?(l[:username])
92
+ seen[l[:username]] = true
78
93
 
79
- unless uids[l[:username]]
94
+ unless pwnam[l[:username]]
80
95
  STDERR.puts "Creating account #{l[:username]}"
81
96
  groups = l[:groups] || []
82
97
  # Adding users to the FUSE group has long been hardcoded behavior.
83
98
  groups << "fuse"
84
- groups.select! { |name| gids[name] }
99
+ groups.select! { |g| Etc.getgrnam(g) rescue false }
85
100
  # Create new user
86
- next unless system("useradd", "-m",
87
- "-c", l[:username],
88
- "-s", "/bin/bash",
89
- "-G", groups.join(","),
90
- l[:username],
91
- out: devnull)
101
+ unless system("useradd", "-m",
102
+ "-c", l[:username],
103
+ "-s", "/bin/bash",
104
+ "-G", groups.join(","),
105
+ l[:username],
106
+ out: devnull)
107
+ STDERR.puts "Account creation failed for #{l[:username]}: $?"
108
+ next
109
+ end
110
+ begin
111
+ pwnam[l[:username]] = Etc.getpwnam(l[:username])
112
+ rescue => e
113
+ STDERR.puts "Created account but then getpwnam() failed for #{l[:username]}: #{e}"
114
+ raise
115
+ end
92
116
  end
93
- # Create .ssh directory if necessary
94
- @homedir = Etc.getpwnam(l[:username]).dir
117
+
118
+ @homedir = pwnam[l[:username]].dir
95
119
  userdotssh = File.join(@homedir, ".ssh")
96
120
  Dir.mkdir(userdotssh) if !File.exists?(userdotssh)
97
121
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arvados-login-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20161018143726
4
+ version: 0.1.20161021200845
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arvados Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arvados
@@ -31,7 +31,7 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.1.20150615153458
33
33
  description: Creates and updates local login accounts for Arvados users. Built from
34
- git commit 94588fc14c200e4163144cd53bfa548a27fff7e0
34
+ git commit cd0052e87bfa9d7e3d501427c7ff47e08c68d8d5
35
35
  email: gem-dev@curoverse.com
36
36
  executables:
37
37
  - arvados-login-sync