annotate gcp_batch_netcat.py @ 6:d25792770df8 draft

planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
author enis
date Thu, 24 Jul 2025 21:59:57 +0000
parents b2ce158b4f22
children fcfb703748b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
1 import argparse
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
2 import json
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
3 import logging
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
4 import os
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
5 import sys
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
6 import uuid
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
7 from google.cloud import batch_v1
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
8
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
9 # Configure logging to go to stdout instead of stderr to avoid Galaxy marking job as failed
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
10 logging.basicConfig(
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
11 level=logging.INFO,
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
12 format='%(asctime)s - %(levelname)s - %(message)s',
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
13 stream=sys.stdout
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
14 )
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
15 logger = logging.getLogger(__name__)
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
16
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
17 def discover_nfs_loadbalancer_ip():
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
18 """
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
19 Try to discover NFS LoadBalancer IP via Kubernetes API
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
20 Returns the external IP if found, None otherwise
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
21 """
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
22 try:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
23 import subprocess
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
24 logger.info("Attempting to discover NFS LoadBalancer IP via kubectl...")
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
25 result = subprocess.run(['kubectl', 'get', 'svc', '-n', 'nfs-provisioner', '-o', 'json'], capture_output=True, text=True)
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
26 if result.returncode == 0:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
27 services = json.loads(result.stdout)
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
28 for item in services.get('items', []):
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
29 name = item.get('metadata', {}).get('name', '')
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
30 # Look for NFS-related service names
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
31 if any(keyword in name.lower() for keyword in ['nfs-provisioner-nfs-server-provisioner']):
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
32 spec = item.get('spec', {})
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
33 if spec.get('type') == 'LoadBalancer':
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
34 ingress = item.get('status', {}).get('loadBalancer', {}).get('ingress', [])
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
35 if ingress:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
36 ip = ingress[0].get('ip')
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
37 if ip:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
38 logger.info(f"Found NFS LoadBalancer service '{name}' with external IP: {ip}")
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
39 return ip
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
40 logger.warning("No NFS LoadBalancer services found via kubectl")
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
41 else:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
42 logger.warning(f"kubectl command failed: {result.stderr}")
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
43 except Exception as e:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
44 logger.warning(f"Could not discover NFS LoadBalancer IP via kubectl: {e}")
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
45 return None
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
46
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
47 def determine_test_target(args):
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
48 """Determine the target host and port based on test type"""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
49
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
50 if args.test_type == 'nfs':
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
51 # Extract NFS server address if not provided
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
52 if args.nfs_address:
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
53 nfs_address = args.nfs_address
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
54 logger.info(f"Using provided NFS address: {nfs_address}")
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
55 else:
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
56 # Try to auto-discover NFS LoadBalancer IP via Kubernetes API
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
57 nfs_address = discover_nfs_loadbalancer_ip()
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
58 if not nfs_address:
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
59 raise ValueError("Could not auto-detect NFS LoadBalancer IP. Please provide --nfs_address parameter with the LoadBalancer external IP.")
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
60 return nfs_address, 2049
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
61
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
62 else:
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
63 raise ValueError(f"Unsupported test type: {args.test_type}")
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
64
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
65 def main():
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
66 parser = argparse.ArgumentParser()
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
67 parser.add_argument('--nfs_address', required=False, help='NFS server LoadBalancer IP address (if not provided, will be auto-detected via Kubernetes API)')
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
68 parser.add_argument('--output', required=True)
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
69 parser.add_argument('--project', required=False, help='GCP Project ID (if not provided, will be extracted from service account key)')
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
70 parser.add_argument('--region', required=True)
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
71 parser.add_argument('--network', default='default', help='GCP Network name')
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
72 parser.add_argument('--subnet', default='default', help='GCP Subnet name')
2
79160beab2a4 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 0
diff changeset
73 parser.add_argument('--service_account_key', required=True)
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
74 args = parser.parse_args()
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
75
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
76 # Default to NFS test type since that's what this tool is for
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
77 args.test_type = 'nfs'
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
78
2
79160beab2a4 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 0
diff changeset
79 # Set up authentication using the service account key
79160beab2a4 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 0
diff changeset
80 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = args.service_account_key
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
81 logger.info(f"Authentication configured with service account: {args.service_account_key}")
2
79160beab2a4 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 0
diff changeset
82
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
83 # Extract GCP project ID from service account key if not provided
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
84 if args.project:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
85 project_id = args.project
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
86 logger.info(f"Using provided project ID: {project_id}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
87 else:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
88 try:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
89 with open(args.service_account_key, 'r') as f:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
90 service_account_data = json.load(f)
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
91 project_id = service_account_data.get('project_id')
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
92 if not project_id:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
93 raise ValueError("project_id not found in service account key file")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
94 logger.info(f"Extracted project ID from service account key: {project_id}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
95 except Exception as e:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
96 logger.error(f"Failed to extract project ID from service account key: {e}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
97 raise
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
98
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
99 # Determine target host and port based on test type
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
100 try:
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
101 target_host, target_port = determine_test_target(args)
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
102 logger.info(f"Target determined: {target_host}:{target_port}")
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
103 except Exception as e:
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
104 logger.error(f"Failed to determine target: {e}")
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
105 raise
3
0ea626b10557 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 2
diff changeset
106
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
107 job_name = f'netcat-job-{uuid.uuid4()}'
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
108 logger.info(f"Generated job name: {job_name}")
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
109
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
110 # Create Batch client
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
111 logger.info("Creating Batch client...")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
112 client = batch_v1.BatchServiceClient()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
113 logger.info("Batch client created successfully")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
114
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
115 # Define the job using the Python client library objects
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
116 logger.info("Building job specification...")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
117 runnable = batch_v1.Runnable()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
118 runnable.container = batch_v1.Runnable.Container()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
119 runnable.container.image_uri = "afgane/gcp-batch-netcat:0.2.0"
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
120
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
121 # Create a comprehensive test script
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
122 test_script = f'''#!/bin/bash
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
123 set -e
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
124 echo "=== GCP Batch NFS Connectivity Test ==="
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
125 echo "Target: {target_host}:{target_port}"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
126 echo "Timestamp: $(date)"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
127 echo "Container hostname: $(hostname)"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
128 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
129
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
130 # Basic network info
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
131 echo "=== Network Information ==="
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
132 echo "Container IP addresses:"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
133 hostname -I
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
134 echo "Default route:"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
135 ip route | grep default || echo "No default route found"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
136 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
137
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
138 # DNS configuration
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
139 echo "=== DNS Configuration ==="
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
140 echo "DNS servers:"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
141 cat /etc/resolv.conf | grep nameserver || echo "No nameservers found"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
142 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
143
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
144 # Test DNS resolution of target
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
145 echo "=== DNS Resolution Test ==="
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
146 echo "Resolving {target_host}:"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
147 nslookup {target_host} || {{
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
148 echo "DNS resolution failed for {target_host}"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
149 echo "Trying with Google DNS (8.8.8.8):"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
150 nslookup {target_host} 8.8.8.8 || echo "DNS resolution failed even with Google DNS"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
151 }}
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
152 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
153
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
154 # Basic connectivity test
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
155 echo "=== Primary NFS Connectivity Test ==="
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
156 echo "Testing connection to NFS server {target_host}:{target_port}..."
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
157 timeout 30 nc -z -v -w 10 {target_host} {target_port}
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
158 nc_result=$?
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
159 echo "Netcat result: $nc_result"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
160 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
161
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
162 # Additional connectivity tests
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
163 echo "=== Additional Connectivity Tests ==="
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
164 echo "Testing external connectivity (Google DNS 8.8.8.8:53):"
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
165 timeout 10 nc -z -v -w 5 8.8.8.8 53 && echo "✓ External DNS reachable" || echo "✗ External DNS unreachable"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
166
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
167 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
168 echo "=== Network Troubleshooting ==="
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
169 echo "Route table:"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
170 ip route
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
171 echo ""
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
172
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
173 echo "=== Final Result ==="
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
174 if [ $nc_result -eq 0 ]; then
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
175 echo "✓ SUCCESS: Connection to NFS server {target_host}:{target_port} successful"
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
176 exit 0
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
177 else
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
178 echo "✗ FAILED: Connection to NFS server {target_host}:{target_port} failed"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
179 echo "This suggests a network connectivity issue between GCP Batch and the NFS server."
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
180 echo "Common causes:"
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
181 echo "- Firewall rules blocking NFS traffic (port 2049)"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
182 echo "- NFS service not accessible from external networks (only ClusterIP)"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
183 echo "- NFS server not properly exposed via LoadBalancer"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
184 echo ""
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
185 echo "Solutions:"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
186 echo "- Ensure NFS service has type LoadBalancer with external IP"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
187 echo "- Check GCP firewall rules allow traffic from Batch subnet to NFS"
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
188 echo "- Verify the IP address is the LoadBalancer external IP, not ClusterIP"
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
189 exit 1
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
190 fi
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
191 '''
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
192
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
193 runnable.container.entrypoint = "/bin/bash"
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
194 runnable.container.commands = ["-c", test_script]
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
195 logger.debug(f"Container config: image={runnable.container.image_uri}, entrypoint={runnable.container.entrypoint}")
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
196
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
197 task = batch_v1.TaskSpec()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
198 task.runnables = [runnable]
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
199 task.compute_resource = batch_v1.ComputeResource()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
200 task.compute_resource.cpu_milli = 1000
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
201 task.compute_resource.memory_mib = 1024
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
202 logger.debug(f"Compute resources: CPU={task.compute_resource.cpu_milli}m, Memory={task.compute_resource.memory_mib}MiB")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
203
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
204 task_group = batch_v1.TaskGroup()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
205 task_group.task_count = 1
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
206 task_group.parallelism = 1
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
207 task_group.task_spec = task
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
208 logger.debug(f"Task group: count={task_group.task_count}, parallelism={task_group.parallelism}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
209
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
210 # Network configuration: Batch job should run in the same network as the NFS server
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
211 network_interface = batch_v1.AllocationPolicy.NetworkInterface()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
212 network_interface.network = f"global/networks/{args.network}"
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
213 network_interface.subnetwork = f"regions/{args.region}/subnetworks/{args.subnet}"
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
214 logger.debug(f"Network: {network_interface.network}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
215 logger.debug(f"Subnet: {network_interface.subnetwork}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
216
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
217 network_policy = batch_v1.AllocationPolicy.NetworkPolicy()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
218 network_policy.network_interfaces = [network_interface]
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
219
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
220 allocation_policy = batch_v1.AllocationPolicy()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
221 allocation_policy.network = network_policy
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
222
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
223 job = batch_v1.Job()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
224 job.task_groups = [task_group]
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
225 job.allocation_policy = allocation_policy
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
226 job.logs_policy = batch_v1.LogsPolicy()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
227 job.logs_policy.destination = batch_v1.LogsPolicy.Destination.CLOUD_LOGGING
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
228 logger.info("Job specification built successfully")
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
229
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
230 create_request = batch_v1.CreateJobRequest()
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
231 create_request.parent = f"projects/{project_id}/locations/{args.region}"
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
232 create_request.job_id = job_name
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
233 create_request.job = job
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
234 logger.debug(f"Create request parent: {create_request.parent}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
235 logger.debug(f"Create request job_id: {create_request.job_id}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
236
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
237 logger.info(f"Submitting job with name: {job_name}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
238 logger.info(f"Target project: {project_id}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
239 logger.info(f"Target Batch region: {args.region}")
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
240 logger.info(f"Test target: {target_host}:{target_port}")
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
241
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
242 # Proceed with job submission
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
243 try:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
244 logger.info("Calling client.create_job()...")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
245 job_response = client.create_job(request=create_request)
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
246 logger.info("Job submitted successfully!")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
247 logger.info(f"Job name: {job_response.name}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
248 logger.info(f"Job UID: {job_response.uid}")
2
79160beab2a4 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents: 0
diff changeset
249
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
250 with open(args.output, 'w') as f:
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
251 f.write("Job submitted successfully using Python client.\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
252 f.write(f"Job name: {job_name}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
253 f.write(f"Job response name: {job_response.name}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
254 f.write(f"Job UID: {job_response.uid}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
255 f.write(f"Project: {project_id}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
256 f.write(f"Region: {args.region}\n")
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
257 f.write(f"NFS Target: {target_host}:{target_port}\n")
5
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
258 f.write(f"\nTo view job logs, run:\n")
b2ce158b4f22 planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents: 4
diff changeset
259 f.write(f"gcloud logging read 'resource.type=gce_instance AND resource.labels.instance_id={job_name}' --project={project_id}\n")
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
260
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
261 except Exception as e:
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
262 logger.error(f"Error submitting job: {type(e).__name__}: {e}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
263 logger.error(f"Error details: {str(e)}")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
264 import traceback
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
265 logger.error("Traceback:", exc_info=True)
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
266
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
267 with open(args.output, 'w') as f:
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
268 f.write(f"Error submitting job: {type(e).__name__}: {e}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
269 f.write(f"Error details: {str(e)}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
270 f.write(f"Job name: {job_name}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
271 f.write(f"Project: {project_id}\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
272 f.write(f"Region: {args.region}\n")
6
d25792770df8 planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents: 5
diff changeset
273 f.write(f"NFS Target: {target_host}:{target_port}\n")
4
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
274 f.write(f"Traceback:\n")
2ff4a39ea41b planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents: 3
diff changeset
275 f.write(traceback.format_exc())
0
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
276
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
277 if __name__ == '__main__':
7852c0efafd7 planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff changeset
278 main()