cloud-governance 1.1.354__tar.gz → 1.1.356__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.
- {cloud_governance-1.1.354/cloud_governance.egg-info → cloud_governance-1.1.356}/PKG-INFO +1 -1
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/ec2_stop.py +38 -14
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/ibm_cost_report.py +9 -4
- {cloud_governance-1.1.354 → cloud_governance-1.1.356/cloud_governance.egg-info}/PKG-INFO +1 -1
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/setup.py +1 -1
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/LICENSE +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/MANIFEST.in +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/README.md +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/aws_monitor_tickets.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/aws_tagging_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/collect_cro_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/cost_over_usage.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/monitor_cro_instances.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/run_cro.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/aws/ec2/tag_cro_instances.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/abstract_resource.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/azure_monitor_tickets.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/azure_tagging_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/collect_cro_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/cost_over_usage.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/monitor_cro_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/azure/resource_groups/tag_cro_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/common/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_collect_cro_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_cost_over_usage.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/clouds/common/abstract_tagging_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/common/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/common/abstract_monitor_tickets.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/common/cro_object.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/common/run_cro.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/monitor/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/monitor/cloud_monitor.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/utils/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/utils/common_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/utils/constant_variables.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/cloud_resource_orchestration/utils/elastic_search_queries.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/athena/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/athena/abstract_athena_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/athena/boto3_client_athena_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/athena/pyathena_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cloudtrail/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cloudtrail/cloudtrail_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cloudwatch/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cloudwatch/cloudwatch_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cost_explorer/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/cost_explorer/cost_explorer_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/dynamodb/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/dynamodb/dynamodb_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/ec2/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/ec2/ec2_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/iam/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/iam/iam_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/price/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/price/price.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/price/resources_pricing.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/rds/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/rds/rds_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/resource_explorer/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/resource_explorer/resource_explorer_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/resource_tagging_api/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/resource_tagging_api/resource_tag_api_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/s3/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/s3/s3_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/savingsplan/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/savingsplan/savings_plans_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/sts/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/sts/sts_oprations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/support/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/support/support_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/utils/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/utils/common_methods.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/utils/utils.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/common/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/common/common_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/compute/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/compute/compute_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/compute/network_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/compute/resource_group_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/cost_management/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/cost_management/cost_management_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/monitor/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/monitor/monitor_management_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/subscriptions/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/azure/subscriptions/azure_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/cloudability/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/cloudability/cloudability_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/cloudability/templates/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/cloudability/templates/cloudability_dimensions.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/gcp/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/gcp/google_account.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/account/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/account/ibm_account.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/account/ibm_authenticator.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/classic/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/classic/classic_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/developer_tools/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/developer_tools/schematic_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/platform_services/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/platform_services/platform_service_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/tagging/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/tagging/global_tagging_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/vpc/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/vpc/vpc_infra_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/elastic_upload.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/elasticsearch_exceptions.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/elasticsearch_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/modals/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/modals/cost_usage_reports_data.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/elasticsearch/modals/policy_es_data.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/google_drive/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/google_drive/gcp_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/google_drive/google_drive_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/google_drive/upload_to_gsheet.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/jira/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/jira/jira.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/jira/jira_exceptions.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/jira/jira_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/ldap/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/ldap/ldap_search.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/logger/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/logger/init_logger.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/logger/logger_time_stamp.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/gmail.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/mail_message.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/postfix.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/templates/cro_monitor_budget_remain_alert.j2 +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/templates/cro_monitor_budget_remain_high_alert.j2 +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/templates/cro_request_for_manager_approval.j2 +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/templates/policy_alert_agg_message.j2 +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/pandas/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/pandas/pandas_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/tool/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/tool/tool.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/api_requests.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/configs.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/json_datetime_encoder.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/utils.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/environment_variables.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/environment_variables_exceptions.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/es_uploader.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/main.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/main_common_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/main_oerations/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/main_oerations/main_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/run_cloud_resource_orchestration.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/database_idle.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/instance_idle.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/instance_run.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/unattached_volume.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cleanup/unused_nat_gateway.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cost_billing_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cost_explorer.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cost_explorer_payer_billings.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/cost_over_usage.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/ebs_in_use.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/empty_roles.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/ip_unattached.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/monitor/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/monitor/cluster_run.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/monthly_report.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/optimize_resources_report.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/s3_inactive.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/skipped_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/spot_savings_analysis.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/zombie_cluster_resource.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/zombie_snapshots.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/instance_idle.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/instance_run.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/ip_unattached.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/unattached_volume.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cleanup/unused_nat_gateway.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/azure/cost_billing_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/common_policies/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/common_policies/cloudability_cost_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/common_policies/send_aggregated_alerts.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/gcp/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/gcp/cost_billing_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/abstract_policy_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/aws/aws_policy_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/azure/azure_policy_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/helpers/cloudability_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/cost_billing_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/cost_usage_reports.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/ibm_cost_over_usage.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/tag_baremetal.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/tag_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/tag_vm.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/cost_expenditure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/cost_expenditure/cost_report_policies.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/cloudtrail_to_dynamodb.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/dynamodb_upload_data/upload_data_to_dynamodb.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_cluster/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_cluster/remove_cluster_tags.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_cluster/run_tag_cluster_resouces.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_cluster/tag_cluster_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_cluster/tag_cluster_resouces.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/non_cluster_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/remove_non_cluster_tags.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/run_tag_non_cluster_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/tag_non_cluster_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_non_cluster/update_na_tag_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_user/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_user/iam_user_tags.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_user/remove_user_tags.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_user/run_tag_iam_user.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/tag_user/tag_iam_user.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_ec2_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_iam_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/delete_s3_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/run_zombie_cluster_resources.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/validate_zombies.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_cluster/zombie_cluster_common_methods.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/run_zombie_non_cluster_policies.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/aws/zombie_non_cluster/zombie_non_cluster_polices.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/azure/azure_policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/gcp/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/gcp/gcp_policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/gitleaks/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/gitleaks/gitleaks.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/ibm_operations/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/ibm_operations/ibm_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/ibm_operations/ibm_policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/tagging/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_operations/ibm/tagging/tagging_operations.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/aws/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/aws/policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/aws/upload_s3.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/azure/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/azure/policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/common/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/common/abstract_policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/common/abstract_upload.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/common_policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/elasticsearch/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/elasticsearch/upload_elastic_search.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/ibm/__init__.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/policy_runners/ibm/policy_runner.py +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance.egg-info/SOURCES.txt +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance.egg-info/dependency_links.txt +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance.egg-info/not-zip-safe +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance.egg-info/requires.txt +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance.egg-info/top_level.txt +0 -0
- {cloud_governance-1.1.354 → cloud_governance-1.1.356}/setup.cfg +0 -0
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/aws/ec2_stop.py
RENAMED
|
@@ -3,7 +3,8 @@ import operator
|
|
|
3
3
|
|
|
4
4
|
from cloud_governance.common.clouds.aws.cloudtrail.cloudtrail_operations import CloudTrailOperations
|
|
5
5
|
from cloud_governance.common.logger.init_logger import logger
|
|
6
|
-
from cloud_governance.policy.policy_operations.aws.zombie_non_cluster.run_zombie_non_cluster_policies import
|
|
6
|
+
from cloud_governance.policy.policy_operations.aws.zombie_non_cluster.run_zombie_non_cluster_policies import \
|
|
7
|
+
NonClusterZombiePolicy
|
|
7
8
|
from operator import ge
|
|
8
9
|
|
|
9
10
|
|
|
@@ -28,14 +29,17 @@ class EC2Stop(NonClusterZombiePolicy):
|
|
|
28
29
|
This method list all stopped instances for more than 30 days and terminate if dry_run no
|
|
29
30
|
@return:
|
|
30
31
|
"""
|
|
31
|
-
return self.__fetch_stop_instance(sign=ge, instance_days=self.FIRST_MAIL_NOTIFICATION_INSTANCE_DAYS,
|
|
32
|
+
return self.__fetch_stop_instance(sign=ge, instance_days=self.FIRST_MAIL_NOTIFICATION_INSTANCE_DAYS,
|
|
33
|
+
delete_instance_days=self.DELETE_INSTANCE_DAYS)
|
|
32
34
|
|
|
33
35
|
def __fetch_stop_instance(self, instance_days: int, delete_instance_days: int, sign: operator = ge):
|
|
34
36
|
"""
|
|
35
37
|
This method list all stopped instances for more than 30 days and terminate if dry_run no
|
|
36
38
|
@return:
|
|
37
39
|
"""
|
|
38
|
-
instances =
|
|
40
|
+
instances = \
|
|
41
|
+
self._ec2_client.describe_instances(Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}])[
|
|
42
|
+
'Reservations']
|
|
39
43
|
stopped_instances = []
|
|
40
44
|
stopped_instance_tags = {}
|
|
41
45
|
ec2_types = {}
|
|
@@ -51,20 +55,30 @@ class EC2Stop(NonClusterZombiePolicy):
|
|
|
51
55
|
stopped_time = datetime.datetime.now()
|
|
52
56
|
days = self._calculate_days(create_date=stopped_time)
|
|
53
57
|
user = self._get_tag_name_from_tags(tags=resource.get('Tags'), tag_name='User')
|
|
54
|
-
stop_cost = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'), resource_type='ec2',
|
|
58
|
+
stop_cost = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'), resource_type='ec2',
|
|
59
|
+
resource_hours=(self.DAILY_HOURS * days))
|
|
55
60
|
if days in (instance_days, self.SECOND_MAIL_NOTIFICATION_INSTANCE_DAYS):
|
|
56
61
|
if days == self.SECOND_MAIL_NOTIFICATION_INSTANCE_DAYS:
|
|
57
|
-
delta_cost = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'),
|
|
62
|
+
delta_cost = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'),
|
|
63
|
+
resource_type='ec2', resource_hours=(
|
|
64
|
+
self.DAILY_HOURS * (days - self.FIRST_MAIL_NOTIFICATION_INSTANCE_DAYS)))
|
|
58
65
|
else:
|
|
59
66
|
delta_cost = stop_cost
|
|
60
67
|
if user:
|
|
61
|
-
self.__trigger_mail(tags=resource.get('Tags'), stopped_time=stopped_time,
|
|
68
|
+
self.__trigger_mail(tags=resource.get('Tags'), stopped_time=stopped_time,
|
|
69
|
+
resource_id=instance_id, days=days,
|
|
70
|
+
ec2_type=resource.get("InstanceType"), instance_id=instance_id,
|
|
71
|
+
message_type='notification', stop_cost=stop_cost, delta_cost=delta_cost)
|
|
62
72
|
else:
|
|
63
73
|
logger.info('User is missing')
|
|
64
74
|
if days == self.DAYS_TO_NOTIFY_ADMINS:
|
|
65
|
-
delta_charge = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'),
|
|
66
|
-
|
|
67
|
-
|
|
75
|
+
delta_charge = self.get_ebs_cost(resource=resource.get('BlockDeviceMappings'),
|
|
76
|
+
resource_type='ec2', resource_hours=(self.DAILY_HOURS * (
|
|
77
|
+
self.DAYS_TO_NOTIFY_ADMINS - self.SECOND_MAIL_NOTIFICATION_INSTANCE_DAYS)))
|
|
78
|
+
self.__trigger_mail(tags=resource.get('Tags'), stopped_time=stopped_time,
|
|
79
|
+
resource_id=instance_id,
|
|
80
|
+
days=days, ec2_type=resource.get("InstanceType"), instance_id=instance_id,
|
|
81
|
+
admins=self._admins,
|
|
68
82
|
message_type='notify-admin', stop_cost=stop_cost, delta_charge=delta_charge)
|
|
69
83
|
if sign(days, instance_days):
|
|
70
84
|
if days >= delete_instance_days:
|
|
@@ -78,7 +92,7 @@ class EC2Stop(NonClusterZombiePolicy):
|
|
|
78
92
|
'StoppedDate': str(resource.get('UsageOperationUpdateTime')),
|
|
79
93
|
'Name': self._get_tag_name_from_tags(tags=resource.get('Tags'), tag_name='Name'),
|
|
80
94
|
'User': self._get_tag_name_from_tags(tags=resource.get('Tags'), tag_name='User'),
|
|
81
|
-
'
|
|
95
|
+
'ResourceLaunchTime': str(resource.get('LaunchTime')),
|
|
82
96
|
'Policy': self._get_tag_name_from_tags(tags=resource.get('Tags'), tag_name='Policy')})
|
|
83
97
|
if self._dry_run == "no":
|
|
84
98
|
for instance_id, tags in stopped_instance_tags.items():
|
|
@@ -99,7 +113,8 @@ class EC2Stop(NonClusterZombiePolicy):
|
|
|
99
113
|
# logger.info(err)
|
|
100
114
|
return stopped_instances
|
|
101
115
|
|
|
102
|
-
def __trigger_mail(self, tags: list, stopped_time: str, resource_id: str, days: int, image_id: str = '',
|
|
116
|
+
def __trigger_mail(self, tags: list, stopped_time: str, resource_id: str, days: int, image_id: str = '',
|
|
117
|
+
ec2_type: str = '', instance_id: str = '', **kwargs):
|
|
103
118
|
"""
|
|
104
119
|
This method send triggering mail
|
|
105
120
|
@param tags:
|
|
@@ -110,16 +125,25 @@ class EC2Stop(NonClusterZombiePolicy):
|
|
|
110
125
|
"""
|
|
111
126
|
try:
|
|
112
127
|
special_user_mails = self._literal_eval(self._special_user_mails)
|
|
113
|
-
user, instance_name = self._get_tag_name_from_tags(tags=tags,
|
|
128
|
+
user, instance_name = self._get_tag_name_from_tags(tags=tags,
|
|
129
|
+
tag_name='User'), self._get_tag_name_from_tags(tags=tags,
|
|
130
|
+
tag_name='Name')
|
|
114
131
|
to = user if user not in special_user_mails else special_user_mails[user]
|
|
115
132
|
ldap_data = self._ldap.get_user_details(user_name=to)
|
|
116
133
|
cc = []
|
|
117
|
-
subject, body = self._mail_description.ec2_stop(name=ldap_data.get('displayName'), days=days,
|
|
134
|
+
subject, body = self._mail_description.ec2_stop(name=ldap_data.get('displayName'), days=days,
|
|
135
|
+
image_id=image_id,
|
|
136
|
+
delete_instance_days=self.DELETE_INSTANCE_DAYS,
|
|
137
|
+
instance_name=instance_name, resource_id=resource_id,
|
|
138
|
+
stopped_time=stopped_time, ec2_type=ec2_type,
|
|
139
|
+
extra_purse=kwargs.get('stop_cost'))
|
|
118
140
|
if not kwargs.get('admins'):
|
|
119
141
|
kwargs['admins'] = to
|
|
120
142
|
cc = [self._account_admin, f'{ldap_data.get("managerId")}@redhat.com']
|
|
121
143
|
else:
|
|
122
144
|
kwargs['admins'].append(f'{ldap_data.get("managerId")}@redhat.com')
|
|
123
|
-
self._mail.send_email_postfix(to=kwargs.get('admins'), content=body, subject=subject, cc=cc,
|
|
145
|
+
self._mail.send_email_postfix(to=kwargs.get('admins'), content=body, subject=subject, cc=cc,
|
|
146
|
+
resource_id=instance_id, message_type=kwargs.get('message_type'),
|
|
147
|
+
extra_purse=kwargs.get('delta_cost', 0))
|
|
124
148
|
except Exception as err:
|
|
125
149
|
logger.info(err)
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/policy/ibm/ibm_cost_report.py
RENAMED
|
@@ -51,6 +51,8 @@ class IBMCostReport:
|
|
|
51
51
|
hardware_tags = self.collect_tags_from_machines(
|
|
52
52
|
tags=self.classic_operations.get_hardware_tags(hardware_id=str(hardware.get('id'))))
|
|
53
53
|
hardware_tags['fqdn'] = hardware.get('fullyQualifiedDomainName').lower()
|
|
54
|
+
if 'budget' not in hardware_tags:
|
|
55
|
+
hardware_tags['budget'] = self.__environment_variables_dict.get('account')
|
|
54
56
|
collect_machines_data[hardware_tags['fqdn']] = hardware_tags
|
|
55
57
|
return collect_machines_data
|
|
56
58
|
|
|
@@ -86,7 +88,8 @@ class IBMCostReport:
|
|
|
86
88
|
if fqdn not in collect_machines_data:
|
|
87
89
|
user = [user for user in users if user in fqdn]
|
|
88
90
|
if user:
|
|
89
|
-
user_tags = self.ibm_account.get_user_tags_from_gsheet(username=f'{user[0]}@redhat.com',
|
|
91
|
+
user_tags = self.ibm_account.get_user_tags_from_gsheet(username=f'{user[0]}@redhat.com',
|
|
92
|
+
user_email='yes')
|
|
90
93
|
invoice_data[fqdn].update(self.collect_tags_from_machines(user_tags))
|
|
91
94
|
return invoice_data
|
|
92
95
|
|
|
@@ -112,15 +115,17 @@ class IBMCostReport:
|
|
|
112
115
|
collect_machines_data = self.get_hardware_data()
|
|
113
116
|
collect_machines_data.update(self.get_virtual_machine_data())
|
|
114
117
|
invoice_data = self.get_invoice_data(collect_machines_data=collect_machines_data)
|
|
115
|
-
cost_invoice_resource_data = self.concatenate_dictionaries(resource_data=collect_machines_data,
|
|
118
|
+
cost_invoice_resource_data = self.concatenate_dictionaries(resource_data=collect_machines_data,
|
|
119
|
+
invoice_data=invoice_data)
|
|
116
120
|
for tag_name in self.owned_tags:
|
|
117
121
|
cost_list_items = []
|
|
118
122
|
for _, data in cost_invoice_resource_data.items():
|
|
119
|
-
if data
|
|
123
|
+
if data.get(tag_name) != 0 or tag_name == 'budget':
|
|
120
124
|
cost_list_items.append({
|
|
121
125
|
tag_name.capitalize(): data[tag_name],
|
|
122
126
|
'Cost': data['cost'],
|
|
123
127
|
'Budget': self._elastic_upload.account
|
|
124
128
|
})
|
|
125
|
-
self._elastic_upload.es_upload_data(items=cost_list_items,
|
|
129
|
+
self._elastic_upload.es_upload_data(items=cost_list_items,
|
|
130
|
+
es_index=f'{self._elastic_upload.es_index}-{tag_name.lower()}')
|
|
126
131
|
return True
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/__init__.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/aws/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/gcp/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/clouds/ibm/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/jira/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/ldap/__init__.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/ldap/ldap_search.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/logger/__init__.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/logger/init_logger.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/__init__.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/gmail.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/mail_message.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/mails/postfix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/pandas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/tool/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/__init__.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/api_requests.py
RENAMED
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/configs.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/common/utils/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{cloud_governance-1.1.354 → cloud_governance-1.1.356}/cloud_governance/main/environment_variables.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|