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,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