@@ -43,7 +43,7 @@ def create
43
43
'description' => resource [ :description ] ,
44
44
'display_name' => resource [ :name ] ,
45
45
'permissions' => resource [ :permissions ] ,
46
- 'user_ids' => resource [ :user_ids ] ,
46
+ 'user_ids' => normalize_users ( resource [ :user_ids ] ) ,
47
47
'group_ids' => resource [ :group_ids ] ,
48
48
}
49
49
Puppet ::Provider ::Rbac_api ::post_response ( '/roles' , role )
@@ -64,6 +64,22 @@ def destroy
64
64
fail "The id parameter is read-only."
65
65
end
66
66
67
+ def normalize_users ( list )
68
+ users = nil
69
+ list . collect! do |item |
70
+ next item if item . to_i != 0
71
+
72
+ # lazy load the available users. Avoid the API call unless needed
73
+ users ||= Puppet ::Provider ::Rbac_api ::get_response ( '/users' )
74
+
75
+ begin
76
+ users . find { |r | r [ 'display_name' ] . downcase == item . downcase } [ 'id' ]
77
+ rescue NoMethodError => e
78
+ fail "User #{ item } does not exist"
79
+ end
80
+ end
81
+ end
82
+
67
83
def flush
68
84
# so, flush gets called, even on create() and delete()
69
85
return if @property_hash [ :id ] . nil?
@@ -74,7 +90,7 @@ def flush
74
90
'description' => @property_hash [ :description ] ,
75
91
'display_name' => @property_hash [ :name ] ,
76
92
'permissions' => @property_hash [ :permissions ] ,
77
- 'user_ids' => @property_hash [ :user_ids ] ,
93
+ 'user_ids' => normalize_users ( @property_hash [ :user_ids ] ) ,
78
94
'group_ids' => @property_hash [ :group_ids ] ,
79
95
}
80
96
0 commit comments