Mercurial > repos > enis > gcp_batch_netcat
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 |
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() |