neetodeploy 1.1.10 → 1.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8a3d1d307a336febc75e845090520f3b9682fccb51d37f1d916b7e687f60552f
4
- data.tar.gz: 29f7510011934930720d507581cfffa69ea51eeca7c338da3cab3bd496b7a981
3
+ metadata.gz: 2a9d74525f7507987d4d16ea45b9d73d47d0242e3b8b788c7e90d4992171a2a3
4
+ data.tar.gz: 2206225d47f369d0c5729a978e53dcfcdec754c3130c49a9e2fe5b852fda5e77
5
5
  SHA512:
6
- metadata.gz: e1afa2622a80ca5398335fbc166e2ad018be68e679d2d62ab837dca25e2a33a5358de3f1ce3a185d0641b6edf814acc13238a8258f193d3de1e78d73163ba9e2
7
- data.tar.gz: 2f5c3ada11bf0ade6600c2e3af217e4b2203ea53e13d7cca543872042e95b334b8698d1b328971c24988cdc57c3b239702db9e6a33faae9e6478be0f4fb659a7
6
+ metadata.gz: 2d55635297621fc121cddff62a197d37e34e81693ffadd52ba004d0bc1f42a8d3718c59a657929c819dc7d465ee4d9adf989c88e95b77dbf39429c2703a66da9
7
+ data.tar.gz: 0eaa2ea8e1c1d055f988be41d0bd8ced8c9ede8002813a66f6eb4c82eded065ee77402af7121852bf747c8e5c896807d588b99332fc2b632ef0ee4295edc4f38
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neetodeploy (1.1.10)
4
+ neetodeploy (1.1.12)
5
5
  colorize
6
6
  dotenv (~> 2.8.1)
7
7
  httparty (~> 0.21.0)
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 :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
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 :app_name, type: :string, aliases: "-a", required: true, desc: "App name"
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
@@ -16,7 +16,7 @@ module NeetoDeploy
16
16
 
17
17
  def initialize(options)
18
18
  super()
19
- @addon_name = options[:addon_name]
19
+ @addon_name = options[:addon]
20
20
  end
21
21
 
22
22
  def run
@@ -16,7 +16,7 @@ module NeetoDeploy
16
16
 
17
17
  def initialize(options)
18
18
  super()
19
- @app_name = options[:app_name]
19
+ @app_name = options[:app]
20
20
  end
21
21
 
22
22
  def run
@@ -5,80 +5,56 @@ require "thor"
5
5
  module NeetoDeploy
6
6
  class CLI
7
7
  class DynoConsoleManager < Base
8
- DYNO_CONSOLE_MANAGER_URL = "wss://neeto-deploy-lc.neetodeployapp.com"
8
+ attr_reader :addon_name, :kind
9
9
 
10
- def initialize
10
+ def initialize(addon_name)
11
11
  super()
12
- @prompt = ""
12
+ @addon_name = addon_name
13
13
  end
14
14
 
15
- def run_console
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
- send_websocket_request
21
- define_websocket_blocks
20
+ start_console
21
+ connection_cleanup_callback
22
22
  end
23
23
 
24
24
  private
25
25
 
26
- def start_spinner
27
- @spinner = TTY::Spinner.new("[:spinner] Connecting to #{@instance_name}", format: :classic)
28
- @spinner.auto_spin
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 define_websocket_blocks
32
- stop_spinner = lambda do
33
- @spinner.stop unless @connection_established
34
- end
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
- @ws.on :close do |e|
59
- puts e
60
- exit 1
61
- end
38
+ execute_console(pod_name, console_access_token, container_name, kind, database_url)
39
+ end
62
40
 
63
- @ws.on :error do |e|
64
- puts e
65
- puts "MyserverBackend>> Close entered. Last error:#{$!.class}:#{$!.to_s};Module:#{$0};"
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
- trap("SIGINT") do
71
- Thread.new { @ws.send "4" }
72
- end
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
- loop do
75
- sleep 0.1
76
- input = Readline.readline(@prompt, true)
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 connection_cleanup
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
- system("#{console_executable_path} #{pod_name} #{console_access_token}")
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
@@ -13,7 +13,7 @@ module NeetoDeploy
13
13
 
14
14
  def session_login_url(org_subdomain)
15
15
  org_url = NEETO_DEPLOY_HOST.sub("app.", "#{org_subdomain}.")
16
- "#{org_url}/cli/login?token=#{login_token}"
16
+ "#{org_url}/admin/cli/login?token=#{login_token}"
17
17
  end
18
18
 
19
19
  def session_login_status_url
@@ -6,12 +6,11 @@ module NeetoDeploy
6
6
  class CLI
7
7
  module Pg
8
8
  class Commands < Thor
9
- # desc "cli", "Connect to postgresql console"
10
- # option :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
11
-
12
- # def cli
13
- # Console.new(options).run
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
- attr_reader :addon_name
16
-
17
- def initialize(options)
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(addon_name)
8
- "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/#{addon_name}/console_session"
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 :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
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 :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
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 :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
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
@@ -14,6 +14,10 @@ module NeetoDeploy
14
14
  def available_configs_to_edit
15
15
  AVAILABLE_REDIS_CONFIGS_TO_EDIT
16
16
  end
17
+
18
+ def console_session_base_url
19
+ "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/console_sessions"
20
+ end
17
21
  end
18
22
  end
19
23
  end
@@ -15,7 +15,7 @@ module NeetoDeploy
15
15
 
16
16
  def initialize(options)
17
17
  super()
18
- @addon_name = options[:addon_name]
18
+ @addon_name = options[:addon]
19
19
  @key = options[:key]
20
20
  end
21
21
 
@@ -15,7 +15,7 @@ module NeetoDeploy
15
15
 
16
16
  def initialize(options)
17
17
  super()
18
- @addon_name = options[:addon_name]
18
+ @addon_name = options[:addon]
19
19
  end
20
20
 
21
21
  def run
@@ -16,7 +16,7 @@ module NeetoDeploy
16
16
 
17
17
  def initialize(options)
18
18
  super()
19
- @addon_name = options[:addon_name]
19
+ @addon_name = options[:addon]
20
20
  @key = options[:key]
21
21
  @value = options[:value]
22
22
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NeetoDeploy
4
- VERSION = "1.1.10"
4
+ VERSION = "1.1.12"
5
5
  CLI_API_VERSION = "v1"
6
6
  end
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.10
4
+ version: 1.1.12
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-07 00:00:00.000000000 Z
11
+ date: 2024-10-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