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