vmc 0.4.0.beta.80 → 0.4.0.beta.81

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.
@@ -66,11 +66,13 @@ module VMC
66
66
  end
67
67
  end
68
68
 
69
- def precondition
69
+ def check_target
70
70
  unless File.exists? target_file
71
71
  fail "Please select a target with 'vmc target'."
72
72
  end
73
+ end
73
74
 
75
+ def check_logged_in
74
76
  unless client.logged_in?
75
77
  if force?
76
78
  fail "Please log in with 'vmc login'."
@@ -81,6 +83,11 @@ module VMC
81
83
  invalidate_client
82
84
  end
83
85
  end
86
+ end
87
+
88
+ def precondition
89
+ check_target
90
+ check_logged_in
84
91
 
85
92
  return unless v2?
86
93
 
@@ -97,6 +104,7 @@ module VMC
97
104
  if input[:help]
98
105
  invoke :help, :command => cmd.name.to_s
99
106
  else
107
+ @command = cmd
100
108
  precondition
101
109
  super
102
110
  end
@@ -148,7 +148,7 @@ module VMC
148
148
  domain = input[:domain, space]
149
149
 
150
150
  with_progress("Removing #{c(domain.name, :name)} from #{c(space.name, :name)}") do
151
- space.add_domain(domain)
151
+ space.remove_domain(domain)
152
152
  end
153
153
  end
154
154
  end
@@ -3,7 +3,9 @@ require "vmc/cli"
3
3
  module VMC
4
4
  class Organization < CLI
5
5
  def precondition
6
- super
6
+ check_target
7
+ check_logged_in
8
+
7
9
  fail "This command is v2-only." unless v2?
8
10
  end
9
11
 
@@ -26,6 +28,11 @@ module VMC
26
28
  def org
27
29
  org = input[:organization]
28
30
 
31
+ unless org
32
+ return if quiet?
33
+ fail "No current organization."
34
+ end
35
+
29
36
  if quiet?
30
37
  puts org.name
31
38
  return
@@ -80,5 +87,90 @@ module VMC
80
87
  end
81
88
  end
82
89
  end
90
+
91
+
92
+ desc "Create an organization"
93
+ group :organizations
94
+ input(:name, :argument => :optional, :desc => "Organization name") {
95
+ ask("Name")
96
+ }
97
+ input :target, :alias => "-t", :type => :boolean,
98
+ :desc => "Switch to the organization after creation"
99
+ input :add_self, :type => :boolean, :default => true,
100
+ :desc => "Add yourself to the organization"
101
+ def create_org
102
+ org = client.organization
103
+ org.name = input[:name]
104
+ org.users = [client.current_user] if input[:add_self]
105
+
106
+ with_progress("Creating organization #{c(org.name, :name)}") do
107
+ org.create!
108
+ end
109
+
110
+ if input[:target]
111
+ invoke :target, :organization => org
112
+ end
113
+ end
114
+
115
+
116
+ desc "Delete an organization"
117
+ group :organizations
118
+ input(:organization, :aliases => ["--org", "-o"],
119
+ :argument => :optional,
120
+ :from_given => by_name("organization"),
121
+ :desc => "Organization to delete") { |orgs|
122
+ ask "Which organization?", :choices => orgs,
123
+ :display => proc(&:name)
124
+ }
125
+ input(:really, :type => :boolean, :forget => true,
126
+ :default => proc { force? || interact }) { |org|
127
+ ask("Really delete #{c(org.name, :name)}?", :default => false)
128
+ }
129
+ input(:recursive, :alias => "-r", :type => :boolean, :forget => true) {
130
+ ask "Delete #{c("EVERYTHING", :bad)}?", :default => false
131
+ }
132
+ input :warn, :type => :boolean, :default => true,
133
+ :desc => "Show warning if it was the last org"
134
+ def delete_org
135
+ orgs = client.organizations
136
+ fail "No organizations." if orgs.empty?
137
+
138
+ org = input[:organization, orgs]
139
+ return unless input[:really, org]
140
+
141
+ spaces = org.spaces
142
+ unless spaces.empty?
143
+ unless force?
144
+ line "This organization is not empty!"
145
+ line
146
+ line "spaces: #{name_list(spaces)}"
147
+ line
148
+
149
+ return unless input[:recursive]
150
+ end
151
+
152
+ spaces.each do |s|
153
+ invoke :delete_space, :space => s, :really => true,
154
+ :recursive => true, :warn => false
155
+ end
156
+ end
157
+
158
+ is_current = org == client.current_organization
159
+
160
+ with_progress("Deleting organization #{c(org.name, :name)}") do
161
+ org.delete!
162
+ end
163
+
164
+ if orgs.size == 1
165
+ return unless input[:warn]
166
+
167
+ line
168
+ line c("There are no longer any organizations.", :warning)
169
+ line "You may want to create one with #{c("create-org", :good)}."
170
+ elsif is_current
171
+ invalidate_target
172
+ invoke :target
173
+ end
174
+ end
83
175
  end
