vmc 0.4.0.beta.75 → 0.4.0.beta.76

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.
@@ -0,0 +1,159 @@
1
+ require "vmc/cli"
2
+
3
+ module VMC
4
+ class Domain < CLI
5
+ def precondition
6
+ super
7
+ fail "This command is v2-only." unless v2?
8
+ end
9
+
10
+
11
+ desc "List domains in a space"
12
+ group :domains
13
+ input :organization, :argument => :optional, :aliases => ["--org", "-o"],
14
+ :from_given => by_name("organization"),
15
+ :desc => "Organization to delete the domain from"
16
+ def domains
17
+ target = input[:organization] || client
18
+
19
+ domains =
20
+ with_progress("Getting domains") do
21
+ target.domains
22
+ end
23
+
24
+ line unless quiet?
25
+
26
+ table(
27
+ %w{name wildcard? owner},
28
+ domains.sort_by(&:name).collect { |r|
29
+ [ c(r.name, :name),
30
+ c(r.wildcard, r.wildcard ? :yes : :no),
31
+ if org = r.owning_organization
32
+ c(org.name, :name)
33
+ else
34
+ d("none")
35
+ end
36
+ ]
37
+ })
38
+ end
39
+
40
+
41
+ desc "Delete a domain"
42
+ group :domains
43
+ input(:domain, :argument => :optional,
44
+ :from_given => find_by_name("domain"),
45
+ :desc => "URL to map to the application") { |domains|
46
+ fail "No domains." if domains.empty?
47
+
48
+ ask "Which domain?", :choices => domains.sort_by(&:name),
49
+ :display => proc(&:name)
50
+ }
51
+ input :organization, :aliases => ["--org", "-o"],
52
+ :from_given => by_name("organization"),
53
+ :desc => "Organization to delete the domain from"
54
+ input(:really, :type => :boolean, :forget => true,
55
+ :default => proc { force? || interact }) { |name, color|
56
+ ask("Really delete #{c(name, color)}?", :default => false)
57
+ }
58
+ input :all, :type => :boolean, :default => false,
59
+ :desc => "Delete all domains"
60
+ def delete_domain
61
+ target = input[:organization] || client
62
+
63
+ if input[:all]
64
+ return unless input[:really, "ALL DOMAINS", :bad]
65
+
66
+ target.domains.each do |r|
67
+ begin
68
+ invoke :delete_domain, :domain => r, :really => true
69
+ rescue CFoundry::APIError => e
70
+ err "#{e.class}: #{e.message}"
71
+ end
72
+ end
73
+
74
+ return
75
+ end
76
+
77
+ domain = input[:domain, target.domains]
78
+
79
+ return unless input[:really, domain.name, :name]
80
+
81
+ with_progress("Deleting domain #{c(domain.name, :name)}") do
82
+ domain.delete!
83
+ end
84
+ end
85
+
86
+
87
+ desc "Create a domain"
88
+ group :domains
89
+ input :name, :argument => :required,
90
+ :desc => "Domain name to create (*.foo.com for wildcard)"
91
+ input :organization, :aliases => ["--org", "-o"],
92
+ :from_given => by_name("organization"),
93
+ :default => proc { client.current_organization },
94
+ :desc => "Organization to add the domain to"
95
+ def create_domain
96
+ org = input[:organization]
97
+ name = input[:name]
98
+ wildcard = false
99
+
100
+ # *.foo.com for wildcard
101
+ if name =~ /^\*\.(.+)$/
102
+ name = $1
103
+ wildcard = true
104
+ end
105
+
106
+ domain = client.domain
107
+ domain.name = name
108
+ domain.wildcard = wildcard
109
+ domain.owning_organization = org
110
+
111
+ with_progress("Creating domain #{c(name, :name)}") do
112
+ domain.create!
113
+ org.add_domain(domain) if org
114
+ end
115
+ end
116
+
117
+
118
+ desc "Add a domain to a space"
119
+ group :domains
120
+ input(:domain, :argument => :optional,
121
+ :from_given => by_name("domain"),
122
+ :desc => "Domain to add") {
123
+ ask "Which domain?", :choices => client.current_organization.domains,
124
+ :display => proc(&:name)
125
+ }
126
+ input :space, :from_given => by_name("space"),
127
+ :default => proc { client.current_space },
128
+ :desc => "Space to add the domain to"
129
+ def add_domain
130
+ space = input[:space]
131
+ domain = input[:domain]
132
+
133
+ with_progress("Adding #{c(domain.name, :name)} to #{c(space.name, :name)}") do
134
+ space.add_domain(domain)
135
+ end
136
+ end
137
+
138
+
139
+ desc "Remove a domain from a space"
140
+ group :domains
141
+ input(:domain, :argument => :optional,
142
+ :from_given => by_name("domain"),
143
+ :desc => "Domain to add") { |space|
144
+ ask "Which domain?", :choices => space.domains,
145
+ :display => proc(&:name)
146
+ }
147
+ input :space, :from_given => by_name("space"),
148
+ :default => proc { client.current_space },
149
+ :desc => "Space to add the domain to"
150
+ def remove_domain
151
+ space = input[:space]
152
+ domain = input[:domain, space]
153
+
154
+ with_progress("Removing #{c(domain.name, :name)} from #{c(space.name, :name)}") do
155
+ space.add_domain(domain)
156
+ end
157
+ end
158
+ end
159
+ end
@@ -10,6 +10,7 @@ Mothership::Help.groups(
10
10
  [:organizations, "Organizations"],
11
11
  [:spaces, "Spaces"],
12
12
  [:routes, "Routes"],
13
+ [:domains, "Domains"],
13
14
  [:admin, "Administration",
14
15
  [:user, "User Management"]])
