Skip to content

NetApp ActiveIQ MCP Server - Technical Documentation

Overview

This document provides comprehensive technical documentation for the NetApp ActiveIQ MCP Server, including detailed component models, sequence diagrams, and architectural patterns for the Temporal.io-powered durable execution system.

Component Model (CMP-XXXX)

Component Registry

Component ID Component Name Type Purpose Dependencies
CMP-0001 AI Assistant Interface External Natural language processing and user interaction Claude Desktop, Custom AI Apps
CMP-0002 MCP Protocol Gateway Service MCP protocol handling and routing CMP-0003, CMP-0004
CMP-0003 Request Router Service Route MCP requests to appropriate handlers CMP-0005, CMP-0006
CMP-0004 Schema Validator Service Validate MCP messages and tool arguments JSON Schema Library
CMP-0005 Tool Registry Service Manage and discover available MCP tools CMP-0008, CMP-0009
CMP-0006 Response Formatter Service Format responses according to MCP specification CMP-0003
CMP-0007 Authentication Manager Service Handle NetApp API authentication and security CMP-0010, CMP-0015
CMP-0008 NetApp API Client Service Interface with ActiveIQ Unified Manager API CMP-0007, CMP-0016
CMP-0009 Temporal Workflow Engine Platform Orchestrate durable, fault-tolerant workflows CMP-0010, CMP-0011, CMP-0012
CMP-0010 Workflow Activities Service Execute individual NetApp operations CMP-0008, CMP-0013
CMP-0011 Temporal Workers Service Process workflow activities and maintain state CMP-0009, CMP-0010
CMP-0012 Workflow State Store Data Persist workflow state and execution history PostgreSQL Database
CMP-0013 Cache Manager Service Manage response caching and performance optimization Redis, CMP-0008
CMP-0014 Event Processor Service Handle NetApp events and trigger workflows CMP-0009, CMP-0016
CMP-0015 Security Context Service Manage credentials, certificates, and access control Kubernetes Secrets, Vault
CMP-0016 NetApp Infrastructure External ActiveIQ Unified Manager and ONTAP clusters External NetApp Systems
CMP-0017 Knative Serving Platform Serverless container orchestration and auto-scaling Kubernetes, Istio/Kourier
CMP-0018 Monitoring Stack Platform Observability, metrics, and alerting Prometheus, Grafana, Jaeger
CMP-0019 Configuration Manager Service Manage environment-specific configurations ConfigMaps, Secrets
CMP-0020 Health Monitor Service System health checks and readiness probes CMP-0008, CMP-0009, CMP-0013

Component Architecture Diagram

graph TB
    subgraph "External Layer"
        CMP0001[CMP-0001: AI Assistant Interface]
        CMP0016[CMP-0016: NetApp Infrastructure]
    end

    subgraph "API Gateway Layer"
        CMP0002[CMP-0002: MCP Protocol Gateway]
        CMP0003[CMP-0003: Request Router]
        CMP0004[CMP-0004: Schema Validator]
        CMP0006[CMP-0006: Response Formatter]
    end

    subgraph "Service Layer"
        CMP0005[CMP-0005: Tool Registry]
        CMP0007[CMP-0007: Authentication Manager]
        CMP0008[CMP-0008: NetApp API Client]
        CMP0013[CMP-0013: Cache Manager]
        CMP0014[CMP-0014: Event Processor]
        CMP0020[CMP-0020: Health Monitor]
    end

    subgraph "Workflow Orchestration Layer"
        CMP0009[CMP-0009: Temporal Workflow Engine]
        CMP0010[CMP-0010: Workflow Activities]
        CMP0011[CMP-0011: Temporal Workers]
    end

    subgraph "Data Layer"
        CMP0012[CMP-0012: Workflow State Store]
    end

    subgraph "Platform Layer"
        CMP0017[CMP-0017: Knative Serving]
        CMP0015[CMP-0015: Security Context]
        CMP0018[CMP-0018: Monitoring Stack]
        CMP0019[CMP-0019: Configuration Manager]
    end

    CMP0001 --> CMP0002
    CMP0002 --> CMP0003
    CMP0003 --> CMP0004
    CMP0003 --> CMP0005
    CMP0003 --> CMP0006
    CMP0005 --> CMP0009
    CMP0007 --> CMP0008
    CMP0008 --> CMP0016
    CMP0009 --> CMP0010
    CMP0009 --> CMP0011
    CMP0009 --> CMP0012
    CMP0010 --> CMP0008
    CMP0010 --> CMP0013
    CMP0011 --> CMP0012
    CMP0014 --> CMP0009
    CMP0016 --> CMP0014

Detailed Sequence Diagrams

1. Simple Volume Creation Workflow (DevOps GUI Primary)

