From dcdfd9ae955c7d1a5c2e8c87dad150a8db1cfd04 Mon Sep 17 00:00:00 2001 From: Britney Wang Date: Wed, 17 Jan 2024 10:03:23 -0800 Subject: [PATCH 01/19] Implement /cred/shop/webhook_responses in flask view --- static/js/src/advantage/credentials/app.tsx | 5 - .../CredWebhookResponses.tsx | 116 ------------------ .../components/CredWebhookResponses/index.tsx | 1 - .../credentials/shop/webhook_responses.html | 79 ++++++++++++ webapp/app.py | 5 + webapp/shop/cred/views.py | 30 ++++- 6 files changed, 109 insertions(+), 127 deletions(-) delete mode 100644 static/js/src/advantage/credentials/components/CredWebhookResponses/CredWebhookResponses.tsx delete mode 100644 static/js/src/advantage/credentials/components/CredWebhookResponses/index.tsx create mode 100644 templates/credentials/shop/webhook_responses.html diff --git a/static/js/src/advantage/credentials/app.tsx b/static/js/src/advantage/credentials/app.tsx index 3f98d253331..71dfde39bcc 100644 --- a/static/js/src/advantage/credentials/app.tsx +++ b/static/js/src/advantage/credentials/app.tsx @@ -8,7 +8,6 @@ import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import CredManage from "./components/CredManage"; import CredKeyShop from "./components/CredKeyShop"; import CredExamShop from "./components/CredExamShop/CredExamShop"; -import CredWebhookResponses from "./components/CredWebhookResponses"; const oneHour = 1000 * 60 * 60; const queryClient = new QueryClient({ @@ -42,10 +41,6 @@ function App() { } /> } /> } /> - } - /> diff --git a/static/js/src/advantage/credentials/components/CredWebhookResponses/CredWebhookResponses.tsx b/static/js/src/advantage/credentials/components/CredWebhookResponses/CredWebhookResponses.tsx deleted file mode 100644 index 5bb42b93159..00000000000 --- a/static/js/src/advantage/credentials/components/CredWebhookResponses/CredWebhookResponses.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import { MainTable } from "@canonical/react-components"; -import { getFilteredWebhookResponses } from "advantage/credentials/api/trueability"; -import React, { useEffect, useState } from "react"; -import { useQuery } from "react-query"; -import { useSearchParams } from "react-router-dom"; -import classNames from "classnames"; - -type Webhook = { - ability_screen_id: string; - on_transition_to: string; - created_at: Date; -}; -type WebhookResponse = { - id: string; - sent_at: Date; - webhook: Webhook; - response_status: string; -}; - -const CredWebhookResponses = () => { - const [searchParams] = useSearchParams(); - const page = parseInt(searchParams.get("page") || "1"); - const { data } = useQuery(["WebhookResponses"], async () => { - return getFilteredWebhookResponses("4190", page); - }); - const [tableData, changeTableData] = useState(data); - - useEffect(() => { - if (data && data["webhook_responses"]) { - changeTableData(data["webhook_responses"]); - } - }, [data]); - - return ( -
- { - return { - columns: [ - { - content: keyitem.webhook.created_at?.toString(), - }, - { - content: keyitem.id, - }, - { - content: keyitem.sent_at?.toString(), - }, - { - content: keyitem.webhook.ability_screen_id, - }, - { - content: keyitem.response_status, - }, - { - content: keyitem.webhook.on_transition_to, - }, - ], - }; - }) - } - sortable - responsive - /> - {data && ( - - )} -
- ); -}; -export default CredWebhookResponses; diff --git a/static/js/src/advantage/credentials/components/CredWebhookResponses/index.tsx b/static/js/src/advantage/credentials/components/CredWebhookResponses/index.tsx deleted file mode 100644 index d8fe96dfd14..00000000000 --- a/static/js/src/advantage/credentials/components/CredWebhookResponses/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default } from "./CredWebhookResponses"; diff --git a/templates/credentials/shop/webhook_responses.html b/templates/credentials/shop/webhook_responses.html new file mode 100644 index 00000000000..ffc8cd663ec --- /dev/null +++ b/templates/credentials/shop/webhook_responses.html @@ -0,0 +1,79 @@ +{% extends "credentials/base_cred.html" %} + +{% block title %}Canonical Certification{% endblock %} + +{% block meta_description %}The Canonical Ubuntu Essentials exams certify knowledge and verify skills in general Linux, +Ubuntu Desktop, and Ubuntu Server topics.{% endblock meta_description %} + +{% block content %} +
+ + + + + + + + + + + + + + {% for data in webhook_responses["webhook_responses"] %} + + + + + + + + + {% endfor %} + +
Created AtIDSent AtAbility Screen IDResponse StatusTransition
{{ data.webhook.created_at }}{{ data.id }}{{ data.sent_at }}{{ data.webhook.ability_screen_id }}{{ data.response_status }}{{ data.webhook.on_transition_to }}
+ + +
+{% endblock %} \ No newline at end of file diff --git a/webapp/app.py b/webapp/app.py index 1024afab27a..76efb737df5 100644 --- a/webapp/app.py +++ b/webapp/app.py @@ -75,6 +75,7 @@ cred_self_study, cred_shop, cred_shop_thank_you, + cred_shop_webhook_responses, cred_sign_up, cred_submit_form, cred_syllabus_data, @@ -886,6 +887,10 @@ def takeovers_index(): app.add_url_rule( "/credentials/shop/order-thank-you", view_func=cred_shop_thank_you ) +app.add_url_rule( + "/credentials/shop/webhook_responses", + view_func=cred_shop_webhook_responses, +) app.add_url_rule( "/credentials/redeem", view_func=cred_redeem_code, methods=["GET", "POST"] ) diff --git a/webapp/shop/cred/views.py b/webapp/shop/cred/views.py index 22a586be6ad..17751a8debf 100644 --- a/webapp/shop/cred/views.py +++ b/webapp/shop/cred/views.py @@ -632,6 +632,19 @@ def cred_shop_thank_you(**kwargs): ) +@shop_decorator(area="cube", permission="user", response="html") +@canonical_staff() +def cred_shop_webhook_responses(**kwargs): + ability_screen_id = "4190" + page = flask.request.args.get("page", 1) + webhook = get_filtered_webhook_responses( + ability_screen_id=ability_screen_id, page=page + ).json + return flask.render_template( + "credentials/shop/webhook_responses.html", webhook_responses=webhook + ) + + @shop_decorator(area="cube", permission="user", response="html") def cred_redeem_code(ua_contracts_api, advantage_mapper, **kwargs): exam = None @@ -755,9 +768,16 @@ def cred_beta_activation(**_): @shop_decorator(area="cred", permission="user", response="json") @canonical_staff() def get_filtered_webhook_responses(trueability_api, **kwargs): - ability_screen_id = flask.request.args.get("ability_screen_id", None) - page = flask.request.args.get("page", 1) - page = int(page) + if kwargs["ability_screen_id"]: + ability_screen_id = kwargs["ability_screen_id"] + else: + ability_screen_id = flask.request.args.get("ability_screen_id", None) + + if kwargs["page"]: + page = int(kwargs["page"]) + else: + page = flask.request.args.get("page", 1) + page = int(page) per_page = flask.request.args.get("per_page", 10) per_page = int(per_page) ta_results_per_page = 100 @@ -777,9 +797,9 @@ def get_filtered_webhook_responses(trueability_api, **kwargs): ] page_metadata = {} page_metadata["current_page"] = page - page_metadata["total_pages"] = ( + page_metadata["total_pages"] = math.ceil( webhook_responses["meta"]["total_count"] // per_page - ) + 1 + ) page_metadata["total_count"] = total_count page_metadata["next_page"] = ( page + 1 if page < page_metadata["total_pages"] else None From cba0ebec37c0e9c6edc9100dd5fcc5ec119e34db Mon Sep 17 00:00:00 2001 From: Britney Wang Date: Wed, 17 Jan 2024 11:06:06 -0800 Subject: [PATCH 02/19] Remove unused file --- static/js/src/advantage/credentials/api/keys.js | 16 ---------------- .../src/advantage/credentials/api/trueability.js | 10 ---------- webapp/shop/cred/views.py | 2 +- 3 files changed, 1 insertion(+), 27 deletions(-) delete mode 100644 static/js/src/advantage/credentials/api/trueability.js diff --git a/static/js/src/advantage/credentials/api/keys.js b/static/js/src/advantage/credentials/api/keys.js index e070728d3db..e922b0793df 100644 --- a/static/js/src/advantage/credentials/api/keys.js +++ b/static/js/src/advantage/credentials/api/keys.js @@ -25,22 +25,6 @@ export async function rotateKey(activationKey) { return data; } -export async function activateKey(activationKey) { - let response = await fetch("/credentials/keys/activate", { - method: "POST", - headers: { - Accept: "application/json", - "Content-Type": "application/json", - }, - body: JSON.stringify({ - activationKey: activationKey, - productID: "cube-admintasks", - }), - }); - const data = await response.json(); - return data; -} - export async function getKeyProducts() { let response = await fetch("/credentials/keys/products", { method: "GET", diff --git a/static/js/src/advantage/credentials/api/trueability.js b/static/js/src/advantage/credentials/api/trueability.js deleted file mode 100644 index e297ab3657b..00000000000 --- a/static/js/src/advantage/credentials/api/trueability.js +++ /dev/null @@ -1,10 +0,0 @@ -export async function getFilteredWebhookResponses(abilityScreenId, page) { - let response = await fetch( - `/credentials/get_filtered_webhook_responses?ability_screen_id=${abilityScreenId}&page=${page}`, - { - method: "GET", - } - ); - const data = await response.json(); - return data; -} diff --git a/webapp/shop/cred/views.py b/webapp/shop/cred/views.py index 17751a8debf..120d569f65c 100644 --- a/webapp/shop/cred/views.py +++ b/webapp/shop/cred/views.py @@ -639,7 +639,7 @@ def cred_shop_webhook_responses(**kwargs): page = flask.request.args.get("page", 1) webhook = get_filtered_webhook_responses( ability_screen_id=ability_screen_id, page=page - ).json + ).json return flask.render_template( "credentials/shop/webhook_responses.html", webhook_responses=webhook ) From d3afd165c0e4fa7f379a54bd5c792c53682dfcd3 Mon Sep 17 00:00:00 2001 From: Britney Wang Date: Tue, 12 Mar 2024 14:18:50 +0800 Subject: [PATCH 03/19] Remove get_webhook_responses view --- webapp/app.py | 6 --- webapp/shop/cred/views.py | 101 ++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 58 deletions(-) diff --git a/webapp/app.py b/webapp/app.py index 76efb737df5..7a71340f614 100644 --- a/webapp/app.py +++ b/webapp/app.py @@ -82,7 +82,6 @@ cred_your_exams, get_activation_keys, get_cue_products, - get_filtered_webhook_responses, get_issued_badges, get_my_issued_badges, get_webhook_response, @@ -919,11 +918,6 @@ def takeovers_index(): view_func=cred_beta_activation, methods=["GET", "POST"], ) -app.add_url_rule( - "/credentials/get_filtered_webhook_responses", - view_func=get_filtered_webhook_responses, - methods=["GET"], -) app.add_url_rule( "/credentials/get_webhook_response", view_func=get_webhook_response, diff --git a/webapp/shop/cred/views.py b/webapp/shop/cred/views.py index 120d569f65c..7629002404c 100644 --- a/webapp/shop/cred/views.py +++ b/webapp/shop/cred/views.py @@ -15,7 +15,12 @@ handle_confidentiality_agreement_submission, has_filed_confidentiality_agreement, ) -from webapp.shop.decorators import shop_decorator, canonical_staff +from webapp.shop.decorators import ( + shop_decorator, + canonical_staff, + get_trueability_api_instance, + init_trueability_session, +) from webapp.shop.utils import get_exam_contract_id, get_user_first_last_name from webapp.login import user_info @@ -634,12 +639,50 @@ def cred_shop_thank_you(**kwargs): @shop_decorator(area="cube", permission="user", response="html") @canonical_staff() -def cred_shop_webhook_responses(**kwargs): +def cred_shop_webhook_responses(trueability_api, **kwargs): ability_screen_id = "4190" - page = flask.request.args.get("page", 1) - webhook = get_filtered_webhook_responses( - ability_screen_id=ability_screen_id, page=page - ).json + if "page" in kwargs: + page = int(kwargs["page"]) + else: + page = flask.request.args.get("page", 1) + page = int(page) + + per_page = flask.request.args.get("per_page", 10) + per_page = int(per_page) + ta_results_per_page = 100 + ta_page = math.ceil(page * per_page // ta_results_per_page) + + trueability_session = init_trueability_session("cred") + trueability_api = get_trueability_api_instance("cred", trueability_session) + webhook_responses = trueability_api.get_filtered_webhook_responses( + ability_screen_id=ability_screen_id, + page=ta_page, + ) + total_count = webhook_responses["meta"]["total_count"] + ta_webhook_responses = webhook_responses["webhook_responses"] + ta_webhook_responses = [ + ta_webhook_responses[i] + for i in range( + page * per_page % ta_results_per_page - per_page, + min(page * per_page % ta_results_per_page, total_count), + ) + ] + page_metadata = {} + page_metadata["current_page"] = page + page_metadata["total_pages"] = math.ceil( + webhook_responses["meta"]["total_count"] // per_page + ) + page_metadata["total_count"] = total_count + page_metadata["next_page"] = ( + page + 1 if page < page_metadata["total_pages"] else None + ) + page_metadata["prev_page"] = page - 1 if page > 1 else None + + webhook = { + "webhook_responses": ta_webhook_responses, + "meta": page_metadata, + } + return flask.render_template( "credentials/shop/webhook_responses.html", webhook_responses=webhook ) @@ -765,52 +808,6 @@ def cred_beta_activation(**_): return flask.render_template("credentials/beta-activation.html") -@shop_decorator(area="cred", permission="user", response="json") -@canonical_staff() -def get_filtered_webhook_responses(trueability_api, **kwargs): - if kwargs["ability_screen_id"]: - ability_screen_id = kwargs["ability_screen_id"] - else: - ability_screen_id = flask.request.args.get("ability_screen_id", None) - - if kwargs["page"]: - page = int(kwargs["page"]) - else: - page = flask.request.args.get("page", 1) - page = int(page) - per_page = flask.request.args.get("per_page", 10) - per_page = int(per_page) - ta_results_per_page = 100 - ta_page = math.ceil(page * per_page // ta_results_per_page) - webhook_responses = trueability_api.get_filtered_webhook_responses( - ability_screen_id=ability_screen_id, - page=ta_page, - ) - total_count = webhook_responses["meta"]["total_count"] - ta_webhook_responses = webhook_responses["webhook_responses"] - ta_webhook_responses = [ - ta_webhook_responses[i] - for i in range( - page * per_page % ta_results_per_page - per_page, - min(page * per_page % ta_results_per_page, total_count), - ) - ] - page_metadata = {} - page_metadata["current_page"] = page - page_metadata["total_pages"] = math.ceil( - webhook_responses["meta"]["total_count"] // per_page - ) - page_metadata["total_count"] = total_count - page_metadata["next_page"] = ( - page + 1 if page < page_metadata["total_pages"] else None - ) - page_metadata["prev_page"] = page - 1 if page > 1 else None - - return flask.jsonify( - {"webhook_responses": ta_webhook_responses, "meta": page_metadata} - ) - - @shop_decorator(area="cred", permission="user", response="json") @canonical_staff() def get_webhook_response(trueability_api, **kwargs): From e277e548708dc335aa04bfe84c8450bf38fcb8dc Mon Sep 17 00:00:00 2001 From: Britney Wang Date: Wed, 20 Mar 2024 11:34:38 +0800 Subject: [PATCH 04/19] Remove support portal seats column --- .../users/components/ExplainingTable.tsx | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/static/js/src/advantage/users/components/ExplainingTable.tsx b/static/js/src/advantage/users/components/ExplainingTable.tsx index 81acd144ba2..f1c1ef6f792 100644 --- a/static/js/src/advantage/users/components/ExplainingTable.tsx +++ b/static/js/src/advantage/users/components/ExplainingTable.tsx @@ -25,10 +25,6 @@ const ExplainingTable = () => ( content: "Payment & Invoices", className: "u-align--center", }, - { - content: "Support Portal seat", - className: "u-align--center", - }, ]} rows={[ { @@ -53,10 +49,6 @@ const ExplainingTable = () => ( content: , className: "u-align--center", }, - { - content: , - className: "u-align--center", - }, ], }, { @@ -81,10 +73,6 @@ const ExplainingTable = () => ( content: , className: "u-align--center", }, - { - content: , - className: "u-align--center", - }, ], }, { @@ -109,10 +97,6 @@ const ExplainingTable = () => ( content: , className: "u-align--center", }, - { - content: , - className: "u-align--center", - }, ], }, ]} From f357d228aab2be939d57c0501fd83eeefc833f77 Mon Sep 17 00:00:00 2001 From: Akbar Abdrakhmanov Date: Wed, 20 Mar 2024 13:56:16 +0500 Subject: [PATCH 05/19] point to correct JS to render the chart on /server --- templates/server/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/server/index.html b/templates/server/index.html index 8cba8062b80..78470f21b1a 100755 --- a/templates/server/index.html +++ b/templates/server/index.html @@ -247,7 +247,7 @@

Security support for Ubuntu releases

-
+
@@ -342,7 +342,7 @@

Security support for Ubuntu releases

- +
From c265df21e036b76d7198eed34a65a2b8046d4e83 Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Wed, 20 Mar 2024 11:31:52 +0100 Subject: [PATCH 06/19] WD-9834 - add section to /download/amd --- templates/download/amd/tab-1.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/templates/download/amd/tab-1.html b/templates/download/amd/tab-1.html index 663d2d38946..c4dce1e9d15 100644 --- a/templates/download/amd/tab-1.html +++ b/templates/download/amd/tab-1.html @@ -39,6 +39,17 @@

Ubuntu Server 22.04 LTS

+
+
+
+

Are you working on a commercial project?

+
+
+

Canonical partners with silicon vendors, board manufacturers and leading enterprises to shorten time-to-market. If you are deploying Ubuntu on AMD platforms at-scale, please reach out to Canonical to get access to ongoing bug fixes, critical security patching, long-term support; or to learn more about our solutions for custom board enablement, and application development services.

+

For information about using Canonical's Ubuntu images on a commercial project, read Canonical's IP policy.

+
+
+

From fa4f450be3d788244f8e3ba2e6cb6e6ca4757e9c Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Wed, 20 Mar 2024 12:22:10 +0100 Subject: [PATCH 07/19] WD-9490 - redesign /download/server/thank-you-s360x --- .../download/server/thank-you-s390x.html | 94 +++++-------------- 1 file changed, 23 insertions(+), 71 deletions(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index 936eb84e790..c5542948c3d 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -4,93 +4,45 @@ {% block canonical_url %}https://ubuntu.com/download/server/s390x{% endblock %} {% block meta_copydoc %}https://docs.google.com/document/d/1GptXtMfbgOjOmqb8DZCCTRwogkiP_cM95U9Z0gFSt7g/edit{% endblock meta_copydoc %} +{% block body_class %}is-paper{% endblock body_class %} + {% block head_extra %} {% endblock %} {% block content %} -
-
-
-

Thank you for downloading Ubuntu for LinuxONE and z Systems

+
+
+
+

Thank you for downloading Ubuntu for LinuxONE and z Systems

Please select the release you wish to download.

-
-
-
-
-
-
-
- {{ - image( - url="https://assets.ubuntu.com/v1/5edefef9-Datasheet.svg", - alt="", - width="32", - height="28", - hi_def=True, - loading="lazy", - attrs={"class": "p-heading-icon__img p-heading-icon__img--small"}, - ) | safe - }} -

eBook

-
-
-

Forrester Research - get more from the cloud

+
+
+
+

Resources

- -
-
-
- {{ - image( - url="https://assets.ubuntu.com/v1/b061c401-White+paper.svg", - alt="", - width="32", - height="28", - hi_def=True, - loading="lazy", - attrs={"class": "p-heading-icon__img p-heading-icon__img--small"}, - ) | safe - }} -

Whitepaper

-
-
-

IDC - next generation applications on Ubuntu for LinuxONE/z

+ - -
-
-
- {{ - image( - url="https://assets.ubuntu.com/v1/6e184942-Webinar.svg", - alt="", - width="32", - height="28", - hi_def=True, - loading="lazy", - attrs={"class": "p-heading-icon__img p-heading-icon__img--small"}, - ) | safe - }} -

Webinar

-
-
-

Discover the Cloud and scale out world of Ubuntu on IBM

+ +
From 11061e8b4e3d4a9a4b3834dedcc3132197c5b9bc Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Wed, 20 Mar 2024 12:44:52 +0100 Subject: [PATCH 08/19] WD-9834 - make section a partial --- .../download/amd/_working_commercial_section.html | 14 ++++++++++++++ templates/download/amd/tab-1.html | 11 +---------- templates/download/amd/tab-2.html | 11 +---------- templates/download/amd/tab-3.html | 11 +---------- 4 files changed, 17 insertions(+), 30 deletions(-) create mode 100644 templates/download/amd/_working_commercial_section.html diff --git a/templates/download/amd/_working_commercial_section.html b/templates/download/amd/_working_commercial_section.html new file mode 100644 index 00000000000..72002d9bd2d --- /dev/null +++ b/templates/download/amd/_working_commercial_section.html @@ -0,0 +1,14 @@ +{% block outer_content %} + {% block content %} +
+
+
+

Are you working on a commercial project?

+
+
+

Canonical partners with silicon vendors, board manufacturers and leading enterprises to shorten time-to-market. If you are deploying Ubuntu on AMD platforms at-scale, please reach out to Canonical to get access to ongoing bug fixes, critical security patching, long-term support; or to learn more about our solutions for custom board enablement, and application development services.

+

For information about using Canonical's Ubuntu images on a commercial project, read Canonical's IP policy.

+
+
+ {% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/download/amd/tab-1.html b/templates/download/amd/tab-1.html index c4dce1e9d15..dac43a96509 100644 --- a/templates/download/amd/tab-1.html +++ b/templates/download/amd/tab-1.html @@ -39,16 +39,7 @@

Ubuntu Server 22.04 LTS

-
-
-
-

Are you working on a commercial project?

-
-
-

Canonical partners with silicon vendors, board manufacturers and leading enterprises to shorten time-to-market. If you are deploying Ubuntu on AMD platforms at-scale, please reach out to Canonical to get access to ongoing bug fixes, critical security patching, long-term support; or to learn more about our solutions for custom board enablement, and application development services.

-

For information about using Canonical's Ubuntu images on a commercial project, read Canonical's IP policy.

-
-
+ {% include "download/amd/_working_commercial_section.html" %}

diff --git a/templates/download/amd/tab-2.html b/templates/download/amd/tab-2.html index bc41b289bc9..a6d889a5994 100644 --- a/templates/download/amd/tab-2.html +++ b/templates/download/amd/tab-2.html @@ -46,16 +46,7 @@

Ubuntu Desktop 22.04 LTS

-
-
-
-

Are you working on a commercial project?

-
-
-

Canonical partners with silicon vendors, board manufacturers and leading enterprises to shorten time-to-market. If you are deploying Ubuntu on AMD platforms at-scale, please reach out to Canonical to get access to ongoing bug fixes, critical security patching, long-term support; or to learn more about our solutions for custom board enablement, and application development services.

-

For information about using Canonical's Ubuntu images on a commercial project, read Canonical's IP policy.

-
-
+ {% include "download/amd/_working_commercial_section.html" %}

diff --git a/templates/download/amd/tab-3.html b/templates/download/amd/tab-3.html index 12c459b2a86..cdbb7de734d 100644 --- a/templates/download/amd/tab-3.html +++ b/templates/download/amd/tab-3.html @@ -43,16 +43,7 @@

Ubuntu Desktop 22.04 LTS

-
-
-
-

Are you working on a commercial project?

-
-
-

Canonical partners with silicon vendors, board manufacturers and leading enterprises to shorten time-to-market. If you are deploying Ubuntu on AMD platforms at-scale, please reach out to Canonical to get access to ongoing bug fixes, critical security patching, long-term support; or to learn more about our solutions for custom board enablement, and application development services.

-

For information about using Canonical's Ubuntu images on a commercial project, read Canonical's IP policy.

-
-
+ {% include "download/amd/_working_commercial_section.html" %}

From 08e54b3f8568fa52a54de7a1ef76c1f8357520d8 Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Wed, 20 Mar 2024 12:52:53 +0100 Subject: [PATCH 09/19] WD-9490 - fix heading classes --- templates/download/server/thank-you-s390x.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index c5542948c3d..727f9f1cbb9 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -33,16 +33,16 @@

Thank you for downloading Ubuntu for LinuxONE and

Resources

From d654aab212abfe87f99edb6b4353b6b709a3426a Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Wed, 20 Mar 2024 13:00:24 +0100 Subject: [PATCH 10/19] WD-9490 - update link classes --- templates/download/server/thank-you-s390x.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index 727f9f1cbb9..a0dfa88048d 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -34,15 +34,15 @@

Resources

From 3369bf27e38f629ff4314672036cc9539810be5e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:15:28 +0000 Subject: [PATCH 11/19] Update discourse dependency --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b60f3cb4dc1..13ebd59056a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ canonicalwebteam.blog==6.4.1 canonicalwebteam.search==1.3.0 canonicalwebteam.templatefinder==1.0.0 canonicalwebteam.image-template==1.3.1 -canonicalwebteam.discourse==5.4.7 +canonicalwebteam.discourse==5.4.9 python-dateutil==2.8.2 pytz==2022.7.1 maxminddb-geolite2==2018.703 From 5d14d635053dbfe746e1fa3dec7d1e278b340810 Mon Sep 17 00:00:00 2001 From: Carlos Wu Date: Wed, 20 Mar 2024 13:34:09 +0000 Subject: [PATCH 12/19] WD-9819 copy update (#13685) --- templates/support/index.html | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/templates/support/index.html b/templates/support/index.html index 111a0f104d1..657357fbbbf 100755 --- a/templates/support/index.html +++ b/templates/support/index.html @@ -677,7 +677,7 @@

Available everywhere

}}

- Learn more about Ubuntu on AWS › + Learn more about Ubuntu on AWS ›

@@ -693,7 +693,7 @@

Available everywhere

}}

- Learn more about Azure › + Learn more about Azure ›

@@ -763,7 +763,7 @@

Service Level Agreements

- + @@ -771,19 +771,19 @@

Service Level Agreements

- + - + - + @@ -793,12 +793,8 @@

Service Level Agreements

  1. Included with any Ubuntu Pro subscription
  2. -
  3. 24/5 support is intended for Severity 1 issues. Standard business hours are defined as Monday to Friday from - 8:00 AM to 6:00 PM at the location of your organization’s headquarters. Weekends and holidays are excluded.
  4. -
  5. 24/7/365 support is intended for Severity 1 issues. We will work with you until the issue is solved or mitigated - with a workaround. As soon as the service or the core functionality is available in production, we will adjust the - severity level accordingly. We assume that you will be reachable throughout the process as the functionality is - restored.
  6. +
  7. 24/5 support is intended for Severity 1 issues. Issues at other severity levels will be worked on during standard business hours. Standard business hours are defined as Monday to Friday from 8:00 AM to 6:00 PM at your organisation's headquarters. Weekends and holidays are excluded.
  8. +
  9. 24/7/365 support is intended for Severity 1 issues. Issues at other severity levels will be worked on during standard business hours. In case of a Severity 1 issue, we will work with you until the issue is solved or mitigated with a workaround. As soon as the service or the core functionality is available in production, we will adjust the severity level accordingly. We assume you will be reachable throughout the process as the functionality is being restored.
From 7ca4d81251b91e59a150ab07b33bcca09658e77e Mon Sep 17 00:00:00 2001 From: Peter French Date: Wed, 20 Mar 2024 17:17:38 +0000 Subject: [PATCH 13/19] Re-order kernel-lifecycle chart data (#13688) --- static/js/src/chart-data.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/static/js/src/chart-data.js b/static/js/src/chart-data.js index d9fc0f25da9..d7ee09816cb 100644 --- a/static/js/src/chart-data.js +++ b/static/js/src/chart-data.js @@ -1258,8 +1258,8 @@ export var desktopServerReleaseNames = [ export var kernelReleaseNames = [ "22.04.4 LTS", "23.10", - "22.04.1 LTS", "20.04.5 LTS", + "22.04.1 LTS", "22.04.0 LTS", "18.04.5 LTS", "20.04.1 LTS", @@ -1326,16 +1326,16 @@ export var kernelReleaseNamesALL = [ "Ubuntu 20.04.1 LTS (v5.4)", "Ubuntu 18.04.5 LTS (v5.4)", "Ubuntu 22.04.0 LTS (v5.15)", - "Ubuntu 20.04.5 LTS (v5.15)", "Ubuntu 22.04.1 LTS (v5.15)", + "Ubuntu 20.04.5 LTS (v5.15)", "Ubuntu 23.10 (v6.5)", "Ubuntu 22.04.4 LTS (v6.5)", ]; export var kernelReleaseNamesLTS = [ "Ubuntu 16.04.0 LTS (v4.4)", - "Ubuntu 14.04.5 LTS (v4.4)", "Ubuntu 16.04.1 LTS (v4.4)", + "Ubuntu 14.04.5 LTS (v4.4)", "Ubuntu 18.04.0 LTS (v4.15)", "Ubuntu 18.04.1 LTS (v4.15)", "Ubuntu 16.04.5 LTS (v4.15)", @@ -1343,8 +1343,8 @@ export var kernelReleaseNamesLTS = [ "Ubuntu 20.04.1 LTS (v5.4)", "Ubuntu 18.04.5 LTS (v5.4)", "Ubuntu 22.04.0 LTS (v5.15)", - "Ubuntu 20.04.5 LTS (v5.15)", "Ubuntu 22.04.1 LTS (v5.15)", + "Ubuntu 20.04.5 LTS (v5.15)", "Ubuntu 22.04.4 LTS (v6.5)", ]; From 97fb5e0d50745718bdf4235ede245a78fb6f4e16 Mon Sep 17 00:00:00 2001 From: minkyngkm Date: Wed, 20 Mar 2024 18:32:37 +0000 Subject: [PATCH 14/19] Schedule shop maintenance --- konf/site.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/konf/site.yaml b/konf/site.yaml index 4bceff955d5..9a5bfef46b4 100644 --- a/konf/site.yaml +++ b/konf/site.yaml @@ -7,10 +7,10 @@ env: value: true - name: STORE_MAINTENANCE_START - value: 2023-10-02T03:00:00Z + value: 2024-03-27T03:00:00Z - name: STORE_MAINTENANCE_END - value: 2023-10-02T06:00:00Z + value: 2024-03-27T05:00:00Z - name: SEARCH_API_KEY secretKeyRef: @@ -369,10 +369,10 @@ production: value: true - name: STORE_MAINTENANCE_START - value: 2023-10-02T03:00:00Z + value: 2024-03-27T03:00:00Z - name: STORE_MAINTENANCE_END - value: 2023-10-02T06:00:00Z + value: 2024-03-27T05:00:00Z - name: SEARCH_API_KEY secretKeyRef: @@ -479,10 +479,10 @@ staging: value: true - name: STORE_MAINTENANCE_START - value: 2023-10-02T03:00:00Z + value: 2024-03-27T03:00:00Z - name: STORE_MAINTENANCE_END - value: 2023-10-02T06:00:00Z + value: 2024-03-27T05:00:00Z - name: SEARCH_API_KEY secretKeyRef: @@ -862,10 +862,10 @@ staging: value: true - name: STORE_MAINTENANCE_START - value: 2023-10-02T03:00:00Z + value: 2024-03-27T03:00:00Z - name: STORE_MAINTENANCE_END - value: 2023-10-02T06:00:00Z + value: 2024-03-27T05:00:00Z - name: SEARCH_API_KEY secretKeyRef: @@ -942,10 +942,10 @@ demo: value: true - name: STORE_MAINTENANCE_START - value: 2023-10-02T03:00:00Z + value: 2024-03-27T03:00:00Z - name: STORE_MAINTENANCE_END - value: 2023-10-02T06:00:00Z + value: 2024-03-27T05:00:00Z - name: SEARCH_API_KEY secretKeyRef: From 3f3ec5aadbc021e304a0d192813ec4700615e25b Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Thu, 21 Mar 2024 16:03:54 +0100 Subject: [PATCH 15/19] WD-9490 - update heading styling --- templates/download/server/thank-you-s390x.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index a0dfa88048d..a826d377dc1 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -33,15 +33,15 @@

Thank you for downloading Ubuntu for LinuxONE and

Resources

From bf945b353a7e6fdf13204c7294883ef9eac961d8 Mon Sep 17 00:00:00 2001 From: Liza Date: Thu, 21 Mar 2024 22:24:31 +0100 Subject: [PATCH 16/19] Update templates/download/server/thank-you-s390x.html Co-authored-by: Anthony Dillon --- templates/download/server/thank-you-s390x.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index a826d377dc1..b6498a4df0e 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -38,7 +38,7 @@

Whitepaper

-

IDC - next generation applications on Ubuntu for LinuxONE/z

+

IDC — next generation applications on Ubuntu for LinuxONE/z

Webinar

From 976f0c0c885d6b0ac0ea26e0dd9b7e2229f541f5 Mon Sep 17 00:00:00 2001 From: Liza Date: Thu, 21 Mar 2024 22:24:40 +0100 Subject: [PATCH 17/19] Update templates/download/server/thank-you-s390x.html Co-authored-by: Anthony Dillon --- templates/download/server/thank-you-s390x.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index b6498a4df0e..ebcad55587e 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -34,7 +34,7 @@

Resources

Whitepaper

From 9e3767f85cf90365e67d4b1b2cb314c86cedb5ed Mon Sep 17 00:00:00 2001 From: yelyzaveta Date: Fri, 22 Mar 2024 11:06:49 +0100 Subject: [PATCH 18/19] WD-9396 - update engage pages form resubmit --- templates/engage/thank-you.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/templates/engage/thank-you.html b/templates/engage/thank-you.html index 413aa3eb4ee..45608684412 100644 --- a/templates/engage/thank-you.html +++ b/templates/engage/thank-you.html @@ -39,10 +39,7 @@

We've emailed a copy of the {{ resource_name }} to {{ form_details.email }}< Contact us

- Not received it? Check your spam folder and that you've used the right email address. -

-

- Or try resending it + Did not get it? Check your spam folder and that you've used the right email address.

{% else %} From 9851f75ab85181d1b2e681f5e0bad56601d5c43b Mon Sep 17 00:00:00 2001 From: Liza Date: Fri, 22 Mar 2024 14:56:12 +0100 Subject: [PATCH 19/19] WD-9490 - update /download/server/thank-you (#13692) --- .../download/server/thank-you-s390x.html | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/templates/download/server/thank-you-s390x.html b/templates/download/server/thank-you-s390x.html index ebcad55587e..fafd26e607a 100644 --- a/templates/download/server/thank-you-s390x.html +++ b/templates/download/server/thank-you-s390x.html @@ -27,22 +27,22 @@

Thank you for downloading Ubuntu for LinuxONE and
+

First response
Severity 1 - Production service down, critically affecting core functionality in a production environment.Severity 1 - Production service down. Critical impact on core functionality in a production environment N/A 4 hours 1 hour
Severity 2 - Core functionality severely degraded in a production environment. N/A8 business hours8 hours 2 hours
Severity 3 - Issues have a medium to low impact in a production environment. N/A12 business hours12 hours 6 hours
Severity 4 - Non-urgent requests with low to no impact on production environments. N/A24 business hours24 hours 12 hours