Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TEST FAILURE] Various Windows tests failing in CI #67140

Open
barneysowood opened this issue Jan 13, 2025 · 17 comments
Open

[TEST FAILURE] Various Windows tests failing in CI #67140

barneysowood opened this issue Jan 13, 2025 · 17 comments
Assignees
Labels
Test-Failure Fix the CI failure ⛈

Comments

@barneysowood
Copy link
Contributor

Various Windows tests are failing since work to move CI from AWS to GH Hosted Runners.

Opening this to track work to resolve those issues - this can be assigned to me.

@barneysowood
Copy link
Contributor Author

Initial issue is tests/pytests/unit/modules/test_win_file.py::test_user_to_uid failing with:

TypeError: The object is not a PySID object

digging about in the logs I noticed that on the GH hosted runners, tests are run as runneradmin not Administrator. Initially wondered if this didn't have sufficient privs successfully run the test, but running it on a test VM with a non administrator user works. Reading about the setup also suggests that runneradmin should have administrator privs.

The test looks like this:

def test_user_to_uid():
    result = win_file.user_to_uid("Administrator")
    expected = salt.utils.win_dacl.get_sid_string("Administrator")
    assert result == expected

occurred to me that the Administrator account might be disabled. As a quick test, changed the test to use runneradmin and that now passes.

Still running some tests to work out if the Administrator account is disabled, but looks like @twangboy is working on a fix for this particular failure in #67146.

@barneysowood
Copy link
Contributor Author

And the next issue that was coming up in #67147

@ScriptAutomate
Copy link
Contributor

I believe @twangboy is also addressing ongoing Windows failures in CI at the moment. Will assign this issue for awareness and collaboration.

@barneysowood
Copy link
Contributor Author

Summary of Windows tests that are still failing

Went through latest 3006.x CI run and pulled out info on what tests are still failing and the summary

Test Salt / Windows X unit zeromq 3

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706254398

Tests summary
FAILED tests/pytests/unit/modules/win_lgpo/test__policy_info.py::test_sidConversion_administrator - pywintypes.error: (1332, 'LookupAccountName', 'No mapping between account names and security IDs was done.')
FAILED tests/pytests/unit/modules/win_lgpo/test__policy_info.py::test_usernamesToSidObjects_string_list - pywintypes.error: (1332, 'LookupAccountName', 'No mapping between account names and security IDs was done.')

Test Salt / Windows X functional zeromq 1

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706271289

Tests summary
FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[powershell] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese
FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[pwsh] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese

Test Salt / Windows X functional zeromq 2

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706276750

Tests summary
FAILED tests/pytests/functional/modules/test_archive.py::test_zip[unicode_filename=True] - assert None is True
FAILED tests/pytests/functional/modules/test_archive.py::test_zip[unicode_filename=False] - assert None is True
FAILED tests/pytests/functional/modules/test_archive.py::test_unzip[unicode_filename=True] - assert None is True
FAILED tests/pytests/functional/modules/test_archive.py::test_unzip[unicode_filename=False] - assert None is True

Test Salt / Windows X functional zeromq 3

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706281229

Tests summary
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_owner - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_grant_perms_basic - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_grant_perms_basic_existing_user - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_grant_perms_advanced - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_grant_perms_advanced_existing_user - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_grant_perms_basic_no_applies_to - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_deny_perms_basic - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_deny_perms_basic_existing_user - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_deny_perms_advanced - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_deny_perms_advanced_existing_user - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_deny_perms_basic_no_applies_to - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_inheritance - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_win_inheritance_false - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_reset_no_non_inherited_users - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_reset_non_inherited_users_grant - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators
ERROR tests/pytests/functional/states/file/test__check_directory_win.py::test__check_directory_reset_non_inherited_users_deny - AssertionError: assert 'Administrators' == 'runneradmin'
  
  - runneradmin
  + Administrators

Test Salt / Windows X functional zeromq 4

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706288639

Tests summary
Error: The operation was canceled.

Test Salt / Windows 2019 integration zeromq 1

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706293872