sequenceDiagram
    participant DevOps as DevOps GUI
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant MCP as CMP-0002: MCP Gateway (Optional)
    participant Client as CMP-0008: NetApp Client
    participant NetApp as CMP-0016: NetApp Infrastructure

    Note over DevOps,NetApp: DevOps-Driven Volume Creation (2-3 minutes)

    DevOps->>APIM: POST /api/v1/workflows/create-volume
    Note right of DevOps: {"name": "db-vol-001", "size": "500GB", "svm": "prod-svm"}

    APIM->>Temporal: Start VolumeCreation Workflow
    Temporal->>Worker: Assign Volume Creation Task

    Worker->>Activities: Execute validate_volume_request
    Activities->>Client: Validate Volume Parameters
    Client->>NetApp: GET /datacenter/storage/aggregates
    NetApp-->>Client: Available Aggregates
    Activities-->>Worker: Validation Complete

    Worker->>Activities: Execute create_volume_activity

    alt MCP Integration Available
        Activities->>MCP: Call MCP create_volume tool
        MCP->>Client: Execute NetApp API Call
    else Direct API Integration
        Activities->>Client: Direct NetApp API Call
    end

    Client->>NetApp: POST /datacenter/storage/volumes
    Note right of Client: Create volume with optimal aggregate
    NetApp-->>Client: Volume Created (UUID: vol-123)

    Client->>NetApp: GET /datacenter/storage/volumes/vol-123
    NetApp-->>Client: Volume Details

    Activities-->>Worker: Volume Creation Complete
    Worker-->>Temporal: Workflow Success
    Temporal-->>APIM: Volume Created Response
    APIM-->>DevOps: Volume: db-vol-001 (500GB) created successfully

    Note over DevOps: DevOps validates volume creation in GUI dashboard

2. Complex SVM Environment Setup with Temporal (DevOps Primary)

sequenceDiagram
    participant DevOps as DevOps GUI
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant Client as CMP-0008: NetApp Client
    participant State as CMP-0012: State Store
    participant NetApp as CMP-0016: NetApp Infrastructure
    participant EventProc as CMP-0014: Event Processor

    Note over DevOps,EventProc: DevOps-Driven SVM Environment Setup (30-45 minutes)

    DevOps->>APIM: POST /api/v1/workflows/svm-environment-setup
    Note right of DevOps: {"team": "mobile-dev", "environment": "development", "protocols": ["nfs", "cifs"]}

    APIM->>Temporal: Start SVMEnvironmentSetup Workflow

    Temporal->>State: Persist Workflow State
    State-->>Temporal: State Saved

    Temporal->>Worker: Assign Workflow
    Worker->>Activities: Execute validate_requirements

    Activities->>Client: Validate Team Requirements
    Client->>NetApp: GET /datacenter/cluster/clusters
    NetApp-->>Client: Cluster Information
    Activities-->>Worker: Validation Complete

    Worker->>State: Update Workflow State
    Worker->>Activities: Execute allocate_resources

    Activities->>Client: Find Optimal Resources
    Client->>NetApp: GET /datacenter/storage/aggregates
    NetApp-->>Client: Available Aggregates
    Activities-->>Worker: Resources Allocated

    Worker->>State: Update Workflow State
    Worker->>Activities: Execute create_svm

    Activities->>Client: Create SVM
    Client->>NetApp: POST /datacenter/svm/svms
    NetApp-->>Client: SVM Created (UUID: svm-456)
    Activities-->>Worker: SVM Creation Complete

    Worker->>State: Update Workflow State

    par Parallel Network Configuration
        Worker->>Activities: Execute create_management_lif
        Activities->>Client: Create Management LIF
        Client->>NetApp: POST /network/ip/interfaces
        NetApp-->>Client: Management LIF Created
        Activities-->>Worker: Management LIF Ready
    and
        Worker->>Activities: Execute create_data_lifs
        Activities->>Client: Create Data LIFs
        Client->>NetApp: POST /network/ip/interfaces (x2)
        NetApp-->>Client: Data LIFs Created
        Activities-->>Worker: Data LIFs Ready
    end

    Worker->>State: Update Workflow State
    Worker->>Activities: Execute provision_volumes

    Activities->>Client: Create Development Volumes
    Client->>NetApp: POST /datacenter/storage/volumes (x3)
    NetApp-->>Client: Volumes Created
    Activities-->>Worker: Volumes Provisioned

    Worker->>State: Update Workflow State
    Worker->>Activities: Execute configure_snapshots

    Activities->>Client: Configure Snapshot Policies
    Client->>NetApp: POST /storage/snapshot-policies
    NetApp-->>Client: Policies Configured
    Activities-->>Worker: Snapshots Configured

    Worker->>State: Update Workflow State
    Worker->>Activities: Execute finalize_setup

    Activities->>Client: Final Configuration
    Client->>NetApp: Multiple API calls for final config
    NetApp-->>Client: Configuration Complete
    Activities-->>Worker: Setup Finalized

    Worker->>State: Update Final Workflow State
    Worker->>Activities: Execute send_notification

    Activities->>EventProc: Send Team Notification
    EventProc-->>Activities: Notification Sent

    Worker-->>Temporal: Workflow Complete
    Temporal-->>Router: SVM Environment Ready
    Router-->>Gateway: Environment Setup Complete
    Gateway-->>AI: Development environment ready for mobile-dev team

    Note over AI: Complete environment with SVM, networks, volumes, and policies ready

