The Domain class provides an interface for working with OpenStack domains. Domains are containers for users and projects, providing administrative boundaries and identity scope within an OpenStack cloud.
from myos.domain import Domaindomain = Domain(name="default")# Get all projects in this domainprojects = domain.projectsprint(f"Domain '{domain.name}' has {len(projects)} projects\n")for project in projects: print(f"Project: {project.name}") print(f" ID: {project.id}") print()
from myos.domain import Domaindomain = Domain(name="jasmin")# Get all users in this domainusers = domain.usersprint(f"Domain '{domain.name}' has {len(users)} users\n")for user in users: print(f"User: {user.name}") print(f" ID: {user.id}") print()
from myos.domain import Domaindomain = Domain(name="default")print(f"Analyzing domain: {domain.name}\n")# Get projects in domainprojects = domain.projectsprint(f"Projects in domain: {len(projects)}\n")# Analyze first few projectstotal_servers = 0for project in projects[:5]: # First 5 projects print(f"Project: {project.name}") # Get servers in this project servers = project.servers total_servers += len(servers) print(f" Servers: {len(servers)}") # Show project users users = project.users print(f" Users: {len(users)}") if servers: # Show first server details server = servers[0] print(f" Example server: {server.name}") print(f" Status: {server.status}") print(f" Hypervisor: {server.hypervisor.hostname}") print()print(f"Total servers in analyzed projects: {total_servers}")
from myos.domain import Domaindomain = Domain(name="stfc")print(f"User Activity Report for Domain: {domain.name}\n")# Get all usersusers = domain.usersprint(f"Total users: {len(users)}\n")# Analyze user resource usageactive_users = 0for user in users[:10]: # First 10 users print(f"User: {user.name}") # Get user's servers servers = user.servers if servers: active_users += 1 print(f" Servers: {len(servers)}") # Count active servers active_servers = [s for s in servers if s.status == "ACTIVE"] print(f" Active: {len(active_servers)}") # Get user's projects projects = user.projects print(f" Projects: {len(projects)}") else: print(f" No servers") print()print(f"Users with servers: {active_users} out of {min(10, len(users))} checked")
Domain-level analysis is useful for generating administrative reports and understanding resource distribution.
from myos.user import User# User without domain defaults to 'default' domainuser1 = User(name="admin")print(f"User: {user1.name}")print(f"Domain: {user1.domain.name}")# Specify domain explicitlyuser2 = User(name="wup22514", domain_name="stfc")print(f"\nUser: {user2.name}")print(f"Domain: {user2.domain.name}")# Compare domainsif user1.domain.id == user2.domain.id: print("\nUsers are in the same domain")else: print("\nUsers are in different domains")
Always specify the domain when working with users if you’re not using the default domain.