kontena-plugin-cloud 1.0.0.pre3 → 1.0.0

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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kontena/plugin/cloud.rb +5 -5
  3. data/lib/kontena/plugin/cloud/organization/list_command.rb +4 -2
  4. data/lib/kontena/plugin/cloud/organization/remove_command.rb +16 -0
  5. data/lib/kontena/plugin/cloud/organization_command.rb +4 -8
  6. data/lib/kontena/plugin/{platform → cloud/platform}/common.rb +4 -3
  7. data/lib/kontena/plugin/{platform → cloud/platform}/create_command.rb +2 -2
  8. data/lib/kontena/plugin/{platform → cloud/platform}/import_grid_command.rb +2 -2
  9. data/lib/kontena/plugin/{platform → cloud/platform}/list_command.rb +2 -2
  10. data/lib/kontena/plugin/{platform → cloud/platform}/remove_command.rb +2 -2
  11. data/lib/kontena/plugin/cloud/platform/show_command.rb +27 -0
  12. data/lib/kontena/plugin/{platform → cloud/platform}/use_command.rb +2 -2
  13. data/lib/kontena/plugin/{platform → cloud/platform}/user/add_command.rb +4 -2
  14. data/lib/kontena/plugin/{platform → cloud/platform}/user/list_command.rb +4 -3
  15. data/lib/kontena/plugin/{platform → cloud/platform}/user/remove_command.rb +4 -2
  16. data/lib/kontena/plugin/cloud/platform/user_command.rb +10 -0
  17. data/lib/kontena/plugin/cloud/platform_command.rb +12 -0
  18. data/lib/kontena/plugin/cloud/region_command.rb +1 -4
  19. data/lib/kontena/plugin/cloud_command.rb +2 -1
  20. data/lib/kontena_cli_plugin.rb +2 -5
  21. metadata +18 -23
  22. data/lib/kontena/plugin/platform/audit_log_command.rb +0 -33
  23. data/lib/kontena/plugin/platform/health_command.rb +0 -67
  24. data/lib/kontena/plugin/platform/show_command.rb +0 -58
  25. data/lib/kontena/plugin/platform/trusted_subnet/add_command.rb +0 -20
  26. data/lib/kontena/plugin/platform/trusted_subnet/list_command.rb +0 -51
  27. data/lib/kontena/plugin/platform/trusted_subnet/remove_command.rb +0 -27
  28. data/lib/kontena/plugin/platform/trusted_subnet_command.rb +0 -11
  29. data/lib/kontena/plugin/platform/user_command.rb +0 -14
  30. data/lib/kontena/plugin/platform_command.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7fe648ee714646b76fb23bd31751256927e044e9
4
- data.tar.gz: 9ab66ab2e50fb24adf89f64152959bdf8e7154c4
3
+ metadata.gz: f54f4efba0517f8af5aa2d10caae9f68f0bd18c9
4
+ data.tar.gz: 9948d9b7c0e3cb153cdad97139ed040297d9570a
5
5
  SHA512:
6
- metadata.gz: 16f399f82c72551f2da6070ec900ef6042be9556a21c408ea36618e0e356acb2fb952b1248e0889b41e8754bb12c15c8573093165f2680fa11f2d9924e9bf132
7
- data.tar.gz: 4e43e60a3e1366efaa9781e65c0e034eed587bab9f680dcadf2c0f6b7120e7e29a689de67b6e1a42b5a09342f2bc30dcb082497ac81360e06d544564a43dd115
6
+ metadata.gz: 494db6387d932a046993756423a65e730f13c74d1241ecbef58e89aacd61262d31b60eaae87b632e307e5549555700cca054971ac4de30d5de4a8fdfe75617a1
7
+ data.tar.gz: 16d9f944fe522e868b1602527095e31ef027040b5a94bb6d284a57506178fbea3e83cbedf3206b822708a5f965faada5ab1a3a40485d2919ecc7df14c2496e0c
@@ -1,17 +1,17 @@
1
1
  module Kontena
2
2
  module Plugin
3
3
  module Cloud
4
- VERSION = "1.0.0.pre3"
4
+ VERSION = "1.0.0"
5
5
 
6
6
  module Organization
7
7
  module User; end
8
8
  end
9
+
9
10
  module Region; end