3. Event-Driven Capacity Management (Day-2 AI Integration)

sequenceDiagram
    participant NetApp as CMP-0016: NetApp Infrastructure
    participant EventProc as CMP-0014: Event Processor
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant Client as CMP-0008: NetApp Client
    participant Monitor as CMP-0020: Health Monitor
    participant AI as CMP-0001: AI Assistant (Day-2)

    Note over NetApp,AI: Continuous Capacity Management with Day-2 AI

    loop Every Hour
        Temporal->>Worker: Execute capacity_check_activity
        Worker->>Activities: Check Cluster Capacity
        Activities->>Client: Get Capacity Metrics
        Client->>NetApp: GET /datacenter/storage/aggregates
        NetApp-->>Client: Capacity Data
        Activities-->>Worker: Capacity Status: 75% Used
        Worker-->>Temporal: Normal Capacity
        Temporal->>Temporal: Sleep 1 Hour
    end

    Note over NetApp: Capacity reaches 85%

    NetApp->>EventProc: Capacity Alert Event
    EventProc->>APIM: Forward Alert to API Management
    APIM->>Temporal: Signal: high_capacity_alert

    Temporal->>Worker: Trigger Capacity Analysis
    Worker->>Activities: Execute detailed_capacity_analysis

    Activities->>Client: Analyze Capacity Trends
    Client->>NetApp: GET /gateways/clusters/{uuid}/metrics/aggregates/perf
    NetApp-->>Client: Historical Performance Data

    Activities->>Client: Get Volume Growth Patterns
    Client->>NetApp: GET /datacenter/storage/volumes?fields=size,growth
    NetApp-->>Client: Volume Growth Data

    Activities-->>Worker: Analysis: Need 2TB Additional Capacity

    Worker->>Activities: Execute generate_expansion_plan
    Activities->>Client: Create Expansion Recommendations
    Client->>NetApp: GET /datacenter/storage/disks?available=true
    NetApp-->>Client: Available Disk Information

    Activities-->>Worker: Expansion Plan Ready

    Worker->>Activities: Execute request_approval
    Activities->>APIM: Send Approval Request via API
    APIM->>AI: Forward to AI Assistant (Day-2 Operation)
    Note right of APIM: "Cluster prod-01 needs 2TB expansion. AI approval?"

    AI-->>APIM: AI Analysis & Approval: APPROVED
    APIM-->>Activities: Approval: APPROVED

    Worker->>Activities: Execute capacity_expansion
    Activities->>Client: Add Disks to Aggregate
    Client->>NetApp: POST /datacenter/storage/aggregates/{id}/disks
    NetApp-->>Client: Expansion In Progress

    Activities->>Monitor: Monitor Expansion Progress
    Monitor->>Client: Check Expansion Status
    Client->>NetApp: GET /management-server/jobs/{job-id}
    NetApp-->>Client: Job Status: COMPLETED
    Monitor-->>Activities: Expansion Complete

    Activities-->>Worker: Capacity Expansion Successful
    Worker->>Activities: Execute send_completion_notification

    Activities->>APIM: Send Completion Notification
    APIM->>AI: Forward to AI Assistant (Day-2 Update)
    Note right of APIM: "Capacity expansion completed. 2TB added to prod-01"

    Worker-->>Temporal: Capacity Management Cycle Complete

    Note over Temporal: Resume Normal Monitoring

4. Failure Recovery and Retry Mechanism (DevOps Primary)

