document.addEventListener("DOMContentLoaded", async function () { // ✅ Immediately check for a real external link before loading Marketo const externalLink = document.querySelector("#link-external"); if (externalLink) { const href = externalLink.getAttribute("href")?.trim(); const isRealExternal = href && href !== "#" && !href.endsWith("#") && href.startsWith("http") && !href.includes(window.location.hostname + "#"); if (isRealExternal) { localStorage.setItem("external-link", href); } else { localStorage.removeItem("external-link"); } } async function loadMarketoScript() { return new Promise(function (resolve, reject) { const script = document.createElement("script"); script.src = "https://app-lon06.marketo.com/js/forms2/js/forms2.min.js"; script.onload = resolve; script.onerror = reject; document.body.appendChild(script); }); } try { await loadMarketoScript(); console.log('Marketo library loaded successfully'); } catch (error) { console.error('Failed to load Marketo library:', error); return; } const formPlaceholders = document.querySelectorAll("[js-marketo-form-id]"); formPlaceholders.forEach(function (el) { MktoForms2.loadForm( "//app-lon06.marketo.com", el.getAttribute("js-marketo-form-munckin-id"), el.getAttribute("js-marketo-form-id") || el.getAttribute("js-marketo-form-id-fallback"), function (form) { var formEl = form.getFormElem()[0]; var fields = formEl.querySelectorAll("input, select, textarea"); fields.forEach(function (field) { if (field.type === "hidden" || field.type === "submit") return; var label = formEl.querySelector("label[for='" + field.id + "']"); if (!label) return; var text = label.textContent.replace("*", "").replace(":", "").trim(); if (!text) return; if ( field.tagName.toLowerCase() === "input" || field.tagName.toLowerCase() === "textarea" ) { field.setAttribute("placeholder", text); } if (field.tagName.toLowerCase() === "select") { var firstOption = field.querySelector("option[value='']"); if (firstOption) { firstOption.textContent = text; } } }); form.onSuccess(function (values, followUpUrl) { const thankYouUrl = el.getAttribute("js-marketo-form-thank-you-url"); const downloadUrl = el.getAttribute("js-marketo-form-download-url"); const videoId = el.getAttribute("js-marketo-form-video-id"); // ✅ Store form-specific data if (videoId) localStorage.setItem("video-id", videoId); if (downloadUrl) localStorage.setItem("download-url", downloadUrl); // ✅ Double-check external link (in case dynamically updated) const linkExternal = document.querySelector("#link-external"); if (linkExternal) { const href = linkExternal.getAttribute("href")?.trim(); const isRealExternal = href && href !== "#" && !href.endsWith("#") && href.startsWith("http") && !href.includes(window.location.hostname + "#"); if (isRealExternal) { localStorage.setItem("external-link", href); } else { localStorage.removeItem("external-link"); } } // ✅ Redirect logic const externalStored = localStorage.getItem("external-link"); const downloadStored = localStorage.getItem("download-url"); let finalUrl = ""; if (externalStored && externalStored.trim() !== "") { finalUrl = externalStored; } else if (downloadStored && downloadStored.trim() !== "") { finalUrl = downloadStored; } if (thankYouUrl) { location.href = `${window.location.origin}${thankYouUrl}`; } else if (finalUrl) { location.href = finalUrl; } else if (followUpUrl) { location.href = followUpUrl; } window.dispatchEvent(new Event(`form-success-${el.getAttribute("js-marketo-form-id")}`)); return false; }); } ); }); });
A full stack AI platform

Ecosystem Integrations

Rafay integrates across the entire AI stack—so the hardware, networking, storage, and software your customers choose work together as one governed platform.

From security and networking fabrics to GPUs, compute, and storage, Rafay sits on top of best-in-class infrastructure and turns it into self-service AI clouds. Operators get orchestration, governance, and monetization across the full stack—without stitching it together themselves.

Explore the technologies we integrate with and how they fit into the Rafay platform below.

Two professionals examining a server rack with one holding a laptop and the other pointing at the equipment.

Centralize and Enhance Existing Automation Tools

When you connect the Kubernetes automation tooling of your choice to the Rafay controller, our centralized platform augments these tools with fleetwide lifecycle automation, standardization, drift detection, multitenancy with isolation, and more. This then allows IT to provide developers with self-service workflows, increasing their productivity while preserving stability, efficiency, and consistency across the environment.

Use Rafay’s Built-in Kubernetes Add Ons… or Bring your Own

Modern Kubernetes environments often need addon services that fall outside those provided within the core distribution. Numerous software solutions exist to provide these capabilities, and Rafay can integrate with them. Here are some of the most common we support. As a fully featured automated platform for Kubernetes (cloud-native) and AI workload operations, we also provide many common services out of the box (marked with our logo).

Analytics / Logging

Backup

CI/CD

Container Registry

Cost Management

Identity Management

Ingress

Machine Learning

Networking

Observability

Policy Management

Secrets Management

Security

Storage

Other

The Definitive GPU PaaS Reference Architecture

Understand what it takes to deliver the right GPU infrastructure to your business.