10
- end
11
11
 
12
- module Platform
13
- module User; end
14
- module TrustedSubnet; end
12
+ module Platform
13
+ module User; end
14
+ end
15
15
  end
16
16
 
17
17
  module Grid
@@ -9,14 +9,16 @@ class Kontena::Plugin::Cloud::Organization::ListCommand < Kontena::Command
9
9
  print_table(organizations) do |row|
10
10
  row.merge!(row['attributes'])
11
11
  row['name'] = row['name']
12
+ row['account-status'] = row['account-status'] == 'active' ? pastel.green(row['account-status']) : row['account-status']
12
13
  row['role'] = row['owner'] ? pastel.cyan('owner') : 'member'
13
14
  end
14
15
  end
15
16
 
16
17
  def fields
17
18
  {
18
- name: 'name',
19
- 'your role': 'role'
19
+ 'name' => 'name',
20
+ 'account status' => 'account-status',
21
+ 'your role' => 'role'
20
22
  }
21
23
  end
22
24
  end
@@ -0,0 +1,16 @@
1
+ class Kontena::Plugin::Cloud::Organization::RemoveCommand < Kontena::Command
2
+ include Kontena::Cli::Common
3
+
4
+ parameter "NAME", "Organization name"
5
+ option "--force", :flag, "Force remove", default: false, attribute_name: :forced
6
+
7
+ requires_current_account_token
8
+
9
+ def execute
10
+ confirm_command(name) unless forced?
11
+
12
+ spinner "Removing organization #{pastel.cyan(name)}" do
13
+ cloud_client.delete("/organizations/#{name}")
14
+ end
15
+ end
16
+ end
@@ -1,14 +1,10 @@
1
- require_relative 'organization/list_command'
2
- require_relative 'organization/show_command'
3
- require_relative 'organization/user_command'
4
-
5
1
  class Kontena::Plugin::Cloud::OrganizationCommand < Kontena::Command
6
- include Kontena::Plugin::Cloud
7
2
 
8
- subcommand ['list', 'ls'], 'List organizations', Organization::ListCommand
9
- subcommand 'show', 'Show organization details', Organization::ShowCommand
3
+ subcommand ['list', 'ls'], 'List organizations', load_subcommand('kontena/plugin/cloud/organization/list_command')
4
+ subcommand 'show', 'Show organization details', load_subcommand('kontena/plugin/cloud/organization/show_command')
5
+ subcommand ['remove', 'rm'], 'Remove organization', load_subcommand('kontena/plugin/cloud/organization/remove_command')
6
+ subcommand 'user', 'User management commands', load_subcommand('kontena/plugin/cloud/organization/user_command')
10
7
 
11
- subcommand 'user', 'User management commands', Organization::UserCommand
12
8
  def execute
13
9
  end
14
10
  end
@@ -1,7 +1,8 @@
1
- require_relative '../../cli/master_code_exchanger'
2
- require_relative '../../cli/models/platform'
1
+ require_relative '../../../cli/master_code_exchanger'
2
+ require_relative '../../../cli/models/platform'
3
+
4
+ module Kontena::Plugin::Cloud::Platform::Common
3
5
 
4
- module Kontena::Plugin::Platform::Common
5
6
  def fetch_platforms
6
7
  all = []
7
8
  organizations = cloud_client.get('/organizations')['data']
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
- class Kontena::Plugin::Platform::CreateCommand < Kontena::Command
2
+ class Kontena::Plugin::Cloud::Platform::CreateCommand < Kontena::Command
3
3
  include Kontena::Cli::Common
4
- include Kontena::Plugin::Platform::Common
4
+ include Kontena::Plugin::Cloud::Platform::Common
5
5
 
6
6
  requires_current_account_token
7
7
 
@@ -1,7 +1,7 @@
1
- class Kontena::Plugin::Platform::ImportGridCommand < Kontena::Command
1
+ class Kontena::Plugin::Cloud::Platform::ImportGridCommand < Kontena::Command
2
2
  include Kontena::Cli::Common
3
3
 
4
- banner "Migrate grid to Kontena Cloud platform"
4
+ banner "Bring your own grid to Kontena Cloud platform"
5
5
 
6
6
  parameter "MASTER", "Kontena Master name in local config"