Tests summary
FAILED tests/integration/grains/test_custom.py::TestGrainsCore::test_grains_passed_to_custom_grain - AssertionError: '' != 'itworked'
+ itworked
FAILED tests/integration/loader/test_ext_modules.py::LoaderOverridesTest::test_overridden_internal - AssertionError: 'test.recho' not found in ['acl.delfacl', 'acl.getfacl', 'acl.modfacl', 'acl.version', 'acl.wipefacls', 'aliases.get_target', 'aliases.has_target', 'aliases.list_aliases', 'aliases.rm_alias', 'aliases.set_target', 'archive.cmd_unzip', 'archive.cmd_zip', 'archive.gunzip', 'archive.gzip', 'archive.is_encrypted', 'archive.list', 'archive.rar', 'archive.tar', 'archive.unrar', 'archive.unzip', 'archive.zip', 'artifactory.get_latest_release', 'artifactory.get_latest_snapshot', 'artifactory.get_release', 'artifactory.get_snapshot', 'auditpol.get_setting', 'auditpol.get_settings', 'auditpol.set_setting', 'autoruns.list', 'aws_sqs.create_queue', 'aws_sqs.delete_message', 'aws_sqs.delete_queue', 'aws_sqs.list_queues', 'aws_sqs.queue_exists', 'aws_sqs.receive_message', 'baredoc.list_modules', 'baredoc.list_states', 'baredoc.module_docs', 'baredoc.state_docs', 'beacons.add', 'beacons.delete', 'beacons.disable', 'beacons.disable_beacon', 'beacons.enable', 'beacons.enable_beacon', 'beacons.list', 'beacons.list_available', 'beacons.modify', 'beacons.reset', 'beacons.save', 'bigip.add_pool_member', 'bigip.commit_transaction', 'bigip.create_monitor', 'bigip.create_node', 'bigip.create_pool', 'bigip.create_profile', 'bigip.create_virtual', 'bigip.delete_monitor', 'bigip.delete_node', 'bigip.delete_pool', 'bigip.delete_pool_member', 'bigip.delete_profile', 'bigip.delete_transaction', 'bigip.delete_virtual', 'bigip.list_monitor', 'bigip.list_node', 'bigip.list_pool', 'bigip.list_profile', 'bigip.list_transaction', 'bigip.list_virtual', 'bigip.modify_monitor', 'bigip.modify_node', 'bigip.modify_pool', 'bigip.modify_pool_member', 'bigip.modify_profile', 'bigip.modify_virtual', 'bigip.replace_pool_members', 'bigip.start_transaction', 'boto3_elasticache.add_tags_to_resource', 'boto3_elasticache.authorize_cache_security_group_ingress', 'boto3_elasticache.cache_cluster_exists', 'boto3_elasticache.cache_security_group_exists', 'boto3_elasticache.cache_subnet_group_exists', 'boto3_elasticache.copy_snapshot', 'boto3_elasticache.create_cache_cluster', 'boto3_elasticache.create_cache_parameter_group', 'boto3_elasticache.create_cache_security_group', 'boto3_elasticache.create_cache_subnet_group', 'boto3_elasticache.create_replication_group', 'boto3_elasticache.delete_cache_cluster', 'boto3_elasticache.delete_cache_parameter_group', 'boto3_elasticache.delete_cache_security_group', 'boto3_elasticache.delete_cache_subnet_group', 'boto3_elasticache.delete_replication_group', 'boto3_elasticache.describe_cache_clusters', 'boto3_elasticache.describe_cache_parameter_groups', 'boto3_elasticache.describe_cache_security_groups', 'boto3_elasticache.describe_cache_subnet_groups', 'boto3_elasticache.describe_replication_groups', 'boto3_elasticache.list_cache_subnet_groups', 'boto3_elasticache.list_tags_for_resource', 'boto3_elasticache.modify_cache_cluster', 'boto3_elasticache.modify_cache_subnet_group', 'boto3_elasticache.modify_replication_group', 'boto3_elasticache.remove_tags_from_resource', 'boto3_elasticache.replication_group_exists', 'boto3_elasticache.revoke_cache_security_group_ingress', 'boto3_elasticsearch.add_tags', 'boto3_elasticsearch.cancel_elasticsearch_service_software_update', 'boto3_elasticsearch.check_upgrade_eligibility', 'boto3_elasticsearch.create_elasticsearch_domain', 'boto3_elasticsearch.delete_elasticsearch_domain', 'boto3_elasticsearch.delete_elasticsearch_service_role', 'boto3_elasticsearch.describe_elasticsearch_domain', 'boto3_elasticsearch.describe_elasticsearch_domain_config', 'boto3_elasticsearch.describe_elasticsearch_domains', 'boto3_elasticsearch.describe_elasticsearch_instance_type_limits', 'boto3_elasticsearch.describe_reserved_elasticsearch_instance_offerings', 'boto3_elasticsearch.describe_reserved_elasticsearch_instances', 'boto3_elasticsearch.exists', 'boto3_elasticsearch.get_compatible_elasticsearch_versions', 'boto3_elasticsearch.get_upgrade_history', 'boto3_elasticsearch.get_upgrade_status', 'boto3_elasticsearch.list_domain_names', 'boto3_elasticsearch.list_elasticsearch_instance_types', 'boto3_elasticsearch.list_elasticsearch_versions', 'boto3_elasticsearch.list_tags', 'boto3_elasticsearch.purchase_reserved_elasticsearch_instance_offering', 'boto3_elasticsearch.remove_tags', 'boto3_elasticsearch.start_elasticsearch_service_software_update', 'boto3_elasticsearch.update_elasticsearch_domain_config', 'boto3_elasticsearch.upgrade_elasticsearch_domain', 'boto3_elasticsearch.wait_for_upgrade', 'boto3_route53.associate_vpc_with_hosted_zone', 'boto3_route53.change_resource_record_sets', 'boto3_route53.create_hosted_zone', 'boto3_route53.delete_hosted_zone', 'boto3_route53.delete_hosted_zone_by_domain', 'boto3_route53.disassociate_vpc_from_hosted_zone', 'boto3_route53.find_hosted_zone', 'boto3_route53.get_hosted_zone', 'boto3_route53.get_hosted_zones_by_domain', 'boto3_route53.get_resource_records', 'boto3_route53.list_hosted_zones', 'boto3_route53.update_hosted_zone_comment', 'boto3_sns.create_topic', 'boto3_sns.delete_topic', 'boto3_sns.describe_topic', 'boto3_sns.get_subscription_attributes', 'boto3_sns.get_topic_attributes', 'boto3_sns.list_subscriptions', 'boto3_sns.list_subscriptions_by_topic', 'boto3_sns.list_topics', 'boto3_sns.set_subscription_attributes', 'boto3_sns.set_topic_attributes', 'boto3_sns.subscribe', 'boto3_sns.topic_exists', 'boto3_sns.unsubscribe', 'boto_apigateway.activate_api_deployment', 'boto_apigateway.api_exists', 'boto_apigateway.api_model_exists', 'boto_apigateway.associate_api_key_stagekeys', 'boto_apigateway.attach_usage_plan_to_apis', 'boto_apigateway.create_api', 'boto_apigateway.create_api_deployment', 'boto_apigateway.create_api_integration', 'boto_apigateway.create_api_integration_response', 'boto_apigateway.create_api_key', 'boto_apigateway.create_api_method', 'boto_apigateway.create_api_method_response', 'boto_apigateway.create_api_model', 'boto_apigateway.create_api_resources', 'boto_apigateway.create_api_stage', 'boto_apigateway.create_usage_plan', 'boto_apigateway.delete_api', 'boto_apigateway.delete_api_deployment', 'boto_apigateway.delete_api_integration', 'boto_apigateway.delete_api_integration_response', 'boto_apigateway.delete_api_key', 'boto_apigateway.delete_api_method', 'boto_apigateway.delete_api_method_response', 'boto_apigateway.delete_api_model', 'boto_apigateway.delete_api_resources', 'boto_apigateway.delete_api_stage', 'boto_apigateway.delete_usage_plan', 'boto_apigateway.describe_api_deployment', 'boto_apigateway.describe_api_deployments', 'boto_apigateway.describe_api_integration', 'boto_apigateway.describe_api_integration_response', 'boto_apigateway.describe_api_key', 'boto_apigateway.describe_api_keys', 'boto_apigateway.describe_api_method', 'boto_apigateway.describe_api_method_response', 'boto_apigateway.describe_api_model', 'boto_apigateway.describe_api_models', 'boto_apigateway.describe_api_resource', 'boto_apigateway.describe_api_resource_method', 'boto_apigateway.describe_api_resources', 'boto_apigateway.describe_api_stage', 'boto_apigateway.describe_api_stages', 'boto_apigateway.describe_apis', 'boto_apigateway.describe_usage_plans', 'boto_apigateway.detach_usage_plan_from_apis', 'boto_apigateway.disable_api_key', 'boto_apigateway.disassociate_api_key_stagekeys', 'boto_apigateway.enable_api_key', 'boto_apigateway.flush_api_stage_cache', 'boto_apigateway.overwrite_api_stage_variables', 'boto_apigateway.update_api_key_description', 'boto_apigateway.update_api_model_schema', 'boto_apigateway.update_usage_plan', 'boto_asg.create', 'boto_asg.create_launch_configuration', 'boto_asg.delete', 'boto_asg.delete_launch_configuration', 'boto_asg.describe_launch_configuration', 'boto_asg.enter_standby', 'boto_asg.exists', 'boto_asg.exit_standby', 'boto_asg.get_all_groups', 'boto_asg.get_all_launch_configurations', 'boto_asg.get_cloud_init_mime', 'boto_asg.get_config', 'boto_asg.get_instances', 'boto_asg.get_scaling_policy_arn', 'boto_asg.launch_configuration_exists', 'boto_asg.list_groups', 'boto_asg.list_launch_configurations', 'boto_asg.update', 'boto_cfn.create', 'boto_cfn.delete', 'boto_cfn.describe', 'boto_cfn.exists', 'boto_cfn.get_template', 'boto_cfn.update_stack', 'boto_cfn.validate_template', 'boto_cloudfront.create_distribution', 'boto_cloudfront.export_distributions', 'boto_cloudfront.get_distribution', 'boto_cloudfront.update_distribution', 'boto_cloudtrail.add_tags', 'boto_cloudtrail.create', 'boto_cloudtrail.delete', 'boto_cloudtrail.describe', 'boto_cloudtrail.exists', 'boto_cloudtrail.list', 'boto_cloudtrail.list_tags', 'boto_cloudtrail.remove_tags', 'boto_cloudtrail.start_logging', 'boto_cloudtrail.status', 'boto_cloudtrail.stop_logging', 'boto_cloudtrail.update', 'boto_cloudwatch.convert_to_arn', 'boto_cloudwatch.create_or_update_alarm', 'boto_cloudwatch.delete_alarm', 'boto_cloudwatch.get_alarm', 'boto_cloudwatch.get_all_alarms', 'boto_cloudwatch_event.create_or_update', 'boto_cloudwatch_event.delete', 'boto_cloudwatch_event.describe', 'boto_cloudwatch_event.exists', 'boto_cloudwatch_event.list_rules', 'boto_cloudwatch_event.list_targets', 'boto_cloudwatch_event.put_targets', 'boto_cloudwatch_event.remove_targets', 'boto_cognitoidentity.create_identity_pool', 'boto_cognitoidentity.delete_identity_pools', 'boto_cognitoidentity.describe_identity_pools', 'boto_cognitoidentity.get_identity_pool_roles', 'boto_cognitoidentity.set_identity_pool_roles', 'boto_cognitoidentity.update_identity_pool', 'boto_datapipeline.activate_pipeline', 'boto_datapipeline.create_pipeline', 'boto_datapipeline.delete_pipeline', 'boto_datapipeline.describe_pipelines', 'boto_datapipeline.get_pipeline_definition', 'boto_datapipeline.list_pipelines', 'boto_datapipeline.pipeline_id_from_name', 'boto_datapipeline.put_pipeline_definition', 'boto_dynamodb.create_global_secondary_index', 'boto_dynamodb.create_table', 'boto_dynamodb.delete', 'boto_dynamodb.describe', 'boto_dynamodb.exists', 'boto_dynamodb.extract_index', 'boto_dynamodb.list_tags_of_resource', 'boto_dynamodb.tag_resource', 'boto_dynamodb.untag_resource', 'boto_dynamodb.update', 'boto_dynamodb.update_global_secondary_index', 'boto_ec2.allocate_eip_address', 'boto_ec2.assign_private_ip_addresses', 'boto_ec2.associate_eip_address', 'boto_ec2.attach_network_interface', 'boto_ec2.attach_volume', 'boto_ec2.create_image', 'boto_ec2.create_key', 'boto_ec2.create_network_interface', 'boto_ec2.create_tags', 'boto_ec2.create_volume', 'boto_ec2.delete_key', 'boto_ec2.delete_network_interface', 'boto_ec2.delete_tags', 'boto_ec2.delete_volume', 'boto_ec2.detach_network_interface', 'boto_ec2.detach_volume', 'boto_ec2.disassociate_eip_address', 'boto_ec2.exists', 'boto_ec2.find_images', 'boto_ec2.find_instances', 'boto_ec2.get_all_eip_addresses', 'boto_ec2.get_all_tags', 'boto_ec2.get_all_volumes', 'boto_ec2.get_attribute', 'boto_ec2.get_eip_address_info', 'boto_ec2.get_id', 'boto_ec2.get_key', 'boto_ec2.get_keys', 'boto_ec2.get_network_interface', 'boto_ec2.get_network_interface_id', 'boto_ec2.get_tags', 'boto_ec2.get_unassociated_eip_address', 'boto_ec2.get_zones', 'boto_ec2.import_key', 'boto_ec2.modify_network_interface_attribute', 'boto_ec2.release_eip_address', 'boto_ec2.run', 'boto_ec2.set_attribute', 'boto_ec2.set_volumes_tags', 'boto_ec2.terminate', 'boto_ec2.unassign_private_ip_addresses', 'boto_efs.create_file_system', 'boto_efs.create_mount_target', 'boto_efs.create_tags', 'boto_efs.delete_file_system', 'boto_efs.delete_mount_target', 'boto_efs.delete_tags', 'boto_efs.get_file_systems', 'boto_efs.get_mount_targets', 'boto_efs.get_tags', 'boto_efs.set_security_groups', 'boto_elasticache.authorize_cache_security_group_ingress', 'boto_elasticache.create', 'boto_elasticache.create_cache_security_group', 'boto_elasticache.create_replication_group', 'boto_elasticache.create_subnet_group', 'boto_elasticache.delete', 'boto_elasticache.delete_cache_security_group', 'boto_elasticache.delete_replication_group', 'boto_elasticache.delete_subnet_group', 'boto_elasticache.describe_replication_group', 'boto_elasticache.exists', 'boto_elasticache.get_all_cache_subnet_groups', 'boto_elasticache.get_cache_subnet_group', 'boto_elasticache.get_config', 'boto_elasticache.get_group_host', 'boto_elasticache.get_node_host', 'boto_elasticache.group_exists', 'boto_elasticache.list_cache_subnet_groups', 'boto_elasticache.revoke_cache_security_group_ingress', 'boto_elasticache.subnet_group_exists', 'boto_elasticsearch_domain.add_tags', 'boto_elasticsearch_domain.create', 'boto_elasticsearch_domain.delete', 'boto_elasticsearch_domain.describe', 'boto_elasticsearch_domain.exists', 'boto_elasticsearch_domain.list_tags', 'boto_elasticsearch_domain.remove_tags', 'boto_elasticsearch_domain.status', 'boto_elasticsearch_domain.update', 'boto_elb.apply_security_groups', 'boto_elb.attach_subnets', 'boto_elb.create', 'boto_elb.create_listeners', 'boto_elb.create_policy', 'boto_elb.delete', 'boto_elb.delete_listeners', 'boto_elb.delete_policy', 'boto_elb.delete_tags', 'boto_elb.deregister_instances', 'boto_elb.detach_subnets', 'boto_elb.disable_availability_zones', 'boto_elb.enable_availability_zones', 'boto_elb.exists', 'boto_elb.get_all_elbs', 'boto_elb.get_attributes', 'boto_elb.get_elb_config', 'boto_elb.get_health_check', 'boto_elb.get_instance_health', 'boto_elb.list_elbs', 'boto_elb.listener_dict_to_tuple', 'boto_elb.register_instances', 'boto_elb.set_attributes', 'boto_elb.set_backend_policy', 'boto_elb.set_health_check', 'boto_elb.set_instances', 'boto_elb.set_listener_policy', 'boto_elb.set_tags', 'boto_elbv2.create_target_group', 'boto_elbv2.delete_target_group', 'boto_elbv2.deregister_targets', 'boto_elbv2.describe_target_health', 'boto_elbv2.register_targets', 'boto_elbv2.target_group_exists', 'boto_iam.add_user_to_group', 'boto_iam.associate_profile_to_role', 'boto_iam.attach_group_policy', 'boto_iam.attach_role_policy', 'boto_iam.attach_user_policy', 'boto_iam.build_policy', 'boto_iam.create_access_key', 'boto_iam.create_group', 'boto_iam.create_instance_profile', 'boto_iam.create_login_profile', 'boto_iam.create_policy', 'boto_iam.create_policy_version', 'boto_iam.create_role', 'boto_iam.create_role_policy', 'boto_iam.create_saml_provider', 'boto_iam.create_user', 'boto_iam.deactivate_mfa_device', 'boto_iam.delete_access_key', 'boto_iam.delete_group', 'boto_iam.delete_group_policy', 'boto_iam.delete_instance_profile', 'boto_iam.delete_login_profile', 'boto_iam.delete_policy', 'boto_iam.delete_policy_version', 'boto_iam.delete_role', 'boto_iam.delete_role_policy', 'boto_iam.delete_saml_provider', 'boto_iam.delete_server_cert', 'boto_iam.delete_user', 'boto_iam.delete_user_policy', 'boto_iam.delete_virtual_mfa_device', 'boto_iam.describe_role', 'boto_iam.detach_group_policy', 'boto_iam.detach_role_policy', 'boto_iam.detach_user_policy', 'boto_iam.disassociate_profile_from_role', 'boto_iam.export_roles', 'boto_iam.export_users', 'boto_iam.get_account_id', 'boto_iam.get_account_policy', 'boto_iam.get_all_access_keys', 'boto_iam.get_all_group_policies', 'boto_iam.get_all_groups', 'boto_iam.get_all_instance_profiles', 'boto_iam.get_all_mfa_devices', 'boto_iam.get_all_roles', 'boto_iam.get_all_user_policies', 'boto_iam.get_all_users', 'boto_iam.get_group', 'boto_iam.get_group_members', 'boto_iam.get_group_policy', 'boto_iam.get_policy', 'boto_iam.get_policy_version', 'boto_iam.get_role_policy', 'boto_iam.get_saml_provider', 'boto_iam.get_saml_provider_arn', 'boto_iam.get_server_certificate', 'boto_iam.get_user', 'boto_iam.get_user_policy', 'boto_iam.instance_profile_exists', 'boto_iam.list_attached_group_policies', 'boto_iam.list_attached_role_policies', 'boto_iam.list_attached_user_policies', 'boto_iam.list_entities_for_policy', 'boto_iam.list_instance_profiles', 'boto_iam.list_policies', 'boto_iam.list_policy_versions', 'boto_iam.list_role_policies', 'boto_iam.list_saml_providers', 'boto_iam.policy_exists', 'boto_iam.policy_version_exists', 'boto_iam.profile_associated', 'boto_iam.put_group_policy', 'boto_iam.put_user_policy', 'boto_iam.remove_user_from_group', 'boto_iam.role_exists', 'boto_iam.set_default_policy_version', 'boto_iam.update_account_password_policy', 'boto_iam.update_assume_role_policy', 'boto_iam.update_saml_provider', 'boto_iam.upload_server_cert', 'boto_iam.user_exists_in_group', 'boto_iot.attach_principal_policy', 'boto_iot.create_policy', 'boto_iot.create_policy_version', 'boto_iot.create_thing_type', 'boto_iot.create_topic_rule', 'boto_iot.delete_policy', 'boto_iot.delete_policy_version', 'boto_iot.delete_thing_type', 'boto_iot.delete_topic_rule', 'boto_iot.deprecate_thing_type', 'boto_iot.describe_policy', 'boto_iot.describe_policy_version', 'boto_iot.describe_thing_type', 'boto_iot.describe_topic_rule', 'boto_iot.detach_principal_policy', 'boto_iot.list_policies', 'boto_iot.list_policy_versions', 'boto_iot.list_principal_policies', 'boto_iot.list_topic_rules', 'boto_iot.policy_exists', 'boto_iot.policy_version_exists', 'boto_iot.replace_topic_rule', 'boto_iot.set_default_policy_version', 'boto_iot.thing_type_exists', 'boto_iot.topic_rule_exists', 'boto_kinesis.create_stream', 'boto_kinesis.decrease_stream_retention_period', 'boto_kinesis.delete_stream', 'boto_kinesis.disable_enhanced_monitoring', 'boto_kinesis.enable_enhanced_monitoring', 'boto_kinesis.exists', 'boto_kinesis.get_info_for_reshard', 'boto_kinesis.get_stream_when_active', 'boto_kinesis.increase_stream_retention_period', 'boto_kinesis.list_streams', 'boto_kinesis.long_int', 'boto_kinesis.reshard', 'boto_kms.create_alias', 'boto_kms.create_grant', 'boto_kms.create_key', 'boto_kms.decrypt', 'boto_kms.describe_key', 'boto_kms.disable_key', 'boto_kms.disable_key_rotation', 'boto_kms.enable_key', 'boto_kms.enable_key_rotation', 'boto_kms.encrypt', 'boto_kms.generate_data_key', 'boto_kms.generate_data_key_without_plaintext', 'boto_kms.generate_random', 'boto_kms.get_key_policy', 'boto_kms.get_key_rotation_status', 'boto_kms.key_exists', 'boto_kms.list_grants', 'boto_kms.list_key_policies', 'boto_kms.put_key_policy', 'boto_kms.re_encrypt', 'boto_kms.revoke_grant', 'boto_kms.update_key_description', 'boto_lambda.add_permission', 'boto_lambda.alias_exists', 'boto_lambda.create_alias', 'boto_lambda.create_event_source_mapping', 'boto_lambda.create_function', 'boto_lambda.delete_alias', 'boto_lambda.delete_event_source_mapping', 'boto_lambda.delete_function', 'boto_lambda.describe_alias', 'boto_lambda.describe_event_source_mapping', 'boto_lambda.describe_function', 'boto_lambda.event_source_mapping_exists', 'boto_lambda.function_exists', 'boto_lambda.get_event_source_mapping_ids', 'boto_lambda.get_permissions', 'boto_lambda.list_function_versions', 'boto_lambda.list_functions', 'boto_lambda.remove_permission', 'boto_lambda.update_alias', 'boto_lambda.update_event_source_mapping', 'boto_lambda.update_function_code', 'boto_lambda.update_function_config', 'boto_rds.create', 'boto_rds.create_option_group', 'boto_rds.create_parameter_group', 'boto_rds.create_read_replica', 'boto_rds.create_subnet_group', 'boto_rds.delete', 'boto_rds.delete_option_group', 'boto_rds.delete_parameter_group', 'boto_rds.delete_subnet_group', 'boto_rds.describe', 'boto_rds.describe_db_instances', 'boto_rds.describe_db_subnet_groups', 'boto_rds.describe_parameter_group', 'boto_rds.describe_parameters', 'boto_rds.exists', 'boto_rds.get_endpoint', 'boto_rds.modify_db_instance', 'boto_rds.option_group_exists', 'boto_rds.parameter_group_exists', 'boto_rds.subnet_group_exists', 'boto_rds.update_parameter_group', 'boto_route53.add_record', 'boto_route53.create_healthcheck', 'boto_route53.create_hosted_zone', 'boto_route53.create_zone', 'boto_route53.delete_record', 'boto_route53.delete_zone', 'boto_route53.describe_hosted_zones', 'boto_route53.get_record', 'boto_route53.list_all_zones_by_id', 'boto_route53.list_all_zones_by_name', 'boto_route53.update_record', 'boto_route53.zone_exists', 'boto_s3.get_object_metadata', 'boto_s3.upload_file', 'boto_s3_bucket.create', 'boto_s3_bucket.delete', 'boto_s3_bucket.delete_cors', 'boto_s3_bucket.delete_lifecycle_configuration', 'boto_s3_bucket.delete_objects', 'boto_s3_bucket.delete_policy', 'boto_s3_bucket.delete_replication', 'boto_s3_bucket.delete_tagging', 'boto_s3_bucket.delete_website', 'boto_s3_bucket.describe', 'boto_s3_bucket.empty', 'boto_s3_bucket.exists', 'boto_s3_bucket.list', 'boto_s3_bucket.list_object_versions', 'boto_s3_bucket.list_objects', 'boto_s3_bucket.put_acl', 'boto_s3_bucket.put_cors', 'boto_s3_bucket.put_lifecycle_configuration', 'boto_s3_bucket.put_logging', 'boto_s3_bucket.put_notification_configuration', 'boto_s3_bucket.put_policy', 'boto_s3_bucket.put_replication', 'boto_s3_bucket.put_request_payment', 'boto_s3_bucket.put_tagging', 'boto_s3_bucket.put_versioning', 'boto_s3_bucket.put_website', 'boto_secgroup.authorize', 'boto_secgroup.convert_to_group_ids', 'boto_secgroup.create', 'boto_secgroup.delete', 'boto_secgroup.delete_tags', 'boto_secgroup.exists', 'boto_secgroup.get_all_security_groups', 'boto_secgroup.get_config', 'boto_secgroup.get_group_id', 'boto_secgroup.revoke', 'boto_secgroup.set_tags', 'boto_sns.create', 'boto_sns.delete', 'boto_sns.exists', 'boto_sns.get_all_subscriptions_by_topic', 'boto_sns.get_all_topics', 'boto_sns.get_arn', 'boto_sns.subscribe', 'boto_sns.unsubscribe', 'boto_sqs.create', 'boto_sqs.delete', 'boto_sqs.exists', 'boto_sqs.get_attributes', 'boto_sqs.list', 'boto_sqs.set_attributes', 'boto_ssm.delete_parameter', 'boto_ssm.get_parameter', 'boto_ssm.put_parameter', 'boto_vpc.accept_vpc_peering_connection', 'boto_vpc.associate_dhcp_options_to_vpc', 'boto_vpc.associate_network_acl_to_subnet', 'boto_vpc.associate_route_table', 'boto_vpc.check_vpc', 'boto_vpc.create', 'boto_vpc.create_customer_gateway', 'boto_vpc.create_dhcp_options', 'boto_vpc.create_internet_gateway', 'boto_vpc.create_nat_gateway', 'boto_vpc.create_network_acl', 'boto_vpc.create_network_acl_entry', 'boto_vpc.create_route', 'boto_vpc.create_route_table', 'boto_vpc.create_subnet', 'boto_vpc.customer_gateway_exists', 'boto_vpc.delete', 'boto_vpc.delete_customer_gateway', 'boto_vpc.delete_dhcp_options', 'boto_vpc.delete_internet_gateway', 'boto_vpc.delete_nat_gateway', 'boto_vpc.delete_network_acl', 'boto_vpc.delete_network_acl_entry', 'boto_vpc.delete_route', 'boto_vpc.delete_route_table', 'boto_vpc.delete_subnet', 'boto_vpc.delete_vpc_peering_connection', 'boto_vpc.describe', 'boto_vpc.describe_nat_gateways', 'boto_vpc.describe_route_tables', 'boto_vpc.describe_subnet', 'boto_vpc.describe_subnets', 'boto_vpc.describe_vpc_peering_connection', 'boto_vpc.describe_vpcs', 'boto_vpc.dhcp_options_exists', 'boto_vpc.disassociate_network_acl', 'boto_vpc.disassociate_route_table', 'boto_vpc.exists', 'boto_vpc.get_dhcp_options', 'boto_vpc.get_id', 'boto_vpc.get_resource_id', 'boto_vpc.get_subnet_association', 'boto_vpc.is_peering_connection_pending', 'boto_vpc.nat_gateway_exists', 'boto_vpc.network_acl_exists', 'boto_vpc.peering_connection_pending_from_vpc', 'boto_vpc.replace_network_acl_entry', 'boto_vpc.replace_route', 'boto_vpc.replace_route_table_association', 'boto_vpc.request_vpc_peering_connection', 'boto_vpc.resource_exists', 'boto_vpc.route_exists', 'boto_vpc.route_table_exists', 'boto_vpc.subnet_exists', 'buildout.bootstrap', 'buildout.buildout', 'buildout.run_buildout', 'buildout.upgrade_bootstrap', 'cabal.install', 'cabal.list', 'cabal.uninstall', 'cabal.update', 'cassandra_cql.cql_query', 'cassandra_cql.cql_query_with_prepare', 'cassandra_cql.create_keyspace', 'cassandra_cql.create_user', 'cassandra_cql.drop_keyspace', 'cassandra_cql.grant_permission', 'cassandra_cql.info', 'cassandra_cql.keyspace_exists', 'cassandra_cql.list_column_families', 'cassandra_cql.list_keyspaces', 'cassandra_cql.list_permissions', 'cassandra_cql.list_users', 'cassandra_cql.version', 'certutil.add_store', 'certutil.del_store', 'certutil.get_cert_serial', 'certutil.get_stored_cert_serials', 'chocolatey.add_source', 'chocolatey.bootstrap', 'chocolatey.chocolatey_version', 'chocolatey.disable_source', 'chocolatey.enable_source', 'chocolatey.install', 'chocolatey.install_cygwin', 'chocolatey.install_gem', 'chocolatey.install_missing', 'chocolatey.install_python', 'chocolatey.install_webpi', 'chocolatey.install_windowsfeatures', 'chocolatey.list', 'chocolatey.list_sources', 'chocolatey.list_webpi', 'chocolatey.list_windowsfeatures', 'chocolatey.unbootstrap', 'chocolatey.uninstall', 'chocolatey.update', 'chocolatey.upgrade', 'chocolatey.version', 'chroot.apply', 'chroot.call', 'chroot.create', 'chroot.exist', 'chroot.highstate', 'chroot.in_chroot', 'chroot.sls', 'cloud.action', 'cloud.create', 'cloud.destroy', 'cloud.full_query', 'cloud.get_instance', 'cloud.has_instance', 'cloud.list_images', 'cloud.list_locations', 'cloud.list_sizes', 'cloud.map_run', 'cloud.network_create', 'cloud.network_list', 'cloud.profile', 'cloud.query', 'cloud.select_query', 'cloud.virtual_interface_create', 'cloud.virtual_interface_list', 'cloud.volume_attach', 'cloud.volume_create', 'cloud.volume_delete', 'cloud.volume_detach', 'cloud.volume_list', 'cmd.exec_code', 'cmd.exec_code_all', 'cmd.has_exec', 'cmd.powershell', 'cmd.powershell_all', 'cmd.retcode', 'cmd.run', 'cmd.run_all', 'cmd.run_bg', 'cmd.run_chroot', 'cmd.run_stderr', 'cmd.run_stdout', 'cmd.script', 'cmd.script_retcode', 'cmd.shell', 'cmd.shell_info', 'cmd.shells', 'cmd.tty', 'cmd.which', 'cmd.which_bin', 'composer.did_composer_install', 'composer.install', 'composer.selfupdate', 'composer.update', 'config.backup_mode', 'config.dot_vals', 'config.gather_bootstrap_script', 'config.get', 'config.items', 'config.manage_mode', 'config.merge', 'config.option', 'config.valid_fileproto', 'consul.acl_clone', 'consul.acl_create', 'consul.acl_delete', 'consul.acl_info', 'consul.acl_list', 'consul.acl_update', 'consul.agent_check_deregister', 'consul.agent_check_fail', 'consul.agent_check_pass', 'consul.agent_check_register', 'consul.agent_check_warn', 'consul.agent_checks', 'consul.agent_join', 'consul.agent_leave', 'consul.agent_maintenance', 'consul.agent_members', 'consul.agent_self', 'consul.agent_service_deregister', 'consul.agent_service_maintenance', 'consul.agent_service_register', 'consul.agent_services', 'consul.catalog_datacenters', 'consul.catalog_deregister', 'consul.catalog_node', 'consul.catalog_nodes', 'consul.catalog_register', 'consul.catalog_service', 'consul.catalog_services', 'consul.delete', 'consul.event_fire', 'consul.event_list', 'consul.get', 'consul.health_checks', 'consul.health_node', 'consul.health_service', 'consul.health_state', 'consul.list', 'consul.put', 'consul.session_create', 'consul.session_destroy', 'consul.session_info', 'consul.session_list', 'consul.status_leader', 'consul.status_peers', 'container_resource.cache_file', 'container_resource.copy_to', 'container_resource.run', 'cp.cache_dest', 'cp.cache_dir', 'cp.cache_file', 'cp.cache_files', 'cp.cache_local_file', 'cp.cache_master', 'cp.envs', 'cp.get_dir', 'cp.get_file', 'cp.get_file_str', 'cp.get_template', 'cp.get_url', 'cp.hash_file', 'cp.is_cached', 'cp.list_master', 'cp.list_master_dirs', 'cp.list_master_symlinks', 'cp.list_minion', 'cp.list_states', 'cp.push', 'cp.push_dir', 'cp.recv', 'cp.recv_chunked', 'cp.stat_file', 'cpan.install', 'cpan.list', 'cpan.remove', 'cpan.show', 'cpan.show_config', 'cyg.check_valid_package', 'cyg.install', 'cyg.list', 'cyg.uninstall', 'cyg.update', 'data.cas', 'data.clear', 'data.dump', 'data.get', 'data.has_key', 'data.items', 'data.keys', 'data.load', 'data.pop', 'data.update', 'data.values', 'ddns.add_host', 'ddns.delete', 'ddns.delete_host', 'ddns.update', 'defaults.deepcopy', 'defaults.get', 'defaults.merge', 'defaults.update', 'devinfo.filter', 'devinfo.hwinfo', 'devmap.multipath_flush', 'devmap.multipath_list', 'disk.usage', 'dism.add_capability', 'dism.add_feature', 'dism.add_package', 'dism.available_capabilities', 'dism.available_features', 'dism.get_capabilities', 'dism.get_features', 'dism.get_kb_package_name', 'dism.installed_capabilities', 'dism.installed_features', 'dism.installed_packages', 'dism.package_info', 'dism.remove_capability', 'dism.remove_feature', 'dism.remove_kb', 'dism.remove_package', 'django.collectstatic', 'django.command', 'django.createsuperuser', 'django.loaddata', 'django.migrate', 'django.syncdb', 'dnsutil.A', 'dnsutil.AAAA', 'dnsutil.MX', 'dnsutil.NS', 'dnsutil.SPF', 'dnsutil.check_ip', 'dnsutil.hosts_append', 'dnsutil.hosts_remove', 'dnsutil.parse_hosts', 'dnsutil.parse_zone', 'dnsutil.serial', 'docker.apply', 'docker.build', 'docker.call', 'docker.commit', 'docker.compare_container', 'docker.compare_container_networks', 'docker.compare_containers', 'docker.compare_networks', 'docker.connect_container_to_network', 'docker.connected', 'docker.copy_from', 'docker.copy_to', 'docker.cp', 'docker.create', 'docker.create_network', 'docker.create_volume', 'docker.dangling', 'docker.depends', 'docker.diff', 'docker.disconnect_all_containers_from_network', 'docker.disconnect_container_from_network', 'docker.exists', 'docker.export', 'docker.freeze', 'docker.get_client_args', 'docker.highstate', 'docker.history', 'docker.images', 'docker.import', 'docker.info', 'docker.inspect', 'docker.inspect_container', 'docker.inspect_image', 'docker.inspect_network', 'docker.inspect_volume', 'docker.kill', 'docker.layers', 'docker.list_containers', 'docker.list_tags', 'docker.load', 'docker.login', 'docker.logout', 'docker.logs', 'docker.networks', 'docker.pause', 'docker.pid', 'docker.port', 'docker.prune', 'docker.ps', 'docker.pull', 'docker.push', 'docker.remove_network', 'docker.remove_volume', 'docker.rename', 'docker.resolve_image_id', 'docker.resolve_tag', 'docker.restart', 'docker.retcode', 'docker.rm', 'docker.rmi', 'docker.run', 'docker.run_all', 'docker.run_container', 'docker.run_stderr', 'docker.run_stdout', 'docker.save', 'docker.script', 'docker.script_retcode', 'docker.search', 'docker.signal', 'docker.sls', 'docker.sls_build', 'docker.start', 'docker.state', 'docker.stop', 'docker.tag', 'docker.top', 'docker.unfreeze', 'docker.unpause', 'docker.version', 'docker.volumes', 'docker.wait', 'dockerng.apply', 'dockerng.build', 'dockerng.call', 'dockerng.commit', 'dockerng.compare_container', 'dockerng.compare_container_networks', 'dockerng.compare_containers', 'dockerng.compare_networks', 'dockerng.connect_container_to_network', 'dockerng.connected', 'dockerng.copy_from', 'dockerng.copy_to', 'dockerng.cp', 'dockerng.create', 'dockerng.create_network', 'dockerng.create_volume', 'dockerng.dangling', 'dockerng.depends', 'dockerng.diff', 'dockerng.disconnect_all_containers_from_network', 'dockerng.disconnect_container_from_network', 'dockerng.exists', 'dockerng.export', 'dockerng.freeze', 'dockerng.get_client_args', 'dockerng.highstate', 'dockerng.history', 'dockerng.images', 'dockerng.import', 'dockerng.info', 'dockerng.inspect', 'dockerng.inspect_container', 'dockerng.inspect_image', 'dockerng.inspect_network', 'dockerng.inspect_volume', 'dockerng.kill', 'dockerng.layers', 'dockerng.list_containers', 'dockerng.list_tags', 'dockerng.load', 'dockerng.login', 'dockerng.logout', 'dockerng.logs', 'dockerng.networks', 'dockerng.pause', 'dockerng.pid', 'dockerng.port', 'dockerng.prune', 'dockerng.ps', 'dockerng.pull', 'dockerng.push', 'dockerng.remove_network', 'dockerng.remove_volume', 'dockerng.rename', 'dockerng.resolve_image_id', 'dockerng.resolve_tag', 'dockerng.restart', 'dockerng.retcode', 'dockerng.rm', 'dockerng.rmi', 'dockerng.run', 'dockerng.run_all', 'dockerng.run_container', 'dockerng.run_stderr', 'dockerng.run_stdout', 'dockerng.save', 'dockerng.script', 'dockerng.script_retcode', 'dockerng.search', 'dockerng.signal', 'dockerng.sls', 'dockerng.sls_build', 'dockerng.start', 'dockerng.state', 'dockerng.stop', 'dockerng.tag', 'dockerng.top', 'dockerng.unfreeze', 'dockerng.unpause', 'dockerng.version', 'dockerng.volumes', 'dockerng.wait', 'drbd.overview', 'drbd.status', 'dsc.apply_config', 'dsc.compile_config', 'dsc.get_config', 'dsc.get_config_status', 'dsc.get_lcm_config', 'dsc.remove_config', 'dsc.restore_config', 'dsc.run_config', 'dsc.set_lcm_config', 'dsc.test_config', 'environ.get', 'environ.has_value', 'environ.item', 'environ.items', 'environ.setenv', 'environ.setval', 'etcd.get', 'etcd.ls', 'etcd.rm', 'etcd.set', 'etcd.tree', 'etcd.update', 'etcd.watch', 'ethtool.set_coalesce', 'ethtool.set_feature', 'ethtool.set_offload', 'ethtool.set_pause', 'ethtool.set_ring', 'ethtool.show_coalesce', 'ethtool.show_driver', 'ethtool.show_features', 'ethtool.show_offload', 'ethtool.show_pause', 'ethtool.show_ring', 'event.fire', 'event.fire_master', 'event.send', 'file.access', 'file.append', 'file.apply_template_on_contents', 'file.basename', 'file.blockreplace', 'file.check_file_meta', 'file.check_hash', 'file.check_managed', 'file.check_managed_changes', 'file.check_perms', 'file.chgrp', 'file.chown', 'file.chpgrp', 'file.comment', 'file.comment_line', 'file.contains', 'file.contains_glob', 'file.contains_regex', 'file.copy', 'file.delete_backup', 'file.directory_exists', 'file.dirname', 'file.extract_hash', 'file.file_exists', 'file.find', 'file.get_attributes', 'file.get_diff', 'file.get_gid', 'file.get_group', 'file.get_hash', 'file.get_managed', 'file.get_mode', 'file.get_pgid', 'file.get_pgroup', 'file.get_source_sum', 'file.get_sum', 'file.get_uid', 'file.get_user', 'file.gid_to_group', 'file.group_to_gid', 'file.is_link', 'file.join', 'file.lchown', 'file.line', 'file.list_backups', 'file.list_backups_dir', 'file.lstat', 'file.makedirs', 'file.makedirs_perms', 'file.manage_file', 'file.mkdir', 'file.normpath', 'file.pardir', 'file.patch', 'file.path_exists_glob', 'file.prepend', 'file.psed', 'file.read', 'file.readdir', 'file.readlink', 'file.remove', 'file.rename', 'file.replace', 'file.restore_backup', 'file.rmdir', 'file.search', 'file.seek_read', 'file.seek_write', 'file.set_attributes', 'file.set_mode', 'file.set_perms', 'file.source_list', 'file.stats', 'file.symlink', 'file.touch', 'file.truncate', 'file.uid_to_user', 'file.uncomment', 'file.user_to_uid', 'file.version', 'file.version_details', 'file.write', 'firewall.add_rule', 'firewall.delete_rule', 'firewall.disable', 'firewall.enable', 'firewall.get_all_profiles', 'firewall.get_all_settings', 'firewall.get_config', 'firewall.get_rule', 'firewall.get_settings', 'firewall.rule_exists', 'firewall.set_firewall_settings', 'firewall.set_logging_settings', 'firewall.set_settings', 'firewall.set_state', 'freezer.compare', 'freezer.freeze', 'freezer.list', 'freezer.restore', 'freezer.status', 'gem.install', 'gem.list', 'gem.list_upgrades', 'gem.sources_add', 'gem.sources_list', 'gem.sources_remove', 'gem.uninstall', 'gem.update', 'gem.update_system', 'gem.version', 'genesis.avail_platforms', 'genesis.bootstrap', 'genesis.ldd_deps', 'genesis.mksls', 'genesis.pack', 'genesis.unpack', 'git.add', 'git.archive', 'git.branch', 'git.checkout', 'git.clone', 'git.commit', 'git.config_get', 'git.config_get_regex', 'git.config_get_regexp', 'git.config_set', 'git.config_unset', 'git.current_branch', 'git.describe', 'git.diff', 'git.discard_local_changes', 'git.fetch', 'git.init', 'git.is_worktree', 'git.list_branches', 'git.list_tags', 'git.list_worktrees', 'git.ls_remote', 'git.merge', 'git.merge_base', 'git.merge_tree', 'git.pull', 'git.push', 'git.rebase', 'git.remote_get', 'git.remote_refs', 'git.remote_set', 'git.remotes', 'git.reset', 'git.rev_parse', 'git.revision', 'git.rm', 'git.stash', 'git.status', 'git.submodule', 'git.symbolic_ref', 'git.tag', 'git.version', 'git.worktree_add', 'git.worktree_prune', 'git.worktree_rm', 'glassfish.create_admin_object_resource', 'glassfish.create_connector_c_pool', 'glassfish.create_connector_resource', 'glassfish.create_jdbc_connection_pool', 'glassfish.create_jdbc_resource', 'glassfish.delete_admin_object_resource', 'glassfish.delete_connector_c_pool', 'glassfish.delete_connector_resource', 'glassfish.delete_jdbc_connection_pool', 'glassfish.delete_jdbc_resource', 'glassfish.delete_system_properties', 'glassfish.enum_admin_object_resource', 'glassfish.enum_connector_c_pool', 'glassfish.enum_connector_resource', 'glassfish.enum_jdbc_connection_pool', 'glassfish.enum_jdbc_resource', 'glassfish.get_admin_object_resource', 'glassfish.get_connector_c_pool', 'glassfish.get_connector_resource', 'glassfish.get_jdbc_connection_pool', 'glassfish.get_jdbc_resource', 'glassfish.get_system_properties', 'glassfish.update_admin_object_resource', 'glassfish.update_connector_c_pool', 'glassfish.update_connector_resource', 'glassfish.update_jdbc_connection_pool', 'glassfish.update_jdbc_resource', 'glassfish.update_system_properties', 'google_chat.send_message', 'gpg.create_key', 'gpg.decrypt', 'gpg.delete_key', 'gpg.encrypt', 'gpg.export_key', 'gpg.get_key', 'gpg.get_secret_key', 'gpg.import_key', 'gpg.list_keys', 'gpg.list_secret_keys', 'gpg.receive_keys', 'gpg.search_keys', 'gpg.sign', 'gpg.trust_key', 'gpg.verify', 'grafana4.create_datasource', 'grafana4.create_org', 'grafana4.create_org_user', 'grafana4.create_update_dashboard', 'grafana4.create_user', 'grafana4.delete_dashboard', 'grafana4.delete_datasource', 'grafana4.delete_org', 'grafana4.delete_org_user', 'grafana4.delete_user', 'grafana4.delete_user_org', 'grafana4.get_dashboard', 'grafana4.get_datasource', 'grafana4.get_datasources', 'grafana4.get_org', 'grafana4.get_org_address', 'grafana4.get_org_prefs', 'grafana4.get_org_users', 'grafana4.get_orgs', 'grafana4.get_user', 'grafana4.get_user_data', 'grafana4.get_user_orgs', 'grafana4.get_users', 'grafana4.switch_org', 'grafana4.update_datasource', 'grafana4.update_org', 'grafana4.update_org_address', 'grafana4.update_org_prefs', 'grafana4.update_org_user', 'grafana4.update_user', 'grafana4.update_user_password', 'grafana4.update_user_permissions', 'grains.append', 'grains.delkey', 'grains.delval', 'grains.equals', 'grains.fetch', 'grains.filter_by', 'grains.get', 'grains.has_value', 'grains.item', 'grains.items', 'grains.ls', 'grains.remove', 'grains.set', 'grains.setval', 'grains.setvals', 'group.add', 'group.adduser', 'group.delete', 'group.deluser', 'group.getent', 'group.info', 'group.list_groups', 'group.members', 'hashutil.base64_b64decode', 'hashutil.base64_b64encode', 'hashutil.base64_decodefile', 'hashutil.base64_decodestring', 'hashutil.base64_encodefile', 'hashutil.base64_encodestring', 'hashutil.digest', 'hashutil.digest_file', 'hashutil.github_signature', 'hashutil.hmac_compute', 'hashutil.hmac_signature', 'hashutil.md5_digest', 'hashutil.sha256_digest', 'hashutil.sha512_digest', 'helm.completion', 'helm.create', 'helm.dependency_build', 'helm.dependency_list', 'helm.dependency_update', 'helm.env', 'helm.get_all', 'helm.get_hooks', 'helm.get_manifest', 'helm.get_notes', 'helm.get_values', 'helm.help', 'helm.history', 'helm.install', 'helm.lint', 'helm.list', 'helm.package', 'helm.plugin_install', 'helm.plugin_list', 'helm.plugin_uninstall', 'helm.plugin_update', 'helm.pull', 'helm.repo_add', 'helm.repo_index', 'helm.repo_list', 'helm.repo_manage', 'helm.repo_remove', 'helm.repo_update', 'helm.rollback', 'helm.search_hub', 'helm.search_repo', 'helm.show_all', 'helm.show_chart', 'helm.show_readme', 'helm.show_values', 'helm.status', 'helm.template', 'helm.test', 'helm.uninstall', 'helm.upgrade', 'helm.verify', 'helm.version', 'hg.archive', 'hg.clone', 'hg.describe', 'hg.pull', 'hg.revision', 'hg.status', 'hg.update', 'highstate_doc.markdown_basic_jinja_template', 'highstate_doc.markdown_default_jinja_template', 'highstate_doc.markdown_full_jinja_template', 'highstate_doc.process_lowstates', 'highstate_doc.processor_markdown', 'highstate_doc.read_file', 'highstate_doc.render', 'hosts.add_host', 'hosts.get_alias', 'hosts.get_ip', 'hosts.has_pair', 'hosts.list_hosts', 'hosts.rm_host', 'hosts.set_comment', 'hosts.set_host', 'http.query', 'http.update_ca_bundle', 'http.wait_for_successful_query', 'incron.list_tab', 'incron.ls', 'incron.raw_incron', 'incron.raw_system_incron', 'incron.rm', 'incron.rm_job', 'incron.set_job', 'incron.write_incron_file', 'incron.write_incron_file_verbose', 'ini.get_ini', 'ini.get_option', 'ini.get_section', 'ini.remove_option', 'ini.remove_section', 'ini.set_option', 'introspect.enabled_service_owners', 'introspect.running_service_owners', 'introspect.service_highstate', 'iosconfig.clean', 'iosconfig.diff_text', 'iosconfig.diff_tree', 'iosconfig.merge_diff', 'iosconfig.merge_text', 'iosconfig.merge_tree', 'iosconfig.tree', 'ip.disable', 'ip.enable', 'ip.get_all_interfaces', 'ip.get_default_gateway', 'ip.get_interface', 'ip.get_subnet_length', 'ip.is_disabled', 'ip.is_enabled', 'ip.raw_interface_configs', 'ip.set_dhcp_all', 'ip.set_dhcp_dns', 'ip.set_dhcp_ip', 'ip.set_static_dns', 'ip.set_static_ip', 'jboss7.create_datasource', 'jboss7.create_simple_binding', 'jboss7.deploy', 'jboss7.list_deployments', 'jboss7.read_datasource', 'jboss7.read_simple_binding', 'jboss7.reload', 'jboss7.remove_datasource', 'jboss7.status', 'jboss7.stop_server', 'jboss7.undeploy', 'jboss7.update_datasource', 'jboss7.update_simple_binding', 'jboss7_cli.run_command', 'jboss7_cli.run_operation', 'jinja.import_json', 'jinja.import_yaml', 'jinja.load_map', 'k8s.create_namespace', 'k8s.create_secret', 'k8s.delete_secret', 'k8s.get_labels', 'k8s.get_namespaces', 'k8s.get_secrets', 'k8s.label_absent', 'k8s.label_folder_absent', 'k8s.label_present', 'k8s.update_secret', 'key.finger', 'key.finger_master', 'kubeadm.alpha_certs_renew', 'kubeadm.alpha_kubeconfig_user', 'kubeadm.alpha_kubelet_config_download', 'kubeadm.alpha_kubelet_config_enable_dynamic', 'kubeadm.alpha_selfhosting_pivot', 'kubeadm.config_images_list', 'kubeadm.config_images_pull', 'kubeadm.config_migrate', 'kubeadm.config_print_init_defaults', 'kubeadm.config_print_join_defaults', 'kubeadm.config_upload_from_file', 'kubeadm.config_upload_from_flags', 'kubeadm.config_view', 'kubeadm.init', 'kubeadm.join', 'kubeadm.join_params', 'kubeadm.reset', 'kubeadm.token_create', 'kubeadm.token_delete', 'kubeadm.token_generate', 'kubeadm.token_list', 'kubeadm.version', 'kubernetes.configmaps', 'kubernetes.create_configmap', 'kubernetes.create_deployment', 'kubernetes.create_namespace', 'kubernetes.create_pod', 'kubernetes.create_secret', 'kubernetes.create_service', 'kubernetes.delete_configmap', 'kubernetes.delete_deployment', 'kubernetes.delete_namespace', 'kubernetes.delete_pod', 'kubernetes.delete_secret', 'kubernetes.delete_service', 'kubernetes.deployments', 'kubernetes.namespaces', 'kubernetes.node', 'kubernetes.node_add_label', 'kubernetes.node_labels', 'kubernetes.node_remove_label', 'kubernetes.nodes', 'kubernetes.ping', 'kubernetes.pods', 'kubernetes.replace_configmap', 'kubernetes.replace_deployment', 'kubernetes.replace_secret', 'kubernetes.replace_service', 'kubernetes.secrets', 'kubernetes.services', 'kubernetes.show_configmap', 'kubernetes.show_deployment', 'kubernetes.show_namespace', 'kubernetes.show_pod', 'kubernetes.show_secret', 'kubernetes.show_service', 'lgpo.clear_policy_cache', 'lgpo.get', 'lgpo.get_policy', 'lgpo.get_policy_info', 'lgpo.set', 'lgpo.set_computer_policy', 'lgpo.set_user_policy', 'lgpo_reg.delete_value', 'lgpo_reg.disable_value', 'lgpo_reg.get_key', 'lgpo_reg.get_value', 'lgpo_reg.read_reg_pol', 'lgpo_reg.set_value', 'lgpo_reg.write_reg_pol', 'license.activate', 'license.info', 'license.install', 'license.installed', 'license.licensed', 'license.uninstall', 'log.critical', 'log.debug', 'log.error', 'log.exception', 'log.info', 'log.warning', 'mandrill.send', 'match.compound', 'match.data', 'match.filter_by', 'match.glob', 'match.grain', 'match.grain_pcre', 'match.ifelse', 'match.ipcidr', 'match.list', 'match.pcre', 'match.pillar', 'match.pillar_pcre', 'match.search_by', 'mattermost.post_message', 'mine.delete', 'mine.flush', 'mine.get', 'mine.get_docker', 'mine.send', 'mine.update', 'mine.valid', 'minion.kill', 'minion.list', 'minion.restart', 'moby.apply', 'moby.build', 'moby.call', 'moby.commit', 'moby.compare_container', 'moby.compare_container_networks', 'moby.compare_containers', 'moby.compare_networks', 'moby.connect_container_to_network', 'moby.connected', 'moby.copy_from', 'moby.copy_to', 'moby.cp', 'moby.create', 'moby.create_network', 'moby.create_volume', 'moby.dangling', 'moby.depends', 'moby.diff', 'moby.disconnect_all_containers_from_network', 'moby.disconnect_container_from_network', 'moby.exists', 'moby.export', 'moby.freeze', 'moby.get_client_args', 'moby.highstate', 'moby.history', 'moby.images', 'moby.import', 'moby.info', 'moby.inspect', 'moby.inspect_container', 'moby.inspect_image', 'moby.inspect_network', 'moby.inspect_volume', 'moby.kill', 'moby.layers', 'moby.list_containers', 'moby.list_tags', 'moby.load', 'moby.login', 'moby.logout', 'moby.logs', 'moby.networks', 'moby.pause', 'moby.pid', 'moby.port', 'moby.prune', 'moby.ps', 'moby.pull', 'moby.push', 'moby.remove_network', 'moby.remove_volume', 'moby.rename', 'moby.resolve_image_id', 'moby.resolve_tag', 'moby.restart', 'moby.retcode', 'moby.rm', 'moby.rmi', 'moby.run', 'moby.run_all', 'moby.run_container', 'moby.run_stderr', 'moby.run_stdout', 'moby.save', 'moby.script', 'moby.script_retcode', 'moby.search', 'moby.signal', 'moby.sls', 'moby.sls_build', 'moby.start', 'moby.state', 'moby.stop', 'moby.tag', 'moby.top', 'moby.unfreeze', 'moby.unpause', 'moby.version', 'moby.volumes', 'moby.wait', 'modjk.bulk_activate', 'modjk.bulk_disable', 'modjk.bulk_recover', 'modjk.bulk_stop', 'modjk.dump_config', 'modjk.get_running', 'modjk.lb_edit', 'modjk.list_configured_members', 'modjk.recover_all', 'modjk.reset_stats', 'modjk.version', 'modjk.worker_activate', 'modjk.worker_disable', 'modjk.worker_edit', 'modjk.worker_recover', 'modjk.worker_status', 'modjk.worker_stop', 'modjk.workers', 'mssql.db_create', 'mssql.db_exists', 'mssql.db_list', 'mssql.db_remove', 'mssql.login_create', 'mssql.login_exists', 'mssql.login_remove', 'mssql.role_create', 'mssql.role_exists', 'mssql.role_list', 'mssql.role_remove', 'mssql.tsql_query', 'mssql.user_create', 'mssql.user_exists', 'mssql.user_list', 'mssql.user_remove', 'mssql.version', 'msteams.post_card', 'nacl.dec', 'nacl.dec_file', 'nacl.enc', 'nacl.enc_file', 'nacl.keygen', 'nacl.sealedbox_decrypt', 'nacl.sealedbox_encrypt', 'nacl.secretbox_decrypt', 'nacl.secretbox_encrypt', 'nagios_rpc.host_status', 'nagios_rpc.service_status', 'namecheap_domains.check', 'namecheap_domains.create', 'namecheap_domains.get_info', 'namecheap_domains.get_list', 'namecheap_domains.get_tld_list', 'namecheap_domains.reactivate', 'namecheap_domains.renew', 'namecheap_domains_dns.get_hosts', 'namecheap_domains_dns.get_list', 'namecheap_domains_dns.set_custom', 'namecheap_domains_dns.set_default', 'namecheap_domains_dns.set_hosts', 'namecheap_domains_ns.create', 'namecheap_domains_ns.delete', 'namecheap_domains_ns.get_info', 'namecheap_domains_ns.update', 'namecheap_ssl.activate', 'namecheap_ssl.create', 'namecheap_ssl.get_info', 'namecheap_ssl.get_list', 'namecheap_ssl.parse_csr', 'namecheap_ssl.reissue', 'namecheap_ssl.renew', 'namecheap_users.check_balances', 'namecheap_users.get_balances', 'network.calc_net', 'network.connect', 'network.convert_cidr', 'network.dig', 'network.get_fqdn', 'network.get_hostname', 'network.get_route', 'network.hw_addr', 'network.hwaddr', 'network.ifacestartswith', 'network.in_subnet', 'network.interface', 'network.interface_ip', 'network.interfaces', 'network.interfaces_names', 'network.ip_addrs', 'network.ip_addrs6', 'network.ip_in_subnet', 'network.ipaddrs', 'network.ipaddrs6', 'network.iphexval', 'network.is_private', 'network.netstat', 'network.nslookup', 'network.ping', 'network.subnets', 'network.subnets6', 'network.traceroute', 'network.wol', 'nexus.get_latest_release', 'nexus.get_latest_snapshot', 'nexus.get_release', 'nexus.get_snapshot', 'nexus.get_snapshot_version_string', 'nova.boot', 'nova.delete', 'nova.flavor_create', 'nova.flavor_delete', 'nova.flavor_list', 'nova.image_list', 'nova.image_meta_delete', 'nova.image_meta_set', 'nova.keypair_add', 'nova.keypair_delete', 'nova.keypair_list', 'nova.list', 'nova.lock', 'nova.resume', 'nova.secgroup_create', 'nova.secgroup_delete', 'nova.secgroup_list', 'nova.server_by_name', 'nova.server_list', 'nova.server_list_detailed', 'nova.server_show', 'nova.show', 'nova.suspend', 'nova.volume_attach', 'nova.volume_create', 'nova.volume_delete', 'nova.volume_detach', 'nova.volume_list', 'nova.volume_show', 'npm.cache_clean', 'npm.cache_list', 'npm.cache_path', 'npm.install', 'npm.list', 'npm.uninstall', 'ntp.get_servers', 'ntp.set_servers', 'nxos.add_config', 'nxos.check_password', 'nxos.check_role', 'nxos.check_upgrade_impact', 'nxos.cmd', 'nxos.config', 'nxos.delete_config', 'nxos.find', 'nxos.get_roles', 'nxos.get_user', 'nxos.grains', 'nxos.grains_refresh', 'nxos.ping', 'nxos.remove_user', 'nxos.replace', 'nxos.save_running_config', 'nxos.sendline', 'nxos.set_password', 'nxos.set_role', 'nxos.show', 'nxos.show_run', 'nxos.show_ver', 'nxos.system_info', 'nxos.unset_role', 'nxos.upgrade', 'nxos_api.config', 'nxos_api.rpc', 'nxos_api.show', 'nxos_upgrade.check_upgrade_impact', 'nxos_upgrade.upgrade', 'openscap.xccdf', 'openstack_config.delete', 'openstack_config.get', 'openstack_config.set', 'opsgenie.post_data', 'out.html_format', 'out.out_format', 'out.string_format', 'pagerduty.create_event', 'pagerduty.list_escalation_policies', 'pagerduty.list_incidents', 'pagerduty.list_maintenance_windows', 'pagerduty.list_policies', 'pagerduty.list_schedules', 'pagerduty.list_services', 'pagerduty.list_users', 'pagerduty.list_windows', 'pagerduty_util.create_or_update_resource', 'pagerduty_util.delete_resource', 'pagerduty_util.get_escalation_policies', 'pagerduty_util.get_resource', 'pagerduty_util.get_schedules', 'pagerduty_util.get_services', 'pagerduty_util.get_users', 'pagerduty_util.resource_absent', 'pagerduty_util.resource_present', 'pam.read_file', 'parallels.clone', 'parallels.delete', 'parallels.delete_snapshot', 'parallels.exec', 'parallels.exists', 'parallels.list_snapshots', 'parallels.list_vms', 'parallels.prlctl', 'parallels.prlsrvctl', 'parallels.reset', 'parallels.restart', 'parallels.revert_snapshot', 'parallels.snapshot', 'parallels.snapshot_id_to_name', 'parallels.snapshot_name_to_id', 'parallels.start', 'parallels.status', 'parallels.stop', 'peeringdb.get_fac', 'peeringdb.get_ix', 'peeringdb.get_ixfac', 'peeringdb.get_ixlan', 'peeringdb.get_ixpfx', 'peeringdb.get_net', 'peeringdb.get_netfac', 'peeringdb.get_netixlan', 'peeringdb.get_org', 'peeringdb.get_poc', 'pillar.data', 'pillar.ext', 'pillar.fetch', 'pillar.file_exists', 'pillar.filter_by', 'pillar.get', 'pillar.item', 'pillar.items', 'pillar.keys', 'pillar.ls', 'pillar.obfuscate', 'pillar.raw', 'pip.freeze', 'pip.install', 'pip.is_installed', 'pip.list', 'pip.list_all_versions', 'pip.list_freeze_parse', 'pip.list_upgrades', 'pip.uninstall', 'pip.upgrade', 'pip.upgrade_available', 'pip.version', 'pkg.compare_versions', 'pkg.genrepo', 'pkg.get_package_info', 'pkg.get_repo_data', 'pkg.install', 'pkg.latest_version', 'pkg.list_available', 'pkg.list_pkgs', 'pkg.list_upgrades', 'pkg.normalize_name', 'pkg.purge', 'pkg.refresh_db', 'pkg.remove', 'pkg.upgrade', 'pkg.upgrade_available', 'pkg.version', 'pkg_resource.add_pkg', 'pkg_resource.check_extra_requirements', 'pkg_resource.format_pkg_list', 'pkg_resource.format_version', 'pkg_resource.pack_sources', 'pkg_resource.parse_targets', 'pkg_resource.sort_pkglist', 'pkg_resource.stringify', 'pkg_resource.version', 'pkg_resource.version_clean', 'pkg_resource.version_compare', 'powercfg.get_disk_timeout', 'powercfg.get_hibernate_timeout', 'powercfg.get_monitor_timeout', 'powercfg.get_standby_timeout', 'powercfg.set_disk_timeout', 'powercfg.set_hibernate_timeout', 'powercfg.set_monitor_timeout', 'powercfg.set_standby_timeout', 'proxy.get_ftp_proxy', 'proxy.get_http_proxy', 'proxy.get_https_proxy', 'proxy.get_proxy_bypass', 'proxy.get_proxy_win', 'proxy.set_ftp_proxy', 'proxy.set_http_proxy', 'proxy.set_https_proxy', 'proxy.set_proxy_bypass', 'proxy.set_proxy_win', 'ps.boot_time', 'ps.cpu_percent', 'ps.cpu_times', 'ps.disk_io_counters', 'ps.disk_partition_usage', 'ps.disk_partitions', 'ps.disk_usage', 'ps.get_pid_list', 'ps.get_users', 'ps.kill_pid', 'ps.lsof', 'ps.netstat', 'ps.network_io_counters', 'ps.num_cpus', 'ps.pgrep', 'ps.pkill', 'ps.proc_info', 'ps.psaux', 'ps.ss', 'ps.status', 'ps.swap_memory', 'ps.top', 'ps.total_physical_memory', 'ps.virtual_memory', 'psget.avail_modules', 'psget.bootstrap', 'psget.get_repository', 'psget.install', 'psget.list_modules', 'psget.register_repository', 'psget.remove', 'psget.update', 'publish.full_data', 'publish.publish', 'publish.runner', 'pushover.post_message', 'pyenv.default', 'pyenv.do', 'pyenv.do_with_python', 'pyenv.install', 'pyenv.install_python', 'pyenv.is_installed', 'pyenv.list', 'pyenv.rehash', 'pyenv.uninstall_python', 'pyenv.update', 'pyenv.versions', 'random.get_str', 'random.hash', 'random.rand_int', 'random.sample', 'random.seed', 'random.shadow_hash', 'random.shuffle', 'random.str_encode', 'random_org.generateBlobs', 'random_org.generateDecimalFractions', 'random_org.generateGaussians', 'random_org.generateIntegers', 'random_org.generateStrings', 'random_org.generateUUIDs', 'random_org.getUsage', 'rdp.disable', 'rdp.disconnect_session', 'rdp.enable', 'rdp.get_session', 'rdp.list_sessions', 'rdp.logoff_session', 'rdp.status', 'reg.broadcast_change', 'reg.delete_key_recursive', 'reg.delete_value', 'reg.import_file', 'reg.key_exists', 'reg.list_keys', 'reg.list_values', 'reg.read_value', 'reg.set_value', 'reg.value_exists', 'rest_sample_utils.fix_outage', 'rest_sample_utils.get_test_string', 'restartcheck.restartcheck', 'ret.get_fun', 'ret.get_jid', 'ret.get_jids', 'ret.get_minions', 'rvm.do', 'rvm.gemset_copy', 'rvm.gemset_create', 'rvm.gemset_delete', 'rvm.gemset_empty', 'rvm.gemset_list', 'rvm.gemset_list_all', 'rvm.get', 'rvm.install', 'rvm.install_ruby', 'rvm.is_installed', 'rvm.list', 'rvm.reinstall_ruby', 'rvm.rubygems', 'rvm.set_default', 'rvm.wrapper', 's3.delete', 's3.get', 's3.head', 's3.put', 's6.available', 's6.full_restart', 's6.get_all', 's6.missing', 's6.reload', 's6.restart', 's6.start', 's6.status', 's6.stop', 's6.term', 'salt_proxy.configure_proxy', 'salt_proxy.is_running', 'salt_version.equal', 'salt_version.get_release_number', 'salt_version.greater_than', 'salt_version.less_than', 'saltcheck.parallel_scheck', 'saltcheck.report_highstate_tests', 'saltcheck.run_highstate_tests', 'saltcheck.run_state_tests', 'saltcheck.run_state_tests_ssh', 'saltcheck.run_test', 'saltcheck.state_apply', 'saltutil.clear_cache', 'saltutil.clear_job_cache', 'saltutil.cmd', 'saltutil.cmd_iter', 'saltutil.find_cached_job', 'saltutil.find_job', 'saltutil.is_running', 'saltutil.kill_all_jobs', 'saltutil.kill_job', 'saltutil.list_extmods', 'saltutil.mmodule', 'saltutil.pillar_refresh', 'saltutil.refresh_beacons', 'saltutil.refresh_grains', 'saltutil.refresh_matchers', 'saltutil.refresh_modules', 'saltutil.refresh_pillar', 'saltutil.regen_keys', 'saltutil.revoke_auth', 'saltutil.runner', 'saltutil.running', 'saltutil.signal_job', 'saltutil.sync_all', 'saltutil.sync_beacons', 'saltutil.sync_clouds', 'saltutil.sync_engines', 'saltutil.sync_executors', 'saltutil.sync_grains', 'saltutil.sync_log_handlers', 'saltutil.sync_matchers', 'saltutil.sync_modules', 'saltutil.sync_output', 'saltutil.sync_outputters', 'saltutil.sync_pillar', 'saltutil.sync_proxymodules', 'saltutil.sync_renderers', 'saltutil.sync_returners', 'saltutil.sync_sdb', 'saltutil.sync_serializers', 'saltutil.sync_states', 'saltutil.sync_thorium', 'saltutil.sync_utils', 'saltutil.term_all_jobs', 'saltutil.term_job', 'saltutil.update', 'saltutil.wheel', 'schedule.add', 'schedule.build_schedule_item', 'schedule.copy', 'schedule.delete', 'schedule.disable', 'schedule.disable_job', 'schedule.enable', 'schedule.enable_job', 'schedule.is_enabled', 'schedule.job_status', 'schedule.list', 'schedule.modify', 'schedule.move', 'schedule.postpone_job', 'schedule.purge', 'schedule.reload', 'schedule.run_job', 'schedule.save', 'schedule.show_next_fire_time', 'schedule.skip_job', 'scsi.ls', 'scsi.rescan_all', 'sdb.delete', 'sdb.get', 'sdb.get_or_set_hash', 'sdb.set', 'seed.apply', 'seed.mkconfig', 'seed.prep_bootstrap', 'serverdensity_device.create', 'serverdensity_device.delete', 'serverdensity_device.get_sd_auth', 'serverdensity_device.install_agent', 'serverdensity_device.ls', 'serverdensity_device.update', 'service.available', 'service.create', 'service.create_win_salt_restart_task', 'service.delete', 'service.disable', 'service.disabled', 'service.enable', 'service.enabled', 'service.execute_salt_restart_task', 'service.get_all', 'service.get_disabled', 'service.get_enabled', 'service.get_service_name', 'service.getsid', 'service.info', 'service.missing', 'service.modify', 'service.restart', 'service.start', 'service.status', 'service.stop', 'shadow.info', 'shadow.require_password_change', 'shadow.set_expire', 'shadow.set_password', 'shadow.unlock_account', 'shortcut.create', 'shortcut.get', 'shortcut.modify', 'slack.call_hook', 'slack.find_room', 'slack.find_user', 'slack.list_rooms', 'slack.list_users', 'slack.post_message', 'slsutil.banner', 'slsutil.boolstr', 'slsutil.deserialize', 'slsutil.dir_exists', 'slsutil.file_exists', 'slsutil.findup', 'slsutil.merge', 'slsutil.merge_all', 'slsutil.path_exists', 'slsutil.renderer', 'slsutil.serialize', 'slsutil.update', 'smtp.send_msg', 'solrcloud.alias_exists', 'solrcloud.alias_get_collections', 'solrcloud.alias_set_collections', 'solrcloud.cluster_status', 'solrcloud.collection_backup', 'solrcloud.collection_backup_all', 'solrcloud.collection_check_options', 'solrcloud.collection_create', 'solrcloud.collection_creation_options', 'solrcloud.collection_exists', 'solrcloud.collection_get_options', 'solrcloud.collection_list', 'solrcloud.collection_reload', 'solrcloud.collection_set_options', 'sqlite3.fetch', 'sqlite3.indexes', 'sqlite3.indices', 'sqlite3.modify', 'sqlite3.sqlite_version', 'sqlite3.tables', 'sqlite3.version', 'ssh.auth_keys', 'ssh.check_key', 'ssh.check_key_file', 'ssh.check_known_host', 'ssh.get_known_host_entries', 'ssh.hash_known_hosts', 'ssh.host_keys', 'ssh.key_is_encrypted', 'ssh.recv_known_host_entries', 'ssh.rm_auth_key', 'ssh.rm_auth_key_from_file', 'ssh.rm_known_host', 'ssh.set_auth_key', 'ssh.set_auth_key_from_file', 'ssh.set_known_host', 'ssh.user_keys', 'state.apply', 'state.check_request', 'state.clear_cache', 'state.clear_request', 'state.disable', 'state.enable', 'state.event', 'state.get_pauses', 'state.high', 'state.highstate', 'state.id_exists', 'state.list_disabled', 'state.low', 'state.orchestrate', 'state.pause', 'state.pkg', 'state.request', 'state.resume', 'state.run_request', 'state.running', 'state.show_highstate', 'state.show_low_sls', 'state.show_lowstate', 'state.show_sls', 'state.show_state_usage', 'state.show_states', 'state.show_top', 'state.single', 'state.sls', 'state.sls_exists', 'state.sls_id', 'state.soft_kill', 'state.template', 'state.template_str', 'state.test', 'state.top', 'status.cpuload', 'status.cpustats', 'status.diskusage', 'status.loadavg', 'status.master', 'status.meminfo', 'status.ping_master', 'status.procs', 'status.saltmem', 'status.time', 'status.uptime', 'status.vmstats', 'statuspage.create', 'statuspage.delete', 'statuspage.retrieve', 'statuspage.update', 'supervisord.add', 'supervisord.custom', 'supervisord.options', 'supervisord.remove', 'supervisord.reread', 'supervisord.restart', 'supervisord.start', 'supervisord.status', 'supervisord.status_bool', 'supervisord.status_raw', 'supervisord.stop', 'supervisord.update', 'svn.add', 'svn.checkout', 'svn.commit', 'svn.diff', 'svn.export', 'svn.info', 'svn.remove', 'svn.status', 'svn.switch', 'svn.update', 'swarm.joinswarm', 'swarm.leave_swarm', 'swarm.node_ls', 'swarm.remove_node', 'swarm.remove_service', 'swarm.service_create', 'swarm.swarm_init', 'swarm.swarm_service_info', 'swarm.swarm_tokens', 'swarm.update_node', 'sys.argspec', 'sys.doc', 'sys.list_functions', 'sys.list_modules', 'sys.list_renderers', 'sys.list_returner_functions', 'sys.list_returners', 'sys.list_runner_functions', 'sys.list_runners', 'sys.list_state_functions', 'sys.list_state_modules', 'sys.reload_modules', 'sys.renderer_doc', 'sys.returner_argspec', 'sys.returner_doc', 'sys.runner_argspec', 'sys.runner_doc', 'sys.state_argspec', 'sys.state_doc', 'sys.state_schema', 'syslog_ng.config', 'syslog_ng.config_test', 'syslog_ng.get_config_file', 'syslog_ng.modules', 'syslog_ng.reload', 'syslog_ng.set_binary_path', 'syslog_ng.set_config_file', 'syslog_ng.set_parameters', 'syslog_ng.start', 'syslog_ng.stats', 'syslog_ng.stop', 'syslog_ng.version', 'syslog_ng.write_config', 'syslog_ng.write_version', 'system.get_computer_desc', 'system.get_computer_description', 'system.get_computer_name', 'system.get_domain_workgroup', 'system.get_hostname', 'system.get_pending_component_servicing', 'system.get_pending_computer_name', 'system.get_pending_domain_join', 'system.get_pending_file_rename', 'system.get_pending_reboot', 'system.get_pending_reboot_details', 'system.get_pending_servermanager', 'system.get_pending_update', 'system.get_pending_windows_update', 'system.get_reboot_required_witnessed', 'system.get_system_date', 'system.get_system_info', 'system.get_system_time', 'system.halt', 'system.init', 'system.join_domain', 'system.lock', 'system.poweroff', 'system.reboot', 'system.set_computer_desc', 'system.set_computer_description', 'system.set_computer_name', 'system.set_domain_workgroup', 'system.set_hostname', 'system.set_reboot_required_witnessed', 'system.set_system_date', 'system.set_system_date_time', 'system.set_system_time', 'system.shutdown', 'system.shutdown_abort', 'system.shutdown_hard', 'system.start_time_service', 'system.stop_time_service', 'system.unjoin_domain', 'task.add_action', 'task.add_trigger', 'task.clear_triggers', 'task.create_folder', 'task.create_task', 'task.create_task_from_xml', 'task.delete_folder', 'task.delete_task', 'task.edit_task', 'task.info', 'task.list_actions', 'task.list_folders', 'task.list_tasks', 'task.list_triggers', 'task.run', 'task.run_wait', 'task.status', 'task.stop', 'telegram.post_message', 'telemetry.create_alarm', 'telemetry.delete_alarms', 'telemetry.get_alarms', 'telemetry.get_alert_config', 'telemetry.get_notification_channel_id', 'telemetry.update_alarm', 'temp.dir', 'temp.file', 'test.arg', 'test.arg_clean', 'test.arg_repr', 'test.arg_type', 'test.assertion', 'test.attr_call', 'test.collatz', 'test.conf_test', 'test.cross_test', 'test.deprecation_warning', 'test.echo', 'test.exception', 'test.false', 'test.fib', 'test.get_opts', 'test.kwarg', 'test.module_report', 'test.not_loaded', 'test.opts_pkg', 'test.outputter', 'test.ping', 'test.provider', 'test.providers', 'test.raise_exception', 'test.rand_sleep', 'test.rand_str', 'test.random_hash', 'test.retcode', 'test.sleep', 'test.stack', 'test.true', 'test.try', 'test.tty', 'test.version', 'test.versions', 'test.versions_information', 'test.versions_report', 'textfsm.extract', 'textfsm.index', 'timezone.get_hwclock', 'timezone.get_offset', 'timezone.get_zone', 'timezone.get_zonecode', 'timezone.list', 'timezone.set_hwclock', 'timezone.set_zone', 'timezone.zone_compare', 'tls.ca_exists', 'tls.cert_base_path', 'tls.cert_info', 'tls.create_ca', 'tls.create_ca_signed_cert', 'tls.create_csr', 'tls.create_empty_crl', 'tls.create_pkcs12', 'tls.create_self_signed_cert', 'tls.get_ca', 'tls.get_ca_signed_cert', 'tls.get_ca_signed_key', 'tls.get_expiration_date', 'tls.get_extensions', 'tls.maybe_fix_ssl_version', 'tls.revoke_cert', 'tls.set_ca_path', 'tls.validate', 'travisci.verify_webhook', 'uptime.check_exists', 'uptime.checks_list', 'uptime.create', 'uptime.delete', 'user.add', 'user.addgroup', 'user.chfullname', 'user.chgroups', 'user.chhome', 'user.chprofile', 'user.current', 'user.delete', 'user.getUserSid', 'user.get_user_sid', 'user.getent', 'user.info', 'user.list_groups', 'user.list_users', 'user.removegroup', 'user.rename', 'user.setpassword', 'user.update', 'vault.clear_token_cache', 'vault.delete_secret', 'vault.destroy_secret', 'vault.list_secrets', 'vault.read_secret', 'vault.write_raw', 'vault.write_secret', 'virtualenv.create', 'virtualenv.get_distribution_path', 'virtualenv.get_resource_content', 'virtualenv.get_resource_path', 'virtualenv.get_site_packages', 'virtualenv.virtualenv_ver', 'vsphere.add_capacity_to_diskgroup', 'vsphere.add_host_to_dvs', 'vsphere.add_license', 'vsphere.assign_default_storage_policy_to_datastore', 'vsphere.assign_license', 'vsphere.compare_vm_configs', 'vsphere.configure_host_cache', 'vsphere.create_cluster', 'vsphere.create_datacenter', 'vsphere.create_diskgroup', 'vsphere.create_dvportgroup', 'vsphere.create_dvs', 'vsphere.create_storage_policy', 'vsphere.create_vm', 'vsphere.create_vmfs_datastore', 'vsphere.delete_advanced_configs', 'vsphere.delete_vm', 'vsphere.disconnect', 'vsphere.erase_disk_partitions', 'vsphere.get_advanced_configs', 'vsphere.get_host_cache', 'vsphere.get_host_datetime', 'vsphere.get_ntp_config', 'vsphere.get_proxy_type', 'vsphere.get_service_instance_via_proxy', 'vsphere.get_service_policy', 'vsphere.get_service_running', 'vsphere.get_ssh_key', 'vsphere.get_vm', 'vsphere.get_vm_config', 'vsphere.get_vm_config_file', 'vsphere.get_vmotion_enabled', 'vsphere.get_vsan_eligible_disks', 'vsphere.get_vsan_enabled', 'vsphere.list_assigned_licenses', 'vsphere.list_capability_definitions', 'vsphere.list_cluster', 'vsphere.list_clusters', 'vsphere.list_datacenters', 'vsphere.list_datacenters_via_proxy', 'vsphere.list_datastore_clusters', 'vsphere.list_datastores', 'vsphere.list_datastores_via_proxy', 'vsphere.list_default_storage_policy_of_datastore', 'vsphere.list_default_vsan_policy', 'vsphere.list_disk_partitions', 'vsphere.list_diskgroups', 'vsphere.list_disks', 'vsphere.list_dvportgroups', 'vsphere.list_dvs', 'vsphere.list_dvss', 'vsphere.list_folders', 'vsphere.list_hosts', 'vsphere.list_hosts_via_proxy', 'vsphere.list_licenses', 'vsphere.list_networks', 'vsphere.list_non_ssds', 'vsphere.list_resourcepools', 'vsphere.list_ssds', 'vsphere.list_storage_policies', 'vsphere.list_uplink_dvportgroup', 'vsphere.list_vapps', 'vsphere.list_vms', 'vsphere.power_off_vm', 'vsphere.power_on_vm', 'vsphere.register_vm', 'vsphere.remove_capacity_from_diskgroup', 'vsphere.remove_datastore', 'vsphere.remove_diskgroup', 'vsphere.remove_dvportgroup', 'vsphere.rename_datastore', 'vsphere.service_restart', 'vsphere.service_start', 'vsphere.service_stop', 'vsphere.set_advanced_configs', 'vsphere.set_ntp_config', 'vsphere.set_service_policy', 'vsphere.system_info', 'vsphere.test_vcenter_connection', 'vsphere.unregister_vm', 'vsphere.update_cluster', 'vsphere.update_dvportgroup', 'vsphere.update_dvs', 'vsphere.update_host_datetime', 'vsphere.update_host_password', 'vsphere.update_storage_policy', 'vsphere.update_vm', 'vsphere.upload_ssh_key', 'vsphere.vmotion_disable', 'vsphere.vmotion_enable', 'vsphere.vsan_add_disks', 'vsphere.vsan_disable', 'vsphere.vsan_enable', 'win_dacl.add_ace', 'win_dacl.check_ace', 'win_dacl.check_inheritance', 'win_dacl.disable_inheritance', 'win_dacl.enable_inheritance', 'win_dacl.get', 'win_dacl.rm_ace', 'win_dns_client.add_dns', 'win_dns_client.dns_dhcp', 'win_dns_client.get_dns_config', 'win_dns_client.get_dns_servers', 'win_dns_client.rm_dns', 'win_event.add', 'win_event.clear', 'win_event.count', 'win_event.get', 'win_event.get_filtered', 'win_event.get_log_names', 'win_event.query', 'win_iis.create_app', 'win_iis.create_apppool', 'win_iis.create_backup', 'win_iis.create_binding', 'win_iis.create_cert_binding', 'win_iis.create_site', 'win_iis.create_vdir', 'win_iis.get_container_setting', 'win_iis.get_webapp_settings', 'win_iis.get_webconfiguration_settings', 'win_iis.list_apppools', 'win_iis.list_apps', 'win_iis.list_backups', 'win_iis.list_bindings', 'win_iis.list_cert_bindings', 'win_iis.list_sites', 'win_iis.list_vdirs', 'win_iis.list_worker_processes', 'win_iis.modify_binding', 'win_iis.modify_site', 'win_iis.remove_app', 'win_iis.remove_apppool', 'win_iis.remove_backup', 'win_iis.remove_binding', 'win_iis.remove_cert_binding', 'win_iis.remove_site', 'win_iis.remove_vdir', 'win_iis.restart_apppool', 'win_iis.restart_site', 'win_iis.set_container_setting', 'win_iis.set_webapp_settings', 'win_iis.set_webconfiguration_settings', 'win_iis.start_apppool', 'win_iis.start_site', 'win_iis.stop_apppool', 'win_iis.stop_site', 'win_path.add', 'win_path.exists', 'win_path.get_path', 'win_path.rehash', 'win_path.remove', 'win_pki.export_cert', 'win_pki.get_cert_file', 'win_pki.get_certs', 'win_pki.get_stores', 'win_pki.import_cert', 'win_pki.remove_cert', 'win_pki.test_cert', 'win_servermanager.install', 'win_servermanager.list_available', 'win_servermanager.list_installed', 'win_servermanager.remove', 'win_smtp_server.get_connection_ip_list', 'win_smtp_server.get_log_format', 'win_smtp_server.get_log_format_types', 'win_smtp_server.get_relay_ip_list', 'win_smtp_server.get_server_setting', 'win_smtp_server.get_servers', 'win_smtp_server.set_connection_ip_list', 'win_smtp_server.set_log_format', 'win_smtp_server.set_relay_ip_list', 'win_smtp_server.set_server_setting', 'win_snmp.get_agent_service_types', 'win_snmp.get_agent_settings', 'win_snmp.get_auth_traps_enabled', 'win_snmp.get_community_names', 'win_snmp.get_permission_types', 'win_snmp.set_agent_settings', 'win_snmp.set_auth_traps_enabled', 'win_snmp.set_community_names', 'winrepo.genrepo', 'winrepo.show_sls', 'winrepo.update_git_repos', 'wusa.install', 'wusa.is_installed', 'wusa.list', 'wusa.uninstall', 'xml.get_attribute', 'xml.get_value', 'xml.set_attribute', 'xml.set_value', 'yaml.lint', 'zabbix.apiinfo_version', 'zabbix.compare_params', 'zabbix.configuration_import', 'zabbix.get_object_id_by_params', 'zabbix.get_zabbix_id_mapper', 'zabbix.host_create', 'zabbix.host_delete', 'zabbix.host_exists', 'zabbix.host_get', 'zabbix.host_inventory_get', 'zabbix.host_inventory_set', 'zabbix.host_list', 'zabbix.host_update', 'zabbix.hostgroup_create', 'zabbix.hostgroup_delete', 'zabbix.hostgroup_exists', 'zabbix.hostgroup_get', 'zabbix.hostgroup_list', 'zabbix.hostgroup_update', 'zabbix.hostinterface_create', 'zabbix.hostinterface_delete', 'zabbix.hostinterface_get', 'zabbix.hostinterface_update', 'zabbix.mediatype_create', 'zabbix.mediatype_delete', 'zabbix.mediatype_get', 'zabbix.mediatype_update', 'zabbix.run_query', 'zabbix.substitute_params', 'zabbix.template_get', 'zabbix.user_addmedia', 'zabbix.user_create', 'zabbix.user_delete', 'zabbix.user_deletemedia', 'zabbix.user_exists', 'zabbix.user_get', 'zabbix.user_getmedia', 'zabbix.user_list', 'zabbix.user_update', 'zabbix.usergroup_create', 'zabbix.usergroup_delete', 'zabbix.usergroup_exists', 'zabbix.usergroup_get', 'zabbix.usergroup_list', 'zabbix.usergroup_update', 'zabbix.usermacro_create', 'zabbix.usermacro_createglobal', 'zabbix.usermacro_delete', 'zabbix.usermacro_deleteglobal', 'zabbix.usermacro_get', 'zabbix.usermacro_update', 'zabbix.usermacro_updateglobal', 'zenoss.add_device', 'zenoss.device_exists', 'zenoss.find_device', 'zenoss.set_prod_state']
FAILED tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_script - AssertionError: '' != 'saltines crackers biscuits=yes'
+ saltines crackers biscuits=yes
FAILED tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_script_cwd - AssertionError: '' != 'saltines crackers biscuits=yes'
+ saltines crackers biscuits=yes
FAILED tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_script_cwd_with_space - AssertionError: '' != 'saltines crackers biscuits=yes'
+ saltines crackers biscuits=yes
FAILED tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_script_query_string - AssertionError: '' != 'saltines crackers biscuits=yes'
+ saltines crackers biscuits=yes
FAILED tests/integration/modules/test_cmdmod.py::CMDModuleTest::test_script_retcode - AssertionError: 1 != 0
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_cache_file - FileNotFoundError: [Errno 2] No such file or directory: ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_cache_files - FileNotFoundError: [Errno 2] No such file or directory: ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_from_env_in_url - AssertionError: 'Gromit' not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_from_env_predefined - AssertionError: 'Gromit' not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_gzipped - AssertionError: '4a30f9fd9ee951b43be69ecfc4d1407213972ef08c1898053115a24b6b1385d5' != 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
- 4a30f9fd9ee951b43be69ecfc4d1407213972ef08c1898053115a24b6b1385d5
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_makedirs - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_str_salt - TypeError: argument of type 'bool' is not iterable
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_to_dir - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_template - AssertionError: 'bacon' not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_url - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_dest_empty - FileNotFoundError: [Errno 2] No such file or directory: ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_makedirs - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_no_dest - AssertionError: WARNING(SHOULD NOT HAPPEN #1935): Failed to get 'cp.get_url' from the minion 'minion'. Command output: {'minion': None}
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_to_dir - AssertionError: "KNIGHT:  They're nervous, sire." not found in ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_hash_file - FileNotFoundError: [Errno 2] No such file or directory: ''
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_is_cached - AssertionError: '' is not true
FAILED tests/integration/modules/test_cp.py::CPModuleTest::test_list_minion - AssertionError: False is not true
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_command_success_nonzero_retcode_false - AssertionError: "'runtests_decorators.command_success_nonzero_retcode_false' is not available." is not True
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_command_success_nonzero_retcode_true - AssertionError: "'runtests_decorators.command_success_nonzero_retcode_true' is not available." is not True
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_command_success_retcode - AssertionError: "'runtests_decorators.command_success_retcode' is not available." is not True
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_depends - AssertionError: False is not true
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_depends_will_not_fallback - AssertionError: False is not true
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_missing_depends - AssertionError: {'runtests_decorators.missing_depends_wil[111 chars]le."} != "'runtests_decorators.missing_depends' is not available."
FAILED tests/integration/modules/test_decorators.py::DecoratorTest::test_missing_depends_will_fallback - AssertionError: Second sequence is not a list: "'runtests_decorators.missing_depends_will_fallback' is not available."

Test Salt / Windows X integration zeromq 4

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706314038

Tests summary
FAILED tests/pytests/integration/cli/test_salt.py::test_minion_65400 - assert False
 +  where False = isinstance(["No matching sls found for 'test_65400' in env 'base'"], dict)
FAILED tests/pytests/integration/cli/test_salt_call.py::test_issue_6973_state_highstate_exit_code - assert 'No states found for this minion' in '{\n"local": [\n"No matching sls found for \'master_tops_test\' in env \'base\'"\n]\n}\n'
 +  where '{\n"local": [\n"No matching sls found for \'master_tops_test\' in env \'base\'"\n]\n}\n' = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'master_tops_test\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-nMMETc\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', '--retcode-passthrough', 'state.highstate'], data_key=None, data=["No matching sls found for 'master_tops_test' in env 'base'"]).stdout
