@@ -1870,6 +1870,41 @@ func referenceServerless(name, region, namespace, projectName string, labels map
18701870 }
18711871}
18721872
1873+ func referenceFlex (name , region , namespace , projectName string , labels map [string ]string ) * akov2.AtlasDeployment {
1874+ dictionary := resources .AtlasNameToKubernetesName ()
1875+ return & akov2.AtlasDeployment {
1876+ TypeMeta : metav1.TypeMeta {
1877+ Kind : "AtlasDeployment" ,
1878+ APIVersion : "atlas.mongodb.com/v1" ,
1879+ },
1880+ ObjectMeta : metav1.ObjectMeta {
1881+ Name : resources .NormalizeAtlasName (fmt .Sprintf ("%s-%s" , projectName , name ), dictionary ),
1882+ Namespace : namespace ,
1883+ Labels : labels ,
1884+ },
1885+ Spec : akov2.AtlasDeploymentSpec {
1886+ ProjectDualReference : akov2.ProjectDualReference {
1887+ ProjectRef : & akov2common.ResourceRefNamespaced {
1888+ Name : resources .NormalizeAtlasName (projectName , dictionary ),
1889+ Namespace : namespace ,
1890+ },
1891+ },
1892+ FlexSpec : & akov2.FlexSpec {
1893+ Name : name ,
1894+ ProviderSettings : & akov2.FlexProviderSettings {
1895+ BackingProviderName : string (akov2provider .ProviderAWS ),
1896+ RegionName : region ,
1897+ },
1898+ },
1899+ },
1900+ Status : akov2status.AtlasDeploymentStatus {
1901+ Common : akoapi.Common {
1902+ Conditions : []akoapi.Condition {},
1903+ },
1904+ },
1905+ }
1906+ }
1907+
18731908func referenceSharedCluster (name , region , namespace , projectName string , labels map [string ]string ) * akov2.AtlasDeployment {
18741909 cluster := referenceAdvancedCluster (name , region , namespace , projectName , labels , "" )
18751910 cluster .Spec .DeploymentSpec .ReplicationSpecs [0 ].RegionConfigs [0 ].ElectableSpecs = & akov2.Specs {
@@ -2255,6 +2290,52 @@ func TestKubernetesConfigGenerateSharedCluster(t *testing.T) {
22552290 assert .Equal (t , targetNamespace , secret .Namespace )
22562291}
22572292
2293+ func TestKubernetesConfigGenerateFlexCluster (t * testing.T ) {
2294+ n , err := e2e .RandInt (255 )
2295+ require .NoError (t , err )
2296+ g := newAtlasE2ETestGenerator (t )
2297+ g .generateProject (fmt .Sprintf ("kubernetes-%s" , n ))
2298+ g .tier = e2eSharedClusterTier
2299+ g .generateFlexCluster ()
2300+
2301+ expectedDeployment := referenceFlex (g .clusterName , g .clusterRegion , targetNamespace , g .projectName , expectedLabels )
2302+
2303+ cliPath , err := e2e .AtlasCLIBin ()
2304+ require .NoError (t , err )
2305+
2306+ // always register atlas entities
2307+ require .NoError (t , akov2 .AddToScheme (scheme .Scheme ))
2308+
2309+ cmd := exec .Command (cliPath ,
2310+ "kubernetes" ,
2311+ "config" ,
2312+ "generate" ,
2313+ "--projectId" ,
2314+ g .projectID ,
2315+ "--targetNamespace" ,
2316+ targetNamespace ,
2317+ "--includeSecrets" )
2318+ cmd .Env = os .Environ ()
2319+
2320+ resp , err := e2e .RunAndGetStdOut (cmd )
2321+ t .Log (string (resp ))
2322+ require .NoError (t , err , string (resp ))
2323+ var objects []runtime.Object
2324+ objects , err = getK8SEntities (resp )
2325+ require .NoError (t , err , "should not fail on decode" )
2326+ require .NotEmpty (t , objects )
2327+
2328+ p , found := findAtlasProject (objects )
2329+ require .True (t , found , "AtlasProject is not found in results" )
2330+ assert .Equal (t , targetNamespace , p .Namespace )
2331+ ds := atlasDeployments (objects )
2332+ assert .Len (t , ds , 1 )
2333+ assert .Equal (t , expectedDeployment , ds [0 ])
2334+ secret , found := findSecret (objects )
2335+ require .True (t , found , "Secret is not found in results" )
2336+ assert .Equal (t , targetNamespace , secret .Namespace )
2337+ }
2338+
22582339func atlasDeployments (objects []runtime.Object ) []* akov2.AtlasDeployment {
22592340 var ds []* akov2.AtlasDeployment
22602341 for i := range objects {
0 commit comments