7
7
  parameter "GRID", "Grid name"
@@ -1,9 +1,9 @@
1
1
  require_relative 'common'
2
2
 
3
- class Kontena::Plugin::Platform::ListCommand < Kontena::Command
3
+ class Kontena::Plugin::Cloud::Platform::ListCommand < Kontena::Command
4
4
  include Kontena::Cli::Common
5
5
  include Kontena::Cli::TableGenerator::Helper
6
- include Kontena::Plugin::Platform::Common
6
+ include Kontena::Plugin::Cloud::Platform::Common
7
7
 
8
8
  requires_current_account_token
9
9
 
@@ -1,8 +1,8 @@
1
1
  require_relative 'common'
2
2
 
3
- class Kontena::Plugin::Platform::RemoveCommand < Kontena::Command
3
+ class Kontena::Plugin::Cloud::Platform::RemoveCommand < Kontena::Command
4
4
  include Kontena::Cli::Common
5
- include Kontena::Plugin::Platform::Common
5
+ include Kontena::Plugin::Cloud::Platform::Common
6
6
 
7
7
  requires_current_account_token
8
8
 
@@ -0,0 +1,27 @@
1
+ require 'kontena/cli/grids/common'
2
+ require_relative 'common'
3
+
4
+ class Kontena::Plugin::Cloud::Platform::ShowCommand < Kontena::Command
5
+ include Kontena::Cli::Common
6
+ include Kontena::Plugin::Cloud::Platform::Common
7
+ include Kontena::Cli::Grids::Common
8
+
9
+ requires_current_account_token
10
+
11
+ parameter "NAME", "Platform name"
12
+
13
+ def execute
14
+ require_platform(name)
15
+
16
+ platform = find_platform_by_name(current_platform, current_organization)
17
+
18
+ puts "#{name}:"
19
+ puts " name: #{platform.name}"
20
+ puts " organization: #{current_organization}"
21
+ puts " state: #{platform.state}"
22
+ puts " region: #{platform.region || '-'}"
23
+ puts " initial_size: #{platform.initial_size}"
24
+ puts " master: #{platform.url}"
25
+ puts " grid: #{platform.grid_id}"
26
+ end
27
+ end
@@ -1,8 +1,8 @@
1
1
  require_relative 'common'
2
2
 
3
- class Kontena::Plugin::Platform::UseCommand < Kontena::Command
3
+ class Kontena::Plugin::Cloud::Platform::UseCommand < Kontena::Command
4
4
  include Kontena::Cli::Common
5
- include Kontena::Plugin::Platform::Common
5
+ include Kontena::Plugin::Cloud::Platform::Common
6
6
 
7
7
  requires_current_account_token
8
8
 
@@ -1,6 +1,8 @@
1
- class Kontena::Plugin::Platform::User::AddCommand < Kontena::Command
1
+ require_relative '../common'
2
+
3
+ class Kontena::Plugin::Cloud::Platform::User::AddCommand < Kontena::Command
2
4
  include Kontena::Cli::Common
3
- include Kontena::Plugin::Platform::Common
5
+ include Kontena::Plugin::Cloud::Platform::Common
4
6
 
5
7
  requires_current_account_token
6
8
 
@@ -1,6 +1,8 @@
1
- class Kontena::Plugin::Platform::User::ListCommand < Kontena::Command
1
+ require_relative '../common'
2
+
3
+ class Kontena::Plugin::Cloud::Platform::User::ListCommand < Kontena::Command
2
4
  include Kontena::Cli::Common
3
- include Kontena::Plugin::Platform::Common
5
+ include Kontena::Plugin::Cloud::Platform::Common
4
6
  include Kontena::Cli::TableGenerator::Helper
5
7
 
6
8
  requires_current_account_token
@@ -13,7 +15,6 @@ class Kontena::Plugin::Platform::User::ListCommand < Kontena::Command
13
15
  platform_users = cloud_client.get("/organizations/#{current_organization}/platforms/#{platform.id}/relationships/users")['data']
14
16
  print_table(platform_users) do |row|
15
17
  row.merge!(row['attributes'].merge(row['meta']))
16
-
17
18
  end
18
19
  end
19
20
 
