cmdbsyncer 4.1.0.dev21__tar.gz → 4.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/PKG-INFO +1 -1
  2. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/_version.py +34 -5
  3. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/views.py +5 -2
  4. cmdbsyncer-4.1.1/application/buildinfo.txt +1 -0
  5. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v4.1.md +8 -1
  6. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/config.py +8 -0
  7. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/local_config_presets.py +5 -0
  8. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/ansible_playbook_run.html +5 -4
  9. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/PKG-INFO +1 -1
  10. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/pyproject.toml +1 -1
  11. cmdbsyncer-4.1.0.dev21/application/buildinfo.txt +0 -1
  12. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/LICENSE +0 -0
  13. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/README.md +0 -0
  14. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/__init__.py +0 -0
  15. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/__init__.py +0 -0
  16. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/inventory.py +0 -0
  17. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/objects.py +0 -0
  18. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/rules.py +0 -0
  19. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/api/syncer.py +0 -0
  20. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/auth/views.py +0 -0
  21. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/.pages +0 -0
  22. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.10.md +0 -0
  23. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.11.md +0 -0
  24. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.12.md +0 -0
  25. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.5.md +0 -0
  26. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.7.md +0 -0
  27. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.8.md +0 -0
  28. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v3.9.md +0 -0
  29. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/changelog/v4.0.md +0 -0
  30. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/cli.py +0 -0
  31. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/docu_links.py +0 -0
  32. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/enterprise.py +0 -0
  33. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/__init__.py +0 -0
  34. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/audit.py +0 -0
  35. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/cron.py +0 -0
  36. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/get_account.py +0 -0
  37. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/inventory.py +0 -0
  38. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/local_config_file.py +0 -0
  39. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/mongo_keys.py +0 -0
  40. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/notification_channels.py +0 -0
  41. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/notification_dispatch.py +0 -0
  42. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/plugins.py +0 -0
  43. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/sates.py +0 -0
  44. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/sql.py +0 -0
  45. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/syncer_jinja.py +0 -0
  46. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/tablib_formater.py +0 -0
  47. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/tests/__init__.py +0 -0
  48. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/helpers/tests/test_sql.py +0 -0
  49. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/mcp_server.py +0 -0
  50. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/__init__.py +0 -0
  51. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/account.py +0 -0
  52. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/config.py +0 -0
  53. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/cron.py +0 -0
  54. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/field_approval.py +0 -0
  55. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/forms.py +0 -0
  56. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/host.py +0 -0
  57. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/host_inventory_tree.py +0 -0
  58. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/notification_channel.py +0 -0
  59. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/notification_rule.py +0 -0
  60. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/notification_state.py +0 -0
  61. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/saved_search.py +0 -0
  62. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/states.py +0 -0
  63. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/models/user.py +0 -0
  64. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/__init__.py +0 -0
  65. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/custom_attributes/models.py +0 -0
  66. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/custom_attributes/rules.py +0 -0
  67. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/custom_attributes/views.py +0 -0
  68. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/debug.py +0 -0
  69. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/email.py +0 -0
  70. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/inventory/__init__.py +0 -0
  71. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/log/log.py +0 -0
  72. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/log/models.py +0 -0
  73. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/log/views.py +0 -0
  74. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/plugin.py +0 -0
  75. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/__init__.py +0 -0
  76. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/filter.py +0 -0
  77. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/match.py +0 -0
  78. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/models.py +0 -0
  79. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/rewrite.py +0 -0
  80. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/rule.py +0 -0
  81. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/rule/views.py +0 -0
  82. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/modules/statefile.py +0 -0
  83. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/notices/strict_certificate_verification.txt +0 -0
  84. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/__init__.py +0 -0
  85. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/__init__.py +0 -0
  86. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/admin_views.py +0 -0
  87. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/inventory.py +0 -0
  88. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/models.py +0 -0
  89. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/playbook_rules.py +0 -0
  90. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/plugin.json +0 -0
  91. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/rules.py +0 -0
  92. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/runner.py +0 -0
  93. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/site_syncer.py +0 -0
  94. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ansible/views.py +0 -0
  95. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/bmc_remedy/__init__.py +0 -0
  96. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/bmc_remedy/bmc_remedy.py +0 -0
  97. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/bmc_remedy/plugin.json +0 -0
  98. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/__init__.py +0 -0
  99. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/admin_views.py +0 -0
  100. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/bi.py +0 -0
  101. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/cmk2.py +0 -0
  102. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/cmk_rules.py +0 -0
  103. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/dcd.py +0 -0
  104. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/downtimes.py +0 -0
  105. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/groups.py +0 -0
  106. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/helpers.py +0 -0
  107. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/import_v1.py +0 -0
  108. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/import_v2.py +0 -0
  109. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/inits.py +0 -0
  110. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/inventorize.py +0 -0
  111. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/models.py +0 -0
  112. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/notification_rules.py +0 -0
  113. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/passwords.py +0 -0
  114. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/plugin.json +0 -0
  115. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/poolfolder.py +0 -0
  116. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/rules.py +0 -0
  117. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/sites.py +0 -0
  118. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/syncer.py +0 -0
  119. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tags.py +0 -0
  120. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/__init__.py +0 -0
  121. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_bi.py +0 -0
  122. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_cmk2.py +0 -0
  123. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_cmk_rules.py +0 -0
  124. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_dcd.py +0 -0
  125. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_downtimes.py +0 -0
  126. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_groups.py +0 -0
  127. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_helpers.py +0 -0
  128. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_import_v1.py +0 -0
  129. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_import_v2.py +0 -0
  130. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_inventorize.py +0 -0
  131. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_notification_rules.py +0 -0
  132. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_passwords.py +0 -0
  133. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_poolfolder.py +0 -0
  134. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_rules.py +0 -0
  135. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_sites.py +0 -0
  136. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_syncer.py +0 -0
  137. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_tags.py +0 -0
  138. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/tests/test_users.py +0 -0
  139. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/users.py +0 -0
  140. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/checkmk/views.py +0 -0
  141. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/cisco_dna/__init__.py +0 -0
  142. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/cisco_dna/plugin.json +0 -0
  143. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/cisco_dna/syncer.py +0 -0
  144. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/cron.py +0 -0
  145. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/csv/__init__.py +0 -0
  146. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/csv/csv.py +0 -0
  147. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/csv/plugin.json +0 -0
  148. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/file_requests.py +0 -0
  149. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/__init__.py +0 -0
  150. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/admin_views.py +0 -0
  151. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/models.py +0 -0
  152. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/plugin.json +0 -0
  153. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/rules.py +0 -0
  154. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/syncer.py +0 -0
  155. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/idoit/views.py +0 -0
  156. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/__init__.py +0 -0
  157. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/applications.py +0 -0
  158. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/devices.py +0 -0
  159. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/executables.py +0 -0
  160. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/jdisc.py +0 -0
  161. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jdisc/plugin.json +0 -0
  162. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira/__init__.py +0 -0
  163. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira/jira.py +0 -0
  164. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira/plugin.json +0 -0
  165. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/__init__.py +0 -0
  166. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/admin_views.py +0 -0
  167. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/export.py +0 -0
  168. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/jira_cloud.py +0 -0
  169. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/models.py +0 -0
  170. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/plugin.json +0 -0
  171. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/rules.py +0 -0
  172. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/schema_sync.py +0 -0
  173. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/jira_cloud/views.py +0 -0
  174. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/json/__init__.py +0 -0
  175. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/json/json.py +0 -0
  176. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/json/plugin.json +0 -0
  177. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ldap/__init__.py +0 -0
  178. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ldap/ldap.py +0 -0
  179. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/ldap/plugin.json +0 -0
  180. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/maintenance/__init__.py +0 -0
  181. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/maintenance/plugin.json +0 -0
  182. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/mssql/__init__.py +0 -0
  183. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/mssql/plugin.json +0 -0
  184. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/mysql/__init__.py +0 -0
  185. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/mysql/mysql.py +0 -0
  186. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/mysql/plugin.json +0 -0
  187. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/__init__.py +0 -0
  188. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/admin_views.py +0 -0
  189. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/cluster.py +0 -0
  190. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/contacts.py +0 -0
  191. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/dataflow.py +0 -0
  192. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/devices.py +0 -0
  193. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/interfaces.py +0 -0
  194. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/ips.py +0 -0
  195. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/models.py +0 -0
  196. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/netbox.py +0 -0
  197. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/networks.py +0 -0
  198. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/plugin.json +0 -0
  199. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/prefixes.py +0 -0
  200. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/rules.py +0 -0
  201. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/views.py +0 -0
  202. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/netbox/virtualmachines.py +0 -0
  203. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/prtg/__init__.py +0 -0
  204. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/prtg/plugin.json +0 -0
  205. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/prtg/prtg.py +0 -0
  206. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/pyodbc/__init__.py +0 -0
  207. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/pyodbc/plugin.json +0 -0
  208. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/pyodbc/pyodbc.py +0 -0
  209. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rest/__init__.py +0 -0
  210. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rest/plugin.json +0 -0
  211. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rest/rest.py +0 -0
  212. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/__init__.py +0 -0
  213. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/admin_views.py +0 -0
  214. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/autorules.py +0 -0
  215. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/models.py +0 -0
  216. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/plugin.json +0 -0
  217. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/rule_definitions.py +0 -0
  218. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/rule_import_export.py +0 -0
  219. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/rules/views.py +0 -0
  220. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/syncer_shell.py +0 -0
  221. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/__init__.py +0 -0
  222. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/admin_views.py +0 -0
  223. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/custom_attributes.py +0 -0
  224. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/models.py +0 -0
  225. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/plugin.json +0 -0
  226. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/rules.py +0 -0
  227. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/views.py +0 -0
  228. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/vmware/vmware.py +0 -0
  229. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/yml/__init__.py +0 -0
  230. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/yml/plugin.json +0 -0
  231. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins/yml/yml.py +0 -0
  232. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/plugins_cli.py +0 -0
  233. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/static/css/cmdbsyncer.css +0 -0
  234. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/static/js/main.js +0 -0
  235. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/static/logo_white.png +0 -0
  236. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/_brand.html +0 -0
  237. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/_theme.html +0 -0
  238. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/_host_tabs.html +0 -0
  239. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/account_pick_type.html +0 -0
  240. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/ansible_project_detail.html +0 -0
  241. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/ansible_rule_list.html +0 -0
  242. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/bulk_label_form.html +0 -0
  243. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/changelog_archive.html +0 -0
  244. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/checkmk_rule_mngmt_list.html +0 -0
  245. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/checkmk_settings_list.html +0 -0
  246. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/copy_as_new_form.html +0 -0
  247. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/data_quality.html +0 -0
  248. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/file/list.html +0 -0
  249. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/file/modals/form.html +0 -0
  250. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_details.html +0 -0
  251. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_edit.html +0 -0
  252. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_inventory_tree.html +0 -0
  253. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_list.html +0 -0
  254. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_relations_graph.html +0 -0
  255. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/host_timeline.html +0 -0
  256. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/index.html +0 -0
  257. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/local_config_editor.html +0 -0
  258. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/master.html +0 -0
  259. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/model/clone_confirm.html +0 -0
  260. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/model/inline_list_base.html +0 -0
  261. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/object_list.html +0 -0
  262. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/set_cmk_version_form.html +0 -0
  263. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/admin/set_template_form.html +0 -0
  264. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/base.html +0 -0
  265. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/change_password.html +0 -0
  266. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/debug.html +0 -0
  267. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/debug_host.html +0 -0
  268. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/email/newuser.html +0 -0
  269. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/email/notification.html +0 -0
  270. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/email/resetpassword.html +0 -0
  271. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/formular.html +0 -0
  272. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/license_info.html +0 -0
  273. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/login.html +0 -0
  274. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/logout_confirm.html +0 -0
  275. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/request_password.html +0 -0
  276. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/set_2fa.html +0 -0
  277. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/templates/set_theme.html +0 -0
  278. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/themes/dracula.css +0 -0
  279. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/themes/gruvbox-dark.css +0 -0
  280. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/themes/gruvbox-light.css +0 -0
  281. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/themes/nord.css +0 -0
  282. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/themes_registry.py +0 -0
  283. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/_form_fields.py +0 -0
  284. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/_form_sections.py +0 -0
  285. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/account.py +0 -0
  286. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/config.py +0 -0
  287. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/cron.py +0 -0
  288. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/data_quality.py +0 -0
  289. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/default.py +0 -0
  290. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/field_approval.py +0 -0
  291. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/fileadmin.py +0 -0
  292. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/host.py +0 -0
  293. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/host_filters.py +0 -0
  294. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/host_renderers.py +0 -0
  295. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/host_widgets.py +0 -0
  296. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/license.py +0 -0
  297. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/notification_channel.py +0 -0
  298. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/notification_rule.py +0 -0
  299. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/saved_search.py +0 -0
  300. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/application/views/user.py +0 -0
  301. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/SOURCES.txt +0 -0
  302. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/dependency_links.txt +0 -0
  303. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/entry_points.txt +0 -0
  304. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/requires.txt +0 -0
  305. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/cmdbsyncer.egg-info/top_level.txt +0 -0
  306. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/requirements-ansible.txt +0 -0
  307. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/requirements-extras.txt +0 -0
  308. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/requirements.txt +0 -0
  309. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/setup.cfg +0 -0
  310. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/syncerapi/__init__.py +0 -0
  311. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/syncerapi/v1/__init__.py +0 -0
  312. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/syncerapi/v1/core/__init__.py +0 -0
  313. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/syncerapi/v1/inventory/__init__.py +0 -0
  314. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/syncerapi/v1/rest/__init__.py +0 -0
  315. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_api.py +0 -0
  316. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_api_csrf_invariant.py +0 -0
  317. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_default_view.py +0 -0
  318. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_mongo_keys.py +0 -0
  319. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_plugin.py +0 -0
  320. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_plugin_ssti.py +0 -0
  321. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_plugins_cli.py +0 -0
  322. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_rule.py +0 -0
  323. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_rule_match.py +0 -0
  324. {cmdbsyncer-4.1.0.dev21 → cmdbsyncer-4.1.1}/tests/test_webhook_token_hash.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmdbsyncer
3
- Version: 4.1.0.dev21
3
+ Version: 4.1.1
4
4
  Summary: Rule-based modular synchronizer for Checkmk, Netbox, Ansible, I-DOIT, Jira CMDB and 15+ other CMDB/monitoring systems
5
5
  Author-email: Kuhn & Ruess GmbH <info@kuhn-ruess.de>
6
6
  Maintainer-email: Bastian Kuhn <mail@bastian-kuhn.de>
@@ -94,13 +94,42 @@ def _has_unreleased_entries():
94
94
  return bool(match and match.group(1).strip())
95
95
 
96
96
 
97
- def get_display_version():
98
- """Display form: ``4.0.0`` / ``4.0.0-dev`` / ``3.12-LTS3``.
97
+ def _installed_version():
98
+ """The version recorded in installed-package metadata, or None.
99
+
100
+ `pyproject.toml` carries the authoritative pre-release counter
101
+ (``4.1.0.dev22`` etc.) but is gone after ``pip install``. The wheel's
102
+ dist-info keeps it, so ``importlib.metadata`` recovers the suffix on
103
+ both PyPI installs and editable installs. Source checkouts without
104
+ an installation just fall through to the changelog-derived version.
105
+ """
106
+ try:
107
+ from importlib.metadata import ( # pylint: disable=import-outside-toplevel
108
+ PackageNotFoundError, version as _md_version,
109
+ )
110
+ return _md_version('cmdbsyncer')
111
+ except (PackageNotFoundError, ImportError, ModuleNotFoundError):
112
+ return None
99
113
 
100
- PEP 440 stores LTS as ``3.12+lts3``; users see the conventional
101
- ``-LTS`` form. ``-dev`` is appended on the main line while an
102
- ``## Unreleased`` section is open.
114
+
115
+ def get_display_version():
116
+ """Display form: ``4.0.0`` / ``4.0.0-dev22`` / ``3.12-LTS3``.
117
+
118
+ Resolution:
119
+ - LTS lines keep their ``-LTS`` suffix (PEP 440 stores it as ``+lts``).
120
+ - If the installed metadata carries a pre-release suffix (``.devN``,
121
+ ``aN``, ``bN``, ``rcN``), surface it as ``-dev22`` / ``-rc1`` etc.
122
+ so users can tell which dev build they are on.
123
+ - Otherwise, while an ``## Unreleased`` section is still open in the
124
+ active changelog, append a bare ``-dev`` (source checkouts before
125
+ the next pre-release is cut).
103
126
  """
104
127
  if '+lts' in __version__:
105
128
  return __version__.replace('+lts', '-LTS')
129
+ installed = _installed_version()
130
+ if installed:
131
+ match = re.search(r'\.(dev\d+|a\d+|b\d+|rc\d+)$', installed)
132
+ if match:
133
+ base = installed[:match.start()]
134
+ return f'{base}-{match.group(1)}'
106
135
  return f'{__version__}-dev' if _has_unreleased_entries() else __version__
@@ -14,9 +14,12 @@ API_BP = Blueprint('api', __name__)
14
14
 
15
15
  # Rate-limit API auth failures per client IP. Only 401 responses deduct from
16
16
  # the bucket, so legitimate high-volume API traffic is not throttled — only
17
- # brute-force / credential-stuffing attempts are.
17
+ # brute-force / credential-stuffing attempts are. Uses its own bucket
18
+ # (API_RATE_LIMIT), independent of the much stricter form-login budget
19
+ # (AUTH_RATE_LIMIT, used by /auth) — otherwise a polling monitoring agent
20
+ # whose creds are momentarily wrong can lock the whole API for an hour.
18
21
  limiter.limit(
19
- lambda: app.config.get('AUTH_RATE_LIMIT', '3 per minute; 10 per hour'),
22
+ lambda: app.config.get('API_RATE_LIMIT', '30 per minute; 300 per hour'),
20
23
  deduct_when=lambda response: response.status_code == 401,
21
24
  )(API_BP)
22
25
 
@@ -0,0 +1 @@
1
+ BUILD_DATE=2026-05-13T13:17:45Z
@@ -1,6 +1,11 @@
1
1
  # Version 4.1
2
2
 
3
- ## Unreleased
3
+ ## Version 4.1.1
4
+
5
+ ### API
6
+ - FIX: Separate `API_RATE_LIMIT` for `/api/v1` (default `30/min; 300/hour`) so a few 401s no longer lock out monitoring polling for the rest of the hour
7
+
8
+ ## Version 4.1.0
4
9
 
5
10
  ### Ansible
6
11
  - FEAT: Trigger Ansible playbook runs from the host UI with live output and per-host run history
@@ -16,6 +21,7 @@
16
21
  - FIX: `ansible/inventory`, `ansible/inventory_single` and `ansible/cmk_server_inventory` find the pip-installed `cmdbsyncer` on PATH instead of failing with "No such file or directory" when ansible/ lives at `/opt/cmdbsyncer/ansible/`, and they export `CMDBSYNCER_CONFIG_DIR` pointing at the shim's parent directory so the called CLI loads `local_config.py` regardless of ansible-playbook's cwd. The `CMDBSYNCER_CONFIG_DIR` lookup is now honored at package-import time (not only inside the CLI entry point), which is when `local_config.py` is actually loaded — so the shim's env var really does its job and `ansible-playbook` from `/opt/cmdbsyncer/ansible/` no longer fails with "CRYPTOGRAPHY_KEY is not set"
17
22
  - FIX: Ansible Playbook Runner finds `playbooks.yml` at `<install-root>/ansible/` on pip installs (e.g. `/opt/cmdbsyncer/ansible/`) instead of pointing at the unused `<site-packages>/ansible/` path
18
23
  - FIX: GUI playbook runs under mod_wsgi/gunicorn use a per-run temp directory for Ansible's local scratch state instead of inheriting the web user's read-only `$HOME` — fixes "Permission denied: /usr/share/httpd/.ansible/tmp"
24
+ - FIX: Ansible Playbook Runner input labels and empty-state border read from the theme palette instead of hardcoded greys, so they stay legible on Gruvbox Dark / Nord / Dracula
19
25
  - FIX: Offline bundle `install.sh` no longer swallows the playbook copy when `pip install` fails — both steps run independently and report their own status, and `ANSIBLE_TARGET` is replaced by default (no more `FORCE=1` dance for re-installs)
20
26
 
21
27
  ### Hosts
@@ -106,6 +112,7 @@
106
112
  - FIX: PyPI installs now ship every plugin's `plugin.json` (was only the `.py` files), and the user `plugins/` directory plus `disabled_plugins.json` next to `app.wsgi` are picked up correctly instead of being looked for inside `site-packages`
107
113
  - FEAT: Offline installation bundle always ships base, extras and ansible Python dependencies plus the default Ansible playbook collection, and the bundled `install.sh` deploys the playbooks to `/opt/cmdbsyncer/ansible` (override via `ANSIBLE_TARGET`, skip with `SKIP_ANSIBLE=1`, replace existing target with `FORCE=1`)
108
114
  - FEAT: New `make release-pre` target ships sequential pre-release builds (`.devN` / `aN` / `bN` / `rcN`) to PyPI without requiring a hand-edit before each upload; `tools/build_offline_bundle.sh --syncer-version 4.1.0.dev3 --enterprise-version 0.3.9.dev1` pins the offline bundle to those pre-releases so QA can test them on air-gapped systems
115
+ - FEAT: Header version display surfaces the installed pre-release counter — `4.1.0-dev22` / `4.1.0-rc1` etc. — instead of the bare `-dev` suffix, so operators can tell which build is running
109
116
 
110
117
  ### Refactor
111
118
  - REFACTOR: `application/views/host.py` split into focused modules (widgets, filters, renderers)
@@ -196,6 +196,14 @@ class BaseConfig():
196
196
  # Applied per client IP to the POST handler; GET (rendering the form) is
197
197
  # not rate-limited.
198
198
  AUTH_RATE_LIMIT = '3 per minute; 10 per hour'
199
+ # Rate limit for the /api/v1 namespace. Only 401 responses deduct from
200
+ # the bucket (see application/api/views.py), so legitimate polling
201
+ # never spends quota. Picked generous enough that a misconfigured
202
+ # monitoring agent producing repeated 401s does not lock out the whole
203
+ # API for the rest of the hour, while still throttling credential
204
+ # stuffing. Set tighter via local_config.py if your network is fully
205
+ # trusted, or looser if you have many polling clients.
206
+ API_RATE_LIMIT = '30 per minute; 300 per hour'
199
207
  # Flask-Limiter storage backend. Default is in-process memory, which is
200
208
  # fine for single-worker deployments. For multiple workers, set to
201
209
  # e.g. 'redis://localhost:6379' or 'mongodb://localhost:27017/cmdb-api'.
@@ -158,6 +158,11 @@ PRESETS = [
158
158
  'default': '3 per minute; 10 per hour',
159
159
  'hint': 'Per-IP rate limit for login + password-reset POSTs '
160
160
  '(Flask-Limiter syntax).'},
161
+ {'key': 'API_RATE_LIMIT', 'type': 'str',
162
+ 'default': '30 per minute; 300 per hour',
163
+ 'hint': 'Per-IP rate limit for /api/v1. Only 401 responses '
164
+ 'count, so legitimate polling never spends quota. '
165
+ 'Raise if your monitoring polls many endpoints.'},
161
166
  {'key': 'RATELIMIT_STORAGE_URI', 'type': 'str',
162
167
  'default': 'memory://',
163
168
  'hint': 'Backend for rate-limit counters. Use redis:// or '
@@ -22,7 +22,7 @@
22
22
  }
23
23
  .ansible-runner-card label {
24
24
  font-size: 11px;
25
- color: #555;
25
+ color: var(--surface-muted, #555);
26
26
  margin: 0 0 2px 0;
27
27
  display: block;
28
28
  text-transform: uppercase;
@@ -32,11 +32,12 @@
32
32
  font-size: 14px;
33
33
  font-weight: 600;
34
34
  padding: 6px 0 0 0;
35
+ color: var(--surface-text, inherit);
35
36
  }
36
37
  .ansible-runner-card .playbook-file {
37
38
  font-family: monospace;
38
39
  font-size: 11px;
39
- color: #888;
40
+ color: var(--surface-muted, #888);
40
41
  padding-bottom: 4px;
41
42
  }
42
43
  .ansible-runner-card input.form-control {
@@ -46,8 +47,8 @@
46
47
  .ansible-empty {
47
48
  padding: 24px;
48
49
  text-align: center;
49
- color: #888;
50
- border: 1px dashed #ccc;
50
+ color: var(--surface-muted, #888);
51
+ border: 1px dashed var(--surface-border, #ccc);
51
52
  border-radius: 4px;
52
53
  }
53
54
  </style>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmdbsyncer
3
- Version: 4.1.0.dev21
3
+ Version: 4.1.1
4
4
  Summary: Rule-based modular synchronizer for Checkmk, Netbox, Ansible, I-DOIT, Jira CMDB and 15+ other CMDB/monitoring systems
5
5
  Author-email: Kuhn & Ruess GmbH <info@kuhn-ruess.de>
6
6
  Maintainer-email: Bastian Kuhn <mail@bastian-kuhn.de>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cmdbsyncer"
7
- version = "4.1.0.dev21"
7
+ version = "4.1.1"
8
8
  description = "Rule-based modular synchronizer for Checkmk, Netbox, Ansible, I-DOIT, Jira CMDB and 15+ other CMDB/monitoring systems"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1 +0,0 @@
1
- BUILD_DATE=2026-05-13T08:04:42Z
File without changes
File without changes