cloud-governance 1.1.385__tar.gz → 1.1.386__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 (279) hide show
  1. {cloud_governance-1.1.385/cloud_governance.egg-info → cloud_governance-1.1.386}/PKG-INFO +1 -1
  2. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/subscriptions/azure_operations.py +1 -0
  3. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/environment_variables.py +5 -6
  4. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/main.py +1 -1
  5. cloud_governance-1.1.386/cloud_governance/policy/azure/tag_azure_resource_group.py +84 -0
  6. {cloud_governance-1.1.385 → cloud_governance-1.1.386/cloud_governance.egg-info}/PKG-INFO +1 -1
  7. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance.egg-info/SOURCES.txt +1 -0
  8. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/setup.py +1 -1
  9. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/LICENSE +0 -0
  10. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/MANIFEST.in +0 -0
  11. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/README.md +0 -0
  12. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/__init__.py +0 -0
  13. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/__init__.py +0 -0
  14. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/__init__.py +0 -0
  15. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/__init__.py +0 -0
  16. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/__init__.py +0 -0
  17. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/aws_monitor_tickets.py +0 -0
  18. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/aws_tagging_operations.py +0 -0
  19. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/collect_cro_reports.py +0 -0
  20. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/cost_over_usage.py +0 -0
  21. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/monitor_cro_instances.py +0 -0
  22. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/run_cro.py +0 -0
  23. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/tag_cro_instances.py +0 -0
  24. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/__init__.py +0 -0
  25. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/__init__.py +0 -0
  26. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/abstract_resource.py +0 -0
  27. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/azure_monitor_tickets.py +0 -0
  28. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/azure_tagging_operations.py +0 -0
  29. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/collect_cro_reports.py +0 -0
  30. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/cost_over_usage.py +0 -0
  31. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/monitor_cro_resources.py +0 -0
  32. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/tag_cro_resources.py +0 -0
  33. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/common/__init__.py +0 -0
  34. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_collect_cro_reports.py +0 -0
  35. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_cost_over_usage.py +0 -0
  36. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_tagging_operations.py +0 -0
  37. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/common/__init__.py +0 -0
  38. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/common/abstract_monitor_tickets.py +0 -0
  39. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/common/cro_object.py +0 -0
  40. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/common/run_cro.py +0 -0
  41. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/monitor/__init__.py +0 -0
  42. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/monitor/cloud_monitor.py +0 -0
  43. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/utils/__init__.py +0 -0
  44. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/utils/common_operations.py +0 -0
  45. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/utils/constant_variables.py +0 -0
  46. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/cloud_resource_orchestration/utils/elastic_search_queries.py +0 -0
  47. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/__init__.py +0 -0
  48. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/__init__.py +0 -0
  49. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/__init__.py +0 -0
  50. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/athena/__init__.py +0 -0
  51. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/athena/abstract_athena_operations.py +0 -0
  52. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/athena/boto3_client_athena_operations.py +0 -0
  53. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/athena/pyathena_operations.py +0 -0
  54. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cloudtrail/__init__.py +0 -0
  55. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cloudtrail/cloudtrail_operations.py +0 -0
  56. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cloudwatch/__init__.py +0 -0
  57. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cloudwatch/cloudwatch_operations.py +0 -0
  58. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cost_explorer/__init__.py +0 -0
  59. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/cost_explorer/cost_explorer_operations.py +0 -0
  60. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/dynamodb/__init__.py +0 -0
  61. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/dynamodb/dynamodb_operations.py +0 -0
  62. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/ec2/__init__.py +0 -0
  63. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/ec2/ec2_operations.py +0 -0
  64. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/iam/__init__.py +0 -0
  65. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/iam/iam_operations.py +0 -0
  66. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/price/__init__.py +0 -0
  67. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/price/price.py +0 -0
  68. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/price/resources_pricing.py +0 -0
  69. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/rds/__init__.py +0 -0
  70. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/rds/rds_operations.py +0 -0
  71. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/resource_explorer/__init__.py +0 -0
  72. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/resource_explorer/resource_explorer_operations.py +0 -0
  73. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/resource_tagging_api/__init__.py +0 -0
  74. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/resource_tagging_api/resource_tag_api_operations.py +0 -0
  75. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/s3/__init__.py +0 -0
  76. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/s3/s3_operations.py +0 -0
  77. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/savingsplan/__init__.py +0 -0
  78. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/savingsplan/savings_plans_operations.py +0 -0
  79. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/sts/__init__.py +0 -0
  80. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/sts/sts_oprations.py +0 -0
  81. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/support/__init__.py +0 -0
  82. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/support/support_operations.py +0 -0
  83. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/utils/__init__.py +0 -0
  84. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/utils/common_methods.py +0 -0
  85. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/aws/utils/utils.py +0 -0
  86. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/__init__.py +0 -0
  87. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/common/__init__.py +0 -0
  88. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/common/common_operations.py +0 -0
  89. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/compute/__init__.py +0 -0
  90. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/compute/compute_operations.py +0 -0
  91. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/compute/network_operations.py +0 -0
  92. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/compute/resource_group_operations.py +0 -0
  93. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/cost_management/__init__.py +0 -0
  94. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/cost_management/cost_management_operations.py +0 -0
  95. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/monitor/__init__.py +0 -0
  96. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/monitor/monitor_management_operations.py +0 -0
  97. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/azure/subscriptions/__init__.py +0 -0
  98. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/cloudability/__init__.py +0 -0
  99. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/cloudability/cloudability_operations.py +0 -0
  100. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/cloudability/templates/__init__.py +0 -0
  101. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/cloudability/templates/cloudability_dimensions.py +0 -0
  102. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/gcp/__init__.py +0 -0
  103. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/gcp/google_account.py +0 -0
  104. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/__init__.py +0 -0
  105. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/account/__init__.py +0 -0
  106. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/account/ibm_account.py +0 -0
  107. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/account/ibm_authenticator.py +0 -0
  108. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/classic/__init__.py +0 -0
  109. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/classic/classic_operations.py +0 -0
  110. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/developer_tools/__init__.py +0 -0
  111. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/developer_tools/schematic_operations.py +0 -0
  112. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/platform_services/__init__.py +0 -0
  113. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/platform_services/platform_service_operations.py +0 -0
  114. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/tagging/__init__.py +0 -0
  115. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/tagging/global_tagging_operations.py +0 -0
  116. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/vpc/__init__.py +0 -0
  117. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/clouds/ibm/vpc/vpc_infra_operations.py +0 -0
  118. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/__init__.py +0 -0
  119. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/elastic_upload.py +0 -0
  120. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/elasticsearch_exceptions.py +0 -0
  121. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/elasticsearch_operations.py +0 -0
  122. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/modals/__init__.py +0 -0
  123. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/modals/cost_usage_reports_data.py +0 -0
  124. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/elasticsearch/modals/policy_es_data.py +0 -0
  125. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/google_drive/__init__.py +0 -0
  126. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/google_drive/gcp_operations.py +0 -0
  127. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/google_drive/google_drive_operations.py +0 -0
  128. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/google_drive/upload_to_gsheet.py +0 -0
  129. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/jira/__init__.py +0 -0
  130. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/jira/jira.py +0 -0
  131. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/jira/jira_exceptions.py +0 -0
  132. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/jira/jira_operations.py +0 -0
  133. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/ldap/__init__.py +0 -0
  134. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/ldap/ldap_search.py +0 -0
  135. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/logger/__init__.py +0 -0
  136. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/logger/init_logger.py +0 -0
  137. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/logger/logger_time_stamp.py +0 -0
  138. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/__init__.py +0 -0
  139. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/gmail.py +0 -0
  140. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/mail_message.py +0 -0
  141. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/postfix.py +0 -0
  142. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/templates/cro_monitor_budget_remain_alert.j2 +0 -0
  143. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/templates/cro_monitor_budget_remain_high_alert.j2 +0 -0
  144. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/templates/cro_request_for_manager_approval.j2 +0 -0
  145. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/mails/templates/policy_alert_agg_message.j2 +0 -0
  146. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/pandas/__init__.py +0 -0
  147. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/pandas/pandas_operations.py +0 -0
  148. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/tool/__init__.py +0 -0
  149. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/tool/tool.py +0 -0
  150. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/utils/__init__.py +0 -0
  151. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/utils/api_requests.py +0 -0
  152. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/utils/configs.py +0 -0
  153. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/utils/json_datetime_encoder.py +0 -0
  154. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/common/utils/utils.py +0 -0
  155. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/__init__.py +0 -0
  156. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/environment_variables_exceptions.py +0 -0
  157. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/es_uploader.py +0 -0
  158. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/main_common_operations.py +0 -0
  159. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/main_oerations/__init__.py +0 -0
  160. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/main_oerations/main_operations.py +0 -0
  161. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/main/run_cloud_resource_orchestration.py +0 -0
  162. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/__init__.py +0 -0
  163. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/__init__.py +0 -0
  164. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/__init__.py +0 -0
  165. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/database_idle.py +0 -0
  166. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/instance_idle.py +0 -0
  167. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/instance_run.py +0 -0
  168. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/unattached_volume.py +0 -0
  169. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cleanup/unused_nat_gateway.py +0 -0
  170. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cost_billing_reports.py +0 -0
  171. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cost_explorer.py +0 -0
  172. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cost_explorer_payer_billings.py +0 -0
  173. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/cost_over_usage.py +0 -0
  174. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/ebs_in_use.py +0 -0
  175. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/ec2_stop.py +0 -0
  176. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/empty_roles.py +0 -0
  177. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/ip_unattached.py +0 -0
  178. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/monitor/__init__.py +0 -0
  179. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/monitor/cluster_run.py +0 -0
  180. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/monthly_report.py +0 -0
  181. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/optimize_resources_report.py +0 -0
  182. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/s3_inactive.py +0 -0
  183. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/skipped_resources.py +0 -0
  184. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/spot_savings_analysis.py +0 -0
  185. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/unused_access_key.py +0 -0
  186. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/zombie_cluster_resource.py +0 -0
  187. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/aws/zombie_snapshots.py +0 -0
  188. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/__init__.py +0 -0
  189. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/__init__.py +0 -0
  190. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/instance_idle.py +0 -0
  191. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/instance_run.py +0 -0
  192. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/ip_unattached.py +0 -0
  193. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/unattached_volume.py +0 -0
  194. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cleanup/unused_nat_gateway.py +0 -0
  195. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/azure/cost_billing_reports.py +0 -0
  196. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/common_policies/__init__.py +0 -0
  197. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/common_policies/cloudability_cost_reports.py +0 -0
  198. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/common_policies/send_aggregated_alerts.py +0 -0
  199. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/gcp/__init__.py +0 -0
  200. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/gcp/cost_billing_reports.py +0 -0
  201. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/__init__.py +0 -0
  202. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/abstract_policy_operations.py +0 -0
  203. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/aws/__init__.py +0 -0
  204. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/aws/aws_policy_operations.py +0 -0
  205. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/azure/__init__.py +0 -0
  206. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/azure/azure_policy_operations.py +0 -0
  207. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/helpers/cloudability_operations.py +0 -0
  208. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/__init__.py +0 -0
  209. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/cost_billing_reports.py +0 -0
  210. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/cost_usage_reports.py +0 -0
  211. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/ibm_cost_over_usage.py +0 -0
  212. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/ibm_cost_report.py +0 -0
  213. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/tag_baremetal.py +0 -0
  214. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/tag_resources.py +0 -0
  215. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/ibm/tag_vm.py +0 -0
  216. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/__init__.py +0 -0
  217. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/__init__.py +0 -0
  218. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/cost_expenditure/__init__.py +0 -0
  219. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/cost_expenditure/cost_report_policies.py +0 -0
  220. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/__init__.py +0 -0
  221. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/cloudtrail_to_dynamodb.py +0 -0
  222. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/upload_data_to_dynamodb.py +0 -0
  223. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_cluster/__init__.py +0 -0
  224. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_cluster/remove_cluster_tags.py +0 -0
  225. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_cluster/run_tag_cluster_resouces.py +0 -0
  226. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_cluster/tag_cluster_operations.py +0 -0
  227. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_cluster/tag_cluster_resouces.py +0 -0
  228. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/__init__.py +0 -0
  229. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/non_cluster_operations.py +0 -0
  230. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/remove_non_cluster_tags.py +0 -0
  231. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/run_tag_non_cluster_resources.py +0 -0
  232. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/tag_non_cluster_resources.py +0 -0
  233. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/update_na_tag_resources.py +0 -0
  234. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_user/__init__.py +0 -0
  235. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_user/iam_user_tags.py +0 -0
  236. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_user/remove_user_tags.py +0 -0
  237. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_user/run_tag_iam_user.py +0 -0
  238. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/tag_user/tag_iam_user.py +0 -0
  239. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/__init__.py +0 -0
  240. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_ec2_resources.py +0 -0
  241. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_iam_resources.py +0 -0
  242. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_s3_resources.py +0 -0
  243. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/run_zombie_cluster_resources.py +0 -0
  244. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/validate_zombies.py +0 -0
  245. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_cluster/zombie_cluster_common_methods.py +0 -0
  246. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/__init__.py +0 -0
  247. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/run_zombie_non_cluster_policies.py +0 -0
  248. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/zombie_non_cluster_polices.py +0 -0
  249. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/azure/__init__.py +0 -0
  250. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/azure/azure_policy_runner.py +0 -0
  251. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/gcp/__init__.py +0 -0
  252. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/gcp/gcp_policy_runner.py +0 -0
  253. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/gitleaks/__init__.py +0 -0
  254. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/gitleaks/gitleaks.py +0 -0
  255. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/__init__.py +0 -0
  256. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/ibm_operations/__init__.py +0 -0
  257. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/ibm_operations/ibm_operations.py +0 -0
  258. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/ibm_operations/ibm_policy_runner.py +0 -0
  259. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/tagging/__init__.py +0 -0
  260. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_operations/ibm/tagging/tagging_operations.py +0 -0
  261. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/__init__.py +0 -0
  262. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/aws/__init__.py +0 -0
  263. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/aws/policy_runner.py +0 -0
  264. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/aws/upload_s3.py +0 -0
  265. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/azure/__init__.py +0 -0
  266. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/azure/policy_runner.py +0 -0
  267. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/common/__init__.py +0 -0
  268. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/common/abstract_policy_runner.py +0 -0
  269. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/common/abstract_upload.py +0 -0
  270. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/common_policy_runner.py +0 -0
  271. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/elasticsearch/__init__.py +0 -0
  272. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/elasticsearch/upload_elastic_search.py +0 -0
  273. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/ibm/__init__.py +0 -0
  274. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance/policy/policy_runners/ibm/policy_runner.py +0 -0
  275. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance.egg-info/dependency_links.txt +0 -0
  276. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance.egg-info/not-zip-safe +0 -0
  277. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance.egg-info/requires.txt +0 -0
  278. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/cloud_governance.egg-info/top_level.txt +0 -0
  279. {cloud_governance-1.1.385 → cloud_governance-1.1.386}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloud-governance
