Skip to content

Commit 213e59e

Browse files
authored
Automation Toolkit Release v2026.2.0
CD3 Automation Toolkit v2026.2.0
2 parents 69c6501 + 091ae23 commit 213e59e

71 files changed

Lines changed: 3115 additions & 1052 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ RUN sudo dnf install -y oraclelinux-release-el9 && \
4545
sudo chown -R $USERNAME:$USERNAME /cd3user/ && \
4646
sudo sed -i -e 's/\r$//' /cd3user/oci_tools/cd3_automation_toolkit/shell_script.sh && \
4747
bash /cd3user/oci_tools/cd3_automation_toolkit/shell_script.sh && \
48+
sudo microdnf install git-2.39.3 -y && \
4849
sudo dnf clean all && \
4950
sudo rm -rf /var/cache/dnf && \
5051
sudo chmod -R 740 /cd3user/ && \
@@ -67,8 +68,8 @@ sudo rm -rf terraform-provider-null_${TF_NULL_PROVIDER}_linux_amd64.zip terrafor
6768
fi
6869

6970
##################################### START INSTALLING JENKINS ###################################
70-
ARG JENKINS_VERSION=2.504.1
71-
ARG JENKINS_SHA=81026db18b0c4aad6b62cf408e4c42e5797661b41c517b37df606238e89b9df1
71+
ARG JENKINS_VERSION=2.504.3
72+
ARG JENKINS_SHA=ea8883431b8b5ef6b68fe0e5817c93dc0a11def380054e7de3136486796efeb0
7273
ARG JENKINS_PLUGIN_MANAGER_VERSION=2.12.13
7374
ARG PLUGIN_CLI_URL=https://github.com/jenkinsci/plugin-installation-manager-tool/releases/download/${JENKINS_PLUGIN_MANAGER_VERSION}/jenkins-plugin-manager-${JENKINS_PLUGIN_MANAGER_VERSION}.jar
7475

@@ -95,7 +96,6 @@ COPY --chown=cd3user:cd3user jenkins_install/plugins.txt ${REF}/plugins.txt
9596
RUN if [ "$USE_DEVOPS" == "YES" ]; then \
9697
sudo microdnf install -y java-21-openjdk && \
9798
sudo microdnf install -y java-21-openjdk-devel && \
98-
sudo microdnf install git-2.39.3 -y && \
9999
sudo mkdir -p ${REF}/init.groovy.d && \
100100
sudo chown -R cd3user:cd3user ${JENKINS_INSTALL} && \
101101
sudo curl -fsSL http://updates.jenkins-ci.org/download/war/${JENKINS_VERSION}/jenkins.war -o ${JENKINS_INSTALL}/jenkins.war && \