FAILED tests/pytests/integration/cli/test_salt_call.py::test_masterless_highstate - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"Traceback (most recent call last):\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\state.py\\", line 4817, in call_highstate\\n    top = self.get_top()\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\state.py\\", line 4251, in get_top\\n    tops = self.get_tops(context=context)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\state.py\\", line 3927, in get_tops\\n    contents = self.client.cache_file(self.opts[\\"state_top\\"], saltenv)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileclient.py\\", line 190, in cache_file\\n    return self.get_url(\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileclient.py\\", line 519, in get_url\\n    result = self.get_file(url, dest, makedirs, saltenv, cachedir=cachedir)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileclient.py\\", line 1274, in get_file\\n    data = self._channel_send(\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileclient.py\\", line 1151, in _channel_send\\n    return self.channel.send(\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileserver\\\\__init__.py\\", line 879, in send\\n    return getattr(self.fs, cmd)(load)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileserver\\\\__init__.py\\", line 618, in serve_file\\n    return self.servers[fstr](load, fnd)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\loader\\\\lazy.py\\", line 159, in __call__\\n    ret = self.loader.run(run_func, *args, **kwargs)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\loader\\\\lazy.py\\", line 1245, in run\\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\loader\\\\lazy.py\\", line 1260, in _run_as\\n    ret = _func_or_method(*args, **kwargs)\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\fileserver\\\\roots.py\\", line 154, in serve_file\\n    if salt.utils.verify.clean_path(\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\Lib\\\\site-packages\\\\salt\\\\utils\\\\verify.py\\", line 533, in clean_path\\n    if os.path.commonpath([path, root]) == root:\\n  File \\"D:\\\\a\\\\salt\\\\salt\\\\artifacts\\\\salt\\\\lib\\\\ntpath.py\\", line 807, in commonpath\\n    raise ValueError(\\"Paths don\'t have the same drive\\")\\nValueError: Paths don\'t have the same drive\\n"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-nMMETc\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', '--local', 'state.highstate'], data_key=None, data=['Traceback (most recent call last):\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4817, in call_highstate\n    top = self.get_top()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4251, in get_top\n    tops = self.get_tops(context=context)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 3927, in get_tops\n    contents = self.client.cache_file(self.opts["state_top"], saltenv)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 190, in cache_file\n    return self.get_url(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 519, in get_url\n    result = self.get_file(url, dest, makedirs, saltenv, cachedir=cachedir)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1274, in get_file\n    data = self._channel_send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1151, in _channel_send\n    return self.channel.send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 879, in send\n    return getattr(self.fs, cmd)(load)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 618, in serve_file\n    return self.servers[fstr](load, fnd)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\roots.py", line 154, in serve_file\n    if salt.utils.verify.clean_path(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\utils\\verify.py", line 533, in clean_path\n    if os.path.commonpath([path, root]) == root:\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\lib\\ntpath.py", line 807, in commonpath\n    raise ValueError("Paths don\'t have the same drive")\nValueError: Paths don\'t have the same drive\n']).returncode
FAILED tests/pytests/integration/cli/test_salt_key.py::test_list_all - AssertionError: assert {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2'], 'minions_pre': [], 'minions_rejected': [], 'minions_denied': []} == {'minions_rejected': [], 'minions_denied': [], 'minions_pre': [], 'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Common items:
  {'minions_denied': [], 'minions_pre': [], 'minions_rejected': []}
  Differing items:
  {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2']} != {'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Full diff:
    {
        'minions': [
  +         'minion-2',
            'minion-nMMETc',
            'sub-minion-enbbh2',
        ],
        'minions_denied': [],
        'minions_pre': [],
        'minions_rejected': [],
    }
FAILED tests/pytests/integration/cli/test_salt_key.py::test_list_all_yaml_out - AssertionError: assert {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2'], 'minions_denied': [], 'minions_pre': [], 'minions_rejected': []} == {'minions_rejected': [], 'minions_denied': [], 'minions_pre': [], 'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Common items:
  {'minions_denied': [], 'minions_pre': [], 'minions_rejected': []}
  Differing items:
  {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2']} != {'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Full diff:
    {
        'minions': [
  +         'minion-2',
            'minion-nMMETc',
            'sub-minion-enbbh2',
        ],
        'minions_denied': [],
        'minions_pre': [],
        'minions_rejected': [],
    }
FAILED tests/pytests/integration/cli/test_salt_key.py::test_list_all_raw_out - AssertionError: assert {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2'], 'minions_pre': [], 'minions_rejected': [], 'minions_denied': []} == {'minions_rejected': [], 'minions_denied': [], 'minions_pre': [], 'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Common items:
  {'minions_denied': [], 'minions_pre': [], 'minions_rejected': []}
  Differing items:
  {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2']} != {'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Full diff:
    {
        'minions': [
  +         'minion-2',
            'minion-nMMETc',
            'sub-minion-enbbh2',
        ],
        'minions_denied': [],
        'minions_pre': [],
        'minions_rejected': [],
    }
FAILED tests/pytests/integration/cli/test_salt_key.py::test_list_acc - AssertionError: assert {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2']} == {'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Differing items:
  {'minions': ['minion-2', 'minion-nMMETc', 'sub-minion-enbbh2']} != {'minions': ['minion-nMMETc', 'sub-minion-enbbh2']}
  
  Full diff:
    {
        'minions': [
  +         'minion-2',
            'minion-nMMETc',
            'sub-minion-enbbh2',
        ],
    }

Test Salt / Windows X integration zeromq 6

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706325896

Tests summary
FAILED tests/pytests/integration/modules/saltutil/test_modules.py::test_sync_all - AssertionError: assert {'clouds': [], 'beacons': [], 'modules': [], 'states': [], 'sdb': [], 'grains': [], 'renderers': [], 'returners': [], 'output': [], 'utils': [], 'log_handlers': [], 'executors': [], 'proxymodules': [], 'engines': [], 'thorium': [], 'serializers': [], 'matchers': []} == {'engines': [], 'clouds': [], 'grains': [], 'beacons': [], 'utils': [], 'returners': [], 'modules': ['modules.depends_versioned', 'modules.depends_versionless', 'modules.override_test', 'modules.runtests_decorators', 'modules.runtests_helpers', 'modules.salttest'], 'renderers': [], 'log_handlers': [], 'matchers': [], 'states': [], 'sdb': [], 'proxymodules': [], 'executors': [], 'output': [], 'thorium': [], 'serializers': []}
  
  Common items:
  {'beacons': [],
   'clouds': [],
   'engines': [],
   'executors': [],
   'grains': [],
   'log_handlers': [],
   'matchers': [],
   'output': [],
   'proxymodules': [],
   'renderers': [],
   'returners': [],
   'sdb': [],
   'serializers': [],
   'states': [],
   'thorium': [],
   'utils': []}
  Differing items:
  {'modules': []} != {'modules': ['modules.depends_versioned', 'modules.depends_versionless', 'modules.override_test', 'modules.runtests_decorators', 'modules.runtests_helpers', 'modules.salttest']}
  
  Full diff:
    {
        'beacons': [],
        'clouds': [],
        'engines': [],
        'executors': [],
        'grains': [],
        'log_handlers': [],
        'matchers': [],
  -     'modules': [
  +     'modules': [],
  ?                 ++
  -         'modules.depends_versioned',
  -         'modules.depends_versionless',
  -         'modules.override_test',
  -         'modules.runtests_decorators',
  -         'modules.runtests_helpers',
  -         'modules.salttest',
  -     ],
        'output': [],
        'proxymodules': [],
        'renderers': [],
        'returners': [],
        'sdb': [],
        'serializers': [],
        'states': [],
        'thorium': [],
        'utils': [],
    }
FAILED tests/pytests/integration/modules/saltutil/test_modules.py::test_sync_all_whitelist - AssertionError: assert {'clouds': [], 'beacons': [], 'modules': [], 'states': [], 'sdb': [], 'grains': [], 'renderers': [], 'returners': [], 'output': [], 'utils': [], 'log_handlers': [], 'executors': [], 'proxymodules': [], 'engines': [], 'thorium': [], 'serializers': [], 'matchers': []} == {'engines': [], 'clouds': [], 'grains': [], 'beacons': [], 'utils': [], 'returners': [], 'modules': ['modules.salttest'], 'renderers': [], 'log_handlers': [], 'matchers': [], 'states': [], 'sdb': [], 'proxymodules': [], 'executors': [], 'output': [], 'thorium': [], 'serializers': []}
  
  Common items:
  {'beacons': [],
   'clouds': [],
   'engines': [],
   'executors': [],
   'grains': [],
   'log_handlers': [],
   'matchers': [],
   'output': [],
   'proxymodules': [],
   'renderers': [],
   'returners': [],
   'sdb': [],
   'serializers': [],
   'states': [],
   'thorium': [],
   'utils': []}
  Differing items:
  {'modules': []} != {'modules': ['modules.salttest']}
  
  Full diff:
    {
        'beacons': [],
        'clouds': [],
        'engines': [],
        'executors': [],
        'grains': [],
        'log_handlers': [],
        'matchers': [],
  -     'modules': [
  +     'modules': [],
  ?                 ++
  -         'modules.salttest',
  -     ],
        'output': [],
        'proxymodules': [],
        'renderers': [],
        'returners': [],
        'sdb': [],
        'serializers': [],
        'states': [],
        'thorium': [],
        'utils': [],
    }
FAILED tests/pytests/integration/modules/saltutil/test_modules.py::test_sync_all_blacklist - AssertionError: assert {'clouds': [], 'beacons': [], 'modules': [], 'states': [], 'sdb': [], 'grains': [], 'renderers': [], 'returners': [], 'output': [], 'utils': [], 'log_handlers': [], 'executors': [], 'proxymodules': [], 'engines': [], 'thorium': [], 'serializers': [], 'matchers': []} == {'engines': [], 'clouds': [], 'grains': [], 'beacons': [], 'utils': [], 'returners': [], 'modules': ['modules.override_test', 'modules.runtests_helpers', 'modules.salttest'], 'renderers': [], 'log_handlers': [], 'matchers': [], 'states': [], 'sdb': [], 'proxymodules': [], 'executors': [], 'output': [], 'thorium': [], 'serializers': []}
  
  Common items:
  {'beacons': [],
   'clouds': [],
   'engines': [],
   'executors': [],
   'grains': [],
   'log_handlers': [],
   'matchers': [],
   'output': [],
   'proxymodules': [],
   'renderers': [],
   'returners': [],
   'sdb': [],
   'serializers': [],
   'states': [],
   'thorium': [],
   'utils': []}
  Differing items:
  {'modules': []} != {'modules': ['modules.override_test', 'modules.runtests_helpers', 'modules.salttest']}
  
  Full diff:
    {
        'beacons': [],
        'clouds': [],
        'engines': [],
        'executors': [],
        'grains': [],
        'log_handlers': [],
        'matchers': [],
  -     'modules': [
  +     'modules': [],
  ?                 ++
  -         'modules.override_test',
  -         'modules.runtests_helpers',
  -         'modules.salttest',
  -     ],
        'output': [],
        'proxymodules': [],
        'renderers': [],
        'returners': [],
        'sdb': [],
        'serializers': [],
        'states': [],
        'thorium': [],
        'utils': [],
    }

Test Salt / Windows X integration zeromq 7

https://github.com/saltstack/salt/actions/runs/12800782090/job/35706332095

Tests summary
ERROR tests/pytests/integration/states/test_file.py::test_patch_single_file - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_directory - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_strip_parsing - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_saltenv - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_single_file_failure - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_directory_failure - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_single_file_template - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_directory_template - packaging.version.InvalidVersion: Invalid version: 'Copyright'
ERROR tests/pytests/integration/states/test_file.py::test_patch_test_mode - packaging.version.InvalidVersion: Invalid version: 'Copyright'
FAILED tests/pytests/integration/states/test_file.py::test_contents_pillar_with_pillar_list - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'file-contents-pillar\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', 'state.sls', 'file-contents-pillar'], data_key=None, data=["No matching sls found for 'file-contents-pillar' in env 'base'"]).returncode
FAILED tests/pytests/integration/states/test_file.py::test_managed_file_with_pillar_sls - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'file-pillar-get\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', 'state.sls', 'file-pillar-get'], data_key=None, data=["No matching sls found for 'file-pillar-get' in env 'base'"]).returncode
FAILED tests/pytests/integration/states/test_file.py::test_issue_50221 - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'issue-50221\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', 'state.apply', 'issue-50221', 'pillar={"target-path": "C:\\\\Users\\\\runneradmin\\\\AppData\\\\Local\\\\Temp\\\\pytest-of-runneradmin\\\\pytest-1\\\\test_issue_502210\\\\issue-50221-target.txt"}'], data_key=None, data=["No matching sls found for 'issue-50221' in env 'base'"]).returncode
FAILED tests/pytests/integration/states/test_file.py::test_recurse - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'file_recurse_test\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', 'state.apply', 'file_recurse_test'], data_key=None, data=["No matching sls found for 'file_recurse_test' in env 'base'"]).returncode
FAILED tests/pytests/integration/states/test_file.py::test_issue_62117 - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='', stderr='An un-handled exception was caught: Paths don\'t have the same drive\nTraceback (most recent call last):\n  File "C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py", line 26, in <module>\n    main()\n  File "C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py", line 21, in main\n    salt_call()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\scripts.py", line 444, in salt_call\n    client.run()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\call.py", line 50, in run\n    caller.run()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\caller.py", line 95, in run\n    ret = self.call()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\caller.py", line 200, in call\n    ret["return"] = self.minion.executors[fname](\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\executors\\direct_call.py", line 10, in execute\n    return func(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\modules\\state.py", line 834, in apply_\n    return sls(mods, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\modules\\state.py", line 1467, in sls\n    high_, errors = st_.render_highstate({opts["saltenv"]: mods})\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4701, in render_highstate\n    state, errors = self.render_state(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4335, in render_state\n    state_data = self.client.get_state(sls, saltenv)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 404, in get_state\n    dest = self.cache_file(path, saltenv, cachedir=cachedir)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 190, in cache_file\n    return self.get_url(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 519, in get_url\n    result = self.get_file(url, dest, makedirs, saltenv, cachedir=cachedir)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1274, in get_file\n    data = self._channel_send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1151, in _channel_send\n    return self.channel.send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 879, in send\n    return getattr(self.fs, cmd)(load)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 618, in serve_file\n    return self.servers[fstr](load, fnd)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\roots.py", line 154, in serve_file\n    if salt.utils.verify.clean_path(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\utils\\verify.py", line 533, in clean_path\n    if os.path.commonpath([path, root]) == root:\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\lib\\ntpath.py", line 807, in commonpath\n    raise ValueError("Paths don\'t have the same drive")\nValueError: Paths don\'t have the same drive\n', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', '--local', 'state.apply', 'test_jinja.issue-62117'], data_key=None, data=None).returncode
FAILED tests/pytests/integration/states/test_file.py::test_issue_62611 - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='', stderr='An un-handled exception was caught: Paths don\'t have the same drive\nTraceback (most recent call last):\n  File "C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py", line 26, in <module>\n    main()\n  File "C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py", line 21, in main\n    salt_call()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\scripts.py", line 444, in salt_call\n    client.run()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\call.py", line 50, in run\n    caller.run()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\caller.py", line 95, in run\n    ret = self.call()\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\cli\\caller.py", line 200, in call\n    ret["return"] = self.minion.executors[fname](\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\executors\\direct_call.py", line 10, in execute\n    return func(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\modules\\state.py", line 834, in apply_\n    return sls(mods, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\modules\\state.py", line 1467, in sls\n    high_, errors = st_.render_highstate({opts["saltenv"]: mods})\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4701, in render_highstate\n    state, errors = self.render_state(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\state.py", line 4335, in render_state\n    state_data = self.client.get_state(sls, saltenv)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 404, in get_state\n    dest = self.cache_file(path, saltenv, cachedir=cachedir)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 190, in cache_file\n    return self.get_url(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 519, in get_url\n    result = self.get_file(url, dest, makedirs, saltenv, cachedir=cachedir)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1274, in get_file\n    data = self._channel_send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileclient.py", line 1151, in _channel_send\n    return self.channel.send(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 879, in send\n    return getattr(self.fs, cmd)(load)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\__init__.py", line 618, in serve_file\n    return self.servers[fstr](load, fnd)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 159, in __call__\n    ret = self.loader.run(run_func, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1245, in run\n    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\loader\\lazy.py", line 1260, in _run_as\n    ret = _func_or_method(*args, **kwargs)\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\fileserver\\roots.py", line 154, in serve_file\n    if salt.utils.verify.clean_path(\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\Lib\\site-packages\\salt\\utils\\verify.py", line 533, in clean_path\n    if os.path.commonpath([path, root]) == root:\n  File "D:\\a\\salt\\salt\\artifacts\\salt\\lib\\ntpath.py", line 807, in commonpath\n    raise ValueError("Paths don\'t have the same drive")\nValueError: Paths don\'t have the same drive\n', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', '--local', 'state.apply', 'test_jinja.issue-62611'], data_key=None, data=None).returncode
FAILED tests/pytests/integration/states/test_file.py::test_contents_file - assert 1 == 0
 +  where 1 = ProcessResult(returncode=1, stdout='{\n"local": [\n"No matching sls found for \'file-contents\' in env \'base\'"\n]\n}\n', stderr='', cmdline=['D:\\a\\salt\\salt\\.nox\\ci-test-onedir\\Scripts\\python.EXE', 'C:\\Windows\\Temp\\stsuite\\scripts\\cli_salt_call.py', '--config-dir=C:\\Windows\\Temp\\stsuite\\minion-999vBm\\conf', '--timeout=30', '--out=json', '--out-indent=0', '--log-level=critical', 'state.sls', 'file-contents'], data_key=None, data=["No matching sls found for 'file-contents' in env 'base'"]).returncode
