package console // swapCopyStrings is the console's copy for the zero-downtime surfaces (spec // ยง9.2): the Deploys card on the app's settings page, and the installed and // serving facts, failure hold and Retry action on an instance page. Every // string is approved copy, pinned by the zero-downtime copy record. type swapCopyStrings struct { Heading string Intro string SwapLabel string OverlapOption string HoldOption string ConcurrencyLabel string MigrationsNote string Saved string Invalid string StoreFailed string RateLimited string Unread string NoBucket string Installed string Serving string Hold string HoldText string HoldDownText string HoldDeclinedText string HoldDeclinedDownText string PromoteRetry string RetryButton string Rolling string Asleep string RetryTitle string RetryLine string RetryLineDeclined string RetryDone string RetryFailed string RetryLimited string NotHeld string Audit string } var swapCopy = swapCopyStrings{ Heading: "Deploys", Intro: "When a new build reaches a running instance, the old instance keeps running until the new one is ready.", SwapLabel: "Swap mode:", OverlapOption: "overlap (default)", HoldOption: "hold", ConcurrencyLabel: "Instances that swap at once on each box:", MigrationsNote: "With overlap, the old and new builds share the instance's database for a few seconds. Migrations need to be backward compatible to ensure the old version keeps working. Use hold when a release cannot do that.", Saved: "Swap policy saved: %s, %d at a time on each box.", Invalid: "Choose overlap or hold, and a whole number of 1 or more.", StoreFailed: "Could not save the swap policy. Try again.", RateLimited: "Too many changes. Try again in a minute.", Unread: "This app's swap policy could not be read just now, so it cannot be changed here. Reload before concluding anything.", NoBucket: "No deployment bucket on this host, so the swap policy cannot be changed here.", Installed: "Installed build", Serving: "Serving build", Hold: "Failure hold", HoldText: "Build %s failed on this box because %s. This instance stays on %s until you retry it or ship a newer build.", // HoldDownText is the hold row when the failed attempt left the instance // down (hold mode, attempt down): nothing serves it, so it stays on // nothing (Astra plan 6 R1 #8). HoldDownText: "Build %s failed in hold mode on this box, and nothing is serving this instance. Roll back with carlos rollback, or retry it.", // HoldDeclinedText is the hold row for a box that declined the flag: it // holds the failed build too, but it will not start the instance on it, // so "stays on" would be untrue. The decline's Reason is empty there. HoldDeclinedText: "Build %s failed on this box. This box cannot run two builds side by side, so it will not start this instance on that build. Retry it, or ship a newer build.", // HoldDeclinedDownText is the hold row for a declined box whose failed // attempt left the instance down: such a box stops then starts because it // cannot run two builds side by side, whatever the member's swap policy, // so it is not "in hold mode". HoldDeclinedDownText: "Build %s failed on this box, and nothing is serving this instance. This box cannot run two builds side by side. Roll back with carlos rollback, or retry it.", PromoteRetry: "To try it again on every box: carlos promote --app %s --retry %s %s", RetryButton: "Retry", Rolling: "Build %s is installed and rolling out. Build %s serves until the new one passes its health check.", Asleep: "Build %s is installed and starts on the next request.", RetryTitle: "Retry build {build} on {host}?", RetryLine: "This clears the failure hold on {host}. Its next attempt at {build} runs as a canary. If that fails too, {host} is held again.", // RetryLineDeclined is the confirmation for a declined box: no canary // runs there, the next start runs the build as it always has. RetryLineDeclined: "This clears the failure hold on {host}. Its box cannot run two builds side by side, so its next start runs {build} the old way, with no canary.", RetryDone: "Retry requested for {host}.", RetryFailed: "The retry request failed. Try again.", RetryLimited: "Too many retry requests. Try again later.", NotHeld: "{host} is no longer held back by a failed build, so there is nothing to retry.", Audit: "Retry of build {build} requested for {host}.", } func (p page) SwapCopy() swapCopyStrings { return swapCopy }