Skip to content

Commit ba3147e

Browse files
authored
GHI-7628 - The percona-server-client lib processing updated (#240)
* Updated ey-mysql/recipes/install.rb: changed the logic of percona-server-client-5.7 and percona-server-client gems installation * Updated ey-mysql/recipes/install.rb: introduced short_version and instance_role variables * Updated the ey-mysql/recipes/install.rb: - aka pretty-print applied (ChatGPT), syntax errors in comments/messages fixed
1 parent 23c2216 commit ba3147e

File tree

1 file changed

+78
-39
lines changed

1 file changed

+78
-39
lines changed

cookbooks/ey-mysql/recipes/install.rb

+78-39
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ey_cloud_report "mysql installation" do
2-
message "installation of mysql packages and dependencies started"
2+
message "Installation of MySQL packages and dependencies started." # AI-GEN - chatgpt
33
end
44

55
apt_repository "mysql57" do
@@ -20,17 +20,29 @@
2020

2121
known_versions = []
2222
install_version = node["mysql"]["latest_version"]
23-
24-
`apt-cache madison percona-server-server-#{node["mysql"]["short_version"]} |awk '{print $3'} && apt-cache madison percona-server-server |awk '{print $3}'`.split(/\n+/).each { |v| known_versions.append(v.split("-")[0]) }
23+
# AI-GEN START - chatgpt
24+
short_version = node["mysql"]["short_version"]
25+
instance_role = node["dna"]["instance_role"]
26+
# AI-GEN END
27+
28+
# AI-GEN START - chatgpt
29+
`apt-cache madison percona-server-server-#{short_version} | awk '{print $3}' && apt-cache madison percona-server-server | awk '{print $3}'`.split(/\n+/).each do |v|
30+
known_versions.append(v.split("-")[0])
31+
end
32+
# AI-GEN END
2533
package_version = known_versions.detect { |v| v =~ /^#{install_version}/ }
2634

27-
lock_db_version = node.engineyard.environment.components.find_all { |e| e["key"] == "lock_db_version" }.first["value"] if node.engineyard.environment.lock_db_version?
35+
# AI-GEN START - chatgpt
36+
if node.engineyard.environment.lock_db_version?
37+
lock_db_version = node.engineyard.environment.components.find_all { |e| e["key"] == "lock_db_version" }.first["value"]
38+
end
39+
# AI-GEN END
2840

2941
lock_version_file = "/db/.lock_db_version"
3042
db_running = `mysql -N -e "select 1;" 2> /dev/null`.strip == "1"
3143

32-
# create or delete /db/.lock_db_version
33-
if node["dna"]["instance_role"][/^(db|solo)/]
44+
# Create or delete /db/.lock_db_version - AI-GEN - chatgpt
45+
if instance_role[/^(db|solo)/] # AI-GEN - chatgpt
3446
execute "dropping lock version file" do
3547
command "echo $(mysql --version | grep -E -o '(Distrib|Ver) [0-9]+\.[0-9]+\.[0-9]+' | awk '{print $NF}') > #{lock_version_file}"
3648
action :run
@@ -43,27 +55,53 @@
4355
end
4456
end
4557

46-
# install the dependencies of the Percona packages
58+
# AI-GEN START - chatgpt
59+
# Install the dependencies of the Percona packages
4760
["debsums", "libaio1", "libmecab2"].each do |package|
48-
package package
61+
package package do
62+
action :install
63+
end
64+
end
65+
# AI-GEN END
66+
67+
# AI-GEN START - chatgpt
68+
package "libmysqlclient-dev" do
69+
action :install
4970
end
71+
# AI-GEN END
5072

51-
package "libmysqlclient-dev"
52-
# installs mysql client to all instnaces.
73+
# Installs MySQL client to all instances - AI-GEN - chatgpt
5374
if node.engineyard.instance.arch_type == "arm64"
54-
package "mysql-client"
75+
# AI-GEN START - chatgpt
76+
package "mysql-client" do
77+
action :install
78+
end
79+
# AI-GEN END
5580
else
56-
package "percona-server-client"
81+
# AI-GEN START - cursor
82+
case short_version
83+
when "5.7"
84+
package "percona-server-client-5.7" do
85+
action :install
86+
end
87+
when "8.0"
88+
package "percona-server-client" do
89+
action :install
90+
end
91+
end
92+
# AI-GEN END
5793
end
5894

59-
case node["mysql"]["short_version"]
60-
when "5.7"
61-
packages = ["percona-server-common-5.7", "libperconaserverclient20", "percona-server-client-5.7", "percona-server-server-5.7"]
62-
when "8.0"
63-
packages = ["percona-server-common", "libperconaserverclient21", "percona-server-client", "percona-server-server"]
64-
end
95+
# AI-GEN START - chatgpt
96+
packages = case short_version
97+
when "5.7"
98+
["percona-server-common-5.7", "libperconaserverclient20", "percona-server-server-5.7"]
99+
when "8.0"
100+
["percona-server-common", "libperconaserverclient21", "percona-server-server"]
101+
end
102+
# AI-GEN END
65103

66-
if node["dna"]["instance_role"][/db|solo/]
104+
if instance_role[/db|solo/] # AI-GEN - chatgpt
67105
directory "/etc/systemd/system/mysql.service.d" do
68106
owner "root"
69107
group "root"
@@ -80,43 +118,44 @@
80118
end
81119
end
82120

83-
install_version = if ::File.exist?(node["lock_version_file"])
84-
`cat #{node["lock_version_file"]}`.strip
121+
install_version = if ::File.exist?(lock_version_file) # AI-GEN - chatgpt
122+
`cat #{lock_version_file}`.strip # AI-GEN - chatgpt
85123
else
86124
node["mysql"]["latest_version"]
87125
end
126+
88127
if package_version.nil? && node.engineyard.instance.arch_type == "amd64"
89-
raise "Chef does not know about MySQL version #{install_version} the current known versions of MySQL #{known_versions}. Please use them or contact support for more assistance"
128+
raise "Chef does not know about MySQL version #{install_version}. The current known versions of MySQL are #{known_versions.join(', ')}. Please use them or contact support for more assistance." # AI-GEN - chatgpt
90129
end
91130

92-
package_version = `apt-cache madison #{packages.last} |awk '{print $3}' |grep #{install_version}`.split(/\n/).last
131+
package_version = `apt-cache madison #{packages.last} | awk '{print $3}' | grep #{install_version}`.split(/\n/).last # AI-GEN - chatgpt
93132

94133
execute "set-deb-confs" do
95-
command %(echo "#{packages.last} #{packages.last}/root-pass password #{node.engineyard.environment['db_admin_password']}" |debconf-set-selections && echo "#{packages.last} #{packages.last}/re-root-pass password #{node.engineyard.environment['db_admin_password']}" |debconf-set-selections)
134+
command %(echo "#{packages.last} #{packages.last}/root-pass password #{node.engineyard.environment['db_admin_password']}" | debconf-set-selections && echo "#{packages.last} #{packages.last}/re-root-pass password #{node.engineyard.environment['db_admin_password']}" | debconf-set-selections) # AI-GEN - chatgpt
96135
end
97136

98-
# Loop the packages because chef doesn't understand, you install the dependency before even in the array...
99-
if node["dna"]["instance_role"][/^(db|solo)/]
100-
packages.each do |package|
101-
apt_package package do
102-
version "#{package_version}"
103-
action :install
104-
options ["--yes", "--fix-missing"]
105-
ignore_failure true
106-
only_if { node.engineyard.instance.arch_type == "amd64" }
137+
# Loop through the packages because chef doesn't understand you install the dependency before even in the array... AI-GEN - chatgpt
138+
if instance_role[/^(db|solo)/] # AI-GEN - chatgpt
139+
packages.each do |package|
140+
apt_package package do
141+
version package_version # AI-GEN - chatgpt
142+
action :install
143+
options "--yes --fix-missing" # AI-GEN - chatgpt
144+
ignore_failure true
145+
only_if { node.engineyard.instance.arch_type == "amd64" }
146+
end
107147
end
108148
end
109-
end
110149

111150
ey_cloud_report "mysql installation" do
112-
message "installation of mysql packages and dependencies finished"
151+
message "Installation of MySQL packages and dependencies finished." # AI-GEN - chatgpt
113152
end
114153

115-
if node["dna"]["instance_role"][/^(db|solo)/] && node["mysql"]["short_version"] == "8.0"
154+
if instance_role[/^(db|solo)/] && short_version == "8.0" # AI-GEN - chatgpt
116155
bash "Set my.cnf alternatives for MySQL 8.0" do
117156
code <<-EOS
118-
update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/percona-server.cnf 1000
119-
update-alternatives --set my.cnf /etc/mysql/percona-server.cnf
120-
EOS
157+
update-alternatives --install /etc/mysql/my.cnf my.cnf /etc/mysql/percona-server.cnf 1000
158+
update-alternatives --set my.cnf /etc/mysql/percona-server.cnf
159+
EOS
121160
end
122161
end

0 commit comments

Comments
 (0)