@@ -1938,6 +1938,162 @@ var _ = Describe("vars", func() {
19381938 intctrlutil .PodFQDN (synthesizedComp .Namespace , synthesizedComp .FullCompName , podName ("leader" )))
19391939 checkEnvVarWithValue (envVars , "serviceVersion" , "v3.6.5" )
19401940 })
1941+
1942+ It ("uses desired pods for current component when the running InstanceSet is stale" , func () {
1943+ synthesizedComp .Replicas = 5
1944+ vars := []appsv1.EnvVar {
1945+ {
1946+ Name : "podFQDNs" ,
1947+ ValueFrom : & appsv1.VarSource {
1948+ ComponentVarRef : & appsv1.ComponentVarSelector {
1949+ ClusterObjectReference : appsv1.ClusterObjectReference {
1950+ CompDef : synthesizedComp .CompDefName ,
1951+ Optional : required (),
1952+ },
1953+ ComponentVars : appsv1.ComponentVars {
1954+ PodFQDNs : & appsv1 .VarRequired ,
1955+ },
1956+ },
1957+ },
1958+ },
1959+ }
1960+ reader := & mockReader {
1961+ cli : testCtx .Cli ,
1962+ objs : []client.Object {
1963+ & appsv1.Component {
1964+ ObjectMeta : metav1.ObjectMeta {
1965+ Namespace : testCtx .DefaultNamespace ,
1966+ Name : constant .GenerateClusterComponentName (synthesizedComp .ClusterName , synthesizedComp .Name ),
1967+ },
1968+ Spec : appsv1.ComponentSpec {
1969+ CompDef : synthesizedComp .CompDefName ,
1970+ Replicas : 5 ,
1971+ },
1972+ },
1973+ & workloads.InstanceSet {
1974+ ObjectMeta : metav1.ObjectMeta {
1975+ Namespace : testCtx .DefaultNamespace ,
1976+ Name : constant .GenerateWorkloadNamePattern (synthesizedComp .ClusterName , synthesizedComp .Name ),
1977+ },
1978+ Spec : workloads.InstanceSetSpec {
1979+ Replicas : ptr .To (int32 (3 )),
1980+ },
1981+ },
1982+ },
1983+ }
1984+
1985+ _ , envVars , err := ResolveTemplateNEnvVars (testCtx .Ctx , reader , synthesizedComp , vars )
1986+
1987+ Expect (err ).Should (Succeed ())
1988+ expected := make ([]string , 0 , 5 )
1989+ for i := 0 ; i < 5 ; i ++ {
1990+ podName := fmt .Sprintf ("%s-%s-%d" , synthesizedComp .ClusterName , synthesizedComp .Name , i )
1991+ expected = append (expected , intctrlutil .PodFQDN (synthesizedComp .Namespace , synthesizedComp .FullCompName , podName ))
1992+ }
1993+ checkEnvVarWithValue (envVars , "podFQDNs" , strings .Join (expected , "," ))
1994+ })
1995+
1996+ It ("uses desired pods for current component before the InstanceSet exists" , func () {
1997+ synthesizedComp .Replicas = 5
1998+ vars := []appsv1.EnvVar {
1999+ {
2000+ Name : "podNames" ,
2001+ ValueFrom : & appsv1.VarSource {
2002+ ComponentVarRef : & appsv1.ComponentVarSelector {
2003+ ClusterObjectReference : appsv1.ClusterObjectReference {
2004+ CompDef : synthesizedComp .CompDefName ,
2005+ Optional : required (),
2006+ },
2007+ ComponentVars : appsv1.ComponentVars {
2008+ PodNames : & appsv1 .VarRequired ,
2009+ },
2010+ },
2011+ },
2012+ },
2013+ }
2014+ reader := & mockReader {
2015+ cli : testCtx .Cli ,
2016+ objs : []client.Object {
2017+ & appsv1.Component {
2018+ ObjectMeta : metav1.ObjectMeta {
2019+ Namespace : testCtx .DefaultNamespace ,
2020+ Name : constant .GenerateClusterComponentName (synthesizedComp .ClusterName , synthesizedComp .Name ),
2021+ },
2022+ Spec : appsv1.ComponentSpec {
2023+ CompDef : synthesizedComp .CompDefName ,
2024+ Replicas : 5 ,
2025+ },
2026+ },
2027+ },
2028+ }
2029+
2030+ _ , envVars , err := ResolveTemplateNEnvVars (testCtx .Ctx , reader , synthesizedComp , vars )
2031+
2032+ Expect (err ).Should (Succeed ())
2033+ expected := make ([]string , 0 , 5 )
2034+ for i := 0 ; i < 5 ; i ++ {
2035+ expected = append (expected , fmt .Sprintf ("%s-%s-%d" , synthesizedComp .ClusterName , synthesizedComp .Name , i ))
2036+ }
2037+ checkEnvVarWithValue (envVars , "podNames" , strings .Join (expected , "," ))
2038+ })
2039+
2040+ It ("uses desired pods for another component when the running InstanceSet is stale" , func () {
2041+ synthesizedComp .Replicas = 5
2042+ const anotherCompName = "another"
2043+ const anotherCompDefName = "anotherDef"
2044+ synthesizedComp .Comp2CompDefs = map [string ]string {
2045+ anotherCompName : anotherCompDefName ,
2046+ }
2047+ vars := []appsv1.EnvVar {
2048+ {
2049+ Name : "podNames" ,
2050+ ValueFrom : & appsv1.VarSource {
2051+ ComponentVarRef : & appsv1.ComponentVarSelector {
2052+ ClusterObjectReference : appsv1.ClusterObjectReference {
2053+ CompDef : anotherCompDefName ,
2054+ Optional : required (),
2055+ },
2056+ ComponentVars : appsv1.ComponentVars {
2057+ PodNames : & appsv1 .VarRequired ,
2058+ },
2059+ },
2060+ },
2061+ },
2062+ }
2063+ reader := & mockReader {
2064+ cli : testCtx .Cli ,
2065+ objs : []client.Object {
2066+ & appsv1.Component {
2067+ ObjectMeta : metav1.ObjectMeta {
2068+ Namespace : testCtx .DefaultNamespace ,
2069+ Name : constant .GenerateClusterComponentName (synthesizedComp .ClusterName , anotherCompName ),
2070+ },
2071+ Spec : appsv1.ComponentSpec {
2072+ CompDef : anotherCompDefName ,
2073+ Replicas : 5 ,
2074+ },
2075+ },
2076+ & workloads.InstanceSet {
2077+ ObjectMeta : metav1.ObjectMeta {
2078+ Namespace : testCtx .DefaultNamespace ,
2079+ Name : constant .GenerateWorkloadNamePattern (synthesizedComp .ClusterName , anotherCompName ),
2080+ },
2081+ Spec : workloads.InstanceSetSpec {
2082+ Replicas : ptr .To (int32 (3 )),
2083+ },
2084+ },
2085+ },
2086+ }
2087+
2088+ _ , envVars , err := ResolveTemplateNEnvVars (testCtx .Ctx , reader , synthesizedComp , vars )
2089+
2090+ Expect (err ).Should (Succeed ())
2091+ expected := make ([]string , 0 , 5 )
2092+ for i := 0 ; i < 5 ; i ++ {
2093+ expected = append (expected , fmt .Sprintf ("%s-%s-%d" , synthesizedComp .ClusterName , anotherCompName , i ))
2094+ }
2095+ checkEnvVarWithValue (envVars , "podNames" , strings .Join (expected , "," ))
2096+ })
19412097 })
19422098
19432099 Context ("cluster vars" , func () {
0 commit comments