sequenceDiagram
    participant DevOps as DevOps GUI
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant Client as CMP-0008: NetApp Client
    participant State as CMP-0012: State Store
    participant NetApp as CMP-0016: NetApp Infrastructure

    Note over DevOps,NetApp: DevOps SVM Creation with Failure Recovery

    DevOps->>APIM: Start SVM Creation via GUI
    APIM->>Temporal: Start SVM Creation Workflow
    Temporal->>State: Persist Initial State

    Temporal->>Worker: Execute Workflow
    Worker->>Activities: validate_cluster_health
    Activities->>Client: Check Cluster Health
    Client->>NetApp: GET /datacenter/cluster/clusters/{id}
    NetApp-->>Client: Cluster Healthy
    Activities-->>Worker: Validation Success

    Worker->>State: Update: validation_complete
    Worker->>Activities: create_svm
    Activities->>Client: Create SVM
    Client->>NetApp: POST /datacenter/svm/svms

    Note over NetApp: Network Timeout
    NetApp-->>Client: ERROR: Connection Timeout
    Client-->>Activities: Network Error
    Activities-->>Worker: Activity Failed

    Worker->>State: Update: create_svm_failed (attempt 1)
    Worker->>Temporal: Report Activity Failure

    Note over Temporal: Automatic Retry with Exponential Backoff
    Temporal->>Temporal: Wait 2 seconds

    Temporal->>Worker: Retry create_svm (attempt 2)
    Worker->>Activities: create_svm (retry)
    Activities->>Client: Create SVM (retry)
    Client->>NetApp: POST /datacenter/svm/svms
    NetApp-->>Client: SVM Created Successfully
    Activities-->>Worker: SVM Creation Success

    Worker->>State: Update: svm_created
    Worker->>Activities: configure_network
    Activities->>Client: Configure Network Interfaces
    Client->>NetApp: POST /network/ip/interfaces

    Note over Client: Worker Pod Crashes
    Client-->>Activities: [Connection Lost]

    Note over Temporal: Worker Failure Detected
    Temporal->>State: Read Last Known State
    State-->>Temporal: State: svm_created, network_pending

    Note over Temporal: New Worker Assigned
    Temporal->>Worker: Resume from configure_network
    Worker->>State: Read Current State
    State-->>Worker: SVM UUID: svm-789, Status: created

    Worker->>Activities: configure_network (resume)
    Activities->>Client: Configure Network Interfaces
    Client->>NetApp: POST /network/ip/interfaces
    NetApp-->>Client: Network Configured
    Activities-->>Worker: Network Configuration Success

    Worker->>State: Update: network_configured
    Worker->>Activities: finalize_svm
    Activities->>Client: Final SVM Configuration
    Client->>NetApp: PATCH /datacenter/svm/svms/{id}
    NetApp-->>Client: SVM Finalized
    Activities-->>Worker: Finalization Complete

    Worker->>State: Update: workflow_complete
    Worker-->>Temporal: Workflow Success
    Temporal-->>APIM: SVM Created Successfully
    APIM-->>DevOps: SVM Creation Complete

    Note over DevOps: SVM creation completed despite network timeout and worker failure

5. Human-in-the-Loop Approval Workflow (DevOps + AI Day-2)

sequenceDiagram
    participant DevOps as DevOps GUI
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant Client as CMP-0008: NetApp Client
    participant State as CMP-0012: State Store
    participant NetApp as CMP-0016: NetApp Infrastructure
    participant Approver as External: Human Approver
    participant AI as CMP-0001: AI Assistant (Day-2)
    participant Notification as External: Notification System

    Note over DevOps,Notification: DevOps Production SVM Creation with AI-Assisted Approval

    DevOps->>APIM: Create Production SVM Request
    Note right of DevOps: Environment: "production"
    APIM->>Temporal: Create Production SVM Workflow

    Temporal->>State: Persist Workflow State
    Temporal->>Worker: Execute Workflow

    Worker->>Activities: validate_production_requirements
    Activities->>Client: Validate Production Setup
    Client->>NetApp: Multiple validation API calls
    NetApp-->>Client: Validation Results
    Activities-->>Worker: Requirements Valid

    Worker->>State: Update: validation_complete
    Worker->>Activities: prepare_svm_config
    Activities->>Client: Generate Production Configuration
    Client->>NetApp: GET cluster and aggregate information
    NetApp-->>Client: Infrastructure Data
    Activities-->>Worker: Configuration Prepared

    Worker->>State: Update: config_prepared
    Worker->>Activities: request_production_approval

    Activities->>APIM: Send Approval Request
    APIM->>Notification: Forward Approval Request
    Note right of APIM: "Production SVM 'finance-prod' ready for creation. Requires approval."

    Notification->>Approver: Email/Slack Notification
    Note right of Notification: "Approve production SVM creation?"

    par Human Approval Process
        Activities->>State: Update: awaiting_approval
        Worker->>Temporal: Activity Running (wait for approval)

        Note over Temporal: Workflow waits up to 24 hours for approval

        loop Wait for Approval
            Temporal->>State: Check Approval Status
            State-->>Temporal: Status: awaiting_approval
            Temporal->>Temporal: Sleep 30 seconds
        end
    and AI-Assisted Analysis (Day-2)
        APIM->>AI: Request AI Analysis of SVM Config
        AI->>Client: Analyze NetApp Infrastructure
        Client->>NetApp: GET cluster capacity and performance
        NetApp-->>Client: Infrastructure data
        AI-->>APIM: AI Recommendation: "Approved - optimal configuration"
    end

    Note over Approver: Approver reviews request with AI recommendation (after 2 hours)

    Approver->>Notification: APPROVE (based on AI analysis)
    Notification->>APIM: Approval Signal: APPROVED
    APIM->>Activities: Approval Signal: APPROVED
    Activities-->>Worker: Approval Received

    Worker->>State: Update: approved
    Worker->>Activities: create_production_svm

    Activities->>Client: Create Production SVM
    Client->>NetApp: POST /datacenter/svm/svms
    Note right of Client: Production-grade configuration
    NetApp-->>Client: SVM Created (UUID: svm-prod-001)

    Activities-->>Worker: Production SVM Created

    Worker->>Activities: configure_production_security
    Activities->>Client: Apply Security Policies
    Client->>NetApp: Configure LDAP, export policies, etc.
    NetApp-->>Client: Security Configured

    Worker->>Activities: setup_monitoring
    Activities->>Client: Enable Production Monitoring
    Client->>NetApp: Configure alerts and monitoring
    NetApp-->>Client: Monitoring Active

    Worker->>State: Update: workflow_complete
    Worker->>Activities: send_completion_notification

    Activities->>APIM: Send Success Notification
    APIM->>Notification: Forward Success Notification
    Notification->>AI: Production SVM Ready (Day-2 Update)
    Notification->>Approver: Creation Completed

    Worker-->>Temporal: Workflow Complete
    Temporal-->>APIM: Production SVM 'finance-prod' created and ready
    APIM-->>DevOps: SVM Creation Complete

    Note over DevOps: Production environment ready with full approval trail and AI assistance

