Skip to content

Commit 4221741

Browse files
authored
mgmt aks, support FIPS-enable OS for agent pool machines (Azure#33944)
* test case * support FIPS * session records * changelog * javadoc
1 parent b62b71b commit 4221741

File tree

7 files changed

+1050
-6
lines changed

7 files changed

+1050
-6
lines changed

sdk/resourcemanager/azure-resourcemanager-containerservice/CHANGELOG.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@
33
## 2.25.0-beta.1 (Unreleased)
44

55
### Features Added
6-
7-
### Breaking Changes
8-
9-
### Bugs Fixed
10-
11-
### Other Changes
6+
- Supported FIPS-enabled OS for agent pool machines.
127

138
## 2.24.0 (2023-02-17)
149

sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/implementation/KubernetesClusterAgentPoolImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,11 @@ public Map<String, String> tags() {
173173
: Collections.unmodifiableMap(innerModel().tags());
174174
}
175175

176+
@Override
177+
public boolean isFipsEnabled() {
178+
return ResourceManagerUtils.toPrimitiveBoolean(innerModel().enableFips());
179+
}
180+
176181
// @Override
177182
// public void start() {
178183
// startAsync().block();
@@ -414,4 +419,10 @@ public KubernetesClusterAgentPoolImpl withoutTag(String key) {
414419
}
415420
return this;
416421
}
422+
423+
@Override
424+
public KubernetesClusterAgentPoolImpl withFipsEnabled() {
425+
innerModel().withEnableFips(true);
426+
return this;
427+
}
417428
}

sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/AgentPool.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,11 @@ public interface AgentPool extends HasName {
9191
* @return the tags of the agents.
9292
*/
9393
Map<String, String> tags();
94+
95+
/**
96+
* @return whether FIPS-enabled OS is been used for agent pool's machines
97+
* @see <a href="https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview">
98+
* Add a FIPS-enabled node pool</a> for more details.
99+
*/
100+
boolean isFipsEnabled();
94101
}

sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/AgentPoolData.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,14 @@ public KubeletDiskType kubeletDiskType() {
231231
return innerModel().kubeletDiskType();
232232
}
233233

234+
/**
235+
* {@inheritDoc}
236+
*/
237+
@Override
238+
public boolean isFipsEnabled() {
239+
return ResourceManagerUtils.toPrimitiveBoolean(innerModel().enableFips());
240+
}
241+
234242
/**
235243
* {@inheritDoc}
236244
*/
@@ -487,6 +495,18 @@ public AgentPoolData withTag(String key, String value) {
487495
return this;
488496
}
489497

498+
/**
499+
* Specify to use an FIPS-enabled OS for agent pool machines.
500+
*
501+
* @return the AgentPoolData object itself
502+
* @see <a href="https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview">
503+
* Add a FIPS-enabled node pool</a> for more details.
504+
*/
505+
public AgentPoolData withFipsEnabled() {
506+
innerModel().withEnableFips(true);
507+
return this;
508+
}
509+
490510
/**
491511
* {@inheritDoc}
492512
*/

sdk/resourcemanager/azure-resourcemanager-containerservice/src/main/java/com/azure/resourcemanager/containerservice/models/KubernetesClusterAgentPool.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,22 @@ interface WithDiskType<ParentT> {
435435
WithAttach<ParentT> withKubeletDiskType(KubeletDiskType kubeletDiskType);
436436
}
437437