84
176
  end
@@ -3,7 +3,9 @@ require "vmc/cli"
3
3
  module VMC
4
4
  class Space < CLI
5
5
  def precondition
6
- super
6
+ check_target
7
+ check_logged_in
8
+
7
9
  fail "This command is v2-only." unless v2?
8
10
  end
9
11
 
@@ -37,6 +39,11 @@ module VMC
37
39
  org = input[:organization]
38
40
  space = input[:space, org]
39
41
 
42
+ unless space
43
+ return if quiet?
44
+ fail "No current space."
45
+ end
46
+
40
47
  if quiet?
41
48
  puts space.name
42
49
  return
@@ -122,7 +129,8 @@ module VMC
122
129
  :from_given => by_name("organization"),
123
130
  :default => proc { client.current_organization },
124
131
  :desc => "Parent organization"
125
- input :target, :alias => "-t", :type => :boolean
132
+ input :target, :alias => "-t", :type => :boolean,
133
+ :desc => "Switch to the space after creation"
126
134
  input :manager, :type => :boolean, :default => true,
127
135
  :desc => "Add current user as manager"
128
136
  input :developer, :type => :boolean, :default => true,
@@ -196,6 +204,8 @@ module VMC
196
204
  input(:recursive, :alias => "-r", :type => :boolean, :forget => true) {
197
205
  ask "Delete #{c("EVERYTHING", :bad)}?", :default => false
198
206
  }
207
+ input :warn, :type => :boolean, :default => true,
208
+ :desc => "Show warning if it was the last space"
199
209
  def delete_space
200
210
  org = input[:organization]
201
211
  space = input[:space, org]
@@ -233,6 +243,8 @@ module VMC
233
243
  org.invalidate!
234
244
 
235
245
  if org.spaces.empty?
246
+ return unless input[:warn]
247
+
236
248
  line
237
249
  line c("There are no longer any spaces in #{b(org.name)}.", :warning)
238
250
  line "You may want to create one with #{c("create-space", :good)}."
@@ -404,7 +404,15 @@ module VMC
404
404
  if changed_org || input.given?(:space) || !space_valid?(info[:space])
405
405
  spaces = org.spaces
406
406
 
407
- fail "No spaces!" if spaces.empty?
407
+ if spaces.empty?
408
+ if changed_org
409
+ line c("There are no spaces in #{b(org.name)}.", :warning)
410
+ line "You may want to create one with #{c("create-space", :good)}."
411
+ return
412
+ else
413
+ fail "No spaces!"
414
+ end
415
+ end
408
416
 
409
417
  if spaces.size == 1 && !input.given?(:space)
410
418
  space = spaces.first
@@ -1,3 +1,3 @@
1
1
  module VMC
2
- VERSION = "0.4.0.beta.80"
2
+ VERSION = "0.4.0.beta.81"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 2565518183
4
+ hash: -2781116170
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
9
  - 0
10
10
  - beta
11
- - 80
12
- version: 0.4.0.beta.80
11
+ - 81
12
+ version: 0.4.0.beta.81
13
13
  platform: ruby
14
14
  authors:
15
15
  - VMware
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-11-06 00:00:00 Z
20
+ date: 2012-11-07 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: json_pure