Skip to content

Commit 49eb0a8

Browse files
committed
(CONT-789) Rubocop Manual Fix 2 - Lint/DuplicateBranch
1 parent fa629a1 commit 49eb0a8

File tree

8 files changed

+42
-74
lines changed

8 files changed

+42
-74
lines changed

.rubocop_todo.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,6 @@
66
# Note that changes in the inspected code, or installation of new
77
# versions of RuboCop, may require this file to be generated again.
88

9-
# Offense count: 11
10-
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches.
11-
Lint/DuplicateBranch:
12-
Exclude:
13-
- 'lib/puppet/provider/mysql_datadir/mysql.rb'
14-
- 'lib/puppet/provider/mysql_grant/mysql.rb'
15-
- 'lib/puppet/provider/mysql_user/mysql.rb'
16-
- 'lib/puppet/type/mysql_grant.rb'
17-
- 'lib/puppet/type/mysql_user.rb'
18-
- 'spec/acceptance/types/mysql_login_path_spec.rb'
19-
- 'spec/classes/mysql_backup_xtrabackup_spec.rb'
20-
219
# Offense count: 1
2210
Lint/FloatComparison:
2311
Exclude:

lib/puppet/provider/mysql_datadir/mysql.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,7 @@ def create
6464
opts << "--#{opt}=#{val}" unless val.nil?
6565
end
6666

67-
if mysqld_version.nil?
68-
debug("Installing MySQL data directory with mysql_install_db #{opts.compact.join(' ')}")
69-
mysql_install_db(opts.compact)
70-
elsif newer_than('mysql' => '5.7.6', 'percona' => '5.7.6')
67+
if !mysqld_version.nil? && newer_than('mysql' => '5.7.6', 'percona' => '5.7.6')
7168
opts << "--log-error=#{log_error}"
7269
opts << initialize.to_s
7370
debug("Initializing MySQL data directory >= 5.7.6 with mysqld: #{opts.compact.join(' ')}")

lib/puppet/provider/mysql_grant/mysql.rb

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -64,26 +64,24 @@ def self.instances
6464
end
6565