FAILED tests/pytests/integration/states/test_ini_manage.py::test_options_present - TypeError: 'NoneType' object is not iterable

@barneysowood
Copy link
Contributor Author

Not going to try fixing "Test Salt / Windows X unit zeromq 3" that's:

  • FAILED tests/pytests/unit/modules/win_lgpo/test__policy_info.py::test_sidConversion_administrator - pywintypes.error: (1332, 'LookupAccountName', 'No mapping between account names and security IDs was done.')
  • FAILED tests/pytests/unit/modules/win_lgpo/test__policy_info.py::test_usernamesToSidObjects_string_list - pywintypes.error: (1332, 'LookupAccountName', 'No mapping between account names and security IDs was done.')

Suspect that it is a similar situation to #67147 but I don't understand entirely what the tests are trying to test for and whether testing with the users the tests run as rather than Administrator is a valid test - probably one for @twangboy

@barneysowood
Copy link
Contributor Author

Taking a look at "Test Salt / Windows X functional zeromq 1":

FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[powershell] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese
FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[pwsh] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese

as I also like cheese.

@barneysowood
Copy link
Contributor Author

Taking a look at "Test Salt / Windows X functional zeromq 1":

FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[powershell] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese
FAILED tests/pytests/functional/modules/cmd/test_script.py::test_windows_script_args_powershell[pwsh] - AssertionError: assert '' == 'i like cheese'
  
  - i like cheese

