zscaler-sdk-python 1.2.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/PKG-INFO +1 -1
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/pyproject.toml +1 -1
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/__init__.py +1 -1
- zscaler_sdk_python-1.2.1/zscaler/logger.py +124 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_object.py +7 -21
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_response.py +134 -29
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/bandwidth_classes.py +13 -7
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/legacy.py +10 -13
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/application_segment.py +1 -1
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/legacy.py +2 -2
- zscaler_sdk_python-1.2.0/zscaler/logger.py +0 -181
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/LICENSE.md +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/README.md +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/api_client.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/cache.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/no_op_cache.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/cache/zscaler_cache.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/config_setter.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/config/config_validator.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/constants.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/error_messages.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/error.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/http_error.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/errors/zscaler_api_error.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/exceptions/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/exceptions/exceptions.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/helpers.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_client.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_collection.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_http_client.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/oneapi_oauth_client.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ratelimiter/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ratelimiter/ratelimiter.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/request_executor.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/user_agent.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/utils.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/admin_user.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/company.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/devices.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/entitlements.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/fail_open_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/forwarding_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/legacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/manage_pass.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/admin_user.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/devices.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/failopenpolicy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/forwardingprofile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/manage_pass.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/secrets_otp.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/secrets_passwords.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/trustednetworks.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webappservice.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webpolicy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/webprivacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/zdxgroupentitlements.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/models/zpagroupentitlements.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/secrets.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_app_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/web_privacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zcc/zcc_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/admin.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/alerts.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/apps.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/devices.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/inventory.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/legacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/activeapplications.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/administration.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/alerts.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/application_users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/applications.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/call_quality_metrics.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/common.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/devices.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/software_inventory.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/models/users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/troubleshooting.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zdx/zdx_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/activate.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/admin_roles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/admin_users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/apptotal.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/atp_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/audit_logs.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_applications.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_apps.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_dns.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_ips.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/device_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/end_user_notification.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/file_type_control_rule.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/forwarding_control.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/gre_tunnel.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/iot_report.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/locations.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/malware_protection_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/activation.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/advanced_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/advanced_threat_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/alert_subscriptions.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/apptotal.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/authentication_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/bandwidth_classes.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/bandwidth_control_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_app_instances.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_app_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_browser_isolation.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_app_services.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_destination_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_dns_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_ips_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_application_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_applications.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_source_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_firewall_time_windows.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloud_nss.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/cloudappcontrol.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/common.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dedicated_ip_gateways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/device_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/devices.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_dictionary.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_engine.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_resources.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_templates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dlp_web_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/dns_gatways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/endusernotification.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/filetyperules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/forwarding_control_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ftp_control_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_recommended_list.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_tunnel_info.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_tunnels.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/gre_vips.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/intermediate_certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/iotreport.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ipv6_config.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/location_group.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/location_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/malware_protection_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/mobile_threat_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/nss_servers.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/organization_information.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/pac_files.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/proxies.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/proxy_gatways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/remoteassistance.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/rule_labels.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/sandboxrules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/shadow_it_report.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/subclouds.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/system_audit.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/time_intervals.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_dc_exclusions.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/url_filter_cloud_app_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/url_filtering_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/urlcategory.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/user_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/workload_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/models/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/nat_control_policy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/nss_servers.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/organization_information.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/pac_files.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/policy_export.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/proxies.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/remote_assistance.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/risk_profiles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/rule_labels.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sandbox.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sandbox_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/security_policy_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/ssl_inspection_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/sub_clouds.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/system_audit.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/tenancy_restriction_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/time_intervals.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_datacenters.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_extranet.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_static_ip.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/url_categories.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/url_filtering.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/user_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/workload_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/zia_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zia/zpa_gateway.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_connectors.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_protection.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segment_by_type.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segments_inspection.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/app_segments_pra.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_region.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/client_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/customer_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/emergency_access.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/idp.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/lss.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/machine_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/microtenants.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/administrator_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connector_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connector_schedule.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_connectors.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_protection.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/app_protection_predefined_controls.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment_inspection.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_segment_pra.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/application_servers.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_banner.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_certificate.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_region.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cbi_zpa_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/client_settings.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/cloud_connector_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/common.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/customer_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/customer_version_profile.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/emergency_access.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/enrollment_certificates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/idp.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/lss.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/machine_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/microtenants.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/policyset_controller_v1.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/policyset_controller_v2.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_approval.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_console.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_cred_pool_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_credential.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/pra_portal.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/provisioning_keys.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/role_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/scim_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/segment_group.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/server_group.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edge_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/service_edges.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/models/trusted_network.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/policies.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/posture_profiles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_approval.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_console.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_credential.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_credential_pool.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/pra_portal.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/provisioning.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/role_controller.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/saml_attributes.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/scim_attributes.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/scim_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/segment_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/server_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/servers.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edge_group.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edge_schedule.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/service_edges.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/trusted_networks.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zpa/zpa_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/account_details.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/activation.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/admin_roles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/admin_users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/api_keys.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ec_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/legacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/location_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/location_template.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/activation.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/admin_roles.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/admin_users.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/api_keys.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/common.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ec_group_vm.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ecgroup.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/forwarding_gateways.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/forwarding_rules.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_destination_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/ip_source_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/location_management.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/location_templates.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/nw_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/traffic_vpn_credentials.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/models/zpa_resources.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/nw_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/nw_service_groups.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/provisioning_url.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/ztw/ztw_service.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/__init__.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/audit_logs.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/dlp_incidents.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/legacy.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/audit_logs.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/change_history.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/common.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/generated_tickets.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_details.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_evidence.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_group_search.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_search.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/models/incident_trigger.py +0 -0
- {zscaler_sdk_python-1.2.0 → zscaler_sdk_python-1.2.1}/zscaler/zwa/zwa_service.py +0 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import json as jsonp
|
|
3
|
+
import os
|
|
4
|
+
import time
|
|
5
|
+
from urllib.parse import urlencode
|
|
6
|
+
from http.client import HTTPConnection
|
|
7
|
+
|
|
8
|
+
LOG_FORMAT = "%(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
|
|
12
|
+
"""
|
|
13
|
+
Set up logging with specified level and logger name.
|
|
14
|
+
Log level is controlled via ZSCALER_SDK_VERBOSE environment variable.
|
|
15
|
+
Logging can be enabled/disabled via ZSCALER_SDK_LOG environment variable.
|
|
16
|
+
|
|
17
|
+
Parameters:
|
|
18
|
+
- logger_name (str, optional): Logger name. Defaults to "zscaler-sdk-python".
|
|
19
|
+
- enabled (bool, optional): Enable logging. Defaults to None, which uses the environment variable.
|
|
20
|
+
- verbose (bool, optional): Set verbose logging. Defaults to None, which uses the environment variable.
|
|
21
|
+
"""
|
|
22
|
+
if enabled is None:
|
|
23
|
+
enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
|
|
24
|
+
|
|
25
|
+
if not enabled:
|
|
26
|
+
# If logging is not enabled, set up a null handler
|
|
27
|
+
logging.disable(logging.INFO)
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
if verbose is None:
|
|
31
|
+
verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
|
|
32
|
+
|
|
33
|
+
log_level = logging.DEBUG if verbose else logging.INFO
|
|
34
|
+
HTTPConnection.debuglevel = 0
|
|
35
|
+
# Create a logger with the specified name
|
|
36
|
+
logger = logging.getLogger(logger_name)
|
|
37
|
+
default_logger = logging.getLogger()
|
|
38
|
+
|
|
39
|
+
# If the logger already has handlers, remove them to avoid duplicate logging
|
|
40
|
+
for handler in logger.handlers[:]:
|
|
41
|
+
logger.removeHandler(handler)
|
|
42
|
+
|
|
43
|
+
for handler in default_logger.handlers[:]:
|
|
44
|
+
default_logger.removeHandler(handler)
|
|
45
|
+
|
|
46
|
+
# Set log level
|
|
47
|
+
logger.setLevel(log_level)
|
|
48
|
+
default_logger.setLevel(log_level)
|
|
49
|
+
logging.basicConfig(level=log_level)
|
|
50
|
+
# Create a stream handler with the specified level and formatter
|
|
51
|
+
stream_handler = logging.StreamHandler()
|
|
52
|
+
stream_handler.setLevel(log_level)
|
|
53
|
+
log_formatter = logging.Formatter(LOG_FORMAT)
|
|
54
|
+
stream_handler.setFormatter(log_formatter)
|
|
55
|
+
|
|
56
|
+
# Add the handler to the logger
|
|
57
|
+
logger.addHandler(stream_handler)
|
|
58
|
+
|
|
59
|
+
# Option: Add FileHandler if you want logs to be written to a file.
|
|
60
|
+
if os.getenv("LOG_TO_FILE", "false").lower() == "true":
|
|
61
|
+
file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
|
|
62
|
+
file_handler.setLevel(log_level)
|
|
63
|
+
file_handler.setFormatter(log_formatter)
|
|
64
|
+
logger.addHandler(file_handler)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def dump_request(logger, url: str, method: str, json, params, headers, request_uuid: str, body=True):
|
|
68
|
+
request_headers_filtered = {key: value for key, value in headers.items() if key != "Authorization"}
|
|
69
|
+
# Log the request details before sending the request
|
|
70
|
+
log_lines = []
|
|
71
|
+
request_body = ""
|
|
72
|
+
if body:
|
|
73
|
+
request_body = jsonp.dumps(json)
|
|
74
|
+
log_lines.append(f"\n---[ ZSCALER SDK REQUEST | ID:{request_uuid} ]-------------------------------")
|
|
75
|
+
full_url = url
|
|
76
|
+
if params:
|
|
77
|
+
full_url += "?" + urlencode(params)
|
|
78
|
+
log_lines.append(f"{method} {full_url}")
|
|
79
|
+
for key, value in request_headers_filtered.items():
|
|
80
|
+
log_lines.append(f"{key}: {value}")
|
|
81
|
+
if body and request_body != "" and request_body != "null":
|
|
82
|
+
log_lines.append(f"\n{request_body}")
|
|
83
|
+
log_lines.append("--------------------------------------------------------------------")
|
|
84
|
+
logger.info("\n".join(log_lines))
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def dump_response(
|
|
88
|
+
logger,
|
|
89
|
+
url: str,
|
|
90
|
+
method: str,
|
|
91
|
+
resp,
|
|
92
|
+
params,
|
|
93
|
+
request_uuid: str,
|
|
94
|
+
start_time,
|
|
95
|
+
from_cache: bool = None,
|
|
96
|
+
):
|
|
97
|
+
# Calculate the duration in seconds
|
|
98
|
+
end_time = time.time()
|
|
99
|
+
duration_seconds = end_time - start_time
|
|
100
|
+
# Convert the duration to milliseconds
|
|
101
|
+
duration_ms = duration_seconds * 1000
|
|
102
|
+
# Convert the headers to a regular dictionary
|
|
103
|
+
response_headers_dict = dict(resp.headers)
|
|
104
|
+
full_url = url
|
|
105
|
+
if params:
|
|
106
|
+
full_url += "?" + urlencode(params)
|
|
107
|
+
log_lines = []
|
|
108
|
+
|
|
109
|
+
if from_cache:
|
|
110
|
+
log_lines.append(
|
|
111
|
+
f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"FROM CACHE | DURATION:{duration_ms}ms ]" + "-" * 31
|
|
112
|
+
)
|
|
113
|
+
else:
|
|
114
|
+
log_lines.append(f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"DURATION:{duration_ms}ms ]" + "-" * 46)
|
|
115
|
+
log_lines.append(f"{method} {full_url}")
|
|
116
|
+
for key, value in response_headers_dict.items():
|
|
117
|
+
log_lines.append(f"{key}: {value}")
|
|
118
|
+
response_body = ""
|
|
119
|
+
if resp.text:
|
|
120
|
+
response_body = resp.text
|
|
121
|
+
if response_body and response_body != "" and response_body != "null":
|
|
122
|
+
log_lines.append(f"\n{response_body}")
|
|
123
|
+
log_lines.append("-" * 68)
|
|
124
|
+
logger.info("\n".join(log_lines))
|
|
@@ -13,27 +13,13 @@ class ZscalerObject:
|
|
|
13
13
|
def __repr__(self):
|
|
14
14
|
return str(vars(self))
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# continue
|
|
24
|
-
# if isinstance(val, list):
|
|
25
|
-
# formatted_list = []
|
|
26
|
-
# for item in val:
|
|
27
|
-
# if isinstance(item, ZscalerObject):
|
|
28
|
-
# formatted_list.append(item.as_dict()) # Recursive call for nested objects
|
|
29
|
-
# else:
|
|
30
|
-
# formatted_list.append(item)
|
|
31
|
-
# result[to_snake_case(key)] = formatted_list # Convert key to snake_case
|
|
32
|
-
# elif not isinstance(val, ZscalerObject):
|
|
33
|
-
# result[to_snake_case(key)] = val # Convert key to snake_case for simple types
|
|
34
|
-
# else:
|
|
35
|
-
# result[to_snake_case(key)] = val.as_dict() # Convert nested objects
|
|
36
|
-
# return result
|
|
16
|
+
def __getitem__(self, key):
|
|
17
|
+
if hasattr(self, key):
|
|
18
|
+
return getattr(self, key)
|
|
19
|
+
raise KeyError(f"{key} not found in {self.__class__.__name__}")
|
|
20
|
+
|
|
21
|
+
def __contains__(self, key):
|
|
22
|
+
return hasattr(self, key)
|
|
37
23
|
|
|
38
24
|
def as_dict(self):
|
|
39
25
|
result = {}
|
|
@@ -26,8 +26,6 @@ class ZscalerAPIResponse:
|
|
|
26
26
|
res_details=None,
|
|
27
27
|
response_body="",
|
|
28
28
|
data_type=None,
|
|
29
|
-
# max_items=None,
|
|
30
|
-
# max_pages=None,
|
|
31
29
|
all_entries=False,
|
|
32
30
|
sort_order=None,
|
|
33
31
|
sort_by=None,
|
|
@@ -181,6 +179,46 @@ class ZscalerAPIResponse:
|
|
|
181
179
|
self._items_fetched += len(self._list)
|
|
182
180
|
self._pages_fetched += 1
|
|
183
181
|
|
|
182
|
+
# def _build_json_response(self, response_body):
|
|
183
|
+
# """
|
|
184
|
+
# Converts JSON response text into Python dictionary.
|
|
185
|
+
# Ensures consistent model conversion for all pages.
|
|
186
|
+
# """
|
|
187
|
+
# self._body = json.loads(response_body)
|
|
188
|
+
|
|
189
|
+
# # Extract the list based on service type
|
|
190
|
+
# if isinstance(self._body, list):
|
|
191
|
+
# self._list = self._body
|
|
192
|
+
# elif self._service_type == "ZDX":
|
|
193
|
+
# self._list = self._body.get("items", [])
|
|
194
|
+
# self._next_offset = self._body.get("next_offset")
|
|
195
|
+
# else:
|
|
196
|
+
# self._list = self._body.get("list", [])
|
|
197
|
+
# if self._service_type == "ZPA":
|
|
198
|
+
# self._total_pages = int(self._body.get("totalPages", 1))
|
|
199
|
+
# self._total_count = int(self._body.get("totalCount", 0))
|
|
200
|
+
|
|
201
|
+
# # Clean and convert items
|
|
202
|
+
# cleaned_list = []
|
|
203
|
+
# for item in self._list:
|
|
204
|
+
# if not isinstance(item, dict):
|
|
205
|
+
# logger.warning("Non-dict item found in response list, skipping: %s", item)
|
|
206
|
+
# continue
|
|
207
|
+
|
|
208
|
+
# # Convert to model if type is specified
|
|
209
|
+
# if self._type:
|
|
210
|
+
# try:
|
|
211
|
+
# cleaned_list.append(self._type(**item))
|
|
212
|
+
# except Exception as e:
|
|
213
|
+
# logger.error("Failed to convert item to model: %s", e)
|
|
214
|
+
# cleaned_list.append(item)
|
|
215
|
+
# else:
|
|
216
|
+
# cleaned_list.append(item)
|
|
217
|
+
|
|
218
|
+
# self._list = cleaned_list
|
|
219
|
+
# self._items_fetched += len(self._list)
|
|
220
|
+
# self._pages_fetched += 1
|
|
221
|
+
|
|
184
222
|
def get_results(self):
|
|
185
223
|
"""
|
|
186
224
|
Returns the current page of results.
|
|
@@ -198,36 +236,104 @@ class ZscalerAPIResponse:
|
|
|
198
236
|
"""
|
|
199
237
|
return self._has_next()
|
|
200
238
|
|
|
201
|
-
def next(self):
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
239
|
+
# def next(self):
|
|
240
|
+
# """
|
|
241
|
+
# Fetch the next page of results if available.
|
|
242
|
+
|
|
243
|
+
# Returns:
|
|
244
|
+
# tuple: (list of items, error)
|
|
245
|
+
|
|
246
|
+
# If there's an error fetching the next page, returns (None, error).
|
|
247
|
+
# If no more pages exist, returns (None, None).
|
|
248
|
+
# """
|
|
249
|
+
# if not self.has_next():
|
|
250
|
+
# logger.debug("No further pages to retrieve.")
|
|
251
|
+
# return (None, None)
|
|
252
|
+
|
|
253
|
+
# next_page_results = self._fetch_next_page()
|
|
254
|
+
# if next_page_results is None:
|
|
255
|
+
# # An error occurred, already logged
|
|
256
|
+
# return (None, ValueError("Error fetching next page."))
|
|
257
|
+
# if not next_page_results:
|
|
258
|
+
# # Empty result means no more data
|
|
259
|
+
# return (None, None)
|
|
260
|
+
# return (next_page_results, None)
|
|
261
|
+
|
|
262
|
+
### Latest working function
|
|
263
|
+
# def next(self):
|
|
264
|
+
# if not self.has_next():
|
|
265
|
+
# raise StopIteration("No more pages available.")
|
|
266
|
+
|
|
267
|
+
# results, error = self._fetch_next_page()
|
|
268
|
+
# if error:
|
|
269
|
+
# return None, error
|
|
270
|
+
# if not results:
|
|
271
|
+
# return None, None
|
|
272
|
+
|
|
273
|
+
# if self._type:
|
|
274
|
+
# try:
|
|
275
|
+
# results = [self._type(item) for item in results if isinstance(item, dict)]
|
|
276
|
+
# except Exception as wrap_error:
|
|
277
|
+
# logger.warning(f"Failed to wrap pagination results with {self._type}: {wrap_error}")
|
|
278
|
+
|
|
279
|
+
# return results, None
|
|
207
280
|
|
|
208
|
-
|
|
209
|
-
If no more pages exist, returns (None, None).
|
|
210
|
-
"""
|
|
281
|
+
def next(self):
|
|
211
282
|
if not self.has_next():
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
return
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
283
|
+
raise StopIteration("No more pages available.")
|
|
284
|
+
|
|
285
|
+
results, error = self._fetch_next_page()
|
|
286
|
+
if error:
|
|
287
|
+
return None, self, error
|
|
288
|
+
if not results:
|
|
289
|
+
return None, self, None
|
|
290
|
+
|
|
291
|
+
if self._type:
|
|
292
|
+
try:
|
|
293
|
+
results = [self._type(item) for item in results if isinstance(item, dict)]
|
|
294
|
+
except Exception as wrap_error:
|
|
295
|
+
logger.warning(f"Failed to wrap pagination results with {self._type}: {wrap_error}")
|
|
296
|
+
|
|
297
|
+
return results, self, None
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
# def _fetch_next_page(self):
|
|
301
|
+
# """
|
|
302
|
+
# Internal method that fetches and returns the next page of results.
|
|
303
|
+
# """
|
|
304
|
+
# if not self._has_next():
|
|
305
|
+
# logger.debug("No more pages to fetch")
|
|
306
|
+
# return []
|
|
307
|
+
|
|
308
|
+
# if self._service_type == "ZDX":
|
|
309
|
+
# self._params["offset"] = self._next_offset
|
|
310
|
+
# else:
|
|
311
|
+
# self._page += 1
|
|
312
|
+
# self._params["page"] = self._page
|
|
313
|
+
|
|
314
|
+
# logger.debug(f"Requesting next page with params: {self._params}")
|
|
315
|
+
|
|
316
|
+
# req = {
|
|
317
|
+
# "method": "GET",
|
|
318
|
+
# "url": self._url,
|
|
319
|
+
# "headers": self._headers,
|
|
320
|
+
# "params": self._params,
|
|
321
|
+
# "uuid": uuid.uuid4(),
|
|
322
|
+
# }
|
|
323
|
+
# _, _, response_body, error = self._request_executor.fire_request(req)
|
|
324
|
+
|
|
325
|
+
# if error:
|
|
326
|
+
# logger.error(f"Error fetching the next page: {error}")
|
|
327
|
+
# return None
|
|
328
|
+
|
|
329
|
+
# # Rebuild the response body for the next page
|
|
330
|
+
# self._build_json_response(response_body)
|
|
331
|
+
# return self._list
|
|
223
332
|
|
|
224
333
|
def _fetch_next_page(self):
|
|
225
|
-
"""
|
|
226
|
-
Internal method that fetches and returns the next page of results.
|
|
227
|
-
"""
|
|
228
334
|
if not self._has_next():
|
|
229
335
|
logger.debug("No more pages to fetch")
|
|
230
|
-
return []
|
|
336
|
+
return [], None
|
|
231
337
|
|
|
232
338
|
if self._service_type == "ZDX":
|
|
233
339
|
self._params["offset"] = self._next_offset
|
|
@@ -248,11 +354,10 @@ class ZscalerAPIResponse:
|
|
|
248
354
|
|
|
249
355
|
if error:
|
|
250
356
|
logger.error(f"Error fetching the next page: {error}")
|
|
251
|
-
return None
|
|
357
|
+
return None, error
|
|
252
358
|
|
|
253
|
-
# Rebuild the response body for the next page
|
|
254
359
|
self._build_json_response(response_body)
|
|
255
|
-
return self._list
|
|
360
|
+
return self._list, None
|
|
256
361
|
|
|
257
362
|
def _has_next(self):
|
|
258
363
|
# Check max_items or max_pages constraints
|
|
@@ -65,26 +65,32 @@ class BandwidthClassesAPI(APIClient):
|
|
|
65
65
|
|
|
66
66
|
query_params = query_params or {}
|
|
67
67
|
|
|
68
|
+
local_search = query_params.pop("search", None)
|
|
69
|
+
|
|
68
70
|
body = {}
|
|
69
71
|
headers = {}
|
|
70
72
|
|
|
71
73
|
request, error = self._request_executor.create_request(http_method, api_url, body, headers, params=query_params)
|
|
72
|
-
|
|
73
74
|
if error:
|
|
74
75
|
return (None, None, error)
|
|
75
76
|
|
|
76
77
|
response, error = self._request_executor.execute(request)
|
|
77
|
-
|
|
78
78
|
if error:
|
|
79
79
|
return (None, response, error)
|
|
80
80
|
|
|
81
81
|
try:
|
|
82
|
-
|
|
82
|
+
results = []
|
|
83
83
|
for item in response.get_results():
|
|
84
|
-
|
|
85
|
-
except Exception as
|
|
86
|
-
return (None, response,
|
|
87
|
-
|
|
84
|
+
results.append(BandwidthClasses(self.form_response_body(item)))
|
|
85
|
+
except Exception as exc:
|
|
86
|
+
return (None, response, exc)
|
|
87
|
+
|
|
88
|
+
if local_search:
|
|
89
|
+
lower_search = local_search.lower()
|
|
90
|
+
results = [r for r in results if lower_search in (r.name.lower() if r.name else "")]
|
|
91
|
+
|
|
92
|
+
return (results, response, None)
|
|
93
|
+
|
|
88
94
|
|
|
89
95
|
def list_classes_lite(self) -> tuple:
|
|
90
96
|
"""
|
|
@@ -289,19 +289,16 @@ class LegacyZIAClientHelper:
|
|
|
289
289
|
continue
|
|
290
290
|
|
|
291
291
|
if resp.status_code >= 400:
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
)
|
|
303
|
-
logger.error(f"{error}")
|
|
304
|
-
raise error
|
|
292
|
+
logger.error(f"Request failed: {resp.status_code}, {resp.text}")
|
|
293
|
+
raise ValueError(f"Request failed with status {resp.status_code}")
|
|
294
|
+
|
|
295
|
+
return resp, {
|
|
296
|
+
"method": method,
|
|
297
|
+
"url": url,
|
|
298
|
+
"params": params or {},
|
|
299
|
+
"headers": headers_with_user_agent,
|
|
300
|
+
"json": json or {},
|
|
301
|
+
}
|
|
305
302
|
except requests.RequestException as e:
|
|
306
303
|
logger.error(f"Request to {url} failed: {e}")
|
|
307
304
|
if attempts == 4:
|
|
@@ -88,7 +88,7 @@ class ApplicationSegmentAPI(APIClient):
|
|
|
88
88
|
if error:
|
|
89
89
|
return (None, None, error)
|
|
90
90
|
|
|
91
|
-
response, error = self._request_executor.execute(request)
|
|
91
|
+
response, error = self._request_executor.execute(request, ApplicationSegment)
|
|
92
92
|
if error:
|
|
93
93
|
return (None, response, error)
|
|
94
94
|
|
|
@@ -198,9 +198,9 @@ class LegacyZPAClientHelper:
|
|
|
198
198
|
self._session = session
|
|
199
199
|
|
|
200
200
|
@property
|
|
201
|
-
def
|
|
201
|
+
def customer_controller(self):
|
|
202
202
|
"""
|
|
203
|
-
The interface object for the :ref:`ZPA Auth Domains interface <zpa-
|
|
203
|
+
The interface object for the :ref:`ZPA Auth Domains interface <zpa-customer_controller>`.
|
|
204
204
|
|
|
205
205
|
"""
|
|
206
206
|
from zscaler.zpa.customer_controller import CustomerControllerAPI
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import json as jsonp
|
|
3
|
-
import os
|
|
4
|
-
import time
|
|
5
|
-
from urllib.parse import urlencode
|
|
6
|
-
from http.client import HTTPConnection
|
|
7
|
-
|
|
8
|
-
LOG_FORMAT = "%(asctime)s - %(name)s - %(module)s - %(levelname)s - %(message)s"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
|
|
12
|
-
# """
|
|
13
|
-
# Set up logging with specified level and logger name.
|
|
14
|
-
# Log level is controlled via ZSCALER_SDK_VERBOSE environment variable.
|
|
15
|
-
# Logging can be enabled/disabled via ZSCALER_SDK_LOG environment variable.
|
|
16
|
-
|
|
17
|
-
# Parameters:
|
|
18
|
-
# - logger_name (str, optional): Logger name. Defaults to "zscaler-sdk-python".
|
|
19
|
-
# - enabled (bool, optional): Enable logging. Defaults to None, which uses the environment variable.
|
|
20
|
-
# - verbose (bool, optional): Set verbose logging. Defaults to None, which uses the environment variable.
|
|
21
|
-
# """
|
|
22
|
-
# if enabled is None:
|
|
23
|
-
# enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
|
|
24
|
-
|
|
25
|
-
# # if not enabled:
|
|
26
|
-
# # # If logging is not enabled, set up a null handler
|
|
27
|
-
# # logging.disable(logging.INFO)
|
|
28
|
-
# # return
|
|
29
|
-
|
|
30
|
-
# if not enabled:
|
|
31
|
-
# # Do not globally disable logging
|
|
32
|
-
# # Just keep the SDK logger silent
|
|
33
|
-
# sdk_logger = logging.getLogger(logger_name)
|
|
34
|
-
# sdk_logger.addHandler(logging.NullHandler())
|
|
35
|
-
# return
|
|
36
|
-
|
|
37
|
-
# if verbose is None:
|
|
38
|
-
# verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
|
|
39
|
-
|
|
40
|
-
# log_level = logging.DEBUG if verbose else logging.INFO
|
|
41
|
-
# HTTPConnection.debuglevel = 0
|
|
42
|
-
# # Create a logger with the specified name
|
|
43
|
-
# logger = logging.getLogger(logger_name)
|
|
44
|
-
# default_logger = logging.getLogger()
|
|
45
|
-
|
|
46
|
-
# # If the logger already has handlers, remove them to avoid duplicate logging
|
|
47
|
-
# for handler in logger.handlers[:]:
|
|
48
|
-
# logger.removeHandler(handler)
|
|
49
|
-
|
|
50
|
-
# for handler in default_logger.handlers[:]:
|
|
51
|
-
# default_logger.removeHandler(handler)
|
|
52
|
-
|
|
53
|
-
# # Set log level
|
|
54
|
-
# logger.setLevel(log_level)
|
|
55
|
-
# default_logger.setLevel(log_level)
|
|
56
|
-
# logging.basicConfig(level=log_level)
|
|
57
|
-
# # Create a stream handler with the specified level and formatter
|
|
58
|
-
# stream_handler = logging.StreamHandler()
|
|
59
|
-
# stream_handler.setLevel(log_level)
|
|
60
|
-
# log_formatter = logging.Formatter(LOG_FORMAT)
|
|
61
|
-
# stream_handler.setFormatter(log_formatter)
|
|
62
|
-
|
|
63
|
-
# # Add the handler to the logger
|
|
64
|
-
# logger.addHandler(stream_handler)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# # Option: Add FileHandler if you want logs to be written to a file.
|
|
68
|
-
# if os.getenv("LOG_TO_FILE", "false").lower() == "true":
|
|
69
|
-
# file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
|
|
70
|
-
# file_handler.setLevel(log_level)
|
|
71
|
-
# file_handler.setFormatter(log_formatter)
|
|
72
|
-
# logger.addHandler(file_handler)
|
|
73
|
-
def setup_logging(logger_name="zscaler-sdk-python", enabled=None, verbose=None):
|
|
74
|
-
"""
|
|
75
|
-
Set up logging for the Zscaler SDK.
|
|
76
|
-
|
|
77
|
-
Logging behavior can be controlled via environment variables or config:
|
|
78
|
-
|
|
79
|
-
Environment Variables:
|
|
80
|
-
ZSCALER_SDK_LOG (true/false): Enable or disable SDK logging.
|
|
81
|
-
ZSCALER_SDK_VERBOSE (true/false): Enable verbose (DEBUG) logging.
|
|
82
|
-
LOG_TO_FILE (true/false): Enable file-based logging.
|
|
83
|
-
LOG_FILE_PATH: File path for logs (default: sdk.log)
|
|
84
|
-
|
|
85
|
-
Parameters:
|
|
86
|
-
logger_name (str): Name of the logger. Defaults to "zscaler-sdk-python".
|
|
87
|
-
enabled (bool): Enable logging. If None, reads from env.
|
|
88
|
-
verbose (bool): Enable DEBUG-level logging. If None, reads from env.
|
|
89
|
-
"""
|
|
90
|
-
if enabled is None:
|
|
91
|
-
enabled = os.getenv("ZSCALER_SDK_LOG", "false").lower() == "true"
|
|
92
|
-
|
|
93
|
-
if not enabled:
|
|
94
|
-
# Do NOT disable global logging.
|
|
95
|
-
# Just suppress SDK logs quietly with a NullHandler.
|
|
96
|
-
logging.getLogger(logger_name).addHandler(logging.NullHandler())
|
|
97
|
-
return
|
|
98
|
-
|
|
99
|
-
if verbose is None:
|
|
100
|
-
verbose = os.getenv("ZSCALER_SDK_VERBOSE", "false").lower() == "true"
|
|
101
|
-
|
|
102
|
-
log_level = logging.DEBUG if verbose else logging.INFO
|
|
103
|
-
HTTPConnection.debuglevel = 0 # Optional: Enable HTTP debug logging
|
|
104
|
-
|
|
105
|
-
# SDK logger (isolated)
|
|
106
|
-
logger = logging.getLogger(logger_name)
|
|
107
|
-
logger.setLevel(log_level)
|
|
108
|
-
|
|
109
|
-
# Clean up any duplicate handlers
|
|
110
|
-
if not logger.handlers:
|
|
111
|
-
stream_handler = logging.StreamHandler()
|
|
112
|
-
stream_handler.setLevel(log_level)
|
|
113
|
-
stream_handler.setFormatter(logging.Formatter(LOG_FORMAT))
|
|
114
|
-
logger.addHandler(stream_handler)
|
|
115
|
-
|
|
116
|
-
# Optional file logging
|
|
117
|
-
if os.getenv("LOG_TO_FILE", "false").lower() == "true":
|
|
118
|
-
file_handler = logging.FileHandler(os.getenv("LOG_FILE_PATH", "sdk.log"))
|
|
119
|
-
file_handler.setLevel(log_level)
|
|
120
|
-
file_handler.setFormatter(logging.Formatter(LOG_FORMAT))
|
|
121
|
-
logger.addHandler(file_handler)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def dump_request(logger, url: str, method: str, json, params, headers, request_uuid: str, body=True):
|
|
125
|
-
request_headers_filtered = {key: value for key, value in headers.items() if key != "Authorization"}
|
|
126
|
-
# Log the request details before sending the request
|
|
127
|
-
log_lines = []
|
|
128
|
-
request_body = ""
|
|
129
|
-
if body:
|
|
130
|
-
request_body = jsonp.dumps(json)
|
|
131
|
-
log_lines.append(f"\n---[ ZSCALER SDK REQUEST | ID:{request_uuid} ]-------------------------------")
|
|
132
|
-
full_url = url
|
|
133
|
-
if params:
|
|
134
|
-
full_url += "?" + urlencode(params)
|
|
135
|
-
log_lines.append(f"{method} {full_url}")
|
|
136
|
-
for key, value in request_headers_filtered.items():
|
|
137
|
-
log_lines.append(f"{key}: {value}")
|
|
138
|
-
if body and request_body != "" and request_body != "null":
|
|
139
|
-
log_lines.append(f"\n{request_body}")
|
|
140
|
-
log_lines.append("--------------------------------------------------------------------")
|
|
141
|
-
logger.info("\n".join(log_lines))
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
def dump_response(
|
|
145
|
-
logger,
|
|
146
|
-
url: str,
|
|
147
|
-
method: str,
|
|
148
|
-
resp,
|
|
149
|
-
params,
|
|
150
|
-
request_uuid: str,
|
|
151
|
-
start_time,
|
|
152
|
-
from_cache: bool = None,
|
|
153
|
-
):
|
|
154
|
-
# Calculate the duration in seconds
|
|
155
|
-
end_time = time.time()
|
|
156
|
-
duration_seconds = end_time - start_time
|
|
157
|
-
# Convert the duration to milliseconds
|
|
158
|
-
duration_ms = duration_seconds * 1000
|
|
159
|
-
# Convert the headers to a regular dictionary
|
|
160
|
-
response_headers_dict = dict(resp.headers)
|
|
161
|
-
full_url = url
|
|
162
|
-
if params:
|
|
163
|
-
full_url += "?" + urlencode(params)
|
|
164
|
-
log_lines = []
|
|
165
|
-
|
|
166
|
-
if from_cache:
|
|
167
|
-
log_lines.append(
|
|
168
|
-
f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"FROM CACHE | DURATION:{duration_ms}ms ]" + "-" * 31
|
|
169
|
-
)
|
|
170
|
-
else:
|
|
171
|
-
log_lines.append(f"\n---[ ZSCALER SDK RESPONSE | ID:{request_uuid} | " f"DURATION:{duration_ms}ms ]" + "-" * 46)
|
|
172
|
-
log_lines.append(f"{method} {full_url}")
|
|
173
|
-
for key, value in response_headers_dict.items():
|
|
174
|
-
log_lines.append(f"{key}: {value}")
|
|
175
|
-
response_body = ""
|
|
176
|
-
if resp.text:
|
|
177
|
-
response_body = resp.text
|
|
178
|
-
if response_body and response_body != "" and response_body != "null":
|
|
179
|
-
log_lines.append(f"\n{response_body}")
|
|
180
|
-
log_lines.append("-" * 68)
|
|
181
|
-
logger.info("\n".join(log_lines))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|