6666
sorted_privileges = stripped_privileges.uniq.sort
67-
if newer_than('mysql' => '8.0.0') && sorted_privileges == ['ALTER', 'ALTER ROUTINE', 'CREATE', 'CREATE ROLE', 'CREATE ROUTINE', 'CREATE TABLESPACE', 'CREATE TEMPORARY TABLES', 'CREATE USER',
68-
'CREATE VIEW', 'DELETE', 'DROP', 'DROP ROLE', 'EVENT', 'EXECUTE', 'FILE', 'INDEX', 'INSERT', 'LOCK TABLES', 'PROCESS', 'REFERENCES',
69-
'RELOAD', 'REPLICATION CLIENT', 'REPLICATION SLAVE', 'SELECT', 'SHOW DATABASES', 'SHOW VIEW', 'SHUTDOWN', 'SUPER', 'TRIGGER',
70-
'UPDATE']
71-
sorted_privileges = ['ALL']
72-
73-
# The following two elsif blocks of code are a workaround for issue #1474.
74-
elsif sorted_privileges == ['ALL', 'APPLICATION_PASSWORD_ADMIN', 'AUDIT_ABORT_EXEMPT', 'AUDIT_ADMIN', 'AUTHENTICATION_POLICY_ADMIN', 'BACKUP_ADMIN', 'BINLOG_ADMIN', 'BINLOG_ENCRYPTION_ADMIN',
75-
'CLONE_ADMIN', 'CONNECTION_ADMIN', 'ENCRYPTION_KEY_ADMIN', 'FLUSH_OPTIMIZER_COSTS', 'FLUSH_STATUS', 'FLUSH_TABLES', 'FLUSH_USER_RESOURCES',
76-
'GROUP_REPLICATION_ADMIN', 'GROUP_REPLICATION_STREAM', 'INNODB_REDO_LOG_ARCHIVE', 'INNODB_REDO_LOG_ENABLE', 'PASSWORDLESS_USER_ADMIN', 'PERSIST_RO_VARIABLES_ADMIN',
77-
'REPLICATION_APPLIER', 'REPLICATION_SLAVE_ADMIN', 'RESOURCE_GROUP_ADMIN', 'RESOURCE_GROUP_USER', 'ROLE_ADMIN', 'SERVICE_CONNECTION_ADMIN',
78-
'SESSION_VARIABLES_ADMIN', 'SET_USER_ID', 'SHOW_ROUTINE', 'SYSTEM_USER', 'SYSTEM_VARIABLES_ADMIN', 'TABLE_ENCRYPTION_ADMIN', 'XA_RECOVER_ADMIN']
79-
sorted_privileges = ['ALL']
80-
81-
elsif sorted_privileges == ['ALL', 'APPLICATION_PASSWORD_ADMIN', 'AUDIT_ABORT_EXEMPT', 'AUDIT_ADMIN', 'AUTHENTICATION_POLICY_ADMIN', 'BACKUP_ADMIN', 'BINLOG_ADMIN', 'BINLOG_ENCRYPTION_ADMIN',
82-
'CLONE_ADMIN', 'CONNECTION_ADMIN', 'ENCRYPTION_KEY_ADMIN', 'FLUSH_OPTIMIZER_COSTS', 'FLUSH_STATUS', 'FLUSH_TABLES', 'FLUSH_USER_RESOURCES',
83-
'GROUP_REPLICATION_ADMIN', 'GROUP_REPLICATION_STREAM', 'INNODB_REDO_LOG_ARCHIVE', 'INNODB_REDO_LOG_ENABLE', 'PASSWORDLESS_USER_ADMIN', 'PERSIST_RO_VARIABLES_ADMIN',
84-
'REPLICATION_APPLIER', 'REPLICATION_SLAVE_ADMIN', 'RESOURCE_GROUP_ADMIN', 'RESOURCE_GROUP_USER', 'ROLE_ADMIN', 'SENSITIVE_VARIABLES_OBSERVER',
85-
'SERVICE_CONNECTION_ADMIN', 'SESSION_VARIABLES_ADMIN', 'SET_USER_ID', 'SHOW_ROUTINE', 'SYSTEM_USER', 'SYSTEM_VARIABLES_ADMIN', 'TABLE_ENCRYPTION_ADMIN',
86-
'XA_RECOVER_ADMIN']
67+
mysql_v8_privileges = ['ALTER', 'ALTER ROUTINE', 'CREATE', 'CREATE ROLE', 'CREATE ROUTINE', 'CREATE TABLESPACE', 'CREATE TEMPORARY TABLES', 'CREATE USER',
68+
'CREATE VIEW', 'DELETE', 'DROP', 'DROP ROLE', 'EVENT', 'EXECUTE', 'FILE', 'INDEX', 'INSERT', 'LOCK TABLES', 'PROCESS', 'REFERENCES',
69+
'RELOAD', 'REPLICATION CLIENT', 'REPLICATION SLAVE', 'SELECT', 'SHOW DATABASES', 'SHOW VIEW', 'SHUTDOWN', 'SUPER', 'TRIGGER',
70+
'UPDATE']
71+
# The following two compare blocks are a workaround for issue #1474.
72+
mysql_pre_v8_privileges_one = ['ALL', 'APPLICATION_PASSWORD_ADMIN', 'AUDIT_ABORT_EXEMPT', 'AUDIT_ADMIN', 'AUTHENTICATION_POLICY_ADMIN', 'BACKUP_ADMIN', 'BINLOG_ADMIN',
73+
'BINLOG_ENCRYPTION_ADMIN', 'CLONE_ADMIN', 'CONNECTION_ADMIN', 'ENCRYPTION_KEY_ADMIN', 'FLUSH_OPTIMIZER_COSTS', 'FLUSH_STATUS',
74+
'FLUSH_TABLES', 'FLUSH_USER_RESOURCES', 'GROUP_REPLICATION_ADMIN', 'GROUP_REPLICATION_STREAM', 'INNODB_REDO_LOG_ARCHIVE',
75+
'INNODB_REDO_LOG_ENABLE', 'PASSWORDLESS_USER_ADMIN', 'PERSIST_RO_VARIABLES_ADMIN', 'REPLICATION_APPLIER', 'REPLICATION_SLAVE_ADMIN',
76+
'RESOURCE_GROUP_ADMIN', 'RESOURCE_GROUP_USER', 'ROLE_ADMIN', 'SERVICE_CONNECTION_ADMIN', 'SESSION_VARIABLES_ADMIN', 'SET_USER_ID',
77+
'SHOW_ROUTINE', 'SYSTEM_USER', 'SYSTEM_VARIABLES_ADMIN', 'TABLE_ENCRYPTION_ADMIN', 'XA_RECOVER_ADMIN']
78+
mysql_pre_v8_privileges_two = ['ALL', 'APPLICATION_PASSWORD_ADMIN', 'AUDIT_ABORT_EXEMPT', 'AUDIT_ADMIN', 'AUTHENTICATION_POLICY_ADMIN', 'BACKUP_ADMIN', 'BINLOG_ADMIN',
79+
'BINLOG_ENCRYPTION_ADMIN', 'CLONE_ADMIN', 'CONNECTION_ADMIN', 'ENCRYPTION_KEY_ADMIN', 'FLUSH_OPTIMIZER_COSTS', 'FLUSH_STATUS',
80+
'FLUSH_TABLES', 'FLUSH_USER_RESOURCES', 'GROUP_REPLICATION_ADMIN', 'GROUP_REPLICATION_STREAM', 'INNODB_REDO_LOG_ARCHIVE',
81+
'INNODB_REDO_LOG_ENABLE', 'PASSWORDLESS_USER_ADMIN', 'PERSIST_RO_VARIABLES_ADMIN', 'REPLICATION_APPLIER', 'REPLICATION_SLAVE_ADMIN',
82+
'RESOURCE_GROUP_ADMIN', 'RESOURCE_GROUP_USER', 'ROLE_ADMIN', 'SENSITIVE_VARIABLES_OBSERVER', 'SERVICE_CONNECTION_ADMIN',
83+
'SESSION_VARIABLES_ADMIN', 'SET_USER_ID', 'SHOW_ROUTINE', 'SYSTEM_USER', 'SYSTEM_VARIABLES_ADMIN', 'TABLE_ENCRYPTION_ADMIN', 'XA_RECOVER_ADMIN']
84+
if (newer_than('mysql' => '8.0.0') && sorted_privileges == mysql_v8_privileges) || sorted_privileges == mysql_pre_v8_privileges_one || sorted_privileges == mysql_pre_v8_privileges_two
8785
sorted_privileges = ['ALL']
8886
end
8987

