From aacf80362c973f3d8bfa09866ea734e94a492abc Mon Sep 17 00:00:00 2001 From: Ogheneochuko Pedro Date: Thu, 17 Jul 2025 18:25:57 +0100 Subject: [PATCH 1/2] feat: create solutions/automation page --- navigation.yaml | 2 + package.json | 2 +- static/sass/styles.scss | 1 + templates/solutions/automation/form-data.json | 54 ++ templates/solutions/automation/index.html | 850 ++++++++++++++++++ yarn.lock | 8 +- 6 files changed, 912 insertions(+), 5 deletions(-) create mode 100644 templates/solutions/automation/form-data.json create mode 100644 templates/solutions/automation/index.html diff --git a/navigation.yaml b/navigation.yaml index 01b038c1..f0279c1c 100644 --- a/navigation.yaml +++ b/navigation.yaml @@ -531,6 +531,8 @@ solutions: url: /observability - title: Cloud-native apps url: /solutions/cloud-native-development + - title: Automation + url: /solutions/automation - title: Industries links: diff --git a/package.json b/package.json index 9e09a80a..fc42d9aa 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "react-dom": "^18.2.0", "sass": "1.89.2", "uuid": "^11.1.0", - "vanilla-framework": "4.24.1", + "vanilla-framework": "4.26.0", "venobox": "2.1.8" }, "devDependencies": { diff --git a/static/sass/styles.scss b/static/sass/styles.scss index d5de01ad..65f97e2e 100644 --- a/static/sass/styles.scss +++ b/static/sass/styles.scss @@ -38,6 +38,7 @@ $p-small-lh-diff: map-get($line-heights, default-text) - @import "maas_styles"; @include vanilla; +@include vf-p-grid-8; @include vf-p-icon-status-waiting; @include vf-p-icon-user-group; @include vf-p-icon-video-play; diff --git a/templates/solutions/automation/form-data.json b/templates/solutions/automation/form-data.json new file mode 100644 index 00000000..2f8ed57e --- /dev/null +++ b/templates/solutions/automation/form-data.json @@ -0,0 +1,54 @@ +{ + "form": { + "/solutions/automation": { + "templatePath": "/solutions/automation/index.html", + "isModal": true, + "modalId": "automation-modal", + "formData": { + "title": "Get expert help with your automation", + "introText": "Want to learn more about our open source automation software and tooling, and explore how it can fit your business or use case? FIll out the form and we’ll get in touch.", + "formId": "6311", + "returnUrl": "https://canonical.com/solutions/automation#contact-form-success", + "product": "" + }, + "fieldsets": [ + { + "title": "Explore the best automation for you", + "id": "about-you", + "noCommentsFromLead": true, + "fields": [ + { + "type": "text", + "id": "company", + "label": "Company name", + "isRequired": true + }, + { + "type": "text", + "id": "phone", + "label": "Phone number", + "isRequired": true + }, + { + "type": "country", + "label": "Country", + "id": "country", + "isRequired": true + } + ] + }, + { + "title": "What would you like to talk to us about?", + "isRequired": false, + "noCommentsFromLead": false, + "fields": [ + { + "type": "long-text", + "id": "comments" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/templates/solutions/automation/index.html b/templates/solutions/automation/index.html new file mode 100644 index 00000000..bd5e601f --- /dev/null +++ b/templates/solutions/automation/index.html @@ -0,0 +1,850 @@ +{% extends 'base_index.html' %} + +{% from "_macros/vf_hero.jinja" import vf_hero %} +{% from "_macros/vf_tiered-list.jinja" import vf_tiered_list %} +{% from "_macros/vf_cta-section.jinja" import vf_cta_section %} +{% from "_macros/vf_quote-wrapper.jinja" import vf_quote_wrapper %} + +{% block title %}Open source IT automation{% endblock %} + +{% block meta_copydoc %} +https://docs.google.com/document/d/12KMzjaVbi0ZWpw4BBkBTyOsaexGQdRkwsvW_t3Gw7x4/ +{% endblock meta_copydoc %} + +{% block meta_description %} + Get high-performance IT automation that cuts costs and time spent, for the widest selection of use cases and on any infrastructure or cloud. Do it all on open source. +{% endblock meta_description %} + +{% block meta_keywords %}IT automation, system automation, software automation{% endblock %} + +{% block body_class %} + is-paper +{% endblock body_class %} + +{% block content %} + {% call(slot) vf_hero( + title_text='Open source IT automation', + layout='50/50' + ) -%} + {%- if slot == 'description' -%} +

+ Unlock powerful IT automation where you need it: whether you’re working with bare metal, overseeing the infrastructure that sits on top, or managing apps and services. Deliver cost savings, seamless integration, and easy compliance pathways with automation that works on any cloud or infrastructure type. +

+ {%- endif -%} + + {%- if slot == 'cta' -%} +
+

+ Contact Canonical +

+ {%- endif -%} + + {% endcall -%} + + {%- call(slot) vf_tiered_list( + is_description_full_width_on_desktop=false, + is_list_full_width_on_tablet=true + ) -%} + {%- if slot == 'title' -%} +

Fast, simple,
and trusted automation

+ {%- endif -%} + + {%- if slot == 'description' -%} +

+ We offer IT automation solutions to simplify deployment, management, scaling, configurations and compliance. +

+ {%- endif -%} + + {%- if slot == 'list_item_title_1' -%} +

It works, anywhere

+ {%- endif -%} + + {%- if slot == 'list_item_description_1' -%} +
+

+ Get automation solutions that work seamlessly no matter what your tech is or where it’s deployed — bare metal, VMs, private, public, or hybrid environments. +

+
+ {%- endif -%} + + {%- if slot == 'list_item_title_2' -%} +

Save time and money

+ {%- endif -%} + + {%- if slot == 'list_item_description_2' -%} +
+

+ Highly performant automation options for a wide selection of use cases, designed to drive significant costs savings. +

+
+ {%- endif -%} + + {%- if slot == 'list_item_title_3' -%} +

Trusted and transparent

+ {%- endif -%} + + {%- if slot == 'list_item_description_3' -%} +
+

+ Unlike most automation tools, our software, automations, and orchestrators are open source — giving you transparency and confidence to operate. +

+
+ {%- endif -%} + {%- endcall -%} + +
+
+
+
+ {{ image(url="https://assets.ubuntu.com/v1/72910538-72910538d75908ad5d123f0c8548d6f81ee51dc3.png", + alt="", + width="1068", + height="864", + hi_def=True, + loading="lazy", + attrs={"class": "p-image-container__image"} + ) | safe + }} +
+
+
+
+ +
+
+ +
+
+
+

Turn bare metal
into on-demand resources

+
+
+
+

+ Transform physical servers into on-demand resources and build a cloud infrastructure without breaking a sweat. +

+
+
+ +
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+
+
+ +
+
+

+ Quickly provision or tear down physical and virtual servers +

+

+ Remotely install operating systems and software, and quickly provision server resources on any bare metal, hybrid, private, or public cloud infra. +

+
    +
  • Create the cloud and server environment you need, and automate everything from scaling to long term maintenance.
  • +
  • Make your bare metal preparations reliable, repeatable, and efficient.
  • +
  • Automatically discover all devices over your network, for lightning-fast server configuration.
  • +
+ +
+
+ +
+
+

Manage, secure, upgrade, monitor, and inventory all versions of Ubuntu

+

+ Manage all of your desktop, server, and cloud deployments, anywhere, from a single portal. Automate installation, configuration, compliance audits, and monitoring. +

+
    +
  • Reduce the cost of managing open source with a single pane of glass for containers, virtual machines, and physical nodes, anywhere.
  • +
  • Seamless 3rd party integrations with a versioned RESTful API and CLI utility.
  • +
  • Manage desktop, server and cloud deployments at enterprise-scale.
  • +
  • Distribute software packages with local mirrors, and control the flow of updates from staging to production for all your open source software.
  • +
+ +
+
+ +
+
+

Build your easiest, most performant cloud yet

+

+ Create and scale highly available and resource-efficient cloud services that grow as your organization does. +

+
    +
  • Deploy highly available clusters in minutes.
  • +
  • Replicate and scale your cloud across any hardware.
  • +
  • Automate deployment and on-site operations, with low to no-site maintenance.
  • +
  • Automatically roll out security updates and streamlined upgrades across your entire cloud infrastructure.
  • +
+ +
+
+
+
+
+ + +
+
+
+
+
+ + {% call(slot) vf_cta_section( + title_text='Moving from the public cloud to bare metal using Canonical’s open source tools saved OneUptime $352,500 a year, or around 76% of their total cloud costs.', + layout='100', + ) -%} + {%- if slot == 'cta' -%} + Read how they did it › + {%- endif -%} + {% endcall -%} + +
+
+ +
+
+
+

Automate your infrastructure for seamless operations

+
+
+
+

+ With Canonical’s infrastructure automation framework, you can create, maintain, and manage everything that runs on your infrastructure – from the host OS to thousands of containers and VMs – with ease. +

+
    +
  • Get automatic updates and unattended security patches for all your apps, for years to come.
  • +
  • You can manage everything from a single, centralized Juju controller – or on each layer of your infrastructure.
  • +
  • Get apps that don’t break after updates. Your optimal configurations persist even if one of the applications is scaled or upgraded, or the configuration changes.
  • +
+
+
+ +
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+
+
+ +
+
+

+ Optimize your virtualization layer +

+

+ Take your virtualization to new heights, with better performance, a reduced attack surface, and more efficient operations. +

+
    +
  • Unlock your most efficient virtualization layer yet.
  • +
  • Streamline your VM experience with optimized choices, an image library, and a built-in agent for easier operations.
  • +
  • Run same type of workload as VMs but with resource efficiency in system containers.
  • +
  • Manage your workloads with ease and configure them with ease via a user-friendly web interface.
  • +
+ +
+
+ +
+
+

+ Automate a highly available platform for all your apps and services +

+

+ Build infrastructure that deeply supports everything you own and run, no matter where it’s running. +

+
    +
  • Deploy highly available applications, with the power to create and maintain your secure containers.
  • +
  • Runs on premise, on the cloud, and at the edge.
  • +
  • Kubernetes deploys and grows seamlessly, from containers on your first laptop to thousands of instances in the data centre.
  • +
  • Get native, lightning-fast integration with Juju.
  • +
+ +
+
+ +
+
+

Build a cloud with full transparency, through open source

+

+ Create your transparent, trusted, and vendor-free cloud that supports all your apps and services with unrivaled transparency that’s built on a global trust network. +

+
    +
  • Build and deploy open source cloud that supports everything that you do: whether you’re supporting apps on legacy hardware, or building a data center that runs like a cloud.
  • +
  • Get on-demand compute and automate resource provisioning across all your hardware.
  • +
  • Avoid vendor lock in and meet strict regional compliance requirements.
  • +
  • Get a performant, scalable cloud that deploys in minutes – with up to 70% saved on TCO.
  • +
+ + +
+
+
+
+
+ + +
+
+
+
+
+ + {% call(slot) vf_cta_section( + title_text='Customers adopting our management tooling have saved over $200,000 over the course of 3 years.*', + layout='100', + ) -%} + {%- if slot == 'cta' -%} + *Source: Enterprise Management Associates report + {%- endif -%} + {% endcall -%} + +
+
+ +
+
+
+

Apps that manage themselves, for their entire lifecycle

+
+
+
+

+ Manage, configure, and securely configure all your apps and their integrations across any platform or cloud. Get observability, patching, identity, secret management, and more for your infra, services, and systems – so that you can focus on building and scaling. Our charmed applications come with a secure-by-default configuration out the box without any additional hardening steps. +

+
+
+ +
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+
+
+ +
+
+

+ Automate operations across cloud, metal, VMs and Kubernetes +

+

+ Charms allow you to use a single codebase to automate the lifecycle management of your system across Kubernetes containers, Linux containers, virtual machines, and bare metal machines, on public or private clouds. +

+
    +
  • Create an apps ecosystem that works anywhere – on multiple cloud backends, different controllers, and different clouds, or even across virtual machines and Kubernetes.
  • +
  • Automate the deployment, management and configuration of your host OS and all your VMs.
  • +
  • Deploy, manage, and integrate software across Kubernetes, Linux containers, VMs, bare metal machines, public cloud, or private clouds.
  • +
  • Customize everything to your needs, with a scriptable API that integrates easily into your internal tools and processes.
  • +
+ +
+
+ +
+
+

+ Seamless integrations across different clouds +

+

+ Automatically apply required networking and configuration changes for fast and easy integrations – even if the workloads are deployed across different clouds (e.g. Openstack and AWS). +

+
    +
  • Seamlessly connect and integrate applications across clouds, automatically.
  • +
  • Connect, configure, integrate and maintain all of your apps and services in a single model, across their entire lifecycle.
  • +
  • Enjoy uninterrupted use of all major cloud providers.
  • +
+ +
+
+ +
+
+

+ Lifecycle management for your system, not individual applications +

+

+ Go beyond per-app management, and optimize the lifecycle management of your entire system. +

+
    +
  • Keep all your apps automatically configured, updated, and security maintained, for their entire lifecycle.
  • +
  • Unlock persistent configurations for your apps and services, so they stay working no matter what changes happen.
  • +
  • Get automatic updates and unattended security patches for all your apps, for years to come.
  • +
  • You can manage everything from a single, centralized Juju controller – or on each layer of your infrastructure.
  • +
+ +
+
+
+
+
+ + +
+
+
+
+
+ +
+
+ +
+
+
+

Simplify compliance

+
+
+
+

+ Our security and support tools make it easier than ever to apply security hardening, automate security patching and vulnerability management, and get around-the-clock coverage – all leading to a simplified compliance pathway. +

+
+
+ +
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ +
+
+
+ +
+
+

+ Apply hardening and configs at scale across your whole estate +

+

+ Build systems with security in mind from Day 0, with out-the-box hardening and one-click security deployments. +

+
    +
  • Easily define, configure, and deploy hardening across your estate – from apps to bare metal.
  • +
  • Confidently deploy critical workloads while meeting rigorous cybersecurity standards, such as the CRA, PCI-DSS, FedRAMP, and more.
  • +
  • Automate the application and auditing of security baselines, through pre-packaged CIS Benchmarks and DISA-STIGs.
  • +
  • Our charmed apps are designed to be secure by default.
  • +
+ +
+
+ +
+
+

+ Turn on automated defences against your greatest security threats +

+

+ Get automated and unattended security maintenance for all your bare metal, infra, apps and services – even in airgapped or isolated environments. +

+
    +
  • Get security maintenance across your bare metal, containers, VMs, OS, and apps – no matter where they are.
  • +
  • Automate vulnerability management, with security maintenance for the OS and 36,000+ open source packages.
  • +
  • Maintain stability of your systems and reduce downtime – security updates are tested to maintain compatibility.
  • +
  • Get fast remediation for CVEs, and expert support that comes with industry-leading SLAs.
  • +
  • Get security coverage for up to 12 years with Ubuntu Pro and its Legacy Support add-on.
  • +
+ + +
+
+ +
+
+

+ Reduce downtime and exploit windows with livepatching +

+

+ Automatically patch the Linux kernel between security maintenance windows, while the system runs, and reduce your exploit window for critical and high severity Linux kernel vulnerabilities. +

+
    +
  • Livepatch reduces the unplanned work that comes from Linux kernel vulnerabilities.
  • +
  • Reduce downtime and maximize your productivity during work hours through livepatching and scheduled maintenance.
  • +
  • Define your rollout policy and remain in full control of which machines will get updated and when.
  • +
+ +
+
+ +
+
+

+ Get around-the-clock visibility of the latest vulnerabilities +

+

+ We track all known vulnerabilities that affect Ubuntu packages, giving you up-to-date awareness and timely fixes for the risks that keep you up at night. +

+
    +
  • Get information about the latest vulnerabilities, as well as the latest available fixes for them.
  • +
  • Unlock observability and monitoring of the entire stack from a single pane of glass.
  • +
  • Get 24/7 monitoring, observability, alerting, capacity planning and continuous service checks to ensure optimal operations.
  • +
  • Vulnerability notices are available in human- and machine-readable industry-standard formats (including OVAL, OSV, and VEX), that can be integrated with any third-party tool that supports them.
  • +
+ +
+
+
+
+
+ + +
+
+
+
+
+ + {% call(slot) vf_quote_wrapper( + title_text="See our solutions in action", + quote_size="small", + quote_text="Where other infrastructure providers in Switzerland that use traditional technologies might charge customers a premium uplift per year, we can offer the same capabilities for ten times less while still achieving a better margin.", + citation_source_name_text="Thomas Taroni", + citation_source_title_text="VP Product, Phoenix Systems" + ) -%} + + {%- if slot == 'signpost_image' -%} + Phoenix Systems + {%- endif -%} + + {%- if slot == 'cta' -%} + + Read our cloud automation and security case study › + + {%- endif -%} + + {% endcall -%} + + {% call(slot) vf_quote_wrapper( + quote_size="small", + quote_text="The benefits have been astounding. Transitioning to bare-metal servers has provided us with dedicated resources [… and] complete control over our hardware. Overall, we cut out cloud costs by over 76%. Now, we can customize every aspect of our infrastructure, from the operating system and network architecture to the type and amount of storage used.", + citation_source_name_text="Nawaz Dhandala", + citation_source_title_text="Founder and CEO of OneUptime" + ) -%} + + {%- if slot == 'signpost_image' -%} + OneUptime + {%- endif -%} + + {%- if slot == 'cta' -%} + + Read the cloud migration case study › + + {%- endif -%} + + {% endcall -%} + + {% call(slot) vf_quote_wrapper( + quote_size="small", + quote_text="We wanted one partner for the whole on-premise cloud because we’re not just supporting Kubernetes but also our Ceph clusters and managed Postgres. Being able to scale and take advantage of the public cloud, while being able to keep critical infrastructure here on site – these are all advantages.", + citation_source_name_text="Michael Hawkshaw", + citation_source_title_text="Mission Operations Infrastructure IT Service Manager at ESA" + ) -%} + + {%- if slot == 'signpost_image' -%} + ESA + {%- endif -%} + + {%- if slot == 'cta' -%} + + Read the managed services case study › + + {%- endif -%} + + {% endcall -%} + + {% call(slot) vf_quote_wrapper( + quote_size="small", + quote_text="We wanted to consolidate onto a single, open platform. That way, we wouldn’t be tied to a single vendor, and we’d be able to change parameters at will. Canonical offered the most attractive licensing model for enterprise OpenStack support. Whereas other vendors wanted us to licence every OS we spun up in our environment, Canonical only charges per node. Particularly in the long term, Canonical’s approach is more cost-effective.", + citation_source_name_text="Macdonald Chamba", + citation_source_title_text="Head of Infrastructure and Cloud Services at Telekom Networks Malawi" + ) -%} + + {%- if slot == 'signpost_image' -%} + Telekom Networks Malawi + {%- endif -%} + + {%- if slot == 'cta' -%} + + Read the cloud services case study › + + {%- endif -%} + + {% endcall -%} + + {% call(slot) vf_cta_section( + variant='default', + layout='100', + ) -%} + {%- if slot == 'cta' -%} + Contact us about open source automation › + {%- endif -%} + {% endcall -%} + + {{ load_form("/solutions/automation") | safe }} + + +{% endblock content %} diff --git a/yarn.lock b/yarn.lock index 92d54fca..2f98786b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4968,10 +4968,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vanilla-framework@4.24.1: - version "4.24.1" - resolved "https://registry.yarnpkg.com/vanilla-framework/-/vanilla-framework-4.24.1.tgz#cd1f24ef3d048d410fda252aeafc015c44adc8cf" - integrity sha512-mX2kugxhMtoo1IbvRDyA0WY8IJ/z7Q3MO4k8LMz0Plc/ZnPTuOcUYretx/e/TmgLrCko0rmTLjrSiEkWJWySxA== +vanilla-framework@4.26.0: + version "4.26.0" + resolved "https://registry.yarnpkg.com/vanilla-framework/-/vanilla-framework-4.26.0.tgz#510e9fccae358cb8abbfedf483f17fc2e9340b8f" + integrity sha512-lFxAvQCwcx8DsHdAvS1Bd1iKCYWMwcjEjdVxQA2bm1Bk0M9ax1LjCZ7/zAcj6y1JkM06ThB2mqUkleghJTr/Tg== vanilla-framework@4.9.0: version "4.9.0" From a301e6f09efb5b8b43f8826bbc0a43393b85b872 Mon Sep 17 00:00:00 2001 From: Ogheneochuko Pedro Date: Fri, 18 Jul 2025 17:28:39 +0100 Subject: [PATCH 2/2] fix: allow tab select handler work with multiple tabs on a page Web pages sometimes have multiple tab sections which don't work as expected on small screens due to the limitation of the handler. Extend the handlers functonality to work with multiple tab selectors on a given page. --- static/js/tabbed-content.js | 44 +++++++++++++------ templates/careers/hiring-process/index.html | 4 +- templates/consulting/index.html | 4 +- templates/solutions/automation/index.html | 16 +++---- .../solutions/financial-services/index.html | 4 +- templates/solutions/telco/index.html | 8 ++-- 6 files changed, 48 insertions(+), 32 deletions(-) diff --git a/static/js/tabbed-content.js b/static/js/tabbed-content.js index 90d9305a..bd52afa8 100644 --- a/static/js/tabbed-content.js +++ b/static/js/tabbed-content.js @@ -241,26 +241,42 @@ }); }; + /* + Toggles show board based on selection on small screens + This is used for the tabbed content in pages where + the tabbed list is hidden on small screens and a dropdown + is used to select the tab. + The dropdown is populated with the tab IDs and when a selection + is made, the corresponding tab content is shown. + The dropdown is hidden on larger screens. + The `data-tablist` attribute is used to group the tab components + and dropdowns together, allowing for multiple tabbed sections + on the same page without conflicts. + */ (function () { // Toggles show board based on selection on small screens + const dropdownSelects = document.getElementsByName("tabSelect"); - const boards = document.querySelectorAll(`[role=tabpanel]`); - const dropdownSelect = document.getElementById("tabSelect"); - - dropdownSelect?.addEventListener("change", (event) => { - selectBoard(); + dropdownSelects.forEach((dropdownSelect) => { + dropdownSelect.addEventListener("change", (event) => { + selectBoard(dropdownSelect.dataset.tablist, dropdownSelect.value); + }); }); - function selectBoard() { - boards.forEach((board) => { - if (board.id === dropdownSelect.value) { - board.classList.remove("u-hide"); - board.focus(); - } else { - board.classList.add("u-hide"); - } + function selectBoard(tablist, dropdownValue) { + const tabpanelParent = document.querySelectorAll(`div[data-tablist="${tablist}"]`); + tabpanelParent.forEach((parent) => { + const boards = parent.querySelectorAll("[role='tabpanel']"); + boards.forEach((board) => { + if (board.id === dropdownValue) { + board.classList.remove("u-hide"); + board.focus(); + } else { + board.classList.add("u-hide"); + } + }); }); - } + } })(); document.addEventListener("DOMContentLoaded", () => { diff --git a/templates/careers/hiring-process/index.html b/templates/careers/hiring-process/index.html index 4354d316..f1d552ab 100644 --- a/templates/careers/hiring-process/index.html +++ b/templates/careers/hiring-process/index.html @@ -189,14 +189,14 @@
-
-
+

{% include "careers/hiring-process/tabs/stage-1.html" %} {% include "careers/hiring-process/tabs/stage-2.html" %} diff --git a/templates/consulting/index.html b/templates/consulting/index.html index b06f07c8..68709ec4 100644 --- a/templates/consulting/index.html +++ b/templates/consulting/index.html @@ -306,7 +306,7 @@
- @@ -317,7 +317,7 @@
-
+
-
-
+
-
-
+
-
-
+
- @@ -629,7 +629,7 @@ https://docs.google.com/document/d/12KMzjaVbi0ZWpw4BBkBTyOsaexGQdRkwsvW_t3Gw7x4/
-
+
- @@ -194,7 +194,7 @@
-
+
- @@ -415,7 +415,7 @@
-
+
{% include "solutions/telco/tabs/_telco-bare-metal-tab.html" %} {% include "solutions/telco/tabs/_telco-kernel-patching-tab.html" %} {% include "solutions/telco/tabs/_telco-machine-admin-tab.html" %} @@ -469,13 +469,13 @@
-
-
+
{% include "solutions/telco/tabs/_telco-self-healing-infra-tab.html" %} {% include "solutions/telco/tabs/_telco-highest-level-compliance-tab.html" %}