Skip to content

Automated sync from private repo (2026-05-07) - #698

Merged
foundry-samples-repo-sync[bot] merged 6 commits into
mainfrom
sync/private-to-public-20260507-223541
May 7, 2026
Merged

foundry-samples-repo-sync[bot] merged 6 commits into
mainfrom
sync/private-to-public-20260507-223541

Conversation

@foundry-samples-repo-sync

Copy link
Copy Markdown
Contributor

Automated sync from private repo.

Synced commits: 6
Authors: Haflidi Fridthjofsson,Meera Kurup

Validation gate: mode=none; tracked=0; blocked=0.

Rollback point: 2fdf01fcc7e42e12b93ad6bb2c5a14107996d247 — to revert, force-push this SHA to main and clear the sync-marks cache.

Triggered by: workflow_dispatch
Run: https://github.com/microsoft-foundry/foundry-samples-pr/actions/runs/25525794743

…ndard-agent-setup` (#257)

* fix(15-private-network-standard-agent-setup): sanitize derived storage account name

Storage account names must be 3-24 chars, lowercase, no hyphens. The current`var azureStorageName = toLower('${aiServices}${uniqueSuffix}storage')` derivationfails Azure validation when `aiServices` contains hyphens or pushes the resultover 24 chars. Both are common with enterprise naming conventions; the default`'aiservices'` (10 chars) hides the bug.

Also adds a defensive 44-char cap on the derived Cosmos DB name.

Closes #256

* Automatic fixes

---------

Co-authored-by: foundry-samples automation <foundry-samples@noreply.github.com>
…estructive subnets, vnetName precedence, DNS subscription normalization (#259)

* fix(15-private-network-standard-agent-setup): harden BYO-VNet path (subnets, vnetName, DNS sub)

Three small, related fixes to the BYO-VNet code path in the same sample:

1. Non-destructive subnet handling. New 'reuseExistingSubnets' parameter
   (default false). When true and useExistingVnet is set, the template
   skips the subnet PUT entirely and references the existing subnet IDs
   as-is. Avoids resetting privateEndpointNetworkPolicies, NSG and route
   table associations on platform-managed subnets.

2. 'vnetName' precedence and UX clarity. Default changed from
   'agent-vnet-test' to '' and description rewritten so it is explicit
   that the parameter is ignored when existingVnetResourceId is set
   (the resource ID wins). Stops users from copying the misleading
   default alongside their resource ID.

3. 'dnsZonesSubscriptionId' normalization. Now accepts either a bare
   GUID (existing form) or the full '/subscriptions/<guid>' path; both
   resolve to the same effective subscription for cross-sub DNS zone
   references.

Closes #258

* Automatic fixes

* Automatic fixes

---------

Co-authored-by: foundry-samples automation <foundry-samples@noreply.github.com>
…l capabilityHost, BCP037 fix (#261)

* feat(15-private-network-standard-agent-setup): BYO existing AI Foundry account + declarative account-level capabilityHost

Three related changes that together make the sample work end-to-end against
an existing (BYO) AI Foundry account in regulated/enterprise tenants:

1. ai-account-identity.bicep: new optional 'existingAccountResourceId' and
   'skipModelDeployment' parameters. When existingAccountResourceId is set,
   the module references the existing AI Foundry (CognitiveServices/accounts
   kind=AIServices) account in its own RG/subscription instead of creating a
   new one. Outputs use ARM short-circuit ternary so only the chosen branch
   is evaluated. Default behavior (create new account) is unchanged.

2. add-account-capability-host.bicep (NEW): declarative module that creates
   the account-level capabilityHost. The current sample relies on the
   createCapHost.sh script being run manually before deployment. Without it,
   the project caphost creation fails with 'Foundry Account capabilityHost
   Not Found'. This module makes the flow fully declarative and idempotent
   regardless of whether the account is freshly created or pre-existing.

3. add-project-capability-host.bicep: documents the BCP037 suppression for
   capabilityHostKind. The Bicep type defs reject the property but the ARM
   API requires it; without it the capability host is created with no kind
   and downstream agents fail. createCapHost.sh is left in place for
   compatibility (consider removing in a follow-up).

main.bicep wires the new module and adds a dependency on it from the project
caphost so the bootstrap order is enforced declaratively.

Closes #260

* Automatic fixes

---------

Co-authored-by: foundry-samples automation <foundry-samples@noreply.github.com>
…reuseExistingSubnets, and declarative caphost (#271)

Updates the README to reflect the features added in #257, #259, and #261.

Changes:
- Parameters table: add reuseExistingSubnets (#259), existingAiFoundryAccountResourceId
  and skipModelDeployment (#261); update vnetName description and default to reflect
  the precedence-aware behavior introduced in #259.
- BYO Resource Details: add new section 5 'Use an existing Microsoft Foundry account'
  documenting the BYOA flow; mention reuseExistingSubnets in the existing-VNet section;
  note that dnsZonesSubscriptionId now accepts both bare GUID and full ARM subscription
  paths (#259).
- Pre-Deployment Notes: replace the stale 'deploy the project caphost bicep' instruction
  with a reference to the declarative account-level capability host added in #261.
- Account Cleanup section: clarify that createCapHost.sh is now only required for the
  cleanup-then-recreate flow, not for first-time deployments.
- Module Structure: add add-account-capability-host.bicep to the file tree (#261).
- Limitations: add note about the BYO account + skipModelDeployment requirement.

No code changes; documentation only.
* Updates to READMEs of all major networking templates (bicep mainly, also some TF)

Updates to READMEs of all major networking templates(bicep mainly, also some TF)

* Automatic fixes

* More managed network updates

more managed network updates

* Automatic fixes

---------

Co-authored-by: foundry-samples automation <foundry-samples@noreply.github.com>
* Updates to READMEs of all major networking templates (bicep mainly, also some TF)

Updates to READMEs of all major networking templates(bicep mainly, also some TF)

* Automatic fixes

* More managed network updates

more managed network updates

* Automatic fixes

* small updates to cli.md file

* Add CLI version to update to

---------

Co-authored-by: foundry-samples automation <foundry-samples@noreply.github.com>
Comment on lines +10 to +52
runs-on: ubuntu-latest

steps:
- name: Build payload and call Azure DevOps
env:
ADO_ORG: ${{ secrets.ADO_ORG }}
ADO_PROJECT: ${{ secrets.ADO_PROJECT }}
ADO_PAT: ${{ secrets.ADO_PAT }}
DRI_EMAIL: ${{ secrets.DRI_EMAIL }}
ADO_AREA_PATH: ${{ secrets.ADO_AREA_PATH }}
ADO_ITERATION_PATH: ${{ secrets.ADO_ITERATION_PATH }}
ADO_TAG: ${{ secrets.ADO_TAG }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
ISSUE_URL: ${{ github.event.issue.html_url }}
run: |
DESCRIPTION="<div>${ISSUE_BODY//$'\n'/<br/>}<br/><br/><a href=\"$ISSUE_URL\">$ISSUE_URL</a></div>"

jq -n \
--arg title "$ISSUE_TITLE" \
--arg desc "$DESCRIPTION" \
--arg area "$ADO_AREA_PATH" \
--arg iter "$ADO_ITERATION_PATH" \
--arg assn "$DRI_EMAIL" \
--arg tags "$ADO_TAG" \
'[
{ "op":"add", "path":"/fields/System.Title", "value":$title },
{ "op":"add", "path":"/fields/System.Description", "value":$desc },
{ "op":"add", "path":"/fields/System.AreaPath", "value":$area },
{ "op":"add", "path":"/fields/System.IterationPath", "value":$iter },
{ "op":"add", "path":"/fields/System.AssignedTo", "value":$assn },
{ "op":"add", "path":"/fields/System.Tags", "value":$tags }
]' > /tmp/payload.json

AUTH=$(printf ":$ADO_PAT" | base64 | tr -d '\n')
WORK_ITEM_URL="https://dev.azure.com/${ADO_ORG}/${ADO_PROJECT}/_apis/wit/workitems/\$User%20Story?api-version=7.1-preview.3"

curl --fail-with-body -sS \
-H "Content-Type: application/json-patch+json" \
-H "Authorization: Basic $AUTH" \
-X POST \
--data-binary @/tmp/payload.json \
"$WORK_ITEM_URL"
Comment on lines +15 to +23
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.9"
- run: pip install -r dev-requirements.txt
- name: Run Pre-Commit
run: pre-commit run --all-files
Comment on lines +14 to +24
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Check Pull Request Size
run: |
git fetch origin ${{ github.event.pull_request.base.ref }} --quiet # Need to manually fetch base branch in CI
python ./.github/scripts/commit-filesize-diff-summary.py --limit 1MB origin/${{ github.event.pull_request.base.ref }}..HEAD
@foundry-samples-repo-sync
foundry-samples-repo-sync Bot merged commit 0ce024a into main May 7, 2026
7 checks passed
@foundry-samples-repo-sync
foundry-samples-repo-sync Bot deleted the sync/private-to-public-20260507-223541 branch May 7, 2026 22:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants