Files
Zerto-Python-SDK-Hands-On-Labs/exercises/03_site_discovery/working/sites.py
T
Kosta Mushkin 3a075e5ecf initial commit
2025-05-22 10:10:15 -04:00

85 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""
Exercise 3: Site Discovery
This script demonstrates how to discover and work with Zerto virtualization sites.
Prerequisites:
1. Install the zvml package in development mode:
cd /path/to/zvml-python-sdk
pip install -e .
2. Update prerequisites/config.py with your ZVM details
Your task:
1. List all available virtualization sites
2. Get and display local site information
If you need help, check the solution in the solution directory.
"""
import sys
import os
import logging
import json
from pathlib import Path
# Add prerequisites to Python path
prerequisites_path = Path(__file__).parent.parent.parent.parent / "prerequisites"
sys.path.append(str(prerequisites_path))
# Import the SDK modules
from zvml import ZVMLClient
# Import configuration
try:
from config import (
ZVM_HOST,
ZVM_PORT,
ZVM_SSL_VERIFY,
CLIENT_ID,
CLIENT_SECRET
)
except ImportError:
print("Error: Please copy config.example.py to config.py and update with your values")
print("Expected path:", prerequisites_path / "config.py")
sys.exit(1)
def main():
"""
Main function to demonstrate site discovery.
Complete the following steps:
1. List all available virtualization sites
2. Get and display local site information
"""
# Set up logging with timestamp
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
try:
# Step 1: Create a ZVMLClient instance
# TODO: Initialize the ZVMLClient with your ZVM host and credentials
# Hint: Use ZVMLClient(zvm_address=ZVM_HOST, client_id=CLIENT_ID,
# client_secret=CLIENT_SECRET, verify_certificate=ZVM_SSL_VERIFY)
client = None # Replace with actual client initialization
# Step 2: List all available sites
# TODO: Get the list of virtualization sites
# Hint: Use client.virtualization_sites.get_virtualization_sites()
# Hint: Log the number of sites found and their details using json.dumps()
pass # Replace with actual site listing
# Step 3: Get and display local site information
# TODO: Get and display local site information
# Hint: Use client.localsite.get_local_site()
# Hint: Log the local site details using json.dumps()
pass # Replace with actual local site retrieval
except Exception as e:
# TODO: Handle any site discovery errors
# Hint: Use logging.error() to log the error message
logging.error(f"Site discovery failed: {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()