@@ -1,6 +1,8 @@
1
- class Kontena::Plugin::Platform::User::RemoveCommand < Kontena::Command
1
+ require_relative '../common'
2
+
3
+ class Kontena::Plugin::Cloud::Platform::User::RemoveCommand < Kontena::Command
2
4
  include Kontena::Cli::Common
3
- include Kontena::Plugin::Platform::Common
5
+ include Kontena::Plugin::Cloud::Platform::Common
4
6
 
5
7
  requires_current_account_token
6
8
 
@@ -0,0 +1,10 @@
1
+
2
+ class Kontena::Plugin::Cloud::Platform::UserCommand < Kontena::Command
3
+
4
+ subcommand ['list', 'ls'], 'List platform users', load_subcommand('kontena/plugin/cloud/platform/user/list_command')
5
+ subcommand 'add', 'Add users to platform', load_subcommand('kontena/plugin/cloud/platform/user/add_command')
6
+ subcommand ['remove', 'rm'], 'Remove users from platform', load_subcommand('kontena/plugin/cloud/platform/user/remove_command')
7
+
8
+ def execute
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ class Kontena::Plugin::Cloud::PlatformCommand < Kontena::Command
2
+ subcommand ['list', 'ls'], 'List platforms', load_subcommand('kontena/plugin/cloud/platform/list_command')
3
+ subcommand ['use', 'switch'], 'Use/switch local scope to platform', load_subcommand('kontena/plugin/cloud/platform/use_command')
4
+ subcommand 'show', 'Show platform details', load_subcommand('kontena/plugin/cloud/platform/show_command')
5
+ subcommand 'create', 'Create new platform', load_subcommand('kontena/plugin/cloud/platform/create_command')
6
+ subcommand ['remove', 'rm'], 'Remove platform', load_subcommand('kontena/plugin/cloud/platform/remove_command')
7
+ subcommand ['join', 'byo'], 'Join grid as Kontena Platform', load_subcommand('kontena/plugin/cloud/platform/import_grid_command')
8
+ subcommand 'user', 'User management commands', load_subcommand('kontena/plugin/cloud/platform/user_command')
9
+
10
+ def execute
11
+ end
12
+ end
@@ -1,9 +1,6 @@
1
- require_relative 'region/list_command'
2
-
3
1
  class Kontena::Plugin::Cloud::RegionCommand < Kontena::Command
4
- include Kontena::Plugin::Cloud
5
2
 
6
- subcommand ['list', 'ls'], 'List regions', Region::ListCommand
3
+ subcommand ['list', 'ls'], 'List regions', load_subcommand('kontena/plugin/cloud/region/list_command')
7
4
 
8
5
  def execute
9
6
  end
@@ -1,6 +1,7 @@
1
1
  class Kontena::Cli::CloudCommand < Kontena::Command
2
2
 
3
- subcommand 'organization', 'Organization specific commands', load_subcommand('kontena/plugin/cloud/organization_command')
3
+ subcommand 'platform', 'Kontena platform specific commands', load_subcommand('kontena/plugin/cloud/platform_command')
4
+ subcommand ['organization', 'org'], 'Organization specific commands', load_subcommand('kontena/plugin/cloud/organization_command')
4
5
  subcommand 'region', 'Region specific commands', load_subcommand('kontena/plugin/cloud/region_command')
5
6
 
6
7
  def execute
@@ -2,9 +2,6 @@ require 'kontena_cli'
2
2
  require 'kontena/command'
3
3
  require_relative 'kontena/plugin/cloud'
4
4
  require_relative 'kontena/plugin/cloud_command'
5
- require_relative 'kontena/plugin/platform_command'
6
-
7
- Kontena::MainCommand.register("platform", "Platform specific commands", Kontena::Plugin::PlatformCommand)
8
5
 
9
6
  module Kontena
10
7
  module Cli
@@ -12,7 +9,7 @@ module Kontena
12
9
  def self.included(base)
13
10
  if base.respond_to?(:option)
14
11
 
15
- base.option '--platform', 'PLATFORM', 'Specify platform to use' do |platform|
12
+ base.option '--platform', 'PLATFORM', 'Specify Kontena Cloud platform to use' do |platform|
16
13
  config.current_master = platform
17
14
  config.current_grid = platform.split('/')[1]
18
15
  end
