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.
- data/.gitignore +8 -0
- data/.gitmodules +3 -0
- data/CHANGELOG.textile +10 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +95 -0
- data/README.textile +55 -0
- data/Rakefile +24 -0
- data/VERSION +1 -0
- data/bin/add_users_to_org +94 -0
- data/bin/create_space_for_org +79 -0
- data/bin/delete_orgs_and_users +73 -0
- data/cfoundry_helper.gemspec +39 -0
- data/config/services.yml.example +22 -0
- data/lib/cfoundry_helper.rb +18 -0
- data/lib/cfoundry_helper/helpers.rb +6 -0
- data/lib/cfoundry_helper/helpers/client_helper.rb +106 -0
- data/lib/cfoundry_helper/helpers/organization_helper.rb +148 -0
- data/lib/cfoundry_helper/helpers/space_helper.rb +125 -0
- data/lib/cfoundry_helper/helpers/user_helper.rb +148 -0
- data/lib/cfoundry_helper/models.rb +4 -0
- data/lib/cfoundry_helper/models/organization_role.rb +18 -0
- data/lib/cfoundry_helper/models/space_role.rb +18 -0
- data/lib/cfoundry_helper/version.rb +3 -0
- data/spec/integration_test.rb +11 -0
- data/spec/spec_helper.rb +10 -0
- metadata +273 -0
@@ -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,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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|