admin-cf-plugin 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,14 +10,10 @@ module CFAdmin
10
10
 
11
11
  desc "Execute a raw request"
12
12
  group :admin
13
- input :mode, :argument => :required,
14
- :desc => "Request mode (Get/Put/etc.)"
15
- input :path, :argument => :required,
16
- :desc => "Request path"
17
- input :headers, :argument => :splat,
18
- :desc => "Headers (i.e. Foo: bar)"
19
- input :body, :alias => "-b",
20
- :desc => "Request body"
13
+ input :mode, :argument => :required, :desc => "Request mode (Get/Put/etc.)"
14
+ input :path, :argument => :required, :desc => "Request path"
15
+ input :headers, :argument => :splat, :desc => "Headers (i.e. Foo: bar)"
16
+ input :body, :alias => "-b", :desc => "Request body"
21
17
  def curl
22
18
  mode = input[:mode].upcase
23
19
  path = input[:path]
@@ -1,3 +1,4 @@
1
1
  require "admin-cf-plugin/curl"
2
2
  require "admin-cf-plugin/guid"
3
+ require "admin-cf-plugin/set_quota"
3
4
  require "admin-cf-plugin/service_auth_token"
@@ -0,0 +1,44 @@
1
+ require "cf/cli"
2
+
3
+ module CFAdmin
4
+ class SetQuota < CF::CLI
5
+ def precondition
6
+ check_target
7
+ end
8
+
9
+ desc "Change the quota definition for the given (or current) organization."
10
+ group :admin
11
+ input :quota_definition, :argument => :optional,
12
+ :from_given => by_name(:quota_definition),
13
+ :desc => "Quota definition to set on the organization"
14
+ input :organization, :aliases => %w(org o), :argument => :optional,
15
+ :from_given => by_name(:organization),
16
+ :default => proc { client.current_organization || interact },
17
+ :desc => "Organization to update"
18
+ def set_quota
19
+ org = input[:organization]
20
+ quota = input[:quota_definition]
21
+
22
+ with_progress(<<MESSAGE.chomp) do
23
+ Setting quota of #{c(org.name, :name)} to #{c(quota.name, :name)}
24
+ MESSAGE
25
+ org.quota_definition = quota
26
+ org.update!
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def ask_quota_definition
33
+ ask("Quota",
34
+ :choices => client.quota_definitions,
35
+ :display => proc(&:name))
36
+ end
37
+
38
+ def ask_organization
39
+ ask("Organization",
40
+ :choices => client.organizations,
41
+ :display => proc(&:name))
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module CFAdmin
2
- VERSION = "1.0.0".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
@@ -0,0 +1,86 @@
1
+ require "spec_helper"
2
+
3
+ describe CFAdmin::SetQuota do
4
+ let(:fake_home_dir) { "#{SPEC_ROOT}/fixtures/fake_home_dir" }
5
+
6
+ stub_home_dir_with { fake_home_dir }
7
+
8
+ let(:paid_quota) { fake :quota_definition, :name => "paid" }
9
+ let(:free_quota) { fake :quota_definition, :name => "free" }
10
+
11
+ let(:organization) do
12
+ fake :organization, :name => "some-org-name",
13
+ :quota_definition => free_quota
14
+ end
15
+
16
+ let(:client) do
17
+ fake_client :organizations => [organization],
18
+ :quota_definitions => [paid_quota, free_quota]
19
+ end
20
+
21
+ before do
22
+ stub_client
23
+ stub(organization).update!
24
+ end
25
+
26
+ context "when given an organization and a quota definition" do
27
+ it "promotes the organization to the given quota definition" do
28
+ expect {
29
+ cf %W[set-quota paid some-org-name]
30
+ }.to change {
31
+ organization.quota_definition
32
+ }.from(free_quota).to(paid_quota)
33
+ end
34
+
35
+ it "shows progress to the user" do
36
+ cf %W[set-quota paid some-org-name]
37
+ expect(output).to say("Setting quota of some-org-name to paid... OK")
38
+ end
39
+
40
+ it "saves the changes made to the organization" do
41
+ mock(organization).update!
42
+ cf %W[set-quota paid some-org-name]
43
+ end
44
+ end
45
+
46
+ context "when NOT given a quota definition" do
47
+ it "prompts for the quota definition" do
48
+ mock_ask("Quota", hash_including(:choices => client.quota_definitions)) do
49
+ paid_quota
50
+ end
51
+
52
+ cf %W[set-quota --organization some-org-name]
53
+ end
54
+ end
55
+
56
+ context "when NOT given an organization" do
57
+ context "and the user has a current organization" do
58
+ before { client.current_organization = organization }
59
+
60
+ it "promotes the current to the given quota definition" do
61
+ expect {
62
+ cf %W[set-quota paid]
63
+ }.to change {
64
+ organization.quota_definition
65
+ }.from(free_quota).to(paid_quota)
66
+ end
67
+
68
+ it "saves the changes made to the organization" do
69
+ mock(organization).update!
70
+ cf %W[set-quota paid]
71
+ end
72
+ end
73
+
74
+ context "and the user does NOT have a current organization" do
75
+ before { client.current_organization = nil }
76
+
77
+ it "prompts for the organization" do
78
+ mock_ask("Organization", hash_including(:choices => client.organizations)) do
79
+ organization
80
+ end
81
+
82
+ cf %W[set-quota paid]
83
+ end
84
+ end
85
+ end
86
+ end
data/spec/spec_helper.rb CHANGED
@@ -16,5 +16,6 @@ RSpec.configure do |c|
16
16
 
