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; }); } ); }); });
Videos

Developer Self-Service for Application Teams using Rafay Workspaces

Rafay has introduced a unique, market-leading capability called “Workspaces” to enable developer self-service. With a workspace, operations teams can

  • Completely offload lifecycle management of Kubernetes namespaces to workspace administrators without having to provide them with excessive cluster-wide privileges.
  • Provide a self-service experience for application teams i.e. they should be able to handle namespace lifecycle management without requiring any form of involvement by operations personnel.
  • Prevent noisy neighbor issues related to multi-tenancy on shared clusters by allowing the configuration and enforcement of resource quotas for a workspace.
  • Dramatically reduce the ongoing operational costs by avoiding a dedicated cluster per application operating model.

Trusted by leading enterprises, neoclouds and service providers

Alation
Amgen
Samsung
Moneygram
Genentech
Software
Palo Alto Networks
U.S. Air Force
Firmus
Buzz HPC
Indosat
Telus
Alation
Amgen
Samsung
Moneygram
Genentech
Software
Palo Alto Networks
U.S. Air Force
Firmus
Buzz HPC
Indosat
Telus
Alation
Amgen
Samsung
Moneygram
Genentech
Software
Palo Alto Networks
U.S. Air Force
Firmus
Buzz HPC
Indosat
Telus