cfoundry_helper 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,148 @@
1
+ module CFoundryHelper::Helpers
2
+ module UserHelper
3
+
4
+ # returns the associated email address for the given cc user
5
+ def self.get_email_for_user(user)
6
+ guid = user.guid
7
+
8
+ # fetch the data from the uaa
9
+ scim_cl = CFoundryHelper::Helpers::ClientHelper.scim_client
10
+ query_result = scim_cl.query(:user, {:filter => "id eq '#{guid}'"})
11
+
12
+ if query_result["resources"].nil? || query_result["resources"].empty?
13
+ raise "No user with the guid: #{guid} could be found on the uaa!"
14
+ end
15
+
16
+ query_result["resources"].first["emails"].first["value"]
17
+ end
18
+
19
+ # creates a user with the given email and password
20
+ def self.create_user(attributes)
21
+ raise "The given attributes hash is nil!" if attributes.nil?
22
+ raise "No user email given!" if attributes[:email].nil?
23
+ raise "No password attribute given!" if attributes[:password].nil?
24
+
25
+ # no admin user is created as a default
26
+ admin = false
27
+ unless attributes[:admin].nil?
28
+ admin = attributes[:admin]
29
+ end
30
+
31
+ user = CFoundryHelper::Helpers::ClientHelper.cloud_controller_client.register(attributes[:email], attributes[:password])
32
+
33
+ if admin
34
+ user.admin = true
35
+ user.update!
36
+ end
37
+
38
+ user
39
+ end
40
+
41
+ # deletes a user from the cc and the uaa
42
+ # returns true if the user was deleted
43
+ # throws an exception on errors
44
+ def self.delete_user(user)
45
+ self.delete_user_from_uaa user
46
+ self.delete_user_from_cc user
47
+ return true
48
+ end
49
+
50
+ def self.delete_user_by_email(email)
51
+ user = self.get_user_by_email email
52
+ self.delete_user user
53
+ end
54
+
55
+ # returns an array of CFoundry::V2::User registered within the cloud controller
56
+ def self.get_cc_users
57
+ CFoundryHelper::Helpers::ClientHelper.cloud_controller_client.users
58
+ end
59
+
60
+ # returns an array of all user emails registered within the uaa
61
+ def self.get_user_emails
62
+ scim_cl = CFoundryHelper::Helpers::ClientHelper.scim_client
63
+ query_result = scim_cl.query(:user)
64
+
65
+ if query_result["resources"].nil? || query_result["resources"].empty?
66
+ raise "No user emails could be found in the uaa!"
67
+ end
68
+
69
+ res_array = Array.new
70
+ user_guid = query_result["resources"].each do |r|
71
+ res_array << r["emails"].first["value"]
72
+ res_array.sort!
73
+ end
74
+
75
+ res_array
76
+ end
77
+
78
+ # checks whether a user with the given email address exists
79
+ def self.email_exists?(email)
80
+ begin
81
+ u = self.get_user_by_email email
82
+ return true
83
+ rescue
84
+ return false
85
+ end
86
+ end
87
+
88
+ # returns the CFoundry::V2::User with the given email address if present
89
+ # throws an exception if the given user is not present in the system
90
+ def self.get_user_by_email(email)
91
+
92
+ # fetch the data from the uaa
93
+ scim_cl = CFoundryHelper::Helpers::ClientHelper.scim_client
94
+ query_result = scim_cl.query(:user, {:filter => "email eq '#{email.strip}'"})
95
+
96
+ if query_result["resources"].nil? || query_result["resources"].empty?
97
+ raise "No user with the email address: #{email} could be found!"
98
+ end
99
+
100
+ user_guid = query_result["resources"].first["id"]
101
+
102
+ # retrieve the user from the CC
103
+ user = nil
104
+ cc_cl = CFoundryHelper::Helpers::ClientHelper.cloud_controller_client
105
+ cc_cl.users.each do |u|
106
+ if u.guid.eql? user_guid
107
+ user = u
108
+ break
109
+ end
110
+ end
111
+
112
+ if user.nil?
113
+ raise "Could not find the user with the email address: #{email} in the Cloud Controller!"
114
+ end
115
+ user
116
+ end
117
+
118
+ # sets a new password for the given user
119
+ # returns the user
120
+ def self.set_user_password(user, newpass)
121
+ scim_cl = CFoundryHelper::Helpers::ClientHelper.scim_client
122
+ scim_cl.change_password user.guid, newpass, nil
123
+ return user
124
+ end
125
+
126
+
127
+
128
+ private
129
+
130
+ # deletes a user from the uaa
131
+ # returns true if the user was deleted
132
+ def self.delete_user_from_uaa(user)
133
+ raise "The given user is nil!" if user.nil?
134
+ user_id = user.guid
135
+
136
+ scim_cl = CFoundryHelper::Helpers::ClientHelper.scim_client
137
+ result = scim_cl.delete(:user, user_id)
138
+ return true
139
+ end
140
+
141
+ # deletes a user from the cloud controller
142
+ def self.delete_user_from_cc(user)
143
+ raise "The given user is nil!" if user.nil?
144
+ user.delete!
145
+ end
146
+
147
+ end
148
+ end
@@ -0,0 +1,4 @@
1
+ module CFoundryHelper::Models
2
+ autoload :OrganizationRole, File.expand_path('../models/organization_role', __FILE__)
3
+ autoload :SpaceRole, File.expand_path('../models/space_role', __FILE__)
4
+ end
@@ -0,0 +1,18 @@
1
+ module CFoundryHelper::Models
2
+
3
+ # This module lists the Roles available for organizations
4
+ # There are 3 basic roles for organizations:
5
+ # Manager: Can invite/manage users, select/change the plan, establish spending limits
6
+ # Billing Manager: Can edit/change the billing account info, payment info
7
+ # Auditor: View only access to all org and space info, settings, reports
8
+ module OrganizationRole
9
+ MANAGER = :manager
10
+ BILLINGMANAGER = :billing_manager
11
+ AUDITOR = :auditor
12
+
13
+ def self.get_roles
14
+ return [MANAGER, BILLINGMANAGER, AUDITOR]
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ module CFoundryHelper::Models
2
+
3
+ # This module lists the Roles available for spaces
4
+ # There are 3 basic roles for spaces:
5
+ # Manager: Can invite/manage users, enable features for a given space
6
+ # Developer: Can create, delete, manage applications and services, full access to all usage reports and logs
7
+ # Auditor: View only access to all space information, settings, reports, logs
8
+ module SpaceRole
9
+ MANAGER = :manager
10
+ DEVELOPER = :developer
11
+ AUDITOR = :auditor
12
+
13
+ def self.get_roles
14
+ return [MANAGER, DEVELOPER, AUDITOR]
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ module CFoundryHelper
2
+ VERSION = "0.2.1"
3
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe 'This is my test that requires nats uaa and ccng', type: :integration, :components => [:nats, :ccng, :uaa] do
4
+ # This is a helper module for accessing the cloud controller ng
5
+ include CcngClient
6
+
7
+ it 'start nats and ccng as required' do
8
+ component(:nats).should be
9
+ ccng_get('/v2/services').should be
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ lib = File.expand_path("../..", __FILE__)
2
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'vendor/integration-test-support/support/integration_example_group.rb'
5
+
6
+ IntegrationExampleGroup.tmp_dir = '/tmp'
7
+
8
+ RSpec.configure do |config|
9
+ config.include IntegrationExampleGroup, type: :integration
10
+ end
metadata ADDED
@@ -0,0 +1,273 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cfoundry_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Julian Weber
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: nats
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: cf-uaa-lib
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: activesupport
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: httpclient
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: yajl-ruby
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: pry
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: pry-debugger
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: cfoundry
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: activesupport
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ description: This gem provides additional helper classes and scripts for the cfoundry
207
+ gem.
208
+ email:
209
+ - jweber@anynines.com
210
+ executables:
211
+ - add_users_to_org
212
+ - create_space_for_org
213
+ - delete_orgs_and_users
214
+ extensions: []
215
+ extra_rdoc_files: []
216
+ files:
217
+ - .gitignore
218
+ - .gitmodules
219
+ - CHANGELOG.textile
220
+ - Gemfile
221
+ - Gemfile.lock
222
+ - README.textile
223
+ - Rakefile
224
+ - VERSION
225
+ - bin/add_users_to_org
226
+ - bin/create_space_for_org
227
+ - bin/delete_orgs_and_users
228
+ - cfoundry_helper.gemspec
229
+ - config/services.yml.example
230
+ - lib/cfoundry_helper.rb
231
+ - lib/cfoundry_helper/helpers.rb
232
+ - lib/cfoundry_helper/helpers/client_helper.rb
233
+ - lib/cfoundry_helper/helpers/organization_helper.rb
234
+ - lib/cfoundry_helper/helpers/space_helper.rb
235
+ - lib/cfoundry_helper/helpers/user_helper.rb
236
+ - lib/cfoundry_helper/models.rb
237
+ - lib/cfoundry_helper/models/organization_role.rb
238
+ - lib/cfoundry_helper/models/space_role.rb
239
+ - lib/cfoundry_helper/version.rb
240
+ - spec/integration_test.rb
241
+ - spec/spec_helper.rb
242
+ homepage: http://www.anynines.com
243
+ licenses:
244
+ - MIT
245
+ post_install_message:
246
+ rdoc_options: []
247
+ require_paths:
248
+ - lib
249
+ required_ruby_version: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: 1.9.3
255
+ required_rubygems_version: !ruby/object:Gem::Requirement
256
+ none: false
257
+ requirements:
258
+ - - ! '>='
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ segments:
262
+ - 0
263
+ hash: 3457547663060522280
264
+ requirements: []
265
+ rubyforge_project:
266
+ rubygems_version: 1.8.25
267
+ signing_key:
268
+ specification_version: 3
269
+ summary: This gem provides additional helper classes and scripts for the cfoundry
270
+ gem.
271
+ test_files:
272
+ - spec/integration_test.rb
273
+ - spec/spec_helper.rb