vmc 0.4.7 → 0.5.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/vmc.rb +1 -2
- data/lib/vmc/cli.rb +33 -31
- data/lib/vmc/cli/app/app.rb +2 -2
- data/lib/vmc/cli/app/apps.rb +4 -5
- data/lib/vmc/cli/app/crashes.rb +2 -3
- data/lib/vmc/cli/app/delete.rb +28 -25
- data/lib/vmc/cli/app/env.rb +11 -19
- data/lib/vmc/cli/app/files.rb +11 -15
- data/lib/vmc/cli/app/health.rb +2 -3
- data/lib/vmc/cli/app/instances.rb +3 -3
- data/lib/vmc/cli/app/logs.rb +7 -10
- data/lib/vmc/cli/app/push.rb +17 -89
- data/lib/vmc/cli/app/push/create.rb +2 -0
- data/lib/vmc/cli/app/rename.rb +17 -13
- data/lib/vmc/cli/app/restart.rb +4 -7
- data/lib/vmc/cli/app/routes.rb +14 -11
- data/lib/vmc/cli/app/scale.rb +17 -15
- data/lib/vmc/cli/app/start.rb +4 -7
- data/lib/vmc/cli/app/stats.rb +2 -3
- data/lib/vmc/cli/app/stop.rb +3 -5
- data/lib/vmc/cli/domain/add_domain.rb +3 -5
- data/lib/vmc/cli/domain/create_domain.rb +5 -8
- data/lib/vmc/cli/domain/delete_domain.rb +23 -18
- data/lib/vmc/cli/domain/domains.rb +4 -7
- data/lib/vmc/cli/domain/remove_domain.rb +12 -10
- data/lib/vmc/cli/organization/org.rb +6 -7
- data/lib/vmc/cli/organization/orgs.rb +19 -19
- data/lib/vmc/cli/organization/rename.rb +18 -14
- data/lib/vmc/cli/route/create_route.rb +20 -13
- data/lib/vmc/cli/route/{delete_route.rb → delete.rb} +22 -17
- data/lib/vmc/cli/service/bind.rb +2 -2
- data/lib/vmc/cli/service/create.rb +57 -53
- data/lib/vmc/cli/service/delete.rb +33 -31
- data/lib/vmc/cli/service/rename.rb +17 -14
- data/lib/vmc/cli/service/service.rb +5 -8
- data/lib/vmc/cli/service/services.rb +14 -18
- data/lib/vmc/cli/service/unbind.rb +4 -4
- data/lib/vmc/cli/space/create.rb +16 -17
- data/lib/vmc/cli/space/delete.rb +34 -31
- data/lib/vmc/cli/space/rename.rb +20 -17
- data/lib/vmc/cli/space/space.rb +11 -14
- data/lib/vmc/cli/space/spaces.rb +14 -16
- data/lib/vmc/cli/space/take.rb +1 -3
- data/lib/vmc/cli/start/base.rb +2 -0
- data/lib/vmc/cli/start/colors.rb +0 -1
- data/lib/vmc/cli/start/info.rb +8 -10
- data/lib/vmc/cli/start/login.rb +11 -40
- data/lib/vmc/cli/start/logout.rb +0 -1
- data/lib/vmc/cli/start/register.rb +18 -12
- data/lib/vmc/cli/start/target.rb +7 -36
- data/lib/vmc/cli/start/target_interactions.rb +3 -1
- data/lib/vmc/cli/start/targets.rb +0 -1
- data/lib/vmc/cli/user/create.rb +4 -2
- data/lib/vmc/version.rb +1 -1
- data/spec/factories/organization_factory.rb +5 -0
- data/spec/factories/space_factory.rb +15 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/vmc/cli/app/push/create_spec.rb +2 -1
- data/spec/vmc/cli/app/push_spec.rb +1 -1
- data/spec/vmc/cli/organization/orgs_spec.rb +119 -0
- data/spec/vmc/cli/route/delete_route_spec.rb +3 -3
- data/spec/vmc/cli/service/bind_spec.rb +34 -0
- data/spec/vmc/cli/service/delete_spec.rb +32 -0
- data/spec/vmc/cli/service/service_spec.rb +32 -0
- data/spec/vmc/cli/service/unbind_spec.rb +34 -0
- data/spec/vmc/cli/space/spaces_spec.rb +120 -0
- data/spec/vmc/cli/start/info_spec.rb +38 -0
- data/spec/vmc/cli/start/login_spec.rb +40 -0
- metadata +127 -113
- data/lib/vmc/cli/organization/create_org.rb +0 -28
- data/lib/vmc/cli/organization/delete_org.rb +0 -65
- data/lib/vmc/cli/service/binding.rb +0 -66
- data/lib/vmc/cli/user.rb +0 -118
@@ -1,28 +0,0 @@
|
|
1
|
-
require "vmc/cli/organization/base"
|
2
|
-
|
3
|
-
module VMC::Organization
|
4
|
-
class CreateOrg < Base
|
5
|
-
desc "Create an organization"
|
6
|
-
group :organizations
|
7
|
-
input(:name, :argument => :optional, :desc => "Organization name") {
|
8
|
-
ask("Name")
|
9
|
-
}
|
10
|
-
input :target, :alias => "-t", :type => :boolean,
|
11
|
-
:desc => "Switch to the organization after creation"
|
12
|
-
input :add_self, :type => :boolean, :default => true,
|
13
|
-
:desc => "Add yourself to the organization"
|
14
|
-
def create_org
|
15
|
-
org = client.organization
|
16
|
-
org.name = input[:name]
|
17
|
-
org.users = [client.current_user] if input[:add_self]
|
18
|
-
|
19
|
-
with_progress("Creating organization #{c(org.name, :name)}") do
|
20
|
-
org.create!
|
21
|
-
end
|
22
|
-
|
23
|
-
if input[:target]
|
24
|
-
invoke :target, :organization => org
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require "vmc/cli/organization/base"
|
2
|
-
|
3
|
-
module VMC::Organization
|
4
|
-
class DeleteOrg < Base
|
5
|
-
desc "Delete an organization"
|
6
|
-
group :organizations
|
7
|
-
input(:organization, :aliases => ["--org", "-o"],
|
8
|
-
:argument => :optional,
|
9
|
-
:from_given => by_name("organization"),
|
10
|
-
:desc => "Organization to delete") { |orgs|
|
11
|
-
ask "Which organization?", :choices => orgs,
|
12
|
-
:display => proc(&:name)
|
13
|
-
}
|
14
|
-
input(:really, :type => :boolean, :forget => true,
|
15
|
-
:default => proc { force? || interact }) { |org|
|
16
|
-
ask("Really delete #{c(org.name, :name)}?", :default => false)
|
17
|
-
}
|
18
|
-
input(:recursive, :alias => "-r", :type => :boolean, :forget => true) {
|
19
|
-
ask "Delete #{c("EVERYTHING", :bad)}?", :default => false
|
20
|
-
}
|
21
|
-
input :warn, :type => :boolean, :default => true,
|
22
|
-
:desc => "Show warning if it was the last org"
|
23
|
-
def delete_org
|
24
|
-
orgs = client.organizations
|
25
|
-
fail "No organizations." if orgs.empty?
|
26
|
-
|
27
|
-
org = input[:organization, orgs]
|
28
|
-
return unless input[:really, org]
|
29
|
-
|
30
|
-
spaces = org.spaces
|
31
|
-
unless spaces.empty?
|
32
|
-
unless force?
|
33
|
-
line "This organization is not empty!"
|
34
|
-
line
|
35
|
-
line "spaces: #{name_list(spaces)}"
|
36
|
-
line
|
37
|
-
|
38
|
-
return unless input[:recursive]
|
39
|
-
end
|
40
|
-
|
41
|
-
spaces.each do |s|
|
42
|
-
invoke :delete_space, :space => s, :really => true,
|
43
|
-
:recursive => true, :warn => false
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
is_current = org == client.current_organization
|
48
|
-
|
49
|
-
with_progress("Deleting organization #{c(org.name, :name)}") do
|
50
|
-
org.delete!
|
51
|
-
end
|
52
|
-
|
53
|
-
if orgs.size == 1
|
54
|
-
return unless input[:warn]
|
55
|
-
|
56
|
-
line
|
57
|
-
line c("There are no longer any organizations.", :warning)
|
58
|
-
line "You may want to create one with #{c("create-org", :good)}."
|
59
|
-
elsif is_current
|
60
|
-
invalidate_target
|
61
|
-
invoke :target
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require "vmc/detect"
|
2
|
-
|
3
|
-
require "vmc/cli/service/base"
|
4
|
-
|
5
|
-
module VMC::Service
|
6
|
-
class Binding < Base
|
7
|
-
desc "Bind a service instance to an application"
|
8
|
-
group :services, :manage
|
9
|
-
input(:instance, :argument => true,
|
10
|
-
:from_given => by_name("service instance", :service_instance),
|
11
|
-
:desc => "Service to bind") { |app|
|
12
|
-
instances = client.service_instances
|
13
|
-
fail "No service instances." if instances.empty?
|
14
|
-
|
15
|
-
ask "Which service instance?",
|
16
|
-
:choices => instances - app.services,
|
17
|
-
:display => proc(&:name)
|
18
|
-
}
|
19
|
-
input(:app, :argument => true,
|
20
|
-
:from_given => by_name("app"),
|
21
|
-
:desc => "Application to bind to") {
|
22
|
-
ask "Which application?", :choices => client.apps(:depth => 2),
|
23
|
-
:display => proc(&:name)
|
24
|
-
}
|
25
|
-
def bind_service
|
26
|
-
app = input[:app]
|
27
|
-
instance = input[:instance, app]
|
28
|
-
|
29
|
-
with_progress(
|
30
|
-
"Binding #{c(instance.name, :name)} to #{c(app.name, :name)}") do |s|
|
31
|
-
if app.binds?(instance)
|
32
|
-
s.skip do
|
33
|
-
err "App #{b(app.name)} already binds #{b(instance.name)}."
|
34
|
-
end
|
35
|
-
else
|
36
|
-
app.bind(instance)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
desc "Unbind a service from an application"
|
43
|
-
group :services, :manage
|
44
|
-
input(:instance, :argument => true,
|
45
|
-
:from_given => find_by_name("service instance"),
|
46
|
-
:desc => "Service to bind") { |services|
|
47
|
-
ask "Which service instance?", :choices => services,
|
48
|
-
:display => proc(&:name)
|
49
|
-
}
|
50
|
-
input(:app, :argument => true,
|
51
|
-
:from_given => by_name("app"),
|
52
|
-
:desc => "Application to bind to") {
|
53
|
-
ask "Which application?", :choices => client.apps(:depth => 2),
|
54
|
-
:display => proc(&:name)
|
55
|
-
}
|
56
|
-
def unbind_service
|
57
|
-
app = input[:app]
|
58
|
-
instance = input[:instance, app.services]
|
59
|
-
|
60
|
-
with_progress(
|
61
|
-
"Unbinding #{c(instance.name, :name)} from #{c(app.name, :name)}") do
|
62
|
-
app.unbind(instance)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
data/lib/vmc/cli/user.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
require "vmc/cli"
|
2
|
-
|
3
|
-
module VMC
|
4
|
-
class User < CLI
|
5
|
-
desc "List all users"
|
6
|
-
group :admin, :hidden => true
|
7
|
-
def users
|
8
|
-
users =
|
9
|
-
with_progress("Getting users") do
|
10
|
-
client.users(:depth => 0)
|
11
|
-
end
|
12
|
-
|
13
|
-
spaced(users) do |u|
|
14
|
-
display_user(u)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
desc "Create a user"
|
20
|
-
group :admin, :user, :hidden => true
|
21
|
-
input(:email, :argument => true, :desc => "User email") {
|
22
|
-
ask("Email")
|
23
|
-
}
|
24
|
-
input(:password, :desc => "User password") {
|
25
|
-
ask("Password", :echo => "*", :forget => true)
|
26
|
-
}
|
27
|
-
input(:verify, :desc => "Repeat password") {
|
28
|
-
ask("Verify Password", :echo => "*", :forget => true)
|
29
|
-
}
|
30
|
-
def create_user
|
31
|
-
email = input[:email]
|
32
|
-
password = input[:password]
|
33
|
-
|
34
|
-
if !force? && password != input[:verify]
|
35
|
-
fail "Passwords don't match."
|
36
|
-
end
|
37
|
-
|
38
|
-
with_progress("Creating user") do
|
39
|
-
client.register(email, password)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
alias_command :create_user, :add_user
|
44
|
-
|
45
|
-
|
46
|
-
desc "Delete a user"
|
47
|
-
group :admin, :user, :hidden => true
|
48
|
-
input :email, :argument => true, :desc => "User to delete"
|
49
|
-
input(:really, :type => :boolean, :forget => true,
|
50
|
-
:default => proc { force? || interact }) { |email|
|
51
|
-
ask("Really delete user #{c(email, :name)}?", :default => false)
|
52
|
-
}
|
53
|
-
def delete_user
|
54
|
-
email = input[:email]
|
55
|
-
return unless input[:really, email]
|
56
|
-
|
57
|
-
with_progress("Deleting #{c(email, :name)}") do
|
58
|
-
client.user(email).delete!
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
|
-
desc "Update a user's password"
|
64
|
-
group :admin, :user, :hidden => true
|
65
|
-
input :user, :argument => :optional,
|
66
|
-
:from_given => proc { |email|
|
67
|
-
if v2? && client.current_user.email != email
|
68
|
-
fail "You can only change your own password on V2."
|
69
|
-
else
|
70
|
-
client.user(email)
|
71
|
-
end
|
72
|
-
},
|
73
|
-
:desc => "User to update",
|
74
|
-
:default => proc { client.current_user }
|
75
|
-
input(:password, :desc => "New password") {
|
76
|
-
ask("Current Password", :echo => "*", :forget => true)
|
77
|
-
}
|
78
|
-
input(:new_password, :desc => "New password") {
|
79
|
-
ask("New Password", :echo => "*", :forget => true)
|
80
|
-
}
|
81
|
-
input(:verify, :desc => "Repeat new password") {
|
82
|
-
ask("Verify Password", :echo => "*", :forget => true)
|
83
|
-
}
|
84
|
-
def passwd
|
85
|
-
user = input[:user]
|
86
|
-
password = input[:password] if v2?
|
87
|
-
new_password = input[:new_password]
|
88
|
-
verify = input[:verify]
|
89
|
-
|
90
|
-
if new_password != verify
|
91
|
-
fail "Passwords don't match."
|
92
|
-
end
|
93
|
-
|
94
|
-
with_progress("Changing password") do
|
95
|
-
if v2?
|
96
|
-
user.change_password!(new_password, password)
|
97
|
-
else
|
98
|
-
user.password = new_password
|
99
|
-
user.update!
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
private
|
105
|
-
|
106
|
-
def display_user(u)
|
107
|
-
if quiet?
|
108
|
-
puts u.email
|
109
|
-
else
|
110
|
-
line "#{c(u.email, :name)}:"
|
111
|
-
|
112
|
-
indented do
|
113
|
-
line "admin?: #{c(u.admin?, u.admin? ? :yes : :no)}"
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|