Class SwarmAgentTemplateConfigurator

java.lang.Object
io.jenkins.plugins.casc.BaseConfigurator<SwarmAgentTemplate>
io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator<SwarmAgentTemplate>
io.jenkins.plugins.swarmcloud.casc.SwarmAgentTemplateConfigurator
All Implemented Interfaces:
io.jenkins.plugins.casc.Configurator<SwarmAgentTemplate>

@OptionalExtension(requirePlugins="configuration-as-code") public class SwarmAgentTemplateConfigurator extends io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator<SwarmAgentTemplate>
Custom CasC Configurator for SwarmAgentTemplate.

Fixes two CasC export problems caused by the docker-swarm-plugin compatibility surface:

  1. Infinite recursion / StackOverflowError. SwarmAgentTemplate carries a back-reference to its owning SwarmCloud via public setParent(SwarmCloud) / getParent(). CasC's introspection picks up that getter/setter pair as an exportable attribute and recurses cloud → templates → template → parent → cloud → .... We exclude it from introspection here so the cycle never starts.
  2. Duplicate keys for alias setters. SwarmAgentTemplate exposes many parallel @DataBoundSetters (label/labelString, workingDir/remoteFs, limitsNanoCPUs/cpuLimit, *String variants, etc.) so that YAML written for the legacy docker-swarm-plugin still imports cleanly. Each setter creates its own CasC Attribute, which produced duplicated sibling keys on export. We strip the alias keys after the underlying configurator has computed the export mapping — the canonical key still carries the value, and the alias setters remain wired for backwards-compatible import.
  • Nested Class Summary

    Nested classes/interfaces inherited from class io.jenkins.plugins.casc.BaseConfigurator

    io.jenkins.plugins.casc.BaseConfigurator.TypePair
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    io.jenkins.plugins.casc.model.CNode
    describe(SwarmAgentTemplate instance, io.jenkins.plugins.casc.ConfigurationContext context)
     
    protected Set<String>
     

    Methods inherited from class io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator

    check, configure, describe, getDataBoundConstructor, getDisplayName, getImplementedAPI, getName, getNames, getTarget, instance

    Methods inherited from class io.jenkins.plugins.casc.BaseConfigurator

    compare, configure, createAttribute, equals, handleUnknown, hashCode

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.jenkins.plugins.casc.Configurator

    canConfigure, describeStructure, getAttributes, getConfigurators
  • Constructor Details

    • SwarmAgentTemplateConfigurator

      public SwarmAgentTemplateConfigurator()
  • Method Details

    • exclusions

      protected Set<String> exclusions()
      Overrides:
      exclusions in class io.jenkins.plugins.casc.BaseConfigurator<SwarmAgentTemplate>
    • describe

      public io.jenkins.plugins.casc.model.CNode describe(SwarmAgentTemplate instance, io.jenkins.plugins.casc.ConfigurationContext context) throws Exception
      Specified by:
      describe in interface io.jenkins.plugins.casc.Configurator<SwarmAgentTemplate>
      Overrides:
      describe in class io.jenkins.plugins.casc.impl.configurators.DataBoundConfigurator<SwarmAgentTemplate>
      Throws:
      Exception