# Blocker Resolution Priority Order

**Last Updated**: 2024-12-19

## Correct Priority Order

You're absolutely right! SSH access should come **before** Kubernetes cluster setup. Here's why:

### Priority 1: SSH Access (Blocker 2) - DO THIS FIRST

**Why First?**
- Required to verify and download images
- Needed for image verification (Blocker 3)
- Images must be ready before VM deployment
- Can be done independently

**Time**: ~5-10 minutes

### Priority 2: Image Verification (Blocker 3) - DO THIS SECOND

**Why Second?**
- Depends on SSH access (Priority 1)
- Images must be verified/downloaded before deploying VMs
- VM deployment will fail if images are missing
- Can be done once SSH is working

**Time**: ~5-15 minutes (depending on download speed)

### Priority 3: Kubernetes Cluster (Blocker 1) - CAN BE DONE IN PARALLEL

**Why Third?**
- Can be set up in parallel with SSH/Images
- Needed for provider deployment
- Provider deployment can wait until images are ready
- No dependency on SSH or images

**Time**: ~10-20 minutes

## Rationale

### Dependency Chain

```
SSH Access (Priority 1)
    ↓
Image Verification (Priority 2)
    ↓
VM Deployment (requires both SSH and Images)
    ↑
Kubernetes Cluster (Priority 3) - Can be parallel
```

### Why This Order Matters

1. **SSH First**: Without SSH, you cannot:
   - Verify images exist
   - Download missing images
   - Deploy exporters
   - Configure tunnels

2. **Images Second**: Without images, you cannot:
   - Deploy test VMs
   - Verify VM creation works
   - Test the full deployment

3. **Kubernetes Third**: Kubernetes can be set up anytime, but:
   - Provider deployment can wait
   - VM deployment requires images first
   - No dependency on SSH or images

## Recommended Execution Order

### Step 1: SSH Access (5-10 min)
```bash
# Generate key
ssh-keygen -t ed25519 -f ~/.ssh/sankofa_proxmox

# Copy to nodes
ssh-copy-id -i ~/.ssh/sankofa_proxmox.pub root@192.168.11.10
ssh-copy-id -i ~/.ssh/sankofa_proxmox.pub root@192.168.11.11

# Test
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.10 'hostname'
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.11 'hostname'
```

### Step 2: Image Verification (5-15 min)
```bash
# Check images
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.10 'pveam list local | grep ubuntu'
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.11 'pveam list local | grep ubuntu'

# Download if missing
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.10 'pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz'
ssh -i ~/.ssh/sankofa_proxmox root@192.168.11.11 'pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz'
```

### Step 3: Kubernetes Cluster (10-20 min)
```bash
# Install kind (if not installed)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind && sudo mv ./kind /usr/local/bin/kind

# Create cluster
kind create cluster --name sankofa

# Install Crossplane
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm install crossplane crossplane-stable/crossplane --namespace crossplane-system --create-namespace
```

## Parallel Execution

While SSH and Images must be sequential, Kubernetes can be set up in parallel:

```
Time →
SSH Access ──────────────┐
                         │
Image Verification ─────┼───┐
                         │   │
Kubernetes ──────────────┘   │
                              │
                    All Ready ┘
```

## Updated Script Order

The `resolve-blockers.sh` script now follows this priority:
1. SSH Access (Priority 1)
2. Image Verification (Priority 2)
3. Kubernetes Cluster (Priority 3)

## Related Documentation

- [Remaining Blockers Guide](./REMAINING_BLOCKERS_GUIDE.md) - Updated with priority order
- [Blockers Resolution Status](./BLOCKERS_RESOLUTION_STATUS.md)
- [Deployment Readiness Final](./DEPLOYMENT_READINESS_FINAL.md)

