kontena-plugin-cloud 1.1.0.pre1 → 1.1.0.pre2
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/.travis.yml +17 -0
- data/lib/kontena/cli/master_code_exchanger.rb +1 -2
- data/lib/kontena/cli/models/organization.rb +8 -0
- data/lib/kontena/cli/models/platform.rb +5 -1
- data/lib/kontena/plugin/cloud/organization/common.rb +21 -0
- data/lib/kontena/plugin/cloud/organization/list_command.rb +4 -2
- data/lib/kontena/plugin/cloud/platform/common.rb +40 -17
- data/lib/kontena/plugin/cloud/platform/create_command.rb +0 -1
- data/lib/kontena/plugin/cloud/platform/env_command.rb +9 -0
- data/lib/kontena/plugin/cloud/platform/list_command.rb +4 -3
- data/lib/kontena/plugin/cloud/platform/show_command.rb +1 -0
- data/lib/kontena/plugin/cloud/platform/use_command.rb +10 -23
- data/lib/kontena/plugin/cloud/platform_command.rb +1 -0
- data/lib/kontena/plugin/cloud.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af9decdc6b9827d74da53fb8039b726ba270138f
|
4
|
+
data.tar.gz: b3353bfcb5b6d8100afbcd0b9bb39635110a468b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d424c65f38efea82051a7a2fb19b600d14ac80db0fb688aa052a9d37b70140840ac78348483804597ed7da4af9708b67e014337b3d356051e190e23e339c31ff
|
7
|
+
data.tar.gz: 4a8ec649931f6bc6ed58fee238832f1947d0991a26b9bad4a26ec49c3701d959da815ceb5c67db28903adb4dc073210391a8ef18a2a57789049edb01ffb45aad
|
data/.travis.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.1.10
|
4
|
+
- 2.2.6
|
5
|
+
- 2.3.3
|
6
|
+
- 2.4.1
|
7
|
+
env:
|
8
|
+
- secure: "lGCbWI8Tmi8rjXkMe4ogIBKvRt4IQ/aNGclP/X7ZzCHwlIobSZTqYw5m3SUSsthPUIhApfmQRxET/3/w4QrGO5GXbNr31G8anT7tMh/+ZLNjZ8R22ZN/JGyT4iR8B0wyyBMsw7VXVmkyRO6uMODDqF2ctAlwppWksMfAy4Fhi7zECwRtyhEwK4il7vx+A+Sk3bG520xNoTHYmPhteTjP7ANKy7SpvNvlXIMIqAOUEyLbGCZzMWsUsPEwVZLI1qjrPCDFAI5ez1yzDJ9023PYgfSJ2jiOUQE1X9uDuhFEswumYWjDEOfpVQ8a6eqNzha6NK6VpG1n0WxHzEnDW2Ea7M9ZrwXqgBNhc/vuM9SOjot3EmrK2lwYaTKyXQVIIJGFkU9/PLLDXqfoHHz0sXyIYsCNORFLclbKZmznx0dVrAlR4LtGP64OoFwE5b8yJCSlcwl7Cd0qqdccuJyTeccwo3+P73jwxvvg9DsN2xgbZFMzdidLSXWYOkf+Vib4okWGiEEsmG1gNtRQzwvNaoWqQ3Svqr90OEtY7jrdm8kMcqq+SmjBJn5ZNP8xUGOh187tx/FHff/YufrlbgNFASffbOOWCNmnYC1isWp95rBOfjS3PZLAFhgvdQVyl3CqSV0UKpZV7y6Ujq8JcnZh2VO0f1FZfIcRWRG94StFN+XJ4lE="
|
9
|
+
cache: bundler
|
10
|
+
script: bundle install && bundle exec rspec spec/
|
11
|
+
deploy:
|
12
|
+
provider: rubygems
|
13
|
+
api_key: $GEM_TOKEN
|
14
|
+
gem: kontena-plugin-cloud
|
15
|
+
on:
|
16
|
+
tags: true
|
17
|
+
rvm: 2.4.1
|
@@ -64,9 +64,8 @@ class Kontena::Cli::MasterCodeExchanger
|
|
64
64
|
response = @api_client.request(method: method, body: body, path: path, headers: headers)
|
65
65
|
content_type = response.headers.dig('Content-Type') || ''
|
66
66
|
content_length = response.headers.dig('Content-Length').to_i
|
67
|
-
|
68
67
|
body = if content_type.include?('json') && content_length > 0
|
69
|
-
JSON.parse(response.body)
|
68
|
+
JSON.parse(response.body) rescue response.body
|
70
69
|
else
|
71
70
|
response.body
|
72
71
|
end
|
@@ -9,11 +9,15 @@ module Kontena::Cli::Models
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def online?
|
12
|
-
state.to_s == '
|
12
|
+
state.to_s == 'running'.freeze
|
13
13
|
end
|
14
14
|
|
15
15
|
def organization
|
16
16
|
@api_data.dig('relationships', 'organization', 'data', 'id')
|
17
17
|
end
|
18
|
+
|
19
|
+
def to_path
|
20
|
+
"#{self.organization}/#{self.name}"
|
21
|
+
end
|
18
22
|
end
|
19
23
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative '../../../cli/models/organization'
|
2
|
+
|
3
|
+
module Kontena::Plugin::Cloud::Organization::Common
|
4
|
+
|
5
|
+
def fetch_organizations
|
6
|
+
organizations = cloud_client.get("/organizations/")['data']
|
7
|
+
organizations.map do |o|
|
8
|
+
Kontena::Cli::Models::Organization.new(o)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def prompt_organization
|
13
|
+
organizations = fetch_organizations
|
14
|
+
prompt.select("Choose organization") do |menu|
|
15
|
+
organizations.each do |o|
|
16
|
+
menu.choice o.name, o.name
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -1,12 +1,14 @@
|
|
1
|
+
require_relative 'common'
|
1
2
|
class Kontena::Plugin::Cloud::Organization::ListCommand < Kontena::Command
|
2
3
|
include Kontena::Cli::Common
|
4
|
+
include Kontena::Plugin::Cloud::Organization::Common
|
3
5
|
include Kontena::Cli::TableGenerator::Helper
|
4
6
|
|
5
7
|
requires_current_account_token
|
6
8
|
|
7
9
|
def execute
|
8
|
-
organizations =
|
9
|
-
print_table(organizations) do |row|
|
10
|
+
organizations = fetch_organizations
|
11
|
+
print_table(organizations.map{|o| o.api_data}) do |row|
|
10
12
|
row.merge!(row['attributes'])
|
11
13
|
row['name'] = row['name']
|
12
14
|
row['account-status'] = row['account-status'] == 'active' ? pastel.green(row['account-status']) : row['account-status']
|
@@ -3,6 +3,10 @@ require_relative '../../../cli/models/platform'
|
|
3
3
|
|
4
4
|
module Kontena::Plugin::Cloud::Platform::Common
|
5
5
|
|
6
|
+
def cached_platforms
|
7
|
+
@cached_platforms ||= []
|
8
|
+
end
|
9
|
+
|
6
10
|
def fetch_platforms
|
7
11
|
all = []
|
8
12
|
organizations = cloud_client.get('/organizations')['data']
|
@@ -17,13 +21,24 @@ module Kontena::Plugin::Cloud::Platform::Common
|
|
17
21
|
def fetch_platforms_for_org(org_id)
|
18
22
|
platforms = cloud_client.get("/organizations/#{org_id}/platforms")['data']
|
19
23
|
platforms.map do |p|
|
20
|
-
Kontena::Cli::Models::Platform.new(p)
|
24
|
+
platform = Kontena::Cli::Models::Platform.new(p)
|
25
|
+
cached_platforms << platform if cached_platforms.none?{|cached| platform.id == cached.id }
|
26
|
+
platform
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def prompt_platform
|
31
|
+
platforms = fetch_platforms_for_org(current_organization)
|
32
|
+
prompt.select("Choose platform") do |menu|
|
33
|
+
platforms.each do |p|
|
34
|
+
menu.choice p.name, p
|
35
|
+
end
|
21
36
|
end
|
22
37
|
end
|
23
38
|
|
24
39
|
# @return [String, NilClass]
|
25
40
|
def current_organization
|
26
|
-
@current_organization || ENV['KONTENA_ORGANIZATION']
|
41
|
+
@current_organization || ENV['KONTENA_ORGANIZATION']
|
27
42
|
end
|
28
43
|
|
29
44
|
def current_platform
|
@@ -33,17 +48,17 @@ module Kontena::Plugin::Cloud::Platform::Common
|
|
33
48
|
# @param [String] name
|
34
49
|
def require_platform(name)
|
35
50
|
org, platform = parse_platform_name(name)
|
36
|
-
|
37
51
|
@current_organization = org
|
38
|
-
|
39
|
-
unless
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
52
|
+
p = find_platform_by_name(platform, org)
|
53
|
+
exit_with_error("Platform not found") unless p
|
54
|
+
unless platform_config_exists?(p.to_path)
|
55
|
+
spinner "Generating platform token" do
|
56
|
+
login_to_platform("#{current_organization}/#{platform}", p.url)
|
57
|
+
end
|
44
58
|
end
|
45
|
-
self.current_master =
|
46
|
-
self.current_grid =
|
59
|
+
self.current_master = "#{current_organization}/#{platform}"
|
60
|
+
self.current_grid = p.grid_id
|
61
|
+
p
|
47
62
|
end
|
48
63
|
|
49
64
|
# @param [String] name
|
@@ -64,22 +79,30 @@ module Kontena::Plugin::Cloud::Platform::Common
|
|
64
79
|
end
|
65
80
|
|
66
81
|
def find_platform_by_name(name, org)
|
67
|
-
|
68
|
-
|
69
|
-
|
82
|
+
if platform = cached_platforms.find{|p| p.name == name && p.organization == org }
|
83
|
+
platform
|
84
|
+
else
|
85
|
+
data = cloud_client.get("/organizations/#{org}/platforms/#{name}")['data']
|
86
|
+
if data
|
87
|
+
platform = Kontena::Cli::Models::Platform.new(data)
|
88
|
+
cached_platforms << platform
|
89
|
+
platform
|
90
|
+
end
|
70
91
|
end
|
71
92
|
end
|
72
93
|
|
73
94
|
def login_to_platform(name, url)
|
74
95
|
organization, platform = name.split('/')
|
75
|
-
platform =
|
76
|
-
authorization = cloud_client.post("/organizations/#{organization}/masters/#{platform.
|
77
|
-
exchanger = Kontena::Cli::MasterCodeExchanger.new(platform.
|
96
|
+
platform = find_platform_by_name(platform, organization)
|
97
|
+
authorization = cloud_client.post("/organizations/#{organization}/masters/#{platform.master_id}/authorize", {})
|
98
|
+
exchanger = Kontena::Cli::MasterCodeExchanger.new(platform.url)
|
78
99
|
code = exchanger.exchange_code(authorization['code'])
|
79
100
|
cmd = [
|
80
101
|
'master', 'login', '--silent', '--no-login-info', '--skip-grid-auto-select',
|
81
102
|
'--name', name, '--code', code, url
|
82
103
|
]
|
83
104
|
Kontena.run!(cmd)
|
105
|
+
rescue => e
|
106
|
+
error e.message
|
84
107
|
end
|
85
108
|
end
|
@@ -47,7 +47,6 @@ class Kontena::Plugin::Cloud::Platform::CreateCommand < Kontena::Command
|
|
47
47
|
def prompt_organization
|
48
48
|
organizations = cloud_client.get('/organizations')['data']
|
49
49
|
prompt.select("Choose organization:") do |menu|
|
50
|
-
menu.choice "#{config.current_account.username} (you)", config.current_account.username
|
51
50
|
organizations.each do |o|
|
52
51
|
menu.choice o.dig('attributes', 'name')
|
53
52
|
end
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require_relative 'common'
|
2
|
+
require_relative '../organization/common'
|
2
3
|
|
3
4
|
class Kontena::Plugin::Cloud::Platform::ListCommand < Kontena::Command
|
4
5
|
include Kontena::Cli::Common
|
5
6
|
include Kontena::Cli::TableGenerator::Helper
|
6
7
|
include Kontena::Plugin::Cloud::Platform::Common
|
8
|
+
include Kontena::Plugin::Cloud::Organization::Common
|
7
9
|
|
8
10
|
requires_current_account_token
|
9
11
|
|
@@ -22,13 +24,12 @@ class Kontena::Plugin::Cloud::Platform::ListCommand < Kontena::Command
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def default_organization
|
25
|
-
|
27
|
+
prompt_organization
|
26
28
|
end
|
27
29
|
|
28
30
|
def fields
|
29
31
|
{
|
30
32
|
name: 'name',
|
31
|
-
organization: 'organization',
|
32
33
|
region: 'region'
|
33
34
|
}
|
34
35
|
end
|
@@ -37,7 +38,7 @@ class Kontena::Plugin::Cloud::Platform::ListCommand < Kontena::Command
|
|
37
38
|
case health
|
38
39
|
when nil
|
39
40
|
" ".freeze
|
40
|
-
when '
|
41
|
+
when 'running'.freeze
|
41
42
|
pastel.green('⊛'.freeze)
|
42
43
|
else
|
43
44
|
pastel.dark('⊝'.freeze)
|
@@ -20,6 +20,7 @@ class Kontena::Plugin::Cloud::Platform::ShowCommand < Kontena::Command
|
|
20
20
|
puts " organization: #{current_organization}"
|
21
21
|
puts " version: #{platform.version}"
|
22
22
|
puts " state: #{platform.state}"
|
23
|
+
puts " online: #{platform.online}"
|
23
24
|
puts " region: #{platform.region || '-'}"
|
24
25
|
puts " initial_size: #{platform.initial_size}"
|
25
26
|
puts " master: #{platform.url}"
|
@@ -1,41 +1,28 @@
|
|
1
1
|
require_relative 'common'
|
2
|
+
require_relative '../organization/common'
|
2
3
|
|
3
4
|
class Kontena::Plugin::Cloud::Platform::UseCommand < Kontena::Command
|
4
5
|
include Kontena::Cli::Common
|
5
6
|
include Kontena::Plugin::Cloud::Platform::Common
|
7
|
+
include Kontena::Plugin::Cloud::Organization::Common
|
6
8
|
|
7
9
|
requires_current_account_token
|
8
10
|
|
9
11
|
parameter "[NAME]", "Platform name"
|
10
12
|
|
11
13
|
def execute
|
12
|
-
if name
|
13
|
-
require_platform(name)
|
14
|
-
platform = find_platform_by_name(current_grid, current_organization)
|
14
|
+
if name && name.include?('/')
|
15
|
+
platform = require_platform(name)
|
15
16
|
else
|
17
|
+
@current_organization = prompt_organization
|
16
18
|
platform = prompt_platform
|
19
|
+
require_platform(platform.to_path)
|
17
20
|
end
|
18
21
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
else
|
25
|
-
config.current_master = platform_name
|
26
|
-
config.current_master.grid = platform.grid_id
|
27
|
-
config.write
|
28
|
-
end
|
29
|
-
|
30
|
-
puts "Using platform: #{pastel.cyan(platform_name)}"
|
22
|
+
config.current_master = platform.to_path
|
23
|
+
config.current_master.grid = platform.grid_id
|
24
|
+
config.write
|
25
|
+
puts "Using platform: #{pastel.cyan(platform.to_path)}"
|
31
26
|
end
|
32
27
|
|
33
|
-
def prompt_platform
|
34
|
-
platforms = fetch_platforms_for_org(current_organization)
|
35
|
-
prompt.select("Choose platform") do |menu|
|
36
|
-
platforms.each do |p|
|
37
|
-
menu.choice p.name, p
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
28
|
end
|
@@ -7,6 +7,7 @@ class Kontena::Plugin::Cloud::PlatformCommand < Kontena::Command
|
|
7
7
|
subcommand ['join', 'byo'], 'Join grid as Kontena Platform', load_subcommand('kontena/plugin/cloud/platform/import_grid_command')
|
8
8
|
subcommand 'user', 'User management commands', load_subcommand('kontena/plugin/cloud/platform/user_command')
|
9
9
|
subcommand 'upgrade', 'Upgrade platform version', load_subcommand('kontena/plugin/cloud/platform/upgrade_command')
|
10
|
+
subcommand 'env', 'Show the current grid environment details', load_subcommand('kontena/plugin/cloud/platform/env_command')
|
10
11
|
|
11
12
|
def execute
|
12
13
|
end
|
data/lib/kontena/plugin/cloud.rb
CHANGED
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.1.0.
|
4
|
+
version: 1.1.0.pre2
|
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-10-
|
11
|
+
date: 2017-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kontena-cli
|
@@ -61,6 +61,7 @@ extra_rdoc_files: []
|
|
61
61
|
files:
|
62
62
|
- ".gitignore"
|
63
63
|
- ".rspec"
|
64
|
+
- ".travis.yml"
|
64
65
|
- Gemfile
|
65
66
|
- LICENSE.txt
|
66
67
|
- README.md
|
@@ -70,8 +71,10 @@ files:
|
|
70
71
|
- lib/kontena/cli/models/cloud_api_model.rb
|
71
72
|
- lib/kontena/cli/models/grid.rb
|
72
73
|
- lib/kontena/cli/models/master_api_model.rb
|
74
|
+
- lib/kontena/cli/models/organization.rb
|
73
75
|
- lib/kontena/cli/models/platform.rb
|
74
76
|
- lib/kontena/plugin/cloud.rb
|
77
|
+
- lib/kontena/plugin/cloud/organization/common.rb
|
75
78
|
- lib/kontena/plugin/cloud/organization/list_command.rb
|
76
79
|
- lib/kontena/plugin/cloud/organization/remove_command.rb
|
77
80
|
- lib/kontena/plugin/cloud/organization/show_command.rb
|
@@ -82,6 +85,7 @@ files:
|
|
82
85
|
- lib/kontena/plugin/cloud/organization_command.rb
|
83
86
|
- lib/kontena/plugin/cloud/platform/common.rb
|
84
87
|
- lib/kontena/plugin/cloud/platform/create_command.rb
|
88
|
+
- lib/kontena/plugin/cloud/platform/env_command.rb
|
85
89
|
- lib/kontena/plugin/cloud/platform/import_grid_command.rb
|
86
90
|
- lib/kontena/plugin/cloud/platform/list_command.rb
|
87
91
|
- lib/kontena/plugin/cloud/platform/remove_command.rb
|
@@ -117,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
121
|
version: 1.3.1
|
118
122
|
requirements: []
|
119
123
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.6.
|
124
|
+
rubygems_version: 2.6.14
|
121
125
|
signing_key:
|
122
126
|
specification_version: 4
|
123
127
|
summary: Kontena Cloud management for Kontena CLI
|