as I also like cheese.

Oh, hold on looks like that should have been fixed in #67148. Ah sorry, looks like the CI run I was checking didn't have all of @twangboy's latest PRs in. Will go back and check and update the list.

@barneysowood
Copy link
Contributor Author

Ok, so I can only obviously match recent PRs to:

@barneysowood
Copy link
Contributor Author

Looking at "Test Salt / Windows X functional zeromq 3" - tests/pytests/functional/states/file/test__check_directory_win.py

That's an issue in the temp_path fixture:

>       assert win_dacl.get_owner(obj_name=str(test_dir)) == current_user
E       AssertionError: assert 'Administrators' == 'runneradmin'

Not sure how that would ever have worked as the owner of the test_dir is Administrators the group not the user. Doing a bit more digging on that.

@barneysowood
Copy link
Contributor Author

Looking at "Test Salt / Windows X functional zeromq 3" - tests/pytests/functional/states/file/test__check_directory_win.py

That's an issue in the temp_path fixture:

>       assert win_dacl.get_owner(obj_name=str(test_dir)) == current_user
E       AssertionError: assert 'Administrators' == 'runneradmin'

Not sure how that would ever have worked as the owner of the test_dir is Administrators the group not the user. Doing a bit more digging on that.

Fix for that in #67163. Works locally, just waiting for CI run to check it now passes here.