OCIWorkVMStack/oci_images.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
variable "marketplace_source_images" {
2-
type = map(object({
2+
/*type = map(object({
33
ocid = string
44
is_pricing_associated = bool
55
compatible_shapes = set(string)
@@ -10,5 +10,6 @@ variable "marketplace_source_images" {
1010
is_pricing_associated = false
1111
compatible_shapes = []
1212
}
13-
}
13+
}*/
14+
default = ""
1415
}

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<br>
99

10-
[What's New](https://github.com/oracle-devrel/cd3-automation-toolkit/releases/tag/v2026.1.2) &nbsp;&nbsp;[Excel Templates](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/excel-templates/) &nbsp;&nbsp;[CD3 Docs](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/cd3-overview/)&nbsp;&nbsp; [Watch & Learn](https://www.youtube.com/playlist?list=PLPIzp-E1msrbJ3WawXVhzimQnLw5iafcp) &nbsp;&nbsp;[Blogs & Tutorials](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/tutorials/) &nbsp;&nbsp;[Livelabs](https://apexapps.oracle.com/pls/apex/f?p=133:180:112501098061930::::wid:3724) &nbsp;&nbsp;[Slack Channel](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/queries)
10+
[What's New](https://github.com/oracle-devrel/cd3-automation-toolkit/releases/tag/v2026.2.0) &nbsp;&nbsp;[Excel Templates](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/excel-templates/) &nbsp;&nbsp;[CD3 Docs](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/cd3-overview/)&nbsp;&nbsp; [Watch & Learn](https://www.youtube.com/playlist?list=PLPIzp-E1msrbJ3WawXVhzimQnLw5iafcp) &nbsp;&nbsp;[Blogs & Tutorials](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/tutorials/) &nbsp;&nbsp;[Livelabs](https://apexapps.oracle.com/pls/f?p=133:180:112501098061930::::wid:3724) &nbsp;&nbsp;[Slack Channel](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/queries)
1111

1212
<br>
1313

@@ -74,7 +74,7 @@ Evaluate Terraform plans to identify potential security risks, misconfigurations
7474
</table>
7575

7676

77-
📌 The Toolkit also extends its support to <b>ADB@Azure</b>
77+
📌 The Toolkit now support to <b>ADB@Azure</b>, <b>Exa@Azure(create only)</b>, <b>ADB@GCP</b>, <b>Exa@GCP(create only)</b>.
7878

7979
<br>
8080

cd3_automation_toolkit/Release-Notes

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
-------------------------------------
2+
CD3 Automation Toolkit Tag v2026.2.0
3+
Jul 31st, 2026
4+
-------------------------------------
5+
1. Added multi-cloud Database Service support for Azure and GCP, including creation of ADB and Exadata resources, ADB export, and offline tfvars generation. Exadata export is not included in this release.
6+
2. Added support for multiple secondary VNICs for OCI instances.
7+
3. Added support for preemptible node pool configuration for OKE.
8+
4. Updated the CIS compliance report to version 3.2.1.
9+
5. Added identity output separation and fixed RPC deduplication and user export behavior.
10+
6. Included bug fixes for ADB, NSG rules, buckets, the OCI Resource Manager stack, and other minor issues.
11+
7. Upgraded Jenkins core from 2.504.1 to 2.504.3 for compatibility with the current Jenkins plugin update-center catalog.
12+
113
-------------------------------------
214
CD3 Automation Toolkit Tag v2026.1.2
315
Jul 10th, 2026
@@ -9,7 +21,7 @@ CD3 Automation Toolkit Tag v2026.1.1
921
May 8th, 2026
1022
-------------------------------------
1123
1. Support for export of resources from all child compartments of a parent without specifying them separately in command line.
12-
2. Deprecate python script createTenancyConfig.py. Instead use connectCloud.py
24+
2. Deprecate python scripts createTenancyConfig.py and setUpOCI.py. Instead use connectCloud.py and setUpCloud.py
1325
3. Fixed ordering issue for views for export of DNS resolvers.
1426
4. Minor internal bug fixes.
1527

cd3_automation_toolkit/azurecloud/python/database/export_adb_azure.py

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,18 @@ def normalize_enum_token(value):
4242
return s.split(".", 1)[1] if "." in s else s
4343

4444

45-
def _format_rg_vnet_subnet_from_id(net_id: str) -> str:
46-
"""Return 'resourceGroup@vnet::subnet' from a subnet ARM ID."""
45+
def _parse_subnet_arm_id(net_id: str):
46+
"""Return the resource group, virtual network, and subnet from a subnet ARM ID."""
4747
if not net_id:
48-
return ""
48+
return "", "", ""
4949
parts = net_id.strip("/").split("/")
5050
try:
5151
rg = parts[parts.index("resourceGroups") + 1]
5252
vnet = parts[parts.index("virtualNetworks") + 1]
5353
subnet = parts[parts.index("subnets") + 1]
54-
return f"{rg}@{vnet}::{subnet}"
54+
return rg, vnet, subnet
5555
except (ValueError, IndexError):
56-
return ""
56+
return "", "", ""
5757

5858

5959
def _get_rg_from_id(resource_id: str) -> str:
@@ -106,21 +106,13 @@ def print_adbs_azure(adb, values_for_column: Dict[str, List], state: Dict, tf_or
106106
# Tags (dict) — kept as metadata only if the sheet has 'Common Tags' column(not used yet)
107107
common_tags = azrCommonTools._flatten_tags(getattr(adb, "tags", None))
108108

109-
# Prefer subnetId to derive rg@vnet::subnet; private endpoint IDs don't contain vnet/subnet names
109+
# Prefer subnetId because private endpoint IDs don't contain vnet/subnet names
110110
subnet_id = pick_first_not_none(
111111
getattr(props, "subnet_id", None),
112112
getattr(props, "subnetId", None),
113113
)
114-
formatted_net = _format_rg_vnet_subnet_from_id(subnet_id)
115-
116-
# Optional: keep raw IDs if needed elsewhere
117-
network_details_raw = pick_first_not_none(
118-
getattr(props, "subnet_id", None),
119-
getattr(props, "subnetId", None),
120-
getattr(props, "private_endpoint_id", None),
121-
getattr(props, "privateEndpointId", None),
122-
"",
123-
)
114+
network_rg, vnet_name, subnet_name = _parse_subnet_arm_id(subnet_id)
115+
odb_network_details = f"{network_rg}::{vnet_name}" if network_rg and vnet_name else ""
124116

125117
# Whitelisted IPs (array of strings)
126118
ips_list = pick_first_not_none(
@@ -204,9 +196,11 @@ def print_adbs_azure(adb, values_for_column: Dict[str, List], state: Dict, tf_or
204196
values_for_column[col_header].append(adb_location)
205197
elif col_header == "ADB Display Name":
206198
values_for_column[col_header].append(adb_name)
207-
elif col_header == "Network Details":
208-
# Write the formatted rg@vnet::subnet if available; else leave blank or fall back to raw
209-
values_for_column[col_header].append(formatted_net or "")
199+
# Keep network and subnet separate because the ADB-Azure generator reads them from two workbook columns.
200+
elif col_header == "ODB Network Details":
201+
values_for_column[col_header].append(odb_network_details)
202+
elif col_header == "ODB Network Subnet Details":
203+
values_for_column[col_header].append(subnet_name)
210204
elif col_header == "Whitelisted IP Addresses":
211205
values_for_column[col_header].append(whitelisted_ips)
212206
elif col_header == "DB Name":
@@ -341,4 +335,4 @@ def export_adb_azure(inputfile: str, outdir: str,credentials,
341335
if importCommands.get("global"):
342336
importCommands["global"] += f'\n{tf_or_tofu} plan\n'
343337
with open(script_file, 'a', encoding='utf-8') as importCommandsfile:
344-
importCommandsfile.write(init_commands + importCommands["global"])
338+
importCommandsfile.write(init_commands + importCommands["global"])

cd3_automation_toolkit/common/opa/Network/oci_enforce_container_config.rego

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ enforce_container_engine_config {
1515

1616
container.is_private_cluster
1717
container.is_encryption_enabled
18-
container.is_pod_security_policy_enabled
1918
}
2019

2120
#To enforce secure configuration for container instances

cd3_automation_toolkit/common/python/commonTools.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ def write_to_cd3(values_for_column, cd3file, sheet_name,append=False):
120120

121121

122122
#rows_len=len(rows)
123-
rows_len = len(values_for_column["Region"])
123+
try:
124+
rows_len = len(values_for_column["Region"])
125+
except KeyError as e:
126+
rows_len = len(values_for_column["Location"])
127+
124128
sheet_max_rows = sheet.max_row
125129
#If no rows exported from OCI, remove the sample data as well
126130
if(rows_len == 0) :

cd3_automation_toolkit/connectGCP.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
prefix=
99

1010
# Auth Mechanism for GCP APIs - api_key
11-
# Please make sure to add IAM policies for service account before executing connectContainerToGCP.py
11+
# Please make sure to add IAM policies for service account before executing connectCloud.py
1212
auth_mechanism=api_key
1313
# Path to JSON file having private key information for the service account;
1414
# Defaults to /cd3user/gcp/keys/gcp_api_private.json when left empty
-1.35 KB
Binary file not shown.
99 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)