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

Fix/openstack connection creation #378

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

yhaliaw
Copy link
Collaborator

@yhaliaw yhaliaw commented Sep 18, 2024

Applicable spec:

Overview

Rationale

Juju Events Changes

Module Changes

Library Changes

Checklist

Copy link
Contributor

Lint checks failed for 8d72fbb

```

/home/runner/work/github-runner-operator/github-runner-operator/src/charm.py:1254:30: F821 undefined name 'first_cloud_config'
/home/runner/work/github-runner-operator/github-runner-operator/tests/integration/test_runner_manager_openstack.py:118:50: W291 trailing whitespace

Copy link
Contributor

Unit tests failed for 8d72fbb

```

============================= test session starts ==============================
platform linux -- Python 3.10.12, pytest-8.3.3, pluggy-1.5.0 -- /home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/bin/python
cachedir: .tox/unit/.pytest_cache
rootdir: /home/runner/work/github-runner-operator/github-runner-operator
configfile: pyproject.toml
plugins: Faker-28.4.1, requests-mock-1.12.1
collecting ... collected 277 items

tests/unit/test_charm.py::test_proxy_setting PASSED
tests/unit/test_charm.py::test_common_install_code[Install] PASSED
tests/unit/test_charm.py::test_common_install_code[Upgrade] PASSED
tests/unit/test_charm.py::test_common_install_code_does_not_rebuild_image[Install] PASSED
tests/unit/test_charm.py::test_common_install_code_does_not_rebuild_image[Upgrade] PASSED
tests/unit/test_charm.py::test_on_config_changed_failure PASSED
tests/unit/test_charm.py::test_get_runner_manager PASSED
tests/unit/test_charm.py::test_on_flush_runners_action_fail PASSED
tests/unit/test_charm.py::test_on_flush_runners_action_success PASSED
tests/unit/test_charm.py::test_on_install_failure[Install] PASSED
tests/unit/test_charm.py::test_on_install_failure[Upgrade] PASSED
tests/unit/test_charm.py::test__refresh_firewall PASSED
tests/unit/test_charm.py::test_charm_goes_into_waiting_state_on_missing_integration_data PASSED
tests/unit/test_charm.py::test_database_integration_events_trigger_reconciliation[Database Created] PASSED
tests/unit/test_charm.py::test_database_integration_events_trigger_reconciliation[Endpoints Changed] PASSED
tests/unit/test_charm.py::TestCharm::test_check_runners_action PASSED
tests/unit/test_charm.py::TestCharm::test_check_runners_action_with_errors PASSED
tests/unit/test_charm.py::TestCharm::test_exceed_free_disk_size PASSED
tests/unit/test_charm.py::TestCharm::test_on_config_changed_openstack_clouds_yaml FAILED
tests/unit/test_charm.py::TestCharm::test_on_flush_runners_action PASSED
tests/unit/test_charm.py::TestCharm::test_on_start_failure PASSED
tests/unit/test_charm.py::TestCharm::test_on_stop PASSED
tests/unit/test_charm.py::TestCharm::test_on_update_status PASSED
tests/unit/test_charm.py::TestCharm::test_org_register PASSED
tests/unit/test_charm.py::TestCharm::test_repo_register PASSED
tests/unit/test_charm.py::TestCharm::test_update_config PASSED
tests/unit/test_charm.py::test_catch_charm_errors[charm config error] PASSED
tests/unit/test_charm.py::test_catch_charm_errors[github token error] PASSED
tests/unit/test_charm.py::test_catch_charm_errors[runner binary error] PASSED
tests/unit/test_charm.py::test_catch_action_errors[charm config error] PASSED
tests/unit/test_charm.py::test_catch_action_errors[runner binary error] PASSED
tests/unit/test_charm.py::test_openstack_image_ready_status[Image integration missing.] PASSED
tests/unit/test_charm.py::test_openstack_image_ready_status[Image not ready.] PASSED
tests/unit/test_charm.py::test_openstack_image_ready_status[Valid image integration.] PASSED
tests/unit/test_charm.py::test__on_image_relation_hooks_not_openstack[image relation changed] PASSED
tests/unit/test_charm.py::test__on_image_relation_hooks_not_openstack[image relation joined] PASSED
tests/unit/test_charm.py::test__on_image_relation_image_not_ready PASSED
tests/unit/test_charm.py::test__on_image_relation_image_ready PASSED
tests/unit/test_charm.py::test__on_image_relation_joined PASSED
tests/unit/test_charm_state.py::test_github_repo_path PASSED
tests/unit/test_charm_state.py::test_github_org_path PASSED
tests/unit/test_charm_state.py::test_github_config_from_charm_invalud_path PASSED
tests/unit/test_charm_state.py::test_github_config_from_charm_empty_path PASSED
tests/unit/test_charm_state.py::test_github_config_from_charm_invalid_token PASSED
tests/unit/test_charm_state.py::test_parse_github_path[owner/repo-test_group-GitHubRepo-expected_attrs0] PASSED
tests/unit/test_charm_state.py::test_parse_github_path[test_org-test_group-GitHubOrg-expected_attrs1] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100KiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[10MiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[1GiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[0TiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[1000PiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[10000EiB-True] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100KB-False] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100GB-False] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[abc-False] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100-False] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100Ki-False] PASSED
tests/unit/test_charm_state.py::test_valid_storage_size_str[100.5MiB-False] PASSED
tests/unit/test_charm_state.py::test_parse_labels_invalid PASSED
tests/unit/test_charm_state.py::test_parse_labels[label1,label2,label3-expected_valid_labels0] PASSED
tests/unit/test_charm_state.py::test_parse_labels[label1, label2, label3-expected_valid_labels1] PASSED
tests/unit/test_charm_state.py::test_parse_labels[label1,label2,label3,-expected_valid_labels2] PASSED
tests/unit/test_charm_state.py::test_parse_labels[label1,,label2,label3-expected_valid_labels3] PASSED
tests/unit/test_charm_state.py::test_parse_labels[label1,label2,label3, -expected_valid_labels4] PASSED
tests/unit/test_charm_state.py::test_parse_labels[-expected_valid_labels5] PASSED
tests/unit/test_charm_state.py::test_parse_labels[label-1, label-2, label-3-expected_valid_labels6] PASSED
tests/unit/test_charm_state.py::test_parse_denylist[-expected_entries0] PASSED
tests/unit/test_charm_state.py::test_parse_denylist[192.168.1.1-expected_entries1] PASSED
tests/unit/test_charm_state.py::test_parse_denylist[192.168.1.1, 192.168.1.2, 192.168.1.3-expected_entries2] PASSED
tests/unit/test_charm_state.py::test_parse_dockerhub_mirror_invalid_scheme PASSED
tests/unit/test_charm_state.py::test_parse_dockerhub_mirror[-None] PASSED
tests/unit/test_charm_state.py::test_parse_dockerhub_mirror[https://example.com-https://example.com] PASSED
tests/unit/test_charm_state.py::test_parse_openstack_clouds_config_empty PASSED
tests/unit/test_charm_state.py::test_parse_openstack_clouds_config_invalid_yaml PASSED
tests/unit/test_charm_state.py::test_parse_openstack_clouds_config_invalid_yaml_list PASSED
tests/unit/test_charm_state.py::test_parse_openstack_clouds_initialize_fail FAILED
tests/unit/test_charm_state.py::test_parse_openstack_clouds_config_valid FAILED
tests/unit/test_charm_state.py::test_check_reconcile_interval_invalid[0] PASSED
tests/unit/test_charm_state.py::test_check_reconcile_interval_invalid[1] PASSED
tests/unit/test_charm_state.py::test_check_reconcile_interval_valid[2] PASSED
tests/unit/test_charm_state.py::test_check_reconcile_interval_valid[5] PASSED
tests/unit/test_charm_state.py::test_check_reconcile_interval_valid[10] PASSED
tests/unit/test_charm_state.py::test_charm_config_from_charm_invalid_github_config PASSED
tests/unit/test_charm_state.py::test_charm_config_from_charm_invalid_reconcile_interval PASSED
tests/unit/test_charm_state.py::test_charm_config_from_charm_invalid_labels PASSED
tests/unit/test_charm_state.py::test_charm_config_from_charm_valid FAILED
tests/unit/test_charm_state.py::test_base_image_str_parametrized[jammy-jammy] PASSED
tests/unit/test_charm_state.py::test_base_image_str_parametrized[noble-noble] PASSED
tests/unit/test_charm_state.py::test_base_image_from_charm_invalid_image PASSED
tests/unit/test_charm_state.py::test_base_image_from_charm[noble-noble] PASSED
tests/unit/test_charm_state.py::test_base_image_from_charm[24.04-noble] PASSED
tests/unit/test_charm_state.py::test_base_image_from_charm[jammy-jammy] PASSED
tests/unit/test_charm_state.py::test_base_image_from_charm[22.04-jammy] PASSED
tests/unit/test_charm_state.py::test_openstack_image_from_charm_no_connections PASSED
tests/unit/test_charm_state.py::test_openstack_image_from_charm_data_not_ready PASSED
tests/unit/test_charm_state.py::test_openstack_image_from_charm PASSED
tests/unit/test_charm_state.py::test_check_virtual_machines_invalid[-1] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machines_invalid[-5] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machines_valid[0] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machines_valid[5] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machines_valid[10] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machine_resources_invalid[vm_resources0] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machine_resources_invalid[vm_resources1] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machine_resources_invalid[vm_resources2] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machine_resources_valid[vm_resources0-expected_result0] PASSED
tests/unit/test_charm_state.py::test_check_virtual_machine_resources_valid[vm_resources1-expected_result1] PASSED
tests/unit/test_charm_state.py::test_runner_charm_config_from_charm_invalid_base_image PASSED
tests/unit/test_charm_state.py::test_runner_charm_config_from_charm_invalid_storage_config PASSED
tests/unit/test_charm_state.py::test_runner_charm_config_from_charm_invalid_cpu_config PASSED
tests/unit/test_charm_state.py::test_runner_charm_config_from_charm_invalid_virtual_machines_config PASSED
tests/unit/test_charm_state.py::test_runner_charm_config_from_charm_valid PASSED
tests/unit/test_charm_state.py::test_apropy_address[http://proxy.example.com-None-True-proxy.example.com] PASSED
tests/unit/test_charm_state.py::test_apropy_address[None-https://secureproxy.example.com-True-secureproxy.example.com] PASSED
tests/unit/test_charm_state.py::test_apropy_address[None-None-False-None] PASSED
tests/unit/test_charm_state.py::test_apropy_address[http://proxy.example.com-None-False-None] PASSED
tests/unit/test_charm_state.py::test_check_use_aproxy PASSED
tests/unit/test_charm_state.py::test___bool__[http://proxy.example.com-None-True] PASSED
tests/unit/test_charm_state.py::test___bool__[None-https://secureproxy.example.com-True] PASSED
tests/unit/test_charm_state.py::test___bool__[http://proxy.example.com-https://secureproxy.example.com-True] PASSED
tests/unit/test_charm_state.py::test___bool__[None-None-False] PASSED
tests/unit/test_charm_state.py::test_proxy_config_from_charm[None-None-localhost] PASSED
tests/unit/test_charm_state.py::test_proxy_config_from_charm[None-http://internal.proxy-None] PASSED
tests/unit/test_charm_state.py::test__get_supported_arch_unsupported[ppc64le] PASSED
tests/unit/test_charm_state.py::test__get_supported_arch_unsupported[sparc] PASSED
tests/unit/test_charm_state.py::test__get_supported_arch_supported[arm64-arm64] PASSED
tests/unit/test_charm_state.py::test__get_supported_arch_supported[x86_64-x64] PASSED
tests/unit/test_charm_state.py::test_ssh_debug_connection_from_charm_no_connections PASSED
tests/unit/test_charm_state.py::test_ssh_debug_connection_from_charm_data_not_ready PASSED
tests/unit/test_charm_state.py::test_ssh_debug_connection_from_charm PASSED
tests/unit/test_charm_state.py::test_reactive_config_from_charm PASSED
tests/unit/test_charm_state.py::test_reactive_config_from_database_returns_none PASSED
tests/unit/test_charm_state.py::test_reactive_config_from_database_integration_data_missing PASSED
tests/unit/test_charm_state.py::test_check_immutable_config_key_error[Runner storage] PASSED
tests/unit/test_charm_state.py::test_check_immutable_config_key_error[Base image] PASSED
tests/unit/test_charm_state.py::test_check_immutable_config_change_no_previous_state PASSED
tests/unit/test_charm_state.py::test_check_immutable_config_change_storage_changed PASSED
tests/unit/test_charm_state.py::test_check_immutable_config_change_base_image_changed PASSED
tests/unit/test_charm_state.py::test_check_immutable_config PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[ProxyConfig-from_charm-exc0] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[ProxyConfig-from_charm-ValueError] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[CharmState-_check_immutable_config_change-exc2] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[CharmConfig-from_charm-exc3] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[CharmConfig-from_charm-ValueError] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[charm_state-_get_supported_arch-exc5] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm_invalid_cases[SSHDebugConnection-from_charm-exc6] PASSED
tests/unit/test_charm_state.py::test_charm_state_from_charm PASSED
tests/unit/test_charm_state.py::test_charm_state__log_prev_state_redacts_sensitive_information PASSED
tests/unit/test_event_timer.py::test_is_active_true PASSED
tests/unit/test_event_timer.py::test_is_active_false PASSED
tests/unit/test_firewall.py::test__exclude_network[empty domain[no exclude]] PASSED
tests/unit/test_firewall.py::test__exclude_network[empty domain[one ip exclude]] PASSED
tests/unit/test_firewall.py::test__exclude_network[empty domain[multiple ips exclude]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single ip single exclude ip[no overlap]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single ip single exclude ip[overlap]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain single exclude ip[overlap single ip]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain multiple exclude ips[overlap partial ips]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain multiple exclude ips[overlap all ips]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain single exclude domain[no overlap]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain single exclude domain[overlap partial range]] PASSED
tests/unit/test_firewall.py::test__exclude_network[single domain single exclude domain[overlap full range]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain single exclude domain[no overlap]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain single exclude domain[partial overlap]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain single exclude domain[full overlap(equivalent network)]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain single exclude domain[full overlap(bigger network)]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain multiple exclude domain[no overlaps]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain multiple exclude domain[multiple partial overlaps]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain multiple exclude domain[multiple full overlaps(equivalent network)]] PASSED
tests/unit/test_firewall.py::test__exclude_network[multiple domain multiple exclude domain[multiple full overlaps(bigger network)]] PASSED
tests/unit/test_logrotate.py::test_setup_enables_logrotate_timer PASSED
tests/unit/test_logrotate.py::test_setup_raises_error PASSED
tests/unit/test_logrotate.py::test_setup_writes_logrotate_config PASSED
tests/unit/test_logrotate.py::test__write_config[daily-True-True] PASSED
tests/unit/test_logrotate.py::test__write_config[daily-True-False] PASSED
tests/unit/test_logrotate.py::test__write_config[daily-False-True] PASSED
tests/unit/test_logrotate.py::test__write_config[daily-False-False] PASSED
tests/unit/test_logrotate.py::test__write_config[weekly-True-True] PASSED
tests/unit/test_logrotate.py::test__write_config[weekly-True-False] PASSED
tests/unit/test_logrotate.py::test__write_config[weekly-False-True] PASSED
tests/unit/test_logrotate.py::test__write_config[weekly-False-False] PASSED
tests/unit/test_logrotate.py::test__write_config[monthly-True-True] PASSED
tests/unit/test_logrotate.py::test__write_config[monthly-True-False] PASSED
tests/unit/test_logrotate.py::test__write_config[monthly-False-True] PASSED
tests/unit/test_logrotate.py::test__write_config[monthly-False-False] PASSED
tests/unit/test_logrotate.py::test__write_config[yearly-True-True] PASSED
tests/unit/test_logrotate.py::test__write_config[yearly-True-False] PASSED
tests/unit/test_logrotate.py::test__write_config[yearly-False-True] PASSED
tests/unit/test_logrotate.py::test__write_config[yearly-False-False] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url[runner_manager0-arm64] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url[runner_manager0-x64] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url[runner_manager1-arm64] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url[runner_manager1-x64] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url_missing_binary[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_get_latest_runner_bin_url_missing_binary[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_update_runner_bin[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_update_runner_bin[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_zero_count[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_zero_count[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_create_runner[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_create_runner[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_remove_runner[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_remove_runner[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_empty_flush[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_empty_flush[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_flush[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_flush[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_runner_installed_event[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_runner_installed_event[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_no_runner_installed_event_if_metrics_disabled[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_no_runner_installed_event_if_metrics_disabled[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_error_on_issue_event_is_ignored[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_error_on_issue_event_is_ignored[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_reconciliation_metric_event[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_issues_reconciliation_metric_event[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_places_timestamp_in_newly_created_runner[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_places_timestamp_in_newly_created_runner[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_error_on_placing_timestamp_is_ignored[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_error_on_placing_timestamp_is_ignored[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_places_no_timestamp_in_newly_created_runner_if_metrics_disabled[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_places_no_timestamp_in_newly_created_runner_if_metrics_disabled[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_reactive_mode[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_reconcile_reactive_mode[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_schedule_build_runner_image[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_schedule_build_runner_image[runner_manager1] PASSED
tests/unit/test_lxd_runner_manager.py::test_has_runner_image[runner_manager0] PASSED
tests/unit/test_lxd_runner_manager.py::test_has_runner_image[runner_manager1] PASSED
tests/unit/test_runner.py::test_create[runner0] PASSED
tests/unit/test_runner.py::test_create[runner1] PASSED
tests/unit/test_runner.py::test_create_lxd_fail[runner0] PASSED
tests/unit/test_runner.py::test_create_lxd_fail[runner1] PASSED
tests/unit/test_runner.py::test_create_runner_fail[runner0] PASSED
tests/unit/test_runner.py::test_create_runner_fail[runner1] PASSED
tests/unit/test_runner.py::test_create_with_metrics[runner0] PASSED
tests/unit/test_runner.py::test_create_with_metrics[runner1] PASSED
tests/unit/test_runner.py::test_create_with_metrics_and_shared_fs_error[runner0] PASSED
tests/unit/test_runner.py::test_create_with_metrics_and_shared_fs_error[runner1] PASSED
tests/unit/test_runner.py::test_remove[runner0] PASSED
tests/unit/test_runner.py::test_remove[runner1] PASSED
tests/unit/test_runner.py::test_remove_failed_instance[runner0] PASSED
tests/unit/test_runner.py::test_remove_failed_instance[runner1] PASSED
tests/unit/test_runner.py::test_remove_none[runner0] PASSED
tests/unit/test_runner.py::test_remove_none[runner1] PASSED
tests/unit/test_runner.py::test_remove_with_stop_error[runner0] PASSED
tests/unit/test_runner.py::test_remove_with_stop_error[runner1] PASSED
tests/unit/test_runner.py::test_remove_with_delete_error[runner0] PASSED
tests/unit/test_runner.py::test_remove_with_delete_error[runner1] PASSED
tests/unit/test_runner.py::test_random_ssh_connection_choice[runner0] PASSED
tests/unit/test_runner.py::test_random_ssh_connection_choice[runner1] PASSED
tests/unit/test_runner.py::test_pull_logs[runner0] PASSED
tests/unit/test_runner.py::test_pull_logs[runner1] PASSED
tests/unit/test_runner.py::test_pull_logs_no_instance[runner0] PASSED
tests/unit/test_runner.py::test_pull_logs_no_instance[runner1] PASSED
tests/unit/test_runner.py::test_pull_logs_lxd_error[runner0] PASSED
tests/unit/test_runner.py::test_pull_logs_lxd_error[runner1] PASSED
tests/unit/test_runner_scaler.py::test_get_no_runner PASSED
tests/unit/test_runner_scaler.py::test_flush_no_runner PASSED
tests/unit/test_runner_scaler.py::test_reconcile_runner_create_one PASSED
tests/unit/test_runner_scaler.py::test_one_runner PASSED
tests/unit/test_runner_scaler.py::test_flush_busy_on_idle_runner PASSED
tests/unit/test_runner_scaler.py::test_flush_busy_on_busy_runner PASSED
tests/unit/test_runner_scaler.py::test_get_runner_one_busy_runner PASSED
tests/unit/test_runner_scaler.py::test_get_runner_offline_runner PASSED
tests/unit/test_runner_scaler.py::test_get_runner_unknown_runner PASSED
tests/unit/test_shared_fs.py::test_create_creates_directory PASSED
tests/unit/test_shared_fs.py::test_create_raises_exception PASSED
tests/unit/test_shared_fs.py::test_create_raises_exception_if_already_exists PASSED
tests/unit/test_shared_fs.py::test_list_shared_filesystems PASSED
tests/unit/test_shared_fs.py::test_list_shared_filesystems_empty PASSED
tests/unit/test_shared_fs.py::test_list_shared_filesystems_ignore_unmounted_fs PASSED
tests/unit/test_shared_fs.py::test_delete_filesystem PASSED
tests/unit/test_shared_fs.py::test_delete_raises_error PASSED
tests/unit/test_shared_fs.py::test_delete_filesystem_ignores_unmounted_filesystem PASSED
tests/unit/test_shared_fs.py::test_get_shared_filesystem PASSED
tests/unit/test_shared_fs.py::test_get_raises_error_if_not_found PASSED
tests/unit/test_shared_fs.py::test_get_mounts_if_unmounted PASSED
tests/unit/test_utilities.py::test_execute_command_with_error PASSED

=================================== FAILURES ===================================
____________ TestCharm.test_on_config_changed_openstack_clouds_yaml ____________
Traceback (most recent call last):
File "/usr/lib/python3.10/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.10/unittest/case.py", line 591, in run
self._callTestMethod(testMethod)
File "/usr/lib/python3.10/unittest/case.py", line 549, in _callTestMethod
method()
File "/usr/lib/python3.10/unittest/mock.py", line 1379, in patched
return func(*newargs, **newkeywargs)
File "/home/runner/work/github-runner-operator/github-runner-operator/tests/unit/test_charm.py", line 698, in test_on_config_changed_openstack_clouds_yaml
harness.charm.on.config_changed.emit()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/ops/framework.py", line 347, in emit
framework._emit(event)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/ops/framework.py", line 853, in _emit
self._reemit(event_path)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/ops/framework.py", line 943, in _reemit
custom_handler(event)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm.py", line 138, in func_with_catch_errors
func(self, event)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm.py", line 604, in _on_config_changed
state = self._setup_state()
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm.py", line 291, in _setup_state
return CharmState.from_charm(charm=self, database=self.database)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 1163, in from_charm
charm_config = CharmConfig.from_charm(charm)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 497, in from_charm
openstack_clouds_yaml = cls._parse_openstack_clouds_config(charm)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 434, in _parse_openstack_clouds_config
openstack_cloud.initialize(openstack_clouds_yaml)
AttributeError: module 'github_runner_manager.openstack_cloud' has no attribute 'initialize'
_________________ test_parse_openstack_clouds_initialize_fail __________________
Traceback (most recent call last):
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 341, in from_call
result: TResult | None = func()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 242, in
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 829, in _runtest_for
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
item.runtest()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 1627, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
result = testfunction(**testargs)
File "/home/runner/work/github-runner-operator/github-runner-operator/tests/unit/test_charm_state.py", line 370, in test_parse_openstack_clouds_initialize_fail
monkeypatch.setattr(
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/monkeypatch.py", line 245, in setattr
raise AttributeError(f"{target!r} has no attribute {name!r}")
AttributeError: <module 'github_runner_manager.openstack_cloud' from '/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/github_runner_manager/openstack_cloud/init.py'> has no attribute 'initialize'
___________________ test_parse_openstack_clouds_config_valid ___________________
Traceback (most recent call last):
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 341, in from_call
result: TResult | None = func()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 242, in
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 829, in _runtest_for
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
item.runtest()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 1627, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
result = testfunction(**testargs)
File "/home/runner/work/github-runner-operator/github-runner-operator/tests/unit/test_charm_state.py", line 389, in test_parse_openstack_clouds_config_valid
result = CharmConfig._parse_openstack_clouds_config(mock_charm)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 434, in _parse_openstack_clouds_config
openstack_cloud.initialize(openstack_clouds_yaml)
AttributeError: module 'github_runner_manager.openstack_cloud' has no attribute 'initialize'
______________________ test_charm_config_from_charm_valid ______________________
Traceback (most recent call last):
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 341, in from_call
result: TResult | None = func()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 242, in
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/logging.py", line 829, in _runtest_for
yield
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
return (yield)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
item.runtest()
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 1627, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_hooks.py", line 513, in call
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.traceback)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
File "/home/runner/work/github-runner-operator/github-runner-operator/.tox/unit/lib/python3.10/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
result = testfunction(**testargs)
File "/home/runner/work/github-runner-operator/github-runner-operator/tests/unit/test_charm_state.py", line 500, in test_charm_config_from_charm_valid
result = CharmConfig.from_charm(mock_charm)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 497, in from_charm
openstack_clouds_yaml = cls._parse_openstack_clouds_config(charm)
File "/home/runner/work/github-runner-operator/github-runner-operator/src/charm_state.py", line 434, in _parse_openstack_clouds_config
openstack_cloud.initialize(openstack_clouds_yaml)
AttributeError: module 'github_runner_manager.openstack_cloud' has no attribute 'initialize'
=========================== short test summary info ============================
FAILED tests/unit/test_charm.py::TestCharm::test_on_config_changed_openstack_clouds_yaml
FAILED tests/unit/test_charm_state.py::test_parse_openstack_clouds_initialize_fail
FAILED tests/unit/test_charm_state.py::test_parse_openstack_clouds_config_valid
FAILED tests/unit/test_charm_state.py::test_charm_config_from_charm_valid - A...
======================== 4 failed, 273 passed in 6.21s =========================

Copy link
Contributor

Test coverage for 8d72fbb

Name                         Stmts   Miss Branch BrPart  Cover   Missing
------------------------------------------------------------------------
src/charm.py                   589    151    149     26    71%   237-239, 305-324, 342-344, 345->349, 375-379, 452, 459-461, 488-493, 510-516, 537, 549-555, 570-571, 584, 589, 619-620, 622->631, 626->631, 634-642, 676, 680-685, 736-741, 750->753, 776-788, 792-793, 821-848, 861-866, 885-895, 909-911, 958-959, 961-962, 964-965, 1044->1046, 1111-1112, 1150-1152, 1160-1166, 1244-1303, 1307
src/charm_state.py             452     26     96      5    93%   271-283, 436-441, 508-512, 632-643, 690-691, 1126->1129, 1133-1134, 1181
src/errors.py                   25      0      0      0   100%
src/event_timer.py              52      6      0      0    88%   105-106, 143-144, 160-161
src/firewall.py                 51     18     20      0    61%   42-43, 66-69, 111-185
src/github_client.py            23      2      6      1    90%   66->exit, 71-72
src/logrotate.py                43      0      2      0   100%
src/lxd_type.py                 35      0      2      0   100%
src/runner_manager_type.py      51      0      8      0   100%
src/runner_type.py              38      0     10      0   100%
src/shared_fs.py                93     17     10      1    83%   52-53, 120-121, 146-147, 155-156, 162-163, 181, 184-185, 197-198, 241-242
src/utilities.py                32      4      6      2    79%   66-69, 111
------------------------------------------------------------------------
TOTAL                         1484    224    309     35    83%

Static code analysis report

Run started:2024-09-18 04:58:31.221245

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 4959
  Total lines skipped (#nosec): 2
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 6

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant