sqlserver::user::permissions always applied as corrective
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 92/100
Línea de trabajo
Comienza con templates/query/user/permission_exists.sql.epp y compáralo con templates/create/user/permission.sql.epp y templates/query/role/permission_exists.sql.epp. Comprueba la configuración de la variable de permisos y luego ejecuta dos veces la reproducción de Puppet indicada. Se considera terminado cuando la segunda ejecución informa de que el recurso sqlserver_tsql está sincronizado sin volver a aplicar los permisos GRANT.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the Bug
When declaring sqlserver::user::permissions with GRANT permissions, Puppet re-applies the permissions on every run as a corrective change, even though the permissions are already in the desired state.
Expected Behavior
On the second Puppet run (after permissions are already granted), the sqlserver_tsql resource should be in sync and no corrective change should occur.
Steps to Reproduce
- Declare
sqlserver::user::permissionswith e.g.permissions: ['SELECT', 'INSERT']andstate: GRANT - Run Puppet agent — permissions are applied
- Run Puppet agent again — permissions are re-applied as corrective
Root Cause
The onlyif query template templates/query/user/permission_exists.sql.epp iterates over permissions but never assigns the SQL variable @permission:
<% $permissions.each |$requested_permission| { %>
<% $permission = $requested_permission.upcase %>
<%= epp('sqlserver/snippets/user/permission/exists.sql.epp', ...) %>
<% } %>
The Puppet variable $permission is set, but the SQL variable @permission stays NULL. Since permission_name = NULL is never TRUE in SQL Server, the subquery always returns NULL, ISNULL coerces it to 'REVOKE', and the check always sees a mismatch — causing Puppet to re-grant every time.
The create template (templates/create/user/permission.sql.epp) and the role equivalent (templates/query/role/permission_exists.sql.epp) both correctly set @permission. This is the same class of bug as #464 / #500 which fixed the login permission template.
Fix
Add the missing SET @permission = '<%= $permission %>'; line in the query template, matching the create template.
- Lenguaje dominante
- Ruby
- Estrellas
- 5
- Forks
- 23
- Merge medio
- 3 h 17 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de puppetlabs/puppetlabs-sqlserver
-
Paramter as_sysadmin_accounts does not behave in the same way as sql_sysadmin_accountsPosiblemente ocupada @jst-cyr la tomó hace 44 días. Abiertobugfix community
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
puppetlabs/puppetlabs-sqlserver#505 · 1 comentario · 2 reacciones ·
-
Add support for OS LinuxAbiertocommunity
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
puppetlabs/puppetlabs-sqlserver#465 · 1 reacción ·
-
community
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
bugfix community
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
puppetlabs/puppetlabs-sqlserver#427 · 4 comentarios · 2 reacciones ·
Todos los issues de puppetlabs/puppetlabs-sqlserver
Issues similares
-
Bug: Assistant replies lose the space before numbers ("Oct7", "as of10-22-2026") with OpenAI modelsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
we-promise/sure#4441 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
lugassawan/swe-workbench#823 ·
Los mantenedores suelen responder en 1 día
-
[BUG] Transcription spans omit the requested temperaturePosiblemente ocupada @yorzi la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
crmne/ruby_llm#1276 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Admin user page looks up a Tag for every instance-scoped role (`Role#resource_name`)Posiblemente ocupada @pkfrank la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
forem/forem#24083 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
rubyjs/mini_racer#449 ·