# limitations under the License.
#
+use_inline_resources
+
def load_current_resource
@mysql = Chef::MySQL.new
@current_resource = Chef::Resource::MysqlDatabase.new(new_resource.name)
@current_resource.database(new_resource.database)
- if mysql_database = @mysql.databases[@current_resource.database]
+ if (mysql_database = @mysql.databases[@current_resource.database])
@current_resource.permissions(mysql_database[:permissions])
end
@current_resource
end
end
- new_permissions = Hash[new_resource.permissions.collect do |user,privileges|
+ new_permissions = Hash[new_resource.permissions.collect do |user, privileges|
[@mysql.canonicalise_user(user), privileges]
end]
- @current_resource.permissions.each do |user,privileges|
- unless new_permissions[user]
- converge_by("revoke all for #{user} on #{new_resource}") do
- Chef::Log.info("Revoking all for #{user} on #{new_resource}")
- @mysql.execute(:command => "REVOKE ALL ON `#{new_resource.database}`.* FROM #{user}")
- end
+ @current_resource.permissions.each_key do |user|
+ next if new_permissions[user]
+
+ converge_by("revoke all for #{user} on #{new_resource}") do
+ Chef::Log.info("Revoking all for #{user} on #{new_resource}")
+ @mysql.execute(:command => "REVOKE ALL ON `#{new_resource.database}`.* FROM #{user}")
end
end
- new_permissions.each do |user,new_privileges|
+ new_permissions.each do |user, new_privileges|
current_privileges = @current_resource.permissions[user] || {}
new_privileges = Array(new_privileges)
@mysql.execute(:command => "GRANT #{@mysql.privilege_name(privilege)} ON `#{new_resource.database}`.* TO #{user}")
end
end
- else
- if current_privileges.include?(privilege)
- converge_by("revoke #{privilege} for #{user} on #{new_resource}") do
- Chef::Log.info("Revoking #{privilege} for #{user} on #{new_resource}")
- @mysql.execute(:command => "REVOKE #{@mysql.privilege_name(privilege)} ON `#{new_resource.database}`.* FROM #{user}")
- end
+ elsif current_privileges.include?(privilege)
+ converge_by("revoke #{privilege} for #{user} on #{new_resource}") do
+ Chef::Log.info("Revoking #{privilege} for #{user} on #{new_resource}")
+ @mysql.execute(:command => "REVOKE #{@mysql.privilege_name(privilege)} ON `#{new_resource.database}`.* FROM #{user}")
end
end
end