lds-cf-plugin 0.3.0 → 0.3.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.
@@ -11,11 +11,6 @@ module LdsCfPlugin
11
11
  group :lds, :services
12
12
  input :name, :desc => "Name for your service", :argument => :optional
13
13
  input :credentials, :desc => "The service credentials JSON string to be passed to the application", :argument => :optional
14
- input :plan, :desc => "Service plan",
15
- :from_given => find_by_name_insensitive("plan"),
16
- :default => proc {
17
- interact
18
- }
19
14
  def create_custom_service
20
15
  offerings = client.services
21
16
  offerings.keep_if { |s| s.label == 'custom-service' && s.provider == 'ICS' }
@@ -24,6 +19,10 @@ module LdsCfPlugin
24
19
  if !service
25
20
  fail "Cannot find custom service on #{client.target}"
26
21
  end
22
+
23
+ if service.version != "0.1"
24
+ fail "Your lds-cf-plugin version is out of date. To update execute `gem update lds-cf-plugin`"
25
+ end
27
26
 
28
27
  rest_client = CFoundry::RestClient.new(service.url, client.token)
29
28
  rest_client.trace = client.trace
@@ -33,15 +32,6 @@ module LdsCfPlugin
33
32
  instance_name = ask("Name")
34
33
  end
35
34
 
36
- if plan = input.direct(:plan)
37
- service.reject! do |s|
38
- if plan.is_a?(String)
39
- s.service_plans.none? { |p| p.name == plan.upcase }
40
- else
41
- s.service_plans.include? plan
42
- end
43
- end
44
- end
45
35
  plan = service.service_plans.first
46
36
 
47
37
  credentials = input[:credentials]
@@ -68,7 +58,7 @@ module LdsCfPlugin
68
58
 
69
59
 
70
60
  # Create service instance
71
- instance = client.service_instance
61
+ instance = client.managed_service_instance
72
62
  instance.name = instance_name
73
63
 
74
64
  instance.service_plan = plan
@@ -80,18 +70,5 @@ module LdsCfPlugin
80
70
 
81
71
  instance
82
72
  end
83
-
84
- private
85
-
86
- def ask_plan(plans, default_plan = nil)
87
- ask "Which plan?",
88
- :choices => plans.sort_by(&:name),
89
- :indexed => true,
90
- :display => proc { |p| "#{p.name}: #{p.description || 'No description'}" },
91
- :default => default_plan,
92
- :complete => proc(&:name)
93
- end
94
-
95
73
  end
96
-
97
74
  end
