Skip to content

Commit fc9406d

Browse files
committed
Add a base implementation for new MaxScale repository parser (refs #29314)
1 parent da3c529 commit fc9406d

18 files changed

+390
-208
lines changed

.rubocop.yml

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
AllCops:
22
TargetRubyVersion: 2.6
3+
NewCops: enable
34

45
Layout/HeredocIndentation:
56
Enabled: false
@@ -8,7 +9,7 @@ Metrics/AbcSize:
89
Enabled: false
910

1011
Metrics/BlockLength:
11-
ExcludedMethods:
12+
IgnoredMethods:
1213
- context
1314
- describe
1415

@@ -36,3 +37,5 @@ Style/MultilineBlockChain:
3637
Style/NegatedIf:
3738
Enabled: false
3839

40+
Style/AccessorGrouping:
41+
EnforcedStyle: separated

Gemfile.lock

+18-20
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@ GEM
44
addressable (2.8.0)
55
public_suffix (>= 2.0.2, < 5.0)
66
ast (2.4.2)
7-
aws-eventstream (~> 1, >= 1.0.2)
8-
aws-partitions (~> 1, >= 1.239.0)
9-
aws-sigv4 (~> 1.1)
10-
jmespath (~> 1.0)
11-
aws-eventstream (1.1.1)
12-
aws-partitions (1.448.0)
7+
aws-eventstream (1.2.0)
8+
aws-partitions (1.537.0)
139
aws-sdk-core (3.114.0)
1410
aws-eventstream (~> 1, >= 1.0.2)
1511
aws-partitions (~> 1, >= 1.239.0)
@@ -18,7 +14,7 @@ GEM
1814
aws-sdk-ec2 (1.235.0)
1915
aws-sdk-core (~> 3, >= 3.112.0)
2016
aws-sigv4 (~> 1.1)
21-
aws-sigv4 (1.2.3)
17+
aws-sigv4 (1.4.0)
2218
aws-eventstream (~> 1, >= 1.0.2)
2319
axiom-types (0.1.1)
2420
descendants_tracker (~> 0.0.4)
@@ -80,24 +76,24 @@ GEM
8076
mini_portile2 (~> 2.6.1)
8177
racc (~> 1.4)
8278
os (1.1.1)
83-
parallel (1.20.1)
84-
parser (3.0.1.0)
79+
parallel (1.21.0)
80+
parser (3.0.3.1)
8581
ast (~> 2.4.1)
8682
pastel (0.8.0)
8783
tty-color (~> 0.5)
88-
pry (0.14.0)
84+
pry (0.14.1)
8985
coderay (~> 1.1)
9086
method_source (~> 1.0)
9187
pry-byebug (3.8.0)
9288
byebug (~> 11.0)
9389
pry (~> 0.10)
94-
pry-doc (1.1.0)
90+
pry-doc (1.2.0)
9591
pry (~> 0.11)
9692
yard (~> 0.9.11)
9793
public_suffix (4.0.6)
9894
racc (1.5.2)
9995
rainbow (3.0.0)
100-
rake (13.0.3)
96+
rake (13.0.6)
10197
regexp_parser (2.1.1)
10298
representable (3.0.4)
10399
declarative (< 0.1.0)
@@ -119,18 +115,18 @@ GEM
119115
rspec-mocks (3.10.2)
120116
diff-lcs (>= 1.2.0, < 2.0)
121117
rspec-support (~> 3.10.0)
122-
rspec-support (3.10.2)
123-
rubocop (1.12.1)
118+
rspec-support (3.10.3)
119+
rubocop (1.23.0)
124120
parallel (~> 1.10)
125121
parser (>= 3.0.0.0)
126122
rainbow (>= 2.2.2, < 4.0)
127123
regexp_parser (>= 1.8, < 3.0)
128124
rexml
129-
rubocop-ast (>= 1.2.0, < 2.0)
125+
rubocop-ast (>= 1.12.0, < 2.0)
130126
ruby-progressbar (~> 1.7)
131127
unicode-display_width (>= 1.4.0, < 3.0)
132-
rubocop-ast (1.4.1)
133-
parser (>= 2.7.1.5)
128+
rubocop-ast (1.13.0)
129+
parser (>= 3.0.1.1)
134130
ruby-progressbar (1.11.0)
135131
ruby2_keywords (0.0.2)
136132
sem_version (2.0.1)
@@ -152,16 +148,18 @@ GEM
152148
strings (~> 0.2.0)
153149
tty-screen (~> 0.8)
154150
uber (0.1.0)
155-
unicode-display_width (1.7.0)
151+
unicode-display_width (1.8.0)
156152
unicode_utils (1.4.0)
157153
virtus (1.0.5)
158154
axiom-types (~> 0.1)
159155
coercible (~> 1.0)
160156
descendants_tracker (~> 0.0, >= 0.0.3)
161157
equalizer (~> 0.0, >= 0.0.9)
158+
webrick (1.7.0)
162159
workers (0.6.1)
163160
xdg (5.1.0)
164-
yard (0.9.26)
161+
yard (0.9.27)
162+
webrick (~> 1.7.0)
165163

166164
PLATFORMS
167165
ruby
@@ -190,4 +188,4 @@ DEPENDENCIES
190188
xdg
191189

192190
BUNDLED WITH
193-
2.2.15
191+
2.2.22

config/generate_repository_config.yaml

+12-20
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
mariadb:
2-
repo:
3-
rpm:
4-
path: http://yum.mariadb.org/
5-
key: https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
6-
deb:
7-
path: http://mirror.netinch.com/pub/mariadb/repo/
8-
key: "0xF1656F24C74CD1D8"
2+
rpm:
3+
path: https://dlm.mariadb.com/browse/mariadb_server/
4+
key: https://downloads.mariadb.com/MariaDB/MariaDB-Server-GPG-KEY
5+
deb:
6+
path: https://dlm.mariadb.com/browse/mariadb_server/
7+
key: ["0x8167EE24", "0xE3C94F49", "0xcbcb082a1bb943db", "0xf1656f24c74cd1d8", "0x135659e928c12247"]
98
columnstore:
109
repo:
1110
rpm:
@@ -20,19 +19,12 @@ maxscale_ci:
2019
old_key: https://mdbe-ci-repo.mariadb.net/MariaDBManager-GPG-KEY.public
2120
new_key: https://mdbe-ci-repo.mariadb.net/MDBE.public
2221
maxscale:
23-
repo:
24-
rpm:
25-
path: https://downloads.mariadb.com/MaxScale/
26-
key: https://downloads.mariadb.com/MariaDB/MariaDB-Enterprise-GPG-KEY
27-
old_keys:
28-
- key: https://downloads.mariadb.com/MaxScale/MariaDB-MaxScale-GPG-KEY
29-
versions_upper_bound: ["2.4.12", "2.5.3", "2.3.21"]
30-
deb:
31-
path: https://downloads.mariadb.com/MaxScale/
32-
key: https://downloads.mariadb.com/MariaDB/MariaDB-Enterprise-GPG-KEY
33-
old_keys:
34-
- key: "135659e928c12247"
35-
versions_upper_bound: ["2.4.12", "2.5.3", "2.3.21"]
22+
rpm:
23+
path: https://dlm.mariadb.com/browse/mariadbmaxscale/
24+
key: https://downloads.mariadb.com/MariaDB/MariaDB-Enterprise-GPG-KEY
25+
deb:
26+
path: https://dlm.mariadb.com/browse/mariadbmaxscale/
27+
key: ["0x8167EE24", "0xE3C94F49", "0xcbcb082a1bb943db", "0xf1656f24c74cd1d8", "0x135659e928c12247"]
3628
mdbe:
3729
repo:
3830
rpm:

core/commands/generate_product_repositories_command.rb

+10-6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
require_relative 'generate_repository_partials/mdbe_ci_parser'
1515
require_relative 'generate_repository_partials/maxscale_ci_parser'
1616
require_relative 'generate_repository_partials/maxscale_ci_docker_parser'
17+
require_relative 'generate_repository_partials/maria_db_community_parser'
1718
require_relative 'generate_repository_partials/maxscale_parser'
1819
require_relative 'generate_repository_partials/mdbe_parser'
1920
require_relative 'generate_repository_partials/mariadb_parser'
@@ -181,14 +182,14 @@ def setup_destination_directory
181182
end
182183

183184
# Use data provided via constructor to configure the command.
184-
def configure_command
185+
def configure_command(threads_count)
185186
load_configuration_file
186187
return false unless determine_products_to_parse
187188
return false unless determine_product_version_to_parse
188189

189190
determine_number_of_attempts
190191
setup_destination_directory
191-
Workers.pool.resize(10)
192+
Workers.pool.resize(threads_count)
192193
true
193194
end
194195

@@ -206,7 +207,6 @@ def extract_release_fields(release)
206207
end
207208
end
208209

209-
210210
# Write all information about releases to the JSON documents
211211
def write_repository(product_dir, releases)
212212
platforms = releases.map { |release| release[:platform] }.uniq
@@ -287,11 +287,15 @@ def parse_repository(product, product_config)
287287
when 'maxscale_ci_docker'
288288
MaxscaleCiDockerParser.parse(@ui, @env.tool_config)
289289
when 'maxscale'
290-
MaxscaleParser.parse(product_config, @product_version, @ui, @logger)
290+
MariaDBCommunityParser.parse(product_config, MariaDBCommunityParser::MAXSCALE_SERVER,
291+
'maxscale', @product_version,
292+
@ui, @logger)
291293
when 'mdbe'
292294
MdbeParser.parse(product_config, @env.mdbe_private_key, 'MariaDB Enterprise Server', 'mdbe')
293295
when 'mariadb'
294-
MariadbParser.parse(product_config, @product_version, @ui, @logger)
296+
MariaDBCommunityParser.parse(product_config, MariaDBCommunityParser::MARIADB_COMMUNITY,
297+
'mariadb', @product_version,
298+
@ui, @logger)
295299
when 'columnstore'
296300
ColumnstoreParser.parse(product_config, @product_version, @ui, @logger)
297301
when 'mysql'
@@ -342,7 +346,7 @@ def execute
342346
show_help
343347
return SUCCESS_RESULT
344348
end
345-
return ARGUMENT_ERROR_RESULT unless configure_command
349+
return ARGUMENT_ERROR_RESULT unless configure_command(@env.threads_count)
346350

347351
remainning_products = @products.dup
348352
@attempts.times do

core/commands/generate_repository_partials/clustrix_parser.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def self.clustrix_tar_link?(link)
2121
end
2222

2323
def self.get_clustrix_links(path)
24-
uri = path.gsub(%r{([^:])\/+}, '\1/')
24+
uri = path.gsub(%r{([^:])/+}, '\1/')
2525
doc = Nokogiri::HTML(URI.open(uri))
2626
all_links = doc.css('a')
2727
all_links.select do |link|
@@ -67,7 +67,7 @@ def self.get_clustrix_release_versions(config, private_key, link_name)
6767
get_clustrix_tar_links(path)
6868
end.flatten.map do |link|
6969
path = generate_url_by_link(path_uri, link)
70-
version = link.content.match(/^.*\/xpand-(.+)\.[^.]+\.tar\.bz2$/).captures[0].strip
70+
version = link.content.match(%r{^.*/xpand-(.+)\.[^.]+\.tar\.bz2$}).captures[0].strip
7171
{ repo: path, version: version }
7272
end
7373
releases_info.push(generate_latest_release(releases_info))

core/commands/generate_repository_partials/columnstore_parser.rb

+5-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ module ColumnstoreParser
88

99
def self.parse(config, product_version, log, logger)
1010
releases = []
11-
releases.concat(parse_columnstore_rpm_repository(config['repo']['rpm'], product_version, log, logger))
12-
releases.concat(parse_columnstore_deb_repository(config['repo']['deb'], product_version, log, logger))
11+
releases.concat(parse_columnstore_rpm_repository(config['repo']['rpm'], product_version, log,
12+
logger))
13+
releases.concat(parse_columnstore_deb_repository(config['repo']['deb'], product_version, log,
14+
logger))
1315
releases
1416
end
1517

@@ -39,7 +41,7 @@ def self.parse_columnstore_deb_repository(config, product_version, log, logger)
3941
log, logger,
4042
save_as_field(:version),
4143
append_url(%w[repo]),
42-
extract_field(:platform, %r{^(\p{Alpha}+)\p{Digit}+\/?$}, true),
44+
extract_field(:platform, %r{^(\p{Alpha}+)\p{Digit}+/?$}, true),
4345
append_url(%w[dists]),
4446
save_as_field(:platform_version),
4547
lambda do |release, _|

core/commands/generate_repository_partials/galera_ci_parser.rb

+33-31
Original file line numberDiff line numberDiff line change
@@ -11,46 +11,48 @@ def self.parse(config, product_version, mdbe_ci_config, galera_version, log, log
1111

1212
auth_mdbe_ci_repo = mdbe_ci_config['mdbe_ci_repo']
1313
releases = []
14-
releases.concat(parse_galera_ci_rpm_repository(config['repo'], product_version, auth_mdbe_ci_repo, galera_version, log, logger))
15-
releases.concat(parse_galera_ci_deb_repository(config['repo'], product_version, auth_mdbe_ci_repo, galera_version, log, logger))
14+
releases.concat(parse_galera_ci_rpm_repository(config['repo'], product_version,
15+
auth_mdbe_ci_repo, galera_version, log, logger))
16+
releases.concat(parse_galera_ci_deb_repository(config['repo'], product_version,
17+
auth_mdbe_ci_repo, galera_version, log, logger))
1618
releases
1719
end
1820

1921
def self.parse_galera_ci_rpm_repository(config, product_version, auth, galera_version, log, logger)
2022
parse_repository(
21-
config['path'], auth, add_auth_to_url(config['key'], auth), galera_version, product_version,
22-
%w[galera],
23-
->(url, _) { url },
24-
->(package, _) { /#{package}/ },
25-
log, logger,
26-
save_as_field(:version),
27-
split_rpm_platforms,
28-
extract_field(:platform_version, %r{^(\p{Digit}+)\/?$}),
29-
append_url(%w[x86_64 aarch64], :architecture),
30-
lambda do |release, _|
31-
release[:repo] = add_auth_to_url(release[:url], auth)
32-
release
33-
end
23+
config['path'], auth, add_auth_to_url(config['key'], auth), galera_version, product_version,
24+
%w[galera],
25+
->(url, _) { url },
26+
->(package, _) { /#{package}/ },
27+
log, logger,
28+
save_as_field(:version),
29+
split_rpm_platforms,
30+
extract_field(:platform_version, %r{^(\p{Digit}+)/?$}),
31+
append_url(%w[x86_64 aarch64], :architecture),
32+
lambda do |release, _|
33+
release[:repo] = add_auth_to_url(release[:url], auth)
34+
release
35+
end
3436
)
3537
end
3638

3739
def self.parse_galera_ci_deb_repository(config, product_version, auth, galera_version, log, logger)
3840
parse_repository(
39-
config['path'], auth, add_auth_to_url(config['key'], auth), galera_version, product_version,
40-
%w[galera],
41-
->(url, _) { generate_galera_ci_deb_full_url(url, logger, auth) },
42-
->(package, platform) { /#{package}.*#{platform}/ },
43-
log, logger,
44-
save_as_field(:version),
45-
append_url(%w[apt], nil, true),
46-
append_url(%w[dists]),
47-
extract_deb_platforms,
48-
set_deb_architecture(auth),
49-
lambda do |release, _|
50-
repo_path = add_auth_to_url(release[:repo_url], auth)
51-
release[:repo] = "#{repo_path} #{release[:platform_version]} main"
52-
release
53-
end
41+
config['path'], auth, add_auth_to_url(config['key'], auth), galera_version, product_version,
42+
%w[galera],
43+
->(url, _) { generate_galera_ci_deb_full_url(url, logger, auth) },
44+
->(package, platform) { /#{package}.*#{platform}/ },
45+
log, logger,
46+
save_as_field(:version),
47+
append_url(%w[apt], nil, true),
48+
append_url(%w[dists]),
49+
extract_deb_platforms,
50+
set_deb_architecture(auth),
51+
lambda do |release, _|
52+
repo_path = add_auth_to_url(release[:repo_url], auth)
53+
release[:repo] = "#{repo_path} #{release[:platform_version]} main"
54+
release
55+
end
5456
)
5557
end
5658

@@ -62,7 +64,7 @@ def self.generate_galera_ci_deb_full_url(incorrect_url, logger, auth)
6264
end
6365

6466
def self.generate_pool_link(url, logger, auth)
65-
dir = get_directory_links("#{url}", logger, auth)[0].attributes['href'].value
67+
dir = get_directory_links(url.to_s, logger, auth)[0].attributes['href'].value
6668
"#{url}/#{dir}"
6769
rescue OpenURI::HTTPError => e
6870
url

0 commit comments

Comments
 (0)