manageiq-postgres_ha_admin 3.1.3 → 3.2.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yaml +49 -0
- data/.rspec +0 -1
- data/.whitesource +3 -0
- data/CHANGELOG.md +26 -7
- data/CODEOWNERS +1 -1
- data/Gemfile +7 -0
- data/README.md +1 -2
- data/lib/manageiq/postgres_ha_admin/config_handler.rb +3 -0
- data/lib/manageiq/postgres_ha_admin/failover_monitor.rb +29 -10
- data/lib/manageiq/postgres_ha_admin/logging.rb +4 -0
- data/lib/manageiq/postgres_ha_admin/server_store.rb +3 -3
- data/lib/manageiq/postgres_ha_admin/version.rb +1 -1
- data/lib/manageiq-postgres_ha_admin.rb +0 -1
- data/manageiq-postgres_ha_admin.gemspec +8 -4
- metadata +13 -24
- data/.travis.yml +0 -15
- data/lib/manageiq/postgres_ha_admin/config_handler/pglogical_config_handler.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56101e65dae001ffb46cd7694fbef68783b68e9a65acf249be6442de3bfe9946
|
4
|
+
data.tar.gz: 7168416de251ecc47a6f18b74ee670aff0e064f856f4977b9ba326251db6908e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca051fa5381377b6252a323a3f77befb7f544d155d86a5b749409a58f7af68d6d2d8cb1c248d8bea6ebbeab8f45a57b43bf87deca082f43720642b7b47f505c8
|
7
|
+
data.tar.gz: 4d32d6edb84ff1cdf9d4448fbc1239962c7b24382d31e143b8169f00156947ea6160a5e63b54647c7c94dee0e4d838320f85f1a2434ac736d7dc8019b7187cc9
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
schedule:
|
7
|
+
- cron: '0 0 * * 0'
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
ci:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby-version:
|
15
|
+
- '2.5'
|
16
|
+
- '2.6'
|
17
|
+
- '2.7'
|
18
|
+
- '3.0'
|
19
|
+
rails-version:
|
20
|
+
- '6.0'
|
21
|
+
- '6.1'
|
22
|
+
services:
|
23
|
+
postgres:
|
24
|
+
image: manageiq/postgresql:10
|
25
|
+
env:
|
26
|
+
POSTGRESQL_USER: root
|
27
|
+
POSTGRESQL_PASSWORD: smartvm
|
28
|
+
POSTGRESQL_DATABASE: vmdb_test
|
29
|
+
options: --health-cmd pg_isready --health-interval 2s --health-timeout 5s --health-retries 5
|
30
|
+
ports:
|
31
|
+
- 5432:5432
|
32
|
+
env:
|
33
|
+
PGHOST: localhost
|
34
|
+
TEST_RAILS_VERSION: ${{ matrix.rails-version }}
|
35
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
36
|
+
steps:
|
37
|
+
- uses: actions/checkout@v2
|
38
|
+
- name: Set up Ruby
|
39
|
+
uses: ruby/setup-ruby@v1
|
40
|
+
with:
|
41
|
+
ruby-version: ${{ matrix.ruby-version }}
|
42
|
+
bundler-cache: true
|
43
|
+
timeout-minutes: 30
|
44
|
+
- name: Run tests
|
45
|
+
run: bundle exec rake
|
46
|
+
- name: Report code coverage
|
47
|
+
if: ${{ github.ref == 'refs/heads/master' && matrix.ruby-version == '3.0' && matrix.rails-version == '6.1' }}
|
48
|
+
continue-on-error: true
|
49
|
+
uses: paambaati/codeclimate-action@v3.0.0
|
data/.rspec
CHANGED
data/.whitesource
ADDED
data/CHANGELOG.md
CHANGED
@@ -3,31 +3,48 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
-
## [
|
6
|
+
## [Unreleased]
|
7
|
+
|
8
|
+
## [3.2.0] - 2022-09-26
|
9
|
+
### Added
|
10
|
+
- Add simple prefix to all log lines [#38](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/38)
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- 5 minute db checks is too long, use 2 minutes [#37](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/37)
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
- Remove unused pglogical_config_handler [#35](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/35)
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
- Don't attempt a database failover without a known standby [#36](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/36)
|
20
|
+
|
21
|
+
## [3.1.4] - 2022-04-30
|
22
|
+
### Changed
|
23
|
+
- Loosen rails dependency to include rails 6.1 [#28](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/28)
|
7
24
|
|
25
|
+
## [3.1.3] - 2021-09-27
|
8
26
|
### Changed
|
9
27
|
- Loosen manageiq-password dependency to < 2 [#26](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/26)
|
10
|
-
- Update ruby versions to 2.5.8 minimum [#25](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/25)
|
28
|
+
- Update ruby versions to 2.5.8 minimum and support Ruby 3.0 [#25](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/25)
|
11
29
|
- Switch to manageiq-style [#24](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/24)
|
12
30
|
|
13
31
|
## [3.1.2] - 2020-12-21
|
32
|
+
### Changed
|
14
33
|
- Allow for Rails 6.0 [#23](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/23)
|
15
34
|
|
16
35
|
## [3.1.1] - 2019-12-12
|
36
|
+
### Changed
|
17
37
|
- Remove the dependency on linux_admin [#19](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/19)
|
18
38
|
|
19
39
|
## [3.1.0] - 2019-05-09
|
20
|
-
|
21
40
|
### Added
|
22
41
|
- Add a logical replication config handler [#17](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/17)
|
23
42
|
|
24
43
|
## [3.0.1] - 2019-03-19
|
25
|
-
|
26
44
|
### Changed
|
27
45
|
- Remove references to MiqPassword [#15](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/15)
|
28
46
|
|
29
47
|
## [3.0.0] - 2018-09-05
|
30
|
-
|
31
48
|
### Added
|
32
49
|
- Allow users of the gem to specify a logger object [#7](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/7)
|
33
50
|
|
@@ -37,7 +54,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
37
54
|
- Make failover monitor generic [#10](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/10)
|
38
55
|
|
39
56
|
## [2.0.0] - 2018-08-01
|
40
|
-
|
41
57
|
### Added
|
42
58
|
- Add pg-dsn_parser to the gemspec [#5](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/5)
|
43
59
|
- Add postgresql addon for travis [#6](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/6)
|
@@ -45,7 +61,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
45
61
|
### Changed
|
46
62
|
- Make changes for upgrading repmgr to version 4 [#4](https://github.com/ManageIQ/manageiq-postgres_ha_admin/pull/4)
|
47
63
|
|
48
|
-
[Unreleased]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.
|
64
|
+
[Unreleased]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.2.0...master
|
65
|
+
[3.2.0]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.4...v3.2.0
|
66
|
+
[3.1.4]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.3...v3.1.4
|
67
|
+
[3.1.3]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.2...v3.1.3
|
49
68
|
[3.1.2]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.1...v3.1.2
|
50
69
|
[3.1.1]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.1.0...v3.1.1
|
51
70
|
[3.1.0]: https://github.com/ManageIQ/manageiq-postgres_ha_admin/compare/v3.0.1...v3.1.0
|
data/CODEOWNERS
CHANGED
@@ -1 +1 @@
|
|
1
|
-
* @
|
1
|
+
* @Fryguy
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# ManageIQ::PostgresHaAdmin
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/manageiq-postgres_ha_admin)
|
4
|
-
[](https://github.com/ManageIQ/manageiq-postgres_ha_admin/actions/workflows/ci.yaml)
|
5
5
|
[](https://codeclimate.com/github/ManageIQ/manageiq-postgres_ha_admin)
|
6
6
|
[](https://codeclimate.com/github/ManageIQ/manageiq-postgres_ha_admin/coverage)
|
7
|
-
[](https://hakiri.io/github/ManageIQ/manageiq-postgres_ha_admin/master)
|
8
7
|
|
9
8
|
[](https://gitter.im/ManageIQ/manageiq-postgres_ha_admin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
10
9
|
|
@@ -27,9 +27,12 @@ module PostgresHaAdmin
|
|
27
27
|
@before_failover_cb&.call
|
28
28
|
end
|
29
29
|
|
30
|
+
# Upon successful failover
|
30
31
|
def do_after_failover(new_primary_conn_info)
|
31
32
|
@after_failover_cb&.call(new_primary_conn_info)
|
32
33
|
end
|
34
|
+
|
35
|
+
# If needed, we can add an unsuccessful failover hook
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
@@ -7,7 +7,7 @@ module PostgresHaAdmin
|
|
7
7
|
include Logging
|
8
8
|
|
9
9
|
FAILOVER_ATTEMPTS = 10
|
10
|
-
DB_CHECK_FREQUENCY =
|
10
|
+
DB_CHECK_FREQUENCY = 120
|
11
11
|
FAILOVER_CHECK_FREQUENCY = 60
|
12
12
|
attr_accessor :failover_attempts, :db_check_frequency, :failover_check_frequency
|
13
13
|
attr_reader :config_handlers
|
@@ -31,17 +31,20 @@ module PostgresHaAdmin
|
|
31
31
|
next
|
32
32
|
end
|
33
33
|
|
34
|
-
logger.error("Primary Database is not available for #{handler.name}. Starting to execute failover...")
|
34
|
+
logger.error("#{log_prefix(__callee__)} Primary Database is not available for #{handler.name}. Starting to execute failover...")
|
35
35
|
handler.do_before_failover
|
36
36
|
|
37
37
|
new_conn_info = execute_failover(handler, server_store)
|
38
|
+
|
38
39
|
if new_conn_info
|
40
|
+
# Upon success, we pass a connection hash
|
39
41
|
handler.do_after_failover(new_conn_info)
|
40
42
|
else
|
41
|
-
|
43
|
+
# Add failover_failed hook if we have a use case in the future
|
44
|
+
logger.error("#{log_prefix(__callee__)} Failover failed")
|
42
45
|
end
|
43
46
|
rescue => e
|
44
|
-
logger.error("Received #{e.class} error while monitoring #{handler.name}: #{e.message}")
|
47
|
+
logger.error("#{log_prefix(__callee__)} Received #{e.class} error while monitoring #{handler.name}: #{e.message}")
|
45
48
|
logger.error(e.backtrace)
|
46
49
|
end
|
47
50
|
end
|
@@ -52,7 +55,7 @@ module PostgresHaAdmin
|
|
52
55
|
begin
|
53
56
|
monitor
|
54
57
|
rescue => err
|
55
|
-
logger.error("#{err.class}: #{err}")
|
58
|
+
logger.error("#{log_prefix(__callee__)} #{err.class}: #{err}")
|
56
59
|
logger.error(err.backtrace.join("\n"))
|
57
60
|
end
|
58
61
|
sleep(db_check_frequency)
|
@@ -72,21 +75,37 @@ module PostgresHaAdmin
|
|
72
75
|
begin
|
73
76
|
ha_admin_yml = YAML.load_file(ha_admin_yml_file) if File.exist?(ha_admin_yml_file)
|
74
77
|
rescue SystemCallError, IOError => err
|
75
|
-
logger.error("#{err.class}: #{err}")
|
76
|
-
logger.info("File not loaded: #{ha_admin_yml_file}. Default settings for failover will be used.")
|
78
|
+
logger.error("#{log_prefix(__callee__)} #{err.class}: #{err}")
|
79
|
+
logger.info("#{log_prefix(__callee__)} File not loaded: #{ha_admin_yml_file}. Default settings for failover will be used.")
|
77
80
|
end
|
78
81
|
@failover_attempts = ha_admin_yml['failover_attempts'] || FAILOVER_ATTEMPTS
|
79
82
|
@db_check_frequency = ha_admin_yml['db_check_frequency'] || DB_CHECK_FREQUENCY
|
80
83
|
@failover_check_frequency = ha_admin_yml['failover_check_frequency'] || FAILOVER_CHECK_FREQUENCY
|
81
|
-
logger.info("FAILOVER_ATTEMPTS=#{@failover_attempts} DB_CHECK_FREQUENCY=#{@db_check_frequency} FAILOVER_CHECK_FREQUENCY=#{@failover_check_frequency}")
|
84
|
+
logger.info("#{log_prefix(__callee__)} FAILOVER_ATTEMPTS=#{@failover_attempts} DB_CHECK_FREQUENCY=#{@db_check_frequency} FAILOVER_CHECK_FREQUENCY=#{@failover_check_frequency}")
|
85
|
+
end
|
86
|
+
|
87
|
+
def any_known_standby?(handler, server_store)
|
88
|
+
current_host = handler.read[:host]
|
89
|
+
server_store.servers.any? do |server|
|
90
|
+
server[:host] != current_host && server[:type] == "standby"
|
91
|
+
end
|
82
92
|
end
|
83
93
|
|
84
94
|
def execute_failover(handler, server_store)
|
95
|
+
# TODO: Instead of returning false, we should raise:
|
96
|
+
# "No active standby"
|
97
|
+
# "Standby in recovery"
|
98
|
+
# "Exhausted all failover retry attempts" exceptions
|
99
|
+
unless any_known_standby?(handler, server_store)
|
100
|
+
logger.error("#{log_prefix(__callee__)} Cannot attempt failover without a known active standby. Please verify the database.yml and ensure the database is started.")
|
101
|
+
return false
|
102
|
+
end
|
103
|
+
|
85
104
|
failover_attempts.times do
|
86
105
|
with_each_standby_connection(handler, server_store) do |connection, params|
|
87
106
|
next if database_in_recovery?(connection)
|
88
107
|
next unless server_store.host_is_primary?(params[:host], connection)
|
89
|
-
logger.info("Failing over to server using conninfo: #{params.reject { |k, _v| k == :password }}")
|
108
|
+
logger.info("#{log_prefix(__callee__)} Failing over to server using conninfo: #{params.reject { |k, _v| k == :password }}")
|
90
109
|
server_store.update_servers(connection)
|
91
110
|
handler.write(params)
|
92
111
|
return params
|
@@ -111,7 +130,7 @@ module PostgresHaAdmin
|
|
111
130
|
def pg_connection(params)
|
112
131
|
PG::Connection.open(params)
|
113
132
|
rescue PG::Error => e
|
114
|
-
logger.error("Failed to establish PG connection: #{e.message}")
|
133
|
+
logger.error("#{log_prefix(__callee__)} Failed to establish PG connection: #{e.message}")
|
115
134
|
nil
|
116
135
|
end
|
117
136
|
|
@@ -25,11 +25,11 @@ module PostgresHaAdmin
|
|
25
25
|
def update_servers(connection)
|
26
26
|
new_servers = query_repmgr(connection)
|
27
27
|
if servers_changed?(new_servers)
|
28
|
-
logger.info("Updating servers cache to #{new_servers}")
|
28
|
+
logger.info("#{log_prefix(__callee__)} Updating servers cache to #{new_servers}")
|
29
29
|
@servers = new_servers
|
30
30
|
end
|
31
31
|
rescue IOError => err
|
32
|
-
logger.error("#{err.class}: #{err}")
|
32
|
+
logger.error("#{log_prefix(__callee__)} #{err.class}: #{err}")
|
33
33
|
logger.error(err.backtrace.join("\n"))
|
34
34
|
end
|
35
35
|
|
@@ -59,7 +59,7 @@ module PostgresHaAdmin
|
|
59
59
|
db_result.clear
|
60
60
|
result
|
61
61
|
rescue PG::Error => err
|
62
|
-
logger.error("#{err.class}: #{err}")
|
62
|
+
logger.error("#{log_prefix(__callee__)} #{err.class}: #{err}")
|
63
63
|
logger.error(err.backtrace.join("\n"))
|
64
64
|
result
|
65
65
|
end
|
@@ -8,7 +8,6 @@ require 'manageiq/postgres_ha_admin/failover_monitor'
|
|
8
8
|
|
9
9
|
require 'manageiq/postgres_ha_admin/config_handler'
|
10
10
|
require 'manageiq/postgres_ha_admin/config_handler/rails_config_handler'
|
11
|
-
require 'manageiq/postgres_ha_admin/config_handler/pglogical_config_handler'
|
12
11
|
require 'manageiq/postgres_ha_admin/config_handler/logical_replication_config_handler'
|
13
12
|
|
14
13
|
module ManageIQ
|
@@ -16,22 +16,26 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
17
|
f.match(%r{^(test|spec|features)/})
|
18
18
|
end
|
19
|
+
spec.metadata = {
|
20
|
+
"changelog_uri" => "https://github.com/ManageIQ/manageiq-postgres_ha_admin/blob/master/CHANGELOG.md",
|
21
|
+
"source_code_uri" => "https://github.com/ManageIQ/manageiq-postgres_ha_admin/",
|
22
|
+
"bug_tracker_uri" => "https://github.com/ManageIQ/manageiq-postgres_ha_admin/issues"
|
23
|
+
}
|
19
24
|
spec.bindir = "bin"
|
20
25
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
26
|
spec.require_paths = ["lib"]
|
22
27
|
|
23
28
|
spec.required_ruby_version = ">= 2.5.8"
|
24
29
|
|
25
|
-
spec.add_runtime_dependency "activesupport", ">=5.0", "<
|
30
|
+
spec.add_runtime_dependency "activesupport", ">=5.0", "< 7.0"
|
26
31
|
spec.add_runtime_dependency "awesome_spawn", "~> 1.4"
|
27
32
|
spec.add_runtime_dependency "manageiq-password", "< 2"
|
28
33
|
spec.add_runtime_dependency "pg"
|
29
34
|
spec.add_runtime_dependency "pg-dsn_parser", "~> 0.1"
|
30
35
|
|
31
36
|
spec.add_development_dependency "bundler"
|
32
|
-
spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0.0"
|
33
37
|
spec.add_development_dependency "manageiq-style"
|
34
38
|
spec.add_development_dependency "rake"
|
35
|
-
spec.add_development_dependency "rspec",
|
36
|
-
spec.add_development_dependency "simplecov"
|
39
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
40
|
+
spec.add_development_dependency "simplecov", ">= 0.21.2"
|
37
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manageiq-postgres_ha_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ManageIQ Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '5.0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '7.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '5.0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '7.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: awesome_spawn
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,20 +100,6 @@ dependencies:
|
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: codeclimate-test-reporter
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 1.0.0
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: 1.0.0
|
117
103
|
- !ruby/object:Gem::Dependency
|
118
104
|
name: manageiq-style
|
119
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,14 +148,14 @@ dependencies:
|
|
162
148
|
requirements:
|
163
149
|
- - ">="
|
164
150
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
151
|
+
version: 0.21.2
|
166
152
|
type: :development
|
167
153
|
prerelease: false
|
168
154
|
version_requirements: !ruby/object:Gem::Requirement
|
169
155
|
requirements:
|
170
156
|
- - ">="
|
171
157
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
158
|
+
version: 0.21.2
|
173
159
|
description: ManageIQ Postgres H.A. Admin
|
174
160
|
email:
|
175
161
|
executables: []
|
@@ -177,13 +163,14 @@ extensions: []
|
|
177
163
|
extra_rdoc_files: []
|
178
164
|
files:
|
179
165
|
- ".codeclimate.yml"
|
166
|
+
- ".github/workflows/ci.yaml"
|
180
167
|
- ".gitignore"
|
181
168
|
- ".rspec"
|
182
169
|
- ".rspec_ci"
|
183
170
|
- ".rubocop.yml"
|
184
171
|
- ".rubocop_cc.yml"
|
185
172
|
- ".rubocop_local.yml"
|
186
|
-
- ".
|
173
|
+
- ".whitesource"
|
187
174
|
- CHANGELOG.md
|
188
175
|
- CODEOWNERS
|
189
176
|
- Gemfile
|
@@ -193,7 +180,6 @@ files:
|
|
193
180
|
- lib/manageiq-postgres_ha_admin.rb
|
194
181
|
- lib/manageiq/postgres_ha_admin/config_handler.rb
|
195
182
|
- lib/manageiq/postgres_ha_admin/config_handler/logical_replication_config_handler.rb
|
196
|
-
- lib/manageiq/postgres_ha_admin/config_handler/pglogical_config_handler.rb
|
197
183
|
- lib/manageiq/postgres_ha_admin/config_handler/rails_config_handler.rb
|
198
184
|
- lib/manageiq/postgres_ha_admin/failover_monitor.rb
|
199
185
|
- lib/manageiq/postgres_ha_admin/logging.rb
|
@@ -204,7 +190,10 @@ files:
|
|
204
190
|
homepage: https://github.com/ManageIQ/manageiq-postgres_ha_admin
|
205
191
|
licenses:
|
206
192
|
- Apache-2.0
|
207
|
-
metadata:
|
193
|
+
metadata:
|
194
|
+
changelog_uri: https://github.com/ManageIQ/manageiq-postgres_ha_admin/blob/master/CHANGELOG.md
|
195
|
+
source_code_uri: https://github.com/ManageIQ/manageiq-postgres_ha_admin/
|
196
|
+
bug_tracker_uri: https://github.com/ManageIQ/manageiq-postgres_ha_admin/issues
|
208
197
|
post_install_message:
|
209
198
|
rdoc_options: []
|
210
199
|
require_paths:
|
@@ -220,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
220
209
|
- !ruby/object:Gem::Version
|
221
210
|
version: '0'
|
222
211
|
requirements: []
|
223
|
-
rubygems_version: 3.
|
212
|
+
rubygems_version: 3.3.18
|
224
213
|
signing_key:
|
225
214
|
specification_version: 4
|
226
215
|
summary: ManageIQ Postgres H.A. Admin
|
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.5.8
|
4
|
-
- 2.6.6
|
5
|
-
- 2.7.2
|
6
|
-
- 3.0.0
|
7
|
-
cache: bundler
|
8
|
-
env:
|
9
|
-
global:
|
10
|
-
- RUBY_GC_HEAP_GROWTH_MAX_SLOTS=300000
|
11
|
-
- RUBY_GC_HEAP_INIT_SLOTS=600000
|
12
|
-
- RUBY_GC_HEAP_GROWTH_FACTOR=1.25
|
13
|
-
addons:
|
14
|
-
postgresql: '10'
|
15
|
-
after_script: bundle exec codeclimate-test-reporter
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'pg'
|
2
|
-
require 'pg/dsn_parser'
|
3
|
-
|
4
|
-
module ManageIQ
|
5
|
-
module PostgresHaAdmin
|
6
|
-
class PglogicalConfigHandler < ConfigHandler
|
7
|
-
attr_reader :subscription, :conn_info
|
8
|
-
|
9
|
-
def initialize(options = {})
|
10
|
-
@subscription = options[:subscription]
|
11
|
-
@conn_info = options[:conn_info]
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
"pglogical subscription #{subscription} Config Handler"
|
16
|
-
end
|
17
|
-
|
18
|
-
def read
|
19
|
-
conn = PG::Connection.open(@conn_info)
|
20
|
-
dsn = conn.exec_params(<<~SQL, [@subscription]).first["if_dsn"]
|
21
|
-
SELECT if_dsn
|
22
|
-
FROM pglogical.subscription s
|
23
|
-
JOIN pglogical.node_interface i
|
24
|
-
ON s.sub_origin_if = i.if_id
|
25
|
-
WHERE s.sub_name = $1
|
26
|
-
SQL
|
27
|
-
PG::DSNParser.new.parse(dsn)
|
28
|
-
end
|
29
|
-
|
30
|
-
def write(_params)
|
31
|
-
# Nothing to do here as the expectation is that the user will
|
32
|
-
# remove and re-add the subscription in the after failover callback
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|