@@ -0,0 +1,116 @@
1
+ require "cf/cli"
2
+ require "json"
3
+ require "uri"
4
+
5
+ module LdsCfPlugin
6
+ class HttpService < CF::CLI
7
+ def precondition
8
+ check_target
9
+ end
10
+
11
+ desc "Create an Http service"
12
+ group :lds, :services
13
+ input :name, :desc => "Name for your service", :argument => :optional
14
+ input :url, :desc => "The http URL you wish to add as a service.", :argument => :optional
15
+
16
+ def create_http_service
17
+ offerings = client.services
18
+ offerings.keep_if { |s| s.label == 'http-service' && s.provider == 'ICS' }
19
+ service = offerings.first
20
+
21
+ if !service
22
+ fail "Cannot find Http service on #{client.target}"
23
+ end
24
+
25
+ if service.version != "0.1"
26
+ fail "Your lds-cf-plugin version is out of date. To update execute `gem update lds-cf-plugin`"
27
+ end
28
+
29
+ rest_client = CFoundry::RestClient.new(service.url, client.token)
30
+ rest_client.trace = client.trace
31
+
32
+ instance_name = input[:name]
33
+ if !instance_name
34
+ instance_name = ask("Name")
35
+ end
36
+
37
+ plan = service.service_plans.first
38
+
39
+ url = input[:url]
40
+ while !url || !is_valid_url(url)[0]
41
+ success, result = is_valid_url(url);
42
+ if url && !success
43
+ line c("The url you provided #{b("'#{url}'")} is not valid.", :bad)
44
+ line c("Error: #{result}", :bad) unless result.nil?
45
+ end
46
+ url = ask("URL")
47
+ end
48
+
49
+ parsedUrl = URI.parse(url)
50
+
51
+ prompt_credentials = parsedUrl.user.nil?
52
+ if !input[:url]
53
+ prompt_credentials = ask("Provide Credentials?", :default => false) if parsedUrl.user.nil? && input[:username].nil?
54
+ else
55
+ prompt_credentials = false
56
+ end
57
+
58
+ username = input[:username]
59
+ if !username && prompt_credentials
60
+ username = ask("Username")
61
+ end
62
+
63
+ password = input[:password]
64
+ if !password && prompt_credentials
65
+ password = ask("Password", :echo => "*", :forget => true, :default => "")
66
+ end
67
+
68
+ # Register service with gateway
69
+
70
+ payload = {
71
+ :space_guid => client.current_space.guid,
72
+ :name => instance_name,
73
+ :url => url,
74
+ }
75
+ if parsedUrl.user.nil?
76
+ payload[:username] = username
77
+ payload[:password] = password
78
+ end
79
+ options = {
80
+ :payload => JSON.generate(payload)
81
+ }
82
+ request, response = rest_client.request("POST", "/register", options)
83
+ if response[:status].to_i != 200
84
+ fail "Error registering Http service with gateway:\n#{response[:body]}"
85
+ end
86
+
87
+
88
+ # Create service instance
89
+ instance = client.managed_service_instance
90
+ instance.name = instance_name
91
+
92
+ instance.service_plan = plan
93
+ instance.space = client.current_space
94
+
95
+ with_progress("Creating service #{c(instance.name, :name)}") do
96
+ instance.create!
97
+ end
98
+
99
+ instance
100
+ end
101
+
102
+ def is_valid_url(url)
103
+ begin
104
+ parsedUrl = URI.parse(url)
105
+ unless(parsedUrl.scheme == "https" || parsedUrl.scheme == "http")
106
+ return false, "Scheme '#{parsedUrl.scheme}' is invalid."
107
+ end
108
+ rescue => e
109
+ return false, e.message
110
+ end
111
+ return true, nil
112
+ end
113
+
114
+ end
115
+
116
+ end
@@ -0,0 +1,113 @@
1
+ require "cf/cli"
2
+ require "json"
3
+
4
+ module LdsCfPlugin
5
+ class LDSAccountService < CF::CLI
6
+ def precondition
7
+ check_target
8
+ end
9
+
10
+ desc "Create an LDS Account service"
11
+ group :lds, :services
12
+ input :name, :desc => "Name for your service", :argument => :optional
13
+ input :env, :desc => "LDS Account Environment (prod, stage, community)", :argument => :optional
14
+ input :cn, :desc => "The application account Common Name (cn)", :argument => :optional
15
+ input :password, :desc => "The password used to connect to the database", :argument => :optional
16
+
17
+ def create_lds_account_service
18
+ offerings = client.services
19
+ offerings.keep_if { |s| s.label == 'lds-account-service' && s.provider == 'ICS' }
20
+ service = offerings.first
21
+
22
+ if !service
23
+ fail "Cannot find LDS Account service on #{client.target}"
24
+ end
25
+
26
+ if service.version != "0.1"
27
+ fail "Your lds-cf-plugin version is out of date. To update execute `gem update lds-cf-plugin`"
28
+ end
29
+
30
+ rest_client = CFoundry::RestClient.new(service.url, client.token)
31
+ rest_client.trace = client.trace
32
+
33
+ instance_name = input[:name]
34
+ if !instance_name
35
+ instance_name = ask("Name")
36
+ end
37
+
38
+ plan = service.service_plans.first
39
+
40
+ choices = ["prod", "stage", "community"]
41
+
42
+ env = input[:env]
43
+ if !env || !choices.include?(env)
44
+ options = {
45
+ :choices => choices,
46
+ :display => proc { |choice|
47
+ if choice == "prod"
48
+ "Prod (gdir)"
49
+ elsif choice == "stage"
50
+ "Stage (gdirstage)"
51
+ elsif choice == "community"
52
+ "Community (cdir)"
53
+ end
54
+ },
55
+ :default => "prod",
56
+ :allow_other => false
57
+ }
58
+ env = ask("LDS Account environment to use", options)
59
+ end
60
+
61
+ cn = input[:cn]
62
+ while !cn || !is_valid_cn(cn)
63
+ if cn && !is_valid_cn(cn)
64
+ line c("The cn you provided #{b("'#{cn}'")} is invalid.", :bad)
65
+ line c("Perhaps you tried providing a fully qualified principal? We only want the cn= portion. Try again.", :bad)
66
+ end
67
+ cn = ask("Application account principal Common Name (cn)")
68
+ end
69
+
70
+ password = input[:password]
71
+ if !password
72
+ password = ask("Application account password", :echo => "*", :forget => true)
73
+ end
74
+
75
+ # Register service with gateway
76
+
77
+ payload = {
78
+ :space_guid => client.current_space.guid,
79
+ :name => instance_name,
80
+ :env => env,
81
+ :cn => cn,
82
+ :password => password
83
+ }
84
+ options = {
85
+ :payload => JSON.generate(payload)
86
+ }
87
+ request, response = rest_client.request("POST", "/register", options)
88
+ if response[:status].to_i != 200
89
+ fail "Error registering LDS Account service with gateway:\n#{response[:body]}"
90
+ end
91
+
92
+
93
+ # Create service instance
94
+ instance = client.managed_service_instance
95
+ instance.name = instance_name
96
+
97
+ instance.service_plan = plan
98
+ instance.space = client.current_space
99
+
100
+ with_progress("Creating service #{c(instance.name, :name)}") do
101
+ instance.create!
102
+ end
103
+
104
+ instance
105
+ end
106
+
107
+ def is_valid_cn(cn)
108
+ !(cn.include?("cn=") || cn.include?("ou=") || cn.include?("o=")|| cn.include?(","))
109
+ end
110
+
111
+ end
112
+
113
+ end
@@ -2,7 +2,7 @@ require "cf/cli"
2
2
  require "json"