@@ -24,7 +21,7 @@ module Kontena
24
21
 
25
22
  module CloudCommand
26
23
 
27
- PLATFORM_NOT_SELECTED_ERROR = "Platform not selected, use 'kontena platform use' to select a platform"
24
+ PLATFORM_NOT_SELECTED_ERROR = "Platform not selected, use 'kontena cloud platform use' to select a platform"
28
25
 
29
26
  def verify_current_master
30
27
  super
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.pre3
4
+ version: 1.0.0
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-19 00:00:00.000000000 Z
11
+ date: 2017-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kontena-cli
@@ -73,33 +73,28 @@ files:
73
73
  - lib/kontena/cli/models/platform.rb
74
74
  - lib/kontena/plugin/cloud.rb
75
75
  - lib/kontena/plugin/cloud/organization/list_command.rb
76
+ - lib/kontena/plugin/cloud/organization/remove_command.rb
76
77
  - lib/kontena/plugin/cloud/organization/show_command.rb
77
78
  - lib/kontena/plugin/cloud/organization/user/add_command.rb
78
79
  - lib/kontena/plugin/cloud/organization/user/list_command.rb
79
80
  - lib/kontena/plugin/cloud/organization/user/remove_command.rb
80
81
  - lib/kontena/plugin/cloud/organization/user_command.rb
81
82
  - lib/kontena/plugin/cloud/organization_command.rb
83
+ - lib/kontena/plugin/cloud/platform/common.rb
84
+ - lib/kontena/plugin/cloud/platform/create_command.rb
85
+ - lib/kontena/plugin/cloud/platform/import_grid_command.rb
86
+ - lib/kontena/plugin/cloud/platform/list_command.rb
87
+ - lib/kontena/plugin/cloud/platform/remove_command.rb
88
+ - lib/kontena/plugin/cloud/platform/show_command.rb
89
+ - lib/kontena/plugin/cloud/platform/use_command.rb
90
+ - lib/kontena/plugin/cloud/platform/user/add_command.rb
91
+ - lib/kontena/plugin/cloud/platform/user/list_command.rb
92
+ - lib/kontena/plugin/cloud/platform/user/remove_command.rb
93
+ - lib/kontena/plugin/cloud/platform/user_command.rb
94
+ - lib/kontena/plugin/cloud/platform_command.rb
82
95
  - lib/kontena/plugin/cloud/region/list_command.rb
83
96
  - lib/kontena/plugin/cloud/region_command.rb
84
97
  - lib/kontena/plugin/cloud_command.rb
85
- - lib/kontena/plugin/platform/audit_log_command.rb
86
- - lib/kontena/plugin/platform/common.rb
87
- - lib/kontena/plugin/platform/create_command.rb
88
- - lib/kontena/plugin/platform/health_command.rb
89
- - lib/kontena/plugin/platform/import_grid_command.rb
90
- - lib/kontena/plugin/platform/list_command.rb
91
- - lib/kontena/plugin/platform/remove_command.rb
92
- - lib/kontena/plugin/platform/show_command.rb
93
- - lib/kontena/plugin/platform/trusted_subnet/add_command.rb
94
- - lib/kontena/plugin/platform/trusted_subnet/list_command.rb
95
- - lib/kontena/plugin/platform/trusted_subnet/remove_command.rb
96
- - lib/kontena/plugin/platform/trusted_subnet_command.rb
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
102
- - lib/kontena/plugin/platform_command.rb
103
98
  - lib/kontena_cli_plugin.rb
104
99
  homepage: https://kontena.io
105
100
  licenses:
@@ -116,12 +111,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
111
  version: '0'
117
112
  required_rubygems_version: !ruby/object:Gem::Requirement
118
113
  requirements:
119
- - - ">"
114
+ - - ">="
120
115
  - !ruby/object:Gem::Version
121
- version: 1.3.1
116
+ version: '0'
122
117
  requirements: []
123
118
  rubyforge_project:
124
- rubygems_version: 2.5.2
119
+ rubygems_version: 2.6.13
125
120
  signing_key:
126
121
  specification_version: 4
127
122
  summary: Kontena Cloud management for Kontena CLI