@barneysowood
Copy link
Contributor Author

Starting to look at "Test Salt / Windows 2019 integration zeromq 1":

FAILED tests/integration/grains/test_custom.py::TestGrainsCore::test_grains_passed_to_custom_grain - AssertionError: '' != 'itworked'

@barneysowood
Copy link
Contributor Author

Starting to look at "Test Salt / Windows 2019 integration zeromq 1":

FAILED tests/integration/grains/test_custom.py::TestGrainsCore::test_grains_passed_to_custom_grain - AssertionError: '' != 'itworked'

This is the test:

    @pytest.mark.slow_test
    def test_grains_passed_to_custom_grain(self):
        """
        test if current grains are passed to grains module functions that have a grains argument
        """
        self.assertEqual(
            self.run_function("grains.get", ["custom_grain_test"]), "itworked"
        )

the custom grain from tests/integration/files/file/base/_grains/custom_grains.py looks like this:

def test(grains):
    return {"custom_grain_test": "itworked" if "os" in grains else "itdidntwork"}

so the '' on the left side of the assert, indicates that the custom_grains module isn't getting loaded. Need to work out why that is.

@barneysowood
Copy link
Contributor Author

Not sure how that would ever have worked as the owner of the test_dir is Administrators the group not the user. Doing a bit more digging on that.