lib/puppet/provider/mysql_user/mysql.rb

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,27 @@ def self.instances
1212
# To reduce the number of calls to MySQL we collect all the properties in
1313
# one big swoop.
1414
users.map do |name|
15-
if mysqld_version.nil?
16-
## Default ...
17-
# rubocop:disable Layout/LineLength
18-
query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, SSL_TYPE, SSL_CIPHER, X509_ISSUER, X509_SUBJECT, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'"
19-
elsif newer_than('mysql' => '5.7.6', 'percona' => '5.7.6')
15+
# rubocop:disable Layout/LineLength
16+
if !mysqld_version.nil? && newer_than('mysql' => '5.7.6', 'percona' => '5.7.6')
2017
query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, SSL_TYPE, SSL_CIPHER, X509_ISSUER, X509_SUBJECT, AUTHENTICATION_STRING, PLUGIN FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'"
21-
elsif newer_than('mariadb' => '10.1.21')
18+
elsif !mysqld_version.nil? && newer_than('mariadb' => '10.1.21')
2219
query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, SSL_TYPE, SSL_CIPHER, X509_ISSUER, X509_SUBJECT, PASSWORD, PLUGIN, AUTHENTICATION_STRING FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'"
2320
else
2421
query = "SELECT MAX_USER_CONNECTIONS, MAX_CONNECTIONS, MAX_QUESTIONS, MAX_UPDATES, SSL_TYPE, SSL_CIPHER, X509_ISSUER, X509_SUBJECT, PASSWORD /*!50508 , PLUGIN */ FROM mysql.user WHERE CONCAT(user, '@', host) = '#{name}'"
2522
end
23+
# rubocop:enable Layout/LineLength
2624
@max_user_connections, @max_connections_per_hour, @max_queries_per_hour, @max_updates_per_hour, ssl_type, ssl_cipher,
2725
x509_issuer, x509_subject, @password, @plugin, @authentication_string = mysql_caller(query, 'regular').chomp.split(%r{\t})
2826
@tls_options = parse_tls_options(ssl_type, ssl_cipher, x509_issuer, x509_subject)
29-
if newer_than('mariadb' => '10.1.21') && (@plugin == 'ed25519' || @plugin == 'mysql_native_password')
27+
if (newer_than('mariadb' => '10.1.21') && (@plugin == 'ed25519' || @plugin == 'mysql_native_password')) ||
28+
(newer_than('mariadb' => '10.2.16') && older_than('mariadb' => '10.2.19')) ||
29+
(newer_than('mariadb' => '10.3.8') && older_than('mariadb' => '10.3.11'))
3030
# Some auth plugins (e.g. ed25519) use authentication_string
3131
# to store password hash or auth information
32-
@password = @authentication_string
33-
elsif (newer_than('mariadb' => '10.2.16') && older_than('mariadb' => '10.2.19')) ||
34-
(newer_than('mariadb' => '10.3.8') && older_than('mariadb' => '10.3.11'))
3532
# Old mariadb 10.2 or 10.3 store password hash in authentication_string
3633
# https://jira.mariadb.org/browse/MDEV-16238 https://jira.mariadb.org/browse/MDEV-16774
3734
@password = @authentication_string
3835
end
39-
# rubocop:enable Layout/LineLength
4036
new(name: name,
4137
ensure: :present,
4238
password_hash: @password,
@@ -148,10 +144,7 @@ def password_hash=(string)
148144
plugin = @resource.value(:plugin)
149145

150146
# We have a fact for the mysql version ...
151-
if mysqld_version.nil?
152-
# default ... if mysqld_version does not work
153-
self.class.mysql_caller("SET PASSWORD FOR #{merged_name} = '#{string}'", 'system')
154-
elsif newer_than('mariadb' => '10.1.21') && plugin == 'ed25519'
147+
if !mysqld_version.nil? && newer_than('mariadb' => '10.1.21') && plugin == 'ed25519'
155148
raise ArgumentError, _('ed25519 hash should be 43 bytes long.') unless string.length == 43
156149

157150
# ALTER USER statement is only available upstream starting 10.2
@@ -165,11 +158,12 @@ def password_hash=(string)
165158
sql += " where CONCAT(user, '@', host) = '#{concat_name}'; FLUSH PRIVILEGES"
166159
end
167160
self.class.mysql_caller(sql, 'system')
168-
elsif newer_than('mysql' => '5.7.6', 'percona' => '5.7.6', 'mariadb' => '10.2.0')
161+
elsif !mysqld_version.nil? && newer_than('mysql' => '5.7.6', 'percona' => '5.7.6', 'mariadb' => '10.2.0')
169162
raise ArgumentError, _('Only mysql_native_password (*ABCD...XXX) hashes are supported.') unless %r{^\*|^$}.match?(string)
170163

171164
self.class.mysql_caller("ALTER USER #{merged_name} IDENTIFIED WITH mysql_native_password AS '#{string}'", 'system')
172165
else
166+
# default ... if mysqld_version does not work
173167
self.class.mysql_caller("SET PASSWORD FOR #{merged_name} = '#{string}'", 'system')
174168
end
175169

lib/puppet/type/mysql_grant.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,7 @@ def initialize(*args)
8787
if matches = %r{^(['`"])((?!\1).)*\1@([\w%.:\-/]+)$}.match(value)
8888
user_part = matches[2]
8989
host_part = matches[3]
90-
elsif matches = %r{^([0-9a-zA-Z$_]*)@([\w%.:\-/]+)$}.match(value)
91-
user_part = matches[1]
92-
host_part = matches[2]
93-
elsif matches = %r{^((?!['`"]).*[^0-9a-zA-Z$_].*)@(.+)$}.match(value)
90+
elsif matches = %r{^([0-9a-zA-Z$_]*)@([\w%.:\-/]+)$}.match(value) || matches = %r{^((?!['`"]).*[^0-9a-zA-Z$_].*)@(.+)$}.match(value)
9491
user_part = matches[1]
9592
host_part = matches[2]
9693
else

lib/puppet/type/mysql_user.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@
2424
if matches = %r{^(['`"])((?:(?!\1).)*)\1@([\w%.:\-/]+)$}.match(value)
2525
user_part = matches[2]
2626
host_part = matches[3]
27-
elsif matches = %r{^([0-9a-zA-Z$_]*)@([\w%.:\-/]+)$}.match(value)
28-
user_part = matches[1]
29-
host_part = matches[2]
30-
elsif matches = %r{^((?!['`"]).*[^0-9a-zA-Z$_].*)@(.+)$}.match(value)
27+
elsif matches = %r{^([0-9a-zA-Z$_]*)@([\w%.:\-/]+)$}.match(value) || matches = %r{^((?!['`"]).*[^0-9a-zA-Z$_].*)@(.+)$}.match(value)
3128
user_part = matches[1]
3229
host_part = matches[2]
3330
else

spec/acceptance/types/mysql_login_path_spec.rb

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
require 'spec_helper_acceptance'
44

5-
mysql_version = '5.6'
65
support_bin_dir = '/root/mysql_login_path'
7-
if os[:family] == 'redhat' && os[:release].to_i == 8
8-
mysql_version = '8.0'
9-
elsif os[:family] == 'debian' && os[:release] =~ %r{9|10|11}
10-
mysql_version = '8.0'
11-
elsif os[:family] == 'ubuntu' && os[:release] =~ %r{18\.04|20\.04}
12-
mysql_version = '5.7'
13-
end
6+
mysql_version = if (os[:family] == 'redhat' && os[:release].to_i == 8) || (os[:family] == 'debian' && os[:release] =~ %r{9|10|11})
7+
'8.0'
8+
elsif os[:family] == 'ubuntu' && os[:release] =~ %r{18\.04|20\.04}
9+
'5.7'
10+
else
11+
'5.6'
12+
end
1413

1514
describe 'mysql_login_path', unless: "#{os[:family]}-#{os[:release].to_i}".include?('suse') do
1615
before(:all) do

spec/classes/mysql_backup_xtrabackup_spec.rb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ class { 'mysql::server': }
4848
elsif facts[:os]['name'] == 'Debian'
4949
'percona-xtrabackup-24'
5050
elsif facts[:os]['name'] == 'Ubuntu'
51-
if Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '20') >= 0
52-
'percona-xtrabackup-24'
53-
elsif Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '16') >= 0
51+
if Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '20') < 0 &&
52+
Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '16') >= 0
5453
'percona-xtrabackup'
5554
else
5655
'percona-xtrabackup-24'
@@ -204,9 +203,8 @@ class { 'mysql::server': }
204203
elsif facts[:os]['name'] == 'Debian'
205204
'percona-xtrabackup-24'
206205
elsif facts[:os]['name'] == 'Ubuntu'
207-
if Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '20') >= 0
208-
'percona-xtrabackup-24'
209-
elsif Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '16') >= 0
206+
if Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '20') < 0 &&
207+
Puppet::Util::Package.versioncmp(facts[:os]['release']['major'], '16') >= 0
210208
'percona-xtrabackup'
211209
else
212210
'percona-xtrabackup-24'

0 commit comments

Comments
 (0)