admin-cf-plugin 1.0.0 → 1.1.0

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.
@@ -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