3
- Version: 1.1.385
3
+ Version: 1.1.386
4
4
  Summary: Cloud Governance Tool
5
5
  Home-page: https://github.com/redhat-performance/cloud-governance
6
6
  Author: Red Hat
@@ -24,6 +24,7 @@ class AzureOperations:
24
24
  self.billing_client = BillingManagementClient(credential=self.__default_creds,
25
25
  subscription_id=self.subscription_id)
26
26
  self.__account_id = self.__environment_variables_dict.get('AZURE_ACCOUNT_ID')
27
+ self.global_tags = self.__environment_variables_dict.get('GLOBAL_TAGS')
27
28
  self.cloud_name = 'AZURE'
28
29
  self.scope = f'subscriptions/{self.subscription_id}'
29
30
 
@@ -70,7 +70,7 @@ class EnvironmentVariables:
70
70
  self._environment_variables_dict['account'] = EnvironmentVariables.get_env('account', '').upper().strip()
71
71
  self._environment_variables_dict['AWS_DEFAULT_REGION'] = EnvironmentVariables.get_env('AWS_DEFAULT_REGION', '')
72
72
  self._environment_variables_dict['log_level'] = EnvironmentVariables.get_env('log_level', 'INFO')
73
-
73
+ self._environment_variables_dict['GLOBAL_TAGS'] = literal_eval(EnvironmentVariables.get_env('GLOBAL_TAGS', "{}"))
74
74
  self._environment_variables_dict['DAYS_TO_TAKE_ACTION'] = int(
75
75
  EnvironmentVariables.get_env('DAYS_TO_TAKE_ACTION', "7"))