15
16
 
@@ -31,10 +31,8 @@ module VMC
31
31
  desc "Delete a route"
32
32
  group :routes
33
33
  input(:route, :argument => :optional,
34
- :desc => "URL to map to the application") {
35
- routes = client.routes
36
- fail "No routes." if routes.empty?
37
-
34
+ :from_given => find_by_name("route"),
35
+ :desc => "URL to map to the application") { |routes|
38
36
  ask "Which route?", :choices => routes.sort_by(&:name),
39
37
  :display => proc(&:name)
40
38
  }
@@ -55,7 +53,10 @@ module VMC
55
53
  return
56
54
  end
57
55
 
58
- route = input[:route]
56
+ routes = client.routes
57
+ fail "No routes." if routes.empty?
58
+
59
+ route = input[:route, client.routes]
59
60
 
60
61
  return unless input[:really, route.name, :name]
61
62
 
@@ -71,6 +71,8 @@ module VMC
71
71
  else
72
72
  line "services: #{name_list(space.service_instances)}"
73
73
  end
74
+
75
+ line "domains: #{name_list(space.domains)}"
74
76
  end
75
77
  end
76
78
 
@@ -1,3 +1,3 @@
1
1
  module VMC
2
- VERSION = "0.4.0.beta.75"
2
+ VERSION = "0.4.0.beta.76"
3
3
  end
data/vmc-ng/lib/vmc.rb CHANGED
@@ -8,3 +8,4 @@ require "vmc/cli/user"
8
8
  require "vmc/cli/space"
9
9
  require "vmc/cli/organization"
10
10
  require "vmc/cli/route"
11
+ require "vmc/cli/domain"
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: 1933729205
4
+ hash: 26822539
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
9
  - 0
10
10
  - beta
11
- - 75
12
- version: 0.4.0.beta.75
11
+ - 76
12
+ version: 0.4.0.beta.76
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-10-29 00:00:00 Z
20
+ date: 2012-11-01 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: json_pure
@@ -265,12 +265,12 @@ dependencies:
265
265
  requirements:
266
266
  - - ~>
267
267
  - !ruby/object:Gem::Version
268
- hash: 119
268
+ hash: 117
269
269
  segments:
270
270
  - 0
271
271
  - 3
272
- - 50
273
- version: 0.3.50
272
+ - 51
273
+ version: 0.3.51
274
274
  type: :runtime
275
275
  version_requirements: *id015
276
276
  - !ruby/object:Gem::Dependency
@@ -456,6 +456,7 @@ files:
456
456
  - vmc-ng/LICENSE
457
457
  - vmc-ng/Rakefile
458
458
  - vmc-ng/lib/vmc/cli/app.rb
459
+ - vmc-ng/lib/vmc/cli/domain.rb
459
460
  - vmc-ng/lib/vmc/cli/help.rb
460
461
  - vmc-ng/lib/vmc/cli/interactive.rb
461
462
  - vmc-ng/lib/vmc/cli/organization.rb