Fix for that in #67163. Works locally, just waiting for CI run to check it now passes here.

My fix is superseded by @twangboy's more comprehensive re-work in #67165

@barneysowood
Copy link
Contributor Author

Ok in "Test Salt / Windows 2019 integration zeromq 1", there are various failures in non-pytest integration tests that rely on modules and files from tests/integration/files/file/base, eg

  • tests/integration/modules/test_cmdmod.py::CMDModuleTest::*
  • tests/integration/modules/test_cp.py::CPModuleTest::*

Looking at the errors, for the cmdmod tests I'm seeing "cache_error": True and the cp tests are showing file not found. Suspect that the salt fileserver isn't getting setup correctly for these integration tests on windows.. have run out of time to work on this today however.

@barneysowood
Copy link
Contributor Author

Ok, so looks like the issue with integration tests is caused by the fact that pytest-salt-factories defaults to using C:\Windows\Temp for the salt_factories_default_root_dir. In the testsuite in tests/conftest.py:salt_factories_default_root_dir() that's the used to give a final value of C:\Windows\Temp\stsuite..

When pytest-salt-factories fixtures for salt-masters/minions etc are used, root dirs for each of those is created below that directory and for each instance, various file_roots are created.

The issue comes with the integration tests that use files (mainly modules) from the git checkout - that's in D:\a\salt\salt, so they are under that parent.

