Repository: Azure/ARO-RP
Pull request #2379 (2022-09-02 18:56:33)

bump ado agent to 2.206.1
### Which issue this PR addresses:

<!--
Please include a link to the ADO work item as well as any GitHub issues.

Usage: `Fixes #<GitHub issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes https://msazure.visualstudio.com/AzureRedHatOpenShift/_workitems/edit/15342184/

### What this PR does / why we need it:
Although the ado agents upgrade automatically, the vulnerable packages from the prior version are left behind.  This change bumps the ado agent to 2.206.1 which does not ship with vulnerable packages.

<!--
Include a brief summary of what the PR is intended to accomplish and how the PR
does it. (2-3 sentences)
-->

### Test plan for issue:
There is another script addition required to fix the expanding volume issue, once that is complete I will redeploy the CIVMSS and ensure VMs bootstrap successfully and CI jobs pass.   
<!--
How did you test that this PR works?

- Are there unit tests?
- Are there integration/e2e tests?
- If it is not possible to write automated tests, explain why and document how
  to manually test and verify the feature.
-->

### Is there any documentation that needs to be updated for this PR?
N/A
<!--
- If yes and the docs are in GitHub, include doc updates in the PR.
- If yes and the docs are not in GitHub (i.e. ADO wiki), include a link to the
  docs.
- If no, explain why (e.g. "tech debt cleanup, N/A").
-->


Patch:
diff --git a/.sha256sum b/.sha256sum
index a81b13cd6..eef566c33 100644
--- a/.sha256sum
+++ b/.sha256sum
@@ -1,4 +1,4 @@
 468fa0da0a50d50640ec57843ad288af343128b39f5bf23e76e4e336580883d4  swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2020-04-30/redhatopenshift.json
 c323c84befa5ea11da50a2407050abed6540ea01e796720bc2241604ce80567c  swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/preview/2021-09-01-preview/redhatopenshift.json
 e4e522e41855de71c0318db31cbd96c8713e7a74e7c81911bb494f0b194b3f43  swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-04-01/redhatopenshift.json
-1904724f413437e8f7bec1493e1c332e48b2dffd0f7d1f2f6060c281c07880ce  swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json
+4c3d8755c87f9b749a0ff6c76fae08d44225f7aa7becd913936a883bfe9ecfe3  swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json
diff --git a/pkg/api/v20220904/openshiftcluster.go b/pkg/api/v20220904/openshiftcluster.go
index b41f49098..73f8cbf9d 100644
--- a/pkg/api/v20220904/openshiftcluster.go
+++ b/pkg/api/v20220904/openshiftcluster.go
@@ -132,8 +132,19 @@ type ServicePrincipalProfile struct {
 	ClientSecret string `json:"clientSecret,omitempty" mutable:"true"`
 }
 
+// SoftwareDefinedNetwork is a choice of network used for Pods.
+type SoftwareDefinedNetwork string
+
+const (
+	SoftwareDefinedNetworkOVNKubernetes SoftwareDefinedNetwork = "OVNKubernetes"
+	SoftwareDefinedNetworkOpenShiftSDN  SoftwareDefinedNetwork = "OpenShiftSDN"
+)
+
 // NetworkProfile represents a network profile.
 type NetworkProfile struct {
+	// The SDN type used for OpenShift/Kubernetes Pods.
+	SoftwareDefinedNetwork SoftwareDefinedNetwork `json:"softwareDefinedNetwork,omitempty"`
+
 	// The CIDR used for OpenShift/Kubernetes Pods.
 	PodCIDR string `json:"podCidr,omitempty"`
 
diff --git a/pkg/api/v20220904/openshiftcluster_convert.go b/pkg/api/v20220904/openshiftcluster_convert.go
index 6e7c7f105..6c9dd53aa 100644
--- a/pkg/api/v20220904/openshiftcluster_convert.go
+++ b/pkg/api/v20220904/openshiftcluster_convert.go
@@ -36,8 +36,9 @@ func (c *openShiftClusterConverter) ToExternal(oc *api.OpenShiftCluster) interfa
 				ClientSecret: string(oc.Properties.ServicePrincipalProfile.ClientSecret),
 			},
 			NetworkProfile: NetworkProfile{
-				PodCIDR:     oc.Properties.NetworkProfile.PodCIDR,
-				ServiceCIDR: oc.Properties.NetworkProfile.ServiceCIDR,
+				SoftwareDefinedNetwork: SoftwareDefinedNetwork(oc.Properties.NetworkProfile.SoftwareDefinedNetwork),
+				PodCIDR:                oc.Properties.NetworkProfile.PodCIDR,
+				ServiceCIDR:            oc.Properties.NetworkProfile.ServiceCIDR,
 			},
 			MasterProfile: MasterProfile{
 				VMSize:              VMSize(oc.Properties.MasterProfile.VMSize),
@@ -140,6 +141,7 @@ func (c *openShiftClusterConverter) ToInternal(_oc interface{}, out *api.OpenShi
 	out.Properties.ClusterProfile.FipsValidatedModules = api.FipsValidatedModules(oc.Properties.ClusterProfile.FipsValidatedModules)
 	out.Properties.ServicePrincipalProfile.ClientID = oc.Properties.ServicePrincipalProfile.ClientID
 	out.Properties.ServicePrincipalProfile.ClientSecret = api.SecureString(oc.Properties.ServicePrincipalProfile.ClientSecret)
+	out.Properties.NetworkProfile.SoftwareDefinedNetwork = api.SoftwareDefinedNetwork(oc.Properties.NetworkProfile.SoftwareDefinedNetwork)
 	out.Properties.NetworkProfile.PodCIDR = oc.Properties.NetworkProfile.PodCIDR
 	out.Properties.NetworkProfile.ServiceCIDR = oc.Properties.NetworkProfile.ServiceCIDR
 	out.Properties.MasterProfile.VMSize = api.VMSize(oc.Properties.MasterProfile.VMSize)
diff --git a/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/enums.go b/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/enums.go
index e69b340fb..e4df39f94 100644
--- a/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/enums.go
+++ b/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/enums.go
@@ -89,6 +89,21 @@ func PossibleProvisioningStateValues() []ProvisioningState {
 	return []ProvisioningState{AdminUpdating, Creating, Deleting, Failed, Succeeded, Updating}
 }
 
+// SoftwareDefinedNetwork enumerates the values for software defined network.
+type SoftwareDefinedNetwork string
+
+const (
+	// OpenShiftSDN ...
+	OpenShiftSDN SoftwareDefinedNetwork = "OpenShiftSDN"
+	// OVNKubernetes ...
+	OVNKubernetes SoftwareDefinedNetwork = "OVNKubernetes"
+)
+
+// PossibleSoftwareDefinedNetworkValues returns an array of possible values for the SoftwareDefinedNetwork const type.
+func PossibleSoftwareDefinedNetworkValues() []SoftwareDefinedNetwork {
+	return []SoftwareDefinedNetwork{OpenShiftSDN, OVNKubernetes}
+}
+
 // Visibility enumerates the values for visibility.
 type Visibility string
 
diff --git a/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/models.go b/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/models.go
index 07618d55e..feb399e8e 100644
--- a/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/models.go
+++ b/pkg/client/services/redhatopenshift/mgmt/2022-09-04/redhatopenshift/models.go
@@ -142,6 +142,8 @@ type MasterProfile struct {
 
 // NetworkProfile networkProfile represents a network profile.
 type NetworkProfile struct {
+	// SoftwareDefinedNetwork - The SDN type used for OpenShift/Kubernetes Pods. Possible values include: 'OVNKubernetes', 'OpenShiftSDN'
+	SoftwareDefinedNetwork SoftwareDefinedNetwork `json:"softwareDefinedNetwork,omitempty"`
 	// PodCidr - The CIDR used for OpenShift/Kubernetes Pods.
 	PodCidr *string `json:"podCidr,omitempty"`
 	// ServiceCidr - The CIDR used for OpenShift/Kubernetes Services.
diff --git a/pkg/deploy/assets/env-development.json b/pkg/deploy/assets/env-development.json
index 861ae6afe..6e9dc3e52 100644
--- a/pkg/deploy/assets/env-development.json
+++ b/pkg/deploy/assets/env-development.json
@@ -236,7 +236,7 @@
                                     "autoUpgradeMinorVersion": true,
                                     "settings": {},
                                     "protectedSettings": {
-                                        "script": "[base64(concat(base64ToString('c2V0IC1lCgo='),'CIAZPTOKEN=''',parameters('ciAzpToken'),'''\n','CIPOOLNAME=''',parameters('ciPoolName'),'''\n','\n',base64ToString('CiMgSGFjayAtIHdhaXQgb24gY3JlYXRlIGJlY2F1c2UgdGhlIFdBTGludXhBZ2VudCBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIHl1bSB1cGRhdGUgLXkgYmVsb3cKc2xlZXAgNjAKCmZvciBhdHRlbXB0IGluIHsxLi41fTsgZG8KICB5dW0gLXkgdXBkYXRlICYmIGJyZWFrCiAgaWYgW1sgJHthdHRlbXB0fSAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKCmx2ZXh0ZW5kIC1sICs1MCVGUkVFIC9kZXYvcm9vdHZnL2hvbWVsdgp4ZnNfZ3Jvd2ZzIC9ob21lCgpsdmV4dGVuZCAtbCArNTAlRlJFRSAvZGV2L3Jvb3R2Zy90bXBsdgp4ZnNfZ3Jvd2ZzIC90bXAKCmx2ZXh0ZW5kIC1sICsxMDAlRlJFRSAvZGV2L3Jvb3R2Zy92YXJsdgp4ZnNfZ3Jvd2ZzIC92YXIKCnJwbSAtLWltcG9ydCBodHRwczovL2RsLmZlZG9yYXByb2plY3Qub3JnL3B1Yi9lcGVsL1JQTS1HUEctS0VZLUVQRUwtOApycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5taWNyb3NvZnQuY29tL2tleXMvbWljcm9zb2Z0LmFzYwoKeXVtIC15IGluc3RhbGwgaHR0cHM6Ly9kbC5mZWRvcmFwcm9qZWN0Lm9yZy9wdWIvZXBlbC9lcGVsLXJlbGVhc2UtbGF0ZXN0LTgubm9hcmNoLnJwbQoKY2F0ID4vZXRjL3l1bS5yZXBvcy5kL2F6dXJlLnJlcG8gPDwnRU9GJwpbYXp1cmUtY2xpXQpuYW1lPWF6dXJlLWNsaQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZS1jbGkKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9eWVzCkVPRgoKeXVtIC15IGluc3RhbGwgYXp1cmUtY2xpIHBvZG1hbiBwb2RtYW4tZG9ja2VyIGpxIGdjYyBncGdtZS1kZXZlbCBsaWJhc3N1YW4tZGV2ZWwgZ2l0IG1ha2UgdG1wd2F0Y2ggcHl0aG9uMy1kZXZlbCBodG9wIGdvLXRvb2xzZXQtMS4xNy4xMi0xLm1vZHVsZStlbDguNi4wKzE2MDE0K2EzNzJjMDBiIG9wZW52cG4KCiMgU3VwcHJlc3MgZW11bGF0aW9uIG91dHB1dCBmb3IgcG9kbWFuIGluc3RlYWQgb2YgZG9ja2VyIGZvciBheiBhY3IgY29tcGF0YWJpbGl0eQpta2RpciAtcCAvZXRjL2NvbnRhaW5lcnMvCnRvdWNoIC9ldGMvY29udGFpbmVycy9ub2RvY2tlcgoKVlNUU19BR0VOVF9WRVJTSU9OPTIuMTkzLjEKbWtkaXIgL2hvbWUvY2xvdWQtdXNlci9hZ2VudApwdXNoZCAvaG9tZS9jbG91ZC11c2VyL2FnZW50CmN1cmwgLXMgaHR0cHM6Ly92c3RzYWdlbnRwYWNrYWdlLmF6dXJlZWRnZS5uZXQvYWdlbnQvJHtWU1RTX0FHRU5UX1ZFUlNJT059L3ZzdHMtYWdlbnQtbGludXgteDY0LSR7VlNUU19BR0VOVF9WRVJTSU9OfS50YXIuZ3ogfCB0YXIgLXh6CmNob3duIC1SIGNsb3VkLXVzZXI6Y2xvdWQtdXNlciAuCgouL2Jpbi9pbnN0YWxsZGVwZW5kZW5jaWVzLnNoCnN1ZG8gLXUgY2xvdWQtdXNlciAuL2NvbmZpZy5zaCAtLXVuYXR0ZW5kZWQgLS11cmwgaHR0cHM6Ly9kZXYuYXp1cmUuY29tL21zYXp1cmUgLS1hdXRoIHBhdCAtLXRva2VuICIkQ0lBWlBUT0tFTiIgLS1wb29sICIkQ0lQT09MTkFNRSIgLS1hZ2VudCAiQVJPLVJIRUwtJEhPU1ROQU1FIiAtLXJlcGxhY2UKLi9zdmMuc2ggaW5zdGFsbCBjbG91ZC11c2VyCnBvcGQKCmNhdCA+L2hvbWUvY2xvdWQtdXNlci9hZ2VudC8ucGF0aCA8PCdFT0YnCi91c3IvbG9jYWwvYmluOi91c3IvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L2hvbWUvY2xvdWQtdXNlci8ubG9jYWwvYmluOi9ob21lL2Nsb3VkLXVzZXIvYmluCkVPRgoKIyBTZXQgdGhlIGFnZW50J3MgIlN5c3RlbSBjYXBhYmlsaXRpZXMiIGZvciB0ZXN0cyAoZ28tMS4xNyBhbmQgR09MQU5HX0ZJUFMpIGluIHRoZSBhZ2VudCdzIC5lbnYgZmlsZQojIGFuZCBhZGQgYSBIQUNLIGZvciBYREdfUlVOVElNRV9ESVI6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3BvZG1hbi9pc3N1ZXMvNDI3CmNhdCA+L2hvbWUvY2xvdWQtdXNlci9hZ2VudC8uZW52IDw8J0VPRicKZ28tMS4xNz10cnVlCkdPTEFOR19GSVBTPTEKWERHX1JVTlRJTUVfRElSPS9ydW4vdXNlci8xMDAwCkVPRgoKY2F0ID4vZXRjL2Nyb24ud2Vla2x5L3l1bXVwZGF0ZSA8PCdFT0YnCiMhL2Jpbi9iYXNoCgp5dW0gdXBkYXRlIC15CkVPRgpjaG1vZCAreCAvZXRjL2Nyb24ud2Vla2x5L3l1bXVwZGF0ZQoKY2F0ID4vZXRjL2Nyb24uaG91cmx5L3RtcHdhdGNoIDw8J0VPRicKIyEvYmluL2Jhc2gKCmV4ZWMgL3NiaW4vdG1wd2F0Y2ggMjRoIC90bXAKRU9GCmNobW9kICt4IC9ldGMvY3Jvbi5ob3VybHkvdG1wd2F0Y2gKCiMgSEFDSyAtIHBvZG1hbiBkb2Vzbid0IGFsd2F5cyB0ZXJtaW5hdGUgb3IgY2xlYW4gdXAgaXQncyBwYXVzZS5waWQgZmlsZSBjYXVzaW5nCiMgJ2Nhbm5vdCByZWV4ZWMgZXJyb3JzJyBzbyBhdHRlbXB0IHRvIGNsZWFuIGl0IHVwIGV2ZXJ5IG1pbnV0ZSB0byBrZWVwIHBpcGVsaW5lcyBydW5uaW5nCiMgc21vb3RobHkKY2F0ID4vdXNyL2xvY2FsL2Jpbi9maXgtcG9kbWFuLXBhdXNlLnNoIDw8J0VPRicKIyEvYmluL2Jhc2gKClBBVVNFX0ZJTEU9Jy90bXAvcG9kbWFuLXJ1bi0xMDAwL2xpYnBvZC90bXAvcGF1c2UucGlkJwoKaWYgWyAtZiAiJHtQQVVTRV9GSUxFfSIgXTsgdGhlbgoJUElEPSQoY2F0ICR7UEFVU0VfRklMRX0pCglpZiAhIHBzIC1wICRQSUQgPiAvZGV2L251bGw7IHRoZW4KCQlybSAkUEFVU0VfRklMRQoJZmkKZmkKRU9GCmNobW9kICt4IC91c3IvbG9jYWwvYmluL2ZpeC1wb2RtYW4tcGF1c2Uuc2gKCiMgSEFDSyAtIC90bXAgd2lsbCBmaWxsIHVwIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMKIyBkZWxldGUgYW55dGhpbmcgbm90IGFjY2Vzc2VkIHdpdGhpbiAyIGRheXMKY2F0ID4vdXNyL2xvY2FsL2Jpbi9jbGVhbi10bXAuc2ggPDwnRU9GJwojIS9iaW4vYmFzaAoKZmluZCAvdG1wIC10eXBlIGYgXCggISAtdXNlciByb290IFwpIC1hdGltZSArMiAtZGVsZXRlCgpFT0YKY2htb2QgK3ggL3Vzci9sb2NhbC9iaW4vY2xlYW4tdG1wLnNoCgplY2hvICIwIDAgKi8xICogKiAvdXNyL2xvY2FsL2Jpbi9jbGVhbi10bXAuc2giID4+IGNyb24KZWNobyAiKiAqICogKiAqIC91c3IvbG9jYWwvYmluL2ZpeC1wb2RtYW4tcGF1c2Uuc2giID4+IGNyb24KCiMgSEFDSyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3BvZG1hbi9pc3N1ZXMvOTAwMgplY2hvICJAcmVib290IGxvZ2luY3RsIGVuYWJsZS1saW5nZXIgY2xvdWQtdXNlciIgPj4gY3JvbgoKY3JvbnRhYiBjcm9uCnJtIGNyb24KCihzbGVlcCAzMDsgcmVib290KSAmCg==')))]"
+                                        "script": "[base64(concat(base64ToString('c2V0IC1lCgo='),'CIAZPTOKEN=''',parameters('ciAzpToken'),'''\n','CIPOOLNAME=''',parameters('ciPoolName'),'''\n','\n',base64ToString('CiMgSGFjayAtIHdhaXQgb24gY3JlYXRlIGJlY2F1c2UgdGhlIFdBTGludXhBZ2VudCBzb21ldGltZXMgY29uZmxpY3RzIHdpdGggdGhlIHl1bSB1cGRhdGUgLXkgYmVsb3cKc2xlZXAgNjAKCmZvciBhdHRlbXB0IGluIHsxLi41fTsgZG8KICB5dW0gLXkgdXBkYXRlICYmIGJyZWFrCiAgaWYgW1sgJHthdHRlbXB0fSAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKCmx2ZXh0ZW5kIC1sICs1MCVGUkVFIC9kZXYvcm9vdHZnL2hvbWVsdgp4ZnNfZ3Jvd2ZzIC9ob21lCgpsdmV4dGVuZCAtbCArNTAlRlJFRSAvZGV2L3Jvb3R2Zy90bXBsdgp4ZnNfZ3Jvd2ZzIC90bXAKCmx2ZXh0ZW5kIC1sICsxMDAlRlJFRSAvZGV2L3Jvb3R2Zy92YXJsdgp4ZnNfZ3Jvd2ZzIC92YXIKCnJwbSAtLWltcG9ydCBodHRwczovL2RsLmZlZG9yYXByb2plY3Qub3JnL3B1Yi9lcGVsL1JQTS1HUEctS0VZLUVQRUwtOApycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5taWNyb3NvZnQuY29tL2tleXMvbWljcm9zb2Z0LmFzYwoKeXVtIC15IGluc3RhbGwgaHR0cHM6Ly9kbC5mZWRvcmFwcm9qZWN0Lm9yZy9wdWIvZXBlbC9lcGVsLXJlbGVhc2UtbGF0ZXN0LTgubm9hcmNoLnJwbQoKY2F0ID4vZXRjL3l1bS5yZXBvcy5kL2F6dXJlLnJlcG8gPDwnRU9GJwpbYXp1cmUtY2xpXQpuYW1lPWF6dXJlLWNsaQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZS1jbGkKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9eWVzCkVPRgoKeXVtIC15IGluc3RhbGwgYXp1cmUtY2xpIHBvZG1hbiBwb2RtYW4tZG9ja2VyIGpxIGdjYyBncGdtZS1kZXZlbCBsaWJhc3N1YW4tZGV2ZWwgZ2l0IG1ha2UgdG1wd2F0Y2ggcHl0aG9uMy1kZXZlbCBodG9wIGdvLXRvb2xzZXQtMS4xNy4xMi0xLm1vZHVsZStlbDguNi4wKzE2MDE0K2EzNzJjMDBiIG9wZW52cG4KCiMgU3VwcHJlc3MgZW11bGF0aW9uIG91dHB1dCBmb3IgcG9kbWFuIGluc3RlYWQgb2YgZG9ja2VyIGZvciBheiBhY3IgY29tcGF0YWJpbGl0eQpta2RpciAtcCAvZXRjL2NvbnRhaW5lcnMvCnRvdWNoIC9ldGMvY29udGFpbmVycy9ub2RvY2tlcgoKVlNUU19BR0VOVF9WRVJTSU9OPTIuMjA2LjEKbWtkaXIgL2hvbWUvY2xvdWQtdXNlci9hZ2VudApwdXNoZCAvaG9tZS9jbG91ZC11c2VyL2FnZW50CmN1cmwgLXMgaHR0cHM6Ly92c3RzYWdlbnRwYWNrYWdlLmF6dXJlZWRnZS5uZXQvYWdlbnQvJHtWU1RTX0FHRU5UX1ZFUlNJT059L3ZzdHMtYWdlbnQtbGludXgteDY0LSR7VlNUU19BR0VOVF9WRVJTSU9OfS50YXIuZ3ogfCB0YXIgLXh6CmNob3duIC1SIGNsb3VkLXVzZXI6Y2xvdWQtdXNlciAuCgouL2Jpbi9pbnN0YWxsZGVwZW5kZW5jaWVzLnNoCnN1ZG8gLXUgY2xvdWQtdXNlciAuL2NvbmZpZy5zaCAtLXVuYXR0ZW5kZWQgLS11cmwgaHR0cHM6Ly9kZXYuYXp1cmUuY29tL21zYXp1cmUgLS1hdXRoIHBhdCAtLXRva2VuICIkQ0lBWlBUT0tFTiIgLS1wb29sICIkQ0lQT09MTkFNRSIgLS1hZ2VudCAiQVJPLVJIRUwtJEhPU1ROQU1FIiAtLXJlcGxhY2UKLi9zdmMuc2ggaW5zdGFsbCBjbG91ZC11c2VyCnBvcGQKCmNhdCA+L2hvbWUvY2xvdWQtdXNlci9hZ2VudC8ucGF0aCA8PCdFT0YnCi91c3IvbG9jYWwvYmluOi91c3IvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L2hvbWUvY2xvdWQtdXNlci8ubG9jYWwvYmluOi9ob21lL2Nsb3VkLXVzZXIvYmluCkVPRgoKIyBTZXQgdGhlIGFnZW50J3MgIlN5c3RlbSBjYXBhYmlsaXRpZXMiIGZvciB0ZXN0cyAoZ28tMS4xNyBhbmQgR09MQU5HX0ZJUFMpIGluIHRoZSBhZ2VudCdzIC5lbnYgZmlsZQojIGFuZCBhZGQgYSBIQUNLIGZvciBYREdfUlVOVElNRV9ESVI6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3BvZG1hbi9pc3N1ZXMvNDI3CmNhdCA+L2hvbWUvY2xvdWQtdXNlci9hZ2VudC8uZW52IDw8J0VPRicKZ28tMS4xNz10cnVlCkdPTEFOR19GSVBTPTEKWERHX1JVTlRJTUVfRElSPS9ydW4vdXNlci8xMDAwCkVPRgoKY2F0ID4vZXRjL2Nyb24ud2Vla2x5L3l1bXVwZGF0ZSA8PCdFT0YnCiMhL2Jpbi9iYXNoCgp5dW0gdXBkYXRlIC15CkVPRgpjaG1vZCAreCAvZXRjL2Nyb24ud2Vla2x5L3l1bXVwZGF0ZQoKY2F0ID4vZXRjL2Nyb24uaG91cmx5L3RtcHdhdGNoIDw8J0VPRicKIyEvYmluL2Jhc2gKCmV4ZWMgL3NiaW4vdG1wd2F0Y2ggMjRoIC90bXAKRU9GCmNobW9kICt4IC9ldGMvY3Jvbi5ob3VybHkvdG1wd2F0Y2gKCiMgSEFDSyAtIHBvZG1hbiBkb2Vzbid0IGFsd2F5cyB0ZXJtaW5hdGUgb3IgY2xlYW4gdXAgaXQncyBwYXVzZS5waWQgZmlsZSBjYXVzaW5nCiMgJ2Nhbm5vdCByZWV4ZWMgZXJyb3JzJyBzbyBhdHRlbXB0IHRvIGNsZWFuIGl0IHVwIGV2ZXJ5IG1pbnV0ZSB0byBrZWVwIHBpcGVsaW5lcyBydW5uaW5nCiMgc21vb3RobHkKY2F0ID4vdXNyL2xvY2FsL2Jpbi9maXgtcG9kbWFuLXBhdXNlLnNoIDw8J0VPRicKIyEvYmluL2Jhc2gKClBBVVNFX0ZJTEU9Jy90bXAvcG9kbWFuLXJ1bi0xMDAwL2xpYnBvZC90bXAvcGF1c2UucGlkJwoKaWYgWyAtZiAiJHtQQVVTRV9GSUxFfSIgXTsgdGhlbgoJUElEPSQoY2F0ICR7UEFVU0VfRklMRX0pCglpZiAhIHBzIC1wICRQSUQgPiAvZGV2L251bGw7IHRoZW4KCQlybSAkUEFVU0VfRklMRQoJZmkKZmkKRU9GCmNobW9kICt4IC91c3IvbG9jYWwvYmluL2ZpeC1wb2RtYW4tcGF1c2Uuc2gKCiMgSEFDSyAtIC90bXAgd2lsbCBmaWxsIHVwIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMKIyBkZWxldGUgYW55dGhpbmcgbm90IGFjY2Vzc2VkIHdpdGhpbiAyIGRheXMKY2F0ID4vdXNyL2xvY2FsL2Jpbi9jbGVhbi10bXAuc2ggPDwnRU9GJwojIS9iaW4vYmFzaAoKZmluZCAvdG1wIC10eXBlIGYgXCggISAtdXNlciByb290IFwpIC1hdGltZSArMiAtZGVsZXRlCgpFT0YKY2htb2QgK3ggL3Vzci9sb2NhbC9iaW4vY2xlYW4tdG1wLnNoCgplY2hvICIwIDAgKi8xICogKiAvdXNyL2xvY2FsL2Jpbi9jbGVhbi10bXAuc2giID4+IGNyb24KZWNobyAiKiAqICogKiAqIC91c3IvbG9jYWwvYmluL2ZpeC1wb2RtYW4tcGF1c2Uuc2giID4+IGNyb24KCiMgSEFDSyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3BvZG1hbi9pc3N1ZXMvOTAwMgplY2hvICJAcmVib290IGxvZ2luY3RsIGVuYWJsZS1saW5nZXIgY2xvdWQtdXNlciIgPj4gY3JvbgoKY3JvbnRhYiBjcm9uCnJtIGNyb24KCihzbGVlcCAzMDsgcmVib290KSAmCg==')))]"
                                     }
                                 }
                             }
diff --git a/pkg/deploy/generator/resources_dev.go b/pkg/deploy/generator/resources_dev.go
index 2bc0d65ff..de6cd9dbe 100644
--- a/pkg/deploy/generator/resources_dev.go
+++ b/pkg/deploy/generator/resources_dev.go
@@ -344,7 +344,7 @@ yum -y install azure-cli podman podman-docker jq gcc gpgme-devel libassuan-devel
 mkdir -p /etc/containers/
 touch /etc/containers/nodocker
 
-VSTS_AGENT_VERSION=2.193.1
+VSTS_AGENT_VERSION=2.206.1
 mkdir /home/cloud-user/agent
 pushd /home/cloud-user/agent
 curl -s https://vstsagentpackage.azureedge.net/agent/${VSTS_AGENT_VERSION}/vsts-agent-linux-x64-${VSTS_AGENT_VERSION}.tar.gz | tar -xz
diff --git a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/__init__.py b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/__init__.py
index 0d47141d0..b1f8802f2 100644
--- a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/__init__.py
+++ b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/__init__.py
@@ -62,6 +62,7 @@ from ._azure_red_hat_open_shift_client_enums import (
     EncryptionAtHost,
     FipsValidatedModules,
     ProvisioningState,
+    SoftwareDefinedNetwork,
     Visibility,
 )
 
@@ -90,5 +91,6 @@ __all__ = [
     'EncryptionAtHost',
     'FipsValidatedModules',
     'ProvisioningState',
+    'SoftwareDefinedNetwork',
     'Visibility',
 ]
diff --git a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_azure_red_hat_open_shift_client_enums.py b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_azure_red_hat_open_shift_client_enums.py
index ff20a0f11..fc74e337d 100644
--- a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_azure_red_hat_open_shift_client_enums.py
+++ b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_azure_red_hat_open_shift_client_enums.py
@@ -53,6 +53,13 @@ class ProvisioningState(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)):
     SUCCEEDED = "Succeeded"
     UPDATING = "Updating"
 
+class SoftwareDefinedNetwork(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)):
+    """SoftwareDefinedNetwork is a choice of network used for Pods.
+    """
+
+    OVN_KUBERNETES = "OVNKubernetes"
+    OPEN_SHIFT_SDN = "OpenShiftSDN"
+
 class Visibility(with_metaclass(CaseInsensitiveEnumMeta, str, Enum)):
     """Visibility represents visibility.
     """
diff --git a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models.py b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models.py
index 99166e2ce..f93a26113 100644
--- a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models.py
+++ b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models.py
@@ -299,6 +299,10 @@ class MasterProfile(msrest.serialization.Model):
 class NetworkProfile(msrest.serialization.Model):
     """NetworkProfile represents a network profile.
 
+    :ivar software_defined_network: The SDN type used for OpenShift/Kubernetes Pods. Possible
+     values include: "OVNKubernetes", "OpenShiftSDN".
+    :vartype software_defined_network: str or
+     ~azure.mgmt.redhatopenshift.v2022_09_04.models.SoftwareDefinedNetwork
     :ivar pod_cidr: The CIDR used for OpenShift/Kubernetes Pods.
     :vartype pod_cidr: str
     :ivar service_cidr: The CIDR used for OpenShift/Kubernetes Services.
@@ -306,6 +310,7 @@ class NetworkProfile(msrest.serialization.Model):
     """
 
     _attribute_map = {
+        'software_defined_network': {'key': 'softwareDefinedNetwork', 'type': 'str'},
         'pod_cidr': {'key': 'podCidr', 'type': 'str'},
         'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
     }
@@ -315,12 +320,17 @@ class NetworkProfile(msrest.serialization.Model):
         **kwargs
     ):
         """
+        :keyword software_defined_network: The SDN type used for OpenShift/Kubernetes Pods. Possible
+         values include: "OVNKubernetes", "OpenShiftSDN".
+        :paramtype software_defined_network: str or
+         ~azure.mgmt.redhatopenshift.v2022_09_04.models.SoftwareDefinedNetwork
         :keyword pod_cidr: The CIDR used for OpenShift/Kubernetes Pods.
         :paramtype pod_cidr: str
         :keyword service_cidr: The CIDR used for OpenShift/Kubernetes Services.
         :paramtype service_cidr: str
         """
         super(NetworkProfile, self).__init__(**kwargs)
+        self.software_defined_network = kwargs.get('software_defined_network', None)
         self.pod_cidr = kwargs.get('pod_cidr', None)
         self.service_cidr = kwargs.get('service_cidr', None)
 
diff --git a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models_py3.py b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models_py3.py
index 1ac474bf0..089a75e4d 100644
--- a/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models_py3.py
+++ b/python/client/azure/mgmt/redhatopenshift/v2022_09_04/models/_models_py3.py
@@ -335,6 +335,10 @@ class MasterProfile(msrest.serialization.Model):
 class NetworkProfile(msrest.serialization.Model):
     """NetworkProfile represents a network profile.
 
+    :ivar software_defined_network: The SDN type used for OpenShift/Kubernetes Pods. Possible
+     values include: "OVNKubernetes", "OpenShiftSDN".
+    :vartype software_defined_network: str or
+     ~azure.mgmt.redhatopenshift.v2022_09_04.models.SoftwareDefinedNetwork
     :ivar pod_cidr: The CIDR used for OpenShift/Kubernetes Pods.
     :vartype pod_cidr: str
     :ivar service_cidr: The CIDR used for OpenShift/Kubernetes Services.
@@ -342,6 +346,7 @@ class NetworkProfile(msrest.serialization.Model):
     """
 
     _attribute_map = {
+        'software_defined_network': {'key': 'softwareDefinedNetwork', 'type': 'str'},
         'pod_cidr': {'key': 'podCidr', 'type': 'str'},
         'service_cidr': {'key': 'serviceCidr', 'type': 'str'},
     }
@@ -349,17 +354,23 @@ class NetworkProfile(msrest.serialization.Model):
     def __init__(
         self,
         *,
+        software_defined_network: Optional[Union[str, "SoftwareDefinedNetwork"]] = None,
         pod_cidr: Optional[str] = None,
         service_cidr: Optional[str] = None,
         **kwargs
     ):
         """
+        :keyword software_defined_network: The SDN type used for OpenShift/Kubernetes Pods. Possible
+         values include: "OVNKubernetes", "OpenShiftSDN".
+        :paramtype software_defined_network: str or
+         ~azure.mgmt.redhatopenshift.v2022_09_04.models.SoftwareDefinedNetwork
         :keyword pod_cidr: The CIDR used for OpenShift/Kubernetes Pods.
         :paramtype pod_cidr: str
         :keyword service_cidr: The CIDR used for OpenShift/Kubernetes Services.
         :paramtype service_cidr: str
         """
         super(NetworkProfile, self).__init__(**kwargs)
+        self.software_defined_network = software_defined_network
         self.pod_cidr = pod_cidr
         self.service_cidr = service_cidr
 
diff --git a/swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json b/swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json
index 69881ab96..4b350ff2c 100644
--- a/swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json
+++ b/swagger/redhatopenshift/resource-manager/Microsoft.RedHatOpenShift/stable/2022-09-04/redhatopenshift.json
@@ -679,6 +679,10 @@
       "description": "NetworkProfile represents a network profile.",
       "type": "object",
       "properties": {
+        "softwareDefinedNetwork": {
+          "$ref": "#/definitions/SoftwareDefinedNetwork",
+          "description": "The SDN type used for OpenShift/Kubernetes Pods."
+        },
         "podCidr": {
           "description": "The CIDR used for OpenShift/Kubernetes Pods.",
           "type": "string"
@@ -890,6 +894,18 @@
         }
       }
     },
+    "SoftwareDefinedNetwork": {
+      "description": "SoftwareDefinedNetwork is a choice of network used for Pods.",
+      "enum": [
+        "OVNKubernetes",
+        "OpenShiftSDN"
+      ],
+      "type": "string",
+      "x-ms-enum": {
+        "name": "SoftwareDefinedNetwork",
+        "modelAsString": true
+      }
+    },
     "Tags": {
       "description": "Tags represents an OpenShift cluster's tags.",
       "type": "object",


Test patch:
diff --git a/pkg/api/v20220904/openshiftcluster_validatestatic.go b/pkg/api/v20220904/openshiftcluster_validatestatic.go
index de23d414b..03a0dbad6 100644
--- a/pkg/api/v20220904/openshiftcluster_validatestatic.go
+++ b/pkg/api/v20220904/openshiftcluster_validatestatic.go
@@ -193,6 +193,10 @@ func (sv *openShiftClusterStaticValidator) validateServicePrincipalProfile(path
 }
 
 func (sv *openShiftClusterStaticValidator) validateNetworkProfile(path string, np *NetworkProfile) error {
+	if np.SoftwareDefinedNetwork != SoftwareDefinedNetwork(api.SoftwareDefinedNetworkOVNKubernetes) &&
+		np.SoftwareDefinedNetwork != SoftwareDefinedNetwork(api.SoftwareDefinedNetworkOpenShiftSDN) {
+		return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, path+".SoftwareDefinedNetwork", "The provided SoftwareDefinedNetwork '%s' is invalid.", np.SoftwareDefinedNetwork)
+	}
 	_, pod, err := net.ParseCIDR(np.PodCIDR)
 	if err != nil {
 		return api.NewCloudError(http.StatusBadRequest, api.CloudErrorCodeInvalidParameter, path+".podCidr", "The provided pod CIDR '%s' is invalid: '%s'.", np.PodCIDR, err)
diff --git a/pkg/api/v20220904/openshiftcluster_validatestatic_test.go b/pkg/api/v20220904/openshiftcluster_validatestatic_test.go
index 54313c873..67be83ef6 100644
--- a/pkg/api/v20220904/openshiftcluster_validatestatic_test.go
+++ b/pkg/api/v20220904/openshiftcluster_validatestatic_test.go
@@ -83,8 +83,9 @@ func validOpenShiftCluster(name, location string) *OpenShiftCluster {
 				ClientID:     "11111111-1111-1111-1111-111111111111",
 			},
 			NetworkProfile: NetworkProfile{
-				PodCIDR:     "10.128.0.0/14",
-				ServiceCIDR: "172.30.0.0/16",
+				SoftwareDefinedNetwork: SoftwareDefinedNetworkOVNKubernetes,
+				PodCIDR:                "10.128.0.0/14",
+				ServiceCIDR:            "172.30.0.0/16",
 			},
 			MasterProfile: MasterProfile{
 				VMSize:           "Standard_D8s_v3",
@@ -448,7 +449,29 @@ func TestOpenShiftClusterStaticValidateServicePrincipalProfile(t *testing.T) {
 }
 
 func TestOpenShiftClusterStaticValidateNetworkProfile(t *testing.T) {
-	tests := []*validateTest{
+	createTests := []*validateTest{
+		{
+			name: "SoftwareDefinedNetwork valid with OpenShiftSDN",
+			modify: func(oc *OpenShiftCluster) {
+				oc.Properties.NetworkProfile.SoftwareDefinedNetwork = SoftwareDefinedNetworkOpenShiftSDN
+			},
+		},
+		{
+			name: "SoftwareDefinedNetwork invalid when empty",
+			modify: func(oc *OpenShiftCluster) {
+				oc.Properties.NetworkProfile.SoftwareDefinedNetwork = ""
+			},
+			wantErr: "400: InvalidParameter: properties.networkProfile.SoftwareDefinedNetwork: The provided SoftwareDefinedNetwork '' is invalid.",
+		},
+		{
+			name: "SoftwareDefinedNetwork invalid when not predefined name",
+			modify: func(oc *OpenShiftCluster) {
+				oc.Properties.NetworkProfile.SoftwareDefinedNetwork = "InvalidSDN"
+			},
+			wantErr: "400: InvalidParameter: properties.networkProfile.SoftwareDefinedNetwork: The provided SoftwareDefinedNetwork 'InvalidSDN' is invalid.",
+		},
+	}
+	commonTests := []*validateTest{
 		{
 			name: "valid",
 		},
@@ -496,8 +519,9 @@ func TestOpenShiftClusterStaticValidateNetworkProfile(t *testing.T) {
 		},
 	}
 
-	runTests(t, testModeCreate, tests)
-	runTests(t, testModeUpdate, tests)
+	runTests(t, testModeCreate, createTests)
+	runTests(t, testModeCreate, commonTests)
+	runTests(t, testModeUpdate, commonTests)
 }
 
 func TestOpenShiftClusterStaticValidateMasterProfile(t *testing.T) {
@@ -875,6 +899,13 @@ func TestOpenShiftClusterStaticValidateDelta(t *testing.T) {
 			name:   "clientSecret change",
 			modify: func(oc *OpenShiftCluster) { oc.Properties.ServicePrincipalProfile.ClientSecret = "invalid" },
 		},
+		{
+			name: "SoftwareDefinedNetwork change",
+			modify: func(oc *OpenShiftCluster) {
+				oc.Properties.NetworkProfile.SoftwareDefinedNetwork = SoftwareDefinedNetworkOpenShiftSDN
+			},
+			wantErr: "400: PropertyChangeNotAllowed: properties.networkProfile.softwareDefinedNetwork: Changing property 'properties.networkProfile.softwareDefinedNetwork' is not allowed.",
+		},
 		{
 			name:    "podCidr change",
 			modify:  func(oc *OpenShiftCluster) { oc.Properties.NetworkProfile.PodCIDR = "0.0.0.0/0" },