438+
/**
439+
* The stage of a container service agent pool definition allowing to specify FIPS-enabled OS for an agent pool machines.
440+
*
441+
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
442+
*/
443+
interface WithFips<ParentT> {
444+
/**
445+
* Specify to use an FIPS-enabled OS for agent pool machines.
446+
*
447+
* @return the next stage of the definition
448+
* @see <a href="https://docs.microsoft.com/azure/aks/use-multiple-node-pools#add-a-fips-enabled-node-pool-preview">
449+
* Add a FIPS-enabled node pool</a> for more details.
450+
*/
451+
WithAttach<ParentT> withFipsEnabled();
452+
}
453+
438454
/**
439455
* The final stage of a container service agent pool definition. At this stage, any remaining optional settings
440456
* can be specified, or the container service agent pool can be attached to the parent container service
@@ -456,6 +472,7 @@ interface WithAttach<ParentT>
456472
WithVMPriority<ParentT>,
457473
WithBillingProfile<ParentT>,
458474
WithDiskType<ParentT>,
475+
WithFips<ParentT>,
459476
WithTags<ParentT>,
460477
Attachable.InDefinition<ParentT> {
461478
}

sdk/resourcemanager/azure-resourcemanager-containerservice/src/test/java/com/azure/resourcemanager/containerservice/KubernetesClustersTests.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,4 +474,54 @@ public void testBeginCreateAgentPool() {
474474
Assertions.assertEquals("Succeeded", agentPool.provisioningState());
475475
Assertions.assertEquals(agentPoolName1, agentPool.name());
476476
}
477+
478+
@Test
479+
public void testFipsEnabled() {
480+
String aksName = generateRandomResourceName("aks", 15);
481+
String dnsPrefix = generateRandomResourceName("dns", 10);
482+
String agentPoolName = generateRandomResourceName("ap0", 10);
483+
String agentPoolName1 = generateRandomResourceName("ap1", 10);
484+
String agentPoolName2 = generateRandomResourceName("ap2", 10);
485+
486+
// create cluster
487+
KubernetesCluster kubernetesCluster = containerServiceManager.kubernetesClusters().define(aksName)
488+
.withRegion(Region.US_CENTRAL)
489+
.withExistingResourceGroup(rgName)
490+
.withDefaultVersion()
491+
.withRootUsername("testaks")
492+
.withSshKey(SSH_KEY)
493+
.withSystemAssignedManagedServiceIdentity()
494+
.defineAgentPool(agentPoolName)
495+
.withVirtualMachineSize(ContainerServiceVMSizeTypes.STANDARD_D2_V2)
496+
.withAgentPoolVirtualMachineCount(1)
497+
.withAgentPoolType(AgentPoolType.VIRTUAL_MACHINE_SCALE_SETS)
498+
.withAgentPoolMode(AgentPoolMode.SYSTEM)
499+
.attach()
500+
.defineAgentPool(agentPoolName1)
501+
.withVirtualMachineSize(ContainerServiceVMSizeTypes.STANDARD_D2_V2)
502+
.withAgentPoolVirtualMachineCount(1)
503+
.withAgentPoolType(AgentPoolType.VIRTUAL_MACHINE_SCALE_SETS)
504+
.withAgentPoolMode(AgentPoolMode.USER)
505+
.withFipsEnabled() // enable FIPS
506+
.attach()
507+
.withDnsPrefix("mp1" + dnsPrefix)
508+
.create();
509+
510+
Assertions.assertFalse(kubernetesCluster.agentPools().get(agentPoolName).isFipsEnabled());
511+
Assertions.assertTrue(kubernetesCluster.agentPools().get(agentPoolName1).isFipsEnabled());
512+
513+
// create a new agent pool with FIPS enabled
514+
AgentPoolData request = new AgentPoolData()
515+
.withVirtualMachineSize(ContainerServiceVMSizeTypes.STANDARD_D2_V2)
516+
.withAgentPoolVirtualMachineCount(1)
517+
.withAgentPoolType(AgentPoolType.VIRTUAL_MACHINE_SCALE_SETS)
518+
.withAgentPoolMode(AgentPoolMode.USER)
519+
.withFipsEnabled();
520+
521+
AgentPool agentPool3 = kubernetesCluster.beginCreateAgentPool(agentPoolName2, request).getFinalResult();
522+
Assertions.assertTrue(agentPool3.isFipsEnabled());
523+
524+
kubernetesCluster.refresh();
525+
Assertions.assertTrue(kubernetesCluster.agentPools().get(agentPoolName2).isFipsEnabled());
526+
}
477527
}

0 commit comments

Comments
 (0)