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,8 @@
1
+ .idea
2
+ .idea/*
3
+ config/services.yml
4
+ config/services.yml.b*
5
+ pkg/
6
+ pkg/*
7
+ .DS_Store
8
+ bin/.DS_Store
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/integration-test-support"]
2
+ path = vendor/integration-test-support
3
+ url = git@github.com:cloudfoundry/integration-test-support.git
@@ -0,0 +1,10 @@
1
+ h1. v0.1.0
2
+ * OrganizationHelper implementation
3
+ * ClientHelper implementation
4
+ * UserHelper implementation
5
+
6
+ h2. v0.2.0
7
+ * add users to org script
8
+
9
+ h2. v0.2.1
10
+ * Bugfix: Don't cache the cloud controller client since the access token expires in long running apps.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,95 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cfoundry_helper (0.2.1)
5
+ activesupport
6
+ cfoundry
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activemodel (4.0.0)
12
+ activesupport (= 4.0.0)
13
+ builder (~> 3.1.0)
14
+ activesupport (4.0.0)
15
+ i18n (~> 0.6, >= 0.6.4)
16
+ minitest (~> 4.2)
17
+ multi_json (~> 1.3)
18
+ thread_safe (~> 0.1)
19
+ tzinfo (~> 0.3.37)
20
+ atomic (1.1.13)
21
+ builder (3.1.4)
22
+ cf-uaa-lib (2.0.0)
23
+ multi_json
24
+ cfoundry (4.3.6)
25
+ activemodel (>= 3.2.13, < 5.0.0)
26
+ cf-uaa-lib (~> 2.0.0)
27
+ multi_json (~> 1.7)
28
+ multipart-post (~> 1.1)
29
+ rubyzip (~> 0.9)
30
+ coderay (1.0.9)
31
+ columnize (0.3.6)
32
+ daemons (1.1.9)
33
+ debugger (1.6.1)
34
+ columnize (>= 0.3.1)
35
+ debugger-linecache (~> 1.2.0)
36
+ debugger-ruby_core_source (~> 1.2.3)
37
+ debugger-linecache (1.2.0)
38
+ debugger-ruby_core_source (1.2.3)
39
+ diff-lcs (1.2.4)
40
+ eventmachine (0.12.10)
41
+ httpclient (2.3.4.1)
42
+ i18n (0.6.5)
43
+ json_pure (1.8.0)
44
+ method_source (0.8.2)
45
+ minitest (4.7.5)
46
+ multi_json (1.7.9)
47
+ multipart-post (1.2.0)
48
+ nats (0.4.28)
49
+ daemons (>= 1.1.5)
50
+ eventmachine (= 0.12.10)
51
+ json_pure (>= 1.7.3)
52
+ thin (>= 1.4.1)
53
+ pry (0.9.12.2)
54
+ coderay (~> 1.0.5)
55
+ method_source (~> 0.8)
56
+ slop (~> 3.4)
57
+ pry-debugger (0.2.2)
58
+ debugger (~> 1.3)
59
+ pry (~> 0.9.10)
60
+ rack (1.5.2)
61
+ rake (10.1.0)
62
+ rspec (2.14.1)
63
+ rspec-core (~> 2.14.0)
64
+ rspec-expectations (~> 2.14.0)
65
+ rspec-mocks (~> 2.14.0)
66
+ rspec-core (2.14.5)
67
+ rspec-expectations (2.14.2)
68
+ diff-lcs (>= 1.1.3, < 2.0)
69
+ rspec-mocks (2.14.3)
70
+ rubyzip (0.9.9)
71
+ slop (3.4.6)
72
+ thin (1.5.1)
73
+ daemons (>= 1.0.9)
74
+ eventmachine (>= 0.12.6)
75
+ rack (>= 1.0.0)
76
+ thread_safe (0.1.2)
77
+ atomic
78
+ tzinfo (0.3.37)
79
+ yajl-ruby (1.1.0)
80
+
81
+ PLATFORMS
82
+ ruby
83
+
84
+ DEPENDENCIES
85
+ activesupport
86
+ bundler (~> 1.3)
87
+ cf-uaa-lib
88
+ cfoundry_helper!
89
+ httpclient
90
+ nats
91
+ pry
92
+ pry-debugger
93
+ rake
94
+ rspec
95
+ yajl-ruby
@@ -0,0 +1,55 @@
1
+ h1. CFoundry Helper
2
+
3
+ This collection of scripts provides helper methods to the cfoundry gem's
4
+ API. It implements common use cases when administrating a Cloud Foundry installation.
5
+
6
+ h2. Organization management
7
+
8
+ The CFoundryHelper::Helpers::OrganizationHelper modules' methods provide helper methods for the following use cases:
9
+
10
+ * create organizations
11
+ * add/remove Users from organizations
12
+ * administer User roles within organizations
13
+
14
+ h2. User management
15
+
16
+ The CFoundryHelper::Helpers::UserHelper module provides methods for managing users within the system:
17
+
18
+ * get user by email
19
+ * create a user
20
+ * delete a user
21
+ * change a user's password
22
+
23
+ h2. Space management
24
+
25
+ The CFoundryHelper::Helpers::OrganizationHelper modules' methods provide helper methods for the following use cases:
26
+ * create a space within an organization
27
+ * add/remove Users from spaces
28
+ * administer User roles within a space
29
+ * empty a space (remove all apps, service_bindings, service_instances, routes and domains from the space)
30
+ * delete a space
31
+
32
+ h2. Client Helper
33
+
34
+ The CFoundryHelper::Helpers::ClientHelper is a factory for uaa and cloud controller clients.
35
+
36
+
37
+ h2. Scripts
38
+
39
+ * bin/add_users_to_org : adds users to an organization
40
+ ** usage : RAILS_ENV=<test / production / development> bundle exec bin/add_users_to_org <org name> <users_email_list_file_location> <services_config_file_location>
41
+ * bin/create_space_for_org : creates a space to an organization and assigns all organization members to it
42
+ ** usage : RAILS_ENV=<test / production / development> bundle exec bin/create_space_for_org <org name> <space name> <services_config_file_location>
43
+
44
+ h2. Important environment variables
45
+
46
+ * RAILS_ENV : The helper is reading the target environment on which to execute commands using the RAILS_ENV environment variable. (e.g. production, test)
47
+
48
+ * CFOUNDRY_HELPER_CONFIG This variable has to point to your services.yml file.
49
+
50
+ h2. Console Usage
51
+
52
+ Use the following command to start the console with the associated target:
53
+ RAILS_ENV=<target_env> CFOUNDRY_HELPER_CONFIG=<services config file> rake c
54
+
55
+ e.g.: RAILS_ENV=production CFOUNDRY_HELPER_CONFIG=config/services.yml rake c
@@ -0,0 +1,24 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ if ["test", "development"].include?(ENV["RAILS_ENV"])
4
+ require "pry"
5
+
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ task :default => :spec
10
+ else
11
+ task :default => :console
12
+ end
13
+
14
+
15
+ desc 'starts a interactive shell'
16
+ task :console do
17
+ if ENV["RAILS_ENV"] == "production"
18
+ exec('irb -r ./lib/cfoundry_helper.rb')
19
+ else
20
+ exec('pry -r ./lib/cfoundry_helper.rb')
21
+ end
22
+ end
23
+
24
+ task c: :console
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.1
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "cfoundry_helper"
5
+
6
+ #require_relative '../lib/cfoundry_helper'
7
+
8
+ # function definitions ---------------------------------------------
9
+ def print_help
10
+ puts "You have entered a wrong number of arguments!"
11
+ puts "Usage: add_users_to_org <organization name> <user list file location> <config file path>"
12
+ end
13
+
14
+ def add_user_to_org(org, email)
15
+ user = CFoundryHelper::Helpers::UserHelper.get_user_by_email email
16
+ CFoundryHelper::Helpers::OrganizationHelper.add_user org, user
17
+ CFoundryHelper::Helpers::OrganizationHelper.add_roles org, user,
18
+ [CFoundryHelper::Models::OrganizationRole::AUDITOR, CFoundryHelper::Models::OrganizationRole::MANAGER]
19
+ end
20
+
21
+ def check_users_present(file_loc)
22
+ all_existing = true
23
+ File.open(file_loc).each do |email|
24
+ email = email.strip
25
+ puts "Checking email=#{email} ...."
26
+ unless CFoundryHelper::Helpers::UserHelper.email_exists? email
27
+ puts "The user email=#{email} doesn't exist in the system!"
28
+ all_existing = false
29
+ end
30
+ end
31
+ if all_existing
32
+ puts "All emails are present in the system!"
33
+ else
34
+ puts "Some emails are not present in the system!"
35
+ end
36
+ all_existing
37
+ end
38
+
39
+ def add_users(org_name, file_loc)
40
+ org = CFoundryHelper::Helpers::OrganizationHelper.get_organization_by_name org_name
41
+ if org.nil?
42
+ puts "No organization with the name=#{org_name} could be found!"
43
+ exit(-1)
44
+ end
45
+ puts "Adding users to the #{org_name} organization!"
46
+
47
+ File.open(file_loc).each do |email|
48
+ email = email.strip
49
+ puts "Adding user with email=#{email}"
50
+ add_user_to_org org, email
51
+ end
52
+
53
+ puts "Finished adding users!"
54
+ end
55
+
56
+ def print_rails_env
57
+ puts "RAILS_ENV=#{ENV["RAILS_ENV"]}"
58
+ end
59
+
60
+ # execute script ----------------------------------------------
61
+
62
+ if ARGV.count < 3
63
+ print_help
64
+ exit(-1)
65
+ end
66
+
67
+ puts "add users to organization"
68
+ print_rails_env
69
+
70
+ organization_name = ARGV[0]
71
+ file_loc = ARGV[1]
72
+ config_file_path = ARGV[2]
73
+
74
+ CFoundryHelper::Helpers::ClientHelper.set_config_file_path config_file_path
75
+
76
+ puts "Organization: #{organization_name}"
77
+ puts "Cloud Controller target url: #{CFoundryHelper::Helpers::ClientHelper.get_cc_target_url}"
78
+
79
+ unless check_users_present(file_loc)
80
+ puts "Canceling operation!"
81
+ exit(-1)
82
+ end
83
+
84
+ add_users(organization_name, file_loc)
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "cfoundry_helper"
5
+
6
+ # function definitions ---------------------------------------------
7
+ def print_help
8
+ puts "This script adds a new space with the given name to the organization with the given name."
9
+ puts "If the given space already exists, it just assigns the roles to the organization's users."
10
+ puts "Members of the given organization are registered as Space Developers and Space Auditors."
11
+ puts "You have entered a wrong number of arguments!"
12
+ puts "Usage: create_spaces_for_org <organization name> <space name> <config file path>"
13
+ end
14
+
15
+ def print_rails_env
16
+ puts "RAILS_ENV=#{ENV["RAILS_ENV"]}"
17
+ end
18
+
19
+ def get_org(org_name)
20
+ org = CFoundryHelper::Helpers::OrganizationHelper.get_organization_by_name org_name
21
+ if org.nil?
22
+ print "No organization with the given name could be found!"
23
+ exit -1
24
+ end
25
+ org
26
+ end
27
+
28
+ def create_or_get_space(org, space_name)
29
+ puts "Creating space with name=#{space_name} ..."
30
+ space = nil
31
+ begin
32
+ space = CFoundryHelper::Helpers::SpaceHelper.create_space org, space_name
33
+ puts "Created space successfully!"
34
+ rescue
35
+ puts "The space #{space_name} already exists."
36
+ puts "Using this space to assign user roles now."
37
+ space = CFoundryHelper::Helpers::SpaceHelper.get_space org, space_name
38
+ end
39
+ space
40
+ end
41
+
42
+ def set_user_roles(space, user)
43
+ CFoundryHelper::Helpers::SpaceHelper.add_roles space, user,
44
+ [CFoundryHelper::Models::SpaceRole::AUDITOR,
45
+ CFoundryHelper::Models::SpaceRole::DEVELOPER]
46
+ end
47
+
48
+ def set_org_users_space_roles(org, space)
49
+ puts "Setting roles for organization users..."
50
+ org.users.each do |u|
51
+ puts "Setting roles for user with guid=#{u.guid} ...."
52
+ set_user_roles space, u
53
+ end
54
+ puts "Finished setting roles!"
55
+ end
56
+
57
+ # execute script ----------------------------------------------
58
+
59
+ if ARGV.count < 3
60
+ print_help
61
+ exit(-1)
62
+ end
63
+
64
+ puts "create space for organization"
65
+ print_rails_env
66
+
67
+ organization_name = ARGV[0]
68
+ space_name = ARGV[1]
69
+ config_file_path = ARGV[2]
70
+
71
+ CFoundryHelper::Helpers::ClientHelper.set_config_file_path config_file_path
72
+
73
+ puts "Organization: #{organization_name}"
74
+ puts "Space name: #{space_name}"
75
+ puts "Cloud Controller target url: #{CFoundryHelper::Helpers::ClientHelper.get_cc_target_url}"
76
+
77
+ org = get_org organization_name
78
+ space = create_or_get_space org, space_name
79
+ set_org_users_space_roles org, space
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "cfoundry_helper"
5
+
6
+ # function definitions ---------------------------------------------
7
+ def print_help
8
+ puts "This script delete a list of users including their default organization."
9
+ puts "You have entered a wrong number of arguments!"
10
+ puts "Usage: delete_orgs_and_users <user list file path> <config file path>"
11
+ end
12
+
13
+ def print_rails_env
14
+ puts "RAILS_ENV=#{ENV["RAILS_ENV"]}"
15
+ end
16
+
17
+ def get_standard_org_name_for_email(email)
18
+ email.gsub(/[\.|@]/, "_")
19
+ end
20
+
21
+ def delete_user(email)
22
+ begin
23
+ user = CFoundryHelper::Helpers::UserHelper.get_user_by_email email
24
+ rescue
25
+ puts "Could not find user with email=#{email}"
26
+ return
27
+ end
28
+
29
+ puts "Deleting user with email=#{email}"
30
+ CFoundryHelper::Helpers::UserHelper.delete_user user
31
+ end
32
+
33
+ def delete_org(org_name)
34
+ org = CFoundryHelper::Helpers::OrganizationHelper.get_organization_by_name org_name
35
+ if org.nil?
36
+ puts "Could not find organization with name=#{org_name}"
37
+ return
38
+ end
39
+
40
+ puts "Deleting organization with name=#{org_name}"
41
+ CFoundryHelper::Helpers::OrganizationHelper.delete_organization_recursive org
42
+ end
43
+
44
+
45
+ def delete_users(file_loc)
46
+ File.open(file_loc).each do |email|
47
+ email = email.strip
48
+ delete_user email
49
+ delete_org get_standard_org_name_for_email(email)
50
+ end
51
+
52
+ puts "Finished deleting users!"
53
+ end
54
+
55
+
56
+ # execute script ----------------------------------------------
57
+
58
+ if ARGV.count < 2
59
+ print_help
60
+ exit(-1)
61
+ end
62
+
63
+ file_loc = ARGV[0]
64
+ config_file_path = ARGV[1]
65
+
66
+ print_rails_env
67
+ puts "removing users and organizations described in #{file_loc}"
68
+
69
+ CFoundryHelper::Helpers::ClientHelper.set_config_file_path config_file_path
70
+
71
+ puts "Cloud Controller target url: #{CFoundryHelper::Helpers::ClientHelper.get_cc_target_url}"
72
+
73
+ delete_users file_loc