76
76
  if not hasattr(self, 'POLICIES_LIST'):
@@ -108,6 +108,7 @@ class EnvironmentVariables:
108
108
  'cost_explorer_payer_billings', 'spot_savings_analysis']
109
109
  self._environment_variables_dict['ibm_policies'] = ['tag_baremetal', 'tag_vm', 'ibm_cost_report',
110
110
  'ibm_cost_over_usage']
111
+ self._environment_variables_dict['azure_policies'] = ['tag_azure_resource_group']
111
112
  if self._environment_variables_dict['policy'] in self._environment_variables_dict['cost_policies']:
112
113
  es_index = 'cloud-governance-global-cost-billing-index'
113
114
 
@@ -150,10 +151,9 @@ class EnvironmentVariables:
150
151
  self._environment_variables_dict['AZURE_ACCOUNT_ID'] = EnvironmentVariables.get_env('AZURE_ACCOUNT_ID', '')
151
152
  self._environment_variables_dict['AZURE_CLIENT_ID'] = EnvironmentVariables.get_env('AZURE_CLIENT_ID', '')
152
153
  self._environment_variables_dict['AZURE_TENANT_ID'] = EnvironmentVariables.get_env('AZURE_TENANT_ID', '')
153
- self._environment_variables_dict['AZURE_CLIENT_SECRET'] = EnvironmentVariables.get_env('AZURE_CLIENT_SECRET',
154
- '')
155
- self._environment_variables_dict['AZURE_SUBSCRIPTION_ID'] = EnvironmentVariables.get_env(
156
- 'AZURE_SUBSCRIPTION_ID', '')
154
+ self._environment_variables_dict['AZURE_CLIENT_SECRET'] = EnvironmentVariables.get_env('AZURE_CLIENT_SECRET', '')
155
+ self._environment_variables_dict['AZURE_SUBSCRIPTION_ID'] = EnvironmentVariables.get_env('AZURE_SUBSCRIPTION_ID', '')
156
+ self._environment_variables_dict['AZURE_SUBSCRIPTION_ID'] = EnvironmentVariables.get_env('AZURE_SUBSCRIPTION_ID', '')
157
157
  if self._environment_variables_dict['AZURE_CLIENT_ID'] and self._environment_variables_dict['AZURE_TENANT_ID'] \
158
158
  and self._environment_variables_dict['AZURE_CLIENT_SECRET']:
159
159
  self._environment_variables_dict['PUBLIC_CLOUD_NAME'] = 'AZURE'
@@ -411,7 +411,6 @@ class EnvironmentVariables:
411
411
 
412
412
 
413
413
  environment_variables = EnvironmentVariables()
414
-
415
414
  # env vars examples
416
415
  # os.environ['AWS_DEFAULT_REGION'] = 'us-east-2'
417
416
  # os.environ['AWS_DEFAULT_REGION'] = 'all'
@@ -254,7 +254,7 @@ def main():
254
254
  if environment_variables_dict.get('PUBLIC_CLOUD_NAME') and environment_variables_dict.get(
255
255
  'PUBLIC_CLOUD_NAME').upper() == 'AZURE':
256
256
  azure_cost_policy_runner = None
257
- is_azure_policy_runner = policy in environment_variables_dict.get('cost_policies')
257
+ is_azure_policy_runner = policy in environment_variables_dict.get('cost_policies') or policy in environment_variables_dict.get('azure_policies')
258
258
  if is_azure_policy_runner:
259
259
  azure_cost_policy_runner = AzurePolicyRunner()
260
260
 
@@ -0,0 +1,84 @@
1
+ from azure.mgmt.resource import ResourceManagementClient
2
+ from cloud_governance.common.logger.init_logger import logger
3
+ from cloud_governance.common.clouds.azure.subscriptions.azure_operations import AzureOperations
4
+
5
+
6
+ class TagAzureResourceGroup:
7
+ def __init__(self):
8
+ """
9
+ Initialize Azure clients and set the tags to apply.
10
+ """
11
+ self.__azure_operations = AzureOperations()
12
+ self.__subscription_id = self.__azure_operations.subscription_id
13
+ self.__credential = self.__azure_operations._AzureOperations__default_creds # reuse credentials
14
+ self.resource_client = ResourceManagementClient(self.__credential, self.__subscription_id)
15
+ self.__tags_to_add = self.__azure_operations.global_tags
16
+ if not self.__tags_to_add:
17
+ raise ValueError("No tags provided to add. Please set GLOBAL_TAGS environment variable.")
18
+
19
+ def tag_all(self):
20
+ """
21
+ Tag all resource groups and their contained resources with the specified tags.
22
+ """
23
+ resource_groups = self.resource_client.resource_groups.list()
24
+
25
+ for rg in resource_groups:
26
+ logger.info(f"Processing resource group: {rg.name}")
27
+ # Tag the resource group
28
+ try:
29
+ self.resource_client.resource_groups.update(
30
+ resource_group_name=rg.name,
31
+ parameters={"tags": self.__tags_to_add}
32
+ )
33
+ logger.info(f"Tagged resource group: {rg.name}")
34
+ except Exception as e:
35
+ logger.error(f"Failed to tag resource group {rg.name}: {e}")
36
+ continue
37
+
38
+ # Tag all resources in the resource group
39
+ for resource in self.resource_client.resources.list_by_resource_group(rg.name):
40
+ logger.info(f"Tagging resource: {resource.name} ({resource.type})")
41
+
42
+ existing_tags = resource.tags or {}
43
+ updated_tags = {**existing_tags, **self.__tags_to_add}
44
+
45
+ try:
46
+ parts = resource.type.split('/')
47
+ provider_ns = parts[0]
48
+ resource_type_str = '/'.join(parts[1:])
49
+
50
+ provider = self.resource_client.providers.get(provider_ns)
51
+
52
+ # Some resource_type may not match exactly, use a relaxed matching
53
+ resource_type_info = next(
54
+ (rt for rt in provider.resource_types if rt.resource_type.lower() == resource_type_str.lower()),
55
+ None
56
+ )
57
+
58
+ if not resource_type_info:
59
+ logger.warning(f"Could not find exact match for resource type: {resource_type_str} in provider {provider_ns}")
60
+ continue
61
+
62
+ api_version = next(
63
+ (v for v in resource_type_info.api_versions if 'preview' not in v.lower()),
64
+ resource_type_info.api_versions[0]
65
+ )
66
+
67
+ poller = self.resource_client.resources.begin_update_by_id(
68
+ resource_id=resource.id,
69
+ api_version=api_version,
70
+ parameters={
71
+ 'location': resource.location,
72
+ 'tags': updated_tags
73
+ }
74
+ )
75
+ poller.result()
76
+ logger.info(f"Tagged resource: {resource.name}")
77
+ except Exception as e:
78
+ logger.error(f"Failed to tag resource {resource.name}: {e}")
79
+
80
+ def run(self):
81
+ """
82
+ This method tags all Azure resources.
83
+ """
84
+ self.tag_all()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloud-governance
3
- Version: 1.1.385
3
+ Version: 1.1.386
4
4
  Summary: Cloud Governance Tool
5
5
  Home-page: https://github.com/redhat-performance/cloud-governance
6
6
  Author: Red Hat
@@ -190,6 +190,7 @@ cloud_governance/policy/aws/monitor/__init__.py
190
190
  cloud_governance/policy/aws/monitor/cluster_run.py
191
191
  cloud_governance/policy/azure/__init__.py
192
192
  cloud_governance/policy/azure/cost_billing_reports.py
193
+ cloud_governance/policy/azure/tag_azure_resource_group.py
193
194
  cloud_governance/policy/azure/cleanup/__init__.py
194
195
  cloud_governance/policy/azure/cleanup/instance_idle.py
195
196
  cloud_governance/policy/azure/cleanup/instance_run.py
@@ -2,7 +2,7 @@ from codecs import open
2
2
  from os import path
3
3
  from setuptools import setup, find_packages
4
4
 
5
- __version__ = '1.1.385'
5
+ __version__ = '1.1.386'
6
6
 
7
7
  here = path.abspath(path.dirname(__file__))
8
8