6. Multi-Site Data Replication Setup (DevOps Primary)

sequenceDiagram
    participant DevOps as DevOps GUI
    participant APIM as API Management
    participant Temporal as CMP-0009: Temporal Engine
    participant Worker as CMP-0011: Temporal Worker
    participant Activities as CMP-0010: Workflow Activities
    participant Client as CMP-0008: NetApp Client
    participant State as CMP-0012: State Store
    participant PrimarySite as Primary: Primary NetApp Cluster
    participant SecondarySite as Secondary: Secondary NetApp Cluster
    participant Monitor as CMP-0020: Health Monitor

    Note over DevOps,Monitor: DevOps Multi-Site SnapMirror Replication Setup

    DevOps->>APIM: Setup Disaster Recovery Replication
    Note right of DevOps: Source: "prod-vol-001", Target Site: "dr-site"
    APIM->>Temporal: Setup Disaster Recovery Replication

    Temporal->>State: Persist Workflow State
    Temporal->>Worker: Execute Multi-Site Replication Workflow

    Worker->>Activities: validate_source_volume
    Activities->>Client: Validate Source Volume
    Client->>PrimarySite: GET /datacenter/storage/volumes/prod-vol-001
    PrimarySite-->>Client: Volume Details
    Activities-->>Worker: Source Volume Valid

    Worker->>State: Update: source_validated
    Worker->>Activities: validate_destination_cluster
    Activities->>Client: Check Destination Cluster
    Client->>SecondarySite: GET /datacenter/cluster/clusters
    SecondarySite-->>Client: Cluster Status: Healthy
    Activities-->>Worker: Destination Valid

    Worker->>State: Update: destination_validated
    Worker->>Activities: check_network_connectivity

    par Check Inter-Cluster Connectivity
        Activities->>Client: Test Primary to Secondary
        Client->>PrimarySite: GET /network/ip/interfaces
        PrimarySite-->>Client: Network Interfaces
        Client->>SecondarySite: POST /network/ping-test
        SecondarySite-->>Client: Connectivity OK
    and
        Activities->>Client: Check Bandwidth
        Client->>PrimarySite: GET /gateways/clusters/{id}/metrics/network/perf
        PrimarySite-->>Client: Network Performance Metrics
    end

    Activities-->>Worker: Network Connectivity Verified

    Worker->>State: Update: network_verified
    Worker->>Activities: create_destination_volume

    Activities->>Client: Create DP Volume on Secondary
    Client->>SecondarySite: POST /datacenter/storage/volumes
    Note right of Client: Type: DP (Data Protection)
    SecondarySite-->>Client: DP Volume Created (UUID: dp-vol-001)

    Activities-->>Worker: Destination Volume Ready

    Worker->>State: Update: destination_created
    Worker->>Activities: establish_snapmirror_relationship

    Activities->>Client: Create SnapMirror Relationship
    Client->>PrimarySite: POST /snapmirror/relationships
    Note right of Client: Source: prod-vol-001, Destination: dp-vol-001
    PrimarySite-->>Client: Relationship Created (UUID: sm-rel-001)

    Activities-->>Worker: SnapMirror Relationship Established

    Worker->>State: Update: relationship_created
    Worker->>Activities: initialize_snapmirror

    Activities->>Client: Start Initial Transfer
    Client->>PrimarySite: POST /snapmirror/relationships/sm-rel-001/transfers
    PrimarySite-->>Client: Transfer Started (Job: job-123)

    Activities->>Monitor: Monitor Initial Transfer

    loop Monitor Transfer Progress
        Monitor->>Client: Check Transfer Status
        Client->>PrimarySite: GET /management-server/jobs/job-123
        PrimarySite-->>Client: Progress: 45% Complete
        Monitor->>State: Update Progress
        Monitor->>Monitor: Wait 60 seconds
    end

    PrimarySite-->>Client: Transfer Complete
    Monitor-->>Activities: Initial Transfer Successful

    Worker->>State: Update: initialized
    Worker->>Activities: configure_replication_schedule

    Activities->>Client: Set Replication Schedule
    Client->>PrimarySite: PATCH /snapmirror/relationships/sm-rel-001
    Note right of Client: Schedule: Every 4 hours
    PrimarySite-->>Client: Schedule Configured

    Activities-->>Worker: Schedule Active

    Worker->>State: Update: schedule_configured
    Worker->>Activities: setup_monitoring_alerts

    Activities->>Client: Configure SnapMirror Alerts
    Client->>PrimarySite: POST /management-server/events/rules
    PrimarySite-->>Client: Alert Rules Created

    Activities->>Client: Configure Secondary Site Monitoring
    Client->>SecondarySite: POST /management-server/events/rules
    SecondarySite-->>Client: Alert Rules Created

    Worker->>State: Update: monitoring_configured
    Worker->>Activities: test_failover_capability

    Activities->>Client: Test Break and Resync
    Client->>SecondarySite: POST /snapmirror/relationships/sm-rel-001/break
    SecondarySite-->>Client: Break Successful

    Activities->>Client: Test Resync
    Client->>PrimarySite: POST /snapmirror/relationships/sm-rel-001/resync
    PrimarySite-->>Client: Resync Initiated

    Activities->>Monitor: Wait for Resync
    Monitor->>Client: Check Resync Status
    Client->>PrimarySite: GET /snapmirror/relationships/sm-rel-001
    PrimarySite-->>Client: Status: Snapmirrored
    Monitor-->>Activities: Failover Test Complete

    Worker->>State: Update: tested
    Worker->>Activities: generate_dr_documentation

    Activities->>Client: Generate DR Procedures
    Client-->>Activities: DR Documentation Created

    Worker->>State: Update: workflow_complete
    Worker-->>Temporal: Multi-Site Replication Complete

    Temporal-->>APIM: DR Replication configured successfully
    APIM-->>DevOps: DR Setup Complete
    Note right of DevOps: prod-vol-001 โ†’ dr-site, Schedule: 4hrs, Failover tested