@@ -1,33 +0,0 @@
1
- require 'kontena/cli/grids/audit_log_command'
2
- require_relative 'common'
3
-
4
- class Kontena::Plugin::Platform::AuditLogCommand < Kontena::Command
5
- include Kontena::Cli::Common
6
- include Kontena::Plugin::Platform::Common
7
- include Kontena::Cli::TableGenerator::Helper
8
-
9
- parameter "NAME", "Platform name"
10
-
11
- option ["-l", "--lines"], "LINES", "Number of lines"
12
-
13
- def execute
14
- require_platform(name)
15
-
16
- audit_logs = client.get("grids/#{current_grid}/audit_log", {limit: lines})['logs']
17
- print_table(audit_logs) do |a|
18
- a['user'] = a['user_identity']['email']
19
- a['resource'] = a['resource_name'] ? "#{a['resource_type']}:#{a['resource_name']}" : a['resource_type']
20
- end
21
- end
22
-
23
- def fields
24
- {
25
- 'time' => 'time',
26
- 'resource' => 'resource',
27
- 'event' => 'event_name',
28
- 'user' => 'user',
29
- 'source ip' => 'source_ip',
30
- 'user agent' => 'user_agent'
31
- }
32
- end
33
- end
@@ -1,67 +0,0 @@
1
- require 'kontena/cli/grids/health_command'
2
- require_relative 'common'
3
-
4
- class Kontena::Plugin::Platform::HealthCommand < Kontena::Command
5
- include Kontena::Cli::Common
6
- include Kontena::Plugin::Platform::Common
7
- include Kontena::Cli::Helpers::HealthHelper
8
-
9
- parameter "NAME", "Platform name"
10
-
11
- def execute
12
- require_platform(name)
13
-
14
- grid = client.get("grids/#{current_grid}")
15
- grid_nodes = client.get("grids/#{current_grid}/nodes")
16
-
17
- show_platform_health(grid, grid_nodes['nodes'])
18
- end
19
-
20
- # Validate grid/nodes configuration for grid operation
21
- #
22
- # @return [Boolean] false if unhealthy
23
- def show_platform_health(grid, nodes)
24
- initial_size = grid['initial_size']
25
- minimum_size = grid['initial_size'] / 2 + 1 # a majority is required for etcd quorum
26
-
27
- grid_health = grid_health(grid, nodes)
28
- initial_nodes = nodes.select{|node| node['initial_member']}
29
- online_nodes = initial_nodes.select{|node| node['connected']}
30
-
31
- # configuration and status
32
- if initial_nodes.length == 0
33
- puts "#{health_icon :error} #{name} does not have any initial nodes and requires at least #{minimum_size} of #{initial_size} initial nodes for operation"
34
- elsif online_nodes.empty?
35
- puts "#{health_icon :error} #{name} does not have any initial nodes online and requires at least #{minimum_size} of #{initial_size} initial nodes for operation"
36
- elsif initial_nodes.length < minimum_size
37
- puts "#{health_icon :error} #{name} only has #{initial_nodes.length} initial nodes and requires at least #{minimum_size} of #{initial_size} initial nodes for operation"
38
- elsif online_nodes.length < minimum_size
39
- puts "#{health_icon :error} #{name} only has #{online_nodes.length} initial nodes online and requires at least #{minimum_size} of #{initial_size} initial nodes for operation"
40
- elsif initial_nodes.length < initial_size
41
- puts "#{health_icon :warning} #{name} only has #{initial_nodes.length} initial nodes of #{initial_size} required for high-availability"
42
- elsif online_nodes.length < initial_size
43
- puts "#{health_icon :warning} #{name} only has #{online_nodes.length} initial nodes online of #{initial_size} required for high-availability"
44
- elsif initial_nodes.length == 2
45
- puts "#{health_icon :warning} #{name} only has #{initial_nodes.length} initial nodes and is not high-availability"
46
- elsif initial_nodes.length == 1
47
- puts "#{health_icon :warning} #{name} only has #{initial_nodes.length} initial node and is not high-availability"
48
- else
49
- puts "#{health_icon :ok} #{name} has all #{online_nodes.length} of #{initial_size} initial nodes online"
50
- end
51
-
52
- nodes.each do |node|
53
- node_health = node_health(node, grid_health)
54
-
55
- if node['connected']
56
-
57
- elsif node['initial_member']
58
- puts "#{health_icon grid_health} Initial node #{node['name']} is offline"
59
- else
60
- puts "#{health_icon node_health} Grid node #{node['name']} is offline"
61
- end
62
- end
63
-
64
- # operational if we have etcd quorum
65
- online_nodes.length >= minimum_size
66
- end
67
- end
@@ -1,58 +0,0 @@
1
- require 'kontena/cli/grids/common'
2
- require_relative 'common'
3
- require_relative '../../cli/models/grid'
4
-
5
- class Kontena::Plugin::Platform::ShowCommand < Kontena::Command
6
- include Kontena::Cli::Common
7
- include Kontena::Plugin::Platform::Common
8
- include Kontena::Cli::Grids::Common
9
-
10
- requires_current_account_token
11
-
12
- parameter "NAME", "Platform name"
13
-
14
- def execute
15
- require_platform(name)
16
-
17
- platform = find_platform_by_name(current_platform, current_organization)
18
-
19
- puts "#{name}:"
20
- puts " name: #{platform.name}"
21
- puts " organization: #{current_organization}"
22
- puts " state: #{platform.state}"
23
- puts " region: #{platform.region || '-'}"
24
- puts " initial_size: #{platform.initial_size}"
25
- puts " master: #{platform.url}"
26
-
27
- grid = nil
28
- begin
29
- data = client.get("grids/#{platform.grid_id}")
30
- grid = Kontena::Cli::Models::Grid.new(data)
31
- rescue Kontena::Errors::StandardError
32
- exit_with_error "Cannot fetch grid information"
33
- end
34
-
35
- if grid.default_affinity?
36
- puts " default_affinity: "
37
- grid.default_affinity.to_a.each do |a|
38
- puts " - #{a}"
39
- end
40
- else
41
- puts " default_affinity: -"
42
- end
43
- puts " subnet: #{grid.subnet}"
44
- puts " supernet: #{grid.supernet}"
45
- if grid.stats.statsd?
46
- statsd = grid.stats.statsd
47
- puts " exports:"
48
- puts " statsd: #{statsd.server}:#{statsd.port}"
49
- end
50
- if grid.logs.forwarder?
51
- puts "logs:"
52
- puts " forwarder: #{grid.logs.forwarder}"
53
- grid.logs.opts.each do |k,v|
54
- puts " #{k}: #{v}"
55
- end
56
- end
57
- end
58
- end
@@ -1,20 +0,0 @@
1
- require_relative '../../../cli/models/grid'
2
- require_relative '../common'
3
-
4
- class Kontena::Plugin::Platform::TrustedSubnet::AddCommand < Kontena::Command
5
- include Kontena::Cli::Common
6
- include Kontena::Plugin::Platform::Common
7
-
8
- parameter "NAME", "Platform name"
9
- parameter "SUBNET", "Subnet"
10
-
11
- def execute
12
- require_platform(name)
13
-
14
- grid = client.get("grids/#{current_grid}")
15
- data = {trusted_subnets: grid['trusted_subnets'] + [self.subnet]}
16
- spinner "Adding #{subnet.colorize(:cyan)} as a trusted subnet in #{current_grid.colorize(:cyan)} platform " do
17
- client.put("grids/#{current_grid}", data)
18
- end
19
- end
20
- end
@@ -1,51 +0,0 @@
1
- require_relative '../../../cli/models/grid'
2
- require_relative '../common'
3
- require 'ipaddr'
4
-
5
- class Kontena::Plugin::Platform::TrustedSubnet::ListCommand < Kontena::Command
6
- include Kontena::Cli::Common
7
- include Kontena::Plugin::Platform::Common
8
- include Kontena::Cli::TableGenerator::Helper
9
-
10
- parameter "NAME", "Platform name"
11
-
12
- def execute
13
- require_platform(name)
14
- grid = Kontena::Cli::Models::Grid.new(client.get("grids/#{current_grid}"))
15
- if grid.trusted_subnets.size > 0
16
- nodes = client.get("grids/#{current_grid}/nodes")['nodes']
17
- else
18
- nodes = []
19
- end
20
- items = grid.trusted_subnets.map { |s|
21
- item = {
22
- 'subnet' => s
23
- }
24
- subnet = IPAddr.new(s)
25
- item['nodes'] = trusted_nodes(subnet, nodes).map { |n| n['name'] }.join(',')
26
-
27
- item
28
- }
29
-
30
- print_table(items)
31
- end
32
-
33
- # @param [IPAddr] subnet
34
- # @param [Array<Hash>] nodes
35
- def trusted_nodes(subnet, nodes)
36
- nodes.select { |n|
37
- begin
38
- n['private_ip'] && subnet.include?( IPAddr.new(n['private_ip']) )
39
- rescue => exc
40
- STDERR.puts "Failed to parse #{n['private_ip']} (#{n['name']}): #{exc.message}"
41
- end
42
- }
43
- end
44
-
45
- def fields
46
- {
47
- subnet: 'subnet',
48
- nodes: 'nodes'
49
- }
50
- end
51
- end
@@ -1,27 +0,0 @@
1
- require_relative '../../../cli/models/grid'
2
- require_relative '../common'
3
-
4
- class Kontena::Plugin::Platform::TrustedSubnet::RemoveCommand < Kontena::Command
5
- include Kontena::Cli::Common
6
- include Kontena::Plugin::Platform::Common
7
-
8
- parameter "NAME", "Platform name"
9
- parameter "SUBNET", "Subnet"
10
-
11
- option "--force", :flag, "Force remove", default: false, attribute_name: :forced
12
-
13
- def execute
14
- require_platform(name)
15
-
16
- grid = client.get("grids/#{current_grid}")
17
- confirm_command(subnet) unless forced?
18
- trusted_subnets = grid['trusted_subnets'] || []
19
- unless trusted_subnets.delete(self.subnet)
20
- exit_with_error("Platform #{name.colorize(:cyan)} does not have trusted subnet #{subnet.colorize(:cyan)}")
21
- end
22
- data = {trusted_subnets: trusted_subnets}
23
- spinner "Removing trusted subnet #{subnet.colorize(:cyan)} from #{name.colorize(:cyan)} platform " do
24
- client.put("grids/#{current_grid}", data)
25
- end
26
- end
27
- end
@@ -1,11 +0,0 @@
1
- require_relative 'common'
2
-
3
- class Kontena::Plugin::Platform::TrustedSubnetCommand < Kontena::Command
4
-
5
- subcommand ["list", "ls"], "List trusted subnets", load_subcommand('kontena/plugin/platform/trusted_subnet/list_command')
6
- subcommand ["add"], "Add trusted subnet", load_subcommand('kontena/plugin/platform/trusted_subnet/add_command')
7
- subcommand ["remove", "rm"], "Remove trusted subnet", load_subcommand('kontena/plugin/platform/trusted_subnet/remove_command')
8
-
9
- def execute
10
- end
11
- end
@@ -1,14 +0,0 @@
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,19 +0,0 @@
1
- require_relative 'platform/user_command'
2
-
3
- class Kontena::Plugin::PlatformCommand < Kontena::Command
4
- include Kontena::Plugin::Platform
5
-
6
- subcommand ['list', 'ls'], 'List platforms', load_subcommand('kontena/plugin/platform/list_command')
7
- subcommand ['use', 'switch'], 'Use/switch local scope to platform', load_subcommand('kontena/plugin/platform/use_command')
8
- subcommand 'show', 'Show platform details', load_subcommand('kontena/plugin/platform/show_command')
9
- subcommand 'create', 'Create new platform', load_subcommand('kontena/plugin/platform/create_command')
10
- subcommand ['remove', 'rm'], 'Remove platform', load_subcommand('kontena/plugin/platform/remove_command')
11
- subcommand 'audit-log', 'Show platform audit logs', load_subcommand('kontena/plugin/platform/audit_log_command')
12
- subcommand 'health', 'Show platform health', load_subcommand('kontena/plugin/platform/health_command')
13
- subcommand 'trusted-subnet', 'Trusted subnet specific commands', load_subcommand('kontena/plugin/platform/trusted_subnet_command')
14
- subcommand 'import-grid', 'Import grid as Kontena Platform', load_subcommand('kontena/plugin/platform/import_grid_command')
15
- subcommand 'user', 'User management commands', UserCommand
16
-
17
- def execute
18
- end
19
- end