<!-- disableFinding(LINE_OVER_80) -->
<!-- disableFinding(LIST_NO_LINE) -->

# Mock Fleet Definitions for Read-Only & Evaluation Runs

This reference provides deterministic mock data for evaluating troubleshooting
workflows when command execution or live GCP API access is disabled (e.g., in
automated evaluation suites, AutoCloud, or read-only customer environments).

> **These instances are fictional.** Use this data only when the user's request
> names one of the scenarios below *and* live access is unavailable. Never
> present these values as the live state of a real deployment, and never mix
> them into a report about a real instance. If the user's instance is not listed
> here, say that live access is required and give the commands to run instead —
> reporting invented IPs, export rules, or firewall state as real would send an
> operator to change the wrong production resource.

## Table of Contents

*   [Scenario 1: Missing Firewall Ingress Rule (ETIMEDOUT)](#scenario-1-missing-firewall-ingress-rule-etimedout):
    Lines 37-63
*   [Scenario 2: Export ACL Mismatch (EACCES)](#scenario-2-export-acl-mismatch-eacces):
    Lines 67-90
*   [Scenario 3: Administrative Configuration Drift (Cloud Audit Logs)](#scenario-3-administrative-configuration-drift-cloud-audit-logs):
    Lines 94-107
*   [Scenario 4: GKE Pod CIDR vs Node Subnet Confusion](#scenario-4-gke-pod-cidr-vs-node-subnet-confusion):
    Lines 111-119
*   [Scenario 5: Interactive Remediation Gate (data-hub Port 2049 Blocked)](#scenario-5-interactive-remediation-gate-data-hub-port-2049-blocked):
    Lines 123-148
*   [Scenario 6: Read-Only Diagnostic Compliance (prod-share)](#scenario-6-read-only-diagnostic-compliance-prod-share):
    Lines 152-162

--------------------------------------------------------------------------------

## Mock Scenarios

### Scenario 1: Missing Firewall Ingress Rule (`ETIMEDOUT`)

*   **Project**: `analytics-prod`
*   **Instance**: `finance-share` (Location: `us-central1-b`)
*   **Tier**: `BASIC_HDD`
*   **Filestore IP**: `10.0.3.2`
*   **VPC Network**: `prod-vpc`
*   **Client Context**: GKE cluster `cluster-east`, Worker Node Subnet
    `10.128.0.0/20`
*   **Export ACL**: Default `0.0.0.0/0` (READ_WRITE, NO_ROOT_SQUASH)
*   **VPC Firewall Status**: No active ingress firewall rule allows TCP port
    `2049` or `111` from `10.128.0.0/20`
*   **Diagnostic Verdict**: `ETIMEDOUT` due to missing VPC ingress firewall rule
    on TCP port 2049.
*   **Remediation Command**:

    ```bash
    CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-log-troubleshooting)" \
    gcloud compute firewall-rules create allow-prod-vpc-filestore-nfs \
        --network="prod-vpc" \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:2049,udp:2049,tcp:111,udp:111 \
        --source-ranges="10.128.0.0/20" \
        --project="analytics-prod"
    ```

--------------------------------------------------------------------------------

### Scenario 2: Export ACL Mismatch (`EACCES`)

*   **Project**: `ai-platform`
*   **Instance**: `shared-nfs` (Location: `us-central1-a`)
*   **Tier**: `BASIC_SSD`
*   **Filestore IP**: `10.10.0.5`
*   **VPC Network**: `ai-vpc`
*   **Client VM**: `worker-01` (Internal IP: `10.128.0.5`)
*   **Existing `nfsExportOptions`**:

    ```json
    [
      {
        "ipRanges": ["10.200.0.0/24"],
        "accessMode": "READ_WRITE",
        "squashMode": "NO_ROOT_SQUASH"
      }
    ]
    ```
*   **VPC Firewall Status**: Ingress port 2049 is open to all internal subnets.
*   **Diagnostic Verdict**: `EACCES (Permission Denied by Server)`. Client IP
    `10.128.0.5` is not in allowed IP ranges.
*   **Remediation Action**: Non-destructively append `10.128.0.0/20` (or
    `10.128.0.5/32`) to `nfsExportOptions`.

--------------------------------------------------------------------------------

### Scenario 3: Administrative Configuration Drift (Cloud Audit Logs)

*   **Project**: `media-prod`
*   **Instance**: `ml-data` (Location: `us-east4-a`)
*   **Incident**: Workload stopped mounting today.
*   **Cloud Audit Log Record**:
    *   **Timestamp**: `2026-09-10T18:42:10Z`
    *   **Principal**: `alice@example.com`
    *   **Service**: `file.googleapis.com`
    *   **Method**: `google.cloud.filestore.v1.Filestore.UpdateInstance`
    *   **Updated Fields**: `fileShares.nfsExportOptions`
*   **Diagnostic Verdict**: Configuration drift. An administrative update by
    `alice@example.com` 4 hours ago modified `nfsExportOptions`, removing the
    previous client CIDR.

--------------------------------------------------------------------------------

### Scenario 4: GKE Pod CIDR vs Node Subnet Confusion

*   **Client Symptom**: Pods in GKE cluster `ml-cluster` cannot mount Filestore
    despite the Pod CIDR `10.4.0.0/14` being added to `nfsExportOptions`.
*   **Architectural Reality**: Kubernetes mounts execute in the host node
    network namespace. The source IP arriving at the Filestore server is the
    Node Internal IP (e.g. `10.128.0.12`), which falls outside `10.4.0.0/14`.
*   **Diagnostic Verdict**: Misconfigured export allowlist. The GKE Node Subnet
    CIDR (e.g. `10.128.0.0/20`) must be allowlisted instead of the Pod CIDR.

--------------------------------------------------------------------------------

### Scenario 5: Interactive Remediation Gate (`data-hub` Port 2049 Blocked)

*   **Project**: `analytics-prod`
*   **Instance**: `data-hub` (Location: `us-central1`)
*   **Tier**: `REGIONAL`
*   **Filestore IP**: `10.20.0.2`
*   **VPC Network**: `prod-vpc`
*   **Client Context**: Subnet `10.128.0.0/20`
*   **VPC Firewall Status**: Port 2049 is blocked by missing ingress firewall
    rule on `prod-vpc`.
*   **Diagnostic Verdict**: `ETIMEDOUT` on TCP port 2049.
*   **Remediation Command**:

    ```bash
    CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-log-troubleshooting)" \
    gcloud compute firewall-rules create allow-data-hub-nfs \
        --network="prod-vpc" \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:2049,udp:2049,tcp:111,udp:111 \
        --source-ranges="10.128.0.0/20" \
        --project="analytics-prod"
    ```
*   **Mandatory Gate**: Must present the command and ask: *"Would you like me to
    proceed with creating this firewall rule? Please confirm (Yes/No)."*

--------------------------------------------------------------------------------

### Scenario 6: Read-Only Diagnostic Compliance (`prod-share`)

*   **Project**: `analytics-prod`
*   **Instance**: `prod-share` (Location: `us-central1-b`)
*   **Tier**: `BASIC_SSD`
*   **Filestore IP**: `10.0.4.2`
*   **VPC Network**: `prod-vpc`
*   **Export ACL**: Default `0.0.0.0/0` (READ_WRITE)
*   **VPC Firewall Status**: Allowed on TCP port 2049 via `allow-internal-nfs`
*   **Diagnostic Verdict**: Healthy and reachable; manual diagnostic
    verification commands provided without executing any shell tools.
