Dashboard › sentry › Session 1RKE6wp9sEfV
1RKE6wp9sEfVuYd5dIn the Sentry repo at /home/byk/Code/getsentry/sentry, I need to verify two things from the existing Jira Connect descriptor:
What URL does the existing Connect descriptor use for the jiraIssueContexts / issue panel? Look in src/sentry/integrations/jira/descriptor.py or similar files for the issue details URL. I expect it might be /extensions/jira/issue-details/{issue.key}/ vs the legacy /extensions/jira/issue/{issue.key}/.
How does the existing Connect descriptor handle the icon URL? Is it hardcoded or dynamically resolved via get_frontend_app_asset_url?
Search thoroughly and return the exact code snippets showing both the issue URL and icon URL handling.
I'll search for the Jira Connect descriptor and related files to answer both questions.
[tool results provided]
Now let me read the full descriptor file and the relevant URLs file:
[tool results provided]
Here are the findings for both questions:
jiraIssueContexts)The Connect descriptor endpoint (src/sentry/integrations/jira/endpoints/descriptor.py) uses the new URL path:
# Line 68-78
"jiraIssueContexts": [
{
"icon": {"width": 24, "height": 24, "url": sentry_logo},
"content": {"type": "label", "label": {"value": "Linked Issues"}},
"target": {
"type": "web_panel",
"url": "/extensions/jira/issue-details/{issue.key}/",
},
"name": {"value": "Sentry "},
"key": "sentry-issues-glance",
}
],
The descriptor serves /extensions/jira/issue-details/{issue.key}/ (the new path).
However, the Forge manifest (src/sentry/integrations/jira/forge/manifest.yml) still uses the legacy URL:
# Lines 37-39
target:
type: web_panel
url: /extensions/jira/issue/{issue.key}/
Both URL paths are registered in the URL router (src/sentry/integrations/jira/urls.py), with an explicit comment explaining why the legacy route is kept:
# Lines 52-61
# TODO(cells): Legacy URL, remove once Atlassian marketplace version updated.
# Our descriptor now correctly points at `/issue-details/{key}/`, but
# Atlassian only re-snapshots it when a new Marketplace version of `sentry.io.jira` is
# published — existing tenants keep hitting this path until that happens. Routed to the
# control view by `JiraRequestParser.immediate_response_cell_classes`.
re_path(
r"^issue/(?P<issue_key>[^/]+)/$",
JiraSentryIssueDetailsView.as_view(),
name="sentry-extensions-jira-issue-hook",
),
re_path(
r"^issue-details/(?P<issue_key>[^/]+)/$",
JiraSentryIssueDetailsControlView.as_view(),
name="sentry-extensions-jira-issue-hook-control",
),
Key detail: the legacy path (/issue/...) routes to JiraSentryIssueDetailsView, while the new path (/issue-details/...) routes to a different class, ...