Showing preview only (6,140K chars total). Download the full file or copy to clipboard to get everything.
Repository: unskript/Awesome-CloudOps-Automation
Branch: master
Commit: 740f230d7d9c
Files: 2805
Total size: 5.3 MB
Directory structure:
gitextract_0y86xh8m/
├── .github/
│ ├── Anatomy-of-Runbook.md
│ ├── CONTRIBUTING.md
│ ├── DEVELOPERGUIDE.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── add_action.yml
│ │ ├── add_chatgpt_action.yml
│ │ ├── add_credential.yml
│ │ ├── add_runbook.yml
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE/
│ │ ├── action_pr_template.yml
│ │ ├── feature_request_template.yml
│ │ ├── lego_pr_template.md
│ │ └── runbook_pr_template.md
│ ├── code-of-conduct.md
│ ├── dependabot.yml
│ ├── guidelines-to-creating-runbook.md
│ ├── hfest_2022_resource.md
│ ├── images/
│ │ ├── actionShield.json
│ │ └── runbookShield.json
│ ├── pull_request_template.md
│ └── workflows/
│ ├── all_module_test.yml
│ ├── build-and-release-docker-lite.yml
│ ├── build-and-release-docker.yml
│ ├── codeql.yml
│ ├── dependency-review.yml
│ ├── generate_readme.yaml
│ ├── lint-test.yaml
│ ├── make-release.yaml
│ ├── run-legoschema.yml
│ ├── sanitize-runbook.yml
│ └── scorecards.yml
├── .gitignore
├── .pylintrc
├── .vscode/
│ └── settings.json
├── AWS/
│ ├── .gitignore
│ ├── AWS_Access_Key_Rotation.ipynb
│ ├── AWS_Access_Key_Rotation.json
│ ├── AWS_Add_Lifecycle_Policy_To_S3_Buckets.ipynb
│ ├── AWS_Add_Lifecycle_Policy_To_S3_Buckets.json
│ ├── AWS_Add_Mandatory_tags_to_EC2.ipynb
│ ├── AWS_Add_Mandatory_tags_to_EC2.json
│ ├── AWS_Add_Tag_Across_Selected_AWS_Resources.ipynb
│ ├── AWS_Add_Tag_Across_Selected_AWS_Resources.json
│ ├── AWS_Bulk_Update_Resource_Tag.ipynb
│ ├── AWS_Bulk_Update_Resource_Tag.json
│ ├── AWS_Change_EBS_Volume_To_GP3_Type.ipynb
│ ├── AWS_Change_EBS_Volume_To_GP3_Type.json
│ ├── AWS_Change_Route53_TTL.ipynb
│ ├── AWS_Change_Route53_TTL.json
│ ├── AWS_Create_New_IAM_User_With_Policy.ipynb
│ ├── AWS_Create_New_IAM_User_With_Policy.json
│ ├── AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.ipynb
│ ├── AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.json
│ ├── AWS_Delete_EBS_Volumes_With_Low_Usage.ipynb
│ ├── AWS_Delete_EBS_Volumes_With_Low_Usage.json
│ ├── AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.ipynb
│ ├── AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.json
│ ├── AWS_Delete_ELBs_With_No_Targets_Or_Instances.ipynb
│ ├── AWS_Delete_ELBs_With_No_Targets_Or_Instances.json
│ ├── AWS_Delete_IAM_User.ipynb
│ ├── AWS_Delete_IAM_User.json
│ ├── AWS_Delete_Old_EBS_Snapshots.ipynb
│ ├── AWS_Delete_Old_EBS_Snapshots.json
│ ├── AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.ipynb
│ ├── AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.json
│ ├── AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.ipynb
│ ├── AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.json
│ ├── AWS_Delete_Unattached_EBS_Volume.ipynb
│ ├── AWS_Delete_Unattached_EBS_Volume.json
│ ├── AWS_Delete_Unused_AWS_Secrets.ipynb
│ ├── AWS_Delete_Unused_AWS_Secrets.json
│ ├── AWS_Delete_Unused_Log_Streams.ipynb
│ ├── AWS_Delete_Unused_Log_Streams.json
│ ├── AWS_Delete_Unused_NAT_Gateways.ipynb
│ ├── AWS_Delete_Unused_NAT_Gateways.json
│ ├── AWS_Delete_Unused_Route53_Healthchecks.ipynb
│ ├── AWS_Delete_Unused_Route53_Healthchecks.json
│ ├── AWS_Detach_ec2_Instance_from_ASG.ipynb
│ ├── AWS_Detach_ec2_Instance_from_ASG.json
│ ├── AWS_EC2_Disk_Cleanup.ipynb
│ ├── AWS_EC2_Disk_Cleanup.json
│ ├── AWS_Enforce_HTTP_Redirection_across_AWS_ALB.ipynb
│ ├── AWS_Enforce_HTTP_Redirection_across_AWS_ALB.json
│ ├── AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.ipynb
│ ├── AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.json
│ ├── AWS_Get_Elb_Unhealthy_Instances.ipynb
│ ├── AWS_Get_Elb_Unhealthy_Instances.json
│ ├── AWS_Get_Redshift_Daily_Product_Costs.ipynb
│ ├── AWS_Get_Redshift_Daily_Product_Costs.json
│ ├── AWS_Get_Redshift_EC2_Daily_Costs.ipynb
│ ├── AWS_Get_Redshift_EC2_Daily_Costs.json
│ ├── AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.ipynb
│ ├── AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.json
│ ├── AWS_Notify_About_Unused_Keypairs.ipynb
│ ├── AWS_Notify_About_Unused_Keypairs.json
│ ├── AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.ipynb
│ ├── AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.json
│ ├── AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.ipynb
│ ├── AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.json
│ ├── AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.ipynb
│ ├── AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.json
│ ├── AWS_Release_Unattached_Elastic_IPs.ipynb
│ ├── AWS_Release_Unattached_Elastic_IPs.json
│ ├── AWS_Remediate_unencrypted_S3_buckets.ipynb
│ ├── AWS_Remediate_unencrypted_S3_buckets.json
│ ├── AWS_Renew_SSL_Certificate.ipynb
│ ├── AWS_Renew_SSL_Certificate.json
│ ├── AWS_Restart_Unhealthy_Services_Target_Group.ipynb
│ ├── AWS_Restart_Unhealthy_Services_Target_Group.json
│ ├── AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.ipynb
│ ├── AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.json
│ ├── AWS_Secure_Publicly_Accessible_RDS_Instances.ipynb
│ ├── AWS_Secure_Publicly_Accessible_RDS_Instances.json
│ ├── AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.ipynb
│ ├── AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.json
│ ├── AWS_Stop_Idle_EC2_Instances.ipynb
│ ├── AWS_Stop_Idle_EC2_Instances.json
│ ├── AWS_Stop_Untagged_EC2_Instances.ipynb
│ ├── AWS_Stop_Untagged_EC2_Instances.json
│ ├── AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.ipynb
│ ├── AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.json
│ ├── AWS_Update_RDS_Instances_from_Old_to_New_Generation.ipynb
│ ├── AWS_Update_RDS_Instances_from_Old_to_New_Generation.json
│ ├── AWS_Update_Redshift_Database.ipynb
│ ├── AWS_Update_Redshift_Database.json
│ ├── AWS_Update_Resource_Tags.ipynb
│ ├── AWS_Update_Resource_Tags.json
│ ├── AWS_Update_Resources_About_To_Expire.ipynb
│ ├── AWS_Update_Resources_About_To_Expire.json
│ ├── AWS_encrypt_unencrypted_S3_buckets.ipynb
│ ├── AWS_encrypt_unencrypted_S3_buckets.json
│ ├── Add_new_IAM_user.ipynb
│ ├── Add_new_IAM_user.json
│ ├── Configure_url_endpoint_on_a_cloudwatch_alarm.ipynb
│ ├── Configure_url_endpoint_on_a_cloudwatch_alarm.json
│ ├── Copy_ami_to_all_given_AWS_regions.ipynb
│ ├── Copy_ami_to_all_given_AWS_regions.json
│ ├── Delete_Unused_AWS_NAT_Gateways.ipynb
│ ├── Delete_Unused_AWS_NAT_Gateways.json
│ ├── Detach_Instance_from_ASG.ipynb
│ ├── Detach_Instance_from_ASG.json
│ ├── Detect_ECS_failed_deployment.ipynb
│ ├── Detect_ECS_failed_deployment.json
│ ├── Enforce_Mandatory_Tags_Across_All_AWS_Resources.ipynb
│ ├── Enforce_Mandatory_Tags_Across_All_AWS_Resources.json
│ ├── Find_EC2_Instances_Scheduled_to_retire.ipynb
│ ├── Find_EC2_Instances_Scheduled_to_retire.json
│ ├── IAM_security_least_privilege.ipynb
│ ├── IAM_security_least_privilege.json
│ ├── Monitor_AWS_DynamoDB_provision_capacity.ipynb
│ ├── Monitor_AWS_DynamoDB_provision_capacity.json
│ ├── README.md
│ ├── Resize_EBS_Volume.ipynb
│ ├── Resize_EBS_Volume.json
│ ├── Resize_List_Of_Pvcs.ipynb
│ ├── Resize_List_Of_Pvcs.json
│ ├── Restart_AWS_EC2_Instances_By_Tag.ipynb
│ ├── Restart_AWS_EC2_Instances_By_Tag.json
│ ├── Run_EC2_from_AMI.ipynb
│ ├── Run_EC2_from_AMI.json
│ ├── Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.ipynb
│ ├── Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.json
│ ├── Update_and_Manage_AWS_User_Permission.ipynb
│ ├── Update_and_Manage_AWS_User_Permission.json
│ ├── __init__.py
│ └── legos/
│ ├── AWS_Start_IAM_Policy_Generation/
│ │ ├── AWS_Start_IAM_Policy_Generation.json
│ │ ├── AWS_Start_IAM_Policy_Generation.py
│ │ ├── README.md
│ │ └── __init__.py
│ ├── __init__.py
│ ├── aws_add_lifecycle_configuration_to_s3_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_add_lifecycle_configuration_to_s3_bucket.json
│ │ └── aws_add_lifecycle_configuration_to_s3_bucket.py
│ ├── aws_apply_default_encryption_for_s3_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_apply_default_encryption_for_s3_buckets.json
│ │ └── aws_apply_default_encryption_for_s3_buckets.py
│ ├── aws_attach_ebs_to_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_attach_ebs_to_instances.json
│ │ └── aws_attach_ebs_to_instances.py
│ ├── aws_attach_iam_policy/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_attach_iam_policy.json
│ │ └── aws_attach_iam_policy.py
│ ├── aws_attach_tags_to_resources/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_attach_tags_to_resources.json
│ │ └── aws_attach_tags_to_resources.py
│ ├── aws_change_acl_permissions_of_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_change_acl_permissions_of_buckets.json
│ │ └── aws_change_acl_permissions_of_buckets.py
│ ├── aws_check_rds_non_m5_t3_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_check_rds_non_m5_t3_instances.json
│ │ └── aws_check_rds_non_m5_t3_instances.py
│ ├── aws_check_ssl_certificate_expiry/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_check_ssl_certificate_expiry.json
│ │ └── aws_check_ssl_certificate_expiry.py
│ ├── aws_cloudwatch_attach_webhook_notification_to_alarm/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_cloudwatch_attach_webhook_notification_to_alarm.json
│ │ └── aws_cloudwatch_attach_webhook_notification_to_alarm.py
│ ├── aws_create_IAMpolicy/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_IAMpolicy.json
│ │ └── aws_create_IAMpolicy.py
│ ├── aws_create_access_key/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_access_key.json
│ │ └── aws_create_access_key.py
│ ├── aws_create_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_bucket.json
│ │ └── aws_create_bucket.py
│ ├── aws_create_iam_user/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_iam_user.json
│ │ └── aws_create_iam_user.py
│ ├── aws_create_redshift_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_redshift_query.json
│ │ └── aws_create_redshift_query.py
│ ├── aws_create_user_login_profile/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_user_login_profile.json
│ │ └── aws_create_user_login_profile.py
│ ├── aws_create_volumes_snapshot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_create_volumes_snapshot.json
│ │ └── aws_create_volumes_snapshot.py
│ ├── aws_delete_access_key/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_access_key.json
│ │ └── aws_delete_access_key.py
│ ├── aws_delete_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_bucket.json
│ │ └── aws_delete_bucket.py
│ ├── aws_delete_classic_load_balancer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_classic_load_balancer.json
│ │ └── aws_delete_classic_load_balancer.py
│ ├── aws_delete_ebs_snapshot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_ebs_snapshot.json
│ │ └── aws_delete_ebs_snapshot.py
│ ├── aws_delete_ecs_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_ecs_cluster.json
│ │ └── aws_delete_ecs_cluster.py
│ ├── aws_delete_load_balancer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_load_balancer.json
│ │ └── aws_delete_load_balancer.py
│ ├── aws_delete_log_stream/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_log_stream.json
│ │ └── aws_delete_log_stream.py
│ ├── aws_delete_nat_gateway/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_nat_gateway.json
│ │ └── aws_delete_nat_gateway.py
│ ├── aws_delete_rds_instance/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_rds_instance.json
│ │ └── aws_delete_rds_instance.py
│ ├── aws_delete_redshift_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_redshift_cluster.json
│ │ └── aws_delete_redshift_cluster.py
│ ├── aws_delete_route53_health_check/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_route53_health_check.json
│ │ └── aws_delete_route53_health_check.py
│ ├── aws_delete_s3_bucket_encryption/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_s3_bucket_encryption.json
│ │ └── aws_delete_s3_bucket_encryption.py
│ ├── aws_delete_secret/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_secret.json
│ │ └── aws_delete_secret.py
│ ├── aws_delete_volume_by_id/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_delete_volume_by_id.json
│ │ └── aws_delete_volume_by_id.py
│ ├── aws_deregister_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_deregister_instances.json
│ │ └── aws_deregister_instances.py
│ ├── aws_describe_cloudtrail/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_describe_cloudtrail.json
│ │ └── aws_describe_cloudtrail.py
│ ├── aws_detach_ebs_to_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_detach_ebs_to_instances.json
│ │ └── aws_detach_ebs_to_instances.py
│ ├── aws_detach_instances_from_autoscaling_group/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_detach_instances_from_autoscaling_group.json
│ │ └── aws_detach_instances_from_autoscaling_group.py
│ ├── aws_ebs_modify_volume/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_ebs_modify_volume.json
│ │ └── aws_ebs_modify_volume.py
│ ├── aws_ecs_describe_task_definition/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_ecs_describe_task_definition.json
│ │ └── aws_ecs_describe_task_definition.py
│ ├── aws_ecs_detect_failed_deployment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_ecs_detect_failed_deployment.json
│ │ └── aws_ecs_detect_failed_deployment.py
│ ├── aws_ecs_service_restart/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_ecs_service_restart.json
│ │ └── aws_ecs_service_restart.py
│ ├── aws_ecs_update_service/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_ecs_update_service.json
│ │ └── aws_ecs_update_service.py
│ ├── aws_eks_copy_pod_logs_to_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_copy_pod_logs_to_bucket.json
│ │ └── aws_eks_copy_pod_logs_to_bucket.py
│ ├── aws_eks_delete_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_delete_pod.json
│ │ └── aws_eks_delete_pod.py
│ ├── aws_eks_get_all_dead_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_all_dead_pods.json
│ │ └── aws_eks_get_all_dead_pods.py
│ ├── aws_eks_get_all_namespaces/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_all_namespaces.json
│ │ └── aws_eks_get_all_namespaces.py
│ ├── aws_eks_get_all_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_all_pods.json
│ │ └── aws_eks_get_all_pods.py
│ ├── aws_eks_get_deployments_name/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_deployments_name.json
│ │ └── aws_eks_get_deployments_name.py
│ ├── aws_eks_get_node_cpu_memory/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_node_cpu_memory.json
│ │ └── aws_eks_get_node_cpu_memory.py
│ ├── aws_eks_get_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_nodes.json
│ │ └── aws_eks_get_nodes.py
│ ├── aws_eks_get_not_running_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_not_running_pods.json
│ │ └── aws_eks_get_not_running_pods.py
│ ├── aws_eks_get_pod_cpu_memory/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_pod_cpu_memory.json
│ │ └── aws_eks_get_pod_cpu_memory.py
│ ├── aws_eks_get_pod_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_pod_status.json
│ │ └── aws_eks_get_pod_status.py
│ ├── aws_eks_get_running_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_get_running_pods.json
│ │ └── aws_eks_get_running_pods.py
│ ├── aws_eks_run_kubectl_cmd/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_eks_run_kubectl_cmd.json
│ │ └── aws_eks_run_kubectl_cmd.py
│ ├── aws_emr_get_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_emr_get_instances.json
│ │ └── aws_emr_get_instances.py
│ ├── aws_execute_cli_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_execute_cli_command.json
│ │ └── aws_execute_cli_command.py
│ ├── aws_execute_command_ssm/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_execute_command_ssm.json
│ │ └── aws_execute_command_ssm.py
│ ├── aws_filter_all_manual_database_snapshots/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_all_manual_database_snapshots.json
│ │ └── aws_filter_all_manual_database_snapshots.py
│ ├── aws_filter_ebs_unattached_volumes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ebs_unattached_volumes.json
│ │ └── aws_filter_ebs_unattached_volumes.py
│ ├── aws_filter_ebs_volumes_with_low_iops/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ebs_volumes_with_low_iops.json
│ │ └── aws_filter_ebs_volumes_with_low_iops.py
│ ├── aws_filter_ec2_by_tags/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ec2_by_tags.json
│ │ └── aws_filter_ec2_by_tags.py
│ ├── aws_filter_ec2_by_vpc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ec2_by_vpc.json
│ │ └── aws_filter_ec2_by_vpc.py
│ ├── aws_filter_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ec2_instances.json
│ │ └── aws_filter_ec2_instances.py
│ ├── aws_filter_ec2_without_lifetime_tag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_ec2_without_lifetime_tag.json
│ │ └── aws_filter_ec2_without_lifetime_tag.py
│ ├── aws_filter_instances_without_termination_and_lifetime_tag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_instances_without_termination_and_lifetime_tag.json
│ │ └── aws_filter_instances_without_termination_and_lifetime_tag.py
│ ├── aws_filter_large_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_large_ec2_instances.json
│ │ └── aws_filter_large_ec2_instances.py
│ ├── aws_filter_long_running_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_long_running_instances.json
│ │ └── aws_filter_long_running_instances.py
│ ├── aws_filter_old_ebs_snapshots/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_old_ebs_snapshots.json
│ │ └── aws_filter_old_ebs_snapshots.py
│ ├── aws_filter_public_s3_buckets_by_acl/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_public_s3_buckets_by_acl.json
│ │ └── aws_filter_public_s3_buckets_by_acl.py
│ ├── aws_filter_target_groups_by_tags/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_target_groups_by_tags.json
│ │ └── aws_filter_target_groups_by_tags.py
│ ├── aws_filter_unencrypted_s3_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_unencrypted_s3_buckets.json
│ │ └── aws_filter_unencrypted_s3_buckets.py
│ ├── aws_filter_unhealthy_instances_from_asg/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_unhealthy_instances_from_asg.json
│ │ └── aws_filter_unhealthy_instances_from_asg.py
│ ├── aws_filter_untagged_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_untagged_ec2_instances.json
│ │ └── aws_filter_untagged_ec2_instances.py
│ ├── aws_filter_unused_keypairs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_unused_keypairs.json
│ │ └── aws_filter_unused_keypairs.py
│ ├── aws_filter_unused_log_streams/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_unused_log_streams.json
│ │ └── aws_filter_unused_log_streams.py
│ ├── aws_filter_unused_nat_gateway/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_filter_unused_nat_gateway.json
│ │ └── aws_filter_unused_nat_gateway.py
│ ├── aws_find_elbs_with_no_targets_or_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_elbs_with_no_targets_or_instances.json
│ │ └── aws_find_elbs_with_no_targets_or_instances.py
│ ├── aws_find_idle_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_idle_instances.json
│ │ └── aws_find_idle_instances.py
│ ├── aws_find_long_running_lambdas/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_long_running_lambdas.json
│ │ └── aws_find_long_running_lambdas.py
│ ├── aws_find_low_connection_rds_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_low_connection_rds_instances.json
│ │ └── aws_find_low_connection_rds_instances.py
│ ├── aws_find_old_gen_emr_clusters/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_old_gen_emr_clusters.json
│ │ └── aws_find_old_gen_emr_clusters.py
│ ├── aws_find_rds_instances_with_low_cpu_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_rds_instances_with_low_cpu_utilization.json
│ │ └── aws_find_rds_instances_with_low_cpu_utilization.py
│ ├── aws_find_redshift_cluster_without_pause_resume_enabled/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_redshift_cluster_without_pause_resume_enabled.json
│ │ └── aws_find_redshift_cluster_without_pause_resume_enabled.py
│ ├── aws_find_redshift_clusters_with_low_cpu_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_redshift_clusters_with_low_cpu_utilization.json
│ │ └── aws_find_redshift_clusters_with_low_cpu_utilization.py
│ ├── aws_find_s3_buckets_without_lifecycle_policies/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_find_s3_buckets_without_lifecycle_policies.json
│ │ └── aws_find_s3_buckets_without_lifecycle_policies.py
│ ├── aws_finding_redundant_trails/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_finding_redundant_trails.json
│ │ └── aws_finding_redundant_trails.py
│ ├── aws_get_acount_number/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_acount_number.json
│ │ └── aws_get_acount_number.py
│ ├── aws_get_alarms_list/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_alarms_list.json
│ │ └── aws_get_alarms_list.py
│ ├── aws_get_alb_listeners_without_http_redirect/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_alb_listeners_without_http_redirect.json
│ │ └── aws_get_alb_listeners_without_http_redirect.py
│ ├── aws_get_all_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_all_ec2_instances.json
│ │ └── aws_get_all_ec2_instances.py
│ ├── aws_get_all_load_balancers/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_all_load_balancers.json
│ │ └── aws_get_all_load_balancers.py
│ ├── aws_get_all_service_names/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_all_service_names.json
│ │ └── aws_get_all_service_names.py
│ ├── aws_get_all_untagged_resources/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_all_untagged_resources.json
│ │ └── aws_get_all_untagged_resources.py
│ ├── aws_get_auto_scaling_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_auto_scaling_instances.json
│ │ └── aws_get_auto_scaling_instances.py
│ ├── aws_get_bucket_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_bucket_size.json
│ │ └── aws_get_bucket_size.py
│ ├── aws_get_cloudwatch_ebs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_ebs.json
│ │ └── aws_get_cloudwatch_ebs.py
│ ├── aws_get_cloudwatch_ec2/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_ec2.json
│ │ └── aws_get_cloudwatch_ec2.py
│ ├── aws_get_cloudwatch_ec2_cpuutil/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_ec2_cpuutil.json
│ │ └── aws_get_cloudwatch_ec2_cpuutil.py
│ ├── aws_get_cloudwatch_metrics_applicationelb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_applicationelb.json
│ │ └── aws_get_cloudwatch_metrics_applicationelb.py
│ ├── aws_get_cloudwatch_metrics_classic_elb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_classic_elb.json
│ │ └── aws_get_cloudwatch_metrics_classic_elb.py
│ ├── aws_get_cloudwatch_metrics_dynamodb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_dynamodb.json
│ │ └── aws_get_cloudwatch_metrics_dynamodb.py
│ ├── aws_get_cloudwatch_metrics_ec2autoscaling/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_ec2autoscaling.json
│ │ └── aws_get_cloudwatch_metrics_ec2autoscaling.py
│ ├── aws_get_cloudwatch_metrics_gatewayelb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_gatewayelb.json
│ │ └── aws_get_cloudwatch_metrics_gatewayelb.py
│ ├── aws_get_cloudwatch_metrics_lambda/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_lambda.json
│ │ └── aws_get_cloudwatch_metrics_lambda.py
│ ├── aws_get_cloudwatch_metrics_network_elb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_network_elb.json
│ │ └── aws_get_cloudwatch_metrics_network_elb.py
│ ├── aws_get_cloudwatch_metrics_rds/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_rds.json
│ │ └── aws_get_cloudwatch_metrics_rds.py
│ ├── aws_get_cloudwatch_metrics_redshift/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_redshift.json
│ │ └── aws_get_cloudwatch_metrics_redshift.py
│ ├── aws_get_cloudwatch_metrics_sqs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_metrics_sqs.json
│ │ └── aws_get_cloudwatch_metrics_sqs.py
│ ├── aws_get_cloudwatch_statistics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cloudwatch_statistics.json
│ │ └── aws_get_cloudwatch_statistics.py
│ ├── aws_get_cost_for_all_services/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cost_for_all_services.json
│ │ └── aws_get_cost_for_all_services.py
│ ├── aws_get_cost_for_data_transfer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_cost_for_data_transfer.json
│ │ └── aws_get_cost_for_data_transfer.py
│ ├── aws_get_daily_total_spend/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_daily_total_spend.json
│ │ └── aws_get_daily_total_spend.py
│ ├── aws_get_ebs_volume_for_low_usage/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ebs_volume_for_low_usage.json
│ │ └── aws_get_ebs_volume_for_low_usage.py
│ ├── aws_get_ebs_volumes_by_type/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ebs_volumes_by_type.json
│ │ └── aws_get_ebs_volumes_by_type.py
│ ├── aws_get_ebs_volumes_without_gp3_type/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ebs_volumes_without_gp3_type.json
│ │ └── aws_get_ebs_volumes_without_gp3_type.py
│ ├── aws_get_ec2_cpu_consumption/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ec2_cpu_consumption.json
│ │ └── aws_get_ec2_cpu_consumption.py
│ ├── aws_get_ec2_data_traffic/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ec2_data_traffic.json
│ │ └── aws_get_ec2_data_traffic.py
│ ├── aws_get_ec2_instance_age/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ec2_instance_age.json
│ │ └── aws_get_ec2_instance_age.py
│ ├── aws_get_ec2_instances_with_smaller_cpu_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ec2_instances_with_smaller_cpu_size.json
│ │ └── aws_get_ec2_instances_with_smaller_cpu_size.py
│ ├── aws_get_ecs_instances_without_autoscaling/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ecs_instances_without_autoscaling.json
│ │ └── aws_get_ecs_instances_without_autoscaling.py
│ ├── aws_get_ecs_services_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ecs_services_status.json
│ │ └── aws_get_ecs_services_status.py
│ ├── aws_get_ecs_services_without_autoscaling/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ecs_services_without_autoscaling.json
│ │ └── aws_get_ecs_services_without_autoscaling.py
│ ├── aws_get_generated_policy/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_generated_policy.json
│ │ └── aws_get_generated_policy.py
│ ├── aws_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_handle.json
│ │ └── aws_get_handle.py
│ ├── aws_get_iam_users_without_attached_policies/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_iam_users_without_attached_policies.json
│ │ └── aws_get_iam_users_without_attached_policies.py
│ ├── aws_get_idle_emr_clusters/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_idle_emr_clusters.json
│ │ └── aws_get_idle_emr_clusters.py
│ ├── aws_get_instance_detail_with_private_dns_name/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_instance_detail_with_private_dns_name.json
│ │ └── aws_get_instance_detail_with_private_dns_name.py
│ ├── aws_get_instance_details/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_instance_details.json
│ │ └── aws_get_instance_details.py
│ ├── aws_get_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_instances.json
│ │ └── aws_get_instances.py
│ ├── aws_get_internet_gateway_by_vpc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_internet_gateway_by_vpc.json
│ │ └── aws_get_internet_gateway_by_vpc.py
│ ├── aws_get_lambdas_not_using_arm_graviton2_processor/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_lambdas_not_using_arm_graviton2_processor.json
│ │ └── aws_get_lambdas_not_using_arm_graviton2_processor.py
│ ├── aws_get_lambdas_with_high_error_rate/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_lambdas_with_high_error_rate.json
│ │ └── aws_get_lambdas_with_high_error_rate.py
│ ├── aws_get_long_running_elasticcache_clusters_without_reserved_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_long_running_elasticcache_clusters_without_reserved_nodes.json
│ │ └── aws_get_long_running_elasticcache_clusters_without_reserved_nodes.py
│ ├── aws_get_long_running_rds_instances_without_reserved_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_long_running_rds_instances_without_reserved_instances.json
│ │ └── aws_get_long_running_rds_instances_without_reserved_instances.py
│ ├── aws_get_long_running_redshift_clusters_without_reserved_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_long_running_redshift_clusters_without_reserved_nodes.json
│ │ └── aws_get_long_running_redshift_clusters_without_reserved_nodes.py
│ ├── aws_get_nat_gateway_by_vpc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_nat_gateway_by_vpc.json
│ │ └── aws_get_nat_gateway_by_vpc.py
│ ├── aws_get_nlb_targets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_nlb_targets.json
│ │ └── aws_get_nlb_targets.py
│ ├── aws_get_nlbs_without_targets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_nlbs_without_targets.json
│ │ └── aws_get_nlbs_without_targets.py
│ ├── aws_get_older_generation_rds_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_older_generation_rds_instances.json
│ │ └── aws_get_older_generation_rds_instances.py
│ ├── aws_get_private_address_from_nat_gateways/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_private_address_from_nat_gateways.json
│ │ └── aws_get_private_address_from_nat_gateways.py
│ ├── aws_get_public_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_public_ec2_instances.json
│ │ └── aws_get_public_ec2_instances.py
│ ├── aws_get_publicly_accessible_db_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_publicly_accessible_db_instances.json
│ │ └── aws_get_publicly_accessible_db_instances.py
│ ├── aws_get_publicly_accessible_db_snapshots/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_publicly_accessible_db_snapshots.json
│ │ └── aws_get_publicly_accessible_db_snapshots.py
│ ├── aws_get_rds_automated_snapshots_above_retention_period/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_rds_automated_snapshots_above_retention_period.json
│ │ └── aws_get_rds_automated_snapshots_above_retention_period.py
│ ├── aws_get_redshift_query_details/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_redshift_query_details.json
│ │ └── aws_get_redshift_query_details.py
│ ├── aws_get_redshift_result/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_redshift_result.json
│ │ └── aws_get_redshift_result.py
│ ├── aws_get_reserved_instances_about_to_retired/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_reserved_instances_about_to_retired.json
│ │ └── aws_get_reserved_instances_about_to_retired.py
│ ├── aws_get_resources_missing_tag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_resources_missing_tag.json
│ │ └── aws_get_resources_missing_tag.py
│ ├── aws_get_resources_with_expiration_tag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_resources_with_expiration_tag.json
│ │ └── aws_get_resources_with_expiration_tag.py
│ ├── aws_get_resources_with_tag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_resources_with_tag.json
│ │ └── aws_get_resources_with_tag.py
│ ├── aws_get_s3_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_s3_buckets.json
│ │ └── aws_get_s3_buckets.py
│ ├── aws_get_schedule_to_retire_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_schedule_to_retire_instances.json
│ │ └── aws_get_schedule_to_retire_instances.py
│ ├── aws_get_secret_from_secretmanager/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_secret_from_secretmanager.json
│ │ └── aws_get_secret_from_secretmanager.py
│ ├── aws_get_secrets_manager_secret/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_secrets_manager_secret.json
│ │ └── aws_get_secrets_manager_secret.py
│ ├── aws_get_secrets_manager_secretARN/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_secrets_manager_secretARN.json
│ │ └── aws_get_secrets_manager_secretARN.py
│ ├── aws_get_security_group_details/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_security_group_details.json
│ │ └── aws_get_security_group_details.py
│ ├── aws_get_service_quota_details/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_service_quota_details.json
│ │ └── aws_get_service_quota_details.py
│ ├── aws_get_service_quotas/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_service_quotas.json
│ │ └── aws_get_service_quotas.py
│ ├── aws_get_stopped_instance_volumes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_stopped_instance_volumes.json
│ │ └── aws_get_stopped_instance_volumes.py
│ ├── aws_get_sts_caller_identity/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_sts_caller_identity.json
│ │ └── aws_get_sts_caller_identity.py
│ ├── aws_get_tags_of_all_resources/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_tags_of_all_resources.json
│ │ └── aws_get_tags_of_all_resources.py
│ ├── aws_get_timed_out_lambdas/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_timed_out_lambdas.json
│ │ └── aws_get_timed_out_lambdas.py
│ ├── aws_get_ttl_for_route53_records/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ttl_for_route53_records.json
│ │ └── aws_get_ttl_for_route53_records.py
│ ├── aws_get_ttl_under_given_hours/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_ttl_under_given_hours.json
│ │ └── aws_get_ttl_under_given_hours.py
│ ├── aws_get_unhealthy_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_unhealthy_instances.json
│ │ └── aws_get_unhealthy_instances.py
│ ├── aws_get_unhealthy_instances_from_elb/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_unhealthy_instances_from_elb.json
│ │ └── aws_get_unhealthy_instances_from_elb.py
│ ├── aws_get_unused_route53_health_checks/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_unused_route53_health_checks.json
│ │ └── aws_get_unused_route53_health_checks.py
│ ├── aws_get_users_with_old_access_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_get_users_with_old_access_keys.json
│ │ └── aws_get_users_with_old_access_keys.py
│ ├── aws_launch_instance_from_ami/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_launch_instance_from_ami.json
│ │ └── aws_launch_instance_from_ami.py
│ ├── aws_list_access_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_access_keys.json
│ │ └── aws_list_access_keys.py
│ ├── aws_list_all_iam_users/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_all_iam_users.json
│ │ └── aws_list_all_iam_users.py
│ ├── aws_list_all_regions/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_all_regions.json
│ │ └── aws_list_all_regions.py
│ ├── aws_list_application_loadbalancers/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_application_loadbalancers.json
│ │ └── aws_list_application_loadbalancers.py
│ ├── aws_list_attached_user_policies/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_attached_user_policies.json
│ │ └── aws_list_attached_user_policies.py
│ ├── aws_list_clusters_with_low_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_clusters_with_low_utilization.json
│ │ └── aws_list_clusters_with_low_utilization.py
│ ├── aws_list_expiring_access_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_expiring_access_keys.json
│ │ └── aws_list_expiring_access_keys.py
│ ├── aws_list_expiring_acm_certificates/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_expiring_acm_certificates.json
│ │ └── aws_list_expiring_acm_certificates.py
│ ├── aws_list_hosted_zones/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_hosted_zones.json
│ │ └── aws_list_hosted_zones.py
│ ├── aws_list_unattached_elastic_ips/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_unattached_elastic_ips.json
│ │ └── aws_list_unattached_elastic_ips.py
│ ├── aws_list_unhealthy_instances_in_target_group/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_unhealthy_instances_in_target_group.json
│ │ └── aws_list_unhealthy_instances_in_target_group.py
│ ├── aws_list_unused_secrets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_unused_secrets.json
│ │ └── aws_list_unused_secrets.py
│ ├── aws_list_users_with_old_passwords/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_list_users_with_old_passwords.json
│ │ └── aws_list_users_with_old_passwords.py
│ ├── aws_loadbalancer_list_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_loadbalancer_list_instances.json
│ │ └── aws_loadbalancer_list_instances.py
│ ├── aws_make_bucket_public/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_make_bucket_public.json
│ │ └── aws_make_bucket_public.py
│ ├── aws_make_rds_instance_not_publicly_accessible/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_make_rds_instance_not_publicly_accessible.json
│ │ └── aws_make_rds_instance_not_publicly_accessible.py
│ ├── aws_modify_ebs_volume_to_gp3/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_modify_ebs_volume_to_gp3.json
│ │ └── aws_modify_ebs_volume_to_gp3.py
│ ├── aws_modify_listener_for_http_redirection/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_modify_listener_for_http_redirection.json
│ │ └── aws_modify_listener_for_http_redirection.py
│ ├── aws_modify_public_db_snapshots/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_modify_public_db_snapshots.json
│ │ └── aws_modify_public_db_snapshots.py
│ ├── aws_postgresql_get_configured_max_connections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_postgresql_get_configured_max_connections.json
│ │ └── aws_postgresql_get_configured_max_connections.py
│ ├── aws_postgresql_plot_active_connections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_postgresql_plot_active_connections.json
│ │ └── aws_postgresql_plot_active_connections.py
│ ├── aws_purchase_elasticcache_reserved_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_purchase_elasticcache_reserved_node.json
│ │ └── aws_purchase_elasticcache_reserved_node.py
│ ├── aws_purchase_rds_reserved_instance/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_purchase_rds_reserved_instance.json
│ │ └── aws_purchase_rds_reserved_instance.py
│ ├── aws_purchase_redshift_reserved_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_purchase_redshift_reserved_node.json
│ │ └── aws_purchase_redshift_reserved_node.py
│ ├── aws_put_bucket_cors/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_put_bucket_cors.json
│ │ └── aws_put_bucket_cors.py
│ ├── aws_put_bucket_policy/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_put_bucket_policy.json
│ │ └── aws_put_bucket_policy.py
│ ├── aws_read_object/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_read_object.json
│ │ └── aws_read_object.py
│ ├── aws_register_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_register_instances.json
│ │ └── aws_register_instances.py
│ ├── aws_release_elastic_ip/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_release_elastic_ip.json
│ │ └── aws_release_elastic_ip.py
│ ├── aws_renew_expiring_acm_certificates/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_renew_expiring_acm_certificates.json
│ │ └── aws_renew_expiring_acm_certificates.py
│ ├── aws_request_service_quota_increase/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_request_service_quota_increase.json
│ │ └── aws_request_service_quota_increase.py
│ ├── aws_restart_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_restart_ec2_instances.json
│ │ └── aws_restart_ec2_instances.py
│ ├── aws_revoke_policy_from_iam_user/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_revoke_policy_from_iam_user.json
│ │ └── aws_revoke_policy_from_iam_user.py
│ ├── aws_run_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_run_instances.json
│ │ └── aws_run_instances.py
│ ├── aws_schedule_pause_resume_enabled/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_schedule_pause_resume_enabled.json
│ │ └── aws_schedule_pause_resume_enabled.py
│ ├── aws_send_email/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_send_email.json
│ │ └── aws_send_email.py
│ ├── aws_service_quota_limits/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_service_quota_limits.json
│ │ └── aws_service_quota_limits.py
│ ├── aws_service_quota_limits_vpc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_service_quota_limits_vpc.json
│ │ └── aws_service_quota_limits_vpc.py
│ ├── aws_stop_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_stop_instances.json
│ │ └── aws_stop_instances.py
│ ├── aws_tag_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_tag_ec2_instances.json
│ │ └── aws_tag_ec2_instances.py
│ ├── aws_target_group_list_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_target_group_list_instances.json
│ │ └── aws_target_group_list_instances.py
│ ├── aws_target_group_list_unhealthy_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_target_group_list_unhealthy_instances.json
│ │ └── aws_target_group_list_unhealthy_instances.py
│ ├── aws_target_group_register_unregister_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_target_group_register_unregister_instances.json
│ │ └── aws_target_group_register_unregister_instances.py
│ ├── aws_terminate_ec2_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_terminate_ec2_instances.json
│ │ └── aws_terminate_ec2_instances.py
│ ├── aws_update_access_key/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_update_access_key.json
│ │ └── aws_update_access_key.py
│ ├── aws_update_ttl_for_route53_records/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_update_ttl_for_route53_records.json
│ │ └── aws_update_ttl_for_route53_records.py
│ ├── aws_upload_file_to_s3/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── aws_upload_file_to_s3.json
│ │ └── aws_upload_file_to_s3.py
│ └── aws_vpc_service_quota_warning/
│ ├── README.md
│ ├── __init__.py
│ ├── aws_vpc_service_quota_warning.json
│ └── aws_vpc_service_quota_warning.py
├── Airflow/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── airflow_check_dag_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── airflow_check_dag_status.json
│ │ └── airflow_check_dag_status.py
│ ├── airflow_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── airflow_get_handle.json
│ │ └── airflow_get_handle.py
│ ├── airflow_list_DAG_runs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── airflow_list_DAG_runs.json
│ │ └── airflow_list_DAG_runs.py
│ └── airflow_trigger_dag_run/
│ ├── README.md
│ ├── __init__.py
│ ├── airflow_trigger_dag_run.json
│ └── airflow_trigger_dag_run.py
├── Azure/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ └── azure_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── azure_get_handle.json
│ └── azure_get_handle.py
├── Datadog/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── datadog_delete_incident/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_delete_incident.json
│ │ └── datadog_delete_incident.py
│ ├── datadog_get_event/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_event.json
│ │ └── datadog_get_event.py
│ ├── datadog_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_handle.json
│ │ └── datadog_get_handle.py
│ ├── datadog_get_incident/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_incident.json
│ │ └── datadog_get_incident.py
│ ├── datadog_get_metric_metadata/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_metric_metadata.json
│ │ └── datadog_get_metric_metadata.py
│ ├── datadog_get_monitor/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_monitor.json
│ │ └── datadog_get_monitor.py
│ ├── datadog_get_monitorid/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_get_monitorid.json
│ │ └── datadog_get_monitorid.py
│ ├── datadog_list_active_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_list_active_metrics.json
│ │ └── datadog_list_active_metrics.py
│ ├── datadog_list_all_monitors/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_list_all_monitors.json
│ │ └── datadog_list_all_monitors.py
│ ├── datadog_list_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_list_metrics.json
│ │ └── datadog_list_metrics.py
│ ├── datadog_mute_or_unmute_alerts/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_mute_or_unmute_alerts.json
│ │ └── datadog_mute_or_unmute_alerts.py
│ ├── datadog_query_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_query_metrics.json
│ │ └── datadog_query_metrics.py
│ ├── datadog_schedule_downtime/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── datadog_schedule_downtime.json
│ │ └── datadog_schedule_downtime.py
│ └── datadog_search_monitors/
│ ├── README.md
│ ├── __init__.py
│ ├── datadog_search_monitors.json
│ └── datadog_search_monitors.py
├── Docs/
│ └── README.md
├── ElasticSearch/
│ ├── .gitignore
│ ├── Elasticsearch_Rolling_Restart.ipynb
│ ├── Elasticsearch_Rolling_Restart.json
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── elasticsearch_check_health_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_check_health_status.json
│ │ └── elasticsearch_check_health_status.py
│ ├── elasticsearch_check_large_index_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_check_large_index_size.json
│ │ └── elasticsearch_check_large_index_size.py
│ ├── elasticsearch_compare_cluster_disk_size_to_threshold/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_compare_cluster_disk_size_to_threshold.json
│ │ └── elasticsearch_compare_cluster_disk_size_to_threshold.py
│ ├── elasticsearch_delete_unassigned_shards/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_delete_unassigned_shards.json
│ │ └── elasticsearch_delete_unassigned_shards.py
│ ├── elasticsearch_disable_shard_allocation/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_disable_shard_allocation.json
│ │ └── elasticsearch_disable_shard_allocation.py
│ ├── elasticsearch_enable_shard_allocation/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_enable_shard_allocation.json
│ │ └── elasticsearch_enable_shard_allocation.py
│ ├── elasticsearch_get_cluster_statistics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_get_cluster_statistics.json
│ │ └── elasticsearch_get_cluster_statistics.py
│ ├── elasticsearch_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_get_handle.json
│ │ └── elasticsearch_get_handle.py
│ ├── elasticsearch_get_index_health/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_get_index_health.json
│ │ └── elasticsearch_get_index_health.py
│ ├── elasticsearch_list_allocations/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_list_allocations.json
│ │ └── elasticsearch_list_allocations.py
│ ├── elasticsearch_list_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── elasticsearch_list_nodes.json
│ │ └── elasticsearch_list_nodes.py
│ └── elasticsearch_search_query/
│ ├── README.md
│ ├── __init__.py
│ ├── elasticsearch_search_query.json
│ └── elasticsearch_search_query.py
├── GCP/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── gcp_add_lifecycle_policy_to_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_add_lifecycle_policy_to_bucket.json
│ │ └── gcp_add_lifecycle_policy_to_bucket.py
│ ├── gcp_add_member_to_iam_role/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_add_member_to_iam_role.json
│ │ └── gcp_add_member_to_iam_role.py
│ ├── gcp_add_role_to_service_account/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_add_role_to_service_account.json
│ │ └── gcp_add_role_to_service_account.py
│ ├── gcp_create_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_create_bucket.json
│ │ └── gcp_create_bucket.py
│ ├── gcp_create_disk_snapshot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_create_disk_snapshot.json
│ │ └── gcp_create_disk_snapshot.py
│ ├── gcp_create_filestore_instance/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_create_filestore_instance.json
│ │ └── gcp_create_filestore_instance.py
│ ├── gcp_create_gke_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_create_gke_cluster.json
│ │ └── gcp_create_gke_cluster.py
│ ├── gcp_create_service_account/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_create_service_account.json
│ │ └── gcp_create_service_account.py
│ ├── gcp_delete_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_delete_bucket.json
│ │ └── gcp_delete_bucket.py
│ ├── gcp_delete_filestore_instance/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_delete_filestore_instance.json
│ │ └── gcp_delete_filestore_instance.py
│ ├── gcp_delete_object_from_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_delete_object_from_bucket.json
│ │ └── gcp_delete_object_from_bucket.py
│ ├── gcp_delete_service_account/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_delete_service_account.json
│ │ └── gcp_delete_service_account.py
│ ├── gcp_describe_gke_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_describe_gke_cluster.json
│ │ └── gcp_describe_gke_cluster.py
│ ├── gcp_fetch_objects_from_bucket/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_fetch_objects_from_bucket.json
│ │ └── gcp_fetch_objects_from_bucket.py
│ ├── gcp_get_buckets_without_lifecycle_policies/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_get_buckets_without_lifecycle_policies.json
│ │ └── gcp_get_buckets_without_lifecycle_policies.py
│ ├── gcp_get_forwarding_rules_details/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_get_forwarding_rules_details.json
│ │ └── gcp_get_forwarding_rules_details.py
│ ├── gcp_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_get_handle.json
│ │ └── gcp_get_handle.py
│ ├── gcp_get_instances_without_label/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_get_instances_without_label.json
│ │ └── gcp_get_instances_without_label.py
│ ├── gcp_get_unused_backend_services/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_get_unused_backend_services.json
│ │ └── gcp_get_unused_backend_services.py
│ ├── gcp_list_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_buckets.json
│ │ └── gcp_list_buckets.py
│ ├── gcp_list_compute_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_compute_instances.json
│ │ └── gcp_list_compute_instances.py
│ ├── gcp_list_compute_instances_by_label/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_compute_instances_by_label.json
│ │ └── gcp_list_compute_instances_by_label.py
│ ├── gcp_list_compute_instances_by_vpc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_compute_instances_by_vpc.json
│ │ └── gcp_list_compute_instances_by_vpc.py
│ ├── gcp_list_gke_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_gke_cluster.json
│ │ └── gcp_list_gke_cluster.py
│ ├── gcp_list_nodes_in_gke_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_nodes_in_gke_cluster.json
│ │ └── gcp_list_nodes_in_gke_cluster.py
│ ├── gcp_list_public_buckets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_public_buckets.json
│ │ └── gcp_list_public_buckets.py
│ ├── gcp_list_secrets/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_secrets.json
│ │ └── gcp_list_secrets.py
│ ├── gcp_list_service_accounts/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_service_accounts.json
│ │ └── gcp_list_service_accounts.py
│ ├── gcp_list_vms_access/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_list_vms_access.json
│ │ └── gcp_list_vms_access.py
│ ├── gcp_remove_member_from_iam_role/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_remove_member_from_iam_role.json
│ │ └── gcp_remove_member_from_iam_role.py
│ ├── gcp_remove_role_from_service_account/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_remove_role_from_service_account.json
│ │ └── gcp_remove_role_from_service_account.py
│ ├── gcp_remove_user_role/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_remove_user_role.json
│ │ └── gcp_remove_user_role.py
│ ├── gcp_resize_gke_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_resize_gke_cluster.json
│ │ └── gcp_resize_gke_cluster.py
│ ├── gcp_restart_compute_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_restart_compute_instances.json
│ │ └── gcp_restart_compute_instances.py
│ ├── gcp_restore_disk_from_snapshot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_restore_disk_from_snapshot.json
│ │ └── gcp_restore_disk_from_snapshot.py
│ ├── gcp_save_csv_to_google_sheets_v1/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_save_csv_to_google_sheets_v1.json
│ │ └── gcp_save_csv_to_google_sheets_v1.py
│ ├── gcp_stop_compute_instances/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── gcp_stop_compute_instances.json
│ │ └── gcp_stop_compute_instances.py
│ └── gcp_upload_file_to_bucket/
│ ├── README.md
│ ├── __init__.py
│ ├── gcp_upload_file_to_bucket.json
│ └── gcp_upload_file_to_bucket.py
├── Github/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── github_assign_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_assign_issue.json
│ │ └── github_assign_issue.py
│ ├── github_close_pull_request/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_close_pull_request.json
│ │ └── github_close_pull_request.py
│ ├── github_count_stars/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_count_stars.json
│ │ └── github_count_stars.py
│ ├── github_create_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_create_issue.json
│ │ └── github_create_issue.py
│ ├── github_create_team/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_create_team.json
│ │ └── github_create_team.py
│ ├── github_delete_branch/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_delete_branch.json
│ │ └── github_delete_branch.py
│ ├── github_get_branch/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_branch.json
│ │ └── github_get_branch.py
│ ├── github_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_handle.json
│ │ └── github_get_handle.py
│ ├── github_get_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_issue.json
│ │ └── github_get_issue.py
│ ├── github_get_open_branches/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_open_branches.json
│ │ └── github_get_open_branches.py
│ ├── github_get_open_pull_requests/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_open_pull_requests.json
│ │ └── github_get_open_pull_requests.py
│ ├── github_get_pull_request/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_pull_request.json
│ │ └── github_get_pull_request.py
│ ├── github_get_team/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_team.json
│ │ └── github_get_team.py
│ ├── github_get_user/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_get_user.json
│ │ └── github_get_user.py
│ ├── github_invite_user_to_org/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_invite_user_to_org.json
│ │ └── github_invite_user_to_org.py
│ ├── github_issue_comment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_issue_comment.json
│ │ └── github_issue_comment.py
│ ├── github_list_open_issues/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_open_issues.json
│ │ └── github_list_open_issues.py
│ ├── github_list_org_members/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_org_members.json
│ │ └── github_list_org_members.py
│ ├── github_list_pull_request_commits/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_pull_request_commits.json
│ │ └── github_list_pull_request_commits.py
│ ├── github_list_pull_request_reviewers/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_pull_request_reviewers.json
│ │ └── github_list_pull_request_reviewers.py
│ ├── github_list_pull_requests/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_pull_requests.json
│ │ └── github_list_pull_requests.py
│ ├── github_list_stale_issues/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_stale_issues.json
│ │ └── github_list_stale_issues.py
│ ├── github_list_stale_pull_requests/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_stale_pull_requests.json
│ │ └── github_list_stale_pull_requests.py
│ ├── github_list_stargazers/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_stargazers.json
│ │ └── github_list_stargazers.py
│ ├── github_list_team_members/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_team_members.json
│ │ └── github_list_team_members.py
│ ├── github_list_team_repos/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_team_repos.json
│ │ └── github_list_team_repos.py
│ ├── github_list_teams_in_org/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_teams_in_org.json
│ │ └── github_list_teams_in_org.py
│ ├── github_list_webhooks/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_list_webhooks.json
│ │ └── github_list_webhooks.py
│ ├── github_merge_pull_request/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── github_merge_pull_request.json
│ │ └── github_merge_pull_request.py
│ └── github_remove_member_from_org/
│ ├── README.md
│ ├── __init__.py
│ ├── github_remove_member_from_org.json
│ └── github_remove_member_from_org.py
├── Grafana/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── grafana_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── grafana_get_handle.json
│ │ └── grafana_get_handle.py
│ └── grafana_list_alerts/
│ ├── README.md
│ ├── __init__.py
│ ├── grafana_list_alerts.json
│ └── grafana_list_alerts.py
├── Hadoop/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── hadoop_get_cluster_apps/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── hadoop_get_cluster_apps.json
│ │ └── hadoop_get_cluster_apps.py
│ ├── hadoop_get_cluster_appstatistics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── hadoop_get_cluster_appstatistics.json
│ │ └── hadoop_get_cluster_appstatistics.py
│ ├── hadoop_get_cluster_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── hadoop_get_cluster_metrics.json
│ │ └── hadoop_get_cluster_metrics.py
│ ├── hadoop_get_cluster_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── hadoop_get_cluster_nodes.json
│ │ └── hadoop_get_cluster_nodes.py
│ └── hadoop_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── hadoop_get_handle.json
│ └── hadoop_get_handle.py
├── Jenkins/
│ ├── Fetch_Jenkins_Build_Logs.ipynb
│ ├── Fetch_Jenkins_Build_Logs.json
│ ├── README.md
│ └── legos/
│ ├── __init__.py
│ ├── jenkins_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jenkins_get_handle.json
│ │ └── jenkins_get_handle.py
│ ├── jenkins_get_logs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jenkins_get_logs.json
│ │ └── jenkins_get_logs.py
│ └── jenkins_get_plugins/
│ ├── README.md
│ ├── __init__.py
│ ├── jenkins_get_plugins.json
│ └── jenkins_get_plugins.py
├── Jira/
│ ├── README.md
│ ├── __init__.py
│ ├── jira_visualize_time_to_resolution.ipynb
│ ├── jira_visualize_time_to_resolution.json
│ └── legos/
│ ├── __init__.py
│ ├── jira_add_comment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_add_comment.json
│ │ └── jira_add_comment.py
│ ├── jira_assign_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_assign_issue.json
│ │ └── jira_assign_issue.py
│ ├── jira_create_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_create_issue.json
│ │ └── jira_create_issue.py
│ ├── jira_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_get_handle.json
│ │ └── jira_get_handle.py
│ ├── jira_get_issue/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_get_issue.json
│ │ └── jira_get_issue.py
│ ├── jira_get_issue_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_get_issue_status.json
│ │ └── jira_get_issue_status.py
│ ├── jira_issue_change_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── jira_issue_change_status.json
│ │ └── jira_issue_change_status.py
│ └── jira_search_issue/
│ ├── README.md
│ ├── __init__.py
│ ├── jira_search_issue.json
│ └── jira_search_issue.py
├── Kafka/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── kafka_broker_health_check/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_broker_health_check.json
│ │ └── kafka_broker_health_check.py
│ ├── kafka_check_in_sync_replicas/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_check_in_sync_replicas.json
│ │ └── kafka_check_in_sync_replicas.py
│ ├── kafka_check_lag_change/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_check_lag_change.json
│ │ └── kafka_check_lag_change.py
│ ├── kafka_check_offline_partitions/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_check_offline_partitions.json
│ │ └── kafka_check_offline_partitions.py
│ ├── kafka_check_replicas_available/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_check_replicas_available.json
│ │ └── kafka_check_replicas_available.py
│ ├── kafka_get_committed_messages_count/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_get_committed_messages_count.json
│ │ └── kafka_get_committed_messages_count.py
│ ├── kafka_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_get_handle.json
│ │ └── kafka_get_handle.py
│ ├── kafka_get_topic_health/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_get_topic_health.json
│ │ └── kafka_get_topic_health.py
│ ├── kafka_get_topics_with_lag/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_get_topics_with_lag.json
│ │ └── kafka_get_topics_with_lag.py
│ ├── kafka_publish_message/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_publish_message.json
│ │ └── kafka_publish_message.py
│ ├── kafka_run_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── kafka_run_command.json
│ │ └── kafka_run_command.py
│ └── kafka_topic_partition_health_check/
│ ├── README.md
│ ├── __init__.py
│ ├── kafka_topic_partition_health_check.json
│ └── kafka_topic_partition_health_check.py
├── Keycloak/
│ ├── __init__.py
│ └── legos/
│ ├── keycloak_get_audit_report/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── keycloak_get_audit_report.json
│ │ └── keycloak_get_audit_report.py
│ ├── keycloak_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── keycloak_get_handle.json
│ │ └── keycloak_get_handle.py
│ └── keycloak_get_service_health/
│ ├── README.md
│ ├── __init__.py
│ ├── keycloak_get_service_health.json
│ └── keycloak_get_service_health.py
├── Kubernetes/
│ ├── Delete_Evicted_Pods_From_Namespaces.ipynb
│ ├── Delete_Evicted_Pods_From_Namespaces.json
│ ├── Get_Kube_System_Config_Map.ipynb
│ ├── Get_Kube_System_Config_Map.json
│ ├── K8S_Delete_Pods_From_Failing_Jobs.ipynb
│ ├── K8S_Delete_Pods_From_Failing_Jobs.json
│ ├── K8S_Deployment_with_multiple_restarts.ipynb
│ ├── K8S_Deployment_with_multiple_restarts.json
│ ├── K8S_Get_Candidate_Nodes_Given_Config.ipynb
│ ├── K8S_Get_Candidate_Nodes_Given_Config.json
│ ├── K8S_Log_Healthcheck.ipynb
│ ├── K8S_Log_Healthcheck.json
│ ├── K8S_Pod_Stuck_In_CrashLoopBack_State.ipynb
│ ├── K8S_Pod_Stuck_In_CrashLoopBack_State.json
│ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State.ipynb
│ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State.json
│ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State_with_genai.ipynb
│ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State_with_genai.json
│ ├── K8S_Pod_Stuck_In_Terminating_State.ipynb
│ ├── K8S_Pod_Stuck_In_Terminating_State.json
│ ├── README.md
│ ├── Resize_List_of_PVCs.ipynb
│ ├── Resize_List_of_PVCs.json
│ ├── Resize_PVC.ipynb
│ ├── Resize_PVC.json
│ ├── Rollback_k8s_Deployment_and_Update_Jira.ipynb
│ ├── Rollback_k8s_Deployment_and_Update_Jira.json
│ ├── __init__.py
│ └── legos/
│ ├── README.md
│ ├── __init__.py
│ ├── k8s_add_node_to_cluster/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_add_node_to_cluster.json
│ │ └── k8s_add_node_to_cluster.py
│ ├── k8s_change_pvc_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_change_pvc_size.json
│ │ └── k8s_change_pvc_size.py
│ ├── k8s_check_cronjob_pod_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_check_cronjob_pod_status.json
│ │ └── k8s_check_cronjob_pod_status.py
│ ├── k8s_check_service_pvc_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_check_service_pvc_utilization.json
│ │ └── k8s_check_service_pvc_utilization.py
│ ├── k8s_check_service_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_check_service_status.json
│ │ └── k8s_check_service_status.py
│ ├── k8s_check_worker_cpu_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_check_worker_cpu_utilization.json
│ │ └── k8s_check_worker_cpu_utilization.py
│ ├── k8s_delete_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_delete_pod.json
│ │ └── k8s_delete_pod.py
│ ├── k8s_delete_pvc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_delete_pvc.json
│ │ └── k8s_delete_pvc.py
│ ├── k8s_describe_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_describe_node.json
│ │ └── k8s_describe_node.py
│ ├── k8s_describe_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_describe_pod.json
│ │ └── k8s_describe_pod.py
│ ├── k8s_detect_service_crashes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_detect_service_crashes.json
│ │ └── k8s_detect_service_crashes.py
│ ├── k8s_exec_command_on_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_exec_command_on_pod.json
│ │ └── k8s_exec_command_on_pod.py
│ ├── k8s_exec_command_on_pods_and_filter/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_exec_command_on_pods_and_filter.json
│ │ └── k8s_exec_command_on_pods_and_filter.py
│ ├── k8s_execute_helm_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_execute_helm_command.json
│ │ └── k8s_execute_helm_command.py
│ ├── k8s_execute_local_script_on_a_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_execute_local_script_on_a_pod.json
│ │ └── k8s_execute_local_script_on_a_pod.py
│ ├── k8s_gather_data_for_pod_troubleshoot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_gather_data_for_pod_troubleshoot.json
│ │ └── k8s_gather_data_for_pod_troubleshoot.py
│ ├── k8s_gather_data_for_service_troubleshoot/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_gather_data_for_service_troubleshoot.json
│ │ └── k8s_gather_data_for_service_troubleshoot.py
│ ├── k8s_get_all_evicted_pods_from_namespace/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_all_evicted_pods_from_namespace.json
│ │ └── k8s_get_all_evicted_pods_from_namespace.py
│ ├── k8s_get_all_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_all_pods.json
│ │ └── k8s_get_all_pods.py
│ ├── k8s_get_all_resources_utilization_info/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_all_resources_utilization_info.json
│ │ └── k8s_get_all_resources_utilization_info.py
│ ├── k8s_get_candidate_nodes_for_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_candidate_nodes_for_pods.json
│ │ └── k8s_get_candidate_nodes_for_pods.py
│ ├── k8s_get_cluster_health/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_cluster_health.json
│ │ └── k8s_get_cluster_health.py
│ ├── k8s_get_config_map_kube_system/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_config_map_kube_system.json
│ │ └── k8s_get_config_map_kube_system.py
│ ├── k8s_get_deployment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_deployment.json
│ │ └── k8s_get_deployment.py
│ ├── k8s_get_deployment_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_deployment_status.json
│ │ └── k8s_get_deployment_status.py
│ ├── k8s_get_error_pods_from_all_jobs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_error_pods_from_all_jobs.json
│ │ └── k8s_get_error_pods_from_all_jobs.py
│ ├── k8s_get_expiring_cluster_certificate/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_expiring_cluster_certificate.json
│ │ └── k8s_get_expiring_cluster_certificate.py
│ ├── k8s_get_expiring_tls_secret_certificates/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_expiring_tls_secret_certificates.json
│ │ └── k8s_get_expiring_tls_secret_certificates.py
│ ├── k8s_get_failed_deployments/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_failed_deployments.json
│ │ └── k8s_get_failed_deployments.py
│ ├── k8s_get_frequently_restarting_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_frequently_restarting_pods.json
│ │ └── k8s_get_frequently_restarting_pods.py
│ ├── k8s_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_handle.json
│ │ └── k8s_get_handle.py
│ ├── k8s_get_healthy_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_healthy_pods.json
│ │ └── k8s_get_healthy_pods.py
│ ├── k8s_get_memory_utilization_of_services/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_memory_utilization_of_services.json
│ │ └── k8s_get_memory_utilization_of_services.py
│ ├── k8s_get_node_status_and_resource_utilization/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_node_status_and_resource_utilization.json
│ │ └── k8s_get_node_status_and_resource_utilization.py
│ ├── k8s_get_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_nodes.json
│ │ └── k8s_get_nodes.py
│ ├── k8s_get_nodes_pressure/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_nodes_pressure.json
│ │ └── k8s_get_nodes_pressure.py
│ ├── k8s_get_nodes_with_insufficient_resources/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_nodes_with_insufficient_resources.json
│ │ └── k8s_get_nodes_with_insufficient_resources.py
│ ├── k8s_get_offline_nodes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_offline_nodes.json
│ │ └── k8s_get_offline_nodes.py
│ ├── k8s_get_oomkilled_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_oomkilled_pods.json
│ │ └── k8s_get_oomkilled_pods.py
│ ├── k8s_get_pending_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pending_pods.json
│ │ └── k8s_get_pending_pods.py
│ ├── k8s_get_pod_config/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pod_config.json
│ │ └── k8s_get_pod_config.py
│ ├── k8s_get_pod_logs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pod_logs.json
│ │ └── k8s_get_pod_logs.py
│ ├── k8s_get_pod_logs_and_filter/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pod_logs_and_filter.json
│ │ └── k8s_get_pod_logs_and_filter.py
│ ├── k8s_get_pod_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pod_status.json
│ │ └── k8s_get_pod_status.py
│ ├── k8s_get_pods_attached_to_pvc/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_attached_to_pvc.json
│ │ └── k8s_get_pods_attached_to_pvc.py
│ ├── k8s_get_pods_in_crashloopbackoff_state/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_in_crashloopbackoff_state.json
│ │ └── k8s_get_pods_in_crashloopbackoff_state.py
│ ├── k8s_get_pods_in_imagepullbackoff_state/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_in_imagepullbackoff_state.json
│ │ └── k8s_get_pods_in_imagepullbackoff_state.py
│ ├── k8s_get_pods_in_not_running_state/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_in_not_running_state.json
│ │ └── k8s_get_pods_in_not_running_state.py
│ ├── k8s_get_pods_in_terminating_state/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_in_terminating_state.json
│ │ └── k8s_get_pods_in_terminating_state.py
│ ├── k8s_get_pods_with_high_restart/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_pods_with_high_restart.json
│ │ └── k8s_get_pods_with_high_restart.py
│ ├── k8s_get_service_images/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_service_images.json
│ │ └── k8s_get_service_images.py
│ ├── k8s_get_service_with_no_associated_endpoints/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_service_with_no_associated_endpoints.json
│ │ └── k8s_get_service_with_no_associated_endpoints.py
│ ├── k8s_get_services/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_services.json
│ │ └── k8s_get_services.py
│ ├── k8s_get_unbound_pvcs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_unbound_pvcs.json
│ │ └── k8s_get_unbound_pvcs.py
│ ├── k8s_get_versioning_info/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_get_versioning_info.json
│ │ └── k8s_get_versioning_info.py
│ ├── k8s_kubectl_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_command.json
│ │ └── k8s_kubectl_command.py
│ ├── k8s_kubectl_config_set_context/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_config_set_context.json
│ │ └── k8s_kubectl_config_set_context.py
│ ├── k8s_kubectl_config_view/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_config_view.json
│ │ └── k8s_kubectl_config_view.py
│ ├── k8s_kubectl_delete_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_delete_pod.json
│ │ └── k8s_kubectl_delete_pod.py
│ ├── k8s_kubectl_describe_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_describe_node.json
│ │ └── k8s_kubectl_describe_node.py
│ ├── k8s_kubectl_describe_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_describe_pod.json
│ │ └── k8s_kubectl_describe_pod.py
│ ├── k8s_kubectl_drain_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_drain_node.json
│ │ └── k8s_kubectl_drain_node.py
│ ├── k8s_kubectl_exec_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_exec_command.json
│ │ └── k8s_kubectl_exec_command.py
│ ├── k8s_kubectl_get_api_resources/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_get_api_resources.json
│ │ └── k8s_kubectl_get_api_resources.py
│ ├── k8s_kubectl_get_logs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_get_logs.json
│ │ └── k8s_kubectl_get_logs.py
│ ├── k8s_kubectl_get_service_namespace/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_get_service_namespace.json
│ │ └── k8s_kubectl_get_service_namespace.py
│ ├── k8s_kubectl_list_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_list_pods.json
│ │ └── k8s_kubectl_list_pods.py
│ ├── k8s_kubectl_patch_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_patch_pod.json
│ │ └── k8s_kubectl_patch_pod.py
│ ├── k8s_kubectl_rollout_deployment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_rollout_deployment.json
│ │ └── k8s_kubectl_rollout_deployment.py
│ ├── k8s_kubectl_scale_deployment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_scale_deployment.json
│ │ └── k8s_kubectl_scale_deployment.py
│ ├── k8s_kubectl_show_metrics_node/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_show_metrics_node.json
│ │ └── k8s_kubectl_show_metrics_node.py
│ ├── k8s_kubectl_show_metrics_pod/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_kubectl_show_metrics_pod.json
│ │ └── k8s_kubectl_show_metrics_pod.py
│ ├── k8s_list_all_matching_pods/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_list_all_matching_pods.json
│ │ └── k8s_list_all_matching_pods.py
│ ├── k8s_list_pvcs/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_list_pvcs.json
│ │ └── k8s_list_pvcs.py
│ ├── k8s_measure_worker_node_network_bandwidth/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_measure_worker_node_network_bandwidth.json
│ │ └── k8s_measure_worker_node_network_bandwidth.py
│ ├── k8s_remove_pod_from_deployment/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── k8s_remove_pod_from_deployment.json
│ │ └── k8s_remove_pod_from_deployment.py
│ └── k8s_update_command_in_pod_spec/
│ ├── README.md
│ ├── __init__.py
│ ├── k8s_update_command_in_pod_spec.json
│ └── k8s_update_command_in_pod_spec.py
├── License
├── Mantishub/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ └── mantishub_get_handle/
│ ├── README.md
│ ├── mantishub_get_handle.json
│ └── mantishub_get_handle.py
├── Mongo/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── mongodb_add_new_field_in_collections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_add_new_field_in_collections.json
│ │ └── mongodb_add_new_field_in_collections.py
│ ├── mongodb_aggregate_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_aggregate_command.json
│ │ └── mongodb_aggregate_command.py
│ ├── mongodb_atlas_cluster_backup/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_atlas_cluster_backup.json
│ │ └── mongodb_atlas_cluster_backup.py
│ ├── mongodb_check_large_index_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_check_large_index_size.json
│ │ └── mongodb_check_large_index_size.py
│ ├── mongodb_compare_disk_size_to_threshold/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_compare_disk_size_to_threshold.json
│ │ └── mongodb_compare_disk_size_to_threshold.py
│ ├── mongodb_count_documents/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_count_documents.json
│ │ └── mongodb_count_documents.py
│ ├── mongodb_create_collection/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_create_collection.json
│ │ └── mongodb_create_collection.py
│ ├── mongodb_create_database/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_create_database.json
│ │ └── mongodb_create_database.py
│ ├── mongodb_delete_collection/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_delete_collection.json
│ │ └── mongodb_delete_collection.py
│ ├── mongodb_delete_database/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_delete_database.json
│ │ └── mongodb_delete_database.py
│ ├── mongodb_delete_document/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_delete_document.json
│ │ └── mongodb_delete_document.py
│ ├── mongodb_distinct_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_distinct_command.json
│ │ └── mongodb_distinct_command.py
│ ├── mongodb_find_document/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_find_document.json
│ │ └── mongodb_find_document.py
│ ├── mongodb_find_one/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_find_one.json
│ │ └── mongodb_find_one.py
│ ├── mongodb_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_get_handle.json
│ │ └── mongodb_get_handle.py
│ ├── mongodb_get_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_get_metrics.json
│ │ └── mongodb_get_metrics.py
│ ├── mongodb_get_replica_set/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_get_replica_set.json
│ │ └── mongodb_get_replica_set.py
│ ├── mongodb_get_server_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_get_server_status.json
│ │ └── mongodb_get_server_status.py
│ ├── mongodb_get_write_conflicts/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_get_write_conflicts.json
│ │ └── mongodb_get_write_conflicts.py
│ ├── mongodb_insert_document/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_insert_document.json
│ │ └── mongodb_insert_document.py
│ ├── mongodb_kill_queries/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_kill_queries.json
│ │ └── mongodb_kill_queries.py
│ ├── mongodb_list_collections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_list_collections.json
│ │ └── mongodb_list_collections.py
│ ├── mongodb_list_databases/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_list_databases.json
│ │ └── mongodb_list_databases.py
│ ├── mongodb_list_queries/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_list_queries.json
│ │ └── mongodb_list_queries.py
│ ├── mongodb_read_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_read_query.json
│ │ └── mongodb_read_query.py
│ ├── mongodb_remove_field_in_collections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_remove_field_in_collections.json
│ │ └── mongodb_remove_field_in_collections.py
│ ├── mongodb_rename_database/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_rename_database.json
│ │ └── mongodb_rename_database.py
│ ├── mongodb_update_document/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mongodb_update_document.json
│ │ └── mongodb_update_document.py
│ └── mongodb_write_query/
│ ├── README.md
│ ├── __init__.py
│ ├── mongodb_write_query.json
│ └── mongodb_write_query.py
├── MsSQL/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── mssql_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mssql_get_handle.json
│ │ └── mssql_get_handle.py
│ ├── mssql_read_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mssql_read_query.json
│ │ └── mssql_read_query.py
│ └── mssql_write_query/
│ ├── README.md
│ ├── __init__.py
│ ├── mssql_write_query.json
│ └── mssql_write_query.py
├── MySQL/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── mysql_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mysql_get_handle.json
│ │ └── mysql_get_handle.py
│ ├── mysql_get_long_run_queries/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mysql_get_long_run_queries.json
│ │ └── mysql_get_long_run_queries.py
│ ├── mysql_kill_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mysql_kill_query.json
│ │ └── mysql_kill_query.py
│ ├── mysql_read_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── mysql_read_query.json
│ │ └── mysql_read_query.py
│ └── mysql_write_query/
│ ├── README.md
│ ├── __init__.py
│ ├── mysql_write_query.json
│ └── mysql_write_query.py
├── Netbox/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── netbox_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── netbox_get_handle.json
│ │ └── netbox_get_handle.py
│ └── netbox_list_devices/
│ ├── README.md
│ ├── __init__.py
│ ├── netbox_list_devices.json
│ └── netbox_list_devices.py
├── Nomad/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── nomad_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── nomad_get_handle.json
│ │ └── nomad_get_handle.py
│ └── nomad_list_jobs/
│ ├── README.md
│ ├── __init__.py
│ ├── nomad_list_jobs.json
│ └── nomad_list_jobs.py
├── Opsgenie/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ └── opsgenie_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── opsgenie_get_handle.json
│ └── opsgenie_get_handle.py
├── Pingdom/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── pingdom_create_new_maintenance_window/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_create_new_maintenance_window.json
│ │ └── pingdom_create_new_maintenance_window.py
│ ├── pingdom_do_single_check/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_do_single_check.json
│ │ └── pingdom_do_single_check.py
│ ├── pingdom_get_analysis/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_analysis.json
│ │ └── pingdom_get_analysis.py
│ ├── pingdom_get_checkids/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_checkids.json
│ │ └── pingdom_get_checkids.py
│ ├── pingdom_get_checkids_by_name/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_checkids_by_name.json
│ │ └── pingdom_get_checkids_by_name.py
│ ├── pingdom_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_handle.json
│ │ └── pingdom_get_handle.py
│ ├── pingdom_get_maintenance/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_maintenance.json
│ │ └── pingdom_get_maintenance.py
│ ├── pingdom_get_results/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_results.json
│ │ └── pingdom_get_results.py
│ ├── pingdom_get_tmscheck/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_get_tmscheck.json
│ │ └── pingdom_get_tmscheck.py
│ ├── pingdom_pause_or_unpause_checkids/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── pingdom_pause_or_unpause_checkids.json
│ │ └── pingdom_pause_or_unpause_checkids.py
│ └── pingdom_traceroute/
│ ├── README.md
│ ├── __init__.py
│ ├── pingdom_traceroute.json
│ └── pingdom_traceroute.py
├── Postgresql/
│ ├── Postgresql_Display_Long_Running.ipynb
│ ├── Postgresql_Display_Long_Running.json
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── postgres_calculate_bloat/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgres_calculate_bloat.json
│ │ └── postgres_calculate_bloat.py
│ ├── postgresql_call_function/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_call_function.json
│ │ └── postgresql_call_function.py
│ ├── postgresql_check_active_connections/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_check_active_connections.json
│ │ └── postgresql_check_active_connections.py
│ ├── postgresql_check_locks/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_check_locks.json
│ │ └── postgresql_check_locks.py
│ ├── postgresql_check_unused_indexes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_check_unused_indexes.json
│ │ └── postgresql_check_unused_indexes.py
│ ├── postgresql_create_table/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_create_table.json
│ │ └── postgresql_create_table.py
│ ├── postgresql_delete_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_delete_query.json
│ │ └── postgresql_delete_query.py
│ ├── postgresql_get_cache_hit_ratio/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_get_cache_hit_ratio.json
│ │ └── postgresql_get_cache_hit_ratio.py
│ ├── postgresql_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_get_handle.json
│ │ └── postgresql_get_handle.py
│ ├── postgresql_get_index_usage/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_get_index_usage.json
│ │ └── postgresql_get_index_usage.py
│ ├── postgresql_get_server_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_get_server_status.json
│ │ └── postgresql_get_server_status.py
│ ├── postgresql_handling_transaction/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_handling_transaction.json
│ │ └── postgresql_handling_transaction.py
│ ├── postgresql_long_running_queries/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_long_running_queries.json
│ │ └── postgresql_long_running_queries.py
│ ├── postgresql_read_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_read_query.json
│ │ └── postgresql_read_query.py
│ ├── postgresql_show_tables/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_show_tables.json
│ │ └── postgresql_show_tables.py
│ ├── postgresql_stored_procedures/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── postgresql_stored_procedures.json
│ │ └── postgresql_stored_procedures.py
│ └── postgresql_write_query/
│ ├── README.md
│ ├── __init__.py
│ ├── postgresql_write_query.json
│ └── postgresql_write_query.py
├── Prometheus/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── prometheus_alerts_list/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── prometheus_alerts_list.json
│ │ └── prometheus_alerts_list.py
│ ├── prometheus_get_all_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── prometheus_get_all_metrics.json
│ │ └── prometheus_get_all_metrics.py
│ ├── prometheus_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── prometheus_get_handle.json
│ │ └── prometheus_get_handle.py
│ └── prometheus_get_metric_statistics/
│ ├── README.md
│ ├── prometheus_get_metric_statistics.json
│ └── prometheus_get_metric_statistics.py
├── README.md
├── README_extending_docker.md
├── Redis/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── redis_delete_all_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_delete_all_keys.json
│ │ └── redis_delete_all_keys.py
│ ├── redis_delete_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_delete_keys.json
│ │ └── redis_delete_keys.py
│ ├── redis_delete_stale_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_delete_stale_keys.json
│ │ └── redis_delete_stale_keys.py
│ ├── redis_get_cluster_health/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_get_cluster_health.json
│ │ └── redis_get_cluster_health.py
│ ├── redis_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_get_handle.json
│ │ └── redis_get_handle.py
│ ├── redis_get_keys_count/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_get_keys_count.json
│ │ └── redis_get_keys_count.py
│ ├── redis_get_metrics/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── redis_get_metrics.json
│ │ └── redis_get_metrics.py
│ └── redis_list_large_keys/
│ ├── README.md
│ ├── __init__.py
│ ├── redis_list_large_keys.json
│ └── redis_list_large_keys.py
├── Rest/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── rest_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── rest_get_handle.json
│ │ └── rest_get_handle.py
│ └── rest_methods/
│ ├── README.md
│ ├── __init__.py
│ ├── rest_methods.json
│ └── rest_methods.py
├── SSH/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── ssh_execute_remote_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_execute_remote_command.json
│ │ └── ssh_execute_remote_command.py
│ ├── ssh_find_large_files/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_find_large_files.json
│ │ └── ssh_find_large_files.py
│ ├── ssh_get_ec2_instances_with_low_available_disk_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_get_ec2_instances_with_low_available_disk_size.json
│ │ └── ssh_get_ec2_instances_with_low_available_disk_size.py
│ ├── ssh_get_ec2_instances_with_low_memory_size/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_get_ec2_instances_with_low_memory_size.json
│ │ └── ssh_get_ec2_instances_with_low_memory_size.py
│ ├── ssh_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_get_handle.json
│ │ └── ssh_get_handle.py
│ ├── ssh_get_hosts_with_low_disk_latency/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_get_hosts_with_low_disk_latency.json
│ │ └── ssh_get_hosts_with_low_disk_latency.py
│ ├── ssh_restart_service_using_sysctl/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── ssh_restart_service_using_sysctl.json
│ │ └── ssh_restart_service_using_sysctl.py
│ └── ssh_scp/
│ ├── README.md
│ ├── __init__.py
│ ├── ssh_scp.json
│ └── ssh_scp.py
├── SalesForce/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── salesforce_assign_case/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_assign_case.json
│ │ └── salesforce_assign_case.py
│ ├── salesforce_case_change_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_case_change_status.json
│ │ └── salesforce_case_change_status.py
│ ├── salesforce_create_case/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_create_case.json
│ │ └── salesforce_create_case.py
│ ├── salesforce_delete_case/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_delete_case.json
│ │ └── salesforce_delete_case.py
│ ├── salesforce_get_case/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_get_case.json
│ │ └── salesforce_get_case.py
│ ├── salesforce_get_case_status/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_get_case_status.json
│ │ └── salesforce_get_case_status.py
│ ├── salesforce_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_get_handle.json
│ │ └── salesforce_get_handle.py
│ ├── salesforce_search_case/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── salesforce_search_case.json
│ │ └── salesforce_search_case.py
│ └── salesforce_update_case/
│ ├── README.md
│ ├── __init__.py
│ ├── salesforce_update_case.json
│ └── salesforce_update_case.py
├── Slack/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── slack_create_channel_invite_users/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── slack_create_channel_invite_users.json
│ │ └── slack_create_channel_invite_users.py
│ ├── slack_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── slack_get_handle.json
│ │ └── slack_get_handle.py
│ ├── slack_lookup_user_by_email/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── slack_lookup_user_by_email.json
│ │ └── slack_lookup_user_by_email.py
│ ├── slack_post_image/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── slack_post_image.json
│ │ └── slack_post_image.py
│ ├── slack_post_message/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── slack_post_message.json
│ │ └── slack_post_message.py
│ └── slack_send_DM/
│ ├── README.md
│ ├── __init__.py
│ ├── slack_send_DM.json
│ └── slack_send_DM.py
├── Snowflake/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── snowflake_read_query/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── snowflake_read_query.json
│ │ └── snowflake_read_query.py
│ └── snowflake_write_query/
│ ├── README.md
│ ├── __init__.py
│ ├── snowflake_write_query.json
│ └── snowflake_write_query.py
├── Splunk/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ └── splunk_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── splunk_get_handle.json
│ └── splunk_get_handle.py
├── Stripe/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── stripe_capture_charge/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_capture_charge.json
│ │ └── stripe_capture_charge.py
│ ├── stripe_close_dispute/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_close_dispute.json
│ │ └── stripe_close_dispute.py
│ ├── stripe_create_charge/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_create_charge.json
│ │ └── stripe_create_charge.py
│ ├── stripe_create_customer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_create_customer.json
│ │ └── stripe_create_customer.py
│ ├── stripe_create_refund/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_create_refund.json
│ │ └── stripe_create_refund.py
│ ├── stripe_delete_customer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_delete_customer.json
│ │ └── stripe_delete_customer.py
│ ├── stripe_get_all_charges/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_get_all_charges.json
│ │ └── stripe_get_all_charges.py
│ ├── stripe_get_all_customers/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_get_all_customers.json
│ │ └── stripe_get_all_customers.py
│ ├── stripe_get_all_disputes/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_get_all_disputes.json
│ │ └── stripe_get_all_disputes.py
│ ├── stripe_get_all_refunds/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_get_all_refunds.json
│ │ └── stripe_get_all_refunds.py
│ ├── stripe_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_get_handle.json
│ │ └── stripe_get_handle.py
│ ├── stripe_retrieve_charge/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_retrieve_charge.json
│ │ └── stripe_retrieve_charge.py
│ ├── stripe_retrieve_customer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_retrieve_customer.json
│ │ └── stripe_retrieve_customer.py
│ ├── stripe_retrieve_dispute/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_retrieve_dispute.json
│ │ └── stripe_retrieve_dispute.py
│ ├── stripe_retrieve_refund/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_retrieve_refund.json
│ │ └── stripe_retrieve_refund.py
│ ├── stripe_update_charge/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_update_charge.json
│ │ └── stripe_update_charge.py
│ ├── stripe_update_customer/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_update_customer.json
│ │ └── stripe_update_customer.py
│ ├── stripe_update_dispute/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── stripe_update_dispute.json
│ │ └── stripe_update_dispute.py
│ └── stripe_update_refund/
│ ├── README.md
│ ├── __init__.py
│ ├── stripe_update_refund.json
│ └── stripe_update_refund.py
├── Terraform/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── terraform_exec_command/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── terraform_exec_command.json
│ │ └── terraform_exec_command.py
│ └── terraform_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── terraform_get_handle.json
│ └── terraform_get_handle.py
├── Vault/
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── vault_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── vault_get_handle.json
│ │ └── vault_get_handle.py
│ └── vault_get_service_health/
│ ├── README.md
│ ├── __init__.py
│ ├── vault_get_service_health.json
│ └── vault_get_service_health.py
├── Zabbix/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ └── zabbix_get_handle/
│ ├── README.md
│ ├── __init__.py
│ ├── zabbix_get_handle.json
│ └── zabbix_get_handle.py
├── _config.yml
├── all_modules_test.py
├── bin/
│ ├── add_creds.sh
│ └── unskript-add-check.sh
├── build/
│ └── templates/
│ ├── Dockerfile.template
│ ├── GetStarted.ipynb
│ ├── Makefile.extend-docker.template
│ ├── Welcome.ipynb
│ └── Welcome_template.ipynb
├── generate_readme.ipynb
├── generate_readme.nbconvert.ipynb
├── helm/
│ ├── .helmignore
│ ├── full/
│ │ ├── Chart.yaml
│ │ ├── README.md
│ │ ├── templates/
│ │ │ ├── NOTES.txt
│ │ │ ├── _helpers.tpl
│ │ │ ├── deployment.yaml
│ │ │ ├── service.yaml
│ │ │ ├── serviceaccount.yaml
│ │ │ └── statefulset.yaml
│ │ └── values.yaml
│ └── minimal/
│ ├── Chart.yaml
│ ├── README.md
│ ├── templates/
│ │ ├── NOTES.txt
│ │ ├── _helpers.tpl
│ │ ├── deployment.yaml
│ │ ├── service.yaml
│ │ ├── serviceaccount.yaml
│ │ └── statefulset.yaml
│ └── values.yaml
├── infra/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── infra_execute_runbook/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── infra_execute_runbook.json
│ │ └── infra_execute_runbook.py
│ ├── infra_workflow_done/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── infra_workflow_done.json
│ │ └── infra_workflow_done.py
│ ├── workflow_ss_append_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── workflow_ss_append_keys.json
│ │ └── workflow_ss_append_keys.py
│ ├── workflow_ss_create_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── workflow_ss_create_keys.json
│ │ └── workflow_ss_create_keys.py
│ ├── workflow_ss_delete_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── workflow_ss_delete_keys.json
│ │ └── workflow_ss_delete_keys.py
│ ├── workflow_ss_get_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── workflow_ss_get_keys.json
│ │ └── workflow_ss_get_keys.py
│ ├── workflow_ss_rename_keys/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── workflow_ss_rename_keys.json
│ │ └── workflow_ss_rename_keys.py
│ └── workflow_ss_update_keys/
│ ├── README.md
│ ├── __init__.py
│ ├── workflow_ss_update_keys.json
│ └── workflow_ss_update_keys.py
├── lists/
│ ├── Action_list.md
│ ├── action_AIRFLOW.md
│ ├── action_AWS.md
│ ├── action_AWS_ACM.md
│ ├── action_AWS_ASG.md
│ ├── action_AWS_CLI.md
│ ├── action_AWS_CLOUDTRAIL.md
│ ├── action_AWS_CLOUDWATCH.md
│ ├── action_AWS_COST_EXPLORER.md
│ ├── action_AWS_DYNAMODB.md
│ ├── action_AWS_EBC.md
│ ├── action_AWS_EBS.md
│ ├── action_AWS_EC2.md
│ ├── action_AWS_ECS.md
│ ├── action_AWS_EKS.md
│ ├── action_AWS_ELASTICACHE.md
│ ├── action_AWS_ELASTICCACHE.md
│ ├── action_AWS_ELB.md
│ ├── action_AWS_EMR.md
│ ├── action_AWS_IAM.md
│ ├── action_AWS_LAMBDA.md
│ ├── action_AWS_LOGS.md
│ ├── action_AWS_NAT_GATEWAY.md
│ ├── action_AWS_POSTGRES.md
│ ├── action_AWS_RDS.md
│ ├── action_AWS_REDSHIFT.md
│ ├── action_AWS_ROUTE53.md
│ ├── action_AWS_S3.md
│ ├── action_AWS_SECRET_MANAGER.md
│ ├── action_AWS_SQS.md
│ ├── action_AWS_SSM.md
│ ├── action_AWS_STS.md
│ ├── action_AWS_VPC.md
│ ├── action_AZURE.md
│ ├── action_CHATGPT.md
│ ├── action_CLOUDOPS.md
│ ├── action_COST_OPT,CATEGORY_TYPE_SRE.md
│ ├── action_COST_OPT.md
│ ├── action_DATADOG.md
│ ├── action_DATADOG_ALERTS.md
│ ├── action_DATADOG_EVENT.md
│ ├── action_DATADOG_INCIDENT.md
│ ├── action_DATADOG_METRICS.md
│ ├── action_DATADOG_MONITOR.md
│ ├── action_DB.md
│ ├── action_DEVOPS.md
│ ├── action_EBS.md
│ ├── action_ECS.md
│ ├── action_ES.md
│ ├── action_GCP.md
│ ├── action_GCP_BUCKET.md
│ ├── action_GCP_FILE_STORE.md
│ ├── action_GCP_GKE.md
│ ├── action_GCP_IAM.md
│ ├── action_GCP_SECRET.md
│ ├── action_GCP_SHEETS.md
│ ├── action_GCP_STORAGE.md
│ ├── action_GCP_VM.md
│ ├── action_GCP_VMS.md
│ ├── action_GCP_VPC.md
│ ├── action_GITHUB.md
│ ├── action_GITHUB_ISSUE.md
│ ├── action_GITHUB_ORG.md
│ ├── action_GITHUB_PR.md
│ ├── action_GITHUB_REPO.md
│ ├── action_GITHUB_TEAM.md
│ ├── action_GITHUB_USER.md
│ ├── action_GRAFANA.md
│ ├── action_HADOOP.md
│ ├── action_IAM.md
│ ├── action_INFRA.md
│ ├── action_JENKINS.md
│ ├── action_JIRA.md
│ ├── action_K8S.md
│ ├── action_K8S_CLUSTER.md
│ ├── action_K8S_KUBECTL.md
│ ├── action_K8S_NAMESPACE.md
│ ├── action_K8S_NODE.md
│ ├── action_K8S_POD.md
│ ├── action_K8S_PVC.md
│ ├── action_KAFKA.md
│ ├── action_MANTISHUB.md
│ ├── action_MONGODB.md
│ ├── action_MONGODB_CLUSTER.md
│ ├── action_MONGODB_COLLECTION.md
│ ├── action_MONGODB_DOCUMENT.md
│ ├── action_MONGODB_QUERY.md
│ ├── action_MSSQL.md
│ ├── action_MSSQL_QUERY.md
│ ├── action_MYSQL.md
│ ├── action_MYSQL_QUERY.md
│ ├── action_NETBOX.md
│ ├── action_NOMAD.md
│ ├── action_OPENSEARCH.md
│ ├── action_PINGDOM.md
│ ├── action_POSTGRESQL.md
│ ├── action_POSTGRESQL_QUERY.md
│ ├── action_POSTGRESQL_TABLE.md
│ ├── action_PROMETHEUS.md
│ ├── action_REDIS.md
│ ├── action_REST.md
│ ├── action_SALESFORCE.md
│ ├── action_SECOPS.md
│ ├── action_SLACK.md
│ ├── action_SNOWFLAKE.md
│ ├── action_SPLUNK.md
│ ├── action_SRE.md
│ ├── action_SSH.md
│ ├── action_STRIPE.md
│ ├── action_STRIPE_CHARGE.md
│ ├── action_STRIPE_DISPUTE.md
│ ├── action_STRIPE_REFUND.md
│ ├── action_TERRAFORM.md
│ ├── action_TROUBLESHOOTING.md
│ ├── action_ZABBIX.md
│ ├── runbook_CLOUDOPS.md
│ ├── runbook_COST_OPT.md
│ ├── runbook_DEVOPS.md
│ ├── runbook_IAM.md
│ ├── runbook_SECOPS.md
│ ├── runbook_SRE.md
│ ├── runbook_TROUBLESHOOTING.md
│ └── xRunBook_list.md
├── opensearch/
│ ├── README.md
│ ├── __init__.py
│ └── legos/
│ ├── __init__.py
│ ├── opensearch_get_handle/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── opensearch_get_handle.json
│ │ └── opensearch_get_handle.py
│ └── opensearch_search/
│ ├── README.md
│ ├── __init__.py
│ ├── opensearch_search.json
│ └── opensearch_search.py
├── region_test.py
├── sanitize.py
├── suites/
│ ├── AWS_RDS.json
│ ├── Cost_optimization.json
│ ├── K8s_connectivity.json
│ ├── K8s_pods.json
│ ├── K8s_runtime.json
│ ├── aws_ec2.json
│ ├── aws_lambbdas.json
│ └── aws_loadbalancer.json
├── templates/
│ ├── README.md
│ ├── legos/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── lego.json
│ │ └── lego.py
│ ├── runbooks/
│ │ ├── StartHere.ipynb
│ │ ├── gcp.ipynb
│ │ └── k8s.ipynb
│ └── scheduler.template
├── tools/
│ ├── README.md
│ └── runbook-sa/
│ ├── runbook_sa.py
│ └── runbook_sa.sh
├── unskript-ctl/
│ ├── DESIGN.md
│ ├── README.md
│ ├── add_creds.py
│ ├── bash_completion_unskript_ctl.bash
│ ├── config/
│ │ └── unskript_ctl_config.yaml
│ ├── config_parser_test_matrix.md
│ ├── creds_ui.py
│ ├── diagnostics.py
│ ├── diagnostics_worker.py
│ ├── docs/
│ │ └── design.puml
│ ├── stub_creds.json
│ ├── templates/
│ │ ├── check.py.template
│ │ ├── check_test.py.template
│ │ ├── first_cell_content.j2
│ │ ├── last_cell_content.j2
│ │ ├── template_info_lego.j2
│ │ ├── template_script.j2
│ │ └── timeout_handler.j2
│ ├── tests/
│ │ ├── test_database.py
│ │ ├── test_errors.log
│ │ ├── test_notification.py
│ │ └── test_unskript_factory.py
│ ├── unskript-add-check.py
│ ├── unskript-ctl.sh
│ ├── unskript_audit_cleanup.py
│ ├── unskript_ctl_config_parser.py
│ ├── unskript_ctl_custom_notification.py
│ ├── unskript_ctl_database.py
│ ├── unskript_ctl_factory.py
│ ├── unskript_ctl_main.py
│ ├── unskript_ctl_notification.py
│ ├── unskript_ctl_run.py
│ ├── unskript_ctl_upload_session_logs.py
│ ├── unskript_ctl_version.py
│ ├── unskript_db_schema.json
│ ├── unskript_email_notify_check_schema.json
│ ├── unskript_slack_notify_schema.json
│ ├── unskript_upload_results_to_s3.py
│ └── unskript_utils.py
├── validator.py
└── xrunbooks-directory.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/Anatomy-of-Runbook.md
================================================
[<img align="left" src="https://unskript.com/assets/favicon.png" width="100" height="100" style="padding-right: 5px">](https://unskript.com/assets/favicon.png)
<h1>Anatomy of a unSkript Runbook</h1>
<div class="warning" style='padding:0.1em; background-color:#EFEFFF; color:#69337A'>
<span>
<p style='margin-top:1em; text-align:center'>
<b>Runbook Definition</b></p>
<p style='margin-left:1em;'>
In a computer system or network, a Runbook is a compilation of routine procedures and operations that the system administrator or operator carries out. System administrators in IT department and NOCs use Runbooks as a reference.
</p>
<p style='margin-bottom:1em; margin-right:1em; text-align:right; font-family:Georgia'> <b>- Wikipedia</b> <i>(https://en.wikipedia.org/wiki/Runbook)</i>
</p></span>
</div>
## unSkript Runbook
unSkript Runbooks is a collection of atomic Routines called unSkript Actions. Think of it like a building blocks (like Legos) with which you can construct any model you wish. These Actions are nothing but modular Python functions that accomplish a well defined task. Using these Actions you can construct a unSkript Runbook to accomplish a given task. In that sense unSkript Runbooks is a collection of such Actions and/or Information Text that accomplish a pre-defined task.
<image src="https://github.com/unskript/Awesome-CloudOps-Automation/blob/master/.github/images/anatomy.png">
<br>
<image src="https://github.com/unskript/Awesome-CloudOps-Automation/blob/master/.github/images/ui.png">
<br>
## Actions
Actions (sometimes referred to here as Legos) are the Atomic part of a unSkript Runbook. Here is a sample Action that performs a well defined task.
```
def aws_get_instance_details(handle, instance_id: str, region: str) -> Dict:
"""aws_get_instance_details Returns instance details.
:type handle: object
:param handle: Object returned by the task.validate(...) method.
:type instance_ids: list
:param instance_ids: List of instance ids.
:type region: string
:param region: Region for instance.
:rtype: Dict with the instance details.
"""
ec2client = handle.client('ec2', region_name=region)
instances = []
response = ec2client.describe_instances(
Filters=[{"Name": "instance-id", "Values": [instance_id]}])
for reservation in response["Reservations"]:
for instance in reservation["Instances"]:
instances.append(instance)
return instances[0]
```
This Action expects three parameters as inputs.
1. `handle` is an Object of type `Connector AWS`.
2. `instance-id` is the `aws ec2` instance identifier.
3. `region` is the `aws region` where the `aws ec2` can be found
Actions depend on the respective connector. What this means is that we need to
create a AWS connector before using this AWS Action. You can create any supported
connector by clicking on `Credentials` -> Add New Credential.
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing
Thanks for taking time to contribute and helping us make this project better! The following is a set of guidelines for contributing to the project.
Please note we have a code of conduct, please follow it in all your interactions with the project.
## Submitting issues
We have several forms for your issues:
* [Bug Report](https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=): Ensure you have followed the steps in the form so we can best assist you.
* [Feature Request](https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=): Do you have an awesome idea to make this project better? We want to hear it!
* [Action Creation](https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=action%2Ctriage&projects=&template=add_action.yml&title=%5BAction%5D%3A+): Do you have an idea for a new Action?
* [RunBook idea](https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=runbook%2Ctriage&projects=&template=add_runbook.yml&title=%5BRunBook%5D%3A+): Have a request or idea for a RunBook that will make the life of an SRE better? File it using this form.
### Version control branching
-----------------------------
* Always **make a new branch** for your work.
* **Base your new branch off of the master branch** on the main
repository.
### Create a new xRunBook
Your RunBooks are stored locally at ```$HOME/Awesome-CloudOps-Automation/custom/runbooks``` Copy an existing xRunBook and rename it. It will appear in the Welcome page on refresh. Click to Open.
Your saved xRunBook can be found at ```$HOME/Awesome-CloudOps-Automation/custom/runbooks```
1. All created RunBooks have a ipynb file. You'll need to create a .json file with metadata about your RunBook. Copy from another RunBook un the repository, and update the values for each parameter.
2. Use the sanitize.py script to remove all parameters and outputs from your Runbook:
```shell
python3 sanitize.py -f <ipynb file>
```
3. Copy the saved RunBook (json and ipynb) files from the Custom folder into the folder of the Connector used, and submit a PR!
### Create a new Action
#### Create a new action inside an existing RunBook.
1. If you will not use external credentials, click *+Add Action* at the top of the menu.
2. If you will be using an existing credential, add an existing Action for that service (like AWS), and edit the code to create your new Action.
3. If the service you'd like to build for does not have credentials yet, please [file an issue](https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=Credential%2Ctriage&template=add_credential.yml&title=%5BCredential%5D%3A+).
#### Creating and connecting your Action
1. [Creating Custom Actions](https://docs.unskript.com/unskript-product-documentation/guides/actions/create-custom-actions) describes the steps to create your own Action.
2. To submit to OSS, follow the [Submit An Action](https://docs.unskript.com/unskript-product-documentation/guides/contribute-to-open-source#actions) instructions.
## Support Channels
---
Whether you are a user or contributor, official support channels include:
- GitHub issues: https://github.com/unskript/Awesome-CloudOps-Automation/issues/new
- Slack: https://communityinviter.com/apps/cloud-ops-community/awesome-cloud-automation
### Extending Docker
You can use our base docker and extend the functionality to fit your need. Follow this [document](./README_extending_docker.md) to create and build your own custom docker.
================================================
FILE: .github/DEVELOPERGUIDE.md
================================================
<p align="center">
<a href="https://github.com/unskript/Awesome-CloudOps-Automation">
<img src="https://unskript.com/assets/favicon.png" alt="Logo" width="80" height="80">
</a>
<p align="center">
<h3 align="center">Action Development Guide</h3>
<p align="center">
CloudOps automation made simple!
<br />
<br />
<a href="https://unskript.com/blog">Visit our blog</a>
·
<a href="https://www.youtube.com/channel/UCvtSYNHVvuogq2u-F7UDMkw">YouTube Tutorials</a>
.
<a href="https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=&template=bug_report.md&title=">Report Bug</a>
·
<a href="https://github.com/unskript/Awesome-CloudOps-Automation/issues/new?assignees=&labels=&template=feature_request.md&title=">Request Feature</a>
</p>
</p>
# Actions
Actions are the atomic units of xRunBooks. All xRunBooks are composed of Actions, and each Action is a step that progresses the xRunBook.
In this document, we'll walk through the anatomy of a Lego/Action, how they are created, and how they work.
> TL;dr: If you build your Action with the Docker Open source, and save it to your computer, these files will be generated for you. You'll have to modify two files before making a contribution:
* the JSON file (to update the parameters)
* the Readme (tell us what your action does and how it works)
# Lego Authoring Guidelines
## Directory Structure
The Directory structure is:
1. CONNECTOR is a directory of xRunBooks and Lego/Actions that are run for a particular service/API/etc. (for example: Redis, AWS or Slack)
2. Inside the CONNECTOR Directory will be two files for each xRunBook (a JSON file and the actual rRunBook in the .ipynb file), and the Lego subdirectory will hold all of the Actions.
In this document, we'll walk through the steps in creating an Action.
```
CONNECTOR
|- __init__.py
|- RUNBOOKS
|- legos
|- __init__.py
|- LEGO1
| |- __init__.py
| |- README.md
| |- LEGO1.json
| |- LEGO1.py
| |- LEGO1_SUPPORTING.png/gif/jpeg
|
|- LEGO2
|- __init__.py
|- README.md
|- LEGO2.json
|- LEGO2.py
|- LEGO2_SUPPORTING.png/gif/jpeg
```
Here's an Example structure for AWS, with a Lego called aws_delete_volume:
```
AWS
|- Resize_PVC.ipynb
|- __init__.py
|- legos
|- __init__.py
|- aws_delete_volume
|- __init__.py
|- README.md
|- aws_delete_volume.json
|- aws_delete_volume.py
```
1. Every Directory under the CONNECTOR will have __init__.py file (Essential to distinguish as a module/sub-module).
2. Every CONNECTOR will have a legos Directory. (Example: AWS/legos)
3. Underneath of legos directory, Every Lego will have the same Name Directory Example: aws_delete_volume will have aws_delete_volume.py underneath of it.
4. Every Lego Directory will have:
1. [README.md](#readmemd)
2. [JSON File](#json-file)
3. [py file](#python-file)
You may have additional files if your readme has images.
## README.md
The README.md explains what the Action is supposed to do, It should contain:
1. **Action Title**
```
Example:
<h2>Delete AWS EBS Volume </h2>
```
2. **Description**: explains what the Lego is intended to do.
```
This Action deletes AWS EBS volume and gives a list of deletion status.
```
3. **Action Details**: here we explain the Action signature, what are the different input fields to the Action. It's also nice to add an example of how the Action might be used:
```
aws_delete_volumes(handle: object, volume_id: str, region: str)
handle: Object of type unSkript AWS Connector
volume_id: Volume ID needed to delete particular volume
region: Used to filter the volume for specific region
```
Example Usage:
aws_delete_volumes(handle,
"vol-039ce61146a4d7901",
"us-west-2")
5. **Action Input**: explains how many parameters are needed for the LeActiongo. Which of them are Mandatory, which of them are optional.
```
This Action take three inputs handle, volume_id and region. All three are required.
```
6. **Action Output** A sample output from the Action upon completion. Ensure to remove sensitive values.
## Action JSON file
If you created your Action with the Docker build of unSkript, the JSON file is generated for you.
Here is an example JSON file:
Example:
```json
{
"action_title": "Delete AWS EBS Volume by Volume ID",
"action_description": "Delete AWS Volume by Volume ID",
"action_type": "LEGO_TYPE_AWS",
"action_entry_function": "aws_delete_volumes",
"action_needs_credential": true,
"action_output_type": "ACTION_OUTPUT_TYPE_LIST",
"action_supports_poll": true,
"action_supports_iteration": true,
"action_categories": []
}
```
All of these fields are Mandatory.
* **Action Title**: The human readable title of your Lego
* **Action Description**: a text description of what the Lego does
* **Action Type**:
* Action Entry Function:
* **Action Needs Credential**: Boolean - are the credentials for this connector required?
* **Action Output Type**: A string? a List? what does the output look like?
* **Action Supports Poll**: can we poll this Action if it takes a while to finish?
* **action_supports_iteration**: Can we run this Action many times with multiple inputs?
* **action_categories**: categories that appear in teh documentation - for added visibility of your action.
## Python file
This is the Python file that is run in the xRunBook. Examples can be found in the various Lego directories in this repository.
The fastest way to create the Python file is to create your Action in the Docker build of unSkript. WHen you save your Action (from the three dot menu next to the "Run Action" button), it will be saved locally on your computer
## __init__.py
This can be copied from any other Action directory and pasted in.
================================================
FILE: .github/ISSUE_TEMPLATE/add_action.yml
================================================
name: Create New Action
description: File an Action Request
title: "[Action]: "
labels: ["action", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest a new Action!
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: checkboxes
id: healthcheck
attributes:
label: HealthCheck
description: Check Actions can be used in the Healthcheck flow
options:
- label: Is this Action a Check Action?
- type: textarea
id: Actionname
attributes:
label: Action Name
description: What is the Name for your Action?
placeholder: List all Open GitHub Pull Requests
validations:
required: true
- type: textarea
id: Actioninputs
attributes:
label: Action Inputs
description: What variables (and variable types) do you expect for this action
placeholder: region instance_id
validations:
required: true
- type: textarea
id: Actionoutputs
attributes:
label: Action Outputs
description: What do you want to see in the Action output (and type)
placeholder: list of all IP addresses
validations:
required: true
- type: textarea
id: comments
attributes:
label: Comments
description: Do you have any additional information for this Action?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/add_chatgpt_action.yml
================================================
---
name: Create New Action with files
description: File an Action Request with files
title: "[Action]: "
labels:
- action
- triage
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to suggest a new Action! If you have used
ChatGPT to generate the files for an action, you can submit them here.
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: Actionname
attributes:
label: Action Name
description: What is the Name for your Action?
placeholder: List all Open GitHub Pull Requests
validations:
required: true
- type: textarea
id: Actionreadme
attributes:
label: Action Readme
description: paste in your readme file (in markdown)
placeholder: null
validations:
required: true
- type: textarea
id: Actionjson
attributes:
label: Action json
description: paste in your json file
placeholder: null
validations:
required: true
- type: textarea
id: Actionpy
attributes:
label: Action python
description: paste in your python file
validations:
required: true
- type: textarea
id: Actionoutputs
attributes:
label: Action Outputs
description: What do you want to see in the Action output (and type)
placeholder: null
validations:
required: true
- type: textarea
id: comments
attributes:
label: Comments
description: Do you have any additional information for this Action?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of
Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/add_credential.yml
================================================
name: Create New Credential
description: File an Credential Request
title: "[Credential]: "
labels: ["Credential", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest a new Credential!
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: credentialname
attributes:
label: Credential Name
description: What is the service you would like to connect to unSkript?
validations:
required: true
- type: textarea
id: Credentialinputs
attributes:
label: Credential type
description: What is the authentication procedure with this service? Examples API key or key/secret
validations:
required: true
- type: textarea
id: comments
attributes:
label: Comments
description: Do you have any additional information for this Connection?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/add_runbook.yml
================================================
name: Create New RunBook
description: File an Runbook Request
title: "[RunBook]: "
labels: ["runbook", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest a new runbook!
- type: input
id: contact
attributes:
label: Contact Details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: runbookname
attributes:
label: RunBook Name
description: What is the Name for your runbook?
placeholder: List all Open GitHub Pull Requests
validations:
required: true
- type: textarea
id: runbookinputs
attributes:
label: runbook Inputs
description: What variables (and variable types) do you expect for this runbook
placeholder: region instance_id
validations:
required: true
- type: textarea
id: runbookActions
attributes:
label: runBook Actions
description: What actions should be in this runbook? Do oututs from actions tie into other actions?
validations:
required: true
- type: textarea
id: comments
attributes:
label: Comments
description: Do you have any additional information for this Runbook?
validations:
required: false
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/action_pr_template.yml
================================================
name: Action Pull Request
description: Use this template to raise PR for your Action
labels:
- 'awesome-action'
body:
- type: markdown
attributes:
value: |
Please include a summary of the change, motivation and context
- type: textarea
id: description
attributes:
label: Description
description: |
1. Describe the feature and how this change fits in it, e.g. this PR makes kafka message.max.bytes configurable to better support batching
2. Describe why this is better than previous situation e.g. this PR changes logic for retry on healthchecks to avoid false positives
3. Dink relevant information about the bug (github issue or slack thread) and how this change solves it e.g. this change fixes #99999 by adding a lock on read/write to avoid data races.
placeholder: |
...
validations:
required: true
- type: textarea
id: testing
attributes:
label: Testing
description: Please describe the tests that you ran to verify your changes. Please summarize what did you test and what needs to be tested e.g. deployed and tested helm chart locally.
placeholder: ...
validations:
required: true
- type: markdown
attributes:
value: |
### Checklist
- [ ] My changes generate no new warnings.
- [ ] I have added tests that prove my fix is effective or that my feature works.
- [ ] Any dependent changes have been merged and published.
- type: textarea
id: documentation
attributes:
label: Documentation
description: Make sure that you have documented corresponding changes in this repository.
placeholder: |
Include __important__ links regarding the implementation of this PR.
This usually includes and RFC or an aggregation of issues and/or individual
conversations that helped put this solution together. This helps ensure there is a good
aggregation of resources regarding the implementation.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/feature_request_template.yml
================================================
name: Feature request
description: Use this template for requesting a feature/enhancement.
labels:
- 'feature-request'
body:
- type: markdown
attributes:
value: |
Please provide the feature/enhancement request in as much details as possible
- type: input
id: feature name
attributes:
label: Feature Name
description: |
Mention what the feature/enhancement you would like to have developed
You can share any screenshots, diagrams, etc..
placeholder: |
My Awesome Feature
validations:
required: true
- type: textarea
id: feature
attributes:
label: Feature description
description: Describe feature that you would like to see
placeholder: ...
validations:
required: true
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/lego_pr_template.md
================================================
## Description
Please include a summary of the change, motivation and context.
<!--
- **on a feature**: describe the feature and how this change fits in it, e.g. this PR makes kafka message.max.bytes configurable to better support batching
- **on a refactor**: describe why this is better than previous situation e.g. this PR changes logic for retry on healthchecks to avoid false positives
- **on a bugfix**: link relevant information about the bug (github issue or slack thread) and how this change solves it e.g. this change fixes #99999 by adding a lock on read/write to avoid data races.
-->
### Testing
Please describe the tests that you ran to verify your changes. Please summarize what did you test and what needs to be tested e.g. deployed and tested helm chart locally.
### Checklist:
- [ ] My changes generate no new warnings.
- [ ] I have added tests that prove my fix is effective or that my feature works.
- [ ] Any dependent changes have been merged and published.
### Documentation
Make sure that you have documented corresponding changes in this repository.
<!--
Include __important__ links regarding the implementation of this PR.
This usually includes and RFC or an aggregation of issues and/or individual conversations that helped put this solution together. This helps ensure there is a good aggregation of resources regarding the implementation.
-->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/runbook_pr_template.md
================================================
## Description
Please describe what the runbook is accomplishing.
> Eg: This Runbook helps in find and prune un-used keypairs in AWS
### Runbook Parameters
Please describe the parameters that are required to be filled when this runbook is run.
> Eg: This Runbook needs One parameter `region`
> region: string : AWS Region where we need to search the un-used keypairs in.
### Runbook URL
<!--
This is optional. If the Runbook was developed on say unSkript hosted tenants, Please
specify the URL to the Runbook.
-->
### Checks
Please include the list of checks this runbook has implemented.
> Eg: This runbook implements health check for MongoDB Server.
### Checklist:
- [ ] My runbook has parameters
- [ ] Runbook parameters have default values
- [ ] Have included Runbook URL
- [ ] Have attached Screenshot of the Runbook
- [ ] Runbook has checks included
- [ ] Runbook has remediation included
### Documentation
Make sure that you have documented corresponding changes in this repository.
<!--
Include __important__ links regarding the implementation of this PR.
This usually includes and reference documentation about how to detect the issue
and links (if any) to the remediation of the issue.
-->
================================================
FILE: .github/code-of-conduct.md
================================================
# Unskript Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at [community@unskript.com](mailto:community@unskript.com).
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: daily
================================================
FILE: .github/guidelines-to-creating-runbook.md
================================================
[<img align="left" src="https://unskript.com/assets/favicon.png" width="100" height="100" style="padding-right: 5px">](https://unskript.com/assets/favicon.png)
<h1>Guideline for creating reusable xRunBooks </h1>
<br>
## 1 Introduction
A Runbook is a collection of `Actions` which accomplish a well defined task. A Runbook is intended to be written once and used multiple times. So re-usability means the runbook needs to be `parameterized`. Parameterization of a runbook is the process wherein we define what are the Inputs expected to the Runbook. For instance, if we are authoring a Runbook to list and delete all unused key-pairs in AWS, then we can think of `AWS region` as an `input parameter` for this runbook.
This document lists such guidelines when creating re-usable runbooks.
## 2 Guidelines
1. To make runbook portable and re-usable we should not hard-code any values like `aws region` in the runbook. It should instead be taken as an input parameter to the runbook.
2. It is customary to have a `markdown` cell preceding each `Action` cell where we explain what is being done in the `Action` cell. Like any good code, a Runbook with well described `markdown` cells increases readability of the runbook.
3. A Runbook should have a clear `Steps` markdown cell where every step that is taken in the runbook is clearly explained.
4. A Runbook can have unSkript defined `Action` and/or custom `Action` cells. But every `Action` cell should be preceded with a `markdown` cell explaining the intent of the `Action` cell.
5. A Runbook shall list all the outputs clearly formatted and easy to read and understand.
6. A runbook shall have a `Conclusion` markdown cell which summarizes what was done in the runbook. We may also include any links to help in debugging the issue that the runbook set out to solve.
## 3 Runbook Etiquette
1. Runbook names should use the "_" to replace spaces.
2. Make sure there are no hard-coded values in the runbook. No magic variables in the runbook. Any variable being used should be well documented in the `Action` cell or in the `Markdown` cell.
3. Keep the structure of the runbook in the form of `Markdown` followed by `Action`
4. A Remediation section would help user know what are the next steps to take to resolve the issue at hand.
5. If a remediation is known Eg: Pruning un-used key-pairs in a region, then the runbook should provide an `Action` to achieve the desired remediation to the user. If it is not known, then the Runbook should offer Links to where further troubleshooting can be done.
================================================
FILE: .github/hfest_2022_resource.md
================================================
[<img align="left" src="https://unskript.com/assets/favicon.png" width="100" height="100" style="padding-right: 5px">](https://unskript.com/assets/favicon.png)
<h1>Hacktoberfest 2022 Resource</h1>
## Google cloud resource available for testing
### Storage Buckets (Object store)
Your computer's filesystem uses directories to organize data which are then stored in files. Similarly, data that is kept on the Cloud are in the form of objects, which are then gathered in buckets(a bucket is basically a container used to store objects).
###### Examples
1. gs://hacktoberfest_bucket_1/
2. gs://hacktoberfest_bucket_2/
3. gs://hacktoberfest_public_bucket/
### Compute instances (Compute Engine Instances)
Compute Engine instances can run public images for Linux and Windows Servers, as well as private custom images created or imported from existing systems. Additionally, Docker containers, which are launched automatically on instances running the Container-Optimized OS public image, can be deployed.
```NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
hacktoberfest-tagged us-west1-b e2-micro 10.138.0.4 RUNNING
hacktoberfest-untagged us-west1-b e2-micro 10.138.0.3 RUNNING
```
### Identity Access Management (IAM) user
IAM (Identity and Access Management) allows administrators to authorize who can take actions on specific resources, giving you complete control and visibility over Google Cloud resources.
```
DISPLAY NAME EMAIL DISABLED
hacktober-test-user hacktober-test-user@hacktoberfest-2022.iam.gserviceaccount.com False
```
### Filestore
Applications that need a file system interface and a shared file system for data can use Filestore, a managed file storage service. The user gets a native experience for setting up managed network detached storage with their virtual machine in the compute engine and Google Kubernetes Engine. For many applications, it is the ideal choice since it provides low latency for file operations.
```
INSTANCE_NAME LOCATION TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME
hacktoberfest-filestore us-west1-b BASIC_HDD 1024 hacktoberfest 10.101.128.210 CREATING 2022-10-11T23:12:25
```
### GKE (Google Kubernetes Engine) Cluster
Google Kubernetes Engine (GKE) is a managed, production-ready environment for running containerized applications.
```
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
hacktoberfest-cluster us-west1-b 1.22.12-gke.2300 XX.XXX.XXX.XX e2-medium 1.22.12-gke.2300 3 RUNNING
```
================================================
FILE: .github/images/actionShield.json
================================================
{"schemaVersion": 1, "label": "Action Count", "message": "539", "color": "green"}
================================================
FILE: .github/images/runbookShield.json
================================================
{"schemaVersion": 1, "label": "RunBook Count", "message": "81", "color": "orange"}
================================================
FILE: .github/pull_request_template.md
================================================
## Description
Please include a summary of the change, motivation and context.
<!--
- **on a feature**: describe the feature and how this change fits in it, e.g. this PR makes kafka message.max.bytes configurable to better support batching
- **on a refactor**: describe why this is better than previous situation e.g. this PR changes logic for retry on healthchecks to avoid false positives
- **on a bugfix**: link relevant information about the bug (github issue or slack thread) and how this change solves it e.g. this change fixes #99999 by adding a lock on read/write to avoid data races.
-->
### Testing
Please describe the tests that you ran to verify your changes. Please summarize what did you test and what needs to be tested e.g. deployed and tested helm chart locally.
### Checklist:
- [ ] My changes generate no new warnings.
- [ ] I have added tests that prove my fix is effective or that my feature works.
- [ ] Any dependent changes have been merged and published.
### Documentation
Make sure that you have documented corresponding changes in this repository.
<!--
Include __important__ links regarding the implementation of this PR.
This usually includes and RFC or an aggregation of issues and/or individual conversations that helped put this solution together. This helps ensure there is a good aggregation of resources regarding the implementation.
-->
================================================
FILE: .github/workflows/all_module_test.yml
================================================
name: All Modules Import Test
on:
pull_request:
types: [ opened, reopened, edited, ready_for_review ]
push:
permissions:
id-token: write
contents: read
env:
GITHUB_TOKEN: ${{ secrets.BUILDER_PAT_ENCODED }}
jobs:
all-module-import-test:
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- name: Harden Runner
uses: step-security/harden-runner@1f99358870fe1c846a3ccba386cc2b2246836776 # v2.2.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@v3
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: ${{ secrets.GHACTION_AWS_REGION }}
role-to-assume: ${{ secrets.GHACTION_AWS_ROLE }}
role-session-name: ${{ secrets.GHACTION_AWS_SESSION_NAME }}
- name: Install system dependencies
run: |
pip install shyaml
pip install --upgrade pip
sudo apt update
sudo apt install -y wget
# Install NumPy first with a compatible version
pip install numpy>=1.22.0
# Install PyArrow with binary wheel - no build required
pip install pyarrow --only-binary=pyarrow
# Continue with other dependencies
aws s3 cp ${{ secrets.BUILD_REQUIREMENTS }} /tmp/requirements.txt
pip install --no-cache-dir -r /tmp/requirements.txt || true
# Install main and sub modules
aws s3 cp ${{ secrets.MAIN_MODULE_BUILD_PACKAGE }} /tmp/main_module.tar.gz
pip install --no-cache-dir /tmp/main_module.tar.gz
aws s3 cp ${{ secrets.SUB_MODULE_BUILD_PACKAGE }} /tmp/sub_module.tar.gz
pip install --no-cache-dir /tmp/sub_module.tar.gz
# Additional dependencies
pip install --no-cache-dir matplotlib>=3.7.1
pip install setuptools wheel cython
- name: Run All Modules Check
run: /usr/bin/env python all_modules_test.py
================================================
FILE: .github/workflows/build-and-release-docker-lite.yml
================================================
name: Build and Release Docker Lite
on:
workflow_call:
inputs:
enabled:
required: true
type: boolean
release_tag:
required: true
type: string
unskript_branch:
required: false
default: "master"
type: string
awesome_branch:
required: false
default: "master"
type: string
devops_branch:
required: false
default: "master"
type: string
build_number:
required: true
type: string
latest:
required: false
default: true
type: boolean
workflow_dispatch:
inputs:
enabled:
description: 'Workflow Enable Flag'
required: true
default: false
type: boolean
unskript_branch:
description: 'unSkript Branch name'
required: true
default: master
type: string
awesome_branch:
description: 'unSkript submodule awesome Branch name'
required: true
default: master
type: string
gotty_branch:
description: 'gotty Branch name'
required: true
default: master
type: string
devops_branch:
description: 'Devops Branch name'
required: false
default: master
type: string
build_number:
description: 'Docker build number'
required: true
type: string
build_target:
required: true
default: 'build-amd64'
options:
- build-amd64
- build-both
- build-arm64
type: choice
latest:
description: 'Docker Latest tag Branch name'
default: false
type: boolean
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
env:
DOCKER_REGISTRY: docker.io
DOCKER_IMAGE: unskript/awesome-runbooks
DOCKER_USERNAME: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
USERNAME: ${{ secrets.BUILD_USER }}
DOCKER_TARGET: linux/amd64, linux/arm64
permissions:
contents: read
jobs:
build-unskript:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Configure APT and Install Dependencies
run: |
# Remove existing lists and clean apt cache
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
# Configure main repository
echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs) main restricted universe multiverse" | sudo tee /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs)-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
# Update package lists
sudo apt-get update -y
# Install ODBC packages
sudo apt-get install -y --no-install-recommends \
unixodbc-dev \
unixodbc \
unixodbc-common \
libodbcinst2
# Clean up
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.9'
- name: Install Python dependencies
run: |
pip install shyaml
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends unixodbc-dev unixodbc unixodbc-common libodbcinst2
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
# - name: Set up Python 3.x
# uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
# with:
# # Restricting python version to 3.9
# python-version: '3.9'
# - name: Install system dependencies
# run: |
# pip install shyaml
# #sudo apt-get install -y --allow-downgrades unixodbc-dev=2.3.9 unixodbc=2.3.9 odbcinst1debian2=2.3.9 odbcinst=2.3.9
# sudo apt-get install -y --allow-downgrades unixodbc-common libodbcinst2
- name: Checkout Code
run: |
wget -O /tmp/pandas-2.0.1.tar.gz https://files.pythonhosted.org/packages/6c/e0/73987b6ecc7246e02ab557240843f93fd5adf45d1355abb458aa1f2a0932/pandas-2.0.1.tar.gz
sudo pip install /tmp/pandas-2.0.1.tar.gz
cd $HOME
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/unskript.git unskript
cd unskript
git checkout ${{ inputs.unskript_branch }}
# We use the --upgrade-strage only-if-needed and --use-deprecated=legacy-resolver to avoid
# PIP dependency loop. Since we are asking the git runner to be of ubuntu-latest, it becomes
# a moving target for us hence we want to restrict the packages that are needed for unskript
# to compile to be fixed.
/usr/bin/env python -m pip install -r ./requirements.txt --upgrade --upgrade-strategy only-if-needed --use-deprecated=legacy-resolver
/usr/bin/env python -m pip install --upgrade protobuf
# We need to restrict URLLIB3 to 1.26.6 because Version 2.x.y onwards the DEFAULT_CIPHERS
# variable is deprecrated. Unfortunately our boto3 and botocore that is needed for our
# unskript package does not work with the latest version of URLLIB3. Hence we need to
# restrict it to a fixed version of 1.26.6
/usr/bin/env python -m pip install --upgrade urllib3==1.26.6
/usr/bin/env python -m pip install --upgrade types-urllib3==1.26.13
/usr/bin/env python -m pip install google-api-python-client==2.77.0
/usr/bin/env python -m pip install --upgrade numpy==1.23.4
make awesome-submodule
cd awesome
git checkout ${{ inputs.awesome_branch }}
cd ..
make legoschema
[ -f "setup-full.py" ] && cp "setup-full.py" ./setup.py
/usr/bin/env python ./setup.py bdist_wheel
mv dist/code*tar /tmp
mv dist/unskript-0.1.0-py2.py3-none-any.whl /tmp
- uses: actions/upload-artifact@v4
with:
name: schema-${{ github.run_id }}
path: /tmp/code_snippet_schemas.tar
- uses: actions/upload-artifact@v4
with:
name: unskript-${{ github.run_id }}
path: /tmp/unskript-0.1.0-py2.py3-none-any.whl
build-gotty:
runs-on: "ubuntu-latest"
if: ${{ inputs.enabled }}
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.21
- name: Checkout Code
run: |
cd $HOME
pwd
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/gotty.git gotty
- name: "Build & test"
run: |
cd $HOME/gotty
git checkout ${{ inputs.gotty_branch }}
make tools test release-artifacts
ls -l $HOME/gotty/builds/pkg
mkdir -p /tmp/linux_amd64
mkdir -p /tmp/linux_arm64
mv $HOME/gotty/builds/pkg/linux_amd64/gotty /tmp/linux_amd64
mv $HOME/gotty/builds/pkg/linux_arm64/gotty /tmp/linux_arm64
ls -l /tmp
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: gotty-linux-amd64-${{ github.run_id }}
path: /tmp/linux_amd64/gotty
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: gotty-linux-arm64-${{ github.run_id }}
path: /tmp/linux_arm64/gotty
build-docker:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
needs: [build-unskript, build-gotty]
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
# - name: Update Spy2 to workaround for repo timeout issue
# run: |
# sudo gem install apt-spy2
# sudo apt-spy2 fix --commit --launchpad --country=US
# sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.9'
- name: Install system dependencies
run: |
sudo apt update --fix-missing
pip install shyaml
- name: Setup Docker Buildx
uses: crazy-max/ghaction-docker-buildx@126d331dc69f4a1aa02452e374835e6a5d565613 # v3.3.1
with:
version: latest
config: .github/buildkitd.toml
- name: Prepare Docker Buildx
id: prepare
run: |
echo ::set-output name=docker_platform::${DOCKER_TARGET}
echo ::set-output name=docker_image::${DOCKER_REGISTRY}/${DOCKER_IMAGE}
echo ::set-output name=version::${GITHUB_RUN_NUMBER}
- name: Docker Login
run: |
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
- name: Checkout Code
run: |
cd $HOME
pwd
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/devops.git devops
- uses: actions/download-artifact@v4
with:
name: schema-${{ github.run_id }}
path: /tmp/unskript
- uses: actions/download-artifact@v4
with:
name: unskript-${{ github.run_id }}
path: /tmp/unskript
- uses: actions/download-artifact@v4
with:
name: gotty-linux-amd64-${{ github.run_id }}
path: /tmp/gotty/linux_amd64
- uses: actions/download-artifact@v4
with:
name: gotty-linux-arm64-${{ github.run_id }}
path: /tmp/gotty/linux_arm64
- name: Prepare to Build
run: |
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite
ls -l /tmp/unskript/
tar xf /tmp/unskript/code_snippet_schemas.tar
cd downloads
mv /tmp/unskript/*.whl .
mkdir -p gotty/linux_amd64
mkdir -p gotty/linux_arm64
ls -l /tmp/gotty
ls -l /tmp/gotty/linux_amd64
mv /tmp/gotty/linux_amd64/gotty gotty/linux_amd64
mv /tmp/gotty/linux_arm64/gotty gotty/linux_arm64
if [[ ${{ inputs.latest }} == "true" ]]; then
bt="${{ env.DOCKER_IMAGE }}:minimal-${{ inputs.build_number }} -t ${{ env.DOCKER_IMAGE }}:minimal-latest"
else
bt="${{ env.DOCKER_IMAGE }}:minimal-${{ inputs.build_number }}"
fi
echo "BUILD_TAGS=$bt" >> $GITHUB_ENV
- uses: geekyeggo/delete-artifact@54ab544f12cdb7b71613a16a2b5a37a9ade990af # v2.0.0
with:
name: |
unskript-${{ github.run_id }}
schema-${{ github.run_id }}
gotty-linux-amd64-${{ github.run_id }}
gotty-linux-arm64-${{ github.run_id }}
- name: Copy unskript-ctl files
run: |
# docker buildx create --name mybuilder
# docker buildx use mybuilder
# docker buildx inspect --bootstrap
# docker buildx ls
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite
git checkout ${{ inputs.devops_branch }}
export BUILD_NUMBER=${{ inputs.build_number }}
make copy
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite/
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/unskript.git unskript
cd unskript
git checkout ${{ inputs.unskript_branch }}
make awesome-submodule
cd awesome
git checkout ${{ inputs.awesome_branch }}
cd ..
make syncrunbooks
#sed -i "s/BUILD_NUMBER = .*/BUILD_NUMBER = \"${{ inputs.build_number }}\"/g" awesome/unskript-ctl/unskript_ctl_version.py
# Lets ADD BUILD_NUMBER TO THE version file
echo "BUILD_NUMBER = \"${{ inputs.build_number }}\"" >> awesome/unskript-ctl/unskript_ctl_version.py
cp -Rf awesome/unskript-ctl/* $HOME/devops/dockers/jupyterlab/oss_docker_lite/
cp -Rf awesome/bin/* $HOME/devops/dockers/jupyterlab/oss_docker_lite/
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite/
# docker buildx build --platform linux/amd64,linux/arm64 --push -t ${{ env.BUILD_TAGS }} .
- name: Docker Build & Push
run: |
if [ "${{ inputs.build_target }}" = "build-amd64" ]; then
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite/
docker buildx build --cache-from type=gha --cache-to type=gha,mode=max --platform linux/amd64 --push -t ${{ env.BUILD_TAGS }} .
elif [ "${{ inputs.build_target }}" = "build-arm64" ]; then
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite/
docker buildx build --cache-from type=gha --cache-to type=gha,mode=max --platform linux/arm64 --push -t ${{ env.BUILD_TAGS }} .
elif [ "${{ inputs.build_target }}" = "build-both" ]; then
cd $HOME/devops/dockers/jupyterlab/oss_docker_lite/
docker buildx build --cache-from type=gha --cache-to type=gha,mode=max --platform linux/amd64,linux/arm64 --push -t ${{ env.BUILD_TAGS }} .
fi
- name: Docker Scout
id: docker-scout
uses: docker/scout-action@v1
with:
command: cves
image: ${{ env.BUILD_TAGS }}
only-severities: critical,high
exit-code: true
- name: Validate result of Docker Scout
if: failure()
run: |
sudo apt install -y jq curl
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "${{ env.DOCKER_USERNAME }}", "password": "${{ env.DOCKER_PASSWORD }}"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
REPO_LIST=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/unskript/?page_size=200 | jq -r '.results | if . then .[] | .name else empty end')
for i in ${REPO_LIST}
do
curl -X DELETE -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/unskript/${i}/tags/${{ inputs.build_number }}/
echo "DELETED IMAGE THAT FAILED DOCKER SCOUT TEST"
done
cleanup:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
needs: [build-docker]
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Install system dependencies
run: |
pip install shyaml
- uses: geekyeggo/delete-artifact@54ab544f12cdb7b71613a16a2b5a37a9ade990af # v2.0.0
with:
name: |
unskript-${{ github.run_id }}
schema-${{ github.run_id }}
gotty-linux-amd64-${{ github.run_id }}
gotty-linux-arm64-${{ github.run_id }}
================================================
FILE: .github/workflows/build-and-release-docker.yml
================================================
name: Build and Release Docker
on:
workflow_call:
inputs:
enabled:
required: true
type: boolean
release_tag:
required: true
type: string
elyra_branch:
required: false
default: "master"
type: string
unskript_branch:
required: false
default: "master"
type: string
celltoolbar_branch:
required: false
default: "master"
type: string
snippet_branch:
required: false
default: "master"
type: string
awesome_branch:
required: false
default: "master"
type: string
devops_branch:
required: false
default: "master"
type: string
build_number:
required: true
type: string
latest:
required: false
default: true
type: boolean
workflow_dispatch:
inputs:
enabled:
description: 'Workflow Enable Flag'
required: true
default: false
type: boolean
elyra_branch:
description: 'Elyra Branch name'
required: true
default: master
type: string
unskript_branch:
description: 'unSkript Branch name'
required: true
default: master
type: string
celltoolbar_branch:
description: 'Celltoolbar Branch name'
required: true
default: master
type: string
snippet_branch:
description: 'Code Snippets Branch name'
required: true
default: master
type: string
awesome_branch:
description: 'unSkript submodule awesome Branch name'
required: true
default: master
type: string
devops_branch:
description: 'Devops Branch name'
required: false
default: master
type: string
build_number:
description: 'Docker build number'
required: true
type: string
latest:
description: 'Docker Latest tag Branch name'
default: false
type: boolean
concurrency:
group: ${{ github.ref }}-full-build
cancel-in-progress: true
env:
DOCKER_REGISTRY: docker.io
DOCKER_IMAGE: unskript/awesome-runbooks
DOCKER_USERNAME: ${{ secrets.DOCKER_USER }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
USERNAME: ${{ secrets.BUILD_USER }}
DOCKER_TARGET: linux/amd64, linux/arm64
permissions:
contents: read
jobs:
build-elyra:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Install system dependencies
run: |
pip install shyaml
- name: Update Spy2 to workaround for repo timeout issue
run: |
sudo gem install apt-spy2
sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.7'
- name: Checkout & Build Code
run: |
cd $HOME
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/elyra.git elyra
cd elyra
git checkout ${{ inputs.elyra_branch }}
python3 ./setup.py sdist
mv dist/elyra*.tar.gz /tmp
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: elyra-${{ github.run_id }}
path: /tmp/elyra-3.0.0.dev0.tar.gz
build-unskript:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
needs: [build-elyra]
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: elyra-${{ github.run_id }}
path: /tmp/elyra
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Update Spy2 to workaround for repo timeout issue
run: |
sudo gem install apt-spy2
sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
# Restricting python version to 3.9
python-version: '3.9'
- name: Install system dependencies
run: |
pip install shyaml
sudo apt-get install -y --allow-downgrades unixodbc-dev=2.3.7 unixodbc=2.3.7 odbcinst1debian2=2.3.7 odbcinst=2.3.7
- name: Checkout Code
run: |
wget -O /tmp/pandas-2.0.1.tar.gz https://files.pythonhosted.org/packages/6c/e0/73987b6ecc7246e02ab557240843f93fd5adf45d1355abb458aa1f2a0932/pandas-2.0.1.tar.gz
sudo pip install /tmp/pandas-2.0.1.tar.gz
cd $HOME
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/unskript.git unskript
cd unskript
git checkout ${{ inputs.unskript_branch }}
/usr/bin/env python -m pip install /tmp/elyra/*.tar.gz
# We use the --upgrade-strage only-if-needed and --use-deprecated=legacy-resolver to avoid
# PIP dependency loop. Since we are asking the git runner to be of ubuntu-latest, it becomes
# a moving target for us hence we want to restrict the packages that are needed for unskript
# to compile to be fixed.
/usr/bin/env python -m pip install -r ./requirements.txt --upgrade --upgrade-strategy only-if-needed --use-deprecated=legacy-resolver
/usr/bin/env python -m pip install --upgrade protobuf
# We need to restrict URLLIB3 to 1.26.6 because Version 2.x.y onwards the DEFAULT_CIPHERS
# variable is deprecrated. Unfortunately our boto3 and botocore that is needed for our
# unskript package does not work with the latest version of URLLIB3. Hence we need to
# restrict it to a fixed version of 1.26.6
/usr/bin/env python -m pip install --upgrade urllib3==1.26.6
/usr/bin/env python -m pip install --upgrade types-urllib3==1.26.13
/usr/bin/env python -m pip install google-api-python-client==2.77.0
make awesome-submodule
cd awesome
git checkout ${{ inputs.awesome_branch }}
cd ..
make legoschema
[ -f "setup-full.py" ] && cp "setup-full.py" ./setup.py
/usr/bin/env python ./setup.py bdist_wheel
mv dist/code*tar /tmp
mv dist/unskript-0.1.0-py2.py3-none-any.whl /tmp
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: schema-${{ github.run_id }}
path: /tmp/code_snippet_schemas.tar
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: unskript-${{ github.run_id }}
path: /tmp/unskript-0.1.0-py2.py3-none-any.whl
build-jlab-celltoolbar:
runs-on: ubuntu-20.04
if: ${{ inputs.enabled }}
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Update Spy2 to workaround for repo timeout issue
run: |
sudo gem install apt-spy2
sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.7'
- name: Install system dependencies
run: |
pip install shyaml
sudo apt install nodejs npm
pip install jupyterlab
- name: Checkout Code
run: |
cd $HOME
export NODE_OPTIONS=--openssl-legacy-provider
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/jlab-enhanced-cell-toolbar.git jlab-enhanced-cell-toolbar
cd jlab-enhanced-cell-toolbar
git checkout ${{ inputs.celltoolbar_branch }}
/usr/bin/env python -m pip install jupyter-packaging
/usr/bin/env python -m pip install --upgrade markupsafe
/usr/bin/env python -m pip install --upgrade jinja2
jlpm install
/usr/bin/env python ./setup.py bdist_wheel
mv dist/*.whl /tmp
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: toolbar-${{ github.run_id }}
path: /tmp/jlab_enhanced_cell_toolbar-3.4.0-py3-none-any.whl
build-code-snippets:
runs-on: ubuntu-20.04
if: ${{ inputs.enabled }}
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Update Spy2 to workaround for repo timeout issue
run: |
sudo gem install apt-spy2
sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.7'
- name: Install system dependencies
run: |
pip install shyaml
sudo apt install nodejs npm
pip install jupyterlab
- name: Checkout Code
run: |
cd $HOME
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/jupyterlab-code-snippets.git jupyterlab-code-snippets
cd jupyterlab-code-snippets
git checkout ${{ inputs.snippet_branch }}
/usr/bin/env python -m pip install jupyter-packaging
/usr/bin/env python -m pip install --upgrade markupsafe
/usr/bin/env python -m pip install --upgrade jinja2
jlpm install
/usr/bin/env python ./setup.py bdist_wheel
mv dist/*.whl /tmp
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: code-snippets-${{ github.run_id }}
path: /tmp/jupyterlab_code_snippets-2.1.1-py3-none-any.whl
build-docker:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
needs: [build-unskript, build-elyra, build-jlab-celltoolbar, build-code-snippets]
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Update Spy2 to workaround for repo timeout issue
run: |
sudo gem install apt-spy2
sudo apt-spy2 fix --commit --launchpad --country=US
sudo apt-get update
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.7'
- name: Install system dependencies
run: |
sudo apt update --fix-missing
pip install shyaml
- name: Setup Docker Buildx
uses: crazy-max/ghaction-docker-buildx@126d331dc69f4a1aa02452e374835e6a5d565613 # v3.3.1
with:
version: latest
config: .github/buildkitd.toml
- name: Prepare Docker Buildx
id: prepare
run: |
echo ::set-output name=docker_platform::${DOCKER_TARGET}
echo ::set-output name=docker_image::${DOCKER_REGISTRY}/${DOCKER_IMAGE}
echo ::set-output name=version::${GITHUB_RUN_NUMBER}
- name: Docker Login
run: |
echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin
- name: Checkout Code
run: |
cd $HOME
pwd
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/devops.git devops
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: code-snippets-${{ github.run_id }}
path: /tmp/code_snippet
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: toolbar-${{ github.run_id }}
path: /tmp/jlab_enhanced_cell_toolbar
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: schema-${{ github.run_id }}
path: /tmp/unskript
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: unskript-${{ github.run_id }}
path: /tmp/unskript
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: elyra-${{ github.run_id }}
path: /tmp/elyra
- name: Prepare to Build
run: |
cd $HOME/devops/dockers/jupyterlab/oss_docker
ls -l /tmp/unskript/
ls -l /tmp/elyra/
ls -l /tmp/jlab_enhanced_cell_toolbar/
ls -l /tmp/code_snippet/
tar xf /tmp/unskript/code_snippet_schemas.tar
cd downloads
mv /tmp/unskript/*.whl .
mv /tmp/code_snippet/*.whl .
mv /tmp/jlab_enhanced_cell_toolbar/*.whl .
mv /tmp/elyra/elyra*tar.gz .
if [[ ${{ inputs.latest }} == "true" ]]; then
bt="${{ env.DOCKER_IMAGE }}:${{ inputs.build_number }} -t ${{ env.DOCKER_IMAGE }}:latest"
else
bt="${{ env.DOCKER_IMAGE }}:${{ inputs.build_number }}"
fi
echo "BUILD_TAGS=$bt" >> $GITHUB_ENV
- uses: geekyeggo/delete-artifact@54ab544f12cdb7b71613a16a2b5a37a9ade990af # v2.0.0
with:
name: |
elyra-${{ github.run_id }}
toolbar-${{ github.run_id }}
code-snippets-${{ github.run_id }}
unskript-${{ github.run_id }}
schema-${{ github.run_id }}
- name: Build & Push
run: |
docker buildx create --name mybuilder
docker buildx use mybuilder
docker buildx inspect --bootstrap
docker buildx ls
cd $HOME/devops/dockers/jupyterlab/oss_docker
git checkout ${{ inputs.devops_branch }}
export BUILD_NUMBER=${{ inputs.build_number }}
make copy
cd $HOME/devops/dockers/jupyterlab/oss_docker/
git clone https://${{ env.USERNAME }}:${{ secrets.BUILDER_PAT }}@github.com/unskript/unskript.git unskript
cd unskript
git checkout ${{ inputs.unskript_branch }}
make awesome-submodule
cd awesome
git checkout ${{ inputs.awesome_branch }}
cd ..
make syncrunbooks
cp -Rf awesome/unskript-ctl/* $HOME/devops/dockers/jupyterlab/oss_docker/
cp -Rf awesome/bin/* $HOME/devops/dockers/jupyterlab/oss_docker/
cp awesome/build/templates/Welcome_template.ipynb $HOME/devops/dockers/jupyterlab/oss_docker/runbooks/template.ipynb
cp awesome/build/templates/Welcome.ipynb $HOME/devops/dockers/jupyterlab/oss_docker/runbooks/Welcome.ipynb
cd $HOME/devops/dockers/jupyterlab/oss_docker/
cp $HOME/devops/dockers/jupyterlab/common/install_utils.sh .
docker buildx build --platform linux/amd64,linux/arm64 --push -t ${{ env.BUILD_TAGS }} .
- name: Docker Scout
id: docker-scout
uses: docker/scout-action@v1
with:
command: cves
image: ${{ env.BUILD_TAGS }}
only-severities: critical,high
exit-code: true
- name: Validate result of Docker Scout
if: failure()
run: |
sudo apt install -y jq curl
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "${{ env.DOCKER_USERNAME }}", "password": "${{ env.DOCKER_PASSWORD }}"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
REPO_LIST=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/unskript/?page_size=200 | jq -r '.results | if . then .[] | .name else empty end')
for i in ${REPO_LIST}
do
curl -X DELETE -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/unskript/${i}/tags/${{ inputs.build_number }}/
echo "DELETED IMAGE THAT FAILED DOCKER SCOUT TEST"
done
cleanup:
runs-on: ubuntu-latest
if: ${{ inputs.enabled }}
needs: [build-docker]
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Install system dependencies
run: |
pip install shyaml
- uses: geekyeggo/delete-artifact@54ab544f12cdb7b71613a16a2b5a37a9ade990af # v2.0.0
with:
name: |
elyra-${{ github.run_id }}
toolbar-${{ github.run_id }}
code-snippets-${{ github.run_id }}
unskript-${{ github.run_id }}
schema-${{ github.run_id }}
================================================
FILE: .github/workflows/codeql.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: ["master"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["master"]
schedule:
- cron: "0 0 * * 1"
permissions:
contents: read
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ["python"]
# CodeQL supports [ $supported-codeql-languages ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Checkout repository
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
with:
category: "/language:${{matrix.language}}"
================================================
FILE: .github/workflows/dependency-review.yml
================================================
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Request,
# surfacing known-vulnerable versions of the packages declared or updated in the PR.
# Once installed, if the workflow run is marked as required,
# PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
name: 'Dependency Review'
on: [pull_request]
permissions:
contents: read
jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: 'Checkout Repository'
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: 'Dependency Review'
uses: actions/dependency-review-action@f6fff72a3217f580d5afd49a46826795305b63c7 # v3.0.8
================================================
FILE: .github/workflows/generate_readme.yaml
================================================
name: Generate Readme
on:
workflow_dispatch:
jobs:
generate-readme:
if: "!startsWith(github.event.head_commit.message, 'generateReadme:')"
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.7.0
with:
token: '${{ secrets.GENERATE_README }}'
- run: "pip install MarkupSafe==2.0.1"
- run: "pip install notebook"
- run: "pip install papermill"
- run: "pip install Markdown==3.3.7"
- run: "jupyter nbconvert --to notebook --execute generate_readme.ipynb"
- uses: EndBug/add-and-commit@1bad3abcf0d6ec49a5857d124b0bfb52dc7bb081 # v9.1.3
with:
message: 'generateReadme: Refresh'
copy-file:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Checkout
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.7.0
- name: Pushes action and runbook lists to docs
uses: dmnemec/copy_file_to_another_repo_action@bbebd3da22e4a37d04dca5f782edd5201cb97083 # main
env:
API_TOKEN_GITHUB: '${{ secrets.GENERATE_README }}'
with:
source_file: 'lists/Action_list.md'
destination_repo: 'unskript/docs'
destination_folder: 'lists'
user_email: 'doug.sillars@gmail.com'
user_name: 'dougsillars'
commit_message: 'a new list of actions!'
copy-file2:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Checkout
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.7.0
- name: Pushes action and runbook lists to docs
uses: dmnemec/copy_file_to_another_repo_action@bbebd3da22e4a37d04dca5f782edd5201cb97083 # main
env:
API_TOKEN_GITHUB: '${{ secrets.GENERATE_README }}'
with:
source_file: 'lists/.'
destination_repo: 'unskript/docs'
destination_folder: 'lists'
user_email: 'doug.sillars@gmail.com'
user_name: 'dougsillars'
commit_message: 'a new list of runbooks!'
================================================
FILE: .github/workflows/lint-test.yaml
================================================
name: Lint
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- master
pull_request:
branches:
- master
#on:
# workflow_dispatch:
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.9
- name: Install Python dependencies
run: pip install pylint
- name: Run linters
uses: wearerequired/lint-action@v2
with:
pylint: true
================================================
FILE: .github/workflows/make-release.yaml
================================================
name: Make Release
on:
workflow_dispatch:
jobs:
make-release:
runs-on: ubuntu-latest
outputs:
GITHUB_ONLY_TAG: ${{ steps.sanitize_tag.outputs.GITHUB_ONLY_TAG }}
GITHUB_CHANGELOG: ${{ steps.tag_version.outputs.changelog }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- run: git fetch --prune --unshallow
- name: Bump version and push
id: tag_version
uses: mathieudutour/github-tag-action@fcfbdceb3093f6d85a3b194740f8c6cec632f4e2 # v6.1
with:
github_token: ${{ secrets.BUILDER_PAT }}
dry_run: true
default_bump: minor
default_prerelease_bump: minor
append_to_pre_release_tag: ""
tag_prefix: ""
- name: Sanitize Tag
id: sanitize_tag
run: |
TAG_NAME=$(echo ${{ steps.tag_version.outputs.new_tag }} | cut -d '-' -f 1)
echo "GITHUB_ONLY_TAG=$TAG_NAME" >> $GITHUB_ENV
echo "GITHUB_CHANGELOG=${{ steps.tag_version.outputs.changelog }}" >> $GITHUB_ENV
echo "TAGNAME: $TAG_NAME"
echo "GITHUB_ONLY_TAG=$TAG_NAME" >> $GITHUB_OUTPUT
echo "GITHUB_CHANGELOG=${{ steps.tag_version.outputs.changelog }}" >> $GITHUB_OUTPUT
- name: Create Docker ReleaseNotes
id: create_docker_rn
run: |
echo "## Awesome Docker" > /tmp/docker_rn.md
echo "" >> /tmp/docker_rn.md
echo "" >> /tmp/docker_rn.md
echo "Please find the Latest build [Here](https://hub.docker.com/r/unskript/awesome-runbooks/tags)" >> /tmp/docker_rn.md
echo "" >> /tmp/docker_rn.md
echo "${{ steps.tag_version.outputs.changelog }}" >> /tmp/docker_rn.md
cat /tmp/docker_rn.md
- name: Create a GitHub release
uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0
with:
tag: ${{ steps.sanitize_tag.outputs.GITHUB_ONLY_TAG }}
name: Release ${{ steps.sanitize_tag.outputs.GITHUB_ONLY_TAG }}
bodyFile: "/tmp/docker_rn.md"
generateReleaseNotes: true
makeLatest: legacy
omitBody: false
omitBodyDuringUpdate: false
omitDraftDuringUpdate: false
omitName: false
omitNameDuringUpdate: false
omitPrereleaseDuringUpdate: false
removeArtifacts: false
replacesArtifacts: true
skipIfReleaseExists: false
updateOnlyUnreleased: false
build-docker:
needs: make-release
uses: "./.github/workflows/build-and-release-docker.yml"
with:
enabled: true
release_tag: "${{ needs.make-release.outputs.GITHUB_ONLY_TAG }}"
build_number: "${{ needs.make-release.outputs.GITHUB_ONLY_TAG }}"
elyra_branch: "master"
unskript_branch: "master"
celltoolbar_branch: "master"
snippet_branch: "master"
secrets: inherit
================================================
FILE: .github/workflows/run-legoschema.yml
================================================
name: Run Legoschema
on:
pull_request:
types: [opened, reopened, edited, ready_for_review]
push:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: false
permissions:
contents: read
jobs:
run-validator:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Install system dependencies
run: |
pip install shyaml
- name: Set up Python 3.x
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # v2.3.3
with:
python-version: '3.9'
- name: Run Validator
run: |
/usr/bin/env python ./validator.py
================================================
FILE: .github/workflows/sanitize-runbook.yml
================================================
name: Sanitize Runbook
on:
pull_request:
types: [ opened, reopened, edited, ready_for_review ]
push:
env:
PR_NUMBER: ${{ github.event.number }}
jobs:
sanitize-runbooks:
runs-on: ubuntu-latest
strategy:
fail-fast: true
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d-%s')"
- name: Install system dependencies
run: |
pip install shyaml nbformat URLExtract
- name: All Runbooks
id: files
run: |
echo "all_runbook_files=$(find . -mindepth 2 -maxdepth 2 -name \*.ipynb | tr '\n' ' ')" >> $GITHUB_OUTPUT
- name: Run Sanitize
id: sanity
run: |
echo "Running sanitize script on ${{ steps.files.outputs.all_runbooks_files }}"
/usr/bin/env python ./sanitize.py -v ${{ steps.files.outputs.all_runbook_files }}
- name: Run Region Test
run: |
/usr/bin/env python ./region_test.py
- name: Checkout Repository
uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Pytype Python Checker
uses: theahura/pytypes-action@main
with:
args: --generate-config pytype.toml
- name: Run Static Analysis on the Runbooks
run: |
================================================
FILE: .github/workflows/scorecards.yml
================================================
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '20 7 * * 2'
push:
branches: ["master"]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
contents: read
actions: read
steps:
- name: Harden Runner
uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: "Checkout code"
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.0
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecards on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@46ed16ded91731b2df79a2893d3aea8e9f03b5c4 # v2.20.3
with:
sarif_file: results.sarif
================================================
FILE: .gitignore
================================================
*.DS_Store
.ipynb_checkpoints
__pycache__
# Ignore temp files (build artifacts) that gets generated
# for custom Actions
custom/*
lib/*
# Ignore Temp files
*.jsonx
all_*legos.py
pyvenv.cfg
================================================
FILE: .pylintrc
================================================
# This Pylint rcfile contains a best-effort configuration to uphold the
# best-practices and style described in the Google Python style guide:
# https://google.github.io/styleguide/pyguide.html
#
# Its canonical open-source location is:
# https://google.github.io/styleguide/pylintrc
[MASTER]
# Files or directories to be skipped. They should be base names, not paths.
ignore=third_party
# Files or directories matching the regex patterns are skipped. The regex
# matches against base names, not paths.
ignore-patterns=
# Pickle collected data for later comparisons.
persistent=no
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Use multiple processes to speed up Pylint.
jobs=4
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once).You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=abstract-method,
apply-builtin,
arguments-differ,
attribute-defined-outside-init,
backtick,
bad-option-value,
basestring-builtin,
buffer-builtin,
c-extension-no-member,
consider-using-enumerate,
cmp-builtin,
cmp-method,
coerce-builtin,
coerce-method,
delslice-method,
div-method,
duplicate-code,
eq-without-hash,
execfile-builtin,
file-builtin,
filter-builtin-not-iterating,
fixme,
getslice-method,
global-statement,
hex-method,
idiv-method,
implicit-str-concat,
import-error,
import-self,
import-star-module-level,
inconsistent-return-statements,
input-builtin,
intern-builtin,
invalid-str-codec,
locally-disabled,
long-builtin,
long-suffix,
map-builtin-not-iterating,
misplaced-comparison-constant,
missing-function-docstring,
metaclass-assignment,
next-method-called,
next-method-defined,
no-absolute-import,
no-else-break,
no-else-continue,
no-else-raise,
no-else-return,
no-init, # added
no-member,
no-name-in-module,
no-self-use,
nonzero-method,
oct-method,
old-division,
old-ne-operator,
old-octal-literal,
old-raise-syntax,
parameter-unpacking,
print-statement,
raising-string,
range-builtin-not-iterating,
raw_input-builtin,
rdiv-method,
reduce-builtin,
relative-import,
reload-builtin,
round-builtin,
setslice-method,
signature-differs,
standarderror-builtin,
suppressed-message,
sys-max-int,
too-few-public-methods,
too-many-ancestors,
too-many-arguments,
too-many-boolean-expressions,
too-many-branches,
too-many-instance-attributes,
too-many-locals,
too-many-nested-blocks,
too-many-public-methods,
too-many-return-statements,
too-many-statements,
trailing-newlines,
unichr-builtin,
unicode-builtin,
unnecessary-pass,
unpacking-in-except,
useless-else-on-loop,
useless-object-inheritance,
import-outside-toplevel,
useless-suppression,
using-cmp-argument,
wrong-import-order,
xrange-builtin,
zip-builtin-not-iterating,
W,
C0103,
C0115,
C0114,
C0303,
C0304,
C0301,
C0412,
E0203,
R1732
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html. You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Tells whether to display a full report or only the messages
reports=no
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
[BASIC]
# Good variable names which should always be accepted, separated by a comma
good-names=main,_
# Bad variable names which should always be refused, separated by a comma
bad-names=
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
property-classes=abc.abstractproperty,cached_property.cached_property,cached_property.threaded_cached_property,cached_property.cached_property_with_ttl,cached_property.threaded_cached_property_with_ttl
# Regular expression matching correct function names
function-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$
# Regular expression matching correct variable names
variable-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct constant names
const-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
# Regular expression matching correct attribute names
attr-rgx=^_{0,2}[a-z][a-z0-9_]*$
# Regular expression matching correct argument names
argument-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct class attribute names
class-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$
# Regular expression matching correct inline iteration names
inlinevar-rgx=^[a-z][a-z0-9_]*$
# Regular expression matching correct class names
class-rgx=^_?[A-Z][a-zA-Z0-9]*$
# Regular expression matching correct module names
#module-rgx=^(_?[a-z][a-z0-9_]*|__init__)$
# Regular expression matching correct method names
method-rgx=(?x)^(?:(?P<exempt>_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass|(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=10
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
[FORMAT]
# Maximum number of characters on a single line.
#max-line-length=80
max-line-length=100
# TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt
# lines made too long by directives to pytype.
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=(?x)(
^\s*(\#\ )?<?https?://\S+>?$|
^\s*(from\s+\S+\s+)?import\s+.+$)
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=yes
# Maximum number of lines in a module
max-module-lines=99999
# String used as indentation unit. The internal Google style guide mandates 2
# spaces. Google's externaly-published style guide says 4, consistent with
# PEP 8. Here, we use 2 spaces, for conformity with many open-sourced Google
# projects (like TensorFlow).
indent-string=' '
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=TODO
[STRING]
# This flag controls whether inconsistent-quotes generates a warning when the
# character used as a quote delimiter is used inconsistently within a module.
check-quote-consistency=yes
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=^\*{0,2}(_$|unused_|dummy_)
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,_cb
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six,six.moves,past.builtins,future.builtins,functools
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format
logging-modules=logging,absl.logging,tensorflow.io.logging
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
[SPELLING]
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=regsub,
TERMIOS,
Bastion,
rexec,
sets
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant, absl
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
__new__,
setUp
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
_fields,
_replace,
_source,
_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls,
class_
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=builtins.StandardError,
builtins.Exception,
builtins.BaseException
================================================
FILE: .vscode/settings.json
================================================
{
"cSpell.words": [
"SECOPS"
]
}
================================================
FILE: AWS/.gitignore
================================================
.DS_Store
================================================
FILE: AWS/AWS_Access_Key_Rotation.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "8ca4bd16-bef4-4d7c-96eb-59eeb2315864",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Steps Overview",
"orderProperties": [],
"tags": [],
"title": "Steps Overview"
},
"source": [
"<center><img src=\"https://storage.googleapis.com/unskript-website/assets/favicon.png\" alt=\"unSkript.com\" width=\"100\" height=\"100\">\n",
"<h1 id=\"unSkript-Runbooks\">unSkript Runbooks<a class=\"jp-InternalAnchorLink\" href=\"#unSkript-Runbooks\" target=\"_self\">¶</a></h1>\n",
"<div class=\"alert alert-block alert-success\">\n",
"<h3 id=\"Objective\">Objective<a class=\"jp-InternalAnchorLink\" href=\"#Objective\" target=\"_self\">¶</a></h3>\n",
"<br><strong style=\"color: #000000;\"><em>Check and Rotate Expiring Access Keys for all IAM Users </em></strong></div>\n",
"</center><center>\n",
"<h2 id=\"AWS-Access-Key-Rotation\"><u>AWS Access Key Rotation</u><a class=\"jp-InternalAnchorLink\" href=\"#AWS-Access-Key-Rotation\" target=\"_self\">¶</a></h2>\n",
"</center>\n",
"<h1 id=\"Steps-Overview\">Steps Overview<a class=\"jp-InternalAnchorLink\" href=\"#Steps-Overview\" target=\"_self\">¶</a></h1>\n",
"<p>1) <a href=\"#2\" target=\"_self\" rel=\"noopener\">List all Expiring Access Key</a><br>2) <a href=\"#3\" target=\"_self\" rel=\"noopener\">Create AWS Access Key</a><br>3) <a href=\"#4\" target=\"_self\" rel=\"noopener\">Update AWS Access Key</a><br>4) <a href=\"#5\" target=\"_self\" rel=\"noopener\">Delete AWS Access Key</a></p>"
]
},
{
"cell_type": "markdown",
"id": "c1ec70e9-0b9c-4c05-b5e0-5ebfd4263c4f",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 1",
"orderProperties": [],
"tags": [],
"title": "Step 1"
},
"source": [
"<h3 id=\"List-all-Expiring-Access-Keys\"><a id=\"2\" target=\"_self\" rel=\"nofollow\"></a>List all Expiring Access Keys<a class=\"jp-InternalAnchorLink\" href=\"#List-all-Expiring-Access-Keys\" target=\"_self\">¶</a></h3>\n",
"<p>Using unSkript's AWS List Expiring Access Keys action we will list those users whose Access Keys past the given threshold number of days i.e. expiring.</p>\n",
"<blockquote>\n",
"<p>Action takes the following parameters: <code>threshold_days</code></p>\n",
"</blockquote>\n",
"<blockquote>\n",
"<p>Action captures the following output: <code>expiring_users</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dae47429-ca5a-4834-bb46-ac9b2a37527f",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_CLOUDOPS",
"CATEGORY_TYPE_DEVOPS",
"CATEGORY_TYPE_SRE",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_IAM"
],
"actionDescription": "List Expiring IAM User Access Keys",
"actionEntryFunction": "aws_list_expiring_access_keys",
"actionIsCheck": true,
"actionIsRemediation": false,
"actionNeedsCredential": true,
"actionNextHop": [
"924025582b6c1b3ea3c8c834f1ee430a2df8bd42c5119191cb5c5da3121f1d18"
],
"actionNextHopParameterMapping": {},
"actionNouns": [
"expiring",
"access",
"aws"
],
"actionOutputType": "ACTION_OUTPUT_TYPE_LIST",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "AWS List Expiring Access Keys",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": [
"list"
],
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "c3a4e091801f8197429f073a0612e2cc373b6630ce4426d73617b8e101bc5d6a",
"collapsed": true,
"continueOnError": false,
"credentialsJson": {},
"description": "List Expiring IAM User Access Keys",
"id": 1,
"index": 1,
"inputData": [
{
"threshold_days": {
"constant": false,
"value": "int(threshold_days)"
}
}
],
"inputschema": [
{
"properties": {
"threshold_days": {
"default": 90,
"description": "Threshold number(in days) to check for expiry. Eg: 30",
"title": "Threshold Days",
"type": "integer"
}
},
"required": [],
"title": "aws_list_expiring_access_keys",
"type": "object"
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "AWS List Expiring Access Keys",
"orderProperties": [
"threshold_days"
],
"outputParams": {
"output_name": "expiring_users",
"output_name_enabled": true,
"output_runbook_enabled": false,
"output_runbook_name": ""
},
"printOutput": true,
"tags": [
"aws_list_expiring_access_keys"
],
"uuid": "c3a4e091801f8197429f073a0612e2cc373b6630ce4426d73617b8e101bc5d6a",
"version": "1.0.0"
},
"outputs": [],
"source": [
"# Copyright (c) 2021 unSkript, Inc\n",
"# All rights reserved.\n",
"##\n",
"import pprint\n",
"from typing import Tuple\n",
"import datetime\n",
"import dateutil\n",
"from pydantic import BaseModel, Field\n",
"from unskript.legos.aws.aws_list_all_iam_users.aws_list_all_iam_users import aws_list_all_iam_users\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_list_expiring_access_keys_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"@beartype\n",
"def aws_list_expiring_access_keys(handle, threshold_days: int = 90)-> Tuple:\n",
" \"\"\"aws_list_expiring_access_keys returns all the ACM issued certificates which are\n",
" about to expire given a threshold number of days\n",
"\n",
" :type handle: object\n",
" :param handle: Object returned from Task Validate\n",
"\n",
" :type threshold_days: int\n",
" :param threshold_days: Threshold number of days to check for expiry. Eg: 30 -lists\n",
" all access Keys which are expiring within 30 days\n",
"\n",
" :rtype: Status, List of expiring access keys and Error if any\n",
" \"\"\"\n",
" result =[]\n",
" all_users=[]\n",
" try:\n",
" all_users = aws_list_all_iam_users(handle=handle)\n",
" except Exception as error:\n",
" raise error\n",
"\n",
" for each_user in all_users:\n",
" try:\n",
" iamClient = handle.client('iam')\n",
" final_result={}\n",
" response = iamClient.list_access_keys(UserName=each_user)\n",
" for x in response[\"AccessKeyMetadata\"]:\n",
" if len(response[\"AccessKeyMetadata\"])!= 0:\n",
" create_date = x[\"CreateDate\"]\n",
" right_now = datetime.datetime.now(dateutil.tz.tzlocal())\n",
" diff = right_now-create_date\n",
" days_remaining = diff.days\n",
" if days_remaining > threshold_days:\n",
" final_result[\"username\"] = x[\"UserName\"]\n",
" final_result[\"access_key_id\"] = x[\"AccessKeyId\"]\n",
" if len(final_result)!=0:\n",
" result.append(final_result)\n",
" except Exception as e:\n",
" raise e\n",
"\n",
" if len(result) != 0:\n",
" return (False, result)\n",
" return (True, None)\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(inputParamsJson='''{\n",
" \"threshold_days\": \"int(threshold_days)\"\n",
" }''')\n",
"task.configure(outputName=\"expiring_users\")\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_list_expiring_access_keys, lego_printer=aws_list_expiring_access_keys_printer, hdl=hdl, args=args)"
]
},
{
"cell_type": "markdown",
"id": "af12fb80-4786-4dc6-b1b9-c7fdc372563e",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 1A",
"orderProperties": [],
"tags": [],
"title": "Step 1A"
},
"source": [
"<h3 id=\"List-of-Expiring-Users\">List of Expiring Users</h3>\n",
"<p>This action lists the usernames of expiring Access Keys using the output from Step 2.</p>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "3828def9-f4b1-4e75-9f1b-6b70fed35ae8",
"metadata": {
"collapsed": true,
"credentialsJson": {},
"customAction": true,
"execution_data": {
"last_date_success_run_cell": "2023-02-08T10:36:03.614Z"
},
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"name": "Create List of Object of Expiring Users",
"orderProperties": [],
"tags": [],
"title": "Create List of Object of Expiring Users"
},
"outputs": [],
"source": [
"all_expiring_users = []\n",
"if expiring_users[0] == False:\n",
" if len(expiring_users[1])!=0:\n",
" all_expiring_users=expiring_users[1]\n",
"print(all_expiring_users)"
]
},
{
"cell_type": "markdown",
"id": "e1956e5a-c097-4dd7-a0da-ae45fc98c4db",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 1B",
"orderProperties": [],
"tags": [],
"title": "Step 1B"
},
"source": [
"<h3 id=\"List-of-Expiring-Users-and-Access-Keys\"><a id=\"3\" target=\"_self\" rel=\"nofollow\"></a>List of Expiring Users and Access Keys</h3>\n",
"<p>This action simply creates another list containing a dictionary of the user and their old access key. The output from this acion is required for Step 4 and Step 5.</p>"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "a407845b-41f9-4ca5-9387-a2cfb0e6e46f",
"metadata": {
"collapsed": true,
"credentialsJson": {},
"customAction": true,
"execution_data": {
"last_date_success_run_cell": "2023-02-08T10:36:12.088Z"
},
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"name": "Create List of Expiring Users",
"orderProperties": [],
"tags": [],
"title": "Create List of Expiring Users"
},
"outputs": [],
"source": [
"expiring_usernames = []\n",
"for each_user in all_expiring_users:\n",
" for k,v in each_user.items():\n",
" if k=='username':\n",
" expiring_usernames.append(v)\n",
"print(expiring_usernames)\n",
"task.configure(outputName=\"expiring_usernames\")"
]
},
{
"cell_type": "markdown",
"id": "b3a132e5-42c9-46a2-9788-9f8648dc71f6",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 2",
"orderProperties": [],
"tags": [],
"title": "Step 2"
},
"source": [
"<h3 id=\"Create-AWS-Access-Keys\"><a id=\"3\" target=\"_self\" rel=\"nofollow\"></a>Create AWS Access Keys</h3>\n",
"<p>Using unSkript's AWS Create Access Key action we will create a new Access Key for the users from Step 2.</p>\n",
"<blockquote>\n",
"<p>Action takes the following parameters: <code>aws_username</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f75a8726-d158-4afd-a667-0abd6f9717dc",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_SECOPS",
"CATEGORY_TYPE_SRE",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_IAM",
"CATEGORY_TYPE_IAM"
],
"actionDescription": "Create a new Access Key for the User",
"actionEntryFunction": "aws_create_access_key",
"actionIsCheck": false,
"actionIsRemediation": true,
"actionNeedsCredential": true,
"actionNextHop": null,
"actionNextHopParameterMapping": null,
"actionNouns": null,
"actionOutputType": "ACTION_OUTPUT_TYPE_DICT",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "AWS Create Access Key",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": null,
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "492b9b6807e5254512715555e3ec52a97e006c04a28511710e5bc1b0c45ffdd7",
"collapsed": true,
"condition_enabled": true,
"continueOnError": true,
"credentialsJson": {},
"description": "Create a new Access Key for the User",
"id": 1,
"index": 1,
"inputData": [
{
"aws_username": {
"constant": false,
"value": "iter_item"
}
}
],
"inputschema": [
{
"properties": {
"aws_username": {
"description": "Username of the IAM User",
"title": "Username",
"type": "string"
}
},
"required": [
"aws_username"
],
"title": "aws_create_access_key",
"type": "object"
}
],
"iterData": [
{
"iter_enabled": true,
"iter_item": "aws_username",
"iter_list": {
"constant": false,
"objectItems": false,
"value": "expiring_usernames"
}
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Create Access Key",
"orderProperties": [
"aws_username"
],
"outputParams": {
"output_name": "new_access_keys",
"output_name_enabled": true,
"output_runbook_enabled": false,
"output_runbook_name": ""
},
"printOutput": true,
"startcondition": "len(expiring_usernames)!=0",
"tags": [
"aws_create_access_key"
],
"uuid": "492b9b6807e5254512715555e3ec52a97e006c04a28511710e5bc1b0c45ffdd7",
"version": "1.0.0"
},
"outputs": [],
"source": [
"##\n",
"# Copyright (c) 2021 unSkript, Inc\n",
"# All rights reserved.\n",
"##\n",
"import pprint\n",
"from typing import Dict\n",
"from pydantic import BaseModel, Field\n",
"\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_create_access_key_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_create_access_key(\n",
" handle,\n",
" aws_username: str\n",
") -> Dict:\n",
" \"\"\"aws_create_access_key creates a new access key for the given user.\n",
" :type handle: object\n",
" :param handle: Object returned from Task Validate\n",
"\n",
" :type aws_username: str\n",
" :param aws_username: Username of the IAM user to be looked up\n",
"\n",
" :rtype: Result Dictionary of result\n",
" \"\"\"\n",
" iamClient = handle.client('iam')\n",
" result = iamClient.create_access_key(UserName=aws_username)\n",
" retVal = {}\n",
" temp_list = []\n",
" for key, value in result.items():\n",
" if key not in temp_list:\n",
" temp_list.append(key)\n",
" retVal[key] = value\n",
" return retVal\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(continueOnError=True)\n",
"task.configure(inputParamsJson='''{\n",
" \"aws_username\": \"iter_item\"\n",
" }''')\n",
"task.configure(iterJson='''{\n",
" \"iter_enabled\": true,\n",
" \"iter_list_is_const\": false,\n",
" \"iter_list\": \"expiring_usernames\",\n",
" \"iter_parameter\": \"aws_username\"\n",
" }''')\n",
"task.configure(conditionsJson='''{\n",
" \"condition_enabled\": true,\n",
" \"condition_cfg\": \"len(expiring_usernames)!=0\",\n",
" \"condition_result\": true\n",
" }''')\n",
"\n",
"task.configure(outputName=\"new_access_keys\")\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_create_access_key, lego_printer=aws_create_access_key_printer, hdl=hdl, args=args)"
]
},
{
"cell_type": "markdown",
"id": "e6797aa7-a0c2-4842-8482-da22a5363fe8",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 3",
"orderProperties": [],
"tags": [],
"title": "Step 3"
},
"source": [
"<h3 id=\"Update-AWS-Access-Key\"><a id=\"4\" target=\"_self\" rel=\"nofollow\"></a>Update AWS Access Key</h3>\n",
"<p>Using the AWS Update Access Key action we will update the status of the old Access Key to <strong>\"Inactive\"</strong>. This step is required to delete the old access key as one user cannot have two Access Keys.</p>\n",
"<blockquote>\n",
"<p>This action takes the following parameters: <code>aws_username</code>, <code>aws_access_key_id</code> and <code>status</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "aef7b261-1f5a-4402-ae02-22841fc4569b",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_DEVOPS",
"CATEGORY_TYPE_SRE",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_IAM"
],
"actionDescription": "Update status of the Access Key",
"actionEntryFunction": "aws_update_access_key",
"actionIsCheck": false,
"actionIsRemediation": true,
"actionNeedsCredential": true,
"actionNextHop": null,
"actionNextHopParameterMapping": null,
"actionNouns": null,
"actionOutputType": "ACTION_OUTPUT_TYPE_DICT",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "AWS Update Access Key",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": null,
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "0297f6c80f0416d10484fa2593510515eef2900add97924e3e73beaab5fea819",
"collapsed": true,
"condition_enabled": true,
"continueOnError": false,
"credentialsJson": {},
"description": "Update status of the Access Key",
"id": 1,
"index": 1,
"inputData": [
{
"aws_access_key_id": {
"constant": false,
"value": "\"iter.get(\\\\\"access_key_id\\\\\")\""
},
"aws_username": {
"constant": false,
"value": "\"iter.get(\\\\\"username\\\\\")\""
},
"status": {
"constant": true,
"value": "Inactive"
}
}
],
"inputschema": [
{
"definitions": {
"AccessKeyStatus": {
"description": "An enumeration.",
"enum": [
"Active",
"Inactive"
],
"title": "AccessKeyStatus",
"type": "string"
}
},
"properties": {
"aws_access_key_id": {
"description": "Old Access Key ID of the User",
"title": "Access Key ID",
"type": "string"
},
"aws_username": {
"description": "Username of the IAM User",
"title": "Username",
"type": "string"
},
"status": {
"allOf": [
{
"$ref": "#/definitions/AccessKeyStatus"
}
],
"description": "Status to set for the Access Key",
"title": "Status",
"type": "enum"
}
},
"required": [
"aws_username",
"aws_access_key_id",
"status"
],
"title": "aws_update_access_key",
"type": "object"
}
],
"iterData": [
{
"iter_enabled": true,
"iter_item": {
"aws_access_key_id": "access_key_id",
"aws_username": "username"
},
"iter_list": {
"constant": false,
"objectItems": true,
"value": "all_expiring_users"
}
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Update Access Key",
"orderProperties": [
"aws_username",
"aws_access_key_id",
"status"
],
"printOutput": true,
"startcondition": "len(all_expiring_users)!=0",
"tags": [
"aws_update_access_key"
],
"uuid": "0297f6c80f0416d10484fa2593510515eef2900add97924e3e73beaab5fea819",
"version": "1.0.0"
},
"outputs": [],
"source": [
"##\n",
"# Copyright (c) 2021 unSkript, Inc\n",
"# All rights reserved.\n",
"##\n",
"import pprint\n",
"from typing import Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.enums.aws_access_key_enums import AccessKeyStatus\n",
"\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_update_access_key_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(\"Access Key status successfully changed\")\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_update_access_key(\n",
" handle,\n",
" aws_username: str,\n",
" aws_access_key_id: str,\n",
" status: AccessKeyStatus\n",
") -> Dict:\n",
" \"\"\"aws_update_access_key updates the status of an access key to Inactive/Active\n",
" :type handle: object\n",
" :param handle: Object returned from Task Validate\n",
"\n",
" :type aws_username: str\n",
" :param aws_username: Username of the IAM user to be looked up\n",
"\n",
" :type aws_access_key_id: str\n",
" :param aws_access_key_id: Old Access Key ID of the user of which the status\n",
" needs to be updated\n",
"\n",
" :type status: AccessKeyStatus\n",
" :param status: Status to set for the Access Key\n",
"\n",
" :rtype: Result Dictionary of result\n",
" \"\"\"\n",
" iamClient = handle.client('iam')\n",
" result = iamClient.update_access_key(\n",
" UserName=aws_username,\n",
" AccessKeyId=aws_access_key_id,\n",
" Status=status\n",
" )\n",
" retVal = {}\n",
" temp_list = []\n",
" for key, value in result.items():\n",
" if key not in temp_list:\n",
" temp_list.append(key)\n",
" retVal[key] = value\n",
" return retVal\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(continueOnError=False)\n",
"task.configure(inputParamsJson='''{\n",
" \"aws_username\": \"\\\\\"iter.get(\\\\\\\\\\\\\"username\\\\\\\\\\\\\")\\\\\"\",\n",
" \"aws_access_key_id\": \"\\\\\"iter.get(\\\\\\\\\\\\\"access_key_id\\\\\\\\\\\\\")\\\\\"\",\n",
" \"status\": \"AccessKeyStatus.Inactive\"\n",
" }''')\n",
"task.configure(iterJson='''{\n",
" \"iter_enabled\": true,\n",
" \"iter_list_is_const\": false,\n",
" \"iter_list\": \"all_expiring_users\",\n",
" \"iter_parameter\": [\"aws_access_key_id\",\"aws_username\"]\n",
" }''')\n",
"task.configure(conditionsJson='''{\n",
" \"condition_enabled\": true,\n",
" \"condition_cfg\": \"len(all_expiring_users)!=0\",\n",
" \"condition_result\": true\n",
" }''')\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_update_access_key, lego_printer=aws_update_access_key_printer, hdl=hdl, args=args)"
]
},
{
"cell_type": "markdown",
"id": "aa81394c-749e-4b32-bf6c-a866369f2cf5",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 4",
"orderProperties": [],
"tags": [],
"title": "Step 4"
},
"source": [
"<h3 id=\"Delete-AWS-Access-Key\"><a id=\"5\" target=\"_self\" rel=\"nofollow\"></a>Delete AWS Access Key</h3>\n",
"<p>Finally, we will delete the the old (Inactive) Access Key for the IAM Users</p>\n",
"<blockquote>\n",
"<p>This action takes the following parameters: <code>aws_username</code> and <code>aws_access_key_id</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e12a42d2-1eb8-4737-b0d7-4dd80c688fca",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_SECOPS",
"CATEGORY_TYPE_SRE",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_IAM",
"CATEGORY_TYPE_IAM"
],
"actionDescription": "Delete an Access Key for a User",
"actionEntryFunction": "aws_delete_access_key",
"actionIsCheck": false,
"actionIsRemediation": true,
"actionNeedsCredential": true,
"actionNextHop": null,
"actionNextHopParameterMapping": null,
"actionNouns": null,
"actionOutputType": "ACTION_OUTPUT_TYPE_DICT",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "AWS Delete Access Key",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": null,
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "4ce21d2ac0824cafdddbb4245ffcb1d4c34786ed68c075fb1041eb8c7e22f01d",
"collapsed": true,
"condition_enabled": true,
"continueOnError": true,
"credentialsJson": {},
"description": "Delete an Access Key for a User",
"id": 1,
"index": 1,
"inputData": [
{
"aws_access_key_id": {
"constant": false,
"value": "\"iter.get(\\\\\"access_key_id\\\\\")\""
},
"aws_username": {
"constant": false,
"value": "\"iter.get(\\\\\"username\\\\\")\""
}
}
],
"inputschema": [
{
"properties": {
"aws_access_key_id": {
"description": "Old Access Key ID of the User",
"title": "Access Key ID",
"type": "string"
},
"aws_username": {
"description": "Username of the IAM User",
"title": "Username",
"type": "string"
}
},
"required": [
"aws_username",
"aws_access_key_id"
],
"title": "aws_delete_access_key",
"type": "object"
}
],
"iterData": [
{
"iter_enabled": true,
"iter_item": {
"aws_access_key_id": "access_key_id",
"aws_username": "username"
},
"iter_list": {
"constant": false,
"objectItems": true,
"value": "all_expiring_users"
}
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Delete Access Key",
"orderProperties": [
"aws_username",
"aws_access_key_id"
],
"printOutput": true,
"startcondition": "len(all_expiring_users)!=0",
"tags": [
"aws_delete_access_key"
],
"uuid": "4ce21d2ac0824cafdddbb4245ffcb1d4c34786ed68c075fb1041eb8c7e22f01d",
"version": "1.0.0"
},
"outputs": [],
"source": [
"##\n",
"# Copyright (c) 2021 unSkript, Inc\n",
"# All rights reserved.\n",
"##\n",
"import pprint\n",
"from typing import Dict\n",
"from pydantic import BaseModel, Field\n",
"\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_delete_access_key_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(\"Access Key successfully deleted\")\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_delete_access_key(\n",
" handle,\n",
" aws_username: str,\n",
" aws_access_key_id: str,\n",
") -> Dict:\n",
" \"\"\"aws_delete_access_key deleted the given access key.\n",
" :type handle: object\n",
" :param handle: Object returned from Task Validate\n",
"\n",
" :type aws_username: str\n",
" :param aws_username: Username of the IAM user to be looked up\n",
"\n",
" :type aws_access_key_id: str\n",
" :param aws_access_key_id: Old Access Key ID of the user which needs to be deleted\n",
"\n",
" :rtype: Result Status Dictionary of result\n",
" \"\"\"\n",
" iamClient = handle.client('iam')\n",
" result = iamClient.delete_access_key(UserName=aws_username, AccessKeyId=aws_access_key_id)\n",
" retVal = {}\n",
" temp_list = []\n",
" for key, value in result.items():\n",
" if key not in temp_list:\n",
" temp_list.append(key)\n",
" retVal[key] = value\n",
" return retVal\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(continueOnError=True)\n",
"task.configure(inputParamsJson='''{\n",
" \"aws_username\": \"iter.get(\\\\\"username\\\\\")\",\n",
" \"aws_access_key_id\": \"iter.get(\\\\\"access_key_id\\\\\")\"\n",
" }''')\n",
"task.configure(iterJson='''{\n",
" \"iter_enabled\": true,\n",
" \"iter_list_is_const\": false,\n",
" \"iter_list\": \"all_expiring_users\",\n",
" \"iter_parameter\": [\"aws_username\",\"aws_access_key_id\"]\n",
" }''')\n",
"task.configure(conditionsJson='''{\n",
" \"condition_enabled\": true,\n",
" \"condition_cfg\": \"len(all_expiring_users)!=0\",\n",
" \"condition_result\": true\n",
" }''')\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_delete_access_key, lego_printer=aws_delete_access_key_printer, hdl=hdl, args=args)"
]
},
{
"cell_type": "markdown",
"id": "d87557cc-2feb-47ce-89f2-5ee1d7375c88",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Conclusion",
"orderProperties": [],
"tags": [],
"title": "Conclusion"
},
"source": [
"<h3 id=\"Conclusion\">Conclusion<a class=\"jp-InternalAnchorLink\" href=\"#Conclusion\" target=\"_self\">¶</a></h3>\n",
"<p>In this Runbook, we were able to perform AWS Access Key rotation for IAM users whose Access Keys were expiring by using unSkript's AWS actions. To view the full platform capabilities of unSkript please visit <a href=\"https://us.app.unskript.io\" target=\"_blank\" rel=\"noopener\">us.app.unskript.io</a></p>"
]
}
],
"metadata": {
"execution_data": {
"runbook_name": "AWS Access Key Rotation for IAM users",
"parameters": [
"threshold_days"
]
},
"kernelspec": {
"display_name": "unSkript (Build: 1169)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
},
"parameterSchema": {
"properties": {
"threshold_days": {
"description": "Threshold number of days to check if an access key has expired. Eg: 45",
"title": "threshold_days",
"type": "number"
}
},
"required": [],
"title": "Schema",
"type": "object"
},
"vscode": {
"interpreter": {
"hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: AWS/AWS_Access_Key_Rotation.json
================================================
{
"name": "AWS Access Key Rotation for IAM users",
"description": "This runbook can be used to configure AWS Access Key rotation. Changing access keys (which consist of an access key ID and a secret access key) on a regular schedule is a well-known security best practice because it shortens the period an access key is active and therefore reduces the business impact if they are compromised. Having an established process that is run regularly also ensures the operational steps around key rotation are verified, so changing a key is never a scary step.",
"uuid": "a79201f821993867e23dd9603ed7ef5123325353d717c566f902f7ca6e471f5c",
"icon": "CONNECTOR_TYPE_AWS",
"categories": [ "CATEGORY_TYPE_IAM", "CATEGORY_TYPE_SECOPS" ],
"connector_types": [ "CONNECTOR_TYPE_AWS" ],
"version": "1.0.0"
}
================================================
FILE: AWS/AWS_Add_Lifecycle_Policy_To_S3_Buckets.ipynb
================================================
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"id": "5424264e-6195-4cf9-906b-24b02d5a83f3",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Steps Overview",
"orderProperties": [],
"tags": [],
"title": "Steps Overview"
},
"source": [
"<center><img src=\"https://storage.googleapis.com/unskript-website/assets/favicon.png\" alt=\"unSkript.com\" width=\"100\" height=\"100\">\n",
"<h1 id=\"unSkript-Runbooks\">unSkript Runbooks</h1>\n",
"<div class=\"alert alert-block alert-success\">\n",
"<h3 id=\"Objective\">Objective</h3>\n",
"<br><strong style=\"color: #000000;\"><em>Find S3 buckets without any lifecycle policies and attach one to them</em></strong></div>\n",
"</center>\n",
"<p> </p>\n",
"<center>\n",
"<h2 id=\"Delete-RDS-Instances-with-Low-CPU-Utilization\"><u>Add Lifecycle Policy To AWS S3 Buckets</u></h2>\n",
"</center>\n",
"<h1 id=\"Steps-Overview\">Steps Overview</h1>\n",
"<p>1)<a href=\"#1\" target=\"_self\" rel=\"noopener\"> Find S3 Buckets without Lifecycle Policies</a><br>2)<a href=\"#2\" target=\"_self\" rel=\"noopener\"> Attach Lifecycle Policy</a></p>"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "e1f146c9-5180-4459-9c82-cf0e1da02785",
"metadata": {
"credentialsJson": {},
"customAction": true,
"execution_data": {
"last_date_success_run_cell": "2023-05-16T08:46:04.477Z"
},
"jupyter": {
"source_hidden": true
},
"name": "Input verification",
"orderProperties": [],
"tags": [],
"title": "Input verification"
},
"outputs": [],
"source": [
"if region == None:\n",
" region = ''\n",
"if bucket_names and not region:\n",
" raise SystemExit(\"Provide a region for the S3 Bucket names!\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "908f4dcb-8483-44fc-8f81-ce2502e03093",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 1",
"orderProperties": [],
"tags": [],
"title": "Step 1"
},
"source": [
"<h3 id=\"Find-RDS-Instances-with-Low-CPU-Utilization\"><a id=\"1\" target=\"_self\" rel=\"nofollow\"></a>Find S3 Buckets without Lifecycle Policies</h3>\n",
"<p>Using Find AWS S3 buckets without lifecycle policieswe can identify buckets that do not have any configured lifecycle rules for managing object lifecycle. By examining the presence or absence of lifecycle policies, you can gain insights into the data management practices of your S3 buckets. This information can be valuable for optimizing storage costs and ensuring efficient data lifecycle management.</p>\n",
"<blockquote>\n",
"<p>This action takes the following parameters: <code>region</code></p>\n",
"</blockquote>\n",
"<blockquote>\n",
"<p>This action captures the following output: <code>buckets_without_policy</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "cc2e3052-9a34-4e09-ab57-c868197a5f62",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_CLOUDOPS",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_S3"
],
"actionDescription": "S3 lifecycle policies enable you to automatically transition objects to different storage classes or delete them when they are no longer needed. This action finds all S3 buckets without lifecycle policies. ",
"actionEntryFunction": "aws_find_s3_buckets_without_lifecycle_policies",
"actionIsCheck": true,
"actionIsRemediation": false,
"actionNeedsCredential": true,
"actionNextHop": [],
"actionNextHopParameterMapping": {},
"actionNouns": null,
"actionOutputType": "ACTION_OUTPUT_TYPE_LIST",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "AWS Find S3 Buckets without Lifecycle Policies",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": null,
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "01cb410b7247b1803c9d41cfd23853bf405b7a603ef52a9d535ed675ed961909",
"collapsed": true,
"condition_enabled": true,
"continueOnError": false,
"credentialsJson": {},
"description": "S3 lifecycle policies enable you to automatically transition objects to different storage classes or delete them when they are no longer needed. This action finds all S3 buckets without lifecycle policies. ",
"execution_data": {
"last_date_success_run_cell": "2023-05-16T08:46:51.456Z"
},
"id": 4,
"index": 4,
"inputData": [
{
"region": {
"constant": false,
"value": "region"
}
}
],
"inputschema": [
{
"properties": {
"region": {
"default": "",
"description": "AWS Region of S3 buckets.",
"title": "Region",
"type": "string"
}
},
"required": [],
"title": "aws_find_s3_buckets_without_lifecycle_policies",
"type": "object"
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Find S3 Buckets without Lifecycle Policies",
"orderProperties": [
"region"
],
"outputParams": {
"output_name": "buckets_without_policy",
"output_name_enabled": true,
"output_runbook_enabled": false,
"output_runbook_name": ""
},
"printOutput": true,
"startcondition": "not bucket_names",
"tags": [
"aws_find_s3_buckets_without_lifecycle_policies"
],
"title": "AWS Find S3 Buckets without Lifecycle Policies",
"uuid": "01cb410b7247b1803c9d41cfd23853bf405b7a603ef52a9d535ed675ed961909",
"version": "1.0.0"
},
"outputs": [],
"source": [
"##\n",
"## Copyright (c) 2023 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from pydantic import BaseModel, Field\n",
"from unskript.legos.aws.aws_list_all_regions.aws_list_all_regions import aws_list_all_regions\n",
"from unskript.legos.aws.aws_get_s3_buckets.aws_get_s3_buckets import aws_get_s3_buckets\n",
"from typing import List, Optional, Tuple\n",
"import pprint\n",
"\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_find_s3_buckets_without_lifecycle_policies_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_find_s3_buckets_without_lifecycle_policies(handle, region: str=\"\") -> Tuple:\n",
" \"\"\"aws_find_s3_buckets_without_lifecycle_policies List all the S3 buckets without lifecycle policies\n",
"\n",
" :type handle: object\n",
" :param handle: Object returned from task.validate(...).\n",
"\n",
" :type region: string\n",
" :param region: AWS Region of the bucket\n",
"\n",
" :rtype: Status, List of all the S3 buckets without lifecycle policies with regions\n",
" \"\"\"\n",
" result = []\n",
" all_regions = [region]\n",
" if not region:\n",
" all_regions = aws_list_all_regions(handle)\n",
" for reg in all_regions:\n",
" try:\n",
" s3Session = handle.resource(\"s3\", region_name=reg)\n",
" response = aws_get_s3_buckets(handle, region=reg)\n",
" for bucket in response:\n",
" bucket_region = s3Session.meta.client.get_bucket_location(Bucket=bucket)['LocationConstraint']\n",
" if bucket_region == None:\n",
" bucket_region = 'us-east-1'\n",
" if bucket_region != reg:\n",
" continue\n",
" bucket_lifecycle_configuration = s3Session.BucketLifecycleConfiguration(bucket)\n",
" try:\n",
" if bucket_lifecycle_configuration.rules:\n",
" continue\n",
" except Exception:\n",
" bucket_details = {}\n",
" bucket_details[\"bucket_name\"] = bucket\n",
" bucket_details[\"region\"] = reg\n",
" result.append(bucket_details)\n",
" except Exception:\n",
" pass\n",
" if len(result) != 0:\n",
" return (False, result)\n",
" else:\n",
" return (True, None)\n",
"\n",
"\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"region\"\n",
" }''')\n",
"task.configure(conditionsJson='''{\n",
" \"condition_enabled\": true,\n",
" \"condition_cfg\": \"not bucket_names\",\n",
" \"condition_result\": true\n",
" }''')\n",
"task.configure(outputName=\"buckets_without_policy\")\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_find_s3_buckets_without_lifecycle_policies, lego_printer=aws_find_s3_buckets_without_lifecycle_policies_printer, hdl=hdl, args=args)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "199591ef-cb3a-49b7-b515-3c6998050320",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 2A",
"orderProperties": [],
"tags": [],
"title": "Step 2A"
},
"source": [
"<h3 id=\"Create-List-of-Low-CPU-Utilization-RDS-Instances\">Create List of Buckets with No Lifecycle Policy</h3>\n",
"<p>This action gets the list of S3 buckets from the tuple output in Step 1.</p>\n",
"<blockquote>\n",
"<p>This action takes the following parameters: <code>None</code></p>\n",
"</blockquote>\n",
"<blockquote>\n",
"<p>This action captures the following output: <code>all_buckets_without_policy</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "6a10e980-9f17-4436-9166-90ea130aa316",
"metadata": {
"collapsed": true,
"credentialsJson": {},
"customAction": true,
"execution_data": {
"last_date_success_run_cell": "2023-05-16T08:46:53.557Z"
},
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"name": "Create List of Buckets with No Lifecycle Policy",
"orderProperties": [],
"tags": [],
"title": "Create List of Buckets with No Lifecycle Policy"
},
"outputs": [],
"source": [
"all_buckets_without_policy = []\n",
"try:\n",
" for res in buckets_without_policy:\n",
" if type(res)==bool:\n",
" if res == False:\n",
" continue\n",
" elif type(res)==list:\n",
" if len(res)!=0:\n",
" all_buckets_without_policy=res\n",
"except Exception:\n",
" for buck in bucket_names:\n",
" data_dict = {}\n",
" data_dict[\"region\"] = region\n",
" data_dict[\"bucket_name\"] = buck\n",
" all_buckets_without_policy.append(data_dict)\n",
"print(all_buckets_without_policy)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "978d3b61-2fd9-461d-89bd-534d2dcf3b63",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Step 2",
"orderProperties": [],
"tags": [],
"title": "Step 2"
},
"source": [
"<h3 id=\"Delete-RDS-Instance\"><a id=\"2\" target=\"_self\" rel=\"nofollow\"></a>Attach Lifecycle Policy</h3>\n",
"<p>This action attached a new lifecycle policy to the S3 buckets found in Step 1. From the listed input parameters, <code>expiration_days and nonconcurrent_days</code> have a default value of 30 days.</p>\n",
"<blockquote>\n",
"<p>This action takes the following parameters: <code>bucket_name, region, expiration_days, prefix, nonconcurrent_days</code></p>\n",
"</blockquote>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "8fcae72a-d600-4a8a-b103-6fa0afade0f9",
"metadata": {
"actionBashCommand": false,
"actionCategories": [
"CATEGORY_TYPE_CLOUDOPS",
"CATEGORY_TYPE_AWS",
"CATEGORY_TYPE_AWS_S3"
],
"actionDescription": "Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.",
"actionEntryFunction": "aws_add_lifecycle_configuration_to_s3_bucket",
"actionIsCheck": false,
"actionIsRemediation": false,
"actionNeedsCredential": true,
"actionNextHop": null,
"actionNextHopParameterMapping": null,
"actionNouns": null,
"actionOutputType": "ACTION_OUTPUT_TYPE_DICT",
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"actionTitle": "Add Lifecycle Configuration to AWS S3 Bucket",
"actionType": "LEGO_TYPE_AWS",
"actionVerbs": null,
"actionVersion": "1.0.0",
"action_modified": false,
"action_uuid": "a55496e5f6dcbcdaeb22e734eea5363d34e60fa5c580b252ca16b022c0dbaf8f",
"collapsed": true,
"condition_enabled": true,
"continueOnError": true,
"credentialsJson": {},
"description": "Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle configuration.",
"execution_data": {
"last_date_success_run_cell": "2023-05-16T08:47:36.364Z"
},
"id": 1,
"index": 1,
"inputData": [
{
"bucket_name": {
"constant": false,
"value": "\"iter.get(\\\\\"bucket_name\\\\\")\""
},
"expiration_days": {
"constant": false,
"value": "expiration_days"
},
"noncurrent_days": {
"constant": false,
"value": "noncurrent_days"
},
"prefix": {
"constant": false,
"value": "prefix"
},
"region": {
"constant": false,
"value": "\"iter.get(\\\\\"region\\\\\")\""
}
}
],
"inputschema": [
{
"properties": {
"bucket_name": {
"description": "The name of the bucket for which to set the configuration.",
"title": "Bucket Name",
"type": "string"
},
"expiration_days": {
"default": 30,
"description": "Specifies the expiration for the lifecycle of the object in the form of days. Eg: 30 (days)",
"title": "Expiration Days",
"type": "number"
},
"noncurrent_days": {
"default": 30,
"description": "Specifies the number of days an object is noncurrent before Amazon S3 permanently deletes the noncurrent object versions",
"title": "Noncurrent Days",
"type": "number"
},
"prefix": {
"default": "",
"description": "Prefix identifying one or more objects to which the rule applies.",
"title": "Prefix",
"type": "string"
},
"region": {
"description": "AWS Region.",
"title": "Region",
"type": "string"
}
},
"required": [
"region",
"bucket_name"
],
"title": "aws_add_lifecycle_configuration_to_s3_bucket",
"type": "object"
}
],
"iterData": [
{
"iter_enabled": true,
"iter_item": {
"bucket_name": "bucket_name",
"region": "region"
},
"iter_list": {
"constant": false,
"objectItems": true,
"value": "all_buckets_without_policy"
}
}
],
"jupyter": {
"outputs_hidden": true,
"source_hidden": true
},
"language": "python",
"legotype": "LEGO_TYPE_AWS",
"name": "Add Lifecycle Configuration to AWS S3 Bucket",
"orderProperties": [
"region",
"bucket_name",
"expiration_days",
"prefix",
"noncurrent_days"
],
"printOutput": true,
"startcondition": "len(all_buckets_without_policy)!=0",
"tags": [
"aws_add_lifecycle_configuration_to_s3_bucket"
],
"uuid": "a55496e5f6dcbcdaeb22e734eea5363d34e60fa5c580b252ca16b022c0dbaf8f",
"version": "1.0.0"
},
"outputs": [],
"source": [
"##\n",
"## Copyright (c) 2023 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from pydantic import BaseModel, Field\n",
"from typing import Dict, Optional\n",
"import pprint\n",
"\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_add_lifecycle_configuration_to_s3_bucket_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"\n",
"@beartype\n",
"def aws_add_lifecycle_configuration_to_s3_bucket(handle, region: str, bucket_name:str, expiration_days:int=30, prefix:str='', noncurrent_days:int=30) -> Dict:\n",
" \"\"\"aws_add_lifecycle_configuration_to_s3_bucket returns response of adding lifecycle configuration\n",
"\n",
" :type handle: object\n",
" :param handle: Object returned from task.validate(...).\n",
"\n",
" :type region: string\n",
" :param region: location of the bucket\n",
"\n",
" :type bucket_name: string\n",
" :param bucket_name: The name of the bucket for which to set the configuration.\n",
"\n",
" :type expiration_days: int\n",
" :param expiration_days: Specifies the expiration for the lifecycle of the object in the form of days. Eg: 30 (days)\n",
"\n",
" :type prefix: string\n",
" :param prefix: location of the bucket\n",
"\n",
" :type noncurrent_days: int\n",
" :param noncurrent_days: Specifies the number of days an object is noncurrent before Amazon S3 permanently deletes the noncurrent object versions.\n",
"\n",
" :rtype: Dict of the response of adding lifecycle configuration\n",
" \"\"\"\n",
" s3Client = handle.client(\"s3\", region_name=region)\n",
" try:\n",
" lifecycle_config = {\n",
" 'Rules': [\n",
" {\n",
" 'Expiration': {\n",
" 'Days': expiration_days,\n",
" },\n",
" 'Filter': {\n",
" 'Prefix': ''\n",
" },\n",
" 'Status': 'Enabled',\n",
" 'NoncurrentVersionExpiration': {\n",
" 'NoncurrentDays': noncurrent_days\n",
" }\n",
" }\n",
" ]\n",
" }\n",
" bucket_name = 'testrunbook'\n",
" response = s3Client.put_bucket_lifecycle_configuration(\n",
" Bucket=bucket_name,\n",
" LifecycleConfiguration=lifecycle_config\n",
" )\n",
" except Exception as e:\n",
" raise e\n",
" return response\n",
"\n",
"\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(continueOnError=True)\n",
"task.configure(inputParamsJson='''{\n",
" \"expiration_days\": \"int(expiration_days)\",\n",
" \"prefix\": \"prefix\",\n",
" \"noncurrent_days\": \"int(noncurrent_days)\",\n",
" \"bucket_name\": \"iter.get(\\\\\"bucket_name\\\\\")\",\n",
" \"region\": \"iter.get(\\\\\"region\\\\\")\"\n",
" }''')\n",
"task.configure(iterJson='''{\n",
" \"iter_enabled\": true,\n",
" \"iter_list_is_const\": false,\n",
" \"iter_list\": \"all_buckets_without_policy\",\n",
" \"iter_parameter\": [\"bucket_name\",\"region\"]\n",
" }''')\n",
"task.configure(conditionsJson='''{\n",
" \"condition_enabled\": true,\n",
" \"condition_cfg\": \"len(all_buckets_without_policy)!=0\",\n",
" \"condition_result\": true\n",
" }''')\n",
"\n",
"task.configure(printOutput=True)\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_add_lifecycle_configuration_to_s3_bucket, lego_printer=aws_add_lifecycle_configuration_to_s3_bucket_printer, hdl=hdl, args=args)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "44a6cf05-385b-445d-a503-ad4aa607a568",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Conclusion",
"orderProperties": [],
"tags": [],
"title": "Conclusion"
},
"source": [
"<h3 id=\"Conclusion¶\">Conclusion</h3>\n",
"<p>In this Runbook, we were able to find AWS S3 buckets without lifecycle policies and attach one to them. To view the full platform capabilities of unSkript please visit <a href=\"https://us.app.unskript.io\" target=\"_blank\" rel=\"noopener\">us.app.unskript.io</a></p>"
]
}
],
"metadata": {
"execution_data": {
"runbook_name": "Add Lifecycle Policy to S3 Buckets",
"parameters": [
"region",
"threshold_days"
]
},
"kernelspec": {
"display_name": "unSkript (Build: 1166)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
},
"outputParameterSchema": {
"properties": {},
"required": [],
"title": "Schema",
"type": "object"
},
"parameterSchema": {
"properties": {
"bucket_names": {
"description": "List of S3 buckets to attach the lifecycle policy to.",
"title": "bucket_names",
"type": "array"
},
"expiration_days": {
"default": 30,
"description": "Specifies the expiration of the lifecycle of the S3 bucker. By default it is considered to be 30 days. ",
"title": "expiration_days",
"type": "number"
},
"noncurrent_days": {
"default": 30,
"description": "Specifies the transition rule for the lifecycle rule that describes when noncurrent objects transition to a specific storage class.",
"title": "noncurrent_days",
"type": "number"
},
"prefix": {
"default": " ",
"description": "Prefix identifying one or more of the rules that applies to the object",
"title": "prefix",
"type": "string"
},
"region": {
"description": "AWS region to find the S3 buckets",
"title": "region",
"type": "string"
}
},
"required": [
"region"
],
"title": "Schema",
"type": "object"
},
"parameterValues": {},
"vscode": {
"interpreter": {
"hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: AWS/AWS_Add_Lifecycle_Policy_To_S3_Buckets.json
================================================
{
"name": "Add Lifecycle Policy to S3 Buckets",
"description": "Attaching lifecycle policies to AWS S3 buckets enables us to automate the management of object lifecycle in your storage buckets. By configuring lifecycle policies, you can define rules that determine the actions to be taken on objects based on their age or other criteria. This includes transitioning objects to different storage classes, such as moving infrequently accessed data to lower-cost storage tiers or archiving them to Glacier, as well as setting expiration dates for objects. By attaching lifecycle policies to your S3 buckets, you can optimize storage costs by automatically moving data to the most cost-effective storage tier based on its lifecycle. Additionally, it allows you to efficiently manage data retention and comply with regulatory requirements or business policies regarding data expiration. This runbook helps us find all the buckets without any lifecycle policy and attach one to them.",
"uuid": "3d74913836e037a001f718b48f1e19010394b90afc2422d0572ab5c515521075",
"icon": "CONNECTOR_TYPE_AWS",
"categories": [ "CATEGORY_TYPE_COST_OPT", "CATEGORY_TYPE_DEVOPS", "CATEGORY_TYPE_SRE" ],
"connector_types": [ "CONNECTOR_TYPE_AWS" ],
"version": "1.0.0"
}
================================================
FILE: AWS/AWS_Add_Mandatory_tags_to_EC2.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "79251bc7-c6cd-4344-a8d5-754bf62eb17e",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Enforce Mandatory Tags Across All AWS Resources",
"orderProperties": [],
"tags": [],
"title": "Enforce Mandatory Tags Across All AWS Resources"
},
"source": [
"<img src=\"https://storage.googleapis.com/unskript-website/assets/favicon.png\" alt=\"unSkript.com\" width=\"100\" height=\"100\"/> \n",
"<h1> unSkript Runbooks </h1>\n",
"<div class=\"alert alert-block alert-success\">\n",
" <b> This runbook demonstrates How to build a process around Mandatory Tags Across All AWS Resources using unSkript legos.</b>\n",
"</div>\n",
"\n",
"<br>\n",
"\n",
"<center><h2>Enforce Mandatory Tags Across All AWS Resources</h2></center>\n",
"\n",
"# Steps Overview\n",
" 1. **AWS Get Untagged Resources**: List all the Untagged Resources instanceIDs in the given region. This will also return data about the instances to help identify who the owners are.\n",
" 2. **Get tag keys of all Resources** This is a similar list to #1, but includes all instances, and all of the tages for each instance.\n",
" 3. AWS Attach Tags to Resources: This action takes in an instance ID and a tag key:value pair. Run this action as many times as needed to fully tag your instances.\n",
" 4. compare tag keys against required list: This final Action looks through all actions, and compares the Tag Keys with the required tag list. If an instance is not in compliance, it is exported.\n",
" \n",
" The eventual goal is that after all required instances are labelled in step 3, step 4 will have only instances that are no longer needed, and can be removed from AWS."
]
},
{
"cell_type": "markdown",
"id": "a49a1258-79d2-4846-8731-4ed74b36d6bc",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "AWS Get Untagged Resources",
"orderProperties": [],
"tags": [],
"title": "AWS Get Untagged Resources"
},
"source": [
"Here we will use unSkript AWS Get Untagged Resources Lego. This lego take region: str as input. This inputs is used to find out all Untagged Resources."
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "0ec169e9-f3f2-400d-9b58-e4a598769e61",
"metadata": {
"accessType": "ACCESS_TYPE_UNSPECIFIED",
"actionBashCommand": false,
"actionNeedsCredential": true,
"actionRequiredLinesInCode": [],
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"action_uuid": "aee6cabb55096d5cf6098faa7e4a94135e8f5b0572b36d4b3252d7745fae595b",
"continueOnError": false,
"createTime": "1970-01-01T00:00:00Z",
"credentialsJson": {},
"currentVersion": "0.1.0",
"description": "AWS Get Untagged Resources",
"execution_data": {
"last_date_success_run_cell": "2022-12-14T23:05:39.107Z"
},
"id": 187,
"index": 187,
"inputData": [
{
"region": {
"constant": false,
"value": "Region"
}
}
],
"inputschema": [
{
"properties": {
"region": {
"description": "AWS Region.",
"title": "Region",
"type": "string"
}
},
"required": [
"region"
],
"title": "aws_get_untagged_resources",
"type": "object"
}
],
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Get Untagged Resources",
"nouns": [
"aws",
"resources"
],
"orderProperties": [
"region"
],
"output": {
"type": ""
},
"outputParams": {
"output_name": "UntaggedResources",
"output_name_enabled": true
},
"tags": [
"aws_get_untagged_resources"
],
"title": "AWS Get Untagged Resources",
"trusted": true,
"verbs": [
"list"
]
},
"outputs": [],
"source": [
"## Copyright (c) 2021 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from typing import List, Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.connectors.aws import aws_get_paginator\n",
"import pprint\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_get_untagged_resources_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_get_untagged_resources(handle, region: str) -> List:\n",
" \n",
" print(\"region\",region)\n",
" ec2Client = handle.client('ec2', region_name=region)\n",
" #res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" result = []\n",
" for reservation in res:\n",
" for instance in reservation['Instances']: \n",
" try:\n",
" #has tags\n",
" tagged_instance = instance['Tags']\n",
" except Exception as e:\n",
" #no tags\n",
" result.append({\"instance\":instance['InstanceId'],\"type\":instance['InstanceType'],\"imageId\":instance['ImageId'], \"launched\":instance['LaunchTime'] })\n",
" return result\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"Region\"\n",
" }''')\n",
"task.configure(outputName=\"UntaggedResources\")\n",
"\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_get_untagged_resources, lego_printer=aws_get_untagged_resources_printer, hdl=hdl, args=args)"
],
"output": {}
},
{
"cell_type": "markdown",
"id": "be97efa2-dbb5-40b2-8d07-cc000278ba84",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Get Tags Keys Of All Resources",
"orderProperties": [],
"tags": [],
"title": "Get Tags Keys Of All Resources"
},
"source": [
"Here we will use unSkript Get Tag Keys Of All Resources Lego. This lego take region: str as input. This input is used to find out all Tag Keys of Resources."
]
},
{
"cell_type": "code",
"execution_count": 65,
"id": "363de8c8-6aa8-40f4-8856-a62a2f0a69f5",
"metadata": {
"accessType": "ACCESS_TYPE_UNSPECIFIED",
"actionBashCommand": false,
"actionNeedsCredential": true,
"actionRequiredLinesInCode": [],
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"action_uuid": "db00e432f32042fe9e14ba89a69a4fb86f88f8554c5d45af4cd287a6e5e01532",
"continueOnError": false,
"createTime": "1970-01-01T00:00:00Z",
"credentialsJson": {},
"currentVersion": "0.1.0",
"description": "AWS Get Tags of All Resources",
"execution_data": {
"last_date_success_run_cell": "2022-12-15T01:37:23.541Z"
},
"id": 132,
"index": 132,
"inputData": [
{
"region": {
"constant": false,
"value": "Region"
}
}
],
"inputschema": [
{
"properties": {
"region": {
"description": "AWS Region.",
"title": "Region",
"type": "string"
}
},
"required": [
"region"
],
"title": "aws_resources_tags",
"type": "object"
}
],
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Get Tag Keys of All Resources",
"nouns": [
"aws",
"resources"
],
"orderProperties": [
"region"
],
"output": {
"type": ""
},
"tags": [
"aws_resources_tags"
],
"title": "AWS Get Tag Keys of All Resources",
"trusted": true,
"verbs": [
"list"
]
},
"outputs": [],
"source": [
"## Copyright (c) 2021 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from typing import List, Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.connectors.aws import aws_get_paginator\n",
"import pprint\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_resources_tags_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"@beartype\n",
"def aws_resources_tags(handle, region: str) -> List:\n",
" \"\"\"aws_resources_tags Returns an List of all Resources Tags.\n",
"\n",
" :type handle: object\n",
" :param handle: Object returned from task.validate(...).\n",
"\n",
" :type region: str\n",
" :param region: Region to filter resources.\n",
"\n",
" :rtype: List of all Resources Tags.\n",
" \"\"\"\n",
" ec2Client = handle.client('ec2', region_name=region)\n",
" #res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" result = []\n",
" for reservation in res:\n",
" for instance in reservation['Instances']: \n",
" try:\n",
" #has tags\n",
" tagged_instance = instance['Tags']\n",
" result.append({\"instance\":instance['InstanceId'],\"type\":instance['InstanceType'],\"imageId\":instance['ImageId'], \"launched\":instance['LaunchTime'], \"tags\": tagged_instance})\n",
" except Exception as e:\n",
" #no tags\n",
" result.append({\"instance\":instance['InstanceId'],\"type\":instance['InstanceType'],\"imageId\":instance['ImageId'], \"launched\":instance['LaunchTime'], \"tags\": []})\n",
" return result\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"Region\"\n",
" }''')\n",
"\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_resources_tags, lego_printer=aws_resources_tags_printer, hdl=hdl, args=args)"
],
"output": {}
},
{
"cell_type": "markdown",
"id": "ce65fdd0-ee64-42d0-90a6-0fe1c0f54608",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "AWS Attach Tags to Resources",
"orderProperties": [],
"tags": [],
"title": "AWS Attach Tags to Resources"
},
"source": [
"Here we will use unSkript AWS Attach Tags to Resources Lego. This lego take handle, resource_arn: list, tag_key: str, tag_value: str, region: str as input. This input is used to attach mandatory tags to all untagged Resources."
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "e7815002-3aaf-4b3b-a3fe-12d1c3b1edba",
"metadata": {
"accessType": "ACCESS_TYPE_UNSPECIFIED",
"actionBashCommand": false,
"actionNeedsCredential": true,
"actionRequiredLinesInCode": [],
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"action_uuid": "878cb7819ecb4687ecfa8c6143365d10fe6b127adeb4a27fd71d06a3a2243d22",
"continueOnError": true,
"createTime": "1970-01-01T00:00:00Z",
"credentialsJson": {},
"currentVersion": "0.1.0",
"description": "AWS Attach Tags to Resources",
"execution_data": {
"last_date_success_run_cell": "2022-12-15T00:11:14.333Z"
},
"id": 167,
"index": 167,
"inputData": [
{
"instanceId": {
"constant": false,
"value": "\"i-0ec9048cb5520b225\""
},
"region": {
"constant": false,
"value": "Region"
},
"tag_key": {
"constant": false,
"value": "\"Environment\""
},
"tag_value": {
"constant": false,
"value": "\"test\""
}
}
],
"inputschema": [
{
"properties": {
"instanceId": {
"default": "\"i-0ec9048cb5520b225\"",
"description": "instance ID",
"title": "instanceId",
"type": "string"
},
"region": {
"default": "",
"description": "AWS Region.",
"title": "Region",
"type": "string"
},
"tag_key": {
"default": "",
"description": "Resource Tag Key.",
"title": "Tag Key",
"type": "string"
},
"tag_value": {
"default": "",
"description": "Resource Tag Value.",
"title": "Tag Value",
"type": "string"
}
},
"required": [
"resource_arn",
"tag_key",
"tag_value",
"region"
],
"title": "aws_tag_resources",
"type": "object"
}
],
"iterData": [
{
"iter_enabled": false,
"iter_item": "resource_arn",
"iter_list": {
"constant": false,
"objectItems": false,
"value": "UntaggedResources["
}
}
],
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Attach Tags to Resources",
"nouns": [
"aws",
"resources"
],
"orderProperties": [
"tag_key",
"tag_value",
"region",
"instanceId"
],
"output": {
"type": ""
},
"tags": [
"aws_tag_resources"
],
"title": "AWS Attach Tags to Resources",
"trusted": true,
"verbs": [
"dict"
]
},
"outputs": [],
"source": [
"## Copyright (c) 2021 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from typing import List, Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.connectors.aws import aws_get_paginator\n",
"import pprint\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_tag_resources_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"@beartype\n",
"def aws_tag_resources(handle, instanceId: str, tag_key: str, tag_value: str, region: str) -> Dict:\n",
"\n",
" ec2Client = handle.client('ec2', region_name=region)\n",
" result = {}\n",
" try:\n",
" response = ec2Client.create_tags(\n",
" Resources=[\n",
" instanceId\n",
" ],\n",
" Tags=[\n",
" {\n",
" 'Key': tag_key,\n",
" 'Value': tag_value\n",
" },\n",
" ]\n",
" )\n",
" result = response\n",
"\n",
" except Exception as error:\n",
" result[\"error\"] = error\n",
"\n",
" return result\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"\n",
"task.configure(continueOnError=False)\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"Region\",\n",
"\n",
" }''')\n",
"task.configure(iterJson='''{\n",
" \"iter_enabled\": false,\n",
" \"iter_list_is_const\": false,\n",
" \"iter_list\": \"UntaggedResources[\",\n",
" \"iter_parameter\": \"resource_arn\"\n",
" }''')\n",
"\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_tag_resources, lego_printer=aws_tag_resources_printer, hdl=hdl, args=args)"
],
"output": {}
},
{
"cell_type": "code",
"execution_count": 63,
"id": "5bc81313-934a-476b-88a4-2c2629c3f759",
"metadata": {
"accessType": "ACCESS_TYPE_UNSPECIFIED",
"actionBashCommand": false,
"actionNeedsCredential": true,
"actionRequiredLinesInCode": [],
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"action_uuid": "aee6cabb55096d5cf6098faa7e4a94135e8f5b0572b36d4b3252d7745fae595b",
"continueOnError": false,
"createTime": "1970-01-01T00:00:00Z",
"credentialsJson": {},
"currentVersion": "0.1.0",
"description": "AWS Get Untagged Resources",
"execution_data": {
"last_date_success_run_cell": "2022-12-15T00:44:19.650Z"
},
"id": 179,
"index": 179,
"inputData": [
{
"region": {
"constant": false,
"value": "\"us-west-2\""
},
"requiredTags": {
"constant": false,
"value": "[\"CostCenter\", \"Environment\"]"
}
}
],
"inputschema": [
{
"properties": {
"region": {
"default": "",
"description": "AWS Region.",
"title": "Region",
"type": "string"
},
"requiredTags": {
"default": "[\"CostCenter\", \"Environment\"]",
"description": "a list of required tags for EC2 Instances",
"title": "requiredTags",
"type": "array"
}
},
"required": [
"region"
],
"title": "aws_get_untagged_resources",
"type": "object"
}
],
"legotype": "LEGO_TYPE_AWS",
"name": "compare tag keys against required list",
"nouns": [],
"orderProperties": [
"region",
"requiredTags"
],
"output": {
"type": ""
},
"tags": [
"aws_get_untagged_resources"
],
"title": "compare tag keys against required list",
"trusted": true,
"verbs": []
},
"outputs": [],
"source": [
"## Copyright (c) 2021 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from typing import List, Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.connectors.aws import aws_get_paginator\n",
"import pprint\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_get_resources_out_of_compliance_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(output)\n",
"\n",
"\n",
"@beartype\n",
"def aws_get_resources_out_of_compliance(handle, region: str, requiredTags: list) -> List:\n",
"\n",
" ec2Client = handle.client('ec2', region_name=region)\n",
" #res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" res = aws_get_paginator(ec2Client, \"describe_instances\", \"Reservations\")\n",
" result = []\n",
" for reservation in res:\n",
" for instance in reservation['Instances']: \n",
" try:\n",
" #has tags\n",
" allTags = True\n",
" keyList = []\n",
" tagged_instance = instance['Tags']\n",
" #print(tagged_instance)\n",
" #get all the keys for the instance\n",
" for kv in tagged_instance:\n",
" key = kv[\"Key\"]\n",
" keyList.append(key)\n",
" #see if the required tags are represented in the keylist\n",
" #if they are not - the instance is not in compliance\n",
" for required in requiredTags:\n",
" if required not in keyList:\n",
" allTags = False\n",
" if not allTags:\n",
" # instance is not in compliance\n",
" result.append({\"instance\":instance['InstanceId'],\"type\":instance['InstanceType'],\"imageId\":instance['ImageId'], \"launched\":instance['LaunchTime'], \"tags\": tagged_instance})\n",
" \n",
" except Exception as e:\n",
" #no tags\n",
" result.append({\"instance\":instance['InstanceId'],\"type\":instance['InstanceType'],\"imageId\":instance['ImageId'], \"launched\":instance['LaunchTime'], \"tags\": []})\n",
" return result\n",
"\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"\\\\\"us-west-2\\\\\"\",\n",
" \"requiredTags\": \"[\\\\\"CostCenter\\\\\", \\\\\"Environment\\\\\"]\"\n",
" }''')\n",
"\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_get_resources_out_of_compliance, lego_printer=aws_get_resources_out_of_compliance_printer, hdl=hdl, args=args)"
],
"output": {}
},
{
"cell_type": "markdown",
"id": "a8280ac4-d504-44d2-b5ea-d97f7ca672c8",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Conclusion",
"orderProperties": [],
"tags": [],
"title": "Conclusion"
},
"source": [
"In this Runbook, we demonstrated the use of unSkript's AWS legos to attach tags. This Runbook gets the list of all untagged resources of a given region, discovers tag keys of the given region and attaches mandatory tags to all the untagged resource. To view the full platform capabilities of unSkript please visit https://unskript.com"
]
}
],
"metadata": {
"execution_data": {
"runbook_name": "AWS Add Mandatory tags to EC2",
"parameters": [
"Region",
"Tag_Key",
"Tag_Value"
]
},
"kernelspec": {
"display_name": "unSkript (Build: 762)",
"name": "python_kubernetes"
},
"language_info": {
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"pygments_lexer": "ipython3"
},
"parameterSchema": {
"properties": {
"Region": {
"default": "us-west-2",
"description": "Resources Region",
"title": "Region",
"type": "string"
},
"Tag_Key": {
"default": "Description",
"description": "Mandatory Tag key for resources (only use when tag need to be attached to all the resources)",
"title": "Tag_Key",
"type": "string"
},
"Tag_Value": {
"default": "Unskript",
"description": "Mandatory Tag Value for resources (only use when tag need to be attached to all the resources)",
"title": "Tag_Value",
"type": "string"
}
},
"required": [],
"title": "Schema",
"type": "object"
},
"parameterValues": null
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: AWS/AWS_Add_Mandatory_tags_to_EC2.json
================================================
{
"name": "AWS Add Mandatory tags to EC2",
"description": "This xRunBook is a set of example actions that could be used to establish mandatory tagging to EC2 instances. First testing instances for compliance, and creating reports of instances that are missing the required tags. There is also and action to add tags to an instance - to help bring them into tag compliance.",
"uuid": "70e8223d93ea22200942a614b7565faf63bfe6d14de352e60804f8b5dc6fbbcd",
"icon": "CONNECTOR_TYPE_AWS",
"categories": [ "CATEGORY_TYPE_IAM", "CATEGORY_TYPE_SECOPS" ],
"connector_types": [ "CONNECTOR_TYPE_AWS" ],
"version": "1.0.0"
}
================================================
FILE: AWS/AWS_Add_Tag_Across_Selected_AWS_Resources.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "79251bc7-c6cd-4344-a8d5-754bf62eb17e",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "Add tag to selected AWS Resources",
"orderProperties": [],
"tags": [],
"title": "Add tag to selected AWS Resources"
},
"source": [
"<p><img src=\"https://storage.googleapis.com/unskript-website/assets/favicon.png\" alt=\"unSkript.com\" width=\"100\" height=\"100\"></p>\n",
"<h1 id=\"-unSkript-Runbooks-\">unSkript Runbooks <a class=\"jp-InternalAnchorLink\" href=\"#-unSkript-Runbooks-\" target=\"_self\">¶</a></h1>\n",
"<div class=\"alert alert-block alert-success\"><strong> This runbook adds tags to selectedAWS Resources.</strong></div>\n",
"<p> </p>\n",
"<center>\n",
"<h2 id=\"Enforce-Mandatory-Tags-Across-All-AWS-Resources\">Enforce Mandatory Tags Across All AWS Resources<a class=\"jp-InternalAnchorLink\" href=\"#Enforce-Mandatory-Tags-Across-All-AWS-Resources\" target=\"_self\">¶</a></h2>\n",
"</center>\n",
"<h1 id=\"Steps-Overview\">Steps Overview<a class=\"jp-InternalAnchorLink\" href=\"#Steps-Overview\" target=\"_self\">¶</a></h1>\n",
"<ol>\n",
"<li>List all the Resources ARNs that do not have this tag in the given region.</li>\n",
"<li>Select teh resources to tag - with value from input parameters.</li>\n",
"<li>Add Tags to the selected AWS Resources.</li>\n",
"</ol>"
]
},
{
"cell_type": "markdown",
"id": "a49a1258-79d2-4846-8731-4ed74b36d6bc",
"metadata": {
"jupyter": {
"source_hidden": false
},
"name": "AWS Get Untagged Resources",
"orderProperties": [],
"tags": [],
"title": "AWS Get Untagged Resources"
},
"source": [
"Here we will use unSkript AWS Get Untagged Resources Lego. This lego take region: str as input. This inputs is used to find out all Untagged Resources."
]
},
{
"cell_type": "code",
"execution_count": 167,
"id": "0ec169e9-f3f2-400d-9b58-e4a598769e61",
"metadata": {
"accessType": "ACCESS_TYPE_UNSPECIFIED",
"actionBashCommand": false,
"actionNeedsCredential": true,
"actionRequiredLinesInCode": [],
"actionSupportsIteration": true,
"actionSupportsPoll": true,
"action_modified": true,
"action_uuid": "aee6cabb55096d5cf6098faa7e4a94135e8f5b0572b36d4b3252d7745fae595b",
"continueOnError": false,
"createTime": "1970-01-01T00:00:00Z",
"credentialsJson": {},
"currentVersion": "0.1.0",
"customCell": true,
"description": "AWS Get Untagged Resources",
"execution_data": {
"last_date_success_run_cell": "2023-06-04T03:38:42.589Z"
},
"id": 187,
"index": 187,
"inputData": [
{
"region": {
"constant": false,
"value": "Region"
},
"tag": {
"constant": false,
"value": "Tag_Key"
}
}
],
"inputschema": [
{
"properties": {
"region": {
"default": "",
"description": "AWS Region.",
"title": "Region",
"type": "string"
},
"tag": {
"default": "\"Tag_Key\"",
"description": "The Tag to search for",
"title": "tag",
"type": "string"
}
},
"required": [
"region",
"tag"
],
"title": "aws_get_resources_missing_tag",
"type": "object"
}
],
"legotype": "LEGO_TYPE_AWS",
"name": "AWS Get Resources Missing Tag",
"nouns": [
"aws",
"resources"
],
"orderProperties": [
"region",
"tag"
],
"output": {
"type": ""
},
"outputParams": {
"output_name": "UntaggedResources",
"output_name_enabled": true
},
"printOutput": true,
"service_id_enabled": false,
"tags": [
"aws_get_untagged_resources"
],
"title": "AWS Get Resources Missing Tag",
"verbs": [
"list"
]
},
"outputs": [],
"source": [
"## Copyright (c) 2021 unSkript, Inc\n",
"## All rights reserved.\n",
"##\n",
"from typing import List, Dict\n",
"from pydantic import BaseModel, Field\n",
"from unskript.connectors.aws import aws_get_paginator\n",
"import pprint\n",
"\n",
"from beartype import beartype\n",
"@beartype\n",
"def aws_get_resources_missing_tag_printer(output):\n",
" if output is None:\n",
" return\n",
" pprint.pprint(f\"there are {len(output)} resources missing tag {Tag_Key}. We can fix a max of 20.\" )\n",
"\n",
"\n",
"@beartype\n",
"def aws_get_resources_missing_tag(handle, region: str, tag:str) -> List:\n",
" \"\"\"aws_get_resources_missing_tag Returns an List of Untagged Resources.\n",
"\n",
" :type handle: object\n",
" :param handle: Object returned from task.validate(...).\n",
"\n",
" :type region: str\n",
" :param region: Region to filter resources.\n",
"\n",
" :rtype: List of untagged resources.\n",
" \"\"\"\n",
"\n",
" ec2Client = handle.client('resourcegroupstaggingapi', region_name=region)\n",
" result = []\n",
"\n",
" arnKeywordsToIgnore = [\"sqlworkbench\",\n",
" \"AutoScalingManagedRule\",\n",
" \"sagarProxy\",\n",
" \"fsap-0f4d1bbd83f172783\",\n",
" \"experiment\"]\n",
"\n",
" try:\n",
" response = aws_get_paginator(ec2Client, \"get_resources\", \"ResourceTagMappingList\")\n",
" for resources in response:\n",
" if not resources[\"Tags\"]:\n",
" #no tags at all!!\n",
" arnIgnore = False\n",
" for substring in arnKeywordsToIgnore:\n",
" if substring in resources[\"ResourceARN\"]:\n",
" arnIgnore = True\n",
" if not arnIgnore:\n",
" # instance is missing tag\n",
" result.append(resources[\"ResourceARN\"])\n",
" else:\n",
" #has tags\n",
" allTags = True\n",
" keyList = []\n",
" tagged_instance = resources['Tags']\n",
" #print(tagged_instance)\n",
" #get all the keys for the instance\n",
" for kv in tagged_instance:\n",
" key = kv[\"Key\"]\n",
" keyList.append(key)\n",
" #see if the required tags are represented in the keylist\n",
" #if they are not - the instance is not in compliance\n",
" if tag not in keyList:\n",
" allTags = False\n",
" if not allTags:\n",
" arnIgnore = False\n",
" for substring in arnKeywordsToIgnore:\n",
" if substring in resources[\"ResourceARN\"]:\n",
" arnIgnore = True\n",
" if not arnIgnore:\n",
" # instance is missing tag\n",
" result.append(resources[\"ResourceARN\"])\n",
"\n",
" except Exception as error:\n",
" result.append({\"error\":error})\n",
"\n",
" return result\n",
"\n",
"\n",
"task = Task(Workflow())\n",
"task.configure(printOutput=True)\n",
"task.configure(inputParamsJson='''{\n",
" \"region\": \"Region\",\n",
" \"tag\": \"Tag_Key\"\n",
" }''')\n",
"task.configure(outputName=\"UntaggedResources\")\n",
"\n",
"(err, hdl, args) = task.validate(vars=vars())\n",
"if err is None:\n",
" task.execute(aws_get_resources_missing_tag, lego_printer=aws_get_resources_missing_tag_printer, hdl=hdl, args=args)"
]
},
{
"ce
gitextract_0y86xh8m/ ├── .github/ │ ├── Anatomy-of-Runbook.md │ ├── CONTRIBUTING.md │ ├── DEVELOPERGUIDE.md │ ├── ISSUE_TEMPLATE/ │ │ ├── add_action.yml │ │ ├── add_chatgpt_action.yml │ │ ├── add_credential.yml │ │ ├── add_runbook.yml │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE/ │ │ ├── action_pr_template.yml │ │ ├── feature_request_template.yml │ │ ├── lego_pr_template.md │ │ └── runbook_pr_template.md │ ├── code-of-conduct.md │ ├── dependabot.yml │ ├── guidelines-to-creating-runbook.md │ ├── hfest_2022_resource.md │ ├── images/ │ │ ├── actionShield.json │ │ └── runbookShield.json │ ├── pull_request_template.md │ └── workflows/ │ ├── all_module_test.yml │ ├── build-and-release-docker-lite.yml │ ├── build-and-release-docker.yml │ ├── codeql.yml │ ├── dependency-review.yml │ ├── generate_readme.yaml │ ├── lint-test.yaml │ ├── make-release.yaml │ ├── run-legoschema.yml │ ├── sanitize-runbook.yml │ └── scorecards.yml ├── .gitignore ├── .pylintrc ├── .vscode/ │ └── settings.json ├── AWS/ │ ├── .gitignore │ ├── AWS_Access_Key_Rotation.ipynb │ ├── AWS_Access_Key_Rotation.json │ ├── AWS_Add_Lifecycle_Policy_To_S3_Buckets.ipynb │ ├── AWS_Add_Lifecycle_Policy_To_S3_Buckets.json │ ├── AWS_Add_Mandatory_tags_to_EC2.ipynb │ ├── AWS_Add_Mandatory_tags_to_EC2.json │ ├── AWS_Add_Tag_Across_Selected_AWS_Resources.ipynb │ ├── AWS_Add_Tag_Across_Selected_AWS_Resources.json │ ├── AWS_Bulk_Update_Resource_Tag.ipynb │ ├── AWS_Bulk_Update_Resource_Tag.json │ ├── AWS_Change_EBS_Volume_To_GP3_Type.ipynb │ ├── AWS_Change_EBS_Volume_To_GP3_Type.json │ ├── AWS_Change_Route53_TTL.ipynb │ ├── AWS_Change_Route53_TTL.json │ ├── AWS_Create_New_IAM_User_With_Policy.ipynb │ ├── AWS_Create_New_IAM_User_With_Policy.json │ ├── AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.ipynb │ ├── AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.json │ ├── AWS_Delete_EBS_Volumes_With_Low_Usage.ipynb │ ├── AWS_Delete_EBS_Volumes_With_Low_Usage.json │ ├── AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.ipynb │ ├── AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.json │ ├── AWS_Delete_ELBs_With_No_Targets_Or_Instances.ipynb │ ├── AWS_Delete_ELBs_With_No_Targets_Or_Instances.json │ ├── AWS_Delete_IAM_User.ipynb │ ├── AWS_Delete_IAM_User.json │ ├── AWS_Delete_Old_EBS_Snapshots.ipynb │ ├── AWS_Delete_Old_EBS_Snapshots.json │ ├── AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.ipynb │ ├── AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.json │ ├── AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.ipynb │ ├── AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.json │ ├── AWS_Delete_Unattached_EBS_Volume.ipynb │ ├── AWS_Delete_Unattached_EBS_Volume.json │ ├── AWS_Delete_Unused_AWS_Secrets.ipynb │ ├── AWS_Delete_Unused_AWS_Secrets.json │ ├── AWS_Delete_Unused_Log_Streams.ipynb │ ├── AWS_Delete_Unused_Log_Streams.json │ ├── AWS_Delete_Unused_NAT_Gateways.ipynb │ ├── AWS_Delete_Unused_NAT_Gateways.json │ ├── AWS_Delete_Unused_Route53_Healthchecks.ipynb │ ├── AWS_Delete_Unused_Route53_Healthchecks.json │ ├── AWS_Detach_ec2_Instance_from_ASG.ipynb │ ├── AWS_Detach_ec2_Instance_from_ASG.json │ ├── AWS_EC2_Disk_Cleanup.ipynb │ ├── AWS_EC2_Disk_Cleanup.json │ ├── AWS_Enforce_HTTP_Redirection_across_AWS_ALB.ipynb │ ├── AWS_Enforce_HTTP_Redirection_across_AWS_ALB.json │ ├── AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.ipynb │ ├── AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.json │ ├── AWS_Get_Elb_Unhealthy_Instances.ipynb │ ├── AWS_Get_Elb_Unhealthy_Instances.json │ ├── AWS_Get_Redshift_Daily_Product_Costs.ipynb │ ├── AWS_Get_Redshift_Daily_Product_Costs.json │ ├── AWS_Get_Redshift_EC2_Daily_Costs.ipynb │ ├── AWS_Get_Redshift_EC2_Daily_Costs.json │ ├── AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.ipynb │ ├── AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.json │ ├── AWS_Notify_About_Unused_Keypairs.ipynb │ ├── AWS_Notify_About_Unused_Keypairs.json │ ├── AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.ipynb │ ├── AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.json │ ├── AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.ipynb │ ├── AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.json │ ├── AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.ipynb │ ├── AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.json │ ├── AWS_Release_Unattached_Elastic_IPs.ipynb │ ├── AWS_Release_Unattached_Elastic_IPs.json │ ├── AWS_Remediate_unencrypted_S3_buckets.ipynb │ ├── AWS_Remediate_unencrypted_S3_buckets.json │ ├── AWS_Renew_SSL_Certificate.ipynb │ ├── AWS_Renew_SSL_Certificate.json │ ├── AWS_Restart_Unhealthy_Services_Target_Group.ipynb │ ├── AWS_Restart_Unhealthy_Services_Target_Group.json │ ├── AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.ipynb │ ├── AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.json │ ├── AWS_Secure_Publicly_Accessible_RDS_Instances.ipynb │ ├── AWS_Secure_Publicly_Accessible_RDS_Instances.json │ ├── AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.ipynb │ ├── AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.json │ ├── AWS_Stop_Idle_EC2_Instances.ipynb │ ├── AWS_Stop_Idle_EC2_Instances.json │ ├── AWS_Stop_Untagged_EC2_Instances.ipynb │ ├── AWS_Stop_Untagged_EC2_Instances.json │ ├── AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.ipynb │ ├── AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.json │ ├── AWS_Update_RDS_Instances_from_Old_to_New_Generation.ipynb │ ├── AWS_Update_RDS_Instances_from_Old_to_New_Generation.json │ ├── AWS_Update_Redshift_Database.ipynb │ ├── AWS_Update_Redshift_Database.json │ ├── AWS_Update_Resource_Tags.ipynb │ ├── AWS_Update_Resource_Tags.json │ ├── AWS_Update_Resources_About_To_Expire.ipynb │ ├── AWS_Update_Resources_About_To_Expire.json │ ├── AWS_encrypt_unencrypted_S3_buckets.ipynb │ ├── AWS_encrypt_unencrypted_S3_buckets.json │ ├── Add_new_IAM_user.ipynb │ ├── Add_new_IAM_user.json │ ├── Configure_url_endpoint_on_a_cloudwatch_alarm.ipynb │ ├── Configure_url_endpoint_on_a_cloudwatch_alarm.json │ ├── Copy_ami_to_all_given_AWS_regions.ipynb │ ├── Copy_ami_to_all_given_AWS_regions.json │ ├── Delete_Unused_AWS_NAT_Gateways.ipynb │ ├── Delete_Unused_AWS_NAT_Gateways.json │ ├── Detach_Instance_from_ASG.ipynb │ ├── Detach_Instance_from_ASG.json │ ├── Detect_ECS_failed_deployment.ipynb │ ├── Detect_ECS_failed_deployment.json │ ├── Enforce_Mandatory_Tags_Across_All_AWS_Resources.ipynb │ ├── Enforce_Mandatory_Tags_Across_All_AWS_Resources.json │ ├── Find_EC2_Instances_Scheduled_to_retire.ipynb │ ├── Find_EC2_Instances_Scheduled_to_retire.json │ ├── IAM_security_least_privilege.ipynb │ ├── IAM_security_least_privilege.json │ ├── Monitor_AWS_DynamoDB_provision_capacity.ipynb │ ├── Monitor_AWS_DynamoDB_provision_capacity.json │ ├── README.md │ ├── Resize_EBS_Volume.ipynb │ ├── Resize_EBS_Volume.json │ ├── Resize_List_Of_Pvcs.ipynb │ ├── Resize_List_Of_Pvcs.json │ ├── Restart_AWS_EC2_Instances_By_Tag.ipynb │ ├── Restart_AWS_EC2_Instances_By_Tag.json │ ├── Run_EC2_from_AMI.ipynb │ ├── Run_EC2_from_AMI.json │ ├── Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.ipynb │ ├── Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.json │ ├── Update_and_Manage_AWS_User_Permission.ipynb │ ├── Update_and_Manage_AWS_User_Permission.json │ ├── __init__.py │ └── legos/ │ ├── AWS_Start_IAM_Policy_Generation/ │ │ ├── AWS_Start_IAM_Policy_Generation.json │ │ ├── AWS_Start_IAM_Policy_Generation.py │ │ ├── README.md │ │ └── __init__.py │ ├── __init__.py │ ├── aws_add_lifecycle_configuration_to_s3_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_add_lifecycle_configuration_to_s3_bucket.json │ │ └── aws_add_lifecycle_configuration_to_s3_bucket.py │ ├── aws_apply_default_encryption_for_s3_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_apply_default_encryption_for_s3_buckets.json │ │ └── aws_apply_default_encryption_for_s3_buckets.py │ ├── aws_attach_ebs_to_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_attach_ebs_to_instances.json │ │ └── aws_attach_ebs_to_instances.py │ ├── aws_attach_iam_policy/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_attach_iam_policy.json │ │ └── aws_attach_iam_policy.py │ ├── aws_attach_tags_to_resources/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_attach_tags_to_resources.json │ │ └── aws_attach_tags_to_resources.py │ ├── aws_change_acl_permissions_of_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_change_acl_permissions_of_buckets.json │ │ └── aws_change_acl_permissions_of_buckets.py │ ├── aws_check_rds_non_m5_t3_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_check_rds_non_m5_t3_instances.json │ │ └── aws_check_rds_non_m5_t3_instances.py │ ├── aws_check_ssl_certificate_expiry/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_check_ssl_certificate_expiry.json │ │ └── aws_check_ssl_certificate_expiry.py │ ├── aws_cloudwatch_attach_webhook_notification_to_alarm/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_cloudwatch_attach_webhook_notification_to_alarm.json │ │ └── aws_cloudwatch_attach_webhook_notification_to_alarm.py │ ├── aws_create_IAMpolicy/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_IAMpolicy.json │ │ └── aws_create_IAMpolicy.py │ ├── aws_create_access_key/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_access_key.json │ │ └── aws_create_access_key.py │ ├── aws_create_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_bucket.json │ │ └── aws_create_bucket.py │ ├── aws_create_iam_user/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_iam_user.json │ │ └── aws_create_iam_user.py │ ├── aws_create_redshift_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_redshift_query.json │ │ └── aws_create_redshift_query.py │ ├── aws_create_user_login_profile/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_user_login_profile.json │ │ └── aws_create_user_login_profile.py │ ├── aws_create_volumes_snapshot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_create_volumes_snapshot.json │ │ └── aws_create_volumes_snapshot.py │ ├── aws_delete_access_key/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_access_key.json │ │ └── aws_delete_access_key.py │ ├── aws_delete_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_bucket.json │ │ └── aws_delete_bucket.py │ ├── aws_delete_classic_load_balancer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_classic_load_balancer.json │ │ └── aws_delete_classic_load_balancer.py │ ├── aws_delete_ebs_snapshot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_ebs_snapshot.json │ │ └── aws_delete_ebs_snapshot.py │ ├── aws_delete_ecs_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_ecs_cluster.json │ │ └── aws_delete_ecs_cluster.py │ ├── aws_delete_load_balancer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_load_balancer.json │ │ └── aws_delete_load_balancer.py │ ├── aws_delete_log_stream/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_log_stream.json │ │ └── aws_delete_log_stream.py │ ├── aws_delete_nat_gateway/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_nat_gateway.json │ │ └── aws_delete_nat_gateway.py │ ├── aws_delete_rds_instance/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_rds_instance.json │ │ └── aws_delete_rds_instance.py │ ├── aws_delete_redshift_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_redshift_cluster.json │ │ └── aws_delete_redshift_cluster.py │ ├── aws_delete_route53_health_check/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_route53_health_check.json │ │ └── aws_delete_route53_health_check.py │ ├── aws_delete_s3_bucket_encryption/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_s3_bucket_encryption.json │ │ └── aws_delete_s3_bucket_encryption.py │ ├── aws_delete_secret/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_secret.json │ │ └── aws_delete_secret.py │ ├── aws_delete_volume_by_id/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_delete_volume_by_id.json │ │ └── aws_delete_volume_by_id.py │ ├── aws_deregister_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_deregister_instances.json │ │ └── aws_deregister_instances.py │ ├── aws_describe_cloudtrail/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_describe_cloudtrail.json │ │ └── aws_describe_cloudtrail.py │ ├── aws_detach_ebs_to_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_detach_ebs_to_instances.json │ │ └── aws_detach_ebs_to_instances.py │ ├── aws_detach_instances_from_autoscaling_group/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_detach_instances_from_autoscaling_group.json │ │ └── aws_detach_instances_from_autoscaling_group.py │ ├── aws_ebs_modify_volume/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_ebs_modify_volume.json │ │ └── aws_ebs_modify_volume.py │ ├── aws_ecs_describe_task_definition/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_ecs_describe_task_definition.json │ │ └── aws_ecs_describe_task_definition.py │ ├── aws_ecs_detect_failed_deployment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_ecs_detect_failed_deployment.json │ │ └── aws_ecs_detect_failed_deployment.py │ ├── aws_ecs_service_restart/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_ecs_service_restart.json │ │ └── aws_ecs_service_restart.py │ ├── aws_ecs_update_service/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_ecs_update_service.json │ │ └── aws_ecs_update_service.py │ ├── aws_eks_copy_pod_logs_to_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_copy_pod_logs_to_bucket.json │ │ └── aws_eks_copy_pod_logs_to_bucket.py │ ├── aws_eks_delete_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_delete_pod.json │ │ └── aws_eks_delete_pod.py │ ├── aws_eks_get_all_dead_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_all_dead_pods.json │ │ └── aws_eks_get_all_dead_pods.py │ ├── aws_eks_get_all_namespaces/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_all_namespaces.json │ │ └── aws_eks_get_all_namespaces.py │ ├── aws_eks_get_all_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_all_pods.json │ │ └── aws_eks_get_all_pods.py │ ├── aws_eks_get_deployments_name/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_deployments_name.json │ │ └── aws_eks_get_deployments_name.py │ ├── aws_eks_get_node_cpu_memory/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_node_cpu_memory.json │ │ └── aws_eks_get_node_cpu_memory.py │ ├── aws_eks_get_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_nodes.json │ │ └── aws_eks_get_nodes.py │ ├── aws_eks_get_not_running_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_not_running_pods.json │ │ └── aws_eks_get_not_running_pods.py │ ├── aws_eks_get_pod_cpu_memory/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_pod_cpu_memory.json │ │ └── aws_eks_get_pod_cpu_memory.py │ ├── aws_eks_get_pod_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_pod_status.json │ │ └── aws_eks_get_pod_status.py │ ├── aws_eks_get_running_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_get_running_pods.json │ │ └── aws_eks_get_running_pods.py │ ├── aws_eks_run_kubectl_cmd/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_eks_run_kubectl_cmd.json │ │ └── aws_eks_run_kubectl_cmd.py │ ├── aws_emr_get_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_emr_get_instances.json │ │ └── aws_emr_get_instances.py │ ├── aws_execute_cli_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_execute_cli_command.json │ │ └── aws_execute_cli_command.py │ ├── aws_execute_command_ssm/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_execute_command_ssm.json │ │ └── aws_execute_command_ssm.py │ ├── aws_filter_all_manual_database_snapshots/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_all_manual_database_snapshots.json │ │ └── aws_filter_all_manual_database_snapshots.py │ ├── aws_filter_ebs_unattached_volumes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ebs_unattached_volumes.json │ │ └── aws_filter_ebs_unattached_volumes.py │ ├── aws_filter_ebs_volumes_with_low_iops/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ebs_volumes_with_low_iops.json │ │ └── aws_filter_ebs_volumes_with_low_iops.py │ ├── aws_filter_ec2_by_tags/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ec2_by_tags.json │ │ └── aws_filter_ec2_by_tags.py │ ├── aws_filter_ec2_by_vpc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ec2_by_vpc.json │ │ └── aws_filter_ec2_by_vpc.py │ ├── aws_filter_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ec2_instances.json │ │ └── aws_filter_ec2_instances.py │ ├── aws_filter_ec2_without_lifetime_tag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_ec2_without_lifetime_tag.json │ │ └── aws_filter_ec2_without_lifetime_tag.py │ ├── aws_filter_instances_without_termination_and_lifetime_tag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_instances_without_termination_and_lifetime_tag.json │ │ └── aws_filter_instances_without_termination_and_lifetime_tag.py │ ├── aws_filter_large_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_large_ec2_instances.json │ │ └── aws_filter_large_ec2_instances.py │ ├── aws_filter_long_running_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_long_running_instances.json │ │ └── aws_filter_long_running_instances.py │ ├── aws_filter_old_ebs_snapshots/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_old_ebs_snapshots.json │ │ └── aws_filter_old_ebs_snapshots.py │ ├── aws_filter_public_s3_buckets_by_acl/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_public_s3_buckets_by_acl.json │ │ └── aws_filter_public_s3_buckets_by_acl.py │ ├── aws_filter_target_groups_by_tags/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_target_groups_by_tags.json │ │ └── aws_filter_target_groups_by_tags.py │ ├── aws_filter_unencrypted_s3_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_unencrypted_s3_buckets.json │ │ └── aws_filter_unencrypted_s3_buckets.py │ ├── aws_filter_unhealthy_instances_from_asg/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_unhealthy_instances_from_asg.json │ │ └── aws_filter_unhealthy_instances_from_asg.py │ ├── aws_filter_untagged_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_untagged_ec2_instances.json │ │ └── aws_filter_untagged_ec2_instances.py │ ├── aws_filter_unused_keypairs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_unused_keypairs.json │ │ └── aws_filter_unused_keypairs.py │ ├── aws_filter_unused_log_streams/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_unused_log_streams.json │ │ └── aws_filter_unused_log_streams.py │ ├── aws_filter_unused_nat_gateway/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_filter_unused_nat_gateway.json │ │ └── aws_filter_unused_nat_gateway.py │ ├── aws_find_elbs_with_no_targets_or_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_elbs_with_no_targets_or_instances.json │ │ └── aws_find_elbs_with_no_targets_or_instances.py │ ├── aws_find_idle_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_idle_instances.json │ │ └── aws_find_idle_instances.py │ ├── aws_find_long_running_lambdas/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_long_running_lambdas.json │ │ └── aws_find_long_running_lambdas.py │ ├── aws_find_low_connection_rds_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_low_connection_rds_instances.json │ │ └── aws_find_low_connection_rds_instances.py │ ├── aws_find_old_gen_emr_clusters/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_old_gen_emr_clusters.json │ │ └── aws_find_old_gen_emr_clusters.py │ ├── aws_find_rds_instances_with_low_cpu_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_rds_instances_with_low_cpu_utilization.json │ │ └── aws_find_rds_instances_with_low_cpu_utilization.py │ ├── aws_find_redshift_cluster_without_pause_resume_enabled/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_redshift_cluster_without_pause_resume_enabled.json │ │ └── aws_find_redshift_cluster_without_pause_resume_enabled.py │ ├── aws_find_redshift_clusters_with_low_cpu_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_redshift_clusters_with_low_cpu_utilization.json │ │ └── aws_find_redshift_clusters_with_low_cpu_utilization.py │ ├── aws_find_s3_buckets_without_lifecycle_policies/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_find_s3_buckets_without_lifecycle_policies.json │ │ └── aws_find_s3_buckets_without_lifecycle_policies.py │ ├── aws_finding_redundant_trails/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_finding_redundant_trails.json │ │ └── aws_finding_redundant_trails.py │ ├── aws_get_acount_number/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_acount_number.json │ │ └── aws_get_acount_number.py │ ├── aws_get_alarms_list/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_alarms_list.json │ │ └── aws_get_alarms_list.py │ ├── aws_get_alb_listeners_without_http_redirect/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_alb_listeners_without_http_redirect.json │ │ └── aws_get_alb_listeners_without_http_redirect.py │ ├── aws_get_all_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_all_ec2_instances.json │ │ └── aws_get_all_ec2_instances.py │ ├── aws_get_all_load_balancers/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_all_load_balancers.json │ │ └── aws_get_all_load_balancers.py │ ├── aws_get_all_service_names/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_all_service_names.json │ │ └── aws_get_all_service_names.py │ ├── aws_get_all_untagged_resources/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_all_untagged_resources.json │ │ └── aws_get_all_untagged_resources.py │ ├── aws_get_auto_scaling_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_auto_scaling_instances.json │ │ └── aws_get_auto_scaling_instances.py │ ├── aws_get_bucket_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_bucket_size.json │ │ └── aws_get_bucket_size.py │ ├── aws_get_cloudwatch_ebs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_ebs.json │ │ └── aws_get_cloudwatch_ebs.py │ ├── aws_get_cloudwatch_ec2/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_ec2.json │ │ └── aws_get_cloudwatch_ec2.py │ ├── aws_get_cloudwatch_ec2_cpuutil/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_ec2_cpuutil.json │ │ └── aws_get_cloudwatch_ec2_cpuutil.py │ ├── aws_get_cloudwatch_metrics_applicationelb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_applicationelb.json │ │ └── aws_get_cloudwatch_metrics_applicationelb.py │ ├── aws_get_cloudwatch_metrics_classic_elb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_classic_elb.json │ │ └── aws_get_cloudwatch_metrics_classic_elb.py │ ├── aws_get_cloudwatch_metrics_dynamodb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_dynamodb.json │ │ └── aws_get_cloudwatch_metrics_dynamodb.py │ ├── aws_get_cloudwatch_metrics_ec2autoscaling/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_ec2autoscaling.json │ │ └── aws_get_cloudwatch_metrics_ec2autoscaling.py │ ├── aws_get_cloudwatch_metrics_gatewayelb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_gatewayelb.json │ │ └── aws_get_cloudwatch_metrics_gatewayelb.py │ ├── aws_get_cloudwatch_metrics_lambda/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_lambda.json │ │ └── aws_get_cloudwatch_metrics_lambda.py │ ├── aws_get_cloudwatch_metrics_network_elb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_network_elb.json │ │ └── aws_get_cloudwatch_metrics_network_elb.py │ ├── aws_get_cloudwatch_metrics_rds/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_rds.json │ │ └── aws_get_cloudwatch_metrics_rds.py │ ├── aws_get_cloudwatch_metrics_redshift/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_redshift.json │ │ └── aws_get_cloudwatch_metrics_redshift.py │ ├── aws_get_cloudwatch_metrics_sqs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_metrics_sqs.json │ │ └── aws_get_cloudwatch_metrics_sqs.py │ ├── aws_get_cloudwatch_statistics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cloudwatch_statistics.json │ │ └── aws_get_cloudwatch_statistics.py │ ├── aws_get_cost_for_all_services/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cost_for_all_services.json │ │ └── aws_get_cost_for_all_services.py │ ├── aws_get_cost_for_data_transfer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_cost_for_data_transfer.json │ │ └── aws_get_cost_for_data_transfer.py │ ├── aws_get_daily_total_spend/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_daily_total_spend.json │ │ └── aws_get_daily_total_spend.py │ ├── aws_get_ebs_volume_for_low_usage/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ebs_volume_for_low_usage.json │ │ └── aws_get_ebs_volume_for_low_usage.py │ ├── aws_get_ebs_volumes_by_type/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ebs_volumes_by_type.json │ │ └── aws_get_ebs_volumes_by_type.py │ ├── aws_get_ebs_volumes_without_gp3_type/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ebs_volumes_without_gp3_type.json │ │ └── aws_get_ebs_volumes_without_gp3_type.py │ ├── aws_get_ec2_cpu_consumption/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ec2_cpu_consumption.json │ │ └── aws_get_ec2_cpu_consumption.py │ ├── aws_get_ec2_data_traffic/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ec2_data_traffic.json │ │ └── aws_get_ec2_data_traffic.py │ ├── aws_get_ec2_instance_age/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ec2_instance_age.json │ │ └── aws_get_ec2_instance_age.py │ ├── aws_get_ec2_instances_with_smaller_cpu_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ec2_instances_with_smaller_cpu_size.json │ │ └── aws_get_ec2_instances_with_smaller_cpu_size.py │ ├── aws_get_ecs_instances_without_autoscaling/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ecs_instances_without_autoscaling.json │ │ └── aws_get_ecs_instances_without_autoscaling.py │ ├── aws_get_ecs_services_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ecs_services_status.json │ │ └── aws_get_ecs_services_status.py │ ├── aws_get_ecs_services_without_autoscaling/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ecs_services_without_autoscaling.json │ │ └── aws_get_ecs_services_without_autoscaling.py │ ├── aws_get_generated_policy/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_generated_policy.json │ │ └── aws_get_generated_policy.py │ ├── aws_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_handle.json │ │ └── aws_get_handle.py │ ├── aws_get_iam_users_without_attached_policies/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_iam_users_without_attached_policies.json │ │ └── aws_get_iam_users_without_attached_policies.py │ ├── aws_get_idle_emr_clusters/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_idle_emr_clusters.json │ │ └── aws_get_idle_emr_clusters.py │ ├── aws_get_instance_detail_with_private_dns_name/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_instance_detail_with_private_dns_name.json │ │ └── aws_get_instance_detail_with_private_dns_name.py │ ├── aws_get_instance_details/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_instance_details.json │ │ └── aws_get_instance_details.py │ ├── aws_get_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_instances.json │ │ └── aws_get_instances.py │ ├── aws_get_internet_gateway_by_vpc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_internet_gateway_by_vpc.json │ │ └── aws_get_internet_gateway_by_vpc.py │ ├── aws_get_lambdas_not_using_arm_graviton2_processor/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_lambdas_not_using_arm_graviton2_processor.json │ │ └── aws_get_lambdas_not_using_arm_graviton2_processor.py │ ├── aws_get_lambdas_with_high_error_rate/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_lambdas_with_high_error_rate.json │ │ └── aws_get_lambdas_with_high_error_rate.py │ ├── aws_get_long_running_elasticcache_clusters_without_reserved_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_long_running_elasticcache_clusters_without_reserved_nodes.json │ │ └── aws_get_long_running_elasticcache_clusters_without_reserved_nodes.py │ ├── aws_get_long_running_rds_instances_without_reserved_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_long_running_rds_instances_without_reserved_instances.json │ │ └── aws_get_long_running_rds_instances_without_reserved_instances.py │ ├── aws_get_long_running_redshift_clusters_without_reserved_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_long_running_redshift_clusters_without_reserved_nodes.json │ │ └── aws_get_long_running_redshift_clusters_without_reserved_nodes.py │ ├── aws_get_nat_gateway_by_vpc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_nat_gateway_by_vpc.json │ │ └── aws_get_nat_gateway_by_vpc.py │ ├── aws_get_nlb_targets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_nlb_targets.json │ │ └── aws_get_nlb_targets.py │ ├── aws_get_nlbs_without_targets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_nlbs_without_targets.json │ │ └── aws_get_nlbs_without_targets.py │ ├── aws_get_older_generation_rds_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_older_generation_rds_instances.json │ │ └── aws_get_older_generation_rds_instances.py │ ├── aws_get_private_address_from_nat_gateways/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_private_address_from_nat_gateways.json │ │ └── aws_get_private_address_from_nat_gateways.py │ ├── aws_get_public_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_public_ec2_instances.json │ │ └── aws_get_public_ec2_instances.py │ ├── aws_get_publicly_accessible_db_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_publicly_accessible_db_instances.json │ │ └── aws_get_publicly_accessible_db_instances.py │ ├── aws_get_publicly_accessible_db_snapshots/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_publicly_accessible_db_snapshots.json │ │ └── aws_get_publicly_accessible_db_snapshots.py │ ├── aws_get_rds_automated_snapshots_above_retention_period/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_rds_automated_snapshots_above_retention_period.json │ │ └── aws_get_rds_automated_snapshots_above_retention_period.py │ ├── aws_get_redshift_query_details/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_redshift_query_details.json │ │ └── aws_get_redshift_query_details.py │ ├── aws_get_redshift_result/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_redshift_result.json │ │ └── aws_get_redshift_result.py │ ├── aws_get_reserved_instances_about_to_retired/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_reserved_instances_about_to_retired.json │ │ └── aws_get_reserved_instances_about_to_retired.py │ ├── aws_get_resources_missing_tag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_resources_missing_tag.json │ │ └── aws_get_resources_missing_tag.py │ ├── aws_get_resources_with_expiration_tag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_resources_with_expiration_tag.json │ │ └── aws_get_resources_with_expiration_tag.py │ ├── aws_get_resources_with_tag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_resources_with_tag.json │ │ └── aws_get_resources_with_tag.py │ ├── aws_get_s3_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_s3_buckets.json │ │ └── aws_get_s3_buckets.py │ ├── aws_get_schedule_to_retire_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_schedule_to_retire_instances.json │ │ └── aws_get_schedule_to_retire_instances.py │ ├── aws_get_secret_from_secretmanager/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_secret_from_secretmanager.json │ │ └── aws_get_secret_from_secretmanager.py │ ├── aws_get_secrets_manager_secret/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_secrets_manager_secret.json │ │ └── aws_get_secrets_manager_secret.py │ ├── aws_get_secrets_manager_secretARN/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_secrets_manager_secretARN.json │ │ └── aws_get_secrets_manager_secretARN.py │ ├── aws_get_security_group_details/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_security_group_details.json │ │ └── aws_get_security_group_details.py │ ├── aws_get_service_quota_details/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_service_quota_details.json │ │ └── aws_get_service_quota_details.py │ ├── aws_get_service_quotas/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_service_quotas.json │ │ └── aws_get_service_quotas.py │ ├── aws_get_stopped_instance_volumes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_stopped_instance_volumes.json │ │ └── aws_get_stopped_instance_volumes.py │ ├── aws_get_sts_caller_identity/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_sts_caller_identity.json │ │ └── aws_get_sts_caller_identity.py │ ├── aws_get_tags_of_all_resources/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_tags_of_all_resources.json │ │ └── aws_get_tags_of_all_resources.py │ ├── aws_get_timed_out_lambdas/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_timed_out_lambdas.json │ │ └── aws_get_timed_out_lambdas.py │ ├── aws_get_ttl_for_route53_records/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ttl_for_route53_records.json │ │ └── aws_get_ttl_for_route53_records.py │ ├── aws_get_ttl_under_given_hours/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_ttl_under_given_hours.json │ │ └── aws_get_ttl_under_given_hours.py │ ├── aws_get_unhealthy_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_unhealthy_instances.json │ │ └── aws_get_unhealthy_instances.py │ ├── aws_get_unhealthy_instances_from_elb/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_unhealthy_instances_from_elb.json │ │ └── aws_get_unhealthy_instances_from_elb.py │ ├── aws_get_unused_route53_health_checks/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_unused_route53_health_checks.json │ │ └── aws_get_unused_route53_health_checks.py │ ├── aws_get_users_with_old_access_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_get_users_with_old_access_keys.json │ │ └── aws_get_users_with_old_access_keys.py │ ├── aws_launch_instance_from_ami/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_launch_instance_from_ami.json │ │ └── aws_launch_instance_from_ami.py │ ├── aws_list_access_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_access_keys.json │ │ └── aws_list_access_keys.py │ ├── aws_list_all_iam_users/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_all_iam_users.json │ │ └── aws_list_all_iam_users.py │ ├── aws_list_all_regions/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_all_regions.json │ │ └── aws_list_all_regions.py │ ├── aws_list_application_loadbalancers/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_application_loadbalancers.json │ │ └── aws_list_application_loadbalancers.py │ ├── aws_list_attached_user_policies/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_attached_user_policies.json │ │ └── aws_list_attached_user_policies.py │ ├── aws_list_clusters_with_low_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_clusters_with_low_utilization.json │ │ └── aws_list_clusters_with_low_utilization.py │ ├── aws_list_expiring_access_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_expiring_access_keys.json │ │ └── aws_list_expiring_access_keys.py │ ├── aws_list_expiring_acm_certificates/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_expiring_acm_certificates.json │ │ └── aws_list_expiring_acm_certificates.py │ ├── aws_list_hosted_zones/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_hosted_zones.json │ │ └── aws_list_hosted_zones.py │ ├── aws_list_unattached_elastic_ips/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_unattached_elastic_ips.json │ │ └── aws_list_unattached_elastic_ips.py │ ├── aws_list_unhealthy_instances_in_target_group/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_unhealthy_instances_in_target_group.json │ │ └── aws_list_unhealthy_instances_in_target_group.py │ ├── aws_list_unused_secrets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_unused_secrets.json │ │ └── aws_list_unused_secrets.py │ ├── aws_list_users_with_old_passwords/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_list_users_with_old_passwords.json │ │ └── aws_list_users_with_old_passwords.py │ ├── aws_loadbalancer_list_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_loadbalancer_list_instances.json │ │ └── aws_loadbalancer_list_instances.py │ ├── aws_make_bucket_public/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_make_bucket_public.json │ │ └── aws_make_bucket_public.py │ ├── aws_make_rds_instance_not_publicly_accessible/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_make_rds_instance_not_publicly_accessible.json │ │ └── aws_make_rds_instance_not_publicly_accessible.py │ ├── aws_modify_ebs_volume_to_gp3/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_modify_ebs_volume_to_gp3.json │ │ └── aws_modify_ebs_volume_to_gp3.py │ ├── aws_modify_listener_for_http_redirection/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_modify_listener_for_http_redirection.json │ │ └── aws_modify_listener_for_http_redirection.py │ ├── aws_modify_public_db_snapshots/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_modify_public_db_snapshots.json │ │ └── aws_modify_public_db_snapshots.py │ ├── aws_postgresql_get_configured_max_connections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_postgresql_get_configured_max_connections.json │ │ └── aws_postgresql_get_configured_max_connections.py │ ├── aws_postgresql_plot_active_connections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_postgresql_plot_active_connections.json │ │ └── aws_postgresql_plot_active_connections.py │ ├── aws_purchase_elasticcache_reserved_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_purchase_elasticcache_reserved_node.json │ │ └── aws_purchase_elasticcache_reserved_node.py │ ├── aws_purchase_rds_reserved_instance/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_purchase_rds_reserved_instance.json │ │ └── aws_purchase_rds_reserved_instance.py │ ├── aws_purchase_redshift_reserved_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_purchase_redshift_reserved_node.json │ │ └── aws_purchase_redshift_reserved_node.py │ ├── aws_put_bucket_cors/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_put_bucket_cors.json │ │ └── aws_put_bucket_cors.py │ ├── aws_put_bucket_policy/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_put_bucket_policy.json │ │ └── aws_put_bucket_policy.py │ ├── aws_read_object/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_read_object.json │ │ └── aws_read_object.py │ ├── aws_register_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_register_instances.json │ │ └── aws_register_instances.py │ ├── aws_release_elastic_ip/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_release_elastic_ip.json │ │ └── aws_release_elastic_ip.py │ ├── aws_renew_expiring_acm_certificates/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_renew_expiring_acm_certificates.json │ │ └── aws_renew_expiring_acm_certificates.py │ ├── aws_request_service_quota_increase/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_request_service_quota_increase.json │ │ └── aws_request_service_quota_increase.py │ ├── aws_restart_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_restart_ec2_instances.json │ │ └── aws_restart_ec2_instances.py │ ├── aws_revoke_policy_from_iam_user/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_revoke_policy_from_iam_user.json │ │ └── aws_revoke_policy_from_iam_user.py │ ├── aws_run_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_run_instances.json │ │ └── aws_run_instances.py │ ├── aws_schedule_pause_resume_enabled/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_schedule_pause_resume_enabled.json │ │ └── aws_schedule_pause_resume_enabled.py │ ├── aws_send_email/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_send_email.json │ │ └── aws_send_email.py │ ├── aws_service_quota_limits/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_service_quota_limits.json │ │ └── aws_service_quota_limits.py │ ├── aws_service_quota_limits_vpc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_service_quota_limits_vpc.json │ │ └── aws_service_quota_limits_vpc.py │ ├── aws_stop_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_stop_instances.json │ │ └── aws_stop_instances.py │ ├── aws_tag_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_tag_ec2_instances.json │ │ └── aws_tag_ec2_instances.py │ ├── aws_target_group_list_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_target_group_list_instances.json │ │ └── aws_target_group_list_instances.py │ ├── aws_target_group_list_unhealthy_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_target_group_list_unhealthy_instances.json │ │ └── aws_target_group_list_unhealthy_instances.py │ ├── aws_target_group_register_unregister_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_target_group_register_unregister_instances.json │ │ └── aws_target_group_register_unregister_instances.py │ ├── aws_terminate_ec2_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_terminate_ec2_instances.json │ │ └── aws_terminate_ec2_instances.py │ ├── aws_update_access_key/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_update_access_key.json │ │ └── aws_update_access_key.py │ ├── aws_update_ttl_for_route53_records/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_update_ttl_for_route53_records.json │ │ └── aws_update_ttl_for_route53_records.py │ ├── aws_upload_file_to_s3/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── aws_upload_file_to_s3.json │ │ └── aws_upload_file_to_s3.py │ └── aws_vpc_service_quota_warning/ │ ├── README.md │ ├── __init__.py │ ├── aws_vpc_service_quota_warning.json │ └── aws_vpc_service_quota_warning.py ├── Airflow/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── airflow_check_dag_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── airflow_check_dag_status.json │ │ └── airflow_check_dag_status.py │ ├── airflow_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── airflow_get_handle.json │ │ └── airflow_get_handle.py │ ├── airflow_list_DAG_runs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── airflow_list_DAG_runs.json │ │ └── airflow_list_DAG_runs.py │ └── airflow_trigger_dag_run/ │ ├── README.md │ ├── __init__.py │ ├── airflow_trigger_dag_run.json │ └── airflow_trigger_dag_run.py ├── Azure/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ └── azure_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── azure_get_handle.json │ └── azure_get_handle.py ├── Datadog/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── datadog_delete_incident/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_delete_incident.json │ │ └── datadog_delete_incident.py │ ├── datadog_get_event/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_event.json │ │ └── datadog_get_event.py │ ├── datadog_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_handle.json │ │ └── datadog_get_handle.py │ ├── datadog_get_incident/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_incident.json │ │ └── datadog_get_incident.py │ ├── datadog_get_metric_metadata/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_metric_metadata.json │ │ └── datadog_get_metric_metadata.py │ ├── datadog_get_monitor/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_monitor.json │ │ └── datadog_get_monitor.py │ ├── datadog_get_monitorid/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_get_monitorid.json │ │ └── datadog_get_monitorid.py │ ├── datadog_list_active_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_list_active_metrics.json │ │ └── datadog_list_active_metrics.py │ ├── datadog_list_all_monitors/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_list_all_monitors.json │ │ └── datadog_list_all_monitors.py │ ├── datadog_list_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_list_metrics.json │ │ └── datadog_list_metrics.py │ ├── datadog_mute_or_unmute_alerts/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_mute_or_unmute_alerts.json │ │ └── datadog_mute_or_unmute_alerts.py │ ├── datadog_query_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_query_metrics.json │ │ └── datadog_query_metrics.py │ ├── datadog_schedule_downtime/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── datadog_schedule_downtime.json │ │ └── datadog_schedule_downtime.py │ └── datadog_search_monitors/ │ ├── README.md │ ├── __init__.py │ ├── datadog_search_monitors.json │ └── datadog_search_monitors.py ├── Docs/ │ └── README.md ├── ElasticSearch/ │ ├── .gitignore │ ├── Elasticsearch_Rolling_Restart.ipynb │ ├── Elasticsearch_Rolling_Restart.json │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── elasticsearch_check_health_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_check_health_status.json │ │ └── elasticsearch_check_health_status.py │ ├── elasticsearch_check_large_index_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_check_large_index_size.json │ │ └── elasticsearch_check_large_index_size.py │ ├── elasticsearch_compare_cluster_disk_size_to_threshold/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_compare_cluster_disk_size_to_threshold.json │ │ └── elasticsearch_compare_cluster_disk_size_to_threshold.py │ ├── elasticsearch_delete_unassigned_shards/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_delete_unassigned_shards.json │ │ └── elasticsearch_delete_unassigned_shards.py │ ├── elasticsearch_disable_shard_allocation/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_disable_shard_allocation.json │ │ └── elasticsearch_disable_shard_allocation.py │ ├── elasticsearch_enable_shard_allocation/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_enable_shard_allocation.json │ │ └── elasticsearch_enable_shard_allocation.py │ ├── elasticsearch_get_cluster_statistics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_get_cluster_statistics.json │ │ └── elasticsearch_get_cluster_statistics.py │ ├── elasticsearch_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_get_handle.json │ │ └── elasticsearch_get_handle.py │ ├── elasticsearch_get_index_health/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_get_index_health.json │ │ └── elasticsearch_get_index_health.py │ ├── elasticsearch_list_allocations/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_list_allocations.json │ │ └── elasticsearch_list_allocations.py │ ├── elasticsearch_list_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── elasticsearch_list_nodes.json │ │ └── elasticsearch_list_nodes.py │ └── elasticsearch_search_query/ │ ├── README.md │ ├── __init__.py │ ├── elasticsearch_search_query.json │ └── elasticsearch_search_query.py ├── GCP/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── gcp_add_lifecycle_policy_to_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_add_lifecycle_policy_to_bucket.json │ │ └── gcp_add_lifecycle_policy_to_bucket.py │ ├── gcp_add_member_to_iam_role/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_add_member_to_iam_role.json │ │ └── gcp_add_member_to_iam_role.py │ ├── gcp_add_role_to_service_account/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_add_role_to_service_account.json │ │ └── gcp_add_role_to_service_account.py │ ├── gcp_create_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_create_bucket.json │ │ └── gcp_create_bucket.py │ ├── gcp_create_disk_snapshot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_create_disk_snapshot.json │ │ └── gcp_create_disk_snapshot.py │ ├── gcp_create_filestore_instance/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_create_filestore_instance.json │ │ └── gcp_create_filestore_instance.py │ ├── gcp_create_gke_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_create_gke_cluster.json │ │ └── gcp_create_gke_cluster.py │ ├── gcp_create_service_account/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_create_service_account.json │ │ └── gcp_create_service_account.py │ ├── gcp_delete_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_delete_bucket.json │ │ └── gcp_delete_bucket.py │ ├── gcp_delete_filestore_instance/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_delete_filestore_instance.json │ │ └── gcp_delete_filestore_instance.py │ ├── gcp_delete_object_from_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_delete_object_from_bucket.json │ │ └── gcp_delete_object_from_bucket.py │ ├── gcp_delete_service_account/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_delete_service_account.json │ │ └── gcp_delete_service_account.py │ ├── gcp_describe_gke_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_describe_gke_cluster.json │ │ └── gcp_describe_gke_cluster.py │ ├── gcp_fetch_objects_from_bucket/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_fetch_objects_from_bucket.json │ │ └── gcp_fetch_objects_from_bucket.py │ ├── gcp_get_buckets_without_lifecycle_policies/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_get_buckets_without_lifecycle_policies.json │ │ └── gcp_get_buckets_without_lifecycle_policies.py │ ├── gcp_get_forwarding_rules_details/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_get_forwarding_rules_details.json │ │ └── gcp_get_forwarding_rules_details.py │ ├── gcp_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_get_handle.json │ │ └── gcp_get_handle.py │ ├── gcp_get_instances_without_label/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_get_instances_without_label.json │ │ └── gcp_get_instances_without_label.py │ ├── gcp_get_unused_backend_services/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_get_unused_backend_services.json │ │ └── gcp_get_unused_backend_services.py │ ├── gcp_list_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_buckets.json │ │ └── gcp_list_buckets.py │ ├── gcp_list_compute_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_compute_instances.json │ │ └── gcp_list_compute_instances.py │ ├── gcp_list_compute_instances_by_label/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_compute_instances_by_label.json │ │ └── gcp_list_compute_instances_by_label.py │ ├── gcp_list_compute_instances_by_vpc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_compute_instances_by_vpc.json │ │ └── gcp_list_compute_instances_by_vpc.py │ ├── gcp_list_gke_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_gke_cluster.json │ │ └── gcp_list_gke_cluster.py │ ├── gcp_list_nodes_in_gke_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_nodes_in_gke_cluster.json │ │ └── gcp_list_nodes_in_gke_cluster.py │ ├── gcp_list_public_buckets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_public_buckets.json │ │ └── gcp_list_public_buckets.py │ ├── gcp_list_secrets/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_secrets.json │ │ └── gcp_list_secrets.py │ ├── gcp_list_service_accounts/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_service_accounts.json │ │ └── gcp_list_service_accounts.py │ ├── gcp_list_vms_access/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_list_vms_access.json │ │ └── gcp_list_vms_access.py │ ├── gcp_remove_member_from_iam_role/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_remove_member_from_iam_role.json │ │ └── gcp_remove_member_from_iam_role.py │ ├── gcp_remove_role_from_service_account/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_remove_role_from_service_account.json │ │ └── gcp_remove_role_from_service_account.py │ ├── gcp_remove_user_role/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_remove_user_role.json │ │ └── gcp_remove_user_role.py │ ├── gcp_resize_gke_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_resize_gke_cluster.json │ │ └── gcp_resize_gke_cluster.py │ ├── gcp_restart_compute_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_restart_compute_instances.json │ │ └── gcp_restart_compute_instances.py │ ├── gcp_restore_disk_from_snapshot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_restore_disk_from_snapshot.json │ │ └── gcp_restore_disk_from_snapshot.py │ ├── gcp_save_csv_to_google_sheets_v1/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_save_csv_to_google_sheets_v1.json │ │ └── gcp_save_csv_to_google_sheets_v1.py │ ├── gcp_stop_compute_instances/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── gcp_stop_compute_instances.json │ │ └── gcp_stop_compute_instances.py │ └── gcp_upload_file_to_bucket/ │ ├── README.md │ ├── __init__.py │ ├── gcp_upload_file_to_bucket.json │ └── gcp_upload_file_to_bucket.py ├── Github/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── github_assign_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_assign_issue.json │ │ └── github_assign_issue.py │ ├── github_close_pull_request/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_close_pull_request.json │ │ └── github_close_pull_request.py │ ├── github_count_stars/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_count_stars.json │ │ └── github_count_stars.py │ ├── github_create_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_create_issue.json │ │ └── github_create_issue.py │ ├── github_create_team/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_create_team.json │ │ └── github_create_team.py │ ├── github_delete_branch/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_delete_branch.json │ │ └── github_delete_branch.py │ ├── github_get_branch/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_branch.json │ │ └── github_get_branch.py │ ├── github_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_handle.json │ │ └── github_get_handle.py │ ├── github_get_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_issue.json │ │ └── github_get_issue.py │ ├── github_get_open_branches/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_open_branches.json │ │ └── github_get_open_branches.py │ ├── github_get_open_pull_requests/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_open_pull_requests.json │ │ └── github_get_open_pull_requests.py │ ├── github_get_pull_request/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_pull_request.json │ │ └── github_get_pull_request.py │ ├── github_get_team/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_team.json │ │ └── github_get_team.py │ ├── github_get_user/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_get_user.json │ │ └── github_get_user.py │ ├── github_invite_user_to_org/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_invite_user_to_org.json │ │ └── github_invite_user_to_org.py │ ├── github_issue_comment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_issue_comment.json │ │ └── github_issue_comment.py │ ├── github_list_open_issues/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_open_issues.json │ │ └── github_list_open_issues.py │ ├── github_list_org_members/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_org_members.json │ │ └── github_list_org_members.py │ ├── github_list_pull_request_commits/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_pull_request_commits.json │ │ └── github_list_pull_request_commits.py │ ├── github_list_pull_request_reviewers/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_pull_request_reviewers.json │ │ └── github_list_pull_request_reviewers.py │ ├── github_list_pull_requests/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_pull_requests.json │ │ └── github_list_pull_requests.py │ ├── github_list_stale_issues/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_stale_issues.json │ │ └── github_list_stale_issues.py │ ├── github_list_stale_pull_requests/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_stale_pull_requests.json │ │ └── github_list_stale_pull_requests.py │ ├── github_list_stargazers/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_stargazers.json │ │ └── github_list_stargazers.py │ ├── github_list_team_members/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_team_members.json │ │ └── github_list_team_members.py │ ├── github_list_team_repos/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_team_repos.json │ │ └── github_list_team_repos.py │ ├── github_list_teams_in_org/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_teams_in_org.json │ │ └── github_list_teams_in_org.py │ ├── github_list_webhooks/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_list_webhooks.json │ │ └── github_list_webhooks.py │ ├── github_merge_pull_request/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── github_merge_pull_request.json │ │ └── github_merge_pull_request.py │ └── github_remove_member_from_org/ │ ├── README.md │ ├── __init__.py │ ├── github_remove_member_from_org.json │ └── github_remove_member_from_org.py ├── Grafana/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── grafana_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── grafana_get_handle.json │ │ └── grafana_get_handle.py │ └── grafana_list_alerts/ │ ├── README.md │ ├── __init__.py │ ├── grafana_list_alerts.json │ └── grafana_list_alerts.py ├── Hadoop/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── hadoop_get_cluster_apps/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── hadoop_get_cluster_apps.json │ │ └── hadoop_get_cluster_apps.py │ ├── hadoop_get_cluster_appstatistics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── hadoop_get_cluster_appstatistics.json │ │ └── hadoop_get_cluster_appstatistics.py │ ├── hadoop_get_cluster_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── hadoop_get_cluster_metrics.json │ │ └── hadoop_get_cluster_metrics.py │ ├── hadoop_get_cluster_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── hadoop_get_cluster_nodes.json │ │ └── hadoop_get_cluster_nodes.py │ └── hadoop_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── hadoop_get_handle.json │ └── hadoop_get_handle.py ├── Jenkins/ │ ├── Fetch_Jenkins_Build_Logs.ipynb │ ├── Fetch_Jenkins_Build_Logs.json │ ├── README.md │ └── legos/ │ ├── __init__.py │ ├── jenkins_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jenkins_get_handle.json │ │ └── jenkins_get_handle.py │ ├── jenkins_get_logs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jenkins_get_logs.json │ │ └── jenkins_get_logs.py │ └── jenkins_get_plugins/ │ ├── README.md │ ├── __init__.py │ ├── jenkins_get_plugins.json │ └── jenkins_get_plugins.py ├── Jira/ │ ├── README.md │ ├── __init__.py │ ├── jira_visualize_time_to_resolution.ipynb │ ├── jira_visualize_time_to_resolution.json │ └── legos/ │ ├── __init__.py │ ├── jira_add_comment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_add_comment.json │ │ └── jira_add_comment.py │ ├── jira_assign_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_assign_issue.json │ │ └── jira_assign_issue.py │ ├── jira_create_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_create_issue.json │ │ └── jira_create_issue.py │ ├── jira_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_get_handle.json │ │ └── jira_get_handle.py │ ├── jira_get_issue/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_get_issue.json │ │ └── jira_get_issue.py │ ├── jira_get_issue_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_get_issue_status.json │ │ └── jira_get_issue_status.py │ ├── jira_issue_change_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── jira_issue_change_status.json │ │ └── jira_issue_change_status.py │ └── jira_search_issue/ │ ├── README.md │ ├── __init__.py │ ├── jira_search_issue.json │ └── jira_search_issue.py ├── Kafka/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── kafka_broker_health_check/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_broker_health_check.json │ │ └── kafka_broker_health_check.py │ ├── kafka_check_in_sync_replicas/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_check_in_sync_replicas.json │ │ └── kafka_check_in_sync_replicas.py │ ├── kafka_check_lag_change/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_check_lag_change.json │ │ └── kafka_check_lag_change.py │ ├── kafka_check_offline_partitions/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_check_offline_partitions.json │ │ └── kafka_check_offline_partitions.py │ ├── kafka_check_replicas_available/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_check_replicas_available.json │ │ └── kafka_check_replicas_available.py │ ├── kafka_get_committed_messages_count/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_get_committed_messages_count.json │ │ └── kafka_get_committed_messages_count.py │ ├── kafka_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_get_handle.json │ │ └── kafka_get_handle.py │ ├── kafka_get_topic_health/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_get_topic_health.json │ │ └── kafka_get_topic_health.py │ ├── kafka_get_topics_with_lag/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_get_topics_with_lag.json │ │ └── kafka_get_topics_with_lag.py │ ├── kafka_publish_message/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_publish_message.json │ │ └── kafka_publish_message.py │ ├── kafka_run_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── kafka_run_command.json │ │ └── kafka_run_command.py │ └── kafka_topic_partition_health_check/ │ ├── README.md │ ├── __init__.py │ ├── kafka_topic_partition_health_check.json │ └── kafka_topic_partition_health_check.py ├── Keycloak/ │ ├── __init__.py │ └── legos/ │ ├── keycloak_get_audit_report/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── keycloak_get_audit_report.json │ │ └── keycloak_get_audit_report.py │ ├── keycloak_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── keycloak_get_handle.json │ │ └── keycloak_get_handle.py │ └── keycloak_get_service_health/ │ ├── README.md │ ├── __init__.py │ ├── keycloak_get_service_health.json │ └── keycloak_get_service_health.py ├── Kubernetes/ │ ├── Delete_Evicted_Pods_From_Namespaces.ipynb │ ├── Delete_Evicted_Pods_From_Namespaces.json │ ├── Get_Kube_System_Config_Map.ipynb │ ├── Get_Kube_System_Config_Map.json │ ├── K8S_Delete_Pods_From_Failing_Jobs.ipynb │ ├── K8S_Delete_Pods_From_Failing_Jobs.json │ ├── K8S_Deployment_with_multiple_restarts.ipynb │ ├── K8S_Deployment_with_multiple_restarts.json │ ├── K8S_Get_Candidate_Nodes_Given_Config.ipynb │ ├── K8S_Get_Candidate_Nodes_Given_Config.json │ ├── K8S_Log_Healthcheck.ipynb │ ├── K8S_Log_Healthcheck.json │ ├── K8S_Pod_Stuck_In_CrashLoopBack_State.ipynb │ ├── K8S_Pod_Stuck_In_CrashLoopBack_State.json │ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State.ipynb │ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State.json │ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State_with_genai.ipynb │ ├── K8S_Pod_Stuck_In_ImagePullBackOff_State_with_genai.json │ ├── K8S_Pod_Stuck_In_Terminating_State.ipynb │ ├── K8S_Pod_Stuck_In_Terminating_State.json │ ├── README.md │ ├── Resize_List_of_PVCs.ipynb │ ├── Resize_List_of_PVCs.json │ ├── Resize_PVC.ipynb │ ├── Resize_PVC.json │ ├── Rollback_k8s_Deployment_and_Update_Jira.ipynb │ ├── Rollback_k8s_Deployment_and_Update_Jira.json │ ├── __init__.py │ └── legos/ │ ├── README.md │ ├── __init__.py │ ├── k8s_add_node_to_cluster/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_add_node_to_cluster.json │ │ └── k8s_add_node_to_cluster.py │ ├── k8s_change_pvc_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_change_pvc_size.json │ │ └── k8s_change_pvc_size.py │ ├── k8s_check_cronjob_pod_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_check_cronjob_pod_status.json │ │ └── k8s_check_cronjob_pod_status.py │ ├── k8s_check_service_pvc_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_check_service_pvc_utilization.json │ │ └── k8s_check_service_pvc_utilization.py │ ├── k8s_check_service_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_check_service_status.json │ │ └── k8s_check_service_status.py │ ├── k8s_check_worker_cpu_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_check_worker_cpu_utilization.json │ │ └── k8s_check_worker_cpu_utilization.py │ ├── k8s_delete_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_delete_pod.json │ │ └── k8s_delete_pod.py │ ├── k8s_delete_pvc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_delete_pvc.json │ │ └── k8s_delete_pvc.py │ ├── k8s_describe_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_describe_node.json │ │ └── k8s_describe_node.py │ ├── k8s_describe_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_describe_pod.json │ │ └── k8s_describe_pod.py │ ├── k8s_detect_service_crashes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_detect_service_crashes.json │ │ └── k8s_detect_service_crashes.py │ ├── k8s_exec_command_on_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_exec_command_on_pod.json │ │ └── k8s_exec_command_on_pod.py │ ├── k8s_exec_command_on_pods_and_filter/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_exec_command_on_pods_and_filter.json │ │ └── k8s_exec_command_on_pods_and_filter.py │ ├── k8s_execute_helm_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_execute_helm_command.json │ │ └── k8s_execute_helm_command.py │ ├── k8s_execute_local_script_on_a_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_execute_local_script_on_a_pod.json │ │ └── k8s_execute_local_script_on_a_pod.py │ ├── k8s_gather_data_for_pod_troubleshoot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_gather_data_for_pod_troubleshoot.json │ │ └── k8s_gather_data_for_pod_troubleshoot.py │ ├── k8s_gather_data_for_service_troubleshoot/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_gather_data_for_service_troubleshoot.json │ │ └── k8s_gather_data_for_service_troubleshoot.py │ ├── k8s_get_all_evicted_pods_from_namespace/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_all_evicted_pods_from_namespace.json │ │ └── k8s_get_all_evicted_pods_from_namespace.py │ ├── k8s_get_all_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_all_pods.json │ │ └── k8s_get_all_pods.py │ ├── k8s_get_all_resources_utilization_info/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_all_resources_utilization_info.json │ │ └── k8s_get_all_resources_utilization_info.py │ ├── k8s_get_candidate_nodes_for_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_candidate_nodes_for_pods.json │ │ └── k8s_get_candidate_nodes_for_pods.py │ ├── k8s_get_cluster_health/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_cluster_health.json │ │ └── k8s_get_cluster_health.py │ ├── k8s_get_config_map_kube_system/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_config_map_kube_system.json │ │ └── k8s_get_config_map_kube_system.py │ ├── k8s_get_deployment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_deployment.json │ │ └── k8s_get_deployment.py │ ├── k8s_get_deployment_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_deployment_status.json │ │ └── k8s_get_deployment_status.py │ ├── k8s_get_error_pods_from_all_jobs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_error_pods_from_all_jobs.json │ │ └── k8s_get_error_pods_from_all_jobs.py │ ├── k8s_get_expiring_cluster_certificate/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_expiring_cluster_certificate.json │ │ └── k8s_get_expiring_cluster_certificate.py │ ├── k8s_get_expiring_tls_secret_certificates/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_expiring_tls_secret_certificates.json │ │ └── k8s_get_expiring_tls_secret_certificates.py │ ├── k8s_get_failed_deployments/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_failed_deployments.json │ │ └── k8s_get_failed_deployments.py │ ├── k8s_get_frequently_restarting_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_frequently_restarting_pods.json │ │ └── k8s_get_frequently_restarting_pods.py │ ├── k8s_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_handle.json │ │ └── k8s_get_handle.py │ ├── k8s_get_healthy_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_healthy_pods.json │ │ └── k8s_get_healthy_pods.py │ ├── k8s_get_memory_utilization_of_services/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_memory_utilization_of_services.json │ │ └── k8s_get_memory_utilization_of_services.py │ ├── k8s_get_node_status_and_resource_utilization/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_node_status_and_resource_utilization.json │ │ └── k8s_get_node_status_and_resource_utilization.py │ ├── k8s_get_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_nodes.json │ │ └── k8s_get_nodes.py │ ├── k8s_get_nodes_pressure/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_nodes_pressure.json │ │ └── k8s_get_nodes_pressure.py │ ├── k8s_get_nodes_with_insufficient_resources/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_nodes_with_insufficient_resources.json │ │ └── k8s_get_nodes_with_insufficient_resources.py │ ├── k8s_get_offline_nodes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_offline_nodes.json │ │ └── k8s_get_offline_nodes.py │ ├── k8s_get_oomkilled_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_oomkilled_pods.json │ │ └── k8s_get_oomkilled_pods.py │ ├── k8s_get_pending_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pending_pods.json │ │ └── k8s_get_pending_pods.py │ ├── k8s_get_pod_config/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pod_config.json │ │ └── k8s_get_pod_config.py │ ├── k8s_get_pod_logs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pod_logs.json │ │ └── k8s_get_pod_logs.py │ ├── k8s_get_pod_logs_and_filter/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pod_logs_and_filter.json │ │ └── k8s_get_pod_logs_and_filter.py │ ├── k8s_get_pod_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pod_status.json │ │ └── k8s_get_pod_status.py │ ├── k8s_get_pods_attached_to_pvc/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_attached_to_pvc.json │ │ └── k8s_get_pods_attached_to_pvc.py │ ├── k8s_get_pods_in_crashloopbackoff_state/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_in_crashloopbackoff_state.json │ │ └── k8s_get_pods_in_crashloopbackoff_state.py │ ├── k8s_get_pods_in_imagepullbackoff_state/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_in_imagepullbackoff_state.json │ │ └── k8s_get_pods_in_imagepullbackoff_state.py │ ├── k8s_get_pods_in_not_running_state/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_in_not_running_state.json │ │ └── k8s_get_pods_in_not_running_state.py │ ├── k8s_get_pods_in_terminating_state/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_in_terminating_state.json │ │ └── k8s_get_pods_in_terminating_state.py │ ├── k8s_get_pods_with_high_restart/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_pods_with_high_restart.json │ │ └── k8s_get_pods_with_high_restart.py │ ├── k8s_get_service_images/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_service_images.json │ │ └── k8s_get_service_images.py │ ├── k8s_get_service_with_no_associated_endpoints/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_service_with_no_associated_endpoints.json │ │ └── k8s_get_service_with_no_associated_endpoints.py │ ├── k8s_get_services/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_services.json │ │ └── k8s_get_services.py │ ├── k8s_get_unbound_pvcs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_unbound_pvcs.json │ │ └── k8s_get_unbound_pvcs.py │ ├── k8s_get_versioning_info/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_get_versioning_info.json │ │ └── k8s_get_versioning_info.py │ ├── k8s_kubectl_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_command.json │ │ └── k8s_kubectl_command.py │ ├── k8s_kubectl_config_set_context/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_config_set_context.json │ │ └── k8s_kubectl_config_set_context.py │ ├── k8s_kubectl_config_view/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_config_view.json │ │ └── k8s_kubectl_config_view.py │ ├── k8s_kubectl_delete_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_delete_pod.json │ │ └── k8s_kubectl_delete_pod.py │ ├── k8s_kubectl_describe_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_describe_node.json │ │ └── k8s_kubectl_describe_node.py │ ├── k8s_kubectl_describe_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_describe_pod.json │ │ └── k8s_kubectl_describe_pod.py │ ├── k8s_kubectl_drain_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_drain_node.json │ │ └── k8s_kubectl_drain_node.py │ ├── k8s_kubectl_exec_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_exec_command.json │ │ └── k8s_kubectl_exec_command.py │ ├── k8s_kubectl_get_api_resources/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_get_api_resources.json │ │ └── k8s_kubectl_get_api_resources.py │ ├── k8s_kubectl_get_logs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_get_logs.json │ │ └── k8s_kubectl_get_logs.py │ ├── k8s_kubectl_get_service_namespace/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_get_service_namespace.json │ │ └── k8s_kubectl_get_service_namespace.py │ ├── k8s_kubectl_list_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_list_pods.json │ │ └── k8s_kubectl_list_pods.py │ ├── k8s_kubectl_patch_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_patch_pod.json │ │ └── k8s_kubectl_patch_pod.py │ ├── k8s_kubectl_rollout_deployment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_rollout_deployment.json │ │ └── k8s_kubectl_rollout_deployment.py │ ├── k8s_kubectl_scale_deployment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_scale_deployment.json │ │ └── k8s_kubectl_scale_deployment.py │ ├── k8s_kubectl_show_metrics_node/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_show_metrics_node.json │ │ └── k8s_kubectl_show_metrics_node.py │ ├── k8s_kubectl_show_metrics_pod/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_kubectl_show_metrics_pod.json │ │ └── k8s_kubectl_show_metrics_pod.py │ ├── k8s_list_all_matching_pods/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_list_all_matching_pods.json │ │ └── k8s_list_all_matching_pods.py │ ├── k8s_list_pvcs/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_list_pvcs.json │ │ └── k8s_list_pvcs.py │ ├── k8s_measure_worker_node_network_bandwidth/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_measure_worker_node_network_bandwidth.json │ │ └── k8s_measure_worker_node_network_bandwidth.py │ ├── k8s_remove_pod_from_deployment/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── k8s_remove_pod_from_deployment.json │ │ └── k8s_remove_pod_from_deployment.py │ └── k8s_update_command_in_pod_spec/ │ ├── README.md │ ├── __init__.py │ ├── k8s_update_command_in_pod_spec.json │ └── k8s_update_command_in_pod_spec.py ├── License ├── Mantishub/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ └── mantishub_get_handle/ │ ├── README.md │ ├── mantishub_get_handle.json │ └── mantishub_get_handle.py ├── Mongo/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── mongodb_add_new_field_in_collections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_add_new_field_in_collections.json │ │ └── mongodb_add_new_field_in_collections.py │ ├── mongodb_aggregate_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_aggregate_command.json │ │ └── mongodb_aggregate_command.py │ ├── mongodb_atlas_cluster_backup/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_atlas_cluster_backup.json │ │ └── mongodb_atlas_cluster_backup.py │ ├── mongodb_check_large_index_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_check_large_index_size.json │ │ └── mongodb_check_large_index_size.py │ ├── mongodb_compare_disk_size_to_threshold/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_compare_disk_size_to_threshold.json │ │ └── mongodb_compare_disk_size_to_threshold.py │ ├── mongodb_count_documents/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_count_documents.json │ │ └── mongodb_count_documents.py │ ├── mongodb_create_collection/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_create_collection.json │ │ └── mongodb_create_collection.py │ ├── mongodb_create_database/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_create_database.json │ │ └── mongodb_create_database.py │ ├── mongodb_delete_collection/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_delete_collection.json │ │ └── mongodb_delete_collection.py │ ├── mongodb_delete_database/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_delete_database.json │ │ └── mongodb_delete_database.py │ ├── mongodb_delete_document/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_delete_document.json │ │ └── mongodb_delete_document.py │ ├── mongodb_distinct_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_distinct_command.json │ │ └── mongodb_distinct_command.py │ ├── mongodb_find_document/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_find_document.json │ │ └── mongodb_find_document.py │ ├── mongodb_find_one/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_find_one.json │ │ └── mongodb_find_one.py │ ├── mongodb_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_get_handle.json │ │ └── mongodb_get_handle.py │ ├── mongodb_get_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_get_metrics.json │ │ └── mongodb_get_metrics.py │ ├── mongodb_get_replica_set/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_get_replica_set.json │ │ └── mongodb_get_replica_set.py │ ├── mongodb_get_server_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_get_server_status.json │ │ └── mongodb_get_server_status.py │ ├── mongodb_get_write_conflicts/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_get_write_conflicts.json │ │ └── mongodb_get_write_conflicts.py │ ├── mongodb_insert_document/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_insert_document.json │ │ └── mongodb_insert_document.py │ ├── mongodb_kill_queries/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_kill_queries.json │ │ └── mongodb_kill_queries.py │ ├── mongodb_list_collections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_list_collections.json │ │ └── mongodb_list_collections.py │ ├── mongodb_list_databases/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_list_databases.json │ │ └── mongodb_list_databases.py │ ├── mongodb_list_queries/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_list_queries.json │ │ └── mongodb_list_queries.py │ ├── mongodb_read_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_read_query.json │ │ └── mongodb_read_query.py │ ├── mongodb_remove_field_in_collections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_remove_field_in_collections.json │ │ └── mongodb_remove_field_in_collections.py │ ├── mongodb_rename_database/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_rename_database.json │ │ └── mongodb_rename_database.py │ ├── mongodb_update_document/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mongodb_update_document.json │ │ └── mongodb_update_document.py │ └── mongodb_write_query/ │ ├── README.md │ ├── __init__.py │ ├── mongodb_write_query.json │ └── mongodb_write_query.py ├── MsSQL/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── mssql_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mssql_get_handle.json │ │ └── mssql_get_handle.py │ ├── mssql_read_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mssql_read_query.json │ │ └── mssql_read_query.py │ └── mssql_write_query/ │ ├── README.md │ ├── __init__.py │ ├── mssql_write_query.json │ └── mssql_write_query.py ├── MySQL/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── mysql_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mysql_get_handle.json │ │ └── mysql_get_handle.py │ ├── mysql_get_long_run_queries/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mysql_get_long_run_queries.json │ │ └── mysql_get_long_run_queries.py │ ├── mysql_kill_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mysql_kill_query.json │ │ └── mysql_kill_query.py │ ├── mysql_read_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── mysql_read_query.json │ │ └── mysql_read_query.py │ └── mysql_write_query/ │ ├── README.md │ ├── __init__.py │ ├── mysql_write_query.json │ └── mysql_write_query.py ├── Netbox/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── netbox_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── netbox_get_handle.json │ │ └── netbox_get_handle.py │ └── netbox_list_devices/ │ ├── README.md │ ├── __init__.py │ ├── netbox_list_devices.json │ └── netbox_list_devices.py ├── Nomad/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── nomad_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── nomad_get_handle.json │ │ └── nomad_get_handle.py │ └── nomad_list_jobs/ │ ├── README.md │ ├── __init__.py │ ├── nomad_list_jobs.json │ └── nomad_list_jobs.py ├── Opsgenie/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ └── opsgenie_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── opsgenie_get_handle.json │ └── opsgenie_get_handle.py ├── Pingdom/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── pingdom_create_new_maintenance_window/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_create_new_maintenance_window.json │ │ └── pingdom_create_new_maintenance_window.py │ ├── pingdom_do_single_check/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_do_single_check.json │ │ └── pingdom_do_single_check.py │ ├── pingdom_get_analysis/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_analysis.json │ │ └── pingdom_get_analysis.py │ ├── pingdom_get_checkids/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_checkids.json │ │ └── pingdom_get_checkids.py │ ├── pingdom_get_checkids_by_name/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_checkids_by_name.json │ │ └── pingdom_get_checkids_by_name.py │ ├── pingdom_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_handle.json │ │ └── pingdom_get_handle.py │ ├── pingdom_get_maintenance/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_maintenance.json │ │ └── pingdom_get_maintenance.py │ ├── pingdom_get_results/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_results.json │ │ └── pingdom_get_results.py │ ├── pingdom_get_tmscheck/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_get_tmscheck.json │ │ └── pingdom_get_tmscheck.py │ ├── pingdom_pause_or_unpause_checkids/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── pingdom_pause_or_unpause_checkids.json │ │ └── pingdom_pause_or_unpause_checkids.py │ └── pingdom_traceroute/ │ ├── README.md │ ├── __init__.py │ ├── pingdom_traceroute.json │ └── pingdom_traceroute.py ├── Postgresql/ │ ├── Postgresql_Display_Long_Running.ipynb │ ├── Postgresql_Display_Long_Running.json │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── postgres_calculate_bloat/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgres_calculate_bloat.json │ │ └── postgres_calculate_bloat.py │ ├── postgresql_call_function/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_call_function.json │ │ └── postgresql_call_function.py │ ├── postgresql_check_active_connections/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_check_active_connections.json │ │ └── postgresql_check_active_connections.py │ ├── postgresql_check_locks/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_check_locks.json │ │ └── postgresql_check_locks.py │ ├── postgresql_check_unused_indexes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_check_unused_indexes.json │ │ └── postgresql_check_unused_indexes.py │ ├── postgresql_create_table/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_create_table.json │ │ └── postgresql_create_table.py │ ├── postgresql_delete_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_delete_query.json │ │ └── postgresql_delete_query.py │ ├── postgresql_get_cache_hit_ratio/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_get_cache_hit_ratio.json │ │ └── postgresql_get_cache_hit_ratio.py │ ├── postgresql_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_get_handle.json │ │ └── postgresql_get_handle.py │ ├── postgresql_get_index_usage/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_get_index_usage.json │ │ └── postgresql_get_index_usage.py │ ├── postgresql_get_server_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_get_server_status.json │ │ └── postgresql_get_server_status.py │ ├── postgresql_handling_transaction/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_handling_transaction.json │ │ └── postgresql_handling_transaction.py │ ├── postgresql_long_running_queries/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_long_running_queries.json │ │ └── postgresql_long_running_queries.py │ ├── postgresql_read_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_read_query.json │ │ └── postgresql_read_query.py │ ├── postgresql_show_tables/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_show_tables.json │ │ └── postgresql_show_tables.py │ ├── postgresql_stored_procedures/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── postgresql_stored_procedures.json │ │ └── postgresql_stored_procedures.py │ └── postgresql_write_query/ │ ├── README.md │ ├── __init__.py │ ├── postgresql_write_query.json │ └── postgresql_write_query.py ├── Prometheus/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── prometheus_alerts_list/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── prometheus_alerts_list.json │ │ └── prometheus_alerts_list.py │ ├── prometheus_get_all_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── prometheus_get_all_metrics.json │ │ └── prometheus_get_all_metrics.py │ ├── prometheus_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── prometheus_get_handle.json │ │ └── prometheus_get_handle.py │ └── prometheus_get_metric_statistics/ │ ├── README.md │ ├── prometheus_get_metric_statistics.json │ └── prometheus_get_metric_statistics.py ├── README.md ├── README_extending_docker.md ├── Redis/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── redis_delete_all_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_delete_all_keys.json │ │ └── redis_delete_all_keys.py │ ├── redis_delete_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_delete_keys.json │ │ └── redis_delete_keys.py │ ├── redis_delete_stale_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_delete_stale_keys.json │ │ └── redis_delete_stale_keys.py │ ├── redis_get_cluster_health/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_get_cluster_health.json │ │ └── redis_get_cluster_health.py │ ├── redis_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_get_handle.json │ │ └── redis_get_handle.py │ ├── redis_get_keys_count/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_get_keys_count.json │ │ └── redis_get_keys_count.py │ ├── redis_get_metrics/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── redis_get_metrics.json │ │ └── redis_get_metrics.py │ └── redis_list_large_keys/ │ ├── README.md │ ├── __init__.py │ ├── redis_list_large_keys.json │ └── redis_list_large_keys.py ├── Rest/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── rest_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── rest_get_handle.json │ │ └── rest_get_handle.py │ └── rest_methods/ │ ├── README.md │ ├── __init__.py │ ├── rest_methods.json │ └── rest_methods.py ├── SSH/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── ssh_execute_remote_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_execute_remote_command.json │ │ └── ssh_execute_remote_command.py │ ├── ssh_find_large_files/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_find_large_files.json │ │ └── ssh_find_large_files.py │ ├── ssh_get_ec2_instances_with_low_available_disk_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_get_ec2_instances_with_low_available_disk_size.json │ │ └── ssh_get_ec2_instances_with_low_available_disk_size.py │ ├── ssh_get_ec2_instances_with_low_memory_size/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_get_ec2_instances_with_low_memory_size.json │ │ └── ssh_get_ec2_instances_with_low_memory_size.py │ ├── ssh_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_get_handle.json │ │ └── ssh_get_handle.py │ ├── ssh_get_hosts_with_low_disk_latency/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_get_hosts_with_low_disk_latency.json │ │ └── ssh_get_hosts_with_low_disk_latency.py │ ├── ssh_restart_service_using_sysctl/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── ssh_restart_service_using_sysctl.json │ │ └── ssh_restart_service_using_sysctl.py │ └── ssh_scp/ │ ├── README.md │ ├── __init__.py │ ├── ssh_scp.json │ └── ssh_scp.py ├── SalesForce/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── salesforce_assign_case/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_assign_case.json │ │ └── salesforce_assign_case.py │ ├── salesforce_case_change_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_case_change_status.json │ │ └── salesforce_case_change_status.py │ ├── salesforce_create_case/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_create_case.json │ │ └── salesforce_create_case.py │ ├── salesforce_delete_case/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_delete_case.json │ │ └── salesforce_delete_case.py │ ├── salesforce_get_case/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_get_case.json │ │ └── salesforce_get_case.py │ ├── salesforce_get_case_status/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_get_case_status.json │ │ └── salesforce_get_case_status.py │ ├── salesforce_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_get_handle.json │ │ └── salesforce_get_handle.py │ ├── salesforce_search_case/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── salesforce_search_case.json │ │ └── salesforce_search_case.py │ └── salesforce_update_case/ │ ├── README.md │ ├── __init__.py │ ├── salesforce_update_case.json │ └── salesforce_update_case.py ├── Slack/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── slack_create_channel_invite_users/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── slack_create_channel_invite_users.json │ │ └── slack_create_channel_invite_users.py │ ├── slack_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── slack_get_handle.json │ │ └── slack_get_handle.py │ ├── slack_lookup_user_by_email/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── slack_lookup_user_by_email.json │ │ └── slack_lookup_user_by_email.py │ ├── slack_post_image/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── slack_post_image.json │ │ └── slack_post_image.py │ ├── slack_post_message/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── slack_post_message.json │ │ └── slack_post_message.py │ └── slack_send_DM/ │ ├── README.md │ ├── __init__.py │ ├── slack_send_DM.json │ └── slack_send_DM.py ├── Snowflake/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── snowflake_read_query/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── snowflake_read_query.json │ │ └── snowflake_read_query.py │ └── snowflake_write_query/ │ ├── README.md │ ├── __init__.py │ ├── snowflake_write_query.json │ └── snowflake_write_query.py ├── Splunk/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ └── splunk_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── splunk_get_handle.json │ └── splunk_get_handle.py ├── Stripe/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── stripe_capture_charge/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_capture_charge.json │ │ └── stripe_capture_charge.py │ ├── stripe_close_dispute/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_close_dispute.json │ │ └── stripe_close_dispute.py │ ├── stripe_create_charge/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_create_charge.json │ │ └── stripe_create_charge.py │ ├── stripe_create_customer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_create_customer.json │ │ └── stripe_create_customer.py │ ├── stripe_create_refund/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_create_refund.json │ │ └── stripe_create_refund.py │ ├── stripe_delete_customer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_delete_customer.json │ │ └── stripe_delete_customer.py │ ├── stripe_get_all_charges/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_get_all_charges.json │ │ └── stripe_get_all_charges.py │ ├── stripe_get_all_customers/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_get_all_customers.json │ │ └── stripe_get_all_customers.py │ ├── stripe_get_all_disputes/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_get_all_disputes.json │ │ └── stripe_get_all_disputes.py │ ├── stripe_get_all_refunds/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_get_all_refunds.json │ │ └── stripe_get_all_refunds.py │ ├── stripe_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_get_handle.json │ │ └── stripe_get_handle.py │ ├── stripe_retrieve_charge/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_retrieve_charge.json │ │ └── stripe_retrieve_charge.py │ ├── stripe_retrieve_customer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_retrieve_customer.json │ │ └── stripe_retrieve_customer.py │ ├── stripe_retrieve_dispute/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_retrieve_dispute.json │ │ └── stripe_retrieve_dispute.py │ ├── stripe_retrieve_refund/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_retrieve_refund.json │ │ └── stripe_retrieve_refund.py │ ├── stripe_update_charge/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_update_charge.json │ │ └── stripe_update_charge.py │ ├── stripe_update_customer/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_update_customer.json │ │ └── stripe_update_customer.py │ ├── stripe_update_dispute/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── stripe_update_dispute.json │ │ └── stripe_update_dispute.py │ └── stripe_update_refund/ │ ├── README.md │ ├── __init__.py │ ├── stripe_update_refund.json │ └── stripe_update_refund.py ├── Terraform/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── terraform_exec_command/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── terraform_exec_command.json │ │ └── terraform_exec_command.py │ └── terraform_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── terraform_get_handle.json │ └── terraform_get_handle.py ├── Vault/ │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── vault_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── vault_get_handle.json │ │ └── vault_get_handle.py │ └── vault_get_service_health/ │ ├── README.md │ ├── __init__.py │ ├── vault_get_service_health.json │ └── vault_get_service_health.py ├── Zabbix/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ └── zabbix_get_handle/ │ ├── README.md │ ├── __init__.py │ ├── zabbix_get_handle.json │ └── zabbix_get_handle.py ├── _config.yml ├── all_modules_test.py ├── bin/ │ ├── add_creds.sh │ └── unskript-add-check.sh ├── build/ │ └── templates/ │ ├── Dockerfile.template │ ├── GetStarted.ipynb │ ├── Makefile.extend-docker.template │ ├── Welcome.ipynb │ └── Welcome_template.ipynb ├── generate_readme.ipynb ├── generate_readme.nbconvert.ipynb ├── helm/ │ ├── .helmignore │ ├── full/ │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── templates/ │ │ │ ├── NOTES.txt │ │ │ ├── _helpers.tpl │ │ │ ├── deployment.yaml │ │ │ ├── service.yaml │ │ │ ├── serviceaccount.yaml │ │ │ └── statefulset.yaml │ │ └── values.yaml │ └── minimal/ │ ├── Chart.yaml │ ├── README.md │ ├── templates/ │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── statefulset.yaml │ └── values.yaml ├── infra/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── infra_execute_runbook/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── infra_execute_runbook.json │ │ └── infra_execute_runbook.py │ ├── infra_workflow_done/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── infra_workflow_done.json │ │ └── infra_workflow_done.py │ ├── workflow_ss_append_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── workflow_ss_append_keys.json │ │ └── workflow_ss_append_keys.py │ ├── workflow_ss_create_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── workflow_ss_create_keys.json │ │ └── workflow_ss_create_keys.py │ ├── workflow_ss_delete_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── workflow_ss_delete_keys.json │ │ └── workflow_ss_delete_keys.py │ ├── workflow_ss_get_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── workflow_ss_get_keys.json │ │ └── workflow_ss_get_keys.py │ ├── workflow_ss_rename_keys/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── workflow_ss_rename_keys.json │ │ └── workflow_ss_rename_keys.py │ └── workflow_ss_update_keys/ │ ├── README.md │ ├── __init__.py │ ├── workflow_ss_update_keys.json │ └── workflow_ss_update_keys.py ├── lists/ │ ├── Action_list.md │ ├── action_AIRFLOW.md │ ├── action_AWS.md │ ├── action_AWS_ACM.md │ ├── action_AWS_ASG.md │ ├── action_AWS_CLI.md │ ├── action_AWS_CLOUDTRAIL.md │ ├── action_AWS_CLOUDWATCH.md │ ├── action_AWS_COST_EXPLORER.md │ ├── action_AWS_DYNAMODB.md │ ├── action_AWS_EBC.md │ ├── action_AWS_EBS.md │ ├── action_AWS_EC2.md │ ├── action_AWS_ECS.md │ ├── action_AWS_EKS.md │ ├── action_AWS_ELASTICACHE.md │ ├── action_AWS_ELASTICCACHE.md │ ├── action_AWS_ELB.md │ ├── action_AWS_EMR.md │ ├── action_AWS_IAM.md │ ├── action_AWS_LAMBDA.md │ ├── action_AWS_LOGS.md │ ├── action_AWS_NAT_GATEWAY.md │ ├── action_AWS_POSTGRES.md │ ├── action_AWS_RDS.md │ ├── action_AWS_REDSHIFT.md │ ├── action_AWS_ROUTE53.md │ ├── action_AWS_S3.md │ ├── action_AWS_SECRET_MANAGER.md │ ├── action_AWS_SQS.md │ ├── action_AWS_SSM.md │ ├── action_AWS_STS.md │ ├── action_AWS_VPC.md │ ├── action_AZURE.md │ ├── action_CHATGPT.md │ ├── action_CLOUDOPS.md │ ├── action_COST_OPT,CATEGORY_TYPE_SRE.md │ ├── action_COST_OPT.md │ ├── action_DATADOG.md │ ├── action_DATADOG_ALERTS.md │ ├── action_DATADOG_EVENT.md │ ├── action_DATADOG_INCIDENT.md │ ├── action_DATADOG_METRICS.md │ ├── action_DATADOG_MONITOR.md │ ├── action_DB.md │ ├── action_DEVOPS.md │ ├── action_EBS.md │ ├── action_ECS.md │ ├── action_ES.md │ ├── action_GCP.md │ ├── action_GCP_BUCKET.md │ ├── action_GCP_FILE_STORE.md │ ├── action_GCP_GKE.md │ ├── action_GCP_IAM.md │ ├── action_GCP_SECRET.md │ ├── action_GCP_SHEETS.md │ ├── action_GCP_STORAGE.md │ ├── action_GCP_VM.md │ ├── action_GCP_VMS.md │ ├── action_GCP_VPC.md │ ├── action_GITHUB.md │ ├── action_GITHUB_ISSUE.md │ ├── action_GITHUB_ORG.md │ ├── action_GITHUB_PR.md │ ├── action_GITHUB_REPO.md │ ├── action_GITHUB_TEAM.md │ ├── action_GITHUB_USER.md │ ├── action_GRAFANA.md │ ├── action_HADOOP.md │ ├── action_IAM.md │ ├── action_INFRA.md │ ├── action_JENKINS.md │ ├── action_JIRA.md │ ├── action_K8S.md │ ├── action_K8S_CLUSTER.md │ ├── action_K8S_KUBECTL.md │ ├── action_K8S_NAMESPACE.md │ ├── action_K8S_NODE.md │ ├── action_K8S_POD.md │ ├── action_K8S_PVC.md │ ├── action_KAFKA.md │ ├── action_MANTISHUB.md │ ├── action_MONGODB.md │ ├── action_MONGODB_CLUSTER.md │ ├── action_MONGODB_COLLECTION.md │ ├── action_MONGODB_DOCUMENT.md │ ├── action_MONGODB_QUERY.md │ ├── action_MSSQL.md │ ├── action_MSSQL_QUERY.md │ ├── action_MYSQL.md │ ├── action_MYSQL_QUERY.md │ ├── action_NETBOX.md │ ├── action_NOMAD.md │ ├── action_OPENSEARCH.md │ ├── action_PINGDOM.md │ ├── action_POSTGRESQL.md │ ├── action_POSTGRESQL_QUERY.md │ ├── action_POSTGRESQL_TABLE.md │ ├── action_PROMETHEUS.md │ ├── action_REDIS.md │ ├── action_REST.md │ ├── action_SALESFORCE.md │ ├── action_SECOPS.md │ ├── action_SLACK.md │ ├── action_SNOWFLAKE.md │ ├── action_SPLUNK.md │ ├── action_SRE.md │ ├── action_SSH.md │ ├── action_STRIPE.md │ ├── action_STRIPE_CHARGE.md │ ├── action_STRIPE_DISPUTE.md │ ├── action_STRIPE_REFUND.md │ ├── action_TERRAFORM.md │ ├── action_TROUBLESHOOTING.md │ ├── action_ZABBIX.md │ ├── runbook_CLOUDOPS.md │ ├── runbook_COST_OPT.md │ ├── runbook_DEVOPS.md │ ├── runbook_IAM.md │ ├── runbook_SECOPS.md │ ├── runbook_SRE.md │ ├── runbook_TROUBLESHOOTING.md │ └── xRunBook_list.md ├── opensearch/ │ ├── README.md │ ├── __init__.py │ └── legos/ │ ├── __init__.py │ ├── opensearch_get_handle/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── opensearch_get_handle.json │ │ └── opensearch_get_handle.py │ └── opensearch_search/ │ ├── README.md │ ├── __init__.py │ ├── opensearch_search.json │ └── opensearch_search.py ├── region_test.py ├── sanitize.py ├── suites/ │ ├── AWS_RDS.json │ ├── Cost_optimization.json │ ├── K8s_connectivity.json │ ├── K8s_pods.json │ ├── K8s_runtime.json │ ├── aws_ec2.json │ ├── aws_lambbdas.json │ └── aws_loadbalancer.json ├── templates/ │ ├── README.md │ ├── legos/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── lego.json │ │ └── lego.py │ ├── runbooks/ │ │ ├── StartHere.ipynb │ │ ├── gcp.ipynb │ │ └── k8s.ipynb │ └── scheduler.template ├── tools/ │ ├── README.md │ └── runbook-sa/ │ ├── runbook_sa.py │ └── runbook_sa.sh ├── unskript-ctl/ │ ├── DESIGN.md │ ├── README.md │ ├── add_creds.py │ ├── bash_completion_unskript_ctl.bash │ ├── config/ │ │ └── unskript_ctl_config.yaml │ ├── config_parser_test_matrix.md │ ├── creds_ui.py │ ├── diagnostics.py │ ├── diagnostics_worker.py │ ├── docs/ │ │ └── design.puml │ ├── stub_creds.json │ ├── templates/ │ │ ├── check.py.template │ │ ├── check_test.py.template │ │ ├── first_cell_content.j2 │ │ ├── last_cell_content.j2 │ │ ├── template_info_lego.j2 │ │ ├── template_script.j2 │ │ └── timeout_handler.j2 │ ├── tests/ │ │ ├── test_database.py │ │ ├── test_errors.log │ │ ├── test_notification.py │ │ └── test_unskript_factory.py │ ├── unskript-add-check.py │ ├── unskript-ctl.sh │ ├── unskript_audit_cleanup.py │ ├── unskript_ctl_config_parser.py │ ├── unskript_ctl_custom_notification.py │ ├── unskript_ctl_database.py │ ├── unskript_ctl_factory.py │ ├── unskript_ctl_main.py │ ├── unskript_ctl_notification.py │ ├── unskript_ctl_run.py │ ├── unskript_ctl_upload_session_logs.py │ ├── unskript_ctl_version.py │ ├── unskript_db_schema.json │ ├── unskript_email_notify_check_schema.json │ ├── unskript_slack_notify_schema.json │ ├── unskript_upload_results_to_s3.py │ └── unskript_utils.py ├── validator.py └── xrunbooks-directory.md
Showing preview only (233K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2116 symbols across 595 files)
FILE: AWS/legos/AWS_Start_IAM_Policy_Generation/AWS_Start_IAM_Policy_Generation.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function AWS_Start_IAM_Policy_Generation_printer (line 14) | def AWS_Start_IAM_Policy_Generation_printer(output):
function AWS_Start_IAM_Policy_Generation (line 19) | def AWS_Start_IAM_Policy_Generation(
FILE: AWS/legos/aws_add_lifecycle_configuration_to_s3_bucket/aws_add_lifecycle_configuration_to_s3_bucket.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_add_lifecycle_configuration_to_s3_bucket_printer (line 36) | def aws_add_lifecycle_configuration_to_s3_bucket_printer(output):
function aws_add_lifecycle_configuration_to_s3_bucket (line 43) | def aws_add_lifecycle_configuration_to_s3_bucket(handle, region: str, bu...
FILE: AWS/legos/aws_apply_default_encryption_for_s3_buckets/aws_apply_default_encryption_for_s3_buckets.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_apply_default_encryption_for_s3_buckets_printer (line 20) | def aws_apply_default_encryption_for_s3_buckets_printer(output):
function aws_apply_default_encryption_for_s3_buckets (line 26) | def aws_apply_default_encryption_for_s3_buckets(handle, bucket_name: str...
FILE: AWS/legos/aws_attach_ebs_to_instances/aws_attach_ebs_to_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_attach_ebs_to_instances_printer (line 25) | def aws_attach_ebs_to_instances_printer(output):
function aws_attach_ebs_to_instances (line 31) | def aws_attach_ebs_to_instances(
FILE: AWS/legos/aws_attach_iam_policy/aws_attach_iam_policy.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_attach_iam_policy_printer (line 19) | def aws_attach_iam_policy_printer(output):
function aws_attach_iam_policy (line 25) | def aws_attach_iam_policy(handle, user_name: str, policy_name: str) -> D...
FILE: AWS/legos/aws_attach_tags_to_resources/aws_attach_tags_to_resources.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function break_list (line 26) | def break_list(long_list, max_size):
function aws_attach_tags_to_resources_printer (line 31) | def aws_attach_tags_to_resources_printer(output):
function aws_attach_tags_to_resources (line 36) | def aws_attach_tags_to_resources(
FILE: AWS/legos/aws_change_acl_permissions_of_buckets/aws_change_acl_permissions_of_buckets.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_change_acl_permissions_of_buckets_printer (line 24) | def aws_change_acl_permissions_of_buckets_printer(output):
function aws_change_acl_permissions_of_buckets (line 30) | def aws_change_acl_permissions_of_buckets(
FILE: AWS/legos/aws_check_rds_non_m5_t3_instances/aws_check_rds_non_m5_t3_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_check_rds_non_m5_t3_instances_printer (line 20) | def aws_check_rds_non_m5_t3_instances_printer(output):
function aws_check_rds_non_m5_t3_instances (line 27) | def aws_check_rds_non_m5_t3_instances(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_check_ssl_certificate_expiry/aws_check_ssl_certificate_expiry.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_check_ssl_certificate_expiry_printer (line 24) | def aws_check_ssl_certificate_expiry_printer(output):
function aws_check_ssl_certificate_expiry (line 30) | def aws_check_ssl_certificate_expiry(handle, threshold_days: int, region...
FILE: AWS/legos/aws_cloudwatch_attach_webhook_notification_to_alarm/aws_cloudwatch_attach_webhook_notification_to_alarm.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_cloudwatch_attach_webhook_notification_to_alarm_printer (line 25) | def aws_cloudwatch_attach_webhook_notification_to_alarm_printer(output):
function aws_cloudwatch_attach_webhook_notification_to_alarm (line 31) | def aws_cloudwatch_attach_webhook_notification_to_alarm(
FILE: AWS/legos/aws_create_IAMpolicy/aws_create_IAMpolicy.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_create_IAMpolicy_printer (line 14) | def aws_create_IAMpolicy_printer(output):
function aws_create_IAMpolicy (line 19) | def aws_create_IAMpolicy(handle, policyDocument:str, PolicyName:str) -> ...
FILE: AWS/legos/aws_create_access_key/aws_create_access_key.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_create_access_key_printer (line 17) | def aws_create_access_key_printer(output):
function aws_create_access_key (line 23) | def aws_create_access_key(
FILE: AWS/legos/aws_create_bucket/aws_create_bucket.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_create_bucket_printer (line 24) | def aws_create_bucket_printer(output):
function aws_create_bucket (line 30) | def aws_create_bucket(handle: Session, name: str, acl: str, region: str ...
FILE: AWS/legos/aws_create_iam_user/aws_create_iam_user.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_create_iam_user_printer (line 23) | def aws_create_iam_user_printer(output):
function aws_create_iam_user (line 30) | def aws_create_iam_user(handle, user_name: str, tag_key: str, tag_value:...
FILE: AWS/legos/aws_create_redshift_query/aws_create_redshift_query.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_create_redshift_query (line 34) | def aws_create_redshift_query(
FILE: AWS/legos/aws_create_user_login_profile/aws_create_user_login_profile.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_create_user_login_profile_printer (line 20) | def aws_create_user_login_profile_printer(output):
function aws_create_user_login_profile (line 26) | def aws_create_user_login_profile(
FILE: AWS/legos/aws_create_volumes_snapshot/aws_create_volumes_snapshot.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_create_volumes_snapshot_printer (line 19) | def aws_create_volumes_snapshot_printer(output):
function aws_create_volumes_snapshot (line 25) | def aws_create_volumes_snapshot(handle, volume_id: str, region: str) -> ...
FILE: AWS/legos/aws_delete_access_key/aws_delete_access_key.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_access_key_printer (line 21) | def aws_delete_access_key_printer(output):
function aws_delete_access_key (line 28) | def aws_delete_access_key(
FILE: AWS/legos/aws_delete_bucket/aws_delete_bucket.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_delete_bucket_printer (line 20) | def aws_delete_bucket_printer(output):
function aws_delete_bucket (line 26) | def aws_delete_bucket(handle: Session, name: str, region: str = None) ->...
FILE: AWS/legos/aws_delete_classic_load_balancer/aws_delete_classic_load_balancer.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_classic_load_balancer_printer (line 16) | def aws_delete_classic_load_balancer_printer(output):
function aws_delete_classic_load_balancer (line 22) | def aws_delete_classic_load_balancer(handle, region: str, elb_name: str)...
FILE: AWS/legos/aws_delete_ebs_snapshot/aws_delete_ebs_snapshot.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_delete_ebs_snapshot_printer (line 19) | def aws_delete_ebs_snapshot_printer(output):
function aws_delete_ebs_snapshot (line 25) | def aws_delete_ebs_snapshot(handle, region: str, snapshot_id: str) -> Dict:
FILE: AWS/legos/aws_delete_ecs_cluster/aws_delete_ecs_cluster.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_ecs_cluster_printer (line 20) | def aws_delete_ecs_cluster_printer(output):
function aws_delete_ecs_cluster (line 26) | def aws_delete_ecs_cluster(handle, region: str, cluster_name: str) -> Dict:
FILE: AWS/legos/aws_delete_load_balancer/aws_delete_load_balancer.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_delete_load_balancer_printer (line 20) | def aws_delete_load_balancer_printer(output):
function aws_delete_load_balancer (line 26) | def aws_delete_load_balancer(handle, region: str, elb_arn: str) -> Dict:
FILE: AWS/legos/aws_delete_log_stream/aws_delete_log_stream.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_log_stream_printer (line 22) | def aws_delete_log_stream_printer(output):
function aws_delete_log_stream (line 28) | def aws_delete_log_stream(handle, log_group_name: str, log_stream_name: ...
FILE: AWS/legos/aws_delete_nat_gateway/aws_delete_nat_gateway.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_nat_gateway_printer (line 19) | def aws_delete_nat_gateway_printer(output):
function aws_delete_nat_gateway (line 25) | def aws_delete_nat_gateway(handle, nat_gateway_id: str, region: str) -> ...
FILE: AWS/legos/aws_delete_rds_instance/aws_delete_rds_instance.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_delete_rds_instance_printer (line 22) | def aws_delete_rds_instance_printer(output):
function aws_delete_rds_instance (line 28) | def aws_delete_rds_instance(handle, region: str, instance_id: str) -> Dict:
FILE: AWS/legos/aws_delete_redshift_cluster/aws_delete_redshift_cluster.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_redshift_cluster_printer (line 25) | def aws_delete_redshift_cluster_printer(output):
function aws_delete_redshift_cluster (line 31) | def aws_delete_redshift_cluster(handle, region: str, cluster_identifier:...
FILE: AWS/legos/aws_delete_route53_health_check/aws_delete_route53_health_check.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_route53_health_check_printer (line 16) | def aws_delete_route53_health_check_printer(output):
function aws_delete_route53_health_check (line 22) | def aws_delete_route53_health_check(handle, health_check_id: str) -> Dict:
FILE: AWS/legos/aws_delete_s3_bucket_encryption/aws_delete_s3_bucket_encryption.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_delete_s3_bucket_encryption_printer (line 19) | def aws_delete_s3_bucket_encryption_printer(output):
function aws_delete_s3_bucket_encryption (line 25) | def aws_delete_s3_bucket_encryption(handle, bucket_name: str, region: st...
FILE: AWS/legos/aws_delete_secret/aws_delete_secret.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_delete_secret_printer (line 19) | def aws_delete_secret_printer(output):
function aws_delete_secret (line 25) | def aws_delete_secret(handle, region: str, secret_name: str) -> Dict:
FILE: AWS/legos/aws_delete_volume_by_id/aws_delete_volume_by_id.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_delete_volume_by_id_printer (line 18) | def aws_delete_volume_by_id_printer(output):
function aws_delete_volume_by_id (line 24) | def aws_delete_volume_by_id(handle, volume_id: str, region: str) -> str:
FILE: AWS/legos/aws_deregister_instances/aws_deregister_instances.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_deregister_instances_printer (line 20) | def aws_deregister_instances_printer(output):
function aws_deregister_instances (line 26) | def aws_deregister_instances(handle, elb_name: str, instance_ids: List, ...
FILE: AWS/legos/aws_describe_cloudtrail/aws_describe_cloudtrail.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_describe_cloudtrail_printer (line 15) | def aws_describe_cloudtrail_printer(output):
function aws_describe_cloudtrail (line 20) | def aws_describe_cloudtrail(handle, region:str) -> Dict:
FILE: AWS/legos/aws_detach_ebs_to_instances/aws_detach_ebs_to_instances.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_detach_ebs_to_instances_printer (line 18) | def aws_detach_ebs_to_instances_printer(output):
function aws_detach_ebs_to_instances (line 24) | def aws_detach_ebs_to_instances(handle, region: str, volume_id: str) -> ...
FILE: AWS/legos/aws_detach_instances_from_autoscaling_group/aws_detach_instances_from_autoscaling_group.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_detach_instances_from_autoscaling_group_printer (line 19) | def aws_detach_instances_from_autoscaling_group_printer(output):
function aws_detach_instances_from_autoscaling_group (line 25) | def aws_detach_instances_from_autoscaling_group(
FILE: AWS/legos/aws_ebs_modify_volume/aws_ebs_modify_volume.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_ebs_modify_volume_printer (line 40) | def aws_ebs_modify_volume_printer(output):
function aws_ebs_modify_volume (line 46) | def aws_ebs_modify_volume(
function check_modification_status (line 104) | def check_modification_status(ec2Client, volumeID) -> bool:
FILE: AWS/legos/aws_ecs_describe_task_definition/aws_ecs_describe_task_definition.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_ecs_describe_task_definition_printer (line 21) | def aws_ecs_describe_task_definition_printer(output):
function aws_ecs_describe_task_definition (line 27) | def aws_ecs_describe_task_definition(handle, region: str, taskDefinition...
FILE: AWS/legos/aws_ecs_detect_failed_deployment/aws_ecs_detect_failed_deployment.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_ecs_detect_failed_deployment_printer (line 24) | def aws_ecs_detect_failed_deployment_printer(output):
function aws_ecs_detect_failed_deployment (line 30) | def aws_ecs_detect_failed_deployment(handle, cluster_name: str, service_...
FILE: AWS/legos/aws_ecs_service_restart/aws_ecs_service_restart.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_ecs_service_restart_printer (line 23) | def aws_ecs_service_restart_printer(output):
function aws_ecs_service_restart (line 29) | def aws_ecs_service_restart(handle, cluster_arn: str, service_name: str,...
FILE: AWS/legos/aws_ecs_update_service/aws_ecs_update_service.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_ecs_update_service_printer (line 26) | def aws_ecs_update_service_printer(output):
function aws_ecs_update_service (line 32) | def aws_ecs_update_service(handle, region: str, service: str, taskDefini...
FILE: AWS/legos/aws_eks_copy_pod_logs_to_bucket/aws_eks_copy_pod_logs_to_bucket.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_eks_copy_pod_logs_to_bucket_printer (line 30) | def aws_eks_copy_pod_logs_to_bucket_printer(output):
function aws_eks_copy_pod_logs_to_bucket (line 37) | def aws_eks_copy_pod_logs_to_bucket(handle, clusterName: str, namespaceN...
FILE: AWS/legos/aws_eks_delete_pod/aws_eks_delete_pod.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_eks_delete_pod_printer (line 28) | def aws_eks_delete_pod_printer(output):
function aws_eks_delete_pod (line 35) | def aws_eks_delete_pod(handle, clusterName: str, namespace: str, podname...
FILE: AWS/legos/aws_eks_get_all_dead_pods/aws_eks_get_all_dead_pods.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_eks_get_all_dead_pods_printer (line 27) | def aws_eks_get_all_dead_pods_printer(output):
function aws_eks_get_all_dead_pods (line 37) | def aws_eks_get_all_dead_pods(handle: Session,clusterName: str,region: s...
FILE: AWS/legos/aws_eks_get_all_namespaces/aws_eks_get_all_namespaces.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_eks_get_all_namespaces_printer (line 23) | def aws_eks_get_all_namespaces_printer(output):
function aws_eks_get_all_namespaces (line 30) | def aws_eks_get_all_namespaces(handle: Session, clusterName: str, region...
FILE: AWS/legos/aws_eks_get_all_pods/aws_eks_get_all_pods.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function aws_eks_get_all_pods_printer (line 28) | def aws_eks_get_all_pods_printer(output):
function aws_eks_get_all_pods (line 35) | def aws_eks_get_all_pods(handle: Session, clusterName: str, region: str,...
FILE: AWS/legos/aws_eks_get_deployments_name/aws_eks_get_deployments_name.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_eks_get_deployments_name_printer (line 25) | def aws_eks_get_deployments_name_printer(output):
function aws_eks_get_deployments_name (line 32) | def aws_eks_get_deployments_name(handle, clusterName: str, namespace: st...
FILE: AWS/legos/aws_eks_get_node_cpu_memory/aws_eks_get_node_cpu_memory.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function aws_eks_get_node_cpu_memory_printer (line 27) | def aws_eks_get_node_cpu_memory_printer(output):
function aws_eks_get_node_cpu_memory (line 34) | def aws_eks_get_node_cpu_memory(handle: Session, clusterName: str, regio...
FILE: AWS/legos/aws_eks_get_nodes/aws_eks_get_nodes.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_eks_get_nodes_printer (line 23) | def aws_eks_get_nodes_printer(output):
function aws_eks_get_nodes (line 30) | def aws_eks_get_nodes(handle, clusterName: str, region: str) -> List:
FILE: AWS/legos/aws_eks_get_not_running_pods/aws_eks_get_not_running_pods.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function aws_eks_get_not_running_pods_printer (line 24) | def aws_eks_get_not_running_pods_printer(output):
function aws_eks_get_not_running_pods (line 31) | def aws_eks_get_not_running_pods(handle: Session, clusterName: str, regi...
FILE: AWS/legos/aws_eks_get_pod_cpu_memory/aws_eks_get_pod_cpu_memory.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_eks_get_pod_cpu_memory_printer (line 25) | def aws_eks_get_pod_cpu_memory_printer(output):
function aws_eks_get_pod_cpu_memory (line 32) | def aws_eks_get_pod_cpu_memory(handle, clusterName: str, namespace: str,...
FILE: AWS/legos/aws_eks_get_pod_status/aws_eks_get_pod_status.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_eks_get_pod_status_printer (line 28) | def aws_eks_get_pod_status_printer(output):
function aws_eks_get_pod_status (line 35) | def aws_eks_get_pod_status(handle: Session, clusterName: str, pod_name: ...
FILE: AWS/legos/aws_eks_get_running_pods/aws_eks_get_running_pods.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_eks_get_running_pods_printer (line 24) | def aws_eks_get_running_pods_printer(output):
function aws_eks_get_running_pods (line 31) | def aws_eks_get_running_pods(handle, clusterName: str, namespace: str, r...
FILE: AWS/legos/aws_eks_run_kubectl_cmd/aws_eks_run_kubectl_cmd.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_eks_run_kubectl_cmd_printer (line 21) | def aws_eks_run_kubectl_cmd_printer(output):
function aws_eks_run_kubectl_cmd (line 28) | def aws_eks_run_kubectl_cmd(handle, clusterName: str, command: str, regi...
FILE: AWS/legos/aws_emr_get_instances/aws_emr_get_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_emr_get_instances_printer (line 23) | def aws_emr_get_instances_printer(output):
function aws_emr_get_instances (line 30) | def aws_emr_get_instances(
FILE: AWS/legos/aws_execute_cli_command/aws_execute_cli_command.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_execute_cli_command_printer (line 18) | def aws_execute_cli_command_printer(output):
function aws_execute_cli_command (line 24) | def aws_execute_cli_command(handle, aws_command: str) -> str:
FILE: AWS/legos/aws_execute_command_ssm/aws_execute_command_ssm.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_execute_command_ssm_printer (line 27) | def aws_execute_command_ssm_printer(output):
function aws_execute_command_ssm (line 34) | def aws_execute_command_ssm(handle, instance_ids: list, parameters: list...
FILE: AWS/legos/aws_filter_all_manual_database_snapshots/aws_filter_all_manual_database_snapshots.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_filter_all_manual_database_snapshots_printer (line 15) | def aws_filter_all_manual_database_snapshots_printer(output):
function aws_filter_all_manual_database_snapshots (line 21) | def aws_filter_all_manual_database_snapshots(handle, region: str) -> List:
FILE: AWS/legos/aws_filter_ebs_unattached_volumes/aws_filter_ebs_unattached_volumes.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_ebs_unattached_volumes_printer (line 18) | def aws_filter_ebs_unattached_volumes_printer(output):
function aws_filter_ebs_unattached_volumes (line 25) | def aws_filter_ebs_unattached_volumes(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_filter_ebs_volumes_with_low_iops/aws_filter_ebs_volumes_with_low_iops.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_ebs_volumes_with_low_iops_printer (line 22) | def aws_filter_ebs_volumes_with_low_iops_printer(output):
function aws_filter_ebs_volumes_with_low_iops (line 29) | def aws_filter_ebs_volumes_with_low_iops(handle, region: str = "", iops_...
FILE: AWS/legos/aws_filter_ec2_by_tags/aws_filter_ec2_by_tags.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_ec2_by_tags_printer (line 23) | def aws_filter_ec2_by_tags_printer(output):
function aws_filter_ec2_by_tags (line 30) | def aws_filter_ec2_by_tags(handle, tag_key: str, tag_value: str, region:...
FILE: AWS/legos/aws_filter_ec2_by_vpc/aws_filter_ec2_by_vpc.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_ec2_by_vpc_printer (line 20) | def aws_filter_ec2_by_vpc_printer(output):
function aws_filter_ec2_by_vpc (line 27) | def aws_filter_ec2_by_vpc(handle, vpc_id: str, region: str) -> List:
FILE: AWS/legos/aws_filter_ec2_instances/aws_filter_ec2_instances.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_filter_ec2_instances_printer (line 19) | def aws_filter_ec2_instances_printer(output):
function aws_filter_ec2_instances (line 26) | def aws_filter_ec2_instances(handle, region: str) -> List:
FILE: AWS/legos/aws_filter_ec2_without_lifetime_tag/aws_filter_ec2_without_lifetime_tag.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_ec2_without_lifetime_tag_printer (line 21) | def aws_filter_ec2_without_lifetime_tag_printer(output):
function aws_filter_ec2_without_lifetime_tag (line 27) | def aws_filter_ec2_without_lifetime_tag(handle, lifetime_tag: str, regio...
FILE: AWS/legos/aws_filter_instances_without_termination_and_lifetime_tag/aws_filter_instances_without_termination_and_lifetime_tag.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_filter_instances_without_termination_and_lifetime_tag_printer (line 30) | def aws_filter_instances_without_termination_and_lifetime_tag_printer(ou...
function fetch_instances_from_valid_region (line 37) | def fetch_instances_from_valid_region(reservations, aws_region, terminat...
function aws_filter_instances_without_termination_and_lifetime_tag (line 72) | def aws_filter_instances_without_termination_and_lifetime_tag(handle, re...
FILE: AWS/legos/aws_filter_large_ec2_instances/aws_filter_large_ec2_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_large_ec2_instances_printer (line 23) | def aws_filter_large_ec2_instances_printer(output):
function aws_filter_large_ec2_instances (line 29) | def aws_filter_large_ec2_instances(handle, tag_key: str, tag_value: str,...
FILE: AWS/legos/aws_filter_long_running_instances/aws_filter_long_running_instances.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_filter_long_running_instances_printer (line 24) | def aws_filter_long_running_instances_printer(output):
function aws_filter_long_running_instances (line 30) | def aws_filter_long_running_instances(handle, region: str, threshold: in...
FILE: AWS/legos/aws_filter_old_ebs_snapshots/aws_filter_old_ebs_snapshots.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_filter_old_ebs_snapshots_printer (line 23) | def aws_filter_old_ebs_snapshots_printer(output):
function aws_filter_old_ebs_snapshots (line 29) | def aws_filter_old_ebs_snapshots(handle, region: str="", threshold: int ...
FILE: AWS/legos/aws_filter_public_s3_buckets_by_acl/aws_filter_public_s3_buckets_by_acl.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_filter_public_s3_buckets_by_acl_printer (line 25) | def aws_filter_public_s3_buckets_by_acl_printer(output):
function check_publicly_accessible_buckets (line 30) | def check_publicly_accessible_buckets(s3Client,b,all_permissions):
function aws_filter_public_s3_buckets_by_acl (line 45) | def aws_filter_public_s3_buckets_by_acl(
FILE: AWS/legos/aws_filter_target_groups_by_tags/aws_filter_target_groups_by_tags.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_filter_target_groups_by_tags_printer (line 19) | def aws_filter_target_groups_by_tags_printer(output):
function aws_filter_target_groups_by_tags (line 25) | def aws_filter_target_groups_by_tags(handle, tag_key: str, region: str) ...
FILE: AWS/legos/aws_filter_unencrypted_s3_buckets/aws_filter_unencrypted_s3_buckets.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_filter_unencrypted_s3_buckets_printer (line 19) | def aws_filter_unencrypted_s3_buckets_printer(output):
function aws_filter_unencrypted_s3_buckets (line 26) | def aws_filter_unencrypted_s3_buckets(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_filter_unhealthy_instances_from_asg/aws_filter_unhealthy_instances_from_asg.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_unhealthy_instances_from_asg_printer (line 18) | def aws_filter_unhealthy_instances_from_asg_printer(output):
function aws_filter_unhealthy_instances_from_asg (line 24) | def aws_filter_unhealthy_instances_from_asg(handle, region: str = "") ->...
FILE: AWS/legos/aws_filter_untagged_ec2_instances/aws_filter_untagged_ec2_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_filter_untagged_ec2_instances_printer (line 20) | def aws_filter_untagged_ec2_instances_printer(output):
function check_untagged_instance (line 25) | def check_untagged_instance(res, r):
function aws_filter_untagged_ec2_instances (line 38) | def aws_filter_untagged_ec2_instances(handle, region: str= None) -> Tuple:
FILE: AWS/legos/aws_filter_unused_keypairs/aws_filter_unused_keypairs.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_unused_keypairs_printer (line 18) | def aws_filter_unused_keypairs_printer(output):
function aws_filter_unused_keypairs (line 24) | def aws_filter_unused_keypairs(handle, region: str = None) -> Tuple:
FILE: AWS/legos/aws_filter_unused_log_streams/aws_filter_unused_log_streams.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_filter_unused_log_streams_printer (line 23) | def aws_filter_unused_log_streams_printer(output):
function aws_filter_unused_log_streams (line 30) | def aws_filter_unused_log_streams(handle, region: str = "", time_period_...
FILE: AWS/legos/aws_filter_unused_nat_gateway/aws_filter_unused_nat_gateway.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_filter_unused_nat_gateway_printer (line 20) | def aws_filter_unused_nat_gateway_printer(output):
function is_nat_gateway_used (line 26) | def is_nat_gateway_used(handle, nat_gateway, start_time, end_time,number...
function aws_filter_unused_nat_gateway (line 54) | def aws_filter_unused_nat_gateway(handle, number_of_days: int = 7, regio...
FILE: AWS/legos/aws_find_elbs_with_no_targets_or_instances/aws_find_elbs_with_no_targets_or_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_find_elbs_with_no_targets_or_instances_printer (line 17) | def aws_find_elbs_with_no_targets_or_instances_printer(output):
function aws_find_elbs_with_no_targets_or_instances (line 22) | def aws_find_elbs_with_no_targets_or_instances(handle, region: str = "")...
FILE: AWS/legos/aws_find_idle_instances/aws_find_idle_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_find_idle_instances_printer (line 30) | def aws_find_idle_instances_printer(output):
function is_instance_idle (line 36) | def is_instance_idle(instance_id , idle_cpu_threshold, idle_duration, cl...
function aws_find_idle_instances (line 57) | def aws_find_idle_instances(
FILE: AWS/legos/aws_find_long_running_lambdas/aws_find_long_running_lambdas.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_find_long_running_lambdas_printer (line 27) | def aws_find_long_running_lambdas_printer(output):
function aws_find_long_running_lambdas (line 33) | def aws_find_long_running_lambdas(handle, days_back: int = 7, duration_t...
FILE: AWS/legos/aws_find_low_connection_rds_instances/aws_find_low_connection_rds_instances.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_find_low_connection_rds_instances_printer (line 26) | def aws_find_low_connection_rds_instances_printer(output):
function aws_find_low_connection_rds_instances (line 32) | def aws_find_low_connection_rds_instances(handle, min_connections:int = ...
FILE: AWS/legos/aws_find_old_gen_emr_clusters/aws_find_old_gen_emr_clusters.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_find_old_gen_emr_clusters_printer (line 20) | def aws_find_old_gen_emr_clusters_printer(output):
function aws_find_old_gen_emr_clusters (line 26) | def aws_find_old_gen_emr_clusters(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_find_rds_instances_with_low_cpu_utilization/aws_find_rds_instances_with_low_cpu_utilization.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_find_rds_instances_with_low_cpu_utilization_printer (line 30) | def aws_find_rds_instances_with_low_cpu_utilization_printer(output):
function aws_find_rds_instances_with_low_cpu_utilization (line 36) | def aws_find_rds_instances_with_low_cpu_utilization(handle, utilization_...
FILE: AWS/legos/aws_find_redshift_cluster_without_pause_resume_enabled/aws_find_redshift_cluster_without_pause_resume_enabled.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_find_redshift_cluster_without_pause_resume_enabled_printer (line 18) | def aws_find_redshift_cluster_without_pause_resume_enabled_printer(output):
function aws_find_redshift_cluster_without_pause_resume_enabled (line 24) | def aws_find_redshift_cluster_without_pause_resume_enabled(handle, regio...
FILE: AWS/legos/aws_find_redshift_clusters_with_low_cpu_utilization/aws_find_redshift_clusters_with_low_cpu_utilization.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_find_redshift_clusters_with_low_cpu_utilization_printer (line 29) | def aws_find_redshift_clusters_with_low_cpu_utilization_printer(output):
function aws_find_redshift_clusters_with_low_cpu_utilization (line 35) | def aws_find_redshift_clusters_with_low_cpu_utilization(handle, utilizat...
FILE: AWS/legos/aws_find_s3_buckets_without_lifecycle_policies/aws_find_s3_buckets_without_lifecycle_policies.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_find_s3_buckets_without_lifecycle_policies_printer (line 17) | def aws_find_s3_buckets_without_lifecycle_policies_printer(output):
function aws_find_s3_buckets_without_lifecycle_policies (line 23) | def aws_find_s3_buckets_without_lifecycle_policies(handle, region: str="...
FILE: AWS/legos/aws_finding_redundant_trails/aws_finding_redundant_trails.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_finding_redundant_trails_printer (line 15) | def aws_finding_redundant_trails_printer(output):
function aws_finding_redundant_trails (line 21) | def aws_finding_redundant_trails(handle) -> Tuple:
FILE: AWS/legos/aws_get_acount_number/aws_get_acount_number.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_get_acount_number_printer (line 11) | def aws_get_acount_number_printer(output):
function aws_get_acount_number (line 16) | def aws_get_acount_number(handle) -> str:
FILE: AWS/legos/aws_get_alarms_list/aws_get_alarms_list.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_alarms_list_printer (line 20) | def aws_get_alarms_list_printer(output):
function aws_get_alarms_list (line 26) | def aws_get_alarms_list(handle, region: str, alarm_name: str = None) -> ...
FILE: AWS/legos/aws_get_alb_listeners_without_http_redirect/aws_get_alb_listeners_without_http_redirect.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_alb_listeners_without_http_redirect_printer (line 19) | def aws_get_alb_listeners_without_http_redirect_printer(output):
function aws_get_alb_listeners_without_http_redirect (line 26) | def aws_get_alb_listeners_without_http_redirect(handle, region: str = ""...
FILE: AWS/legos/aws_get_all_ec2_instances/aws_get_all_ec2_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_all_ec2_instances_printer (line 15) | def aws_get_all_ec2_instances_printer(output):
function aws_get_all_ec2_instances (line 21) | def aws_get_all_ec2_instances(handle, region: str) -> List:
FILE: AWS/legos/aws_get_all_load_balancers/aws_get_all_load_balancers.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_all_load_balancers_printer (line 19) | def aws_get_all_load_balancers_printer(output):
function aws_get_all_load_balancers (line 25) | def aws_get_all_load_balancers(handle, region: str = "") -> List:
FILE: AWS/legos/aws_get_all_service_names/aws_get_all_service_names.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_all_service_names_printer (line 14) | def aws_get_all_service_names_printer(output):
function aws_get_all_service_names (line 22) | def aws_get_all_service_names(handle, region:str) -> List:
FILE: AWS/legos/aws_get_all_untagged_resources/aws_get_all_untagged_resources.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_all_untagged_resources_printer (line 14) | def aws_get_all_untagged_resources_printer(output):
function aws_get_all_untagged_resources (line 20) | def aws_get_all_untagged_resources(handle, region: str) -> List:
FILE: AWS/legos/aws_get_auto_scaling_instances/aws_get_auto_scaling_instances.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_get_auto_scaling_instances_printer (line 18) | def aws_get_auto_scaling_instances_printer(output):
function aws_get_auto_scaling_instances (line 24) | def aws_get_auto_scaling_instances(handle, instance_ids: list, region: s...
FILE: AWS/legos/aws_get_bucket_size/aws_get_bucket_size.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_bucket_size_printer (line 18) | def aws_get_bucket_size_printer(output):
function aws_get_bucket_size (line 24) | def aws_get_bucket_size(handle: Session, bucketName: str) -> str:
FILE: AWS/legos/aws_get_cloudwatch_ebs/aws_get_cloudwatch_ebs.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_ebs_printer (line 49) | def aws_get_cloudwatch_ebs_printer(output):
function aws_get_cloudwatch_ebs (line 56) | def aws_get_cloudwatch_ebs(
FILE: AWS/legos/aws_get_cloudwatch_ec2/aws_get_cloudwatch_ec2.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_ec2_printer (line 49) | def aws_get_cloudwatch_ec2_printer(output):
function aws_get_cloudwatch_ec2 (line 57) | def aws_get_cloudwatch_ec2(
FILE: AWS/legos/aws_get_cloudwatch_ec2_cpuutil/aws_get_cloudwatch_ec2_cpuutil.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function aws_get_cloudwatch_ec2_cpuutil_printer (line 43) | def aws_get_cloudwatch_ec2_cpuutil_printer(output):
function aws_get_cloudwatch_ec2_cpuutil (line 50) | def aws_get_cloudwatch_ec2_cpuutil(
FILE: AWS/legos/aws_get_cloudwatch_metrics_applicationelb/aws_get_cloudwatch_metrics_applicationelb.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_applicationelb_printer (line 45) | def aws_get_cloudwatch_metrics_applicationelb_printer(output):
function aws_get_cloudwatch_metrics_applicationelb (line 52) | def aws_get_cloudwatch_metrics_applicationelb(
FILE: AWS/legos/aws_get_cloudwatch_metrics_classic_elb/aws_get_cloudwatch_metrics_classic_elb.py
function aws_get_cloudwatch_metrics_classic_elb_printer (line 17) | def aws_get_cloudwatch_metrics_classic_elb_printer(output):
class InputSchema (line 24) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_classic_elb (line 56) | def aws_get_cloudwatch_metrics_classic_elb(
FILE: AWS/legos/aws_get_cloudwatch_metrics_dynamodb/aws_get_cloudwatch_metrics_dynamodb.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_dynamodb_printer (line 45) | def aws_get_cloudwatch_metrics_dynamodb_printer(output):
function aws_get_cloudwatch_metrics_dynamodb (line 52) | def aws_get_cloudwatch_metrics_dynamodb(
FILE: AWS/legos/aws_get_cloudwatch_metrics_ec2autoscaling/aws_get_cloudwatch_metrics_ec2autoscaling.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_ec2autoscaling_printer (line 44) | def aws_get_cloudwatch_metrics_ec2autoscaling_printer(output):
function aws_get_cloudwatch_metrics_ec2autoscaling (line 51) | def aws_get_cloudwatch_metrics_ec2autoscaling(
FILE: AWS/legos/aws_get_cloudwatch_metrics_gatewayelb/aws_get_cloudwatch_metrics_gatewayelb.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_gatewayelb_printer (line 45) | def aws_get_cloudwatch_metrics_gatewayelb_printer(output):
function aws_get_cloudwatch_metrics_gatewayelb (line 52) | def aws_get_cloudwatch_metrics_gatewayelb(
FILE: AWS/legos/aws_get_cloudwatch_metrics_lambda/aws_get_cloudwatch_metrics_lambda.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_lambda_printer (line 45) | def aws_get_cloudwatch_metrics_lambda_printer(output) -> str:
function aws_get_cloudwatch_metrics_lambda (line 61) | def aws_get_cloudwatch_metrics_lambda(
FILE: AWS/legos/aws_get_cloudwatch_metrics_network_elb/aws_get_cloudwatch_metrics_network_elb.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_network_elb_printer (line 49) | def aws_get_cloudwatch_metrics_network_elb_printer(output):
function aws_get_cloudwatch_metrics_network_elb (line 56) | def aws_get_cloudwatch_metrics_network_elb(
FILE: AWS/legos/aws_get_cloudwatch_metrics_rds/aws_get_cloudwatch_metrics_rds.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_rds_printer (line 45) | def aws_get_cloudwatch_metrics_rds_printer(output):
function aws_get_cloudwatch_metrics_rds (line 52) | def aws_get_cloudwatch_metrics_rds(
FILE: AWS/legos/aws_get_cloudwatch_metrics_redshift/aws_get_cloudwatch_metrics_redshift.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_redshift_printer (line 45) | def aws_get_cloudwatch_metrics_redshift_printer(output):
function aws_get_cloudwatch_metrics_redshift (line 52) | def aws_get_cloudwatch_metrics_redshift(
FILE: AWS/legos/aws_get_cloudwatch_metrics_sqs/aws_get_cloudwatch_metrics_sqs.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function aws_get_cloudwatch_metrics_sqs_printer (line 49) | def aws_get_cloudwatch_metrics_sqs_printer(output):
function aws_get_cloudwatch_metrics_sqs (line 56) | def aws_get_cloudwatch_metrics_sqs(
FILE: AWS/legos/aws_get_cloudwatch_statistics/aws_get_cloudwatch_statistics.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function aws_get_cloudwatch_statistics_printer (line 48) | def aws_get_cloudwatch_statistics_printer(output):
function aws_get_cloudwatch_statistics (line 55) | def aws_get_cloudwatch_statistics(
FILE: AWS/legos/aws_get_cost_for_all_services/aws_get_cost_for_all_services.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_cost_for_all_services_printer (line 34) | def aws_get_cost_for_all_services_printer(output):
function aws_get_cost_for_all_services (line 40) | def aws_get_cost_for_all_services(
FILE: AWS/legos/aws_get_cost_for_data_transfer/aws_get_cost_for_data_transfer.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_cost_for_data_transfer_printer (line 34) | def aws_get_cost_for_data_transfer_printer(output):
function aws_get_cost_for_data_transfer (line 43) | def aws_get_cost_for_data_transfer(
FILE: AWS/legos/aws_get_daily_total_spend/aws_get_daily_total_spend.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_daily_total_spend_printer (line 34) | def aws_get_daily_total_spend_printer(output):
function aws_get_daily_total_spend (line 40) | def aws_get_daily_total_spend(
FILE: AWS/legos/aws_get_ebs_volume_for_low_usage/aws_get_ebs_volume_for_low_usage.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_ebs_volume_for_low_usage_printer (line 27) | def aws_get_ebs_volume_for_low_usage_printer(output):
function aws_get_ebs_volume_for_low_usage (line 34) | def aws_get_ebs_volume_for_low_usage(handle, region: str = "", threshold...
FILE: AWS/legos/aws_get_ebs_volumes_by_type/aws_get_ebs_volumes_by_type.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_ebs_volumes_by_type_printer (line 16) | def aws_get_ebs_volumes_by_type_printer(output):
function aws_get_ebs_volumes_by_type (line 23) | def aws_get_ebs_volumes_by_type(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_ebs_volumes_without_gp3_type/aws_get_ebs_volumes_without_gp3_type.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_ebs_volumes_without_gp3_type_printer (line 18) | def aws_get_ebs_volumes_without_gp3_type_printer(output):
function aws_get_ebs_volumes_without_gp3_type (line 25) | def aws_get_ebs_volumes_without_gp3_type(handle, region: str = "") -> Tu...
FILE: AWS/legos/aws_get_ec2_cpu_consumption/aws_get_ec2_cpu_consumption.py
function aws_get_ec2_cpu_consumption_printer (line 14) | def aws_get_ec2_cpu_consumption_printer(output):
class InputSchema (line 19) | class InputSchema(BaseModel):
function aws_get_ec2_cpu_consumption (line 25) | def aws_get_ec2_cpu_consumption(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_ec2_data_traffic/aws_get_ec2_data_traffic.py
function aws_get_ec2_data_traffic_printer (line 15) | def aws_get_ec2_data_traffic_printer(output):
class InputSchema (line 21) | class InputSchema(BaseModel):
function aws_get_ec2_data_traffic (line 29) | def aws_get_ec2_data_traffic(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_ec2_instance_age/aws_get_ec2_instance_age.py
function aws_get_ec2_instance_age_printer (line 16) | def aws_get_ec2_instance_age_printer(output):
class InputSchema (line 21) | class InputSchema(BaseModel):
function aws_get_ec2_instance_age (line 29) | def aws_get_ec2_instance_age(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_ec2_instances_with_smaller_cpu_size/aws_get_ec2_instances_with_smaller_cpu_size.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_ec2_instances_with_smaller_cpu_size_printer (line 26) | def aws_get_ec2_instances_with_smaller_cpu_size_printer(output):
function aws_get_ec2_instances_with_smaller_cpu_size (line 31) | def aws_get_ec2_instances_with_smaller_cpu_size(handle, instance_ids: li...
FILE: AWS/legos/aws_get_ecs_instances_without_autoscaling/aws_get_ecs_instances_without_autoscaling.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_ecs_instances_without_autoscaling_printer (line 19) | def aws_get_ecs_instances_without_autoscaling_printer(output):
function aws_get_ecs_instances_without_autoscaling (line 25) | def aws_get_ecs_instances_without_autoscaling(handle, region: str = "") ...
FILE: AWS/legos/aws_get_ecs_services_status/aws_get_ecs_services_status.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_ecs_services_status_printer (line 16) | def aws_get_ecs_services_status_printer(output):
function aws_get_ecs_services_status (line 22) | def aws_get_ecs_services_status(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_ecs_services_without_autoscaling/aws_get_ecs_services_without_autoscaling.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_ecs_services_without_autoscaling_printer (line 19) | def aws_get_ecs_services_without_autoscaling_printer(output):
function aws_get_ecs_services_without_autoscaling (line 25) | def aws_get_ecs_services_without_autoscaling(handle, region: str = "") -...
FILE: AWS/legos/aws_get_generated_policy/aws_get_generated_policy.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_generated_policy_printer (line 15) | def aws_get_generated_policy_printer(output):
function aws_get_generated_policy (line 20) | def aws_get_generated_policy(handle, region:str,jobId:str) -> Dict:
FILE: AWS/legos/aws_get_handle/aws_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_get_handle (line 12) | def aws_get_handle(handle: Session):
FILE: AWS/legos/aws_get_iam_users_without_attached_policies/aws_get_iam_users_without_attached_policies.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_iam_users_without_attached_policies_printer (line 15) | def aws_get_iam_users_without_attached_policies_printer(output):
function aws_get_iam_users_without_attached_policies (line 25) | def aws_get_iam_users_without_attached_policies(handle) -> Tuple:
FILE: AWS/legos/aws_get_idle_emr_clusters/aws_get_idle_emr_clusters.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_idle_emr_clusters_printer (line 26) | def aws_get_idle_emr_clusters_printer(output):
function aws_get_idle_emr_clusters (line 32) | def aws_get_idle_emr_clusters(handle, max_idle_time: int = 30, region: s...
FILE: AWS/legos/aws_get_instance_detail_with_private_dns_name/aws_get_instance_detail_with_private_dns_name.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_instance_detail_with_private_dns_name_printer (line 20) | def aws_get_instance_detail_with_private_dns_name_printer(output):
function aws_get_instance_detail_with_private_dns_name (line 26) | def aws_get_instance_detail_with_private_dns_name(
FILE: AWS/legos/aws_get_instance_details/aws_get_instance_details.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_instances_printer (line 20) | def aws_get_instances_printer(output):
function aws_get_instance_details (line 27) | def aws_get_instance_details(handle, instance_id: str, region: str) -> D...
FILE: AWS/legos/aws_get_instances/aws_get_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_instances_printer (line 19) | def aws_get_instances_printer(output):
function aws_get_instances (line 32) | def aws_get_instances(handle, elb_name: str, region: str) -> List:
FILE: AWS/legos/aws_get_internet_gateway_by_vpc/aws_get_internet_gateway_by_vpc.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_internet_gateway_by_vpc_printer (line 17) | def aws_get_internet_gateway_by_vpc_printer(output):
function aws_get_internet_gateway_by_vpc (line 22) | def aws_get_internet_gateway_by_vpc(handle, vpc_id: str, region: str) ->...
FILE: AWS/legos/aws_get_lambdas_not_using_arm_graviton2_processor/aws_get_lambdas_not_using_arm_graviton2_processor.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_lambdas_not_using_arm_graviton2_processor_printer (line 22) | def aws_get_lambdas_not_using_arm_graviton2_processor_printer(output):
function aws_get_lambdas_not_using_arm_graviton2_processor (line 28) | def aws_get_lambdas_not_using_arm_graviton2_processor(handle, region: st...
FILE: AWS/legos/aws_get_lambdas_with_high_error_rate/aws_get_lambdas_with_high_error_rate.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_lambdas_with_high_error_rate_printer (line 31) | def aws_get_lambdas_with_high_error_rate_printer(output):
function aws_get_lambdas_with_high_error_rate (line 37) | def aws_get_lambdas_with_high_error_rate(
FILE: AWS/legos/aws_get_long_running_elasticcache_clusters_without_reserved_nodes/aws_get_long_running_elasticcache_clusters_without_reserved_nodes.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_long_running_elasticcache_clusters_without_reserved_nodes_printer (line 24) | def aws_get_long_running_elasticcache_clusters_without_reserved_nodes_pr...
function aws_get_long_running_elasticcache_clusters_without_reserved_nodes (line 30) | def aws_get_long_running_elasticcache_clusters_without_reserved_nodes(ha...
FILE: AWS/legos/aws_get_long_running_rds_instances_without_reserved_instances/aws_get_long_running_rds_instances_without_reserved_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_long_running_rds_instances_without_reserved_instances_printer (line 20) | def aws_get_long_running_rds_instances_without_reserved_instances_printe...
function aws_get_long_running_rds_instances_without_reserved_instances (line 35) | def aws_get_long_running_rds_instances_without_reserved_instances(handle...
FILE: AWS/legos/aws_get_long_running_redshift_clusters_without_reserved_nodes/aws_get_long_running_redshift_clusters_without_reserved_nodes.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_long_running_redshift_clusters_without_reserved_nodes_printer (line 26) | def aws_get_long_running_redshift_clusters_without_reserved_nodes_printe...
function aws_get_long_running_redshift_clusters_without_reserved_nodes (line 32) | def aws_get_long_running_redshift_clusters_without_reserved_nodes(handle...
FILE: AWS/legos/aws_get_nat_gateway_by_vpc/aws_get_nat_gateway_by_vpc.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_nat_gateway_by_vpc_printer (line 18) | def aws_get_nat_gateway_by_vpc_printer(output):
function aws_get_nat_gateway_by_vpc (line 24) | def aws_get_nat_gateway_by_vpc(handle, vpc_id: str, region: str) -> List:
FILE: AWS/legos/aws_get_nlb_targets/aws_get_nlb_targets.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_nlb_targets_printer (line 18) | def aws_get_nlb_targets_printer(output):
function aws_get_nlb_targets (line 24) | def aws_get_nlb_targets(handle, region: str, nlb_arn: str) -> List:
FILE: AWS/legos/aws_get_nlbs_without_targets/aws_get_nlbs_without_targets.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_nlbs_without_targets_printer (line 18) | def aws_get_nlbs_without_targets_printer(output):
function aws_get_nlbs_without_targets (line 24) | def aws_get_nlbs_without_targets(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_get_older_generation_rds_instances/aws_get_older_generation_rds_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_older_generation_rds_instances_printer (line 17) | def aws_get_older_generation_rds_instances_printer(output):
function is_previous_gen_instance (line 23) | def is_previous_gen_instance(instance_type):
function aws_get_older_generation_rds_instances (line 31) | def aws_get_older_generation_rds_instances(handle, region: str = "") -> ...
FILE: AWS/legos/aws_get_private_address_from_nat_gateways/aws_get_private_address_from_nat_gateways.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_private_address_from_nat_gateways_printer (line 18) | def aws_get_private_address_from_nat_gateways_printer(output):
function aws_get_private_address_from_nat_gateways (line 24) | def aws_get_private_address_from_nat_gateways(handle, region: str = "") ...
FILE: AWS/legos/aws_get_public_ec2_instances/aws_get_public_ec2_instances.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_public_ec2_instances_printer (line 19) | def aws_get_public_ec2_instances_printer(output):
function aws_get_public_ec2_instances (line 26) | def aws_get_public_ec2_instances(handle, region: str) -> Dict:
FILE: AWS/legos/aws_get_publicly_accessible_db_instances/aws_get_publicly_accessible_db_instances.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_publicly_accessible_db_instances_printer (line 21) | def aws_get_publicly_accessible_db_instances_printer(output):
function aws_get_publicly_accessible_db_instances (line 31) | def aws_get_publicly_accessible_db_instances(handle, region: str = "") -...
FILE: AWS/legos/aws_get_publicly_accessible_db_snapshots/aws_get_publicly_accessible_db_snapshots.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_publicly_accessible_db_snapshots_printer (line 20) | def aws_get_publicly_accessible_db_snapshots_printer(output):
function aws_get_publicly_accessible_db_snapshots (line 29) | def aws_get_publicly_accessible_db_snapshots(handle, region: str=None) -...
FILE: AWS/legos/aws_get_rds_automated_snapshots_above_retention_period/aws_get_rds_automated_snapshots_above_retention_period.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_get_rds_automated_snapshots_above_retention_period_printer (line 26) | def aws_get_rds_automated_snapshots_above_retention_period_printer(output):
function aws_get_rds_automated_snapshots_above_retention_period (line 32) | def aws_get_rds_automated_snapshots_above_retention_period(handle, regio...
FILE: AWS/legos/aws_get_redshift_query_details/aws_get_redshift_query_details.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_redshift_query_details (line 19) | def aws_get_redshift_query_details(handle, region: str, queryId:str) -> ...
FILE: AWS/legos/aws_get_redshift_result/aws_get_redshift_result.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_redshift_result (line 18) | def aws_get_redshift_result(handle, region:str, resultId: str) -> List:
FILE: AWS/legos/aws_get_reserved_instances_about_to_retired/aws_get_reserved_instances_about_to_retired.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_reserved_instances_about_to_retired_printer (line 23) | def aws_get_reserved_instances_about_to_retired_printer(output):
function aws_get_reserved_instances_about_to_retired (line 29) | def aws_get_reserved_instances_about_to_retired(
FILE: AWS/legos/aws_get_resources_missing_tag/aws_get_resources_missing_tag.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_resources_missing_tag_printer (line 18) | def aws_get_resources_missing_tag_printer(output):
function aws_get_resources_missing_tag (line 24) | def aws_get_resources_missing_tag(handle, region: str, tag:str) -> List:
FILE: AWS/legos/aws_get_resources_with_expiration_tag/aws_get_resources_with_expiration_tag.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_resources_with_expiration_tag_printer (line 18) | def aws_get_resources_with_expiration_tag_printer(output):
function aws_get_resources_with_expiration_tag (line 24) | def aws_get_resources_with_expiration_tag(handle, region: str, tag:str) ...
FILE: AWS/legos/aws_get_resources_with_tag/aws_get_resources_with_tag.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_resources_with_tag_printer (line 17) | def aws_get_resources_with_tag_printer(output):
function aws_get_resources_with_tag (line 23) | def aws_get_resources_with_tag(handle, region: str, tag:str) -> List:
FILE: AWS/legos/aws_get_s3_buckets/aws_get_s3_buckets.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_s3_buckets_printer (line 16) | def aws_get_s3_buckets_printer(output):
function aws_get_s3_buckets (line 22) | def aws_get_s3_buckets(handle, region: str) -> List:
FILE: AWS/legos/aws_get_schedule_to_retire_instances/aws_get_schedule_to_retire_instances.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_schedule_to_retire_instances_printer (line 20) | def aws_get_schedule_to_retire_instances_printer(output):
function aws_get_schedule_to_retire_instances (line 29) | def aws_get_schedule_to_retire_instances( handle, region: str="") -> Tuple:
FILE: AWS/legos/aws_get_secret_from_secretmanager/aws_get_secret_from_secretmanager.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_get_secret_from_secretmanager_printer (line 19) | def aws_get_secret_from_secretmanager_printer(output):
function aws_get_secret_from_secretmanager (line 25) | def aws_get_secret_from_secretmanager(handle, SecretId: str, region: str...
FILE: AWS/legos/aws_get_secrets_manager_secret/aws_get_secrets_manager_secret.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_secrets_manager_secret_printer (line 20) | def aws_get_secrets_manager_secret_printer(output):
function aws_get_secrets_manager_secret (line 28) | def aws_get_secrets_manager_secret(handle, region: str, secret_name:str)...
FILE: AWS/legos/aws_get_secrets_manager_secretARN/aws_get_secrets_manager_secretARN.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_secrets_manager_secretARN_printer (line 24) | def aws_get_secrets_manager_secretARN_printer(output):
function aws_get_secrets_manager_secretARN (line 31) | def aws_get_secrets_manager_secretARN(handle, region: str, secret_name:s...
FILE: AWS/legos/aws_get_security_group_details/aws_get_security_group_details.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_security_group_details_printer (line 19) | def aws_get_security_group_details_printer(output):
function aws_get_security_group_details (line 25) | def aws_get_security_group_details(handle, group_id: str, region: str) -...
FILE: AWS/legos/aws_get_service_quota_details/aws_get_service_quota_details.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_service_quota_details_printer (line 23) | def aws_get_service_quota_details_printer(output):
function aws_get_service_quota_details (line 30) | def aws_get_service_quota_details(handle, service_code:str, quota_code:s...
FILE: AWS/legos/aws_get_service_quotas/aws_get_service_quotas.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_get_service_quotas_printer (line 23) | def aws_get_service_quotas_printer(output):
function aws_get_service_quotas (line 30) | def aws_get_service_quotas(handle, service_code:str, region:str) -> List:
FILE: AWS/legos/aws_get_stopped_instance_volumes/aws_get_stopped_instance_volumes.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_stopped_instance_volumes_printer (line 19) | def aws_get_stopped_instance_volumes_printer(output):
function aws_get_stopped_instance_volumes (line 25) | def aws_get_stopped_instance_volumes(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_get_sts_caller_identity/aws_get_sts_caller_identity.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_sts_caller_identity_printer (line 12) | def aws_get_sts_caller_identity_printer(output):
function aws_get_sts_caller_identity (line 18) | def aws_get_sts_caller_identity(handle) -> Dict:
FILE: AWS/legos/aws_get_tags_of_all_resources/aws_get_tags_of_all_resources.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_tags_of_all_resources_printer (line 14) | def aws_get_tags_of_all_resources_printer(output):
function aws_get_tags_of_all_resources (line 19) | def aws_get_tags_of_all_resources(handle, region: str) -> List:
FILE: AWS/legos/aws_get_timed_out_lambdas/aws_get_timed_out_lambdas.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_timed_out_lambdas_printer (line 25) | def aws_get_timed_out_lambdas_printer(output):
function aws_get_timed_out_lambdas (line 31) | def aws_get_timed_out_lambdas(handle, days_back:int=1, region:str="") ->...
FILE: AWS/legos/aws_get_ttl_for_route53_records/aws_get_ttl_for_route53_records.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_ttl_for_route53_records_printer (line 19) | def aws_get_ttl_for_route53_records_printer(output):
function aws_get_ttl_for_route53_records (line 24) | def aws_get_ttl_for_route53_records(handle, hosted_zone_id:str) -> List:
FILE: AWS/legos/aws_get_ttl_under_given_hours/aws_get_ttl_under_given_hours.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_ttl_under_given_hours_printer (line 21) | def aws_get_ttl_under_given_hours_printer(output):
function aws_get_ttl_under_given_hours (line 27) | def aws_get_ttl_under_given_hours(handle, threshold: int = 1) -> Tuple:
FILE: AWS/legos/aws_get_unhealthy_instances/aws_get_unhealthy_instances.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_get_unhealthy_instances_printer (line 19) | def aws_get_unhealthy_instances_printer(output):
function aws_get_unhealthy_instances (line 28) | def aws_get_unhealthy_instances(handle, elb_name: str, region: str) -> L...
FILE: AWS/legos/aws_get_unhealthy_instances_from_elb/aws_get_unhealthy_instances_from_elb.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_unhealthy_instances_from_elb_printer (line 23) | def aws_get_unhealthy_instances_from_elb_printer(output):
function aws_get_unhealthy_instances_from_elb (line 30) | def aws_get_unhealthy_instances_from_elb(handle, elb_name: str = "", reg...
FILE: AWS/legos/aws_get_unused_route53_health_checks/aws_get_unused_route53_health_checks.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_get_unused_route53_health_checks_printer (line 19) | def aws_get_unused_route53_health_checks_printer(output):
function aws_get_unused_route53_health_checks (line 26) | def aws_get_unused_route53_health_checks(handle, hosted_zone_id: str = "...
FILE: AWS/legos/aws_get_users_with_old_access_keys/aws_get_users_with_old_access_keys.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_get_users_with_old_access_keys_printer (line 21) | def aws_get_users_with_old_access_keys_printer(output):
function aws_get_users_with_old_access_keys (line 27) | def aws_get_users_with_old_access_keys(handle, threshold_in_days: int = ...
FILE: AWS/legos/aws_launch_instance_from_ami/aws_launch_instance_from_ami.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_launch_instance_from_ami_printer (line 19) | def aws_launch_instance_from_ami_printer(output):
function aws_launch_instance_from_ami (line 25) | def aws_launch_instance_from_ami(handle, ami_id: str, region: str) -> List:
FILE: AWS/legos/aws_list_access_keys/aws_list_access_keys.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_list_access_keys_printer (line 17) | def aws_list_access_keys_printer(output):
function aws_list_access_keys (line 23) | def aws_list_access_keys(
FILE: AWS/legos/aws_list_all_iam_users/aws_list_all_iam_users.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_list_all_iam_users_printer (line 12) | def aws_list_all_iam_users_printer(output):
function aws_list_all_iam_users (line 17) | def aws_list_all_iam_users(handle) -> List:
FILE: AWS/legos/aws_list_all_regions/aws_list_all_regions.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_list_all_regions_printer (line 13) | def aws_list_all_regions_printer(output):
function aws_list_all_regions (line 19) | def aws_list_all_regions(handle) -> List:
FILE: AWS/legos/aws_list_application_loadbalancers/aws_list_application_loadbalancers.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_list_application_loadbalancers_printer (line 18) | def aws_list_application_loadbalancers_printer(output):
function aws_list_application_loadbalancers (line 24) | def aws_list_application_loadbalancers(handle, region: str) -> List:
FILE: AWS/legos/aws_list_attached_user_policies/aws_list_attached_user_policies.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_list_attached_user_policies_printer (line 16) | def aws_list_attached_user_policies_printer(output):
function aws_list_attached_user_policies (line 22) | def aws_list_attached_user_policies(handle, user_name: str) -> List:
FILE: AWS/legos/aws_list_clusters_with_low_utilization/aws_list_clusters_with_low_utilization.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_list_clusters_with_low_utilization_printer (line 23) | def aws_list_clusters_with_low_utilization_printer(output):
function aws_list_clusters_with_low_utilization (line 30) | def aws_list_clusters_with_low_utilization(handle, region: str = "", thr...
FILE: AWS/legos/aws_list_expiring_access_keys/aws_list_expiring_access_keys.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_list_expiring_access_keys_printer (line 18) | def aws_list_expiring_access_keys_printer(output):
function aws_list_expiring_access_keys (line 23) | def aws_list_expiring_access_keys(handle, threshold_days: int = 90)-> Tu...
FILE: AWS/legos/aws_list_expiring_acm_certificates/aws_list_expiring_acm_certificates.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_list_expiring_acm_certificates_printer (line 23) | def aws_list_expiring_acm_certificates_printer(output):
function aws_list_expiring_acm_certificates (line 28) | def aws_list_expiring_acm_certificates(handle, threshold_days: int = 90,...
FILE: AWS/legos/aws_list_hosted_zones/aws_list_hosted_zones.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_list_hosted_zones_printer (line 14) | def aws_list_hosted_zones_printer(output):
function aws_list_hosted_zones (line 19) | def aws_list_hosted_zones(handle) -> List:
FILE: AWS/legos/aws_list_unattached_elastic_ips/aws_list_unattached_elastic_ips.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_list_unattached_elastic_ips_printer (line 18) | def aws_list_unattached_elastic_ips_printer(output):
function aws_list_unattached_elastic_ips (line 25) | def aws_list_unattached_elastic_ips(handle, region: str = "") -> Tuple:
FILE: AWS/legos/aws_list_unhealthy_instances_in_target_group/aws_list_unhealthy_instances_in_target_group.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_list_unhealthy_instances_in_target_group_printer (line 15) | def aws_list_unhealthy_instances_in_target_group_printer(output):
function get_all_target_groups (line 20) | def get_all_target_groups(handle, r):
function aws_list_unhealthy_instances_in_target_group (line 31) | def aws_list_unhealthy_instances_in_target_group(handle, region: str=Non...
FILE: AWS/legos/aws_list_unused_secrets/aws_list_unused_secrets.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function aws_list_unused_secrets_printer (line 25) | def aws_list_unused_secrets_printer(output):
function aws_list_unused_secrets (line 31) | def aws_list_unused_secrets(handle, region: str = "", max_age_days: int ...
FILE: AWS/legos/aws_list_users_with_old_passwords/aws_list_users_with_old_passwords.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_list_users_with_old_passwords_printer (line 20) | def aws_list_users_with_old_passwords_printer(output):
function aws_list_users_with_old_passwords (line 26) | def aws_list_users_with_old_passwords(handle, threshold_days: int = 120)...
FILE: AWS/legos/aws_loadbalancer_list_instances/aws_loadbalancer_list_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_loadbalancer_list_instances_printer (line 27) | def aws_loadbalancer_list_instances_printer(output):
function aws_loadbalancer_list_instances (line 33) | def aws_loadbalancer_list_instances(
function get_instance_private_ip (line 102) | def get_instance_private_ip(ec2Client, instanceID: str) -> str:
FILE: AWS/legos/aws_make_bucket_public/aws_make_bucket_public.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_make_bucket_public_printer (line 21) | def aws_make_bucket_public_printer(output):
function aws_make_bucket_public (line 27) | def aws_make_bucket_public(handle, name: str, enable_write: bool) -> Dict:
FILE: AWS/legos/aws_make_rds_instance_not_publicly_accessible/aws_make_rds_instance_not_publicly_accessible.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_make_rds_instance_not_publicly_accessible_printer (line 20) | def aws_make_rds_instance_not_publicly_accessible_printer(output):
function aws_make_rds_instance_not_publicly_accessible (line 26) | def aws_make_rds_instance_not_publicly_accessible(handle, db_instance_id...
FILE: AWS/legos/aws_modify_ebs_volume_to_gp3/aws_modify_ebs_volume_to_gp3.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_modify_ebs_volume_to_gp3_printer (line 19) | def aws_modify_ebs_volume_to_gp3_printer(output):
function aws_modify_ebs_volume_to_gp3 (line 25) | def aws_modify_ebs_volume_to_gp3(handle, region: str, volume_id: str) ->...
FILE: AWS/legos/aws_modify_listener_for_http_redirection/aws_modify_listener_for_http_redirection.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_modify_listener_for_http_redirection_printer (line 17) | def aws_modify_listener_for_http_redirection_printer(output):
function aws_modify_listener_for_http_redirection (line 23) | def aws_modify_listener_for_http_redirection(handle, listener_arn: str, ...
FILE: AWS/legos/aws_modify_public_db_snapshots/aws_modify_public_db_snapshots.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_modify_public_db_snapshots_printer (line 18) | def aws_modify_public_db_snapshots_printer(output):
function aws_modify_public_db_snapshots (line 24) | def aws_modify_public_db_snapshots(handle, db_snapshot_identifier: str, ...
FILE: AWS/legos/aws_postgresql_get_configured_max_connections/aws_postgresql_get_configured_max_connections.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_postgresql_get_configured_max_connections_printer (line 18) | def aws_postgresql_get_configured_max_connections_printer(output):
function aws_postgresql_get_configured_max_connections (line 24) | def aws_postgresql_get_configured_max_connections(
FILE: AWS/legos/aws_postgresql_plot_active_connections/aws_postgresql_plot_active_connections.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_postgresql_plot_active_connections (line 27) | def aws_postgresql_plot_active_connections(
function get_normalized_active_connections (line 87) | def get_normalized_active_connections(
FILE: AWS/legos/aws_purchase_elasticcache_reserved_node/aws_purchase_elasticcache_reserved_node.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_purchase_elasticcache_reserved_node_printer (line 27) | def aws_purchase_elasticcache_reserved_node_printer(output):
function aws_purchase_elasticcache_reserved_node (line 33) | def aws_purchase_elasticcache_reserved_node(handle, region: str, reserve...
FILE: AWS/legos/aws_purchase_rds_reserved_instance/aws_purchase_rds_reserved_instance.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_purchase_rds_reserved_instance_printer (line 27) | def aws_purchase_rds_reserved_instance_printer(output):
function aws_purchase_rds_reserved_instance (line 33) | def aws_purchase_rds_reserved_instance(handle, region: str, reserved_ins...
FILE: AWS/legos/aws_purchase_redshift_reserved_node/aws_purchase_redshift_reserved_node.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_purchase_redshift_reserved_node_printer (line 27) | def aws_purchase_redshift_reserved_node_printer(output):
function aws_purchase_redshift_reserved_node (line 33) | def aws_purchase_redshift_reserved_node(handle, region: str, reserved_no...
FILE: AWS/legos/aws_put_bucket_cors/aws_put_bucket_cors.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_put_bucket_cors_printer (line 29) | def aws_put_bucket_cors_printer(output):
function aws_put_bucket_cors (line 35) | def aws_put_bucket_cors(handle, name: str, corsRules: List, region: str)...
FILE: AWS/legos/aws_put_bucket_policy/aws_put_bucket_policy.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_put_bucket_policy_printer (line 27) | def aws_put_bucket_policy_printer(output):
function aws_put_bucket_policy (line 33) | def aws_put_bucket_policy(handle, name: str, policy: str, region: str) -...
FILE: AWS/legos/aws_read_object/aws_read_object.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_read_object_printer (line 22) | def aws_read_object_printer(output):
function aws_read_object (line 28) | def aws_read_object(handle, name: str, key: str) -> List:
FILE: AWS/legos/aws_register_instances/aws_register_instances.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_register_instances_printer (line 21) | def aws_register_instances_printer(output):
function aws_register_instances (line 27) | def aws_register_instances(handle, elb_name: str, instance_ids: List, re...
FILE: AWS/legos/aws_release_elastic_ip/aws_release_elastic_ip.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_release_elastic_ip_printer (line 19) | def aws_release_elastic_ip_printer(output):
function aws_release_elastic_ip (line 25) | def aws_release_elastic_ip(handle, region: str, allocation_id: str) -> D...
FILE: AWS/legos/aws_renew_expiring_acm_certificates/aws_renew_expiring_acm_certificates.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function aws_renew_expiring_acm_certificates_printer (line 18) | def aws_renew_expiring_acm_certificates_printer(output):
function aws_renew_expiring_acm_certificates (line 23) | def aws_renew_expiring_acm_certificates(handle, aws_certificate_arn: Lis...
FILE: AWS/legos/aws_request_service_quota_increase/aws_request_service_quota_increase.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function aws_request_service_quota_increase_printer (line 28) | def aws_request_service_quota_increase_printer(output):
function aws_request_service_quota_increase (line 35) | def aws_request_service_quota_increase(
FILE: AWS/legos/aws_restart_ec2_instances/aws_restart_ec2_instances.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_restart_ec2_instances_printer (line 18) | def aws_restart_ec2_instances_printer(output):
function aws_restart_ec2_instances (line 25) | def aws_restart_ec2_instances(handle, instance_ids: List, region: str) -...
FILE: AWS/legos/aws_revoke_policy_from_iam_user/aws_revoke_policy_from_iam_user.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_revoke_policy_from_iam_user_printer (line 18) | def aws_revoke_policy_from_iam_user_printer(output):
function aws_revoke_policy_from_iam_user (line 24) | def aws_revoke_policy_from_iam_user(handle, user_name: str, policy_arn: ...
FILE: AWS/legos/aws_run_instances/aws_run_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_run_instances_printer (line 19) | def aws_run_instances_printer(output):
function aws_run_instances (line 25) | def aws_run_instances(handle, instance_id: str, region: str) -> Dict:
FILE: AWS/legos/aws_schedule_pause_resume_enabled/aws_schedule_pause_resume_enabled.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_schedule_pause_resume_enabled_printer (line 27) | def aws_schedule_pause_resume_enabled_printer(output):
function aws_schedule_pause_resume_enabled (line 33) | def aws_schedule_pause_resume_enabled(handle,
FILE: AWS/legos/aws_send_email/aws_send_email.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function aws_send_email_printer (line 28) | def aws_send_email_printer(output):
function aws_send_email (line 34) | def aws_send_email(handle, Region: str, Sender: str, Receiver: str, Subj...
FILE: AWS/legos/aws_service_quota_limits/aws_service_quota_limits.py
class InputSchema (line 20) | class InputSchema(BaseModel):
function aws_service_quota_limits_printer (line 33) | def aws_service_quota_limits_printer(output):
function aws_service_quota_limits (line 41) | def aws_service_quota_limits(
FILE: AWS/legos/aws_service_quota_limits_vpc/aws_service_quota_limits_vpc.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function aws_service_quota_limits_vpc_printer (line 24) | def aws_service_quota_limits_vpc_printer(output):
function aws_service_quota_limits_vpc (line 32) | def aws_service_quota_limits_vpc(handle, region: str, warning_percentage...
FILE: AWS/legos/aws_stop_instances/aws_stop_instances.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function aws_stop_instances_printer (line 18) | def aws_stop_instances_printer(output):
function aws_stop_instances (line 24) | def aws_stop_instances(handle, instance_id: str, region: str) -> Dict:
FILE: AWS/legos/aws_tag_ec2_instances/aws_tag_ec2_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_tag_ec2_instances_printer (line 27) | def aws_tag_ec2_instances_printer(output):
function aws_tag_ec2_instances (line 34) | def aws_tag_ec2_instances(handle, instance: str, tag_key: str, tag_value...
FILE: AWS/legos/aws_target_group_list_instances/aws_target_group_list_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_target_group_list_instances_printer (line 17) | def aws_target_group_list_instances_printer(output):
function aws_target_group_list_instances (line 23) | def aws_target_group_list_instances(handle, arn: str) -> List:
function get_instance_private_ip (line 62) | def get_instance_private_ip(ec2Client, instanceID: str) -> str:
FILE: AWS/legos/aws_target_group_list_unhealthy_instances/aws_target_group_list_unhealthy_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_target_group_list_unhealthy_instances_printer (line 17) | def aws_target_group_list_unhealthy_instances_printer(output):
function aws_target_group_list_unhealthy_instances (line 23) | def aws_target_group_list_unhealthy_instances(handle, arn: str) -> List:
FILE: AWS/legos/aws_target_group_register_unregister_instances/aws_target_group_register_unregister_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_target_group_register_unregister_instances (line 32) | def aws_target_group_register_unregister_instances(handle, arn: str, ins...
FILE: AWS/legos/aws_terminate_ec2_instances/aws_terminate_ec2_instances.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_terminate_ec2_instances_printer (line 19) | def aws_terminate_ec2_instances_printer(output):
function aws_terminate_ec2_instances (line 25) | def aws_terminate_ec2_instances(handle, instance_ids: List, region: str)...
FILE: AWS/legos/aws_update_access_key/aws_update_access_key.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_update_access_key_printer (line 26) | def aws_update_access_key_printer(output):
function aws_update_access_key (line 33) | def aws_update_access_key(
FILE: AWS/legos/aws_update_ttl_for_route53_records/aws_update_ttl_for_route53_records.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function aws_update_ttl_for_route53_records_printer (line 28) | def aws_update_ttl_for_route53_records_printer(output):
function aws_update_ttl_for_route53_records (line 33) | def aws_update_ttl_for_route53_records(
FILE: AWS/legos/aws_upload_file_to_s3/aws_upload_file_to_s3.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function aws_upload_file_to_s3_printer (line 23) | def aws_upload_file_to_s3_printer(output):
function aws_upload_file_to_s3 (line 29) | def aws_upload_file_to_s3(handle, bucketName: str, file: __file__, prefi...
FILE: AWS/legos/aws_vpc_service_quota_warning/aws_vpc_service_quota_warning.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function aws_vpc_service_quota_warning_printer (line 24) | def aws_vpc_service_quota_warning_printer(output):
function aws_vpc_service_quota_warning (line 32) | def aws_vpc_service_quota_warning(handle, region: str, warning_percentag...
FILE: Airflow/legos/airflow_check_dag_status/airflow_check_dag_status.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function airflow_check_dag_status_printer (line 20) | def airflow_check_dag_status_printer(output):
function airflow_check_dag_status (line 27) | def airflow_check_dag_status(handle, dag_id: str = "") -> Dict:
FILE: Airflow/legos/airflow_get_handle/airflow_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function airflow_get_handle (line 12) | def airflow_get_handle(handle):
FILE: Airflow/legos/airflow_list_DAG_runs/airflow_list_DAG_runs.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function airflow_list_DAG_runs_printer (line 18) | def airflow_list_DAG_runs_printer(output):
function airflow_list_DAG_runs (line 25) | def airflow_list_DAG_runs(handle, dag_id: str = "") -> Dict:
FILE: Airflow/legos/airflow_trigger_dag_run/airflow_trigger_dag_run.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function airflow_trigger_dag_run_printer (line 37) | def airflow_trigger_dag_run_printer(output):
function airflow_trigger_dag_run (line 44) | def airflow_trigger_dag_run(handle,
FILE: Azure/legos/azure_get_handle/azure_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function azure_get_handle (line 12) | def azure_get_handle(handle):
FILE: Datadog/legos/datadog_delete_incident/datadog_delete_incident.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function datadog_delete_incident_printer (line 15) | def datadog_delete_incident_printer(output):
function datadog_delete_incident (line 20) | def datadog_delete_incident(handle, incident_id: str) -> None:
FILE: Datadog/legos/datadog_get_event/datadog_get_event.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function datadog_get_event_printer (line 18) | def datadog_get_event_printer(output):
function datadog_get_event (line 24) | def datadog_get_event(handle, event_id: int) -> Dict:
FILE: Datadog/legos/datadog_get_handle/datadog_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function datadog_get_handle (line 12) | def datadog_get_handle(handle):
FILE: Datadog/legos/datadog_get_incident/datadog_get_incident.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function datadog_get_incident_printer (line 16) | def datadog_get_incident_printer(output):
function datadog_get_incident (line 21) | def datadog_get_incident(handle, incident_id: str) -> Dict:
FILE: Datadog/legos/datadog_get_metric_metadata/datadog_get_metric_metadata.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function datadog_get_metric_metadata_printer (line 17) | def datadog_get_metric_metadata_printer(output):
function datadog_get_metric_metadata (line 23) | def datadog_get_metric_metadata(handle,
FILE: Datadog/legos/datadog_get_monitor/datadog_get_monitor.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function datadog_get_monitor_printer (line 17) | def datadog_get_monitor_printer(output):
function datadog_get_monitor (line 23) | def datadog_get_monitor(handle,
FILE: Datadog/legos/datadog_get_monitorid/datadog_get_monitorid.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function datadog_get_monitorid_printer (line 16) | def datadog_get_monitorid_printer(output):
function datadog_get_monitorid (line 21) | def datadog_get_monitorid(handle, name: str) -> int:
FILE: Datadog/legos/datadog_list_active_metrics/datadog_list_active_metrics.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function datadog_list_active_metrics_printer (line 24) | def datadog_list_active_metrics_printer(output):
function datadog_list_active_metrics (line 30) | def datadog_list_active_metrics(handle,
FILE: Datadog/legos/datadog_list_all_monitors/datadog_list_all_monitors.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function datadog_list_all_monitors_printer (line 15) | def datadog_list_all_monitors_printer(output):
function datadog_list_all_monitors (line 21) | def datadog_list_all_monitors(handle) -> List[dict]:
FILE: Datadog/legos/datadog_list_metrics/datadog_list_metrics.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function datadog_list_metrics_printer (line 19) | def datadog_list_metrics_printer(output):
function datadog_list_metrics (line 24) | def datadog_list_metrics(handle, query: str = "") -> Dict:
FILE: Datadog/legos/datadog_mute_or_unmute_alerts/datadog_mute_or_unmute_alerts.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function datadog_mute_or_unmute_alerts_printer (line 29) | def datadog_mute_or_unmute_alerts_printer(output):
function datadog_mute_or_unmute_alerts (line 34) | def datadog_mute_or_unmute_alerts(handle,
FILE: Datadog/legos/datadog_query_metrics/datadog_query_metrics.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function datadog_query_metrics_printer (line 24) | def datadog_query_metrics_printer(output):
function datadog_query_metrics (line 30) | def datadog_query_metrics(handle,
FILE: Datadog/legos/datadog_schedule_downtime/datadog_schedule_downtime.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function datadog_schedule_downtime_printer (line 33) | def datadog_schedule_downtime_printer(output):
function datadog_schedule_downtime (line 38) | def datadog_schedule_downtime(handle,
FILE: Datadog/legos/datadog_search_monitors/datadog_search_monitors.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function datadog_search_monitors_printer (line 26) | def datadog_search_monitors_printer(output):
function datadog_search_monitors (line 32) | def datadog_search_monitors(handle,
FILE: ElasticSearch/legos/elasticsearch_check_health_status/elasticsearch_check_health_status.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function elasticsearch_check_health_status_printer (line 16) | def elasticsearch_check_health_status_printer(output):
function elasticsearch_check_health_status (line 22) | def elasticsearch_check_health_status(handle, unassigned_shards:int = 20...
FILE: ElasticSearch/legos/elasticsearch_check_large_index_size/elasticsearch_check_large_index_size.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function elasticsearch_check_large_index_size_printer (line 18) | def elasticsearch_check_large_index_size_printer(result):
function elasticsearch_check_large_index_size (line 27) | def elasticsearch_check_large_index_size(handle, threshold: float = 1048...
FILE: ElasticSearch/legos/elasticsearch_compare_cluster_disk_size_to_threshold/elasticsearch_compare_cluster_disk_size_to_threshold.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function elasticsearch_compare_cluster_disk_size_to_threshold_printer (line 15) | def elasticsearch_compare_cluster_disk_size_to_threshold_printer(output):
function elasticsearch_compare_cluster_disk_size_to_threshold (line 23) | def elasticsearch_compare_cluster_disk_size_to_threshold(handle, thresho...
FILE: ElasticSearch/legos/elasticsearch_delete_unassigned_shards/elasticsearch_delete_unassigned_shards.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function elasticsearch_delete_unassigned_shards_printer (line 14) | def elasticsearch_delete_unassigned_shards_printer(output):
function elasticsearch_delete_unassigned_shards (line 20) | def elasticsearch_delete_unassigned_shards(handle) -> str:
FILE: ElasticSearch/legos/elasticsearch_disable_shard_allocation/elasticsearch_disable_shard_allocation.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function elasticsearch_disable_shard_allocation_printer (line 17) | def elasticsearch_disable_shard_allocation_printer(output):
function elasticsearch_disable_shard_allocation (line 24) | def elasticsearch_disable_shard_allocation(handle) -> Dict:
FILE: ElasticSearch/legos/elasticsearch_enable_shard_allocation/elasticsearch_enable_shard_allocation.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function elasticsearch_enable_shard_allocation_printer (line 17) | def elasticsearch_enable_shard_allocation_printer(output):
function elasticsearch_enable_shard_allocation (line 24) | def elasticsearch_enable_shard_allocation(handle) -> Dict:
FILE: ElasticSearch/legos/elasticsearch_get_cluster_statistics/elasticsearch_get_cluster_statistics.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function elasticsearch_get_cluster_statistics_printer (line 17) | def elasticsearch_get_cluster_statistics_printer(output):
function elasticsearch_get_cluster_statistics (line 57) | def elasticsearch_get_cluster_statistics(handle) -> Dict:
FILE: ElasticSearch/legos/elasticsearch_get_handle/elasticsearch_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function elasticsearch_get_handle (line 12) | def elasticsearch_get_handle(handle):
FILE: ElasticSearch/legos/elasticsearch_get_index_health/elasticsearch_get_index_health.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function elasticsearch_get_index_health_printer (line 17) | def elasticsearch_get_index_health_printer(result):
function elasticsearch_get_index_health (line 40) | def elasticsearch_get_index_health(handle, index_name="") -> Tuple:
FILE: ElasticSearch/legos/elasticsearch_list_allocations/elasticsearch_list_allocations.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function elasticsearch_list_allocations_printer (line 14) | def elasticsearch_list_allocations_printer(output):
function elasticsearch_list_allocations (line 20) | def elasticsearch_list_allocations(handle) -> str:
FILE: ElasticSearch/legos/elasticsearch_list_nodes/elasticsearch_list_nodes.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function elasticsearch_list_nodes_printer (line 14) | def elasticsearch_list_nodes_printer(output):
function elasticsearch_list_nodes (line 20) | def elasticsearch_list_nodes(handle) -> str:
FILE: ElasticSearch/legos/elasticsearch_search_query/elasticsearch_search_query.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function elasticsearch_search_query_printer (line 36) | def elasticsearch_search_query_printer(output):
function elasticsearch_search_query (line 42) | def elasticsearch_search_query(handle,
FILE: GCP/legos/gcp_add_lifecycle_policy_to_bucket/gcp_add_lifecycle_policy_to_bucket.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function gcp_add_lifecycle_policy_to_bucket_printer (line 21) | def gcp_add_lifecycle_policy_to_bucket_printer(output):
function gcp_add_lifecycle_policy_to_bucket (line 26) | def gcp_add_lifecycle_policy_to_bucket(handle, bucket_name:str, age:int)...
FILE: GCP/legos/gcp_add_member_to_iam_role/gcp_add_member_to_iam_role.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_add_member_to_iam_role_printer (line 29) | def gcp_add_member_to_iam_role_printer(output):
function gcp_add_member_to_iam_role (line 34) | def gcp_add_member_to_iam_role(handle, project_id: str, role: str, membe...
FILE: GCP/legos/gcp_add_role_to_service_account/gcp_add_role_to_service_account.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_add_role_to_service_account_printer (line 29) | def gcp_add_role_to_service_account_printer(output):
function gcp_add_role_to_service_account (line 34) | def gcp_add_role_to_service_account(handle, project_id: str, role: str, ...
FILE: GCP/legos/gcp_create_bucket/gcp_create_bucket.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function gcp_create_bucket_printer (line 33) | def gcp_create_bucket_printer(output):
function gcp_create_bucket (line 38) | def gcp_create_bucket(handle, bucket_name: str, location: str, project_n...
FILE: GCP/legos/gcp_create_disk_snapshot/gcp_create_disk_snapshot.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_create_disk_snapshot_printer (line 29) | def gcp_create_disk_snapshot_printer(output):
function gcp_create_disk_snapshot (line 34) | def gcp_create_disk_snapshot(handle, project: str, zone:str, disk: str, ...
FILE: GCP/legos/gcp_create_filestore_instance/gcp_create_filestore_instance.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_create_filestore_instance_printer (line 48) | def gcp_create_filestore_instance_printer(output):
function gcp_create_filestore_instance (line 53) | def gcp_create_filestore_instance(handle, instance_id:str, project_name:...
FILE: GCP/legos/gcp_create_gke_cluster/gcp_create_gke_cluster.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function gcp_create_gke_cluster_printer (line 27) | def gcp_create_gke_cluster_printer(output):
function gcp_create_gke_cluster (line 32) | def gcp_create_gke_cluster(handle, project_id: str, zone: str, cluster_n...
FILE: GCP/legos/gcp_create_service_account/gcp_create_service_account.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_create_service_account_printer (line 25) | def gcp_create_service_account_printer(output):
function gcp_create_service_account (line 30) | def gcp_create_service_account(handle, project_id: str, accountId: str, ...
FILE: GCP/legos/gcp_delete_bucket/gcp_delete_bucket.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function gcp_delete_bucket_printer (line 18) | def gcp_delete_bucket_printer(output):
function gcp_delete_bucket (line 23) | def gcp_delete_bucket(handle, bucket_name: str) -> Dict:
FILE: GCP/legos/gcp_delete_filestore_instance/gcp_delete_filestore_instance.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_delete_filestore_instance_printer (line 24) | def gcp_delete_filestore_instance_printer(output):
function gcp_delete_filestore_instance (line 30) | def gcp_delete_filestore_instance(handle, instance_id:str, project_name:...
FILE: GCP/legos/gcp_delete_object_from_bucket/gcp_delete_object_from_bucket.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function gcp_delete_object_from_bucket_printer (line 19) | def gcp_delete_object_from_bucket_printer(output):
function gcp_delete_object_from_bucket (line 25) | def gcp_delete_object_from_bucket(handle,blob_name: str, bucket_name: st...
FILE: GCP/legos/gcp_delete_service_account/gcp_delete_service_account.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_delete_service_account_printer (line 18) | def gcp_delete_service_account_printer(output):
function gcp_delete_service_account (line 24) | def gcp_delete_service_account(handle, sa_id: str) -> Dict:
FILE: GCP/legos/gcp_describe_gke_cluster/gcp_describe_gke_cluster.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function gcp_describe_gke_cluster_printer (line 23) | def gcp_describe_gke_cluster_printer(output):
function gcp_describe_gke_cluster (line 29) | def gcp_describe_gke_cluster(handle, project_id: str, zone: str, cluster...
FILE: GCP/legos/gcp_fetch_objects_from_bucket/gcp_fetch_objects_from_bucket.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_fetch_objects_from_bucket_printer (line 16) | def gcp_fetch_objects_from_bucket_printer(output):
function gcp_fetch_objects_from_bucket (line 23) | def gcp_fetch_objects_from_bucket(handle, bucket_name: str) -> List:
FILE: GCP/legos/gcp_get_buckets_without_lifecycle_policies/gcp_get_buckets_without_lifecycle_policies.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_get_buckets_without_lifecycle_policies_printer (line 14) | def gcp_get_buckets_without_lifecycle_policies_printer(output):
function gcp_get_buckets_without_lifecycle_policies (line 19) | def gcp_get_buckets_without_lifecycle_policies(handle) -> Tuple:
FILE: GCP/legos/gcp_get_forwarding_rules_details/gcp_get_forwarding_rules_details.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function gcp_get_forwarding_rules_details_printer (line 13) | def gcp_get_forwarding_rules_details_printer(output):
function get_backend_services (line 18) | def get_backend_services(project, handle):
function get_target_proxy (line 23) | def get_target_proxy(forwarding_rule, project, handle):
function gcp_get_forwarding_rules_details (line 41) | def gcp_get_forwarding_rules_details(handle, project: str) -> List:
FILE: GCP/legos/gcp_get_handle/gcp_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function gcp_get_handle (line 12) | def gcp_get_handle(handle):
FILE: GCP/legos/gcp_get_instances_without_label/gcp_get_instances_without_label.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_get_instances_without_label_printer (line 22) | def gcp_get_instances_without_label_printer(output):
function gcp_get_instances_without_label (line 28) | def gcp_get_instances_without_label(handle, project: str, zone:str) -> L...
FILE: GCP/legos/gcp_get_unused_backend_services/gcp_get_unused_backend_services.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function gcp_get_unused_backend_services_printer (line 17) | def gcp_get_unused_backend_services_printer(output):
function gcp_get_unused_backend_services (line 22) | def gcp_get_unused_backend_services(handle, project: str) -> List:
FILE: GCP/legos/gcp_list_buckets/gcp_list_buckets.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_list_buckets_printer (line 13) | def gcp_list_buckets_printer(output):
function gcp_list_buckets (line 20) | def gcp_list_buckets(handle) -> List:
FILE: GCP/legos/gcp_list_compute_instances/gcp_list_compute_instances.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function gcp_list_compute_instances_printer (line 17) | def gcp_list_compute_instances_printer(output):
function gcp_list_compute_instances (line 23) | def gcp_list_compute_instances(handle, project: str, zone:str="") -> List:
FILE: GCP/legos/gcp_list_compute_instances_by_label/gcp_list_compute_instances_by_label.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_list_compute_instances_by_label_printer (line 30) | def gcp_list_compute_instances_by_label_printer(output):
function gcp_list_compute_instances_by_label (line 36) | def gcp_list_compute_instances_by_label(
FILE: GCP/legos/gcp_list_compute_instances_by_vpc/gcp_list_compute_instances_by_vpc.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_list_compute_instances_by_vpc_printer (line 25) | def gcp_list_compute_instances_by_vpc_printer(output):
function gcp_list_compute_instances_by_vpc (line 31) | def gcp_list_compute_instances_by_vpc(
FILE: GCP/legos/gcp_list_gke_cluster/gcp_list_gke_cluster.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function gcp_list_gke_cluster_printer (line 17) | def gcp_list_gke_cluster_printer(output):
function gcp_list_gke_cluster (line 22) | def gcp_list_gke_cluster(handle, project_id: str, zone: str) -> List:
FILE: GCP/legos/gcp_list_nodes_in_gke_cluster/gcp_list_nodes_in_gke_cluster.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function gcp_list_nodes_in_gke_cluster_printer (line 21) | def gcp_list_nodes_in_gke_cluster_printer(output):
function gcp_list_nodes_in_gke_cluster (line 26) | def gcp_list_nodes_in_gke_cluster(handle, project_id: str, zone: str, cl...
FILE: GCP/legos/gcp_list_public_buckets/gcp_list_public_buckets.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function gcp_list_public_buckets_printer (line 12) | def gcp_list_public_buckets_printer(output):
function gcp_list_public_buckets (line 19) | def gcp_list_public_buckets(handle) -> List:
FILE: GCP/legos/gcp_list_secrets/gcp_list_secrets.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_list_secrets_printer (line 15) | def gcp_list_secrets_printer(output):
function gcp_list_secrets (line 20) | def gcp_list_secrets(handle, name: str) -> List:
FILE: GCP/legos/gcp_list_service_accounts/gcp_list_service_accounts.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_list_service_accounts_printer (line 17) | def gcp_list_service_accounts_printer(output):
function gcp_list_service_accounts (line 22) | def gcp_list_service_accounts(handle, project_id: str) -> List:
FILE: GCP/legos/gcp_list_vms_access/gcp_list_vms_access.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_list_vms_access_printer (line 22) | def gcp_list_vms_access_printer(output):
function gcp_list_vms_access (line 30) | def gcp_list_vms_access(handle, project:str, zone:str) -> List:
FILE: GCP/legos/gcp_remove_member_from_iam_role/gcp_remove_member_from_iam_role.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_remove_member_from_iam_role_printer (line 29) | def gcp_remove_member_from_iam_role_printer(output):
function gcp_remove_member_from_iam_role (line 34) | def gcp_remove_member_from_iam_role(
FILE: GCP/legos/gcp_remove_role_from_service_account/gcp_remove_role_from_service_account.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_remove_role_from_service_account_printer (line 25) | def gcp_remove_role_from_service_account_printer(output):
function gcp_remove_role_from_service_account (line 31) | def gcp_remove_role_from_service_account(
FILE: GCP/legos/gcp_remove_user_role/gcp_remove_user_role.py
class InputSchema (line 4) | class InputSchema(BaseModel):
function gcp_remove_user_role_printer (line 18) | def gcp_remove_user_role_printer(output):
function gcp_remove_user_role (line 24) | def gcp_remove_user_role(handle, policy, role: str, member: str, resourc...
FILE: GCP/legos/gcp_resize_gke_cluster/gcp_resize_gke_cluster.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function gcp_resize_gke_cluster_printer (line 31) | def gcp_resize_gke_cluster_printer(output):
function gcp_resize_gke_cluster (line 37) | def gcp_resize_gke_cluster(
FILE: GCP/legos/gcp_restart_compute_instances/gcp_restart_compute_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_restart_compute_instances_printer (line 26) | def gcp_restart_compute_instances_printer(output):
function gcp_restart_compute_instances (line 32) | def gcp_restart_compute_instances(
FILE: GCP/legos/gcp_restore_disk_from_snapshot/gcp_restore_disk_from_snapshot.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function gcp_restore_disk_from_snapshot_printer (line 31) | def gcp_restore_disk_from_snapshot_printer(output):
function gcp_restore_disk_from_snapshot (line 37) | def gcp_restore_disk_from_snapshot(handle, project: str, zone: str, disk...
FILE: GCP/legos/gcp_save_csv_to_google_sheets_v1/gcp_save_csv_to_google_sheets_v1.py
class InputSchema (line 25) | class InputSchema(BaseModel):
function gcp_save_csv_to_google_sheets_v1_printer (line 41) | def gcp_save_csv_to_google_sheets_v1_printer(output):
function gcp_save_csv_to_google_sheets_v1 (line 47) | def gcp_save_csv_to_google_sheets_v1(
FILE: GCP/legos/gcp_stop_compute_instances/gcp_stop_compute_instances.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function gcp_stop_compute_instances_printer (line 26) | def gcp_stop_compute_instances_printer(output):
function gcp_stop_compute_instances (line 32) | def gcp_stop_compute_instances(handle, project_name: str, zone:str, inst...
FILE: GCP/legos/gcp_upload_file_to_bucket/gcp_upload_file_to_bucket.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function gcp_upload_file_to_bucket_printer (line 24) | def gcp_upload_file_to_bucket_printer(output):
function gcp_upload_file_to_bucket (line 30) | def gcp_upload_file_to_bucket(handle,blob_name: str, bucket_name: str, d...
FILE: Github/legos/github_assign_issue/github_assign_issue.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function github_assign_issue_printer (line 34) | def github_assign_issue_printer(output):
function github_assign_issue (line 40) | def github_assign_issue(
FILE: Github/legos/github_close_pull_request/github_close_pull_request.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_close_pull_request_printer (line 26) | def github_close_pull_request_printer(output):
function github_close_pull_request (line 31) | def github_close_pull_request(handle, owner:str, repository:str, pull_re...
FILE: Github/legos/github_count_stars/github_count_stars.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function github_count_stars_printer (line 19) | def github_count_stars_printer(output):
function github_count_stars (line 24) | def github_count_stars(handle, owner:str, repository:str) -> int:
FILE: Github/legos/github_create_issue/github_create_issue.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_create_issue_printer (line 36) | def github_create_issue_printer(output):
function github_create_issue (line 42) | def github_create_issue(
FILE: Github/legos/github_create_team/github_create_team.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function github_create_team_printer (line 35) | def github_create_team_printer(output):
function github_create_team (line 40) | def github_create_team(
FILE: Github/legos/github_delete_branch/github_delete_branch.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function github_delete_branch_printer (line 24) | def github_delete_branch_printer(output):
function github_delete_branch (line 29) | def github_delete_branch(handle, owner:str, repository: str, branch_name...
FILE: Github/legos/github_get_branch/github_get_branch.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_get_branch_printer (line 27) | def github_get_branch_printer(output):
function github_get_branch (line 32) | def github_get_branch(handle, owner:str, repository: str, branch_name: s...
FILE: Github/legos/github_get_handle/github_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function github_get_handle (line 12) | def github_get_handle(handle):
FILE: Github/legos/github_get_issue/github_get_issue.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_get_issue_printer (line 28) | def github_get_issue_printer(output):
function github_get_issue (line 34) | def github_get_issue(handle, owner:str, repository:str, issue_number:int...
FILE: Github/legos/github_get_open_branches/github_get_open_branches.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_get_open_branches_printer (line 23) | def github_get_open_branches_printer(output):
function github_get_open_branches (line 29) | def github_get_open_branches(handle, owner: str, repository: str)-> List:
FILE: Github/legos/github_get_open_pull_requests/github_get_open_pull_requests.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_get_open_pull_requests_printer (line 21) | def github_get_open_pull_requests_printer(output_tuple):
function github_get_open_pull_requests (line 34) | def github_get_open_pull_requests(handle, repository: str, owner: str = ...
FILE: Github/legos/github_get_pull_request/github_get_pull_request.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_get_pull_request_printer (line 26) | def github_get_pull_request_printer(output):
function github_get_pull_request (line 31) | def github_get_pull_request(handle, owner:str, repository:str, pull_requ...
FILE: Github/legos/github_get_team/github_get_team.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_get_team_printer (line 21) | def github_get_team_printer(output):
function github_get_team (line 26) | def github_get_team(handle, organization_name:str, team_name:str) -> Dict:
FILE: Github/legos/github_get_user/github_get_user.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_get_user_printer (line 18) | def github_get_user_printer(output):
function github_get_user (line 23) | def github_get_user(handle, owner:str) -> Dict:
FILE: Github/legos/github_invite_user_to_org/github_invite_user_to_org.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function github_invite_user_to_org_printer (line 35) | def github_invite_user_to_org_printer(output):
function github_invite_user_to_org (line 41) | def github_invite_user_to_org(
FILE: Github/legos/github_issue_comment/github_issue_comment.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_issue_comment_printer (line 29) | def github_issue_comment_printer(output):
function github_issue_comment (line 35) | def github_issue_comment(
FILE: Github/legos/github_list_open_issues/github_list_open_issues.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function github_list_open_issues_printer (line 25) | def github_list_open_issues_printer(output):
function github_list_open_issues (line 31) | def github_list_open_issues(handle, owner:str, repository:str) -> List:
FILE: Github/legos/github_list_org_members/github_list_org_members.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_list_org_members_printer (line 19) | def github_list_org_members_printer(output):
function github_list_org_members (line 24) | def github_list_org_members(handle, organization_name:str)-> List:
FILE: Github/legos/github_list_pull_request_commits/github_list_pull_request_commits.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_list_pull_request_commits_printer (line 27) | def github_list_pull_request_commits_printer(output):
function github_list_pull_request_commits (line 32) | def github_list_pull_request_commits(
FILE: Github/legos/github_list_pull_request_reviewers/github_list_pull_request_reviewers.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_get_pull_request_reviewers_printer (line 27) | def github_get_pull_request_reviewers_printer(output):
function github_list_pull_request_reviewers (line 32) | def github_list_pull_request_reviewers(
FILE: Github/legos/github_list_pull_requests/github_list_pull_requests.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_list_pull_requests_printer (line 22) | def github_list_pull_requests_printer(output):
function github_list_pull_requests (line 27) | def github_list_pull_requests(handle, owner:str, repository:str) -> List:
FILE: Github/legos/github_list_stale_issues/github_list_stale_issues.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_list_stale_issues_printer (line 28) | def github_list_stale_issues_printer(output):
function github_list_stale_issues (line 41) | def github_list_stale_issues(handle, repository:str, age_to_stale:int=14...
FILE: Github/legos/github_list_stale_pull_requests/github_list_stale_pull_requests.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_list_stale_pull_requests_printer (line 28) | def github_list_stale_pull_requests_printer(output_tuple):
function github_list_stale_pull_requests (line 40) | def github_list_stale_pull_requests(handle, repository: str, threshold: ...
FILE: Github/legos/github_list_stargazers/github_list_stargazers.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_list_stargazers_printer (line 24) | def github_list_stargazers_printer(output):
function github_list_stargazers (line 29) | def github_list_stargazers(handle, owner:str, repository:str) -> List:
FILE: Github/legos/github_list_team_members/github_list_team_members.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function github_list_team_members_printer (line 20) | def github_list_team_members_printer(output):
function github_list_team_members (line 25) | def github_list_team_members(handle, organization_name:str, team_name:st...
FILE: Github/legos/github_list_team_repos/github_list_team_repos.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_list_team_repos_printer (line 23) | def github_list_team_repos_printer(output):
function github_list_team_repos (line 28) | def github_list_team_repos(handle, organization_name:str, team_name:str)...
FILE: Github/legos/github_list_teams_in_org/github_list_teams_in_org.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_list_teams_in_org_printer (line 18) | def github_list_teams_in_org_printer(output):
function github_list_teams_in_org (line 23) | def github_list_teams_in_org(handle, organization_name:str) -> List:
FILE: Github/legos/github_list_webhooks/github_list_webhooks.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function github_list_webhooks_printer (line 21) | def github_list_webhooks_printer(output):
function github_list_webhooks (line 26) | def github_list_webhooks(handle, owner:str, repository: str) -> List:
FILE: Github/legos/github_merge_pull_request/github_merge_pull_request.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_merge_pull_request_printer (line 30) | def github_merge_pull_request_printer(output):
function github_merge_pull_request (line 36) | def github_merge_pull_request(
FILE: Github/legos/github_remove_member_from_org/github_remove_member_from_org.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function github_remove_member_from_org_printer (line 22) | def github_remove_member_from_org_printer(output):
function github_remove_member_from_org (line 27) | def github_remove_member_from_org(handle, organization_name:str, usernam...
FILE: Grafana/legos/grafana_get_handle/grafana_get_handle.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function grafana_get_handle (line 13) | def grafana_get_handle(handle: Grafana) -> Grafana:
FILE: Grafana/legos/grafana_list_alerts/grafana_list_alerts.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function grafana_list_alerts_printer (line 24) | def grafana_list_alerts_printer(output):
function grafana_list_alerts (line 31) | def grafana_list_alerts(
FILE: Hadoop/legos/hadoop_get_cluster_apps/hadoop_get_cluster_apps.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function hadoop_get_cluster_apps_printer (line 18) | def hadoop_get_cluster_apps_printer(output):
function hadoop_get_cluster_apps (line 24) | def hadoop_get_cluster_apps(handle, appid: str = "") -> Dict:
FILE: Hadoop/legos/hadoop_get_cluster_appstatistics/hadoop_get_cluster_appstatistics.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function hadoop_get_cluster_appstatistics_printer (line 25) | def hadoop_get_cluster_appstatistics_printer(output):
function hadoop_get_cluster_appstatistics (line 31) | def hadoop_get_cluster_appstatistics(handle, states: str = "", applicati...
FILE: Hadoop/legos/hadoop_get_cluster_metrics/hadoop_get_cluster_metrics.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function hadoop_get_cluster_metrics_printer (line 15) | def hadoop_get_cluster_metrics_printer(output):
function hadoop_get_cluster_metrics (line 21) | def hadoop_get_cluster_metrics(handle) -> Dict:
FILE: Hadoop/legos/hadoop_get_cluster_nodes/hadoop_get_cluster_nodes.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function hadoop_get_cluster_nodes_printer (line 21) | def hadoop_get_cluster_nodes_printer(output):
function hadoop_get_cluster_nodes (line 27) | def hadoop_get_cluster_nodes(handle, states: str = "") -> Dict:
FILE: Hadoop/legos/hadoop_get_handle/hadoop_get_handle.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function hadoop_get_handle (line 11) | def hadoop_get_handle(handle) -> None:
FILE: Jenkins/legos/jenkins_get_handle/jenkins_get_handle.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function jenkins_get_handle (line 11) | def jenkins_get_handle(handle):
FILE: Jenkins/legos/jenkins_get_logs/jenkins_get_logs.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function jenkins_get_logs_printer (line 21) | def jenkins_get_logs_printer(output):
function jenkins_get_logs (line 27) | def jenkins_get_logs(handle, job_name: str, build_number: int = 0) -> Dict:
FILE: Jenkins/legos/jenkins_get_plugins/jenkins_get_plugins.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function jenkins_get_plugins_printer (line 13) | def jenkins_get_plugins_printer(output):
function jenkins_get_plugins (line 18) | def jenkins_get_plugins(handle) -> List:
FILE: Jira/legos/jira_add_comment/jira_add_comment.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function jira_add_comment_printer (line 37) | def jira_add_comment_printer(output):
function jira_add_comment (line 43) | def jira_add_comment(hdl: JIRA,
FILE: Jira/legos/jira_assign_issue/jira_assign_issue.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function jira_assign_issue_printer (line 21) | def jira_assign_issue_printer(output):
function jira_assign_issue (line 26) | def jira_assign_issue(hdl: JIRA, issue_id: str, user_id: str) -> str:
FILE: Jira/legos/jira_create_issue/jira_create_issue.py
class CustomFieldTypes (line 13) | class CustomFieldTypes(enum.Enum):
class InputSchema (line 27) | class InputSchema(BaseModel):
function jira_create_issue_printer (line 68) | def jira_create_issue_printer(output):
function jira_create_issue (line 73) | def jira_create_issue(
function get_user_accountId (line 188) | def get_user_accountId(handle: JIRA, user: str)->str:
FILE: Jira/legos/jira_get_handle/jira_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function jira_get_handle (line 12) | def jira_get_handle(handle):
FILE: Jira/legos/jira_get_issue/jira_get_issue.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function jira_get_issue_printer (line 19) | def jira_get_issue_printer(output):
function jira_get_issue (line 24) | def jira_get_issue(hdl: JIRA, issue_id: str) -> dict:
FILE: Jira/legos/jira_get_issue_status/jira_get_issue_status.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function jira_get_issue_status_printer (line 20) | def jira_get_issue_status_printer(output):
function jira_get_issue_status (line 26) | def jira_get_issue_status(hdl: JIRA, issue_id: str):
FILE: Jira/legos/jira_issue_change_status/jira_issue_change_status.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function jira_issue_change_status_printer (line 29) | def jira_issue_change_status_printer(output):
function jira_issue_change_status (line 35) | def jira_issue_change_status(hdl: JIRA, issue_id: str, status: str, tran...
FILE: Jira/legos/jira_search_issue/jira_search_issue.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function jira_search_issue_printer (line 28) | def jira_search_issue_printer(output):
function jira_search_issue (line 36) | def jira_search_issue(handle: JIRA, jql: str, max_results: int = 50) -> ...
FILE: Kafka/legos/kafka_broker_health_check/kafka_broker_health_check.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function kafka_broker_health_check_printer (line 14) | def kafka_broker_health_check_printer(output):
function kafka_broker_health_check (line 26) | def kafka_broker_health_check(handle) -> Tuple:
FILE: Kafka/legos/kafka_check_in_sync_replicas/kafka_check_in_sync_replicas.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function kafka_check_in_sync_replicas_printer (line 25) | def kafka_check_in_sync_replicas_printer(output):
function kafka_check_in_sync_replicas (line 31) | def kafka_check_in_sync_replicas(handle, min_isr: int) -> Dict:
FILE: Kafka/legos/kafka_check_lag_change/kafka_check_lag_change.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function kafka_check_lag_change_printer (line 27) | def kafka_check_lag_change_printer(output):
function fetch_lag (line 42) | def fetch_lag(handle, group_id, topic_partitions, current_time, threshold):
function kafka_check_lag_change (line 76) | def kafka_check_lag_change(handle, group_id: str = "", threshold: int = ...
FILE: Kafka/legos/kafka_check_offline_partitions/kafka_check_offline_partitions.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function kafka_check_offline_partitions_printer (line 20) | def kafka_check_offline_partitions_printer(output):
function kafka_check_offline_partitions (line 26) | def kafka_check_offline_partitions(handle) -> Tuple:
FILE: Kafka/legos/kafka_check_replicas_available/kafka_check_replicas_available.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function kafka_check_replicas_available_printer (line 19) | def kafka_check_replicas_available_printer(output):
function kafka_check_replicas_available (line 25) | def kafka_check_replicas_available(handle) -> Dict:
FILE: Kafka/legos/kafka_get_committed_messages_count/kafka_get_committed_messages_count.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function kafka_get_committed_messages_count_printer (line 15) | def kafka_get_committed_messages_count_printer(output):
function kafka_get_committed_messages_count (line 28) | def kafka_get_committed_messages_count(handle, group_id: str = "") -> Dict:
FILE: Kafka/legos/kafka_get_handle/kafka_get_handle.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function kafka_get_handle (line 13) | def kafka_get_handle(handle) -> KafkaProducer:
FILE: Kafka/legos/kafka_get_topic_health/kafka_get_topic_health.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function kafka_get_topic_health_printer (line 16) | def kafka_get_topic_health_printer(output):
function kafka_get_topic_health (line 35) | def kafka_get_topic_health(handle, group_id: str="", topics: list=[]) ->...
FILE: Kafka/legos/kafka_get_topics_with_lag/kafka_get_topics_with_lag.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function kafka_get_topics_with_lag_printer (line 24) | def kafka_get_topics_with_lag_printer(output):
function kafka_get_topics_with_lag (line 34) | def kafka_get_topics_with_lag(handle, group_id: str = "", threshold: int...
FILE: Kafka/legos/kafka_publish_message/kafka_publish_message.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function kafka_publish_message_printer (line 23) | def kafka_publish_message_printer(output):
function kafka_publish_message (line 29) | def kafka_publish_message(handle, topic: str, message: str) -> str:
FILE: Kafka/legos/kafka_run_command/kafka_run_command.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function kafka_run_command_printer (line 16) | def kafka_run_command_printer(output):
function kafka_run_command (line 22) | def kafka_run_command(handle, kafka_command: str) -> str:
FILE: Kafka/legos/kafka_topic_partition_health_check/kafka_topic_partition_health_check.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function kafka_topic_partition_health_check_printer (line 20) | def kafka_topic_partition_health_check_printer(output):
function kafka_topic_partition_health_check (line 32) | def kafka_topic_partition_health_check(handle) -> Tuple:
FILE: Keycloak/legos/keycloak_get_audit_report/keycloak_get_audit_report.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function keycloak_get_audit_report_printer (line 18) | def keycloak_get_audit_report_printer(output):
function keycloak_get_audit_report (line 47) | def keycloak_get_audit_report(handle):
FILE: Keycloak/legos/keycloak_get_handle/keycloak_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function keycloak_get_handle (line 12) | def keycloak_get_handle(handle):
FILE: Keycloak/legos/keycloak_get_service_health/keycloak_get_service_health.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function keycloak_get_service_health (line 16) | def keycloak_get_service_health(handle):
function keycloak_get_service_health_printer (line 52) | def keycloak_get_service_health_printer(output):
FILE: Kubernetes/legos/k8s_add_node_to_cluster/k8s_add_node_to_cluster.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_add_node_to_cluster_printer (line 48) | def k8s_add_node_to_cluster_printer(output):
function k8s_add_node_to_cluster (line 64) | def k8s_add_node_to_cluster(handle,
FILE: Kubernetes/legos/k8s_change_pvc_size/k8s_change_pvc_size.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_change_pvc_size_printer (line 38) | def k8s_change_pvc_size_printer(output):
function k8s_change_pvc_size (line 46) | def k8s_change_pvc_size(
FILE: Kubernetes/legos/k8s_check_cronjob_pod_status/k8s_check_cronjob_pod_status.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_check_cronjob_pod_status_printer (line 23) | def k8s_check_cronjob_pod_status_printer(output):
function format_datetime (line 31) | def format_datetime(dt):
function k8s_check_cronjob_pod_status (line 34) | def k8s_check_cronjob_pod_status(handle, namespace: str='', time_interva...
FILE: Kubernetes/legos/k8s_check_service_pvc_utilization/k8s_check_service_pvc_utilization.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_check_service_pvc_utilization (line 29) | def k8s_check_service_pvc_utilization(
FILE: Kubernetes/legos/k8s_check_service_status/k8s_check_service_status.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function k8s_check_service_status_printer (line 29) | def k8s_check_service_status_printer(output):
function check_ssl_expiry (line 47) | def check_ssl_expiry(endpoint, threshold):
function k8s_check_service_status (line 74) | def k8s_check_service_status(handle, endpoints:list, threshold: int = 30...
FILE: Kubernetes/legos/k8s_check_worker_cpu_utilization/k8s_check_worker_cpu_utilization.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_check_worker_cpu_utilization_printer (line 20) | def k8s_check_worker_cpu_utilization_printer(output):
function k8s_check_worker_cpu_utilization (line 32) | def k8s_check_worker_cpu_utilization(handle, threshold: float=70.0) -> T...
FILE: Kubernetes/legos/k8s_delete_pod/k8s_delete_pod.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_delete_pod_printer (line 20) | def k8s_delete_pod_printer(output):
function k8s_delete_pod (line 27) | def k8s_delete_pod(handle, namespace: str, podname: str):
FILE: Kubernetes/legos/k8s_delete_pvc/k8s_delete_pvc.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_delete_pvc_printer (line 20) | def k8s_delete_pvc_printer(output):
function k8s_delete_pvc (line 26) | def k8s_delete_pvc(handle, namespace: str, pvc_names: list) -> Dict:
FILE: Kubernetes/legos/k8s_describe_node/k8s_describe_node.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_desribe_node_printer (line 18) | def k8s_desribe_node_printer(output):
function k8s_describe_node (line 25) | def k8s_describe_node(handle, node_name: str):
FILE: Kubernetes/legos/k8s_describe_pod/k8s_describe_pod.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_desribe_pod_printer (line 22) | def k8s_desribe_pod_printer(output):
function k8s_describe_pod (line 28) | def k8s_describe_pod(handle, namespace: str, podname: str) -> Dict:
FILE: Kubernetes/legos/k8s_detect_service_crashes/k8s_detect_service_crashes.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_detect_service_crashes_printer (line 26) | def k8s_detect_service_crashes_printer(output):
function k8s_detect_service_crashes (line 38) | def k8s_detect_service_crashes(handle, namespace: str, core_services:lis...
FILE: Kubernetes/legos/k8s_exec_command_on_pod/k8s_exec_command_on_pod.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_exec_command_on_pod_printer (line 22) | def k8s_exec_command_on_pod_printer(output):
function k8s_exec_command_on_pod (line 29) | def k8s_exec_command_on_pod(handle, namespace: str, podname: str, comman...
FILE: Kubernetes/legos/k8s_exec_command_on_pods_and_filter/k8s_exec_command_on_pods_and_filter.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function legoPrinter (line 29) | def legoPrinter(output):
function k8s_exec_command_on_pods_and_filter (line 36) | def k8s_exec_command_on_pods_and_filter(
FILE: Kubernetes/legos/k8s_execute_helm_command/k8s_execute_helm_command.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function k8s_execute_helm_command_printer (line 14) | def k8s_execute_helm_command_printer(data: str):
function k8s_execute_helm_command (line 21) | def k8s_execute_helm_command(handle, helm_command: str) -> str:
FILE: Kubernetes/legos/k8s_execute_local_script_on_a_pod/k8s_execute_local_script_on_a_pod.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_execute_local_script_on_a_pod_printer (line 25) | def k8s_execute_local_script_on_a_pod_printer(output):
function k8s_execute_local_script_on_a_pod (line 31) | def k8s_execute_local_script_on_a_pod(handle, namespace: str, pod_name:s...
FILE: Kubernetes/legos/k8s_gather_data_for_pod_troubleshoot/k8s_gather_data_for_pod_troubleshoot.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function k8s_gather_data_for_pod_troubleshoot_printer (line 19) | def k8s_gather_data_for_pod_troubleshoot_printer(output):
function k8s_gather_data_for_pod_troubleshoot (line 26) | def k8s_gather_data_for_pod_troubleshoot(handle, pod_name: str, namespac...
FILE: Kubernetes/legos/k8s_gather_data_for_service_troubleshoot/k8s_gather_data_for_service_troubleshoot.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_gather_data_for_service_troubleshoot_printer (line 20) | def k8s_gather_data_for_service_troubleshoot_printer(output):
function k8s_gather_data_for_service_troubleshoot (line 25) | def k8s_gather_data_for_service_troubleshoot(handle, servicename: str, n...
FILE: Kubernetes/legos/k8s_get_all_evicted_pods_from_namespace/k8s_get_all_evicted_pods_from_namespace.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_all_evicted_pods_from_namespace_printer (line 18) | def k8s_get_all_evicted_pods_from_namespace_printer(output):
function k8s_get_all_evicted_pods_from_namespace (line 25) | def k8s_get_all_evicted_pods_from_namespace(handle, namespace: str = "")...
FILE: Kubernetes/legos/k8s_get_all_pods/k8s_get_all_pods.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function k8s_get_all_pods_printer (line 22) | def k8s_get_all_pods_printer(output):
function k8s_get_all_pods (line 36) | def k8s_get_all_pods(handle, namespace: str = "all") -> Tuple:
FILE: Kubernetes/legos/k8s_get_all_resources_utilization_info/k8s_get_all_resources_utilization_info.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_all_resources_utilization_info_printer (line 17) | def k8s_get_all_resources_utilization_info_printer(data):
function k8s_get_all_resources_utilization_info (line 35) | def k8s_get_all_resources_utilization_info(handle, namespace: str = "") ...
FILE: Kubernetes/legos/k8s_get_candidate_nodes_for_pods/k8s_get_candidate_nodes_for_pods.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_get_candidate_nodes_for_pods_printer (line 30) | def k8s_get_candidate_nodes_for_pods_printer(output):
function k8s_get_candidate_nodes_for_pods (line 46) | def k8s_get_candidate_nodes_for_pods(handle,
FILE: Kubernetes/legos/k8s_get_cluster_health/k8s_get_cluster_health.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_cluster_health_printer (line 22) | def k8s_get_cluster_health_printer(output):
function execute_kubectl_command (line 35) | def execute_kubectl_command(handle, command: str):
function get_namespaces (line 48) | def get_namespaces(handle):
function get_label_selector_for_service (line 55) | def get_label_selector_for_service(handle, namespace: str, service_name:...
function check_node_health (line 63) | def check_node_health(node_api):
function check_pod_health (line 76) | def check_pod_health(handle, core_services, namespace):
function check_deployment_health (line 117) | def check_deployment_health(handle, core_services, namespace):
function k8s_get_cluster_health (line 143) | def k8s_get_cluster_health(handle, core_services: list = [], namespace: ...
FILE: Kubernetes/legos/k8s_get_config_map_kube_system/k8s_get_config_map_kube_system.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_config_map_kube_system_printer (line 23) | def k8s_get_config_map_kube_system_printer(output):
function k8s_get_config_map_kube_system (line 60) | def k8s_get_config_map_kube_system(handle, config_map_name: str = '', na...
FILE: Kubernetes/legos/k8s_get_deployment/k8s_get_deployment.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_deployment_printer (line 19) | def k8s_get_deployment_printer(output):
function k8s_get_deployment (line 25) | def k8s_get_deployment(handle, namespace: str, deployment_name: str) -> ...
FILE: Kubernetes/legos/k8s_get_deployment_status/k8s_get_deployment_status.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_deployment_status_printer (line 22) | def k8s_get_deployment_status_printer(output):
function k8s_get_deployment_status (line 28) | def k8s_get_deployment_status(handle, deployment: str = "", namespace: s...
FILE: Kubernetes/legos/k8s_get_error_pods_from_all_jobs/k8s_get_error_pods_from_all_jobs.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_error_pods_from_all_jobs_printer (line 19) | def k8s_get_error_pods_from_all_jobs_printer(output):
function k8s_get_error_pods_from_all_jobs (line 25) | def k8s_get_error_pods_from_all_jobs(handle, namespace:str="") -> Tuple:
FILE: Kubernetes/legos/k8s_get_expiring_cluster_certificate/k8s_get_expiring_cluster_certificate.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_expiring_cluster_certificate_printer (line 19) | def k8s_get_expiring_cluster_certificate_printer(output):
function get_expiry_date (line 28) | def get_expiry_date(pem_data: str) -> datetime.datetime:
function k8s_get_expiring_cluster_certificate (line 32) | def k8s_get_expiring_cluster_certificate(handle, expiring_threshold:int=...
FILE: Kubernetes/legos/k8s_get_expiring_tls_secret_certificates/k8s_get_expiring_tls_secret_certificates.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function k8s_get_expiring_tls_secret_certificates_printer (line 27) | def k8s_get_expiring_tls_secret_certificates_printer(output):
function get_expiry_date (line 38) | def get_expiry_date(pem_data: str) -> datetime.datetime:
function k8s_get_expiring_tls_secret_certificates (line 43) | def k8s_get_expiring_tls_secret_certificates(handle, namespace:str='', e...
FILE: Kubernetes/legos/k8s_get_failed_deployments/k8s_get_failed_deployments.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_failed_deployments_printer (line 17) | def k8s_get_failed_deployments_printer(output):
function k8s_get_failed_deployments (line 23) | def k8s_get_failed_deployments(handle, namespace: str = '') -> Tuple:
FILE: Kubernetes/legos/k8s_get_frequently_restarting_pods/k8s_get_frequently_restarting_pods.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_frequently_restarting_pods_printer (line 19) | def k8s_get_frequently_restarting_pods_printer(output):
function k8s_get_frequently_restarting_pods (line 25) | def k8s_get_frequently_restarting_pods(handle, restart_threshold:int=90)...
FILE: Kubernetes/legos/k8s_get_handle/k8s_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function k8s_get_handle (line 11) | def k8s_get_handle(handle):
FILE: Kubernetes/legos/k8s_get_healthy_pods/k8s_get_healthy_pods.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_healthy_pods_printer (line 17) | def k8s_get_healthy_pods_printer(data: list):
function k8s_get_healthy_pods (line 26) | def k8s_get_healthy_pods(handle, namespace: str) -> List:
FILE: Kubernetes/legos/k8s_get_memory_utilization_of_services/k8s_get_memory_utilization_of_services.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_get_memory_utilization_of_services_printer (line 30) | def k8s_get_memory_utilization_of_services_printer(output):
function convert_memory_to_bytes (line 51) | def convert_memory_to_bytes(memory_value) -> int:
function k8s_get_memory_utilization_of_services (line 71) | def k8s_get_memory_utilization_of_services(handle, namespace: str = "", ...
FILE: Kubernetes/legos/k8s_get_node_status_and_resource_utilization/k8s_get_node_status_and_resource_utilization.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_node_status_and_resource_utilization_printer (line 16) | def k8s_get_node_status_and_resource_utilization_printer(output):
function k8s_get_node_status_and_resource_utilization (line 24) | def k8s_get_node_status_and_resource_utilization(handle) -> List:
FILE: Kubernetes/legos/k8s_get_nodes/k8s_get_nodes.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_nodes_printer (line 16) | def k8s_get_nodes_printer(result):
function k8s_get_nodes (line 25) | def k8s_get_nodes(handle) -> Tuple:
FILE: Kubernetes/legos/k8s_get_nodes_pressure/k8s_get_nodes_pressure.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_nodes_pressure_printer (line 17) | def k8s_get_nodes_pressure_printer(output):
function k8s_get_nodes_pressure (line 33) | def k8s_get_nodes_pressure(handle) -> Tuple:
FILE: Kubernetes/legos/k8s_get_nodes_with_insufficient_resources/k8s_get_nodes_with_insufficient_resources.py
class InputSchema (line 18) | class InputSchema(BaseModel):
function k8s_get_nodes_with_insufficient_resources_printer (line 25) | def k8s_get_nodes_with_insufficient_resources_printer(output):
function k8s_get_nodes_with_insufficient_resources (line 42) | def k8s_get_nodes_with_insufficient_resources(handle, threshold: int = 8...
FILE: Kubernetes/legos/k8s_get_offline_nodes/k8s_get_offline_nodes.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_offline_nodes_printer (line 15) | def k8s_get_offline_nodes_printer(output):
function k8s_get_offline_nodes (line 21) | def k8s_get_offline_nodes(handle) -> Tuple:
FILE: Kubernetes/legos/k8s_get_oomkilled_pods/k8s_get_oomkilled_pods.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_get_oomkilled_pods_printer (line 28) | def k8s_get_oomkilled_pods_printer(output):
function format_datetime (line 33) | def format_datetime(dt):
function k8s_get_oomkilled_pods (line 38) | def k8s_get_oomkilled_pods(handle, namespace: str = "", time_interval_to...
FILE: Kubernetes/legos/k8s_get_pending_pods/k8s_get_pending_pods.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_pending_pods_printer (line 22) | def k8s_get_pending_pods_printer(output):
function format_datetime (line 33) | def format_datetime(dt):
function k8s_get_pending_pods (line 36) | def k8s_get_pending_pods(handle, namespace: str = "", time_interval_to_c...
FILE: Kubernetes/legos/k8s_get_pod_config/k8s_get_pod_config.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function k8s_get_pod_config_printer (line 18) | def k8s_get_pod_config_printer(output):
function k8s_get_pod_config (line 24) | def k8s_get_pod_config(handle, namespace: str, pod: str) -> str:
FILE: Kubernetes/legos/k8s_get_pod_logs/k8s_get_pod_logs.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_pods_logs_printer (line 19) | def k8s_get_pods_logs_printer(output):
function k8s_get_pod_logs (line 26) | def k8s_get_pod_logs(handle, namespace: str, pod_name: str) -> str:
FILE: Kubernetes/legos/k8s_get_pod_logs_and_filter/k8s_get_pod_logs_and_filter.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_pod_logs_and_filter_printer (line 24) | def k8s_get_pod_logs_and_filter_printer(output):
function k8s_get_pod_logs_and_filter (line 31) | def k8s_get_pod_logs_and_filter(handle, namespace: str, pods: List, matc...
FILE: Kubernetes/legos/k8s_get_pod_status/k8s_get_pod_status.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_pod_status_printer (line 20) | def k8s_get_pod_status_printer(data):
function k8s_get_pod_status (line 25) | def k8s_get_pod_status(handle, namespace: str, pod_name: str) -> Dict:
FILE: Kubernetes/legos/k8s_get_pods_attached_to_pvc/k8s_get_pods_attached_to_pvc.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_pods_attached_to_pvc_printer (line 20) | def k8s_get_pods_attached_to_pvc_printer(output):
function k8s_get_pods_attached_to_pvc (line 28) | def k8s_get_pods_attached_to_pvc(handle, namespace: str, pvc: str) -> str:
FILE: Kubernetes/legos/k8s_get_pods_in_crashloopbackoff_state/k8s_get_pods_in_crashloopbackoff_state.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function k8s_get_pods_in_crashloopbackoff_state_printer (line 27) | def k8s_get_pods_in_crashloopbackoff_state_printer(output):
function format_datetime (line 37) | def format_datetime(dt):
function k8s_get_pods_in_crashloopbackoff_state (line 41) | def k8s_get_pods_in_crashloopbackoff_state(handle, namespace: str = '', ...
FILE: Kubernetes/legos/k8s_get_pods_in_imagepullbackoff_state/k8s_get_pods_in_imagepullbackoff_state.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_pods_in_imagepullbackoff_state_printer (line 20) | def k8s_get_pods_in_imagepullbackoff_state_printer(output):
function k8s_get_pods_in_imagepullbackoff_state (line 31) | def k8s_get_pods_in_imagepullbackoff_state(handle, namespace: str = '') ...
FILE: Kubernetes/legos/k8s_get_pods_in_not_running_state/k8s_get_pods_in_not_running_state.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_pods_in_not_running_state_printer (line 17) | def k8s_get_pods_in_not_running_state_printer(output):
function k8s_get_pods_in_not_running_state (line 24) | def k8s_get_pods_in_not_running_state(handle, namespace: str = '') -> Tu...
FILE: Kubernetes/legos/k8s_get_pods_in_terminating_state/k8s_get_pods_in_terminating_state.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function k8s_get_pods_in_terminating_state_printer (line 20) | def k8s_get_pods_in_terminating_state_printer(output):
function k8s_get_pods_in_terminating_state (line 26) | def k8s_get_pods_in_terminating_state(handle, namespace: str = '') -> Tu...
FILE: Kubernetes/legos/k8s_get_pods_with_high_restart/k8s_get_pods_with_high_restart.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function k8s_get_pods_with_high_restart_printer (line 27) | def k8s_get_pods_with_high_restart_printer(output):
function format_datetime (line 33) | def format_datetime(dt):
function k8s_get_pods_with_high_restart (line 37) | def k8s_get_pods_with_high_restart(handle, namespace: str = '', threshol...
FILE: Kubernetes/legos/k8s_get_service_images/k8s_get_service_images.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function k8s_get_service_images_printer (line 20) | def k8s_get_service_images_printer(output):
function k8s_get_service_images (line 39) | def k8s_get_service_images(handle, namespace:str = "") -> Dict:
FILE: Kubernetes/legos/k8s_get_service_with_no_associated_endpoints/k8s_get_service_with_no_associated_endpoints.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_get_service_with_no_associated_endpoints_printer (line 24) | def k8s_get_service_with_no_associated_endpoints_printer(output):
function k8s_get_service_with_no_associated_endpoints (line 34) | def k8s_get_service_with_no_associated_endpoints(handle, namespace: str ...
FILE: Kubernetes/legos/k8s_get_services/k8s_get_services.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_get_services_printer (line 15) | def k8s_get_services_printer(output):
function k8s_get_services (line 22) | def k8s_get_services(handle, namespace: str) -> str:
FILE: Kubernetes/legos/k8s_get_unbound_pvcs/k8s_get_unbound_pvcs.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function k8s_get_unbound_pvcs_printer (line 18) | def k8s_get_unbound_pvcs_printer(output):
function k8s_get_unbound_pvcs (line 23) | def k8s_get_unbound_pvcs(handle, namespace:str = '') -> Tuple:
FILE: Kubernetes/legos/k8s_get_versioning_info/k8s_get_versioning_info.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function k8s_get_versioning_info_printer (line 12) | def k8s_get_versioning_info_printer(output):
function k8s_get_versioning_info (line 18) | def k8s_get_versioning_info(handle):
FILE: Kubernetes/legos/k8s_kubectl_command/k8s_kubectl_command.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_kubectl_command_printer (line 18) | def k8s_kubectl_command_printer(output):
function k8s_kubectl_command (line 24) | def k8s_kubectl_command(handle, kubectl_command: str) -> str:
FILE: Kubernetes/legos/k8s_kubectl_config_set_context/k8s_kubectl_config_set_context.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_config_set_context_printer (line 16) | def k8s_kubectl_config_set_context_printer(data: list):
function k8s_kubectl_config_set_context (line 22) | def k8s_kubectl_config_set_context(handle, k8s_cli_string: str, namespac...
FILE: Kubernetes/legos/k8s_kubectl_config_view/k8s_kubectl_config_view.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_config_view_printer (line 16) | def k8s_kubectl_config_view_printer(data: str):
function k8s_kubectl_config_view (line 23) | def k8s_kubectl_config_view(handle, k8s_cli_string: str, namespace: str)...
FILE: Kubernetes/legos/k8s_kubectl_delete_pod/k8s_kubectl_delete_pod.py
class InputSchema (line 4) | class InputSchema(BaseModel):
function k8s_kubectl_delete_pod_printer (line 19) | def k8s_kubectl_delete_pod_printer(data: str):
function k8s_kubectl_delete_pod (line 26) | def k8s_kubectl_delete_pod(handle, k8s_cli_string: str, pod_name: str, n...
FILE: Kubernetes/legos/k8s_kubectl_describe_node/k8s_kubectl_describe_node.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_describe_node_printer (line 16) | def k8s_kubectl_describe_node_printer(data: str):
function k8s_kubectl_describe_node (line 23) | def k8s_kubectl_describe_node(handle, node_name: str, k8s_cli_string: st...
FILE: Kubernetes/legos/k8s_kubectl_describe_pod/k8s_kubectl_describe_pod.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function k8s_kubectl_describe_pod_printer (line 22) | def k8s_kubectl_describe_pod_printer(data: str):
function k8s_kubectl_describe_pod (line 29) | def k8s_kubectl_describe_pod(handle, pod_name: str, k8s_cli_string: str,...
FILE: Kubernetes/legos/k8s_kubectl_drain_node/k8s_kubectl_drain_node.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_drain_node_printer (line 16) | def k8s_kubectl_drain_node_printer(data: str):
function k8s_kubectl_drain_node (line 23) | def k8s_kubectl_drain_node(handle, k8s_cli_string: str, node_name:str) -...
FILE: Kubernetes/legos/k8s_kubectl_exec_command/k8s_kubectl_exec_command.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_exec_command_printer (line 24) | def k8s_kubectl_exec_command_printer(data: str):
function k8s_kubectl_exec_command (line 31) | def k8s_kubectl_exec_command(
FILE: Kubernetes/legos/k8s_kubectl_get_api_resources/k8s_kubectl_get_api_resources.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_get_api_resources_printer (line 16) | def k8s_kubectl_get_api_resources_printer(data: str):
function k8s_kubectl_get_api_resources (line 23) | def k8s_kubectl_get_api_resources(handle, k8s_cli_string: str, namespace...
FILE: Kubernetes/legos/k8s_kubectl_get_logs/k8s_kubectl_get_logs.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_get_logs_printer (line 20) | def k8s_kubectl_get_logs_printer(data: str):
function k8s_kubectl_get_logs (line 28) | def k8s_kubectl_get_logs(handle, k8s_cli_string: str, pod_name: str, nam...
FILE: Kubernetes/legos/k8s_kubectl_get_service_namespace/k8s_kubectl_get_service_namespace.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function k8s_kubectl_get_service_namespace_printer (line 17) | def k8s_kubectl_get_service_namespace_printer(data: list):
function k8s_kubectl_get_service_namespace (line 26) | def k8s_kubectl_get_service_namespace(handle, k8s_cli_string: str, names...
FILE: Kubernetes/legos/k8s_kubectl_list_pods/k8s_kubectl_list_pods.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function k8s_kubectl_list_pods_printer (line 17) | def k8s_kubectl_list_pods_printer(data: list):
function k8s_kubectl_list_pods (line 26) | def k8s_kubectl_list_pods(handle, k8s_cli_string: str, namespace: str) -...
FILE: Kubernetes/legos/k8s_kubectl_patch_pod/k8s_kubectl_patch_pod.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_patch_pod_printer (line 24) | def k8s_kubectl_patch_pod_printer(data: str):
function k8s_kubectl_patch_pod (line 31) | def k8s_kubectl_patch_pod(
FILE: Kubernetes/legos/k8s_kubectl_rollout_deployment/k8s_kubectl_rollout_deployment.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_kubectl_rollout_deployment_printer (line 27) | def k8s_kubectl_rollout_deployment_printer(data: str):
function k8s_kubectl_rollout_deployment (line 35) | def k8s_kubectl_rollout_deployment(
FILE: Kubernetes/legos/k8s_kubectl_scale_deployment/k8s_kubectl_scale_deployment.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_scale_deployment_printer (line 24) | def k8s_kubectl_scale_deployment_printer(data: str):
function k8s_kubectl_scale_deployment (line 31) | def k8s_kubectl_scale_deployment(
FILE: Kubernetes/legos/k8s_kubectl_show_metrics_node/k8s_kubectl_show_metrics_node.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_show_metrics_node_printer (line 17) | def k8s_kubectl_show_metrics_node_printer(data: str):
function k8s_kubectl_show_metrics_node (line 25) | def k8s_kubectl_show_metrics_node(handle, k8s_cli_string: str, node_name...
FILE: Kubernetes/legos/k8s_kubectl_show_metrics_pod/k8s_kubectl_show_metrics_pod.py
class InputSchema (line 5) | class InputSchema(BaseModel):
function k8s_kubectl_show_metrics_pod_printer (line 20) | def k8s_kubectl_show_metrics_pod_printer(data: str):
function k8s_kubectl_show_metrics_pod (line 27) | def k8s_kubectl_show_metrics_pod(
FILE: Kubernetes/legos/k8s_list_all_matching_pods/k8s_list_all_matching_pods.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function k8s_list_all_matching_pods_printer (line 28) | def k8s_list_all_matching_pods_printer(output):
function k8s_list_all_matching_pods (line 42) | def k8s_list_all_matching_pods(handle, matchstr: str, namespace: str = '...
FILE: Kubernetes/legos/k8s_list_pvcs/k8s_list_pvcs.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function k8s_list_pvcs_printer (line 16) | def k8s_list_pvcs_printer(output):
function k8s_list_pvcs (line 22) | def k8s_list_pvcs(handle, namespace: str = '') -> List:
FILE: Kubernetes/legos/k8s_measure_worker_node_network_bandwidth/k8s_measure_worker_node_network_bandwidth.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pods_have_written_results (line 18) | def pods_have_written_results(handle, core_v1, label_selector, namespace...
function k8s_measure_worker_node_network_bandwidth_printer (line 48) | def k8s_measure_worker_node_network_bandwidth_printer(output):
function k8s_measure_worker_node_network_bandwidth (line 60) | def k8s_measure_worker_node_network_bandwidth(handle, namespace_to_check...
FILE: Kubernetes/legos/k8s_remove_pod_from_deployment/k8s_remove_pod_from_deployment.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function k8s_remove_pod_from_deployment_printer (line 19) | def k8s_remove_pod_from_deployment_printer(output):
function k8s_remove_pod_from_deployment (line 26) | def k8s_remove_pod_from_deployment(handle, pod_name: str, namespace: str):
FILE: Kubernetes/legos/k8s_update_command_in_pod_spec/k8s_update_command_in_pod_spec.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function k8s_update_command_in_pod_spec_printer (line 29) | def k8s_update_command_in_pod_spec_printer(output):
function k8s_update_command_in_pod_spec (line 36) | def k8s_update_command_in_pod_spec(
FILE: Mantishub/legos/mantishub_get_handle/mantishub_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function mantishub_get_handle (line 12) | def mantishub_get_handle(handle):
FILE: Mongo/legos/mongodb_add_new_field_in_collections/mongodb_add_new_field_in_collections.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_add_new_field_in_collections_printer (line 33) | def mongodb_add_new_field_in_collections_printer(output):
function mongodb_add_new_field_in_collections (line 44) | def mongodb_add_new_field_in_collections(
FILE: Mongo/legos/mongodb_aggregate_command/mongodb_aggregate_command.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_aggregate_command_printer (line 35) | def mongodb_aggregate_command_printer(output):
function mongodb_aggregate_command (line 44) | def mongodb_aggregate_command(
FILE: Mongo/legos/mongodb_atlas_cluster_backup/mongodb_atlas_cluster_backup.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function mongodb_atlas_cluster_backup_printer (line 32) | def mongodb_atlas_cluster_backup_printer(output):
function mongodb_atlas_cluster_backup (line 39) | def mongodb_atlas_cluster_backup(
FILE: Mongo/legos/mongodb_check_large_index_size/mongodb_check_large_index_size.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_check_large_index_size_printer (line 19) | def mongodb_check_large_index_size_printer(output):
function mongodb_check_large_index_size (line 30) | def mongodb_check_large_index_size(handle, threshold: float = DEFAULT_SI...
FILE: Mongo/legos/mongodb_compare_disk_size_to_threshold/mongodb_compare_disk_size_to_threshold.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mongodb_compare_disk_size_to_threshold_printer (line 17) | def mongodb_compare_disk_size_to_threshold_printer(output):
function mongodb_compare_disk_size_to_threshold (line 27) | def mongodb_compare_disk_size_to_threshold(handle, threshold: float=8388...
FILE: Mongo/legos/mongodb_count_documents/mongodb_count_documents.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_count_documents_printer (line 29) | def mongodb_count_documents_printer(output):
function mongodb_count_documents (line 38) | def mongodb_count_documents(
FILE: Mongo/legos/mongodb_create_collection/mongodb_create_collection.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_create_collection_printer (line 21) | def mongodb_create_collection_printer(output):
function mongodb_create_collection (line 35) | def mongodb_create_collection(handle, database_name: str, collection_nam...
FILE: Mongo/legos/mongodb_create_database/mongodb_create_database.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_create_database_printer (line 21) | def mongodb_create_database_printer(output):
function mongodb_create_database (line 35) | def mongodb_create_database(handle, database_name: str, collection_name:...
FILE: Mongo/legos/mongodb_delete_collection/mongodb_delete_collection.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_delete_collection_printer (line 22) | def mongodb_delete_collection_printer(output):
function mongodb_delete_collection (line 39) | def mongodb_delete_collection(handle, database_name: str, collection_nam...
FILE: Mongo/legos/mongodb_delete_database/mongodb_delete_database.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_delete_database_printer (line 17) | def mongodb_delete_database_printer(output):
function mongodb_delete_database (line 35) | def mongodb_delete_database(handle, database_name: str) -> List:
FILE: Mongo/legos/mongodb_delete_document/mongodb_delete_document.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mongodb_delete_document_printer (line 32) | def mongodb_delete_document_printer(output):
function mongodb_delete_document (line 43) | def mongodb_delete_document(
FILE: Mongo/legos/mongodb_distinct_command/mongodb_distinct_command.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_distinct_command_printer (line 35) | def mongodb_distinct_command_printer(output):
function mongodb_distinct_command (line 46) | def mongodb_distinct_command(
FILE: Mongo/legos/mongodb_find_document/mongodb_find_document.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function mongodb_find_document_printer (line 65) | def mongodb_find_document_printer(output):
function mongodb_find_document (line 74) | def mongodb_find_document(
FILE: Mongo/legos/mongodb_find_one/mongodb_find_one.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_find_one_printer (line 45) | def mongodb_find_one_printer(func):
function mongodb_find_one (line 55) | def mongodb_find_one(
FILE: Mongo/legos/mongodb_get_handle/mongodb_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function mongodb_get_handle (line 12) | def mongodb_get_handle(handle):
FILE: Mongo/legos/mongodb_get_metrics/mongodb_get_metrics.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_get_metrics_printer (line 15) | def mongodb_get_metrics_printer(output):
function mongodb_get_metrics (line 25) | def mongodb_get_metrics(handle) -> Tuple:
FILE: Mongo/legos/mongodb_get_replica_set/mongodb_get_replica_set.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_get_replica_set_printer (line 14) | def mongodb_get_replica_set_printer(output):
function mongodb_get_replica_set (line 23) | def mongodb_get_replica_set(handle) -> List:
FILE: Mongo/legos/mongodb_get_server_status/mongodb_get_server_status.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_get_server_status_printer (line 15) | def mongodb_get_server_status_printer(output):
function mongodb_get_server_status (line 23) | def mongodb_get_server_status(handle) -> Tuple:
FILE: Mongo/legos/mongodb_get_write_conflicts/mongodb_get_write_conflicts.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_get_write_conflicts_printer (line 14) | def mongodb_get_write_conflicts_printer(output):
function mongodb_get_write_conflicts (line 20) | def mongodb_get_write_conflicts(handle) -> Dict:
FILE: Mongo/legos/mongodb_insert_document/mongodb_insert_document.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function mongodb_insert_document_printer (line 29) | def mongodb_insert_document_printer(output):
function mongodb_insert_document (line 41) | def mongodb_insert_document(
FILE: Mongo/legos/mongodb_kill_queries/mongodb_kill_queries.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_kill_queries_printer (line 17) | def mongodb_kill_queries_printer(output):
function mongodb_kill_queries (line 25) | def mongodb_kill_queries(handle, op_id: int) -> Dict:
FILE: Mongo/legos/mongodb_list_collections/mongodb_list_collections.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function mongodb_list_collections_printer (line 18) | def mongodb_list_collections_printer(output):
function mongodb_list_collections (line 29) | def mongodb_list_collections(handle, database_name: str) -> List:
FILE: Mongo/legos/mongodb_list_databases/mongodb_list_databases.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function mongodb_list_databases_printer (line 15) | def mongodb_list_databases_printer(output):
function mongodb_list_databases (line 23) | def mongodb_list_databases(handle) -> List:
FILE: Mongo/legos/mongodb_list_queries/mongodb_list_queries.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mongodb_list_queries_printer (line 12) | def mongodb_list_queries_printer(output):
function mongodb_list_queries (line 22) | def mongodb_list_queries(handle) -> Dict:
FILE: Mongo/legos/mongodb_read_query/mongodb_read_query.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_read_query_printer (line 24) | def mongodb_read_query_printer(output):
function mongodb_read_query (line 32) | def mongodb_read_query(handle, database_name: str, collection_name: str,...
FILE: Mongo/legos/mongodb_remove_field_in_collections/mongodb_remove_field_in_collections.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mongodb_remove_field_in_collections_printer (line 33) | def mongodb_remove_field_in_collections_printer(output):
function mongodb_remove_field_in_collections (line 44) | def mongodb_remove_field_in_collections(
FILE: Mongo/legos/mongodb_rename_database/mongodb_rename_database.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function mongodb_rename_database_printer (line 29) | def mongodb_rename_database_printer(output):
function mongodb_rename_database (line 40) | def mongodb_rename_database(handle, old_database_name: str, new_database...
FILE: Mongo/legos/mongodb_update_document/mongodb_update_document.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function mongodb_update_document_printer (line 47) | def mongodb_update_document_printer(output):
function mongodb_update_document (line 59) | def mongodb_update_document(
FILE: Mongo/legos/mongodb_write_query/mongodb_write_query.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mongodb_write_query_printer (line 35) | def mongodb_write_query_printer(output):
function mongodb_write_query (line 45) | def mongodb_write_query(
FILE: MsSQL/legos/mssql_get_handle/mssql_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function mssql_get_handle (line 12) | def mssql_get_handle(handle):
FILE: MsSQL/legos/mssql_read_query/mssql_read_query.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mssql_read_query_printer (line 19) | def mssql_read_query_printer(output):
function mssql_read_query (line 26) | def mssql_read_query(handle, query: str, params: Tuple = ()) -> List:
FILE: MsSQL/legos/mssql_write_query/mssql_write_query.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mssql_write_query (line 19) | def mssql_write_query(handle, query: str, params: List = List[Any]) -> N...
FILE: MySQL/legos/mysql_get_handle/mysql_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function mysql_get_handle (line 12) | def mysql_get_handle(handle):
FILE: MySQL/legos/mysql_get_long_run_queries/mysql_get_long_run_queries.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function mysql_read_query_printer (line 17) | def mysql_read_query_printer(output):
function mysql_get_long_run_queries (line 24) | def mysql_get_long_run_queries(handle, interval: int = 5) -> List:
FILE: MySQL/legos/mysql_kill_query/mysql_kill_query.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mysql_kill_query_printer (line 15) | def mysql_kill_query_printer(output):
function mysql_kill_query (line 21) | def mysql_kill_query(handle, processId: int) -> str:
FILE: MySQL/legos/mysql_read_query/mysql_read_query.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function mysql_read_query_printer (line 21) | def mysql_read_query_printer(output):
function mysql_read_query (line 28) | def mysql_read_query(handle, query: str, params: List = List[Any]) -> List:
FILE: MySQL/legos/mysql_write_query/mysql_write_query.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function mysql_write_query (line 19) | def mysql_write_query(handle, query: str, params: List = List[Any]) -> N...
FILE: Netbox/legos/netbox_get_handle/netbox_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function netbox_get_handle (line 12) | def netbox_get_handle(handle):
FILE: Netbox/legos/netbox_list_devices/netbox_list_devices.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function netbox_list_devices_printer (line 11) | def netbox_list_devices_printer(output):
function netbox_list_devices (line 17) | def netbox_list_devices(handle):
FILE: Nomad/legos/nomad_get_handle/nomad_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function nomad_get_handle (line 12) | def nomad_get_handle(handle):
FILE: Nomad/legos/nomad_list_jobs/nomad_list_jobs.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function nomad_list_jobs_printer (line 11) | def nomad_list_jobs_printer(output):
function nomad_list_jobs (line 17) | def nomad_list_jobs(handle):
FILE: Opsgenie/legos/opsgenie_get_handle/opsgenie_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function opsgenie_get_handle_printer (line 13) | def opsgenie_get_handle_printer(output):
function opsgenie_get_handle (line 18) | def opsgenie_get_handle(handle):
FILE: Pingdom/legos/pingdom_create_new_maintenance_window/pingdom_create_new_maintenance_window.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_create_new_maintenance_window_printer (line 34) | def pingdom_create_new_maintenance_window_printer(output):
function pingdom_create_new_maintenance_window (line 43) | def pingdom_create_new_maintenance_window(handle,
FILE: Pingdom/legos/pingdom_do_single_check/pingdom_do_single_check.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function pingdom_do_single_check_printer (line 22) | def pingdom_do_single_check_printer(output):
function pingdom_do_single_check (line 28) | def pingdom_do_single_check(handle, host: str, type: str = 'http') -> Dict:
FILE: Pingdom/legos/pingdom_get_analysis/pingdom_get_analysis.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function pingdom_get_analysis_printer (line 35) | def pingdom_get_analysis_printer(output):
function pingdom_get_analysis (line 41) | def pingdom_get_analysis(
FILE: Pingdom/legos/pingdom_get_checkids/pingdom_get_checkids.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_get_checkids_printer (line 20) | def pingdom_get_checkids_printer(output):
function pingdom_get_checkids (line 26) | def pingdom_get_checkids(handle, host_name: str = "") -> List[int]:
FILE: Pingdom/legos/pingdom_get_checkids_by_name/pingdom_get_checkids_by_name.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_get_checkids_by_name_printer (line 24) | def pingdom_get_checkids_by_name_printer(output):
function pingdom_get_checkids_by_name (line 30) | def pingdom_get_checkids_by_name(handle, checkNames=None, transaction: b...
FILE: Pingdom/legos/pingdom_get_handle/pingdom_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function pingdom_get_handle (line 12) | def pingdom_get_handle(handle):
FILE: Pingdom/legos/pingdom_get_maintenance/pingdom_get_maintenance.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_get_maintenance_printer (line 33) | def pingdom_get_maintenance_printer(output):
function pingdom_get_maintenance (line 39) | def pingdom_get_maintenance(handle, limit: int = 0, offset: int = 0, ord...
FILE: Pingdom/legos/pingdom_get_results/pingdom_get_results.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_get_results_printer (line 29) | def pingdom_get_results_printer(output):
function pingdom_get_results (line 34) | def pingdom_get_results(handle, checkid: int, status: str = 'down', limi...
FILE: Pingdom/legos/pingdom_get_tmscheck/pingdom_get_tmscheck.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_get_tmschecke_printer (line 34) | def pingdom_get_tmschecke_printer(output):
function pingdom_get_tmscheck (line 40) | def pingdom_get_tmscheck(
FILE: Pingdom/legos/pingdom_pause_or_unpause_checkids/pingdom_pause_or_unpause_checkids.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_pause_or_unpause_checkids_printer (line 25) | def pingdom_pause_or_unpause_checkids_printer(output):
function pingdom_pause_or_unpause_checkids (line 31) | def pingdom_pause_or_unpause_checkids(handle, pause: bool, resolution: i...
FILE: Pingdom/legos/pingdom_traceroute/pingdom_traceroute.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function pingdom_traceroute_printer (line 22) | def pingdom_traceroute_printer(output):
function pingdom_traceroute (line 28) | def pingdom_traceroute(handle, host: str, probeid = None) -> Dict:
FILE: Postgresql/legos/postgres_calculate_bloat/postgres_calculate_bloat.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgres_calculate_bloat_printer (line 14) | def postgres_calculate_bloat_printer(output):
function postgres_calculate_bloat (line 38) | def postgres_calculate_bloat(handle) -> List:
FILE: Postgresql/legos/postgresql_call_function/postgresql_call_function.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function postgresql_call_function_printer (line 21) | def postgresql_call_function_printer(output):
function postgresql_call_function (line 30) | def postgresql_call_function(handle, function_name: str, params: List = ...
FILE: Postgresql/legos/postgresql_check_active_connections/postgresql_check_active_connections.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgresql_check_active_connections_printer (line 18) | def postgresql_check_active_connections_printer(output):
function postgresql_check_active_connections (line 29) | def postgresql_check_active_connections(handle, threshold_percentage: in...
FILE: Postgresql/legos/postgresql_check_locks/postgresql_check_locks.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgresql_check_locks_printer (line 15) | def postgresql_check_locks_printer(output):
function postgresql_check_locks (line 26) | def postgresql_check_locks(handle) -> Tuple:
FILE: Postgresql/legos/postgresql_check_unused_indexes/postgresql_check_unused_indexes.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgresql_check_unused_indexes_printer (line 22) | def postgresql_check_unused_indexes_printer(output):
function postgresql_check_unused_indexes (line 28) | def postgresql_check_unused_indexes(handle, index_scans:int=10,index_siz...
FILE: Postgresql/legos/postgresql_create_table/postgresql_create_table.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function postgresql_create_table_printer (line 19) | def postgresql_create_table_printer(output):
function postgresql_create_table (line 25) | def postgresql_create_table(handle, commands: tuple) -> Dict:
FILE: Postgresql/legos/postgresql_delete_query/postgresql_delete_query.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgresql_delete_query (line 16) | def postgresql_delete_query(handle, query:str):
FILE: Postgresql/legos/postgresql_get_cache_hit_ratio/postgresql_get_cache_hit_ratio.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function postgresql_get_cache_hit_ratio_printer (line 12) | def postgresql_get_cache_hit_ratio_printer(output):
function postgresql_get_cache_hit_ratio (line 28) | def postgresql_get_cache_hit_ratio(handle) -> Tuple:
FILE: Postgresql/legos/postgresql_get_handle/postgresql_get_handle.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function postgresql_get_handle (line 10) | def postgresql_get_handle(handle):
FILE: Postgresql/legos/postgresql_get_index_usage/postgresql_get_index_usage.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function postgresql_get_index_usage_printer (line 12) | def postgresql_get_index_usage_printer(output):
function postgresql_get_index_usage (line 20) | def postgresql_get_index_usage(handle) -> List:
FILE: Postgresql/legos/postgresql_get_server_status/postgresql_get_server_status.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function postgresql_get_server_status_printer (line 13) | def postgresql_get_server_status_printer(output):
function postgresql_get_server_status (line 21) | def postgresql_get_server_status(handle) -> Tuple:
FILE: Postgresql/legos/postgresql_handling_transaction/postgresql_handling_transaction.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function postgresql_handling_transaction (line 20) | def postgresql_handling_transaction(handle, transaction:str):
FILE: Postgresql/legos/postgresql_long_running_queries/postgresql_long_running_queries.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function postgresql_long_running_queries_printer (line 17) | def postgresql_long_running_queries_printer(output):
function postgresql_long_running_queries (line 24) | def postgresql_long_running_queries(handle, interval: int = 5) -> Tuple:
FILE: Postgresql/legos/postgresql_read_query/postgresql_read_query.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function postgresql_read_query_printer (line 26) | def postgresql_read_query_printer(output):
function postgresql_read_query (line 35) | def postgresql_read_query(handle, query: str, params: list = ()) -> List:
FILE: Postgresql/legos/postgresql_show_tables/postgresql_show_tables.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function postgresql_show_tables_printer (line 14) | def postgresql_show_tables_printer(output):
function postgresql_show_tables (line 23) | def postgresql_show_tables(handle) -> List:
FILE: Postgresql/legos/postgresql_stored_procedures/postgresql_stored_procedures.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function postgresql_stored_procedures (line 19) | def postgresql_stored_procedures(handle, stored_procedure_name: str, par...
FILE: Postgresql/legos/postgresql_write_query/postgresql_write_query.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function postgresql_write_query (line 25) | def postgresql_write_query(handle, query: str, params: List = List[Any]):
FILE: Prometheus/legos/prometheus_alerts_list/prometheus_alerts_list.py
class InputSchema (line 15) | class InputSchema(BaseModel):
function prometheus_alerts_list_printer (line 19) | def prometheus_alerts_list_printer(output):
function prometheus_alerts_list (line 31) | def prometheus_alerts_list(handle) -> List[dict]:
FILE: Prometheus/legos/prometheus_get_all_metrics/prometheus_get_all_metrics.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function prometheus_get_all_metrics_printer (line 12) | def prometheus_get_all_metrics_printer(output):
function prometheus_get_all_metrics (line 19) | def prometheus_get_all_metrics(handle) -> List:
FILE: Prometheus/legos/prometheus_get_handle/prometheus_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function prometheus_get_handle (line 12) | def prometheus_get_handle(handle):
FILE: Prometheus/legos/prometheus_get_metric_statistics/prometheus_get_metric_statistics.py
class InputSchema (line 13) | class InputSchema(BaseModel):
function prometheus_get_metric_range_data_printer (line 35) | def prometheus_get_metric_range_data_printer(output):
function prometheus_get_metric_range_data (line 42) | def prometheus_get_metric_range_data(
FILE: Redis/legos/redis_delete_all_keys/redis_delete_all_keys.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function redis_delete_all_keys_printer (line 14) | def redis_delete_all_keys_printer(output):
function redis_delete_all_keys (line 21) | def redis_delete_all_keys(handle) -> List:
FILE: Redis/legos/redis_delete_keys/redis_delete_keys.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function redis_delete_keys_printer (line 16) | def redis_delete_keys_printer(output):
function redis_delete_keys (line 23) | def redis_delete_keys(handle, pattern: str) -> List:
FILE: Redis/legos/redis_delete_stale_keys/redis_delete_stale_keys.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function redis_delete_stale_keys_printer (line 16) | def redis_delete_stale_keys_printer(output):
function redis_delete_stale_keys (line 23) | def redis_delete_stale_keys(handle, time_in_sec: int) -> Dict :
FILE: Redis/legos/redis_get_cluster_health/redis_get_cluster_health.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function redis_get_cluster_health_printer (line 21) | def redis_get_cluster_health_printer(output):
function redis_get_cluster_health (line 44) | def redis_get_cluster_health(handle, client_threshold: int = 10000, memo...
FILE: Redis/legos/redis_get_handle/redis_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function redis_get_handle (line 12) | def redis_get_handle(handle):
FILE: Redis/legos/redis_get_keys_count/redis_get_keys_count.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function redis_get_keys_count_printer (line 18) | def redis_get_keys_count_printer(output):
function redis_get_keys_count (line 24) | def redis_get_keys_count(handle, pattern: str="*"):
FILE: Redis/legos/redis_get_metrics/redis_get_metrics.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function redis_get_metrics_printer (line 15) | def redis_get_metrics_printer(output):
function bytes_to_human_readable (line 23) | def bytes_to_human_readable(bytes, units=[' bytes', 'KB', 'MB', 'GB', 'T...
function redis_get_metrics (line 27) | def redis_get_metrics(handle) -> Dict:
FILE: Redis/legos/redis_list_large_keys/redis_list_large_keys.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function redis_list_large_keys_printer (line 17) | def redis_list_large_keys_printer(output):
function redis_list_large_keys (line 36) | def redis_list_large_keys(handle, size_in_bytes: int = 5368709120) -> Tu...
FILE: Rest/legos/rest_get_handle/rest_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function rest_get_handle (line 12) | def rest_get_handle(handle) -> None:
FILE: Rest/legos/rest_methods/rest_methods.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function rest_methods_printer (line 47) | def rest_methods_printer(output):
function rest_methods (line 55) | def rest_methods(
FILE: SSH/legos/ssh_execute_remote_command/ssh_execute_remote_command.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function ssh_execute_remote_command_printer (line 31) | def ssh_execute_remote_command_printer(output):
function ssh_execute_remote_command (line 38) | def ssh_execute_remote_command(
FILE: SSH/legos/ssh_find_large_files/ssh_find_large_files.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function ssh_find_large_files_printer (line 41) | def ssh_find_large_files_printer(output):
function ssh_find_large_files (line 48) | def ssh_find_large_files(
FILE: SSH/legos/ssh_get_ec2_instances_with_low_available_disk_size/ssh_get_ec2_instances_with_low_available_disk_size.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function ssh_get_ec2_instances_with_low_available_disk_size_printer (line 22) | def ssh_get_ec2_instances_with_low_available_disk_size_printer(output):
function ssh_get_ec2_instances_with_low_available_disk_size (line 27) | def ssh_get_ec2_instances_with_low_available_disk_size(handle, hosts: li...
FILE: SSH/legos/ssh_get_ec2_instances_with_low_memory_size/ssh_get_ec2_instances_with_low_memory_size.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function ssh_get_ec2_instances_with_low_memory_size_printer (line 24) | def ssh_get_ec2_instances_with_low_memory_size_printer(output):
function ssh_get_ec2_instances_with_low_memory_size (line 29) | def ssh_get_ec2_instances_with_low_memory_size(handle, hosts: list, thre...
FILE: SSH/legos/ssh_get_handle/ssh_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function ssh_get_handle (line 12) | def ssh_get_handle(handle):
FILE: SSH/legos/ssh_get_hosts_with_low_disk_latency/ssh_get_hosts_with_low_disk_latency.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function ssh_get_hosts_with_low_disk_latency_printer (line 23) | def ssh_get_hosts_with_low_disk_latency_printer(output):
function ssh_get_hosts_with_low_disk_latency (line 34) | def ssh_get_hosts_with_low_disk_latency(handle, hosts: list, threshold: ...
FILE: SSH/legos/ssh_restart_service_using_sysctl/ssh_restart_service_using_sysctl.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function ssh_restart_service_using_sysctl_printer (line 30) | def ssh_restart_service_using_sysctl_printer(output):
function ssh_restart_service_using_sysctl (line 37) | def ssh_restart_service_using_sysctl(
FILE: SSH/legos/ssh_scp/ssh_scp.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function ssh_scp_printer (line 34) | def ssh_scp_printer(output):
function ssh_scp (line 41) | def ssh_scp(
FILE: SalesForce/legos/salesforce_assign_case/salesforce_assign_case.py
class InputSchema (line 11) | class InputSchema(BaseModel):
function salesforce_assign_case_printer (line 20) | def salesforce_assign_case_printer(output):
function salesforce_assign_case (line 26) | def salesforce_assign_case(handle, case_number: str, owner_id: str) -> str:
FILE: SalesForce/legos/salesforce_case_change_status/salesforce_case_change_status.py
class InputSchema (line 12) | class InputSchema(BaseModel):
function salesforce_case_change_status_printer (line 21) | def salesforce_case_change_status_printer(output):
function salesforce_case_change_status (line 27) | def salesforce_case_change_status(handle, case_number: str, status: Stat...
FILE: SalesForce/legos/salesforce_create_case/salesforce_create_case.py
class AdditionalInformation (line 12) | class AdditionalInformation(BaseModel):
class WebInformation (line 27) | class WebInformation(BaseModel):
class InputSchema (line 42) | class InputSchema(BaseModel):
function salesforce_create_case_printer (line 77) | def salesforce_create_case_printer(output):
function salesforce_create_case (line 89) | def salesforce_create_case(handle,
FILE: SalesForce/legos/salesforce_delete_case/salesforce_delete_case.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function salesforce_delete_case_printer (line 12) | def salesforce_delete_case_printer(output):
function salesforce_delete_case (line 18) | def salesforce_delete_case(handle, case_number: str) -> str:
FILE: SalesForce/legos/salesforce_get_case/salesforce_get_case.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function salesforce_get_case_printer (line 14) | def salesforce_get_case_printer(output):
function salesforce_get_case (line 20) | def salesforce_get_case(handle, case_number: str) -> Dict:
FILE: SalesForce/legos/salesforce_get_case_status/salesforce_get_case_status.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function salesforce_get_case_status_printer (line 12) | def salesforce_get_case_status_printer(output):
function salesforce_get_case_status (line 18) | def salesforce_get_case_status(handle, case_number: str) -> str:
FILE: SalesForce/legos/salesforce_get_handle/salesforce_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function salesforce_get_handle (line 12) | def salesforce_get_handle(handle) -> None:
FILE: SalesForce/legos/salesforce_search_case/salesforce_search_case.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function salesforce_search_case_printer (line 16) | def salesforce_search_case_printer(output):
function salesforce_search_case (line 31) | def salesforce_search_case(handle, search: str) -> List:
FILE: SalesForce/legos/salesforce_update_case/salesforce_update_case.py
class AdditionalInformation (line 11) | class AdditionalInformation(BaseModel):
class WebInformation (line 26) | class WebInformation(BaseModel):
class InputSchema (line 41) | class InputSchema(BaseModel):
function salesforce_update_case_printer (line 79) | def salesforce_update_case_printer(output):
function salesforce_update_case (line 92) | def salesforce_update_case(handle,
FILE: Slack/legos/slack_create_channel_invite_users/slack_create_channel_invite_users.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function slack_create_channel_invite_users_printer (line 31) | def slack_create_channel_invite_users_printer(output):
function slack_create_channel_invite_users (line 36) | def slack_create_channel_invite_users(
FILE: Slack/legos/slack_get_handle/slack_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function slack_get_handle (line 12) | def slack_get_handle(handle) -> None:
FILE: Slack/legos/slack_lookup_user_by_email/slack_lookup_user_by_email.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function slack_lookup_user_by_email_printer (line 25) | def slack_lookup_user_by_email_printer(output):
function slack_lookup_user_by_email (line 30) | def slack_lookup_user_by_email(
FILE: Slack/legos/slack_post_image/slack_post_image.py
class InputSchema (line 16) | class InputSchema(BaseModel):
function slack_post_image_printer (line 28) | def slack_post_image_printer(output):
function slack_post_image (line 34) | def slack_post_image(
FILE: Slack/legos/slack_post_message/slack_post_message.py
class InputSchema (line 14) | class InputSchema(BaseModel):
function slack_post_message_printer (line 23) | def slack_post_message_printer(output):
function slack_post_message (line 29) | def slack_post_message(
FILE: Slack/legos/slack_send_DM/slack_send_DM.py
class InputSchema (line 17) | class InputSchema(BaseModel):
function slack_send_DM_printer (line 26) | def slack_send_DM_printer(output):
function slack_send_DM (line 31) | def slack_send_DM(
FILE: Snowflake/legos/snowflake_read_query/snowflake_read_query.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function snowflake_read_query_printer (line 20) | def snowflake_read_query_printer(output):
function snowflake_read_query (line 26) | def snowflake_read_query(handle, query: str, db_name: str, schema_name: ...
FILE: Snowflake/legos/snowflake_write_query/snowflake_write_query.py
class InputSchema (line 7) | class InputSchema(BaseModel):
function snowflake_write_query_printer (line 18) | def snowflake_write_query_printer(output):
function snowflake_write_query (line 24) | def snowflake_write_query(handle, query: str, db_name: str, schema_name:...
FILE: Splunk/legos/splunk_get_handle/splunk_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function splunk_get_handle (line 12) | def splunk_get_handle(handle):
FILE: Stripe/legos/stripe_capture_charge/stripe_capture_charge.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function stripe_capture_charge_printer (line 16) | def stripe_capture_charge_printer(output):
function stripe_capture_charge (line 25) | def stripe_capture_charge(handle, charge_id:str) -> List:
FILE: Stripe/legos/stripe_close_dispute/stripe_close_dispute.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_close_dispute_printer (line 17) | def stripe_close_dispute_printer(output):
function stripe_close_dispute (line 27) | def stripe_close_dispute(handle, dispute_id:str) -> List:
FILE: Stripe/legos/stripe_create_charge/stripe_create_charge.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function stripe_create_charge_printer (line 25) | def stripe_create_charge_printer(output):
function stripe_create_charge (line 33) | def stripe_create_charge(
FILE: Stripe/legos/stripe_create_customer/stripe_create_customer.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function stripe_create_customer_printer (line 16) | def stripe_create_customer_printer(output):
function stripe_create_customer (line 25) | def stripe_create_customer(handle, params:dict) -> List:
FILE: Stripe/legos/stripe_create_refund/stripe_create_refund.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_create_refund_printer (line 17) | def stripe_create_refund_printer(output):
function stripe_create_refund (line 26) | def stripe_create_refund(handle, charge_id:str) -> List:
FILE: Stripe/legos/stripe_delete_customer/stripe_delete_customer.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_delete_customer_printer (line 17) | def stripe_delete_customer_printer(output):
function stripe_delete_customer (line 26) | def stripe_delete_customer(handle, customer_id:str) -> List:
FILE: Stripe/legos/stripe_get_all_charges/stripe_get_all_charges.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function stripe_get_all_charges_printer (line 16) | def stripe_get_all_charges_printer(output):
function stripe_get_all_charges (line 24) | def stripe_get_all_charges(handle, max_results: int = 25) -> List:
FILE: Stripe/legos/stripe_get_all_customers/stripe_get_all_customers.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function stripe_get_all_customers_printer (line 16) | def stripe_get_all_customers_printer(output):
function stripe_get_all_customers (line 25) | def stripe_get_all_customers(handle, max_results: int = 25) -> List:
FILE: Stripe/legos/stripe_get_all_disputes/stripe_get_all_disputes.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_get_all_disputes_printer (line 17) | def stripe_get_all_disputes_printer(output):
function stripe_get_all_disputes (line 26) | def stripe_get_all_disputes(handle, max_results: int = 25) -> List:
FILE: Stripe/legos/stripe_get_all_refunds/stripe_get_all_refunds.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_get_all_refunds_printer (line 17) | def stripe_get_all_refunds_printer(output):
function stripe_get_all_refunds (line 26) | def stripe_get_all_refunds(handle, max_results: int = 25) -> List:
FILE: Stripe/legos/stripe_get_handle/stripe_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function stripe_get_handle (line 12) | def stripe_get_handle(handle):
FILE: Stripe/legos/stripe_retrieve_charge/stripe_retrieve_charge.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_retrieve_charge_printer (line 17) | def stripe_retrieve_charge_printer(output):
function stripe_retrieve_charge (line 26) | def stripe_retrieve_charge(handle, charge_id:str) -> Dict:
FILE: Stripe/legos/stripe_retrieve_customer/stripe_retrieve_customer.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_retrieve_customer_printer (line 17) | def stripe_retrieve_customer_printer(output):
function stripe_retrieve_customer (line 26) | def stripe_retrieve_customer(handle, customer_id:str) -> List:
FILE: Stripe/legos/stripe_retrieve_dispute/stripe_retrieve_dispute.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_retrieve_dispute_printer (line 17) | def stripe_retrieve_dispute_printer(output):
function stripe_retrieve_dispute (line 26) | def stripe_retrieve_dispute(handle, dispute_id:str) -> List:
FILE: Stripe/legos/stripe_retrieve_refund/stripe_retrieve_refund.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_retrieve_refund_printer (line 17) | def stripe_retrieve_refund_printer(output):
function stripe_retrieve_refund (line 26) | def stripe_retrieve_refund(handle, refund_id:str) -> List:
FILE: Stripe/legos/stripe_update_charge/stripe_update_charge.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_update_charge_printer (line 52) | def stripe_update_charge_printer(output):
function stripe_update_charge (line 61) | def stripe_update_charge(
FILE: Stripe/legos/stripe_update_customer/stripe_update_customer.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_update_customer_printer (line 53) | def stripe_update_customer_printer(output):
function stripe_update_customer (line 62) | def stripe_update_customer(
FILE: Stripe/legos/stripe_update_dispute/stripe_update_dispute.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_update_dispute_printer (line 33) | def stripe_update_dispute_printer(output):
function stripe_update_dispute (line 42) | def stripe_update_dispute(handle,
FILE: Stripe/legos/stripe_update_refund/stripe_update_refund.py
class InputSchema (line 10) | class InputSchema(BaseModel):
function stripe_update_refund_printer (line 23) | def stripe_update_refund_printer(output):
function stripe_update_refund (line 32) | def stripe_update_refund(handle, refund_id:str, metadata:dict) -> List:
FILE: Terraform/legos/terraform_exec_command/terraform_exec_command.py
class InputSchema (line 9) | class InputSchema(BaseModel):
function terraform_exec_command (line 31) | def terraform_exec_command(handle, repo, branch, command, dir_path:str=N...
FILE: Terraform/legos/terraform_get_handle/terraform_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function terraform_get_handle (line 12) | def terraform_get_handle(handle):
FILE: Vault/legos/vault_get_handle/vault_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function vault_get_handle (line 12) | def vault_get_handle(handle):
FILE: Vault/legos/vault_get_service_health/vault_get_service_health.py
class InputSchema (line 6) | class InputSchema(BaseModel):
function vault_get_service_health_printer (line 9) | def vault_get_service_health_printer(output):
function vault_get_service_health (line 21) | def vault_get_service_health(handle) -> Tuple:
FILE: Zabbix/legos/zabbix_get_handle/zabbix_get_handle.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function zabbix_get_handle (line 12) | def zabbix_get_handle(handle):
FILE: all_modules_test.py
function get_py_files (line 11) | def get_py_files() -> list:
function test_if_importable (line 23) | def test_if_importable(files: list) -> bool:
FILE: infra/legos/infra_execute_runbook/infra_execute_runbook.py
class unSkriptCustomType (line 11) | class unSkriptCustomType(str):
method __get_validators__ (line 13) | def __get_validators__(cls):
method __modify_schema__ (line 20) | def __modify_schema__(cls, field_schema):
method validate (line 28) | def validate(cls, v):
method __repr__ (line 33) | def __repr__(self):
class InputSchema (line 36) | class InputSchema(BaseModel):
function infra_execute_runbook_printer (line 46) | def infra_execute_runbook_printer(output):
function infra_execute_runbook (line 50) | def infra_execute_runbook(handle, runbook_id: str, params: dict = None) ...
FILE: infra/legos/infra_workflow_done/infra_workflow_done.py
class InputSchema (line 8) | class InputSchema(BaseModel):
function infra_workflow_done (line 12) | def infra_workflow_done(hand
Condensed preview — 2805 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,156K chars).
[
{
"path": ".github/Anatomy-of-Runbook.md",
"chars": 2967,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 3700,
"preview": "# Contributing\nThanks for taking time to contribute and helping us make this project better! The following is a set of g"
},
{
"path": ".github/DEVELOPERGUIDE.md",
"chars": 6250,
"preview": "\n<p align=\"center\">\n <a href=\"https://github.com/unskript/Awesome-CloudOps-Automation\">\n <img src=\"https://unskript."
},
{
"path": ".github/ISSUE_TEMPLATE/add_action.yml",
"chars": 1862,
"preview": "name: Create New Action\ndescription: File an Action Request\ntitle: \"[Action]: \"\nlabels: [\"action\", \"triage\"]\nbody:\n - t"
},
{
"path": ".github/ISSUE_TEMPLATE/add_chatgpt_action.yml",
"chars": 2065,
"preview": "---\nname: Create New Action with files\ndescription: File an Action Request with files\ntitle: \"[Action]: \"\nlabels:\n - ac"
},
{
"path": ".github/ISSUE_TEMPLATE/add_credential.yml",
"chars": 1398,
"preview": "name: Create New Credential\ndescription: File an Credential Request\ntitle: \"[Credential]: \"\nlabels: [\"Credential\", \"tria"
},
{
"path": ".github/ISSUE_TEMPLATE/add_runbook.yml",
"chars": 1650,
"preview": "name: Create New RunBook\ndescription: File an Runbook Request\ntitle: \"[RunBook]: \"\nlabels: [\"runbook\", \"triage\"]\nbody:\n "
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 834,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 28,
"preview": "blank_issues_enabled: false\n"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/action_pr_template.yml",
"chars": 2023,
"preview": "name: Action Pull Request\ndescription: Use this template to raise PR for your Action\nlabels:\n - 'awesome-action'\nbody:\n"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/feature_request_template.yml",
"chars": 790,
"preview": "name: Feature request\ndescription: Use this template for requesting a feature/enhancement.\nlabels:\n - 'feature-request'"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/lego_pr_template.md",
"chars": 1381,
"preview": "## Description\nPlease include a summary of the change, motivation and context.\n\n<!--\n- **on a feature**: describe the fe"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/runbook_pr_template.md",
"chars": 1220,
"preview": "## Description\nPlease describe what the runbook is accomplishing. \n\n> Eg: This Runbook helps in find and prune un-used "
},
{
"path": ".github/code-of-conduct.md",
"chars": 5246,
"preview": "# Unskript Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our\n"
},
{
"path": ".github/dependabot.yml",
"chars": 111,
"preview": "version: 2\nupdates:\n - package-ecosystem: github-actions\n directory: /\n schedule:\n interval: daily\n"
},
{
"path": ".github/guidelines-to-creating-runbook.md",
"chars": 2564,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": ".github/hfest_2022_resource.md",
"chars": 2852,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": ".github/images/actionShield.json",
"chars": 81,
"preview": "{\"schemaVersion\": 1, \"label\": \"Action Count\", \"message\": \"539\", \"color\": \"green\"}"
},
{
"path": ".github/images/runbookShield.json",
"chars": 82,
"preview": "{\"schemaVersion\": 1, \"label\": \"RunBook Count\", \"message\": \"81\", \"color\": \"orange\"}"
},
{
"path": ".github/pull_request_template.md",
"chars": 1381,
"preview": "## Description\nPlease include a summary of the change, motivation and context.\n\n<!--\n- **on a feature**: describe the fe"
},
{
"path": ".github/workflows/all_module_test.yml",
"chars": 2234,
"preview": "name: All Modules Import Test\non:\n pull_request:\n types: [ opened, reopened, edited, ready_for_review ]\n push:\n\nper"
},
{
"path": ".github/workflows/build-and-release-docker-lite.yml",
"chars": 16112,
"preview": "name: Build and Release Docker Lite\n\non:\n workflow_call:\n inputs:\n enabled:\n required: true\n type"
},
{
"path": ".github/workflows/build-and-release-docker.yml",
"chars": 18931,
"preview": "name: Build and Release Docker\n\non:\n workflow_call:\n inputs:\n enabled:\n required: true\n type: boo"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 2945,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/dependency-review.yml",
"chars": 1032,
"preview": "# Dependency Review Action\n#\n# This Action will scan dependency manifest files that change as part of a Pull Request,\n# "
},
{
"path": ".github/workflows/generate_readme.yaml",
"chars": 2614,
"preview": "name: Generate Readme\non:\n workflow_dispatch:\njobs:\n generate-readme:\n if: \"!startsWith(github.event.head_commit.me"
},
{
"path": ".github/workflows/lint-test.yaml",
"chars": 697,
"preview": "name: Lint\n\non:\n # Trigger the workflow on push or pull request,\n # but only for the main branch\n push:\n branches:"
},
{
"path": ".github/workflows/make-release.yaml",
"chars": 3162,
"preview": "name: Make Release\n\non:\n workflow_dispatch: \n \njobs:\n make-release:\n runs-on: ubuntu-latest\n outputs:\n GIT"
},
{
"path": ".github/workflows/run-legoschema.yml",
"chars": 1087,
"preview": "name: Run Legoschema\non:\n pull_request:\n types: [opened, reopened, edited, ready_for_review]\n push:\n\nconcurrency:\n "
},
{
"path": ".github/workflows/sanitize-runbook.yml",
"chars": 1468,
"preview": "name: Sanitize Runbook\non:\n pull_request:\n types: [ opened, reopened, edited, ready_for_review ]\n push:\n\nenv:\n PR_"
},
{
"path": ".github/workflows/scorecards.yml",
"chars": 3124,
"preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
},
{
"path": ".gitignore",
"chars": 194,
"preview": "*.DS_Store\n.ipynb_checkpoints\n__pycache__\n\n# Ignore temp files (build artifacts) that gets generated\n# for custom Action"
},
{
"path": ".pylintrc",
"chars": 14186,
"preview": "# This Pylint rcfile contains a best-effort configuration to uphold the\n# best-practices and style described in the Goog"
},
{
"path": ".vscode/settings.json",
"chars": 48,
"preview": "{\n \"cSpell.words\": [\n \"SECOPS\"\n ]\n}"
},
{
"path": "AWS/.gitignore",
"chars": 9,
"preview": ".DS_Store"
},
{
"path": "AWS/AWS_Access_Key_Rotation.ipynb",
"chars": 31415,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"8ca4bd16-bef4-4d7c-96eb-59eeb2315864\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Access_Key_Rotation.json",
"chars": 810,
"preview": "{\n \"name\": \"AWS Access Key Rotation for IAM users\",\n \"description\": \"This runbook can be used to configure AWS Access "
},
{
"path": "AWS/AWS_Add_Lifecycle_Policy_To_S3_Buckets.ipynb",
"chars": 22840,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n "
},
{
"path": "AWS/AWS_Add_Lifecycle_Policy_To_S3_Buckets.json",
"chars": 1270,
"preview": "{\n \"name\": \"Add Lifecycle Policy to S3 Buckets\",\n \"description\": \"Attaching lifecycle policies to AWS S3 buckets e"
},
{
"path": "AWS/AWS_Add_Mandatory_tags_to_EC2.ipynb",
"chars": 22003,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Add_Mandatory_tags_to_EC2.json",
"chars": 628,
"preview": "{\n \"name\": \"AWS Add Mandatory tags to EC2\",\n \"description\": \"This xRunBook is a set of example actions that could be u"
},
{
"path": "AWS/AWS_Add_Tag_Across_Selected_AWS_Resources.ipynb",
"chars": 18093,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Add_Tag_Across_Selected_AWS_Resources.json",
"chars": 525,
"preview": "{\n \"name\": \"AWS Update Resources about to expire\",\n \"description\": \"This finds resources that have an expiration t"
},
{
"path": "AWS/AWS_Bulk_Update_Resource_Tag.ipynb",
"chars": 16446,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Bulk_Update_Resource_Tag.json",
"chars": 623,
"preview": "{\n \"name\": \"AWS Bulk Update Resource Tag\",\n \"description\": \"This runbook will find all AWS Resources tagged with a"
},
{
"path": "AWS/AWS_Change_EBS_Volume_To_GP3_Type.ipynb",
"chars": 17835,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"6b5fc373-33cc-4aa1-8a91-95d195fca904\",\n "
},
{
"path": "AWS/AWS_Change_EBS_Volume_To_GP3_Type.json",
"chars": 612,
"preview": "{\n \"name\": \"Change AWS EBS Volume To GP3 Type\",\n \"description\": \"This runbook can be used to change the type of an"
},
{
"path": "AWS/AWS_Change_Route53_TTL.ipynb",
"chars": 22240,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82eebdfd-c880-40df-bd6d-5b546c92164b\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Change_Route53_TTL.json",
"chars": 922,
"preview": "{\n \"name\": \"Change AWS Route53 TTL\",\n \"description\": \"For a record in a hosted zone, lower TTL means that more que"
},
{
"path": "AWS/AWS_Create_New_IAM_User_With_Policy.ipynb",
"chars": 25432,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"8a97b231-94d6-4e10-a24c-6eac9a4572e4\",\n "
},
{
"path": "AWS/AWS_Create_New_IAM_User_With_Policy.json",
"chars": 421,
"preview": "{\n \"name\": \"Create IAM User with policy\",\n \"description\": \"Create new IAM user with a security Policy. Sends conf"
},
{
"path": "AWS/AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.ipynb",
"chars": 18012,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n "
},
{
"path": "AWS/AWS_Delete_EBS_Volumes_Attached_To_Stopped_Instances.json",
"chars": 729,
"preview": "{\n \"name\": \"Delete EBS Volume Attached to Stopped Instances\",\n \"description\": \"EBS (Elastic Block Storage) volumes"
},
{
"path": "AWS/AWS_Delete_EBS_Volumes_With_Low_Usage.ipynb",
"chars": 19682,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_EBS_Volumes_With_Low_Usage.json",
"chars": 722,
"preview": "{\n \"name\": \"Delete EBS Volume With Low Usage\",\n \"description\": \"This runbook can help us identify low usage Amazon"
},
{
"path": "AWS/AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.ipynb",
"chars": 18915,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_ECS_Clusters_with_Low_CPU_Utilization.json",
"chars": 1137,
"preview": "{\n \"name\": \"Delete ECS Clusters with Low CPU Utilization\",\n \"description\": \"ECS clusters are a managed service tha"
},
{
"path": "AWS/AWS_Delete_ELBs_With_No_Targets_Or_Instances.ipynb",
"chars": 26507,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82eebdfd-c880-40df-bd6d-5b546c92164b\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_ELBs_With_No_Targets_Or_Instances.json",
"chars": 969,
"preview": "{\n \"name\": \"Delete AWS ELBs With No Targets Or Instances\",\n \"description\": \"ELBs are used to distribute incoming t"
},
{
"path": "AWS/AWS_Delete_IAM_User.ipynb",
"chars": 28476,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"8a97b231-94d6-4e10-a24c-6eac9a4572e4\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_IAM_User.json",
"chars": 464,
"preview": "{\n \"name\": \"Delete IAM profile\",\n \"description\": \"This runbook is the inverse of Create IAM user with profile - re"
},
{
"path": "AWS/AWS_Delete_Old_EBS_Snapshots.ipynb",
"chars": 17751,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"1da6be45\",\n \"metadata\": {\n \"jupyter\":"
},
{
"path": "AWS/AWS_Delete_Old_EBS_Snapshots.json",
"chars": 743,
"preview": "{\n \"name\": \"Delete Old EBS Snapshots\",\n \"description\": \"Amazon Elastic Block Store (EBS) snapshots are created inc"
},
{
"path": "AWS/AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.ipynb",
"chars": 21434,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_RDS_Instances_with_Low_CPU_Utilization.json",
"chars": 743,
"preview": "{\n \"name\": \"Delete RDS Instances with Low CPU Utilization\",\n \"description\": \"Deleting RDS instances with low CPU u"
},
{
"path": "AWS/AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.ipynb",
"chars": 22647,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_Redshift_Clusters_with_Low_CPU_Utilization.json",
"chars": 864,
"preview": "{\n \"name\": \"Delete Redshift Clusters with Low CPU Utilization\",\n \"description\": \"Redshift clusters are the basic u"
},
{
"path": "AWS/AWS_Delete_Unattached_EBS_Volume.ipynb",
"chars": 23659,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"b526603d-f9fd-4074-adc3-f83dfee4ec85\",\n "
},
{
"path": "AWS/AWS_Delete_Unattached_EBS_Volume.json",
"chars": 677,
"preview": "{\n \"name\": \"Delete Unattached AWS EBS Volumes\",\n \"description\": \"This runbook can be used to delete all unattached EBS"
},
{
"path": "AWS/AWS_Delete_Unused_AWS_Secrets.ipynb",
"chars": 19142,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n "
},
{
"path": "AWS/AWS_Delete_Unused_AWS_Secrets.json",
"chars": 384,
"preview": "{\n \"name\": \"Delete Unused AWS Secrets\",\n \"description\": \"This runbook can be used to delete unused secrets in AWS."
},
{
"path": "AWS/AWS_Delete_Unused_Log_Streams.ipynb",
"chars": 21232,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_Unused_Log_Streams.json",
"chars": 563,
"preview": "{\n \"name\": \"Delete Unused AWS Log Streams\",\n \"description\": \"Cloudwatch will retain empty Log Streams after the da"
},
{
"path": "AWS/AWS_Delete_Unused_NAT_Gateways.ipynb",
"chars": 19232,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"625dfbc1-d348-4423-97b8-df672384cdd1\",\n "
},
{
"path": "AWS/AWS_Delete_Unused_NAT_Gateways.json",
"chars": 446,
"preview": "{\n \"name\": \"Delete Unused NAT Gateways\",\n \"description\": \"This runbook search for all unused NAT gateways from all"
},
{
"path": "AWS/AWS_Delete_Unused_Route53_Healthchecks.ipynb",
"chars": 16970,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82eebdfd-c880-40df-bd6d-5b546c92164b\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Delete_Unused_Route53_Healthchecks.json",
"chars": 1152,
"preview": "{\n \"name\": \"Delete Unused Route53 HealthChecks\",\n \"description\": \"When we associate healthchecks with an endpoint,"
},
{
"path": "AWS/AWS_Detach_ec2_Instance_from_ASG.ipynb",
"chars": 24277,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"9a175295-d9f6-47f1-bab9-c4b9d6cdf375\",\n "
},
{
"path": "AWS/AWS_Detach_ec2_Instance_from_ASG.json",
"chars": 804,
"preview": "{\n \"name\": \"AWS Detach EC2 Instance from ASG\",\n \"description\": \"This runbook can be used to detach an instance from Au"
},
{
"path": "AWS/AWS_EC2_Disk_Cleanup.ipynb",
"chars": 39957,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"bf364c84\",\n \"metadata\": {\n \"jupyter\": {\n \"source_hidden"
},
{
"path": "AWS/AWS_EC2_Disk_Cleanup.json",
"chars": 581,
"preview": "{\n \"name\": \"AWS EC2 Disk Cleanup\",\n \"description\": \"This runbook locates large files in an EC2 instance and backs them"
},
{
"path": "AWS/AWS_Enforce_HTTP_Redirection_across_AWS_ALB.ipynb",
"chars": 19479,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"d06ee036-9b31-4b61-89d9-87510fa416a3\",\n "
},
{
"path": "AWS/AWS_Enforce_HTTP_Redirection_across_AWS_ALB.json",
"chars": 938,
"preview": "{\n \"name\": \"Enforce HTTP Redirection across all AWS ALB instances\",\n \"description\": \"This runbook can be used to enfor"
},
{
"path": "AWS/AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.ipynb",
"chars": 29199,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"e2fffe48-5eb4-4177-95ec-7955cc381ad8\",\n "
},
{
"path": "AWS/AWS_Ensure_Redshift_Clusters_have_Paused_Resume_Enabled.json",
"chars": 499,
"preview": "{\n \"name\": \"AWS Ensure Redshift Clusters have Paused Resume Enabled\",\n \"description\": \"This runbook finds redshift"
},
{
"path": "AWS/AWS_Get_Elb_Unhealthy_Instances.ipynb",
"chars": 19349,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"c2072425\",\n \"metadata\": {\n \"jupyter\":"
},
{
"path": "AWS/AWS_Get_Elb_Unhealthy_Instances.json",
"chars": 687,
"preview": "{\n \"name\": \"AWS Get unhealthy EC2 instances from ELB\",\n \"description\": \"This runbook can be used to list unhealthy EC2"
},
{
"path": "AWS/AWS_Get_Redshift_Daily_Product_Costs.ipynb",
"chars": 31044,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"e54624c7-4d3e-431a-adda-d2e0e736ed65\",\n "
},
{
"path": "AWS/AWS_Get_Redshift_Daily_Product_Costs.json",
"chars": 495,
"preview": "{\n \"name\": \"AWS Redshift Get Daily Costs from AWS Products\",\n \"description\": \"This runbook can be used to create c"
},
{
"path": "AWS/AWS_Get_Redshift_EC2_Daily_Costs.ipynb",
"chars": 32337,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"f46958a9-6580-475a-b845-72aacface2dc\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Get_Redshift_EC2_Daily_Costs.json",
"chars": 483,
"preview": "{\n \"name\": \"AWS Redshift Get Daily Costs from EC2 Usage\",\n \"description\": \"This runbook can be used to create char"
},
{
"path": "AWS/AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.ipynb",
"chars": 16917,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"1a1d80a5-6559-47b4-954f-8c301c581d8f\",\n "
},
{
"path": "AWS/AWS_Lowering_AWS_CloudTrail_Costs_by_Removing_Redundant_Trails.json",
"chars": 797,
"preview": "{\n \"name\": \"AWS Lowering CloudTrail Costs by Removing Redundant Trails\",\n \"description\": \"The AWS CloudTrail service a"
},
{
"path": "AWS/AWS_Notify_About_Unused_Keypairs.ipynb",
"chars": 19996,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5360a41f-ee95-482d-8523-4c5f608eca12\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Notify_About_Unused_Keypairs.json",
"chars": 537,
"preview": "{\n \"name\": \"List unused Amazon EC2 key pairs\",\n \"description\": \"This runbook finds all EC2 key pairs that are not "
},
{
"path": "AWS/AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.ipynb",
"chars": 21271,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n "
},
{
"path": "AWS/AWS_Purchase_Reserved_Cache_Nodes_For_Long_Running_ElastiCache_Clusters.json",
"chars": 960,
"preview": "{\n \"name\": \"Purchase Reserved Nodes For Long Running AWS ElastiCache Clusters\",\n \"description\": \"Ensuring that lon"
},
{
"path": "AWS/AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.ipynb",
"chars": 20871,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Purchase_Reserved_Instances_For_Long_Running_RDS_Instances.json",
"chars": 943,
"preview": "{\n \"name\": \"Purchase Reserved Instances For Long Running AWS RDS Instances\",\n \"description\": \"Ensuring that long-r"
},
{
"path": "AWS/AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.ipynb",
"chars": 20585,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5424264e-6195-4cf9-906b-24b02d5a83f3\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Purchase_Reserved_Nodes_For_Long_Running_Redshift_Clusters.json",
"chars": 1013,
"preview": "{\n \"name\": \"Purchase Reserved Nodes For Long Running AWS Redshift Clusters\",\n \"description\": \"Ensuring that long-r"
},
{
"path": "AWS/AWS_Release_Unattached_Elastic_IPs.ipynb",
"chars": 17193,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82eebdfd-c880-40df-bd6d-5b546c92164b\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Release_Unattached_Elastic_IPs.json",
"chars": 643,
"preview": "{\n \"name\": \"Release Unattached AWS Elastic IPs\",\n \"description\": \"A disassociated Elastic IP address remains alloc"
},
{
"path": "AWS/AWS_Remediate_unencrypted_S3_buckets.ipynb",
"chars": 17940,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"cbabc8b5-57b4-45b8-890c-370bb1ed6f02\",\n "
},
{
"path": "AWS/AWS_Remediate_unencrypted_S3_buckets.json",
"chars": 440,
"preview": "{\n \"name\": \"Remediate unencrypted S3 buckets\",\n \"description\": \"This runbook can be used to filter all the S3 buckets "
},
{
"path": "AWS/AWS_Renew_SSL_Certificate.ipynb",
"chars": 21064,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"b18495bb-19ba-4b43-9824-8739dd304b90\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Renew_SSL_Certificate.json",
"chars": 572,
"preview": "{\n \"name\": \"Renew AWS SSL Certificates that are close to expiration\",\n \"description\": \"This runbook can be used to"
},
{
"path": "AWS/AWS_Restart_Unhealthy_Services_Target_Group.ipynb",
"chars": 17547,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"60338620-97a9-4b89-9897-f6ff0b25a8a2\",\n "
},
{
"path": "AWS/AWS_Restart_Unhealthy_Services_Target_Group.json",
"chars": 518,
"preview": "{\n \"name\": \"AWS Restart unhealthy services in a Target Group\",\n \"description\": \"This runbook restarts unhealthy servic"
},
{
"path": "AWS/AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.ipynb",
"chars": 23517,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"c92fbc7c-b9b3-4fd9-8f55-9811f3580311\",\n "
},
{
"path": "AWS/AWS_Restrict_S3_Buckets_with_READ_WRITE_Permissions.json",
"chars": 555,
"preview": "{\n \"name\": \"Restrict S3 Buckets with READ/WRITE Permissions to all Authenticated Users\",\n \"description\": \"This run"
},
{
"path": "AWS/AWS_Secure_Publicly_Accessible_RDS_Instances.ipynb",
"chars": 25081,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"c0e8284f-f6a8-4b7f-971c-8fb037002354\""
},
{
"path": "AWS/AWS_Secure_Publicly_Accessible_RDS_Instances.json",
"chars": 457,
"preview": "{\n \"name\": \"Secure Publicly Accessible Amazon RDS Instances\",\n \"description\": \"This runbook can be used to find the pu"
},
{
"path": "AWS/AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.ipynb",
"chars": 18466,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"9bdb4ffc-b726-49e9-95b8-063371b3fa61\",\n "
},
{
"path": "AWS/AWS_Secure_Publicly_accessible_Amazon_RDS_Snapshot.json",
"chars": 526,
"preview": "{\n \"name\": \"Secure Publicly accessible Amazon RDS Snapshot\",\n \"description\": \"This lego can be used to list all the ma"
},
{
"path": "AWS/AWS_Stop_Idle_EC2_Instances.ipynb",
"chars": 20497,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"0bc2da9b-06db-4411-b7a1-60bf674c3cd4\",\n "
},
{
"path": "AWS/AWS_Stop_Idle_EC2_Instances.json",
"chars": 416,
"preview": "{\n \"name\": \"Stop Idle EC2 Instances\",\n \"description\": \"This runbook can be used to Stop all EC2 Instances that are idl"
},
{
"path": "AWS/AWS_Stop_Untagged_EC2_Instances.ipynb",
"chars": 17732,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"cadbcf65-5c79-4496-81ef-c9e1e18ee932\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Stop_Untagged_EC2_Instances.json",
"chars": 407,
"preview": "{\n \"name\": \"Stop all Untagged AWS EC2 Instances\",\n \"description\": \"This runbook can be used to Stop all EC2 Instan"
},
{
"path": "AWS/AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.ipynb",
"chars": 22003,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"280d4d6f-a47c-4fa2-8d55-a4e19899d46c\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Terminate_EC2_Instances_Without_Valid_Lifetime_Tag.json",
"chars": 489,
"preview": "{\n \"name\": \"Terminate EC2 Instances Without Valid Lifetime Tag\",\n \"description\": \"This runbook can be used to list"
},
{
"path": "AWS/AWS_Update_RDS_Instances_from_Old_to_New_Generation.ipynb",
"chars": 18329,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"e2fffe48-5eb4-4177-95ec-7955cc381ad8\",\n "
},
{
"path": "AWS/AWS_Update_RDS_Instances_from_Old_to_New_Generation.json",
"chars": 472,
"preview": "{\n \"name\": \"AWS Update RDS Instances from Old to New Generation\",\n \"description\": \"This runbook can be used to find th"
},
{
"path": "AWS/AWS_Update_Redshift_Database.ipynb",
"chars": 24751,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5331e347-9cea-40fe-9828-959657edd35d\",\n \"metadata\": {\n \"nam"
},
{
"path": "AWS/AWS_Update_Redshift_Database.json",
"chars": 418,
"preview": "{\n \"name\": \"AWS Redshift Update Database\",\n \"description\": \"This runbook can be used to update a redshift database"
},
{
"path": "AWS/AWS_Update_Resource_Tags.ipynb",
"chars": 17543,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Update_Resource_Tags.json",
"chars": 414,
"preview": "{\n \"name\": \"AWS Update Resource Tags\",\n \"description\": \"This runbook can be used to update an existing tag to any "
},
{
"path": "AWS/AWS_Update_Resources_About_To_Expire.ipynb",
"chars": 26784,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/AWS_Update_Resources_About_To_Expire.json",
"chars": 462,
"preview": "{\n \"name\": \"AWS Add Tags Across Selected AWS Resources\",\n \"description\": \"This finds resources missing a tag, and "
},
{
"path": "AWS/AWS_encrypt_unencrypted_S3_buckets.ipynb",
"chars": 21638,
"preview": "{\n \"cells\": [\n {\n \"attachments\": {},\n \"cell_type\": \"markdown\",\n \"id\": \"cbabc8b5-57b4-45b8-890c-370bb1ed6f02\",\n "
},
{
"path": "AWS/AWS_encrypt_unencrypted_S3_buckets.json",
"chars": 439,
"preview": "{\n \"name\": \"Encrypt unencrypted S3 buckets\",\n \"description\": \"This runbook can be used to filter all the S3 buckets wh"
},
{
"path": "AWS/Add_new_IAM_user.ipynb",
"chars": 25385,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"8a97b231-94d6-4e10-a24c-6eac9a4572e4\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Add_new_IAM_user.json",
"chars": 571,
"preview": "{\n \"name\": \"Create a new AWS IAM User\",\n \"description\": \"AWS has an inbuilt identity and access management system know"
},
{
"path": "AWS/Configure_url_endpoint_on_a_cloudwatch_alarm.ipynb",
"chars": 9459,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"02550ae3\",\n \"metadata\": {\n \"jupyter\": {\n \"source_hidden"
},
{
"path": "AWS/Configure_url_endpoint_on_a_cloudwatch_alarm.json",
"chars": 575,
"preview": "{\n \"name\": \"Configure URL endpoint on a AWS CloudWatch alarm\",\n \"description\": \"Configures the URL endpoint to the SNS"
},
{
"path": "AWS/Copy_ami_to_all_given_AWS_regions.ipynb",
"chars": 18091,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"07894245-58bd-475f-b722-8d7513fbe063\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Copy_ami_to_all_given_AWS_regions.json",
"chars": 524,
"preview": "{\n \"name\": \"Copy AMI to All Given AWS Regions\",\n \"description\": \"This runbook can be used to copy AMI from one region "
},
{
"path": "AWS/Delete_Unused_AWS_NAT_Gateways.ipynb",
"chars": 25119,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"82eebdfd-c880-40df-bd6d-5b546c92164b\",\n \"metadata\": {\n \"nam"
},
{
"path": "AWS/Delete_Unused_AWS_NAT_Gateways.json",
"chars": 707,
"preview": "{\n \"name\": \"Delete Unused AWS NAT Gateways\",\n \"description\": \"This runbook can be used to identify and remove any "
},
{
"path": "AWS/Detach_Instance_from_ASG.ipynb",
"chars": 28347,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"9a175295-d9f6-47f1-bab9-c4b9d6cdf375\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Detach_Instance_from_ASG.json",
"chars": 798,
"preview": "{\n \"name\": \"Detach EC2 Instance from ASG\",\n \"description\": \"This runbook can be used to detach an instance from Auto S"
},
{
"path": "AWS/Detect_ECS_failed_deployment.ipynb",
"chars": 13159,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"111d99a7\",\n \"metadata\": {},\n \"source\": [\n \"<img src=\\\"htt"
},
{
"path": "AWS/Detect_ECS_failed_deployment.json",
"chars": 550,
"preview": "{\n \"name\": \"Detect ECS failed deployment\",\n \"description\": \"This runbook check if there is a failed deployment in prog"
},
{
"path": "AWS/Enforce_Mandatory_Tags_Across_All_AWS_Resources.ipynb",
"chars": 16649,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"79251bc7-c6cd-4344-a8d5-754bf62eb17e\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Enforce_Mandatory_Tags_Across_All_AWS_Resources.json",
"chars": 583,
"preview": "{\n \"name\": \"Enforce Mandatory Tags Across All AWS Resources\",\n \"description\": \"This runbook can be used to Enforce Man"
},
{
"path": "AWS/Find_EC2_Instances_Scheduled_to_retire.ipynb",
"chars": 10514,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"96ddce27-c542-40c7-b8af-76426cc7dc54\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Find_EC2_Instances_Scheduled_to_retire.json",
"chars": 706,
"preview": "{\n \"name\": \"Handle AWS EC2 Instance Scheduled to retire\",\n \"description\": \"To avoid unexpected interruptions, it's a g"
},
{
"path": "AWS/IAM_security_least_privilege.ipynb",
"chars": 40963,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"c212a0cc-7a58-4451-9f19-1b058bc7aec8\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/IAM_security_least_privilege.json",
"chars": 497,
"preview": "{\n \"name\": \"Create an IAM user using Principle of Least Privilege\",\n \"description\": \"Extract usage details from Cloudt"
},
{
"path": "AWS/Monitor_AWS_DynamoDB_provision_capacity.ipynb",
"chars": 56367,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"1fe9e993-6175-40e2-be4d-b38474f610c4\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Monitor_AWS_DynamoDB_provision_capacity.json",
"chars": 456,
"preview": "{\n \"name\": \"Monitor AWS DynamoDB provision capacity\",\n \"description\": \"This runbook can be used to collect the data fr"
},
{
"path": "AWS/README.md",
"chars": 75199,
"preview": "# AWS RunBooks\n* [AWS Access Key Rotation for IAM users](https://github.com/unskript/Awesome-CloudOps-Automation/tree/ma"
},
{
"path": "AWS/Resize_EBS_Volume.ipynb",
"chars": 42309,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"cd97199b\",\n \"metadata\": {},\n \"source\": [\n \"<img src=\\\"htt"
},
{
"path": "AWS/Resize_EBS_Volume.json",
"chars": 542,
"preview": "{\n \"name\": \"Resize EBS Volume\",\n \"description\": \"This run resizes the EBS volume to a specified amount. This runbook c"
},
{
"path": "AWS/Resize_List_Of_Pvcs.ipynb",
"chars": 16601,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"id\": \"7520"
},
{
"path": "AWS/Resize_List_Of_Pvcs.json",
"chars": 437,
"preview": "{\n \"name\": \"Resize list of pvcs.\",\n \"description\": \"This runbook can be used to resize list of pvcs in a namespace. By"
},
{
"path": "AWS/Restart_AWS_EC2_Instances_By_Tag.ipynb",
"chars": 22100,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5f773213-63a4-46c6-9336-b6e4edf494d5\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Restart_AWS_EC2_Instances_By_Tag.json",
"chars": 396,
"preview": "{\n \"name\": \"Restart AWS EC2 Instances\",\n \"description\": \"This runbook can be used to Restart AWS EC2 Instances\",\n \"uu"
},
{
"path": "AWS/Run_EC2_from_AMI.ipynb",
"chars": 17084,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"0ecd43d6-5d15-4210-95d5-6b7052748b74\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Run_EC2_from_AMI.json",
"chars": 412,
"preview": "{\n \"name\": \"Launch AWS EC2 from AMI\",\n \"description\": \"This lego can be used to launch an AWS EC2 instance from AMI in"
},
{
"path": "AWS/Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.ipynb",
"chars": 23682,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"2d5c877a-6cb6-46fa-b902-3a631c5798b4\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Troubleshooting_Your_EC2_Configuration_in_Private_Subnet.json",
"chars": 620,
"preview": "{\n \"name\": \"Troubleshooting Your EC2 Configuration in a Private Subnet\",\n \"description\": \"This runbook can be used to "
},
{
"path": "AWS/Update_and_Manage_AWS_User_Permission.ipynb",
"chars": 10717,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"f0865bbe-2a84-4654-9f9a-f794657031b8\",\n \"metadata\": {\n \"jup"
},
{
"path": "AWS/Update_and_Manage_AWS_User_Permission.json",
"chars": 362,
"preview": "{\n \"name\": \"Update and Manage AWS User permission\",\n \"description\": \"This runbook can be used Update and Manage AWS IA"
},
{
"path": "AWS/__init__.py",
"chars": 24,
"preview": "#\n# unSkript (c) 2022\n#\n"
},
{
"path": "AWS/legos/AWS_Start_IAM_Policy_Generation/AWS_Start_IAM_Policy_Generation.json",
"chars": 715,
"preview": "{\n \"action_title\": \"AWS Start IAM Policy Generation \",\n \"action_description\": \"Given a region, a CloudTrail ARN (where"
},
{
"path": "AWS/legos/AWS_Start_IAM_Policy_Generation/AWS_Start_IAM_Policy_Generation.py",
"chars": 1293,
"preview": "##\n# Copyright (c) 2023 unSkript, Inc\n# All rights reserved.\n##\nimport pprint\nfrom datetime import datetime, timedelta\nf"
},
{
"path": "AWS/legos/AWS_Start_IAM_Policy_Generation/README.md",
"chars": 1955,
"preview": "[<img align=\"left\" src=\"https://raw.githubusercontent.com/unskript/Awesome-CloudOps-Automation/master/.github/images/run"
},
{
"path": "AWS/legos/AWS_Start_IAM_Policy_Generation/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/__init__.py",
"chars": 24,
"preview": "#\n# unSkript (c) 2022\n#\n"
},
{
"path": "AWS/legos/aws_add_lifecycle_configuration_to_s3_bucket/README.md",
"chars": 1911,
"preview": "[<img align=\"left\" src=\"https://raw.githubusercontent.com/unskript/Awesome-CloudOps-Automation/master/.github/images/run"
},
{
"path": "AWS/legos/aws_add_lifecycle_configuration_to_s3_bucket/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_add_lifecycle_configuration_to_s3_bucket/aws_add_lifecycle_configuration_to_s3_bucket.json",
"chars": 585,
"preview": "{\n \"action_title\": \"Add Lifecycle Configuration to AWS S3 Bucket\",\n \"action_description\": \"Creates a new lifecycle con"
},
{
"path": "AWS/legos/aws_add_lifecycle_configuration_to_s3_bucket/aws_add_lifecycle_configuration_to_s3_bucket.py",
"chars": 3050,
"preview": "##\n## Copyright (c) 2023 unSkript, Inc\n## All rights reserved.\n##\nfrom pydantic import BaseModel, Field\nfrom typing im"
},
{
"path": "AWS/legos/aws_apply_default_encryption_for_s3_buckets/README.md",
"chars": 786,
"preview": "\r\n[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">]"
},
{
"path": "AWS/legos/aws_apply_default_encryption_for_s3_buckets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_apply_default_encryption_for_s3_buckets/aws_apply_default_encryption_for_s3_buckets.json",
"chars": 569,
"preview": "{\r\n \"action_title\": \"Apply AWS Default Encryption for S3 Bucket\",\r\n \"action_description\": \"Apply AWS Default Encry"
},
{
"path": "AWS/legos/aws_apply_default_encryption_for_s3_buckets/aws_apply_default_encryption_for_s3_buckets.py",
"chars": 1574,
"preview": "##\r\n## Copyright (c) 2021 unSkript, Inc\r\n## All rights reserved.\r\n##\r\nimport pprint\r\nfrom typing import Dict\r\nfrom pyd"
},
{
"path": "AWS/legos/aws_attach_ebs_to_instances/README.md",
"chars": 949,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": "AWS/legos/aws_attach_ebs_to_instances/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_attach_ebs_to_instances/aws_attach_ebs_to_instances.json",
"chars": 530,
"preview": "{\r\n \"action_title\": \"Attach an EBS volume to an AWS EC2 Instance\",\r\n \"action_description\": \"Attach an EBS volume t"
},
{
"path": "AWS/legos/aws_attach_ebs_to_instances/aws_attach_ebs_to_instances.py",
"chars": 1633,
"preview": "# Copyright (c) 2021 unSkript, Inc\r\n# All rights reserved.\r\n##\r\nimport pprint\r\nfrom typing import Dict\r\nfrom pydantic im"
},
{
"path": "AWS/legos/aws_attach_iam_policy/README.md",
"chars": 816,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": "AWS/legos/aws_attach_iam_policy/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_attach_iam_policy/aws_attach_iam_policy.json",
"chars": 525,
"preview": "{\r\n \"action_title\": \"AWS Attach New Policy to User\",\r\n \"action_description\": \"AWS Attach New Policy to User\",\r\n "
},
{
"path": "AWS/legos/aws_attach_iam_policy/aws_attach_iam_policy.py",
"chars": 1461,
"preview": "## Copyright (c) 2021 unSkript, Inc\r\n## All rights reserved.\r\n##\r\nimport pprint\r\nfrom typing import Dict\r\nfrom pydanti"
},
{
"path": "AWS/legos/aws_attach_tags_to_resources/README.md",
"chars": 900,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">]\n("
},
{
"path": "AWS/legos/aws_attach_tags_to_resources/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_attach_tags_to_resources/aws_attach_tags_to_resources.json",
"chars": 483,
"preview": "{\r\n \"action_title\": \"AWS Attach Tags to Resources\",\r\n \"action_description\": \"AWS Attach Tags to Resources\",\r\n \""
},
{
"path": "AWS/legos/aws_attach_tags_to_resources/aws_attach_tags_to_resources.py",
"chars": 2169,
"preview": "from __future__ import annotations\n\n## Copyright (c) 2023 unSkript, Inc\n## All rights reserved.\n##\nimport pprint\nfrom "
},
{
"path": "AWS/legos/aws_change_acl_permissions_of_buckets/README.md",
"chars": 906,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": "AWS/legos/aws_change_acl_permissions_of_buckets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_change_acl_permissions_of_buckets/aws_change_acl_permissions_of_buckets.json",
"chars": 563,
"preview": "{\r\n \"action_title\": \"AWS Change ACL Permission of public S3 Bucket\",\r\n \"action_description\": \"AWS Change ACL Permi"
},
{
"path": "AWS/legos/aws_change_acl_permissions_of_buckets/aws_change_acl_permissions_of_buckets.py",
"chars": 2050,
"preview": "##\r\n# Copyright (c) 2021 unSkript, Inc\r\n# All rights reserved.\r\n##\r\nimport pprint\r\nfrom typing import Optional, Dict\r\nfr"
},
{
"path": "AWS/legos/aws_check_rds_non_m5_t3_instances/README.md",
"chars": 748,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
},
{
"path": "AWS/legos/aws_check_rds_non_m5_t3_instances/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "AWS/legos/aws_check_rds_non_m5_t3_instances/aws_check_rds_non_m5_t3_instances.json",
"chars": 639,
"preview": "{\r\n \"action_title\": \"AWS Check if RDS instances are not M5 or T3\",\r\n \"action_description\": \"AWS Check if RDS insta"
},
{
"path": "AWS/legos/aws_check_rds_non_m5_t3_instances/aws_check_rds_non_m5_t3_instances.py",
"chars": 1810,
"preview": "##\r\n## Copyright (c) 2021 unSkript, Inc\r\n## All rights reserved.\r\n##\r\nimport pprint\r\nfrom typing import Optional, Tupl"
},
{
"path": "AWS/legos/aws_check_ssl_certificate_expiry/README.md",
"chars": 1048,
"preview": "[<img align=\"left\" src=\"https://unskript.com/assets/favicon.png\" width=\"100\" height=\"100\" style=\"padding-right: 5px\">](h"
}
]
// ... and 2605 more files (download for full content)
About this extraction
This page contains the full source code of the unskript/Awesome-CloudOps-Automation GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2805 files (5.3 MB), approximately 1.5M tokens, and a symbol index with 2116 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.