cfoundry_helper 0.2.1

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.
@@ -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