list LMs
This commit is contained in:
143
list_oracle_live_mounts.py
Executable file
143
list_oracle_live_mounts.py
Executable file
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
from rsc import RSCAuth, RSCGraphQL
|
||||
from tabulate import tabulate
|
||||
|
||||
def list_oracle_live_mounts(name=None, cluster_uuid=None, source_db_id=None, org_id=None, sort_field=None, sort_order=None, limit=50):
|
||||
# Initialize auth
|
||||
auth = RSCAuth()
|
||||
|
||||
# Initialize GraphQL client
|
||||
gql = RSCGraphQL(auth)
|
||||
|
||||
# Build filters
|
||||
filters = []
|
||||
if name:
|
||||
filters.append({"field": "NAME", "texts": [name]})
|
||||
if cluster_uuid:
|
||||
filters.append({"field": "CLUSTER_UUID", "texts": [cluster_uuid]})
|
||||
if source_db_id:
|
||||
filters.append({"field": "SOURCE_DATABASE_ID", "texts": [source_db_id]})
|
||||
if org_id:
|
||||
filters.append({"field": "ORG_ID", "texts": [org_id]})
|
||||
|
||||
# Build sortBy
|
||||
sort_by = None
|
||||
if sort_field:
|
||||
sort_by = {"field": sort_field, "sortOrder": sort_order or "ASC"}
|
||||
|
||||
# GraphQL query to list Oracle Live Mounts
|
||||
query = """
|
||||
query OracleLiveMountListQuery($first: Int!, $filters: [OracleLiveMountFilterInput!], $sortBy: OracleLiveMountSortBy) {
|
||||
oracleLiveMounts(
|
||||
first: $first
|
||||
filters: $filters
|
||||
sortBy: $sortBy
|
||||
) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
cdmId
|
||||
mountedDatabaseName
|
||||
status
|
||||
creationDate
|
||||
cluster {
|
||||
id
|
||||
name
|
||||
}
|
||||
sourceDatabase {
|
||||
id
|
||||
name
|
||||
dbUniqueName
|
||||
}
|
||||
mountedDatabase {
|
||||
id
|
||||
name
|
||||
}
|
||||
targetOracleHost {
|
||||
id
|
||||
name
|
||||
}
|
||||
targetOracleRac {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
variables = {
|
||||
"first": limit,
|
||||
"filters": filters if filters else None,
|
||||
"sortBy": sort_by
|
||||
}
|
||||
|
||||
# Execute query
|
||||
response = gql.query(query, variables)
|
||||
|
||||
# Parse and display results
|
||||
edges = response['data']['oracleLiveMounts']['edges']
|
||||
|
||||
if not edges:
|
||||
print("No Oracle Live Mounts found.")
|
||||
return
|
||||
|
||||
# Prepare data for tabulation
|
||||
table_data = []
|
||||
for edge in edges:
|
||||
lm = edge['node']
|
||||
cluster_name = lm['cluster']['name'] if lm['cluster'] else 'Unknown'
|
||||
target_name = 'Unknown'
|
||||
if lm.get('targetOracleHost'):
|
||||
target_name = lm['targetOracleHost']['name']
|
||||
elif lm.get('targetOracleRac'):
|
||||
target_name = lm['targetOracleRac']['name']
|
||||
|
||||
source_db = lm['sourceDatabase']['dbUniqueName'] if lm['sourceDatabase'] else 'Unknown'
|
||||
mounted_db = lm['mountedDatabase']['name'] if lm['mountedDatabase'] else lm['mountedDatabaseName']
|
||||
|
||||
table_data.append([
|
||||
lm['id'],
|
||||
source_db,
|
||||
mounted_db,
|
||||
cluster_name,
|
||||
target_name,
|
||||
lm['status'],
|
||||
lm['creationDate']
|
||||
])
|
||||
|
||||
# Print tabulated output
|
||||
headers = ['ID', 'Source DB', 'Mounted DB', 'Cluster', 'Target', 'Status', 'Created']
|
||||
print(tabulate(table_data, headers=headers, tablefmt='grid'))
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='List Oracle Live Mounts')
|
||||
parser.add_argument('--name', help='Filter by name (mounted database name)')
|
||||
parser.add_argument('--cluster-uuid', help='Filter by cluster UUID')
|
||||
parser.add_argument('--source-db-id', help='Filter by source database ID')
|
||||
parser.add_argument('--org-id', help='Filter by organization ID')
|
||||
parser.add_argument('--sort-field', choices=['NAME', 'CREATION_DATE', 'STATUS'], help='Sort field')
|
||||
parser.add_argument('--sort-order', choices=['ASC', 'DESC'], default='ASC', help='Sort order')
|
||||
parser.add_argument('--limit', type=int, default=50, help='Maximum number of results')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
list_oracle_live_mounts(
|
||||
name=args.name,
|
||||
cluster_uuid=args.cluster_uuid,
|
||||
source_db_id=args.source_db_id,
|
||||
org_id=args.org_id,
|
||||
sort_field=args.sort_field,
|
||||
sort_order=args.sort_order,
|
||||
limit=args.limit
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"Error: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user