Component Interaction Patterns

1. Request Processing Pattern

graph LR
    A[CMP-0001<br/>AI Assistant<br/>Interface] -->|MCP Request| B[CMP-0002<br/>MCP Protocol<br/>Gateway]
    B -->|Route| C[CMP-0003<br/>Request<br/>Router]
    C -->|Validate| D[CMP-0004<br/>Schema<br/>Validator]
    C -->|Lookup| E[CMP-0005<br/>Tool<br/>Registry]
    C -->|Authenticate| F[CMP-0007<br/>Authentication<br/>Manager]
    C -->|Execute| G[CMP-0008<br/>NetApp API<br/>Client]
    G -->|Cache| H[CMP-0013<br/>Cache<br/>Manager]
    C -->|Format| I[CMP-0006<br/>Response<br/>Formatter]
    I -->|Response| B
    B -->|Result| A

    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#e8f5e8
    style G fill:#fff3e0
    style H fill:#fce4ec

2. Workflow Orchestration Pattern

graph TD
    A[CMP-0001<br/>AI Assistant<br/>Interface] -->|Workflow Request| B[CMP-0009<br/>Temporal Workflow<br/>Engine]
    B -->|Assign| C[CMP-0011<br/>Temporal<br/>Workers]
    C -->|Execute| D[CMP-0010<br/>Workflow<br/>Activities]
    D -->|NetApp Call| E[CMP-0008<br/>NetApp API<br/>Client]
    E -->|API Request| F[CMP-0016<br/>NetApp<br/>Infrastructure]
    C -->|Persist State| G[CMP-0012<br/>Workflow State<br/>Store]
    B -->|Monitor| H[CMP-0018<br/>Monitoring<br/>Stack]
    F -->|Events| I[CMP-0014<br/>Event<br/>Processor]
    I -->|Trigger| B

    style A fill:#e1f5fe
    style B fill:#e8f5e8
    style C fill:#e8f5e8
    style D fill:#e8f5e8
    style E fill:#fff3e0
    style F fill:#ffebee
    style G fill:#f1f8e9
    style H fill:#fce4ec
    style I fill:#fff8e1