17
17
  c.include FakeHomeDir
18
18
  c.include CliHelper
19
+ c.include InteractHelper
19
20
  c.include BlueShell::Matchers
20
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admin-cf-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-06 00:00:00.000000000 Z
12
+ date: 2013-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cfoundry
@@ -18,10 +18,10 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.0.0
21
+ version: 1.2.0
22
22
  - - <
23
23
  - !ruby/object:Gem::Version
24
- version: '1.1'
24
+ version: '1.3'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,10 +29,10 @@ dependencies:
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 1.0.0
32
+ version: 1.2.0
33
33
  - - <
34
34
  - !ruby/object:Gem::Version
35
- version: '1.1'
35
+ version: '1.3'
36
36
  description:
37
37
  email:
38
38
  - asuraci@vmware.com
@@ -45,9 +45,11 @@ files:
45
45
  - lib/admin-cf-plugin/guid.rb
46
46
  - lib/admin-cf-plugin/plugin.rb
47
47
  - lib/admin-cf-plugin/service_auth_token.rb
48
+ - lib/admin-cf-plugin/set_quota.rb
48
49
  - lib/admin-cf-plugin/version.rb
49
50
  - spec/curl_spec.rb
50
51
  - spec/guid_spec.rb
52
+ - spec/set_quota_spec.rb
51
53
  - spec/spec_helper.rb
52
54
  homepage: http://cloudfoundry.com/
53
55
  licenses: []
@@ -63,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
63
65
  version: '0'
64
66
  segments:
65
67
  - 0
66
- hash: -3576909112583653757
68
+ hash: -938949713629240288
67
69
  required_rubygems_version: !ruby/object:Gem::Requirement
68
70
  none: false
69
71
  requirements:
@@ -72,11 +74,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
74
  version: '0'
73
75
  requirements: []
74
76
  rubyforge_project: admin-cf-plugin
75
- rubygems_version: 1.8.24
77
+ rubygems_version: 1.8.25
76
78
  signing_key:
77
79
  specification_version: 3
78
80
  summary: Cloud Foundry administration commands.
79
81
  test_files:
80
82
  - spec/curl_spec.rb
81
83
  - spec/guid_spec.rb
84
+ - spec/set_quota_spec.rb
82
85
  - spec/spec_helper.rb