The fact they are on different drives causes the fileserver to throw an exception:

16:01:30,027 [salt.master                                                         :1933][ERROR   ][MWorker-0(1276)] [SaltMaster(id='master-PeY1oA')] Error in function _serve_file:
Traceback (most recent call last):
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\master.py", line 1927, in run_func
    ret = getattr(self, func)(load)
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\fileserver\__init__.py", line 618, in serve_file
    return self.servers[fstr](load, fnd)
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\loader\lazy.py", line 159, in __call__
    ret = self.loader.run(run_func, *args, **kwargs)
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\loader\lazy.py", line 1245, in run
    return self._last_context.run(self._run_as, _func_or_method, *args, **kwargs)
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\loader\lazy.py", line 1260, in _run_as
    ret = _func_or_method(*args, **kwargs)
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\fileserver\roots.py", line 154, in serve_file
    if salt.utils.verify.clean_path(
  File "D:\a\salt\salt\artifacts\salt\Lib\site-packages\salt\utils\verify.py", line 533, in clean_path
    if os.path.commonpath([path, root]) == root:
  File "D:\a\salt\salt\artifacts\salt\lib\ntpath.py", line 807, in commonpath
    raise ValueError("Paths don't have the same drive")
ValueError: Paths don't have the same drive

Added a fix to use the GH runner temp dir from $RUNNER_TEMP if $CI is set and the host is windows. That's at D:\a\_temp so shouldn't cause the exception.

Testing that in #67164

@barneysowood
Copy link
Contributor Author

barneysowood commented Jan 18, 2025

Looking at last night's Nightly build of 3006.x, remaining issues on Windows integration tests:

@barneysowood
Copy link
Contributor Author

Fix for that in #67178. Once that has run successfully, I'll take it out of draft.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Test-Failure Fix the CI failure ⛈
Projects
None yet
Development

No branches or pull requests

3 participants