neetodeploy 1.1.10 → 1.1.11
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/Gemfile.lock +1 -1
- data/exe/console +0 -0
- data/lib/neeto_deploy/cli/addon/commands.rb +2 -2
- data/lib/neeto_deploy/cli/addon/info.rb +1 -1
- data/lib/neeto_deploy/cli/addon/scheduled_exports_settings.rb +1 -1
- data/lib/neeto_deploy/cli/dyno_console_manager.rb +31 -55
- data/lib/neeto_deploy/cli/exec/base.rb +2 -1
- data/lib/neeto_deploy/cli/pg/commands.rb +5 -6
- data/lib/neeto_deploy/cli/pg/console.rb +3 -26
- data/lib/neeto_deploy/cli/pg/constants.rb +2 -2
- data/lib/neeto_deploy/cli/redis/commands.rb +10 -3
- data/lib/neeto_deploy/cli/redis/console.rb +22 -0
- data/lib/neeto_deploy/cli/redis/constants.rb +4 -0
- data/lib/neeto_deploy/cli/redis/get.rb +1 -1
- data/lib/neeto_deploy/cli/redis/reset_stats.rb +1 -1
- data/lib/neeto_deploy/cli/redis/set.rb +1 -1
- data/lib/neeto_deploy/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 991f65ca44d321dc7580b71263b9436176095769a7f069f55c2edadb6f5f2532
|
4
|
+
data.tar.gz: d614216531a9ef2a3c500a3a4e54cb9a72b34144607e4ea5f0ce8c6e1afabd22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21eea9fe929b0bb2176b83ef0f547912bd2824aa3fbc28a4757a9e01cbb19ad56d7b9f658482318ee65f7c57d587d98c47abc74eae87127bd33375af46973763
|
7
|
+
data.tar.gz: 503ce18f29dc4a0bd9f4263cbd09b7f314aaf2bc3a5e95fba63b5ff1c2ec0c9193c90d59ab3625c9e77b03d659da3dd67bceabb7ed56d740491475361807f535
|
data/Gemfile.lock
CHANGED
data/exe/console
CHANGED
Binary file
|
@@ -9,13 +9,13 @@ module NeetoDeploy
|
|
9
9
|
module Addon
|
10
10
|
class Commands < Thor
|
11
11
|
desc "info", "Get addon informations"
|
12
|
-
option :
|
12
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
13
13
|
def info
|
14
14
|
Info.new(options).run
|
15
15
|
end
|
16
16
|
|
17
17
|
desc "scheduled_exports_enabled", "Check whether scheduled exports is enabled for an app"
|
18
|
-
option :
|
18
|
+
option :app, type: :string, aliases: "-a", required: true, desc: "App name"
|
19
19
|
def scheduled_exports_enabled
|
20
20
|
ScheduledExportsSettings.new(options).run
|
21
21
|
end
|
@@ -5,80 +5,56 @@ require "thor"
|
|
5
5
|
module NeetoDeploy
|
6
6
|
class CLI
|
7
7
|
class DynoConsoleManager < Base
|
8
|
-
|
8
|
+
attr_reader :addon_name, :kind
|
9
9
|
|
10
|
-
def initialize
|
10
|
+
def initialize(addon_name)
|
11
11
|
super()
|
12
|
-
@
|
12
|
+
@addon_name = addon_name
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
15
|
+
def process!
|
16
16
|
start_spinner
|
17
17
|
send_console_session_request
|
18
|
-
ui.error(response) and return unless @response.success?
|
18
|
+
ui.error("\n#{@response.body}") and return unless @response.success?
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
start_console
|
21
|
+
connection_cleanup_callback
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
26
|
+
def console_executable_path
|
27
|
+
gem_spec = Gem::Specification.find_by_name("neetodeploy")
|
28
|
+
gem_dir = gem_spec.gem_dir
|
29
|
+
executable_path = File.join(gem_dir, "exe", "console")
|
29
30
|
end
|
30
31
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
cleanup = lambda do
|
37
|
-
connection_cleanup
|
38
|
-
end
|
39
|
-
|
40
|
-
@ws.on :message do |msg|
|
41
|
-
message = msg.data
|
42
|
-
if message.to_s.eql?("{\"exitCode\":0,\"signal\":0}")
|
43
|
-
cleanup.call
|
44
|
-
exit 0
|
45
|
-
end
|
46
|
-
cmd = message[0]
|
47
|
-
if cmd == "1"
|
48
|
-
extracted_message = message.delete_prefix("1")
|
49
|
-
stop_spinner.call && @connection_established = true unless extracted_message == ""
|
50
|
-
@prompt = "\u001b[2K\u001b[0G#{extracted_message.split("\r\n").last}"
|
51
|
-
print extracted_message
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
@ws.on :open do
|
56
|
-
end
|
32
|
+
def start_console
|
33
|
+
console_access_token = @response.parsed_response["console_access_token"]
|
34
|
+
pod_name = @response.parsed_response["pod_name"]
|
35
|
+
database_url = @response.parsed_response["database_url"]
|
36
|
+
container_name = @response.parsed_response["container_name"]
|
57
37
|
|
58
|
-
|
59
|
-
|
60
|
-
exit 1
|
61
|
-
end
|
38
|
+
execute_console(pod_name, console_access_token, container_name, kind, database_url)
|
39
|
+
end
|
62
40
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
$@.each { |backtrace| puts backtrace }
|
67
|
-
exit 1
|
68
|
-
end
|
41
|
+
def execute_console(pod_name, console_access_token, container_name, kind, database_url)
|
42
|
+
system("#{console_executable_path} -podname #{pod_name} -token #{console_access_token} -kind #{kind} -container #{container_name} -url #{database_url}")
|
43
|
+
end
|
69
44
|
|
70
|
-
|
71
|
-
|
72
|
-
|
45
|
+
def send_console_session_request
|
46
|
+
@response = send_post_request(console_session_base_url, { addon_name:, kind: })
|
47
|
+
@spinner.stop
|
48
|
+
end
|
73
49
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
@ws.send "1" + input
|
78
|
-
end
|
50
|
+
def connection_cleanup_callback
|
51
|
+
url = "#{console_session_base_url}/#{addon_name}"
|
52
|
+
send_delete_request(url, { pubsub_token: @pubsub_token })
|
79
53
|
end
|
80
54
|
|
81
|
-
def
|
55
|
+
def start_spinner
|
56
|
+
@spinner = TTY::Spinner.new("Setting up dyno [:spinner]", format: :classic)
|
57
|
+
@spinner.auto_spin
|
82
58
|
end
|
83
59
|
end
|
84
60
|
end
|
@@ -41,7 +41,8 @@ module NeetoDeploy
|
|
41
41
|
@pubsub_token = @response.parsed_response["console_pubsub_token"]
|
42
42
|
console_access_token = @response.parsed_response["console_access_token"]
|
43
43
|
pod_name = "#{app_name}-#{@pubsub_token}-console-deployment"
|
44
|
-
|
44
|
+
container_name = "#{app_name}-#{@pubsub_token}-console"
|
45
|
+
system("#{console_executable_path} -podname #{pod_name} -token #{console_access_token} -container #{container_name}")
|
45
46
|
end
|
46
47
|
|
47
48
|
def send_console_session_request
|
@@ -6,12 +6,11 @@ module NeetoDeploy
|
|
6
6
|
class CLI
|
7
7
|
module Pg
|
8
8
|
class Commands < Thor
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# end
|
9
|
+
desc "cli", "Connect to postgresql console"
|
10
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
11
|
+
def cli
|
12
|
+
Console.new(options[:addon]).process!
|
13
|
+
end
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
@@ -12,33 +12,10 @@ module NeetoDeploy
|
|
12
12
|
include Constants
|
13
13
|
include Session
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
super()
|
19
|
-
@addon_name = options[:addon_name]
|
20
|
-
@instance_name = options[:addon_name]
|
21
|
-
@connection_established = false
|
22
|
-
end
|
23
|
-
|
24
|
-
def run
|
25
|
-
run_console
|
15
|
+
def initialize(addon_name)
|
16
|
+
super(addon_name)
|
17
|
+
@kind = "neetodeploy-postgresql"
|
26
18
|
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def send_console_session_request
|
31
|
-
@response = send_post_request(console_session_base_url(addon_name), {})
|
32
|
-
end
|
33
|
-
|
34
|
-
def send_websocket_request
|
35
|
-
console_token = @response.parsed_response["console_token"]
|
36
|
-
database_url = @response.parsed_response["url"]
|
37
|
-
deployment_name = @response.parsed_response["internal_name"]
|
38
|
-
app_name = @response.parsed_response["app_name"]
|
39
|
-
|
40
|
-
@ws = WebSocket::Client::Simple.connect "#{DYNO_CONSOLE_MANAGER_URL}/cli_console?app_name=#{app_name}&deployment_name=#{deployment_name}&console_token=#{console_token}&database_url=#{database_url}&kind=postgres"
|
41
|
-
end
|
42
19
|
end
|
43
20
|
end
|
44
21
|
end
|
@@ -4,8 +4,8 @@ module NeetoDeploy
|
|
4
4
|
class CLI
|
5
5
|
module Pg
|
6
6
|
module Constants
|
7
|
-
def console_session_base_url
|
8
|
-
"#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons
|
7
|
+
def console_session_base_url
|
8
|
+
"#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/console_sessions"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -4,13 +4,14 @@ require "thor"
|
|
4
4
|
require_relative "./set"
|
5
5
|
require_relative "./get"
|
6
6
|
require_relative "./reset_stats"
|
7
|
+
require_relative "./console"
|
7
8
|
|
8
9
|
module NeetoDeploy
|
9
10
|
class CLI
|
10
11
|
module Redis
|
11
12
|
class Commands < Thor
|
12
13
|
desc "set", "Set redis config"
|
13
|
-
option :
|
14
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
14
15
|
option :key, type: :string, aliases: "-k", required: true, desc: "CONFIG name"
|
15
16
|
option :value, type: :string, aliases: "-v", required: true, desc: "New value for the CONFIG"
|
16
17
|
|
@@ -19,18 +20,24 @@ module NeetoDeploy
|
|
19
20
|
end
|
20
21
|
|
21
22
|
desc "get", "Get redis config"
|
22
|
-
option :
|
23
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
23
24
|
option :key, type: :string, aliases: "-k", required: true, desc: "CONFIG name"
|
24
25
|
def get
|
25
26
|
Get.new(options).run
|
26
27
|
end
|
27
28
|
|
28
29
|
desc "reset-stats", "Resets the statistics of the Redis instance"
|
29
|
-
option :
|
30
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
30
31
|
def reset_stats
|
31
32
|
ResetStats.new(options).run
|
32
33
|
end
|
33
34
|
|
35
|
+
desc "cli", "Connect to redis console"
|
36
|
+
option :addon, type: :string, aliases: "-n", required: true, desc: "Addon name"
|
37
|
+
def cli
|
38
|
+
Console.new(options[:addon]).process!
|
39
|
+
end
|
40
|
+
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "thor"
|
4
|
+
require_relative "../session"
|
5
|
+
require_relative "./constants"
|
6
|
+
require_relative "../dyno_console_manager"
|
7
|
+
|
8
|
+
module NeetoDeploy
|
9
|
+
class CLI
|
10
|
+
module Redis
|
11
|
+
class Console < CLI::DynoConsoleManager
|
12
|
+
include Constants
|
13
|
+
include Session
|
14
|
+
|
15
|
+
def initialize(addon_name)
|
16
|
+
super(addon_name)
|
17
|
+
@kind = "neetodeploy-redis"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/neeto_deploy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neetodeploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Subin Siby
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- lib/neeto_deploy/cli/pg/console.rb
|
162
162
|
- lib/neeto_deploy/cli/pg/constants.rb
|
163
163
|
- lib/neeto_deploy/cli/redis/commands.rb
|
164
|
+
- lib/neeto_deploy/cli/redis/console.rb
|
164
165
|
- lib/neeto_deploy/cli/redis/constants.rb
|
165
166
|
- lib/neeto_deploy/cli/redis/get.rb
|
166
167
|
- lib/neeto_deploy/cli/redis/reset_stats.rb
|