3. Event-Driven Pattern

graph LR
    A[CMP-0016<br/>NetApp<br/>Infrastructure] -->|Events| B[CMP-0014<br/>Event<br/>Processor]
    B -->|Process & Filter| C[CMP-0009<br/>Temporal Workflow<br/>Engine]
    C -->|Orchestrate| D[CMP-0011<br/>Temporal<br/>Workers]
    D -->|Execute Activities| E[CMP-0010<br/>Workflow<br/>Activities]
    E -->|NetApp Actions| F[CMP-0008<br/>NetApp API<br/>Client]
    F -->|API Calls| A

    style A fill:#ffebee
    style B fill:#fff8e1
    style C fill:#e8f5e8
    style D fill:#e8f5e8
    style E fill:#e8f5e8
    style F fill:#fff3e0

4. Cache-Enabled Request Pattern

graph TD
    A[CMP-0001<br/>AI Assistant<br/>Interface] -->|Query Request| B[CMP-0002<br/>MCP Protocol<br/>Gateway]
    B --> C[CMP-0003<br/>Request<br/>Router]
    C --> D[CMP-0013<br/>Cache<br/>Manager]

    D -->|Cache Hit| E[Cached Response]
    D -->|Cache Miss| F[CMP-0008<br/>NetApp API<br/>Client]

    F --> G[CMP-0016<br/>NetApp<br/>Infrastructure]
    G --> H[Fresh Data]
    H --> I[Update Cache]
    I --> J[Return Response]

    E --> K[Format Response]
    J --> K
    K --> B
    B --> A

    style A fill:#e1f5fe
    style D fill:#fce4ec
    style F fill:#fff3e0
    style G fill:#ffebee

5. Security Context Pattern

graph TD
    A[Incoming Request] --> B[CMP-0007<br/>Authentication<br/>Manager]
    B --> C[CMP-0015<br/>Security<br/>Context]
    C --> D{Credentials<br/>Valid?}

    D -->|Yes| E[CMP-0008<br/>NetApp API<br/>Client]
    D -->|No| F[Access Denied]

    E --> G[Encrypted Channel]
    G --> H[CMP-0016<br/>NetApp<br/>Infrastructure]

    C --> I[CMP-0019<br/>Configuration<br/>Manager]
    I --> J[Environment<br/>Configs]

    style B fill:#ffcdd2
    style C fill:#ffcdd2
    style E fill:#fff3e0
    style G fill:#e8f5e8
    style H fill:#ffebee
    style I fill:#f3e5f5

6. Health Monitoring Pattern

graph LR
    A[CMP-0020<br/>Health<br/>Monitor] -->|Check| B[CMP-0008<br/>NetApp API<br/>Client]
    A -->|Check| C[CMP-0009<br/>Temporal Workflow<br/>Engine]
    A -->|Check| D[CMP-0013<br/>Cache<br/>Manager]
    A -->|Check| E[CMP-0012<br/>Workflow State<br/>Store]

    B -->|Status| F[Health Report]
    C -->|Status| F
    D -->|Status| F
    E -->|Status| F

    F --> G[CMP-0018<br/>Monitoring<br/>Stack]
    G --> H[Alerts &<br/>Dashboards]

    style A fill:#e3f2fd
    style F fill:#e3f2fd
    style G fill:#fce4ec
    style H fill:#fce4ec

Technical Specifications

Component Specifications

CMP-0009: Temporal Workflow Engine

Configuration:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: temporal-server
  labels:
    component: CMP-0009
spec:
  replicas: 3
  template:
    spec:
      containers:
      - name: temporal-server
        image: temporalio/auto-setup:1.20.0
        ports:
        - containerPort: 7233
          name: grpc
        - containerPort: 8080
          name: web
        env:
        - name: DB
          value: postgresql
        - name: POSTGRES_SEEDS
          value: postgres-cluster:5432
        - name: DYNAMIC_CONFIG_FILE_PATH
          value: /etc/temporal/config/dynamicconfig.yaml
        resources:
          requests:
            memory: 1Gi
            cpu: 500m
          limits:
            memory: 2Gi
            cpu: 1000m

Interfaces: - gRPC API: Port 7233 for workflow and activity communication - Web UI: Port 8080 for workflow monitoring and debugging - Database: PostgreSQL for state persistence

