kontena-plugin-cloud 1.0.0.pre2 → 1.0.0.pre3
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.
- checksums.yaml +4 -4
- data/lib/kontena/plugin/cloud.rb +2 -1
- data/lib/kontena/plugin/platform/create_command.rb +4 -4
- data/lib/kontena/plugin/platform/user/add_command.rb +50 -0
- data/lib/kontena/plugin/platform/user/list_command.rb +26 -0
- data/lib/kontena/plugin/platform/user/remove_command.rb +49 -0
- data/lib/kontena/plugin/platform/user_command.rb +14 -0
- data/lib/kontena/plugin/platform_command.rb +4 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fe648ee714646b76fb23bd31751256927e044e9
|
4
|
+
data.tar.gz: 9ab66ab2e50fb24adf89f64152959bdf8e7154c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16f399f82c72551f2da6070ec900ef6042be9556a21c408ea36618e0e356acb2fb952b1248e0889b41e8754bb12c15c8573093165f2680fa11f2d9924e9bf132
|
7
|
+
data.tar.gz: 4e43e60a3e1366efaa9781e65c0e034eed587bab9f680dcadf2c0f6b7120e7e29a689de67b6e1a42b5a09342f2bc30dcb082497ac81360e06d544564a43dd115
|
data/lib/kontena/plugin/cloud.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Kontena
|
2
2
|
module Plugin
|
3
3
|
module Cloud
|
4
|
-
VERSION = "1.0.0.
|
4
|
+
VERSION = "1.0.0.pre3"
|
5
5
|
|
6
6
|
module Organization
|
7
7
|
module User; end
|
@@ -10,6 +10,7 @@ module Kontena
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module Platform
|
13
|
+
module User; end
|
13
14
|
module TrustedSubnet; end
|
14
15
|
end
|
15
16
|
|
@@ -22,7 +22,7 @@ class Kontena::Plugin::Platform::CreateCommand < Kontena::Command
|
|
22
22
|
|
23
23
|
platform = nil
|
24
24
|
spinner "Creating platform #{pastel.cyan(name)} to region #{pastel.cyan(region)}" do
|
25
|
-
platform = create_platform(name, organization, initial_size, region)
|
25
|
+
platform = create_platform(name, organization, initial_size, region)
|
26
26
|
end
|
27
27
|
spinner "Waiting for platform #{pastel.cyan(name)} to come online" do
|
28
28
|
while !platform.online? do
|
@@ -36,7 +36,7 @@ class Kontena::Plugin::Platform::CreateCommand < Kontena::Command
|
|
36
36
|
# @param [Kontena::Cli::Models::Platform] platform
|
37
37
|
def use_platform(platform)
|
38
38
|
platform_name = "#{organization}/#{name}"
|
39
|
-
login_to_platform(platform_name, platform.
|
39
|
+
login_to_platform(platform_name, platform.url)
|
40
40
|
spinner "Switching to use platform #{pastel.cyan(platform_name)}" do
|
41
41
|
config.current_grid = name
|
42
42
|
config.write
|
@@ -72,10 +72,10 @@ class Kontena::Plugin::Platform::CreateCommand < Kontena::Command
|
|
72
72
|
|
73
73
|
def create_platform(name, organization, initial_size, region)
|
74
74
|
data = {
|
75
|
-
attributes: { "name"
|
75
|
+
attributes: { "name" => name, "initial-size" => initial_size },
|
76
76
|
relationships: {
|
77
77
|
region: {
|
78
|
-
"data"
|
78
|
+
"data" => { "type" => "region", "id" => region }
|
79
79
|
}
|
80
80
|
}
|
81
81
|
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Kontena::Plugin::Platform::User::AddCommand < Kontena::Command
|
2
|
+
include Kontena::Cli::Common
|
3
|
+
include Kontena::Plugin::Platform::Common
|
4
|
+
|
5
|
+
requires_current_account_token
|
6
|
+
|
7
|
+
parameter "NAME", "Platform name"
|
8
|
+
parameter "[USERNAME] ...", "List of usernames to add"
|
9
|
+
option ["--role", "-r"], "ROLE", "Role to grant for users"
|
10
|
+
|
11
|
+
def execute
|
12
|
+
require_platform(name)
|
13
|
+
platform = find_platform_by_name(current_grid, current_organization)
|
14
|
+
self.username_list = prompt_users(platform) if self.username_list.count == 0
|
15
|
+
add_users(platform, username_list)
|
16
|
+
end
|
17
|
+
|
18
|
+
def prompt_users(platform)
|
19
|
+
organization_members = cloud_client.get("/organizations/#{current_organization}/members")['data']
|
20
|
+
platform_members = cloud_client.get("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users")['data']
|
21
|
+
users = organization_members.map do |u|
|
22
|
+
username = u.dig('attributes', 'username')
|
23
|
+
if !platform_members.any?{|m| m['id'] == username }
|
24
|
+
username
|
25
|
+
end
|
26
|
+
end.compact
|
27
|
+
exit_with_error("All organization members are already added to platform") if users.size == 0
|
28
|
+
prompt.multi_select("Choose users:") do |menu|
|
29
|
+
users.each do |username|
|
30
|
+
menu.choice username, username
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_users(platform, usernames)
|
36
|
+
users = []
|
37
|
+
usernames.each do |u|
|
38
|
+
user = {
|
39
|
+
type: 'users',
|
40
|
+
id: u
|
41
|
+
}
|
42
|
+
user[:meta] = { role: role } if role
|
43
|
+
users << user
|
44
|
+
end
|
45
|
+
spinner "Adding users to platform #{pastel.cyan(name)}" do
|
46
|
+
data = {data: users}
|
47
|
+
cloud_client.post("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users", data)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Kontena::Plugin::Platform::User::ListCommand < Kontena::Command
|
2
|
+
include Kontena::Cli::Common
|
3
|
+
include Kontena::Plugin::Platform::Common
|
4
|
+
include Kontena::Cli::TableGenerator::Helper
|
5
|
+
|
6
|
+
requires_current_account_token
|
7
|
+
|
8
|
+
parameter "NAME", "Platform name"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
require_platform(name)
|
12
|
+
platform = find_platform_by_name(current_grid, current_organization)
|
13
|
+
platform_users = cloud_client.get("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users")['data']
|
14
|
+
print_table(platform_users) do |row|
|
15
|
+
row.merge!(row['attributes'].merge(row['meta']))
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def fields
|
21
|
+
{
|
22
|
+
username: 'username',
|
23
|
+
role: 'role'
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class Kontena::Plugin::Platform::User::RemoveCommand < Kontena::Command
|
2
|
+
include Kontena::Cli::Common
|
3
|
+
include Kontena::Plugin::Platform::Common
|
4
|
+
|
5
|
+
requires_current_account_token
|
6
|
+
|
7
|
+
parameter "NAME", "Platform name"
|
8
|
+
parameter "[USERNAME] ...", "List of usernames to remove"
|
9
|
+
|
10
|
+
option "--force", :flag, "Force remove", default: false, attribute_name: :forced
|
11
|
+
|
12
|
+
def execute
|
13
|
+
require_platform(name)
|
14
|
+
platform = find_platform_by_name(current_grid, current_organization)
|
15
|
+
self.username_list = prompt_users(platform) if self.username_list.count == 0
|
16
|
+
confirm_command(self.username_list.join(',')) unless forced?
|
17
|
+
remove_users(platform, username_list)
|
18
|
+
end
|
19
|
+
|
20
|
+
def prompt_users(platform)
|
21
|
+
platform_members = []
|
22
|
+
spinner "Resolving organization #{pastel.cyan(name)} current users" do
|
23
|
+
platform_members = cloud_client.get("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users")['data']
|
24
|
+
end
|
25
|
+
users = prompt.multi_select("Choose users:") do |menu|
|
26
|
+
platform_members.each do |u|
|
27
|
+
menu.choice u.dig('attributes', 'username'), u['id']
|
28
|
+
end
|
29
|
+
end
|
30
|
+
if platform_members.size - users.size < 1
|
31
|
+
exit_with_error "Cannot remove the last user of the platform"
|
32
|
+
end
|
33
|
+
users
|
34
|
+
end
|
35
|
+
|
36
|
+
def remove_users(platform, user_ids)
|
37
|
+
users = []
|
38
|
+
user_ids.each do |u|
|
39
|
+
users << {
|
40
|
+
type: 'users',
|
41
|
+
id: u
|
42
|
+
}
|
43
|
+
end
|
44
|
+
spinner "Removing users from platform #{pastel.cyan(name)}" do
|
45
|
+
data = {data: users}
|
46
|
+
cloud_client.delete("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users", data)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative 'common'
|
2
|
+
|
3
|
+
require_relative 'user/list_command'
|
4
|
+
require_relative 'user/add_command'
|
5
|
+
require_relative 'user/remove_command'
|
6
|
+
class Kontena::Plugin::Platform::UserCommand < Kontena::Command
|
7
|
+
include Kontena::Plugin::Platform
|
8
|
+
subcommand ['list', 'ls'], 'List platform users', User::ListCommand
|
9
|
+
subcommand 'add', 'Add users to platform', User::AddCommand
|
10
|
+
subcommand ['remove', 'rm'], 'Remove users from platform', User::RemoveCommand
|
11
|
+
|
12
|
+
def execute
|
13
|
+
end
|
14
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
|
+
require_relative 'platform/user_command'
|
2
|
+
|
1
3
|
class Kontena::Plugin::PlatformCommand < Kontena::Command
|
4
|
+
include Kontena::Plugin::Platform
|
2
5
|
|
3
6
|
subcommand ['list', 'ls'], 'List platforms', load_subcommand('kontena/plugin/platform/list_command')
|
4
7
|
subcommand ['use', 'switch'], 'Use/switch local scope to platform', load_subcommand('kontena/plugin/platform/use_command')
|
@@ -9,6 +12,7 @@ class Kontena::Plugin::PlatformCommand < Kontena::Command
|
|
9
12
|
subcommand 'health', 'Show platform health', load_subcommand('kontena/plugin/platform/health_command')
|
10
13
|
subcommand 'trusted-subnet', 'Trusted subnet specific commands', load_subcommand('kontena/plugin/platform/trusted_subnet_command')
|
11
14
|
subcommand 'import-grid', 'Import grid as Kontena Platform', load_subcommand('kontena/plugin/platform/import_grid_command')
|
15
|
+
subcommand 'user', 'User management commands', UserCommand
|
12
16
|
|
13
17
|
def execute
|
14
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kontena-plugin-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kontena, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kontena-cli
|
@@ -95,6 +95,10 @@ files:
|
|
95
95
|
- lib/kontena/plugin/platform/trusted_subnet/remove_command.rb
|
96
96
|
- lib/kontena/plugin/platform/trusted_subnet_command.rb
|
97
97
|
- lib/kontena/plugin/platform/use_command.rb
|
98
|
+
- lib/kontena/plugin/platform/user/add_command.rb
|
99
|
+
- lib/kontena/plugin/platform/user/list_command.rb
|
100
|
+
- lib/kontena/plugin/platform/user/remove_command.rb
|
101
|
+
- lib/kontena/plugin/platform/user_command.rb
|
98
102
|
- lib/kontena/plugin/platform_command.rb
|
99
103
|
- lib/kontena_cli_plugin.rb
|
100
104
|
homepage: https://kontena.io
|