connectedk8s: release v1.11.2 - #10187
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
Automated sensitive-information remediation ran on this pull request.
If a credential was exposed, rotate or revoke it immediately. Detected values are never copied into this comment. ✅ Keep the redaction · ❌ Dispute the redaction GitHub only supports a fixed reaction set, so 👍 represents ✅ and 👎 represents ❌. The bot-created reactions are only poll choices. Posted by agent-assist (autonomous bug-fix pipeline). |
|
connectedk8s |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
Julie Zhu (@yanzhudd) Yong Zhang (@yonzhan) , could you please review the changes and let me know if anything else we need to do to get it merged? thanks! |
|
Automated sensitive-information remediation ran on this pull request.
If a credential was exposed, rotate or revoke it immediately. Detected values are never copied into this comment. ✅ Keep the redaction · ❌ Dispute the redaction GitHub only supports a fixed reaction set, so 👍 represents ✅ and 👎 represents ❌. The bot-created reactions are only poll choices. Posted by agent-assist (autonomous bug-fix pipeline). |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
|
Aditya Pujara (@a0x1ab) It looks like the checks that are failing are due detected changes in index.json. I do not see any changes in the diff, similarly the breaking changes noted in the pr description appear to be related to other extensions that are not altered in the diff of this PR. Are there any steps that can be taken to resolve these warnings/errors? |
4bc9ef6 to
01b111f
Compare
* forcedelete * format * add code owner * mypy
…o Agent conversion in connected clusters (#46) * [az-cli][connectedk8s][MultiCloudConnector] Allow AgentNotInstalled to Agent conversion in connected clusters
* propagate correlation-id to arc proxy * code clean up * add version infirmation * add doc * nit: fix logger statement * style check - code cleanup * remove redundant import * code clean up.
…nstrumentation, and catch-all decorato (#53) * adding telemetry updates to update unknown * Fix telemetry reporting: wrap string exceptions in Exception() and add catch-all decorator - Replace all exception='string' calls with exception=Exception('string') across custom.py, _utils.py, and _precheckutils.py so that ExceptionName in telemetry shows 'Exception' instead of 'str' - Add _telemetry_catch_all decorator to top-level command functions (create, delete, update, upgrade) to catch unhandled exceptions, log them to telemetry with proper ExceptionName/FaultType, and re-raise as CLIInternalError instead of letting them become 'UnknownError' * Fix mypy and ruff: add type annotations to _telemetry_catch_all decorator and fix import sorting * Apply ruff format to fix CI format check * Remove accidentally committed files
* fix(connectedk8s): make azdev style pass with targeted formatting and justified suppressions * fix(connectedk8s): narrow broad exception suppressions where low risk * Add rationale comments for style suppressions * Add rationale comments for exception handling in clientproxy helper * fix: ruff format clientproxyhelper/_utils.py * narrow broad-exception-caught to specific types in _precheckutils.py and _utils.py - _precheckutils.py: narrow 3 of 5 catches (KeyError/AttributeError/TypeError for watch loop, ValueError/TypeError for file writes after OSError handler) - _utils.py: remove module-level pylint disable, narrow 8 catches to specific types (ValueError/TypeError for file I/O, ValueError/KeyError for JSON parsing, TypeError/AttributeError/RecursionError for dict flattening, KeyError/TypeError for dict access), keep inline disable on 6 genuinely polymorphic catches (ARM calls, K8s API, retry loops) - _troubleshootutils.py: keep module-level disable (21 catches, deferred to follow-up) * fix: resolve all azdev style (pylint) violations to 10.00/10 - W0707 raise-missing-from: add 'from e/ex/exc' to re-raises across custom.py, _utils.py, _precheckutils.py - C0209 consider-using-f-string: convert .format() calls to f-strings in custom.py, _utils.py, _client_factory.py - R1714 consider-using-in: merge comparisons in custom.py, _precheckutils.py, _troubleshootutils.py - C0207 use-maxsplit-arg: add maxsplit=1 in custom.py - W1514 unspecified-encoding: add encoding='utf-8' to open() calls across all files - C0206 consider-using-dict-items: use .items() iteration in custom.py - C0325 superfluous-parens: remove extra parens on raise in custom.py - E1101 no-member: inline disable for HttpResponseError.response in custom.py - Module-level pylint disables for: too-many-lines, too-many-positional-arguments, too-many-statements, consider-using-with (cannot refactor without breaking API) - R0915/R0917 inline disables in _params.py, clientproxyhelper/_utils.py, clientproxyhelper/_proxylogic.py * fix: resolve flake8 E203/E122/E125/E115 formatting errors - Fix misplaced encoding='utf-8' argument formatting in multi-line open() calls - Remove misplaced pylint disable comments inside except block - Add too-many-lines disable at module level in _utils.py * style: apply ruff format to pass CI formatting check * fix: add linter exclusion for require_wait_command_if_no_wait * fix: use bare raise in ValidationError except block per review * fix: use bare raise in ArgumentUsageError except block per review
…on (#56) * Add diagnosability to helm timeouts * update logic to ensure image pulls get priority, and ensure only one fault is emitted per failure * logging changes * update error messages * review fixes * only look at secret metadata to avoid secret leak * fix unwrapped exception * Update Error Codes --------- Co-authored-by: John McCormick <mccormickjo@microsoft.com>
* Pin ruff<0.16.0 to avoid breaking default rule changes * Fix W1203: use lazy % formatting in logger.debug calls * Fix I001: sort imports alphabetically in test_utils_.py * Apply ruff format to unformatted files
* prediag
* messagefix
* logprediagerrors
* historyupdate
* duplicatestring
* test
* fix: prediagnostic telemetry improvements
- Fix empty-log NotCompleted returning Passed instead of Incomplete
- Fix double telemetry firing (job-execution-error + check-failure)
- Fix NotApplicable for all checks when pod never ran
- Fix Entra/CRD error message parsing (filter non-error lines)
- Trim multi-line error messages to first line
- Add always-save log for completed jobs
- Add console diagnostic output block
- Add State 3 telemetry for LinuxNodeExists and ClusterRoleBindings
- Add Post_Diagnostic_Precheck_Fault_Type constant
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* prompt
* test: add unit tests for prediagnostic telemetry functions
- Add test_precheckutils.py with 14 unit tests covering:
- send_prediagnostic_job_execution_error_telemetry (error type, status, reason)
- send_prediagnostic_check_failure_telemetry (check results, error extraction,
multiline trimming, non-error line filtering)
- send_post_diagnostic_precheck_failure_telemetry (error type, check name/reason)
- Use sys.modules stubs to avoid heavy runtime dependencies
- Fix code corruption in _precheckutils.py (IDE selection leaked into source)
- Remove temporary debug helper (_debug_add_extension_event)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* test: use setdefault for stubs to allow real modules in azdev CI
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* linterrors
* linterrors
* testfixes
* fix unittest
* removingunexpetedfiles
* Fix test_utils_.py: add missing knack submodule stubs
* Replace debug print() with logger.debug() in telemetry functions
* Fix telemetry corruption caused by apostrophes in telemetry payloads
The CLI telemetry client uses json.loads(data.replace(chr(39), chr(34))) which
converts apostrophes to double quotes, breaking JSON parsing and dropping
entire telemetry batches.
Changes:
- _precheckutils.py: Replace Couldn't with Could not in set_exception calls
- custom.py: Replace Couldn't/couldn't with Could not/could not in set_exception calls,
remove single quotes around 'linux' in telemetry strings
- _utils.py: Strip apostrophes from helm_error_detail before add_extension_event calls
* Move telemetry key strings to constants
Address PR review: move Context.Default.AzureCLI.onboardingErrorType and
Context.Default.AzureCLI.onboardingErrorMessage to _constants.py as
Telemetry_Onboarding_Error_Type_Key and Telemetry_Onboarding_Error_Message_Key
* Address PR #54 review comments: refactor telemetry, add comments
- Extract common _send_onboarding_telemetry_event() helper
- Refactor check_results to generic list structure with componentName/checkResult/error
- Move job status and check result strings to _constants.py
- Select newest pod by creation_timestamp to avoid stale logs
- Extract _parse_entra_check_result() and _parse_crd_check_result()
- Revert helm chart version bump (separate PR)
- Replace print() with logger.warning() in custom.py
- Add clarifying comment for DNS error strings in _utils.py
- Add comprehensive comments throughout _precheckutils.py
* Fix prediagnostic telemetry: use set_exception, encode check results in fault_type
- Replace add_extension_event with set_exception for GDPR-whitelisted fields
- Encode individual check results (dns/outbound/entra/crd) in fault_type string
- Add common _send_onboarding_telemetry_event helper
- Convert print() calls to logger.debug()/logger.info()
- Select latest pod by creationTimestamp
- Extract _parse_entra_check_result into separate function
* refactor(telemetry): structured component list for prediagnostic check results
Address bgriddaluru PR review comments #2 and #3:
- Replace string-based error extraction with structured add_extension_event
payloads containing generic component lists [{componentName, checkResult, error}]
- ADX dashboard queries no longer need custom name parsing (dnsCheck, dnsError)
- Error details extracted from diagnoser_output by component keyword matching
- Wire up send_prediagnostic_check_failure_telemetry in fetch_diagnostic_checks_results
- Keep set_exception fault_type encoding for ADX backward compatibility
* Add informational telemetry for non-2xx outbound connectivity responses
During pre-onboarding diagnostics, when an outbound connectivity check
receives a non-2xx HTTP response (4xx/5xx) that is NOT a connection-level
failure (code 000), emit an informational extension event with fault type
'prediagnostics-outbound-non2xx-response'. This preserves the existing
PASS behavior while surfacing the unexpected response codes in ADX for
monitoring and investigation.
Changes:
- _constants.py: Add Outbound_Connectivity_Non2xx_Response_Type constant
- _utils.py: Emit telemetry in 3 code paths (cluster-connect, onboarding,
troubleshoot) when response code starts with '4' or '5'
- _precheckutils.py: Improve per-check telemetry emission with structured
fault descriptions and SERVFAIL detection
- Unit tests added for all new telemetry paths
Verified in ADX: events appear with correct fault type and message
containing endpoint, code, and target information.
* Replace standalone test scripts with Pester-format PrediagnosticTelemetry.Tests.ps1
* fix: ruff lint (PIE810), ruff format, and mypy type-arg errors for prediagnostic telemetry
* fix: ruff format test_precheckutils.py and test_utils_.py
* Remove per-component set_exception loop; send single aggregate fault per onboarding failure
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Address PR review: explain 404 in Entra check docstring, replace for-loop with if-guard for single pod
* Add wheel for E2E testing
* Add pylint disable comments for new code
* Fix global statement syntax for ruff compatibility
* Apply ruff format to PR files
* fix: restore onboarding_error_type usage in helm_error_detail (lint F841)
---------
Co-authored-by: Atchut Kumar Barli <atchut@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…dpoints (#61) * Add 'Arc' keyword for --proxy-skip-range to expand Azure Arc private-link endpoints * Add unit tests for Arc proxy-skip-range keyword expansion * Add Arc keyword help text * Bump Version * Revert "Bump Version" This reverts commit 6c4f3d0. Drops the 1.10.13 -> 1.10.14 version bump from the PR; the Arc proxy-skip-range feature can be published under a batched release bump instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: aa3f5a60-e3b1-49b4-a4e5-5d656000d376 * Text modify * Extract Arc proxy-skip-range endpoints into a constant and simplify help text Move the Arc private-link endpoint suffixes into a shared Arc_Private_Link_Endpoints constant and consume it from get_arc_proxy_skip_range_endpoints (behavior unchanged). Simplify the --proxy-skip-range help text and fold the Arc keyword into the existing examples, dropping the dedicated private-link example blocks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add proxy test for the Arc keyword in --proxy-skip-range Assert that 'az connectedk8s update --proxy-skip-range Arc' expands to the Azure Arc private-link endpoints in the agent noProxy value. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Added dedup functionality and tests --------- Co-authored-by: Sai Tareesh Reddy Eppeti <seppeti@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: aa3f5a60-e3b1-49b4-a4e5-5d656000d376
…#67) * Fix pre-onboarding diagnostic checks grading NotCompleted job as Passed when partial container output is present * Update clusterdiagnosticchecks image version to 1.36.1 * Fix mypy no-any-return in get_cloud_based_domain: cast endpoints.active_directory to str before split * ruff format custom.py
17d7a5c to
c63eeda
Compare
Live test results —
|
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
❌ CI Checks Failing
PR: connectedk8s: release v1.11.2
The following checks failed on the latest commit:
- Azure.azure-cli-extensions — overall pipeline failure: https://github.com/Azure/azure-cli-extensions/runs/96077274480
- azdev style on Modified Extensions — style check failure: https://github.com/Azure/azure-cli-extensions/runs/96073916217
- azdev linter on Modified Extensions — linter check failure: https://github.com/Azure/azure-cli-extensions/runs/96073859732
Please review the linked logs and address the style/linter violations (and any underlying pipeline failure) before this can be merged. Since this PR was flagged for human review, I'm leaving it here for the assigned reviewer/author to resolve rather than auto-iterating.
|
Aditya Pujara (@a0x1ab) The CI failures are again related to reported changes that are not in the PR diff. I have rebased the branch last week, but seems that did not help. Is there something we need to do to prevent these ci failures? |
|
This PR can be closed. I have opened a PR with a cleaner diff to avoid CI failures due to git history conflicts: #10236 |
🤖 PR Validation — ❌ Action needed
❌Azure CLI Extensions Breaking Change Test
Description
Release of the
connectedk8sCLI extension, bumping version to1.11.2.Changes
Unknownerrors: wrap string exceptions, add missing instrumentation, and catch-all decorator for unhandled exceptions.az connectedk8s proxy.Arcto--proxy-skip-rangedefault values for Azure Arc private-link endpoints.References
AzureArcForKubernetes/connectedk8s:release-v1.11.2