3
3
 
4
4
  module LdsCfPlugin
5
- class CustomService < CF::CLI
5
+ class OracleService < CF::CLI
6
6
  def precondition
7
7
  check_target
8
8
  end
@@ -12,12 +12,8 @@ module LdsCfPlugin
12
12
  input :name, :desc => "Name for your service", :argument => :optional
13
13
  input :service, :desc => "The Oracle database to connect to", :argument => :optional
14
14
  input :schema, :desc => "The schema (user) to use", :argument => :optional
15
- input :password, :desc => "The password used to conenct to the database", :argument => :optional
16
- input :plan, :desc => "Service plan",
17
- :from_given => find_by_name_insensitive("plan"),
18
- :default => proc {
19
- interact
20
- }
15
+ input :password, :desc => "The password used to connect to the database", :argument => :optional
16
+
21
17
  def create_oracle_service
22
18
  offerings = client.services
23
19
  offerings.keep_if { |s| s.label == 'oracle-service' && s.provider == 'ICS' }
@@ -26,6 +22,10 @@ module LdsCfPlugin
26
22
  if !service
27
23
  fail "Cannot find Oracle service on #{client.target}"
28
24
  end
25
+
26
+ if service.version != "0.1"
27
+ fail "Your lds-cf-plugin version is out of date. To update execute `gem update lds-cf-plugin`"
28
+ end
29
29
 
30
30
  rest_client = CFoundry::RestClient.new(service.url, client.token)
31
31
  rest_client.trace = client.trace
@@ -35,15 +35,6 @@ module LdsCfPlugin
35
35
  instance_name = ask("Name")
36
36
  end
37
37
 
38
- if plan = input.direct(:plan)
39
- service.reject! do |s|
40
- if plan.is_a?(String)
41
- s.service_plans.none? { |p| p.name == plan.upcase }
42
- else
43
- s.service_plans.include? plan
44
- end
45
- end
46
- end
47
38
  plan = service.service_plans.first
48
39
 
49
40
  service = input[:service]
@@ -80,7 +71,7 @@ module LdsCfPlugin
80
71
 
81
72
 
82
73
  # Create service instance
83
- instance = client.service_instance
74
+ instance = client.managed_service_instance
84
75
  instance.name = instance_name
85
76
 
86
77
  instance.service_plan = plan
@@ -92,18 +83,5 @@ module LdsCfPlugin
92
83
 
93
84
  instance
94
85
  end
95
-
96
- private
97
-
98
- def ask_plan(plans, default_plan = nil)
99
- ask "Which plan?",
100
- :choices => plans.sort_by(&:name),
101
- :indexed => true,
102
- :display => proc { |p| "#{p.name}: #{p.description || 'No description'}" },
103
- :default => default_plan,
104
- :complete => proc(&:name)
105
- end
106
-
107
86
  end
108
-
109
87
  end
@@ -8,4 +8,7 @@ Mothership::Help.groups(
8
8
 
9
9
  require "lds-cf-plugin/custom_service"
10
10
  require "lds-cf-plugin/oracle_service"
11
+ require "lds-cf-plugin/lds_account_service"
12
+ require "lds-cf-plugin/http_service"
13
+ require "lds-cf-plugin/wam_service"
11
14
  require "lds-cf-plugin/tunnel"
@@ -117,7 +117,7 @@ module LdsCfPlugin
117
117
  tunnel_console do |instances|
118
118
  visualvm = input[:jvisualvm] ? input[:jvisualvm] : "jvisualvm"
119
119
  EventMachine::defer do
120
- if system("#{visualvm} -cp:a #{JMXMP_JAR_FILE}") == nil
120
+ if system("''#{visualvm}'' -cp:a #{JMXMP_JAR_FILE}") == nil
121
121
  fail("Unable to run '#{visualvm}'. Is it in your PATH?")
122
122
  end
123
123
  end
@@ -131,7 +131,7 @@ module LdsCfPlugin
131
131
  instances.each do |instance|
132
132
  jmxurl = "service:jmx:jmxmp://#{host}:#{port}"
133
133
  puts "Adding instance #{c('#' + instance.id, :instance)} to VisualVM (#{c(jmxurl, :instance)})"
134
- system("#{visualvm} --openjmx #{jmxurl}")
134
+ system("''#{visualvm}'' --openjmx #{jmxurl}")
135
135
  port = port + 1
136
136
  end
137
137
  end
@@ -1,3 +1,3 @@
1
1
  module LdsCfPlugin
2
- VERSION = "0.3.0".freeze
2
+ VERSION = "0.3.1".freeze
3
3
  end
@@ -0,0 +1,51 @@
1
+ require "cf/cli"
2
+ require "json"
3
+
4
+ module LdsCfPlugin
5
+ class WamService < CF::CLI
6
+ def precondition
7
+ check_target
8
+ end
9
+
10
+ desc "Create a Wam Service"
11
+ group :lds, :services
12
+ input :name, :desc => "Name for your service", :argument => :optional
13
+
14
+ def create_wam_service
15
+ offerings = client.services
16
+ offerings.keep_if { |s| s.label == 'wam-service' && s.provider == 'ICS' }
17
+ service = offerings.first
18
+
19
+ if !service
20
+ fail "Cannot find Wam service on #{client.target}"
21
+ end
22
+
23
+ if service.version != "0.1"
24
+ fail "Your lds-cf-plugin version is out of date. To update execute `gem update lds-cf-plugin`"
25
+ end
26
+
27
+ rest_client = CFoundry::RestClient.new(service.url, client.token)
28
+ rest_client.trace = client.trace
29
+
30
+ instance_name = input[:name]
31
+ if !instance_name
32
+ instance_name = ask("Name")
33
+ end
34
+
35
+ plan = service.service_plans.first
36
+
37
+ # Create service instance
38
+ instance = client.managed_service_instance
39
+ instance.name = instance_name
40
+
41
+ instance.service_plan = plan
42
+ instance.space = client.current_space
43
+
44
+ with_progress("Creating service #{c(instance.name, :name)}") do
45
+ instance.create!
46
+ end
47
+
48
+ instance
49
+ end
50
+ end
51
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lds-cf-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,16 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-17 00:00:00.000000000 Z
12
+ date: 2013-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: cfoundry
15
+ name: cf
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.5.1
21
+ version: 5.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.5.1
29
+ version: 5.2.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: eventmachine
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -67,12 +67,15 @@ extensions: []
67
67
  extra_rdoc_files: []
68
68
  files:
69
69
  - Rakefile
70
+ - lib/lds-cf-plugin/http_service.rb
70
71
  - lib/lds-cf-plugin/custom_service.rb
72
+ - lib/lds-cf-plugin/lds_account_service.rb
71
73
  - lib/lds-cf-plugin/oracle_service.rb
72
74
  - lib/lds-cf-plugin/tunnel.rb
73
75
  - lib/lds-cf-plugin/version.rb
74
76
  - lib/lds-cf-plugin/plugin.rb
75
77
  - lib/lds-cf-plugin/tunnel/tunnelclient.rb
78
+ - lib/lds-cf-plugin/wam_service.rb
76
79
  homepage: http://ui.app.lds.org/
77
80
  licenses: []
78
81
  post_install_message: