The Project class provides an interface for working with OpenStack projects (also known as tenants). Projects are containers for resources like servers, networks, and storage volumes.
from myos.project import Projectproject = Project(name="lsst-drp")# Get project detailsprint(project.name) # Project nameprint(project.id) # Project IDprint(project.tags) # List of tags
project = Project(name="Condor")# Get all servers in this projectservers = project.serversprint(f"Project has {len(servers)} servers")for server in servers: print(f"Server: {server.name}") print(f"ID: {server.id}") print(f"Status: {server.status}") print(f"Flavor: {server.flavor.name}") print("---")
Example Output
Project has 1 serversServer: vwn-gpu-2025-12-17-07-17-16-0ID: e2951a59-e290-430f-8f12-1fa4168c3024Status: SHUTOFFFlavor: g-a100-80gb-2022.x1---
project = Project(name="Condor")# Get all users with access to this projectusers = project.usersprint(f"{len(users)} users have access to this project")for user in users: print(f"User: {user.name}") # Traverse to user's domain print(f"Domain: {user.domain.name}")
The users property returns users based on role assignments within the project.
Get all floating IP addresses allocated to a project:
project = Project(name="lsst-drp")# Get all floating IPs in this projectfips = project.fipsprint(f"Project has {len(fips)} floating IPs")for fip in fips: print(f"Floating IP: {fip.ip}") print(f"ID: {fip.id}")
Example Output
Project has 1 floating IPsFloating IP: 130.246.83.113ID: 3b90998e-ab39-45b4-b56e-120e00d31fdb
The myos SDK supports rich relationship traversal between resources:
from myos.project import Projectproject = Project(name="ncas-force-U")# Traverse from project to servers to hypervisorsprint(f"Project: {project.name}\n")for server in project.servers: print(f"Server: {server.name}") print(f" Status: {server.status}") print(f" Flavor: {server.flavor.name}") print(f" Image: {server.image.name}") # Get the user who created this server creator = server.user print(f" Created by: {creator.name} ({creator.domain.name})") # Get the hypervisor running this server hypervisor = server.hypervisor print(f" Hypervisor: {hypervisor.hostname}") print(f" HV Status: {hypervisor.status}") print()# Traverse from project to users to their other projectsprint("\nUsers and their other projects:")for user in project.users: print(f"User: {user.name}") user_projects = user.projects print(f" Has access to {len(user_projects)} projects") for proj in user_projects: if proj.name != project.name: print(f" - {proj.name}")