CMP-0008: NetApp API Client

Configuration:

class NetAppAPIClient:
    def __init__(self, config: NetAppConfig):
        self.base_url = f"https://{config.host}/api/v2"
        self.session = aiohttp.ClientSession(
            auth=aiohttp.BasicAuth(config.username, config.password),
            connector=aiohttp.TCPConnector(
                ssl=False if not config.verify_ssl else None,
                limit=20,
                limit_per_host=10,
                keepalive_timeout=30
            ),
            timeout=aiohttp.ClientTimeout(total=config.timeout)
        )

    async def make_request(self, method: str, endpoint: str, **kwargs):
        url = f"{self.base_url}/{endpoint.lstrip('/')}"
        async with self.session.request(method, url, **kwargs) as response:
            response.raise_for_status()
            return await response.json()

API Endpoints Supported: - Administration: /admin/* - Datacenter: /datacenter/* - Storage Provider: /storage-provider/* - Management Server: /management-server/* - Gateways: /gateways/*

Performance Specifications

Component Throughput Latency Scalability Resource Requirements
CMP-0002 1000 req/sec <10ms Horizontal (Knative) 256Mi RAM, 200m CPU
CMP-0008 500 req/sec <100ms Connection pooling 512Mi RAM, 500m CPU
CMP-0009 10000 workflows/sec <50ms Cluster-wide 2Gi RAM, 1 CPU
CMP-0011 1000 activities/sec Variable Worker scaling 1Gi RAM, 500m CPU
CMP-0013 5000 ops/sec <5ms Redis cluster 1Gi RAM, 200m CPU

Security Specifications

Authentication and Authorization

# CMP-0015: Security Context Configuration
apiVersion: v1
kind: Secret
metadata:
  name: netapp-credentials
  namespace: netapp-mcp
type: Opaque
data:
  endpoint: <base64-encoded-url>
  username: <base64-encoded-username>
  password: <base64-encoded-password>
  ca-cert: <base64-encoded-ca-certificate>

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: netapp-mcp-service
  namespace: netapp-mcp
  annotations:
    component: CMP-0007

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: netapp-mcp
  name: netapp-mcp-role
rules:
- apiGroups: [""]
  resources: ["secrets", "configmaps"]
  verbs: ["get", "list"]
- apiGroups: ["serving.knative.dev"]
  resources: ["services"]
  verbs: ["get", "list", "patch"]

Network Security

# Network Policy for Component Isolation
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: netapp-mcp-network-policy
  namespace: netapp-mcp
spec:
  podSelector:
    matchLabels:
      app.kubernetes.io/part-of: netapp-mcp
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: knative-serving
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: TCP
      port: 443  # NetApp HTTPS
    - protocol: TCP
      port: 7233 # Temporal gRPC
    - protocol: TCP
      port: 5432 # PostgreSQL
    - protocol: TCP
      port: 6379 # Redis

Monitoring and Observability

Metrics Collection

# CMP-0018: Monitoring Stack Configuration
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: netapp-mcp-components
  namespace: netapp-mcp
spec:
  selector:
    matchLabels:
      app.kubernetes.io/part-of: netapp-mcp
  endpoints:
  - port: metrics
    path: /metrics
    interval: 30s
    scrapeTimeout: 10s

Key Metrics

Component Metric Name Type Purpose
CMP-0002 mcp_requests_total Counter Track request volume
CMP-0008 netapp_api_calls_total Counter Monitor API usage
CMP-0009 temporal_workflow_executions_total Counter Workflow tracking
CMP-0011 temporal_activity_executions_total Counter Activity monitoring
CMP-0013 cache_operations_total Counter Cache performance
CMP-0020 health_check_status Gauge System health

Distributed Tracing

# OpenTelemetry Integration
from opentelemetry import trace
from opentelemetry.exporter.jaeger.thrift import JaegerExporter
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor

# Configure tracing for all components
tracer_provider = TracerProvider()
jaeger_exporter = JaegerExporter(
    agent_host_name="jaeger-agent",
    agent_port=6831
)
span_processor = BatchSpanProcessor(jaeger_exporter)
tracer_provider.add_span_processor(span_processor)
trace.set_tracer_provider(tracer_provider)

# Component-specific tracers
cmp_0002_tracer = trace.get_tracer("CMP-0002-MCP-Gateway")
cmp_0008_tracer = trace.get_tracer("CMP-0008-NetApp-Client")
cmp_0009_tracer = trace.get_tracer("CMP-0009-Temporal-Engine")

This comprehensive technical documentation provides detailed component models, sequence diagrams, and specifications for implementing and operating the NetApp ActiveIQ MCP Server with Temporal.io integration.