Mercurial > repos > enis > gcp_batch_netcat
annotate gcp_batch_netcat.py @ 8:7c660a6be068 draft
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
author | enis |
---|---|
date | Thu, 24 Jul 2025 23:01:40 +0000 |
parents | fcfb703748b1 |
children | 3fd12035e6c9 |
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 |
7
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
17 |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
18 |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
19 def determine_test_target(args): |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
20 """Determine the target host and port based on test type""" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
21 |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
22 if args.test_type == 'nfs': |
7
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
23 # NFS server address is required |
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
24 if not args.nfs_address: |
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
25 raise ValueError("NFS server address is required. Please provide --nfs_address parameter with the LoadBalancer external IP.") |
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
26 |
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
27 nfs_address = args.nfs_address |
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
28 logger.info(f"Using provided NFS address: {nfs_address}") |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
29 return nfs_address, 2049 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
30 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
31 else: |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
32 raise ValueError(f"Unsupported test type: {args.test_type}") |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
33 |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
34 def main(): |
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
35 parser = argparse.ArgumentParser() |
7
fcfb703748b1
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
6
diff
changeset
|
36 parser.add_argument('--nfs_address', required=True, help='NFS server LoadBalancer external IP address (required)') |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
37 parser.add_argument('--output', required=True) |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
38 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
|
39 parser.add_argument('--region', required=True) |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
40 parser.add_argument('--network', default='default', help='GCP Network name') |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
41 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
|
42 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
|
43 args = parser.parse_args() |
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
44 |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
45 # 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
|
46 args.test_type = 'nfs' |
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
47 |
2
79160beab2a4
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
0
diff
changeset
|
48 # 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
|
49 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = args.service_account_key |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
50 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
|
51 |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
52 # Extract GCP project ID from service account key if not provided |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
53 if args.project: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
54 project_id = args.project |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
55 logger.info(f"Using provided project ID: {project_id}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
56 else: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
57 try: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
58 with open(args.service_account_key, 'r') as f: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
59 service_account_data = json.load(f) |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
60 project_id = service_account_data.get('project_id') |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
61 if not project_id: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
62 raise ValueError("project_id not found in service account key file") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
63 logger.info(f"Extracted project ID from service account key: {project_id}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
64 except Exception as e: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
65 logger.error(f"Failed to extract project ID from service account key: {e}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
66 raise |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
67 |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
68 # Determine target host and port based on test type |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
69 try: |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
70 target_host, target_port = determine_test_target(args) |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
71 logger.info(f"Target determined: {target_host}:{target_port}") |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
72 except Exception as e: |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
73 logger.error(f"Failed to determine target: {e}") |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
74 raise |
3
0ea626b10557
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
2
diff
changeset
|
75 |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
76 job_name = f'netcat-job-{uuid.uuid4()}' |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
77 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
|
78 |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
79 # Create Batch client |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
80 logger.info("Creating Batch client...") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
81 client = batch_v1.BatchServiceClient() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
82 logger.info("Batch client created successfully") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
83 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
84 # Define the job using the Python client library objects |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
85 logger.info("Building job specification...") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
86 runnable = batch_v1.Runnable() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
87 runnable.container = batch_v1.Runnable.Container() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
88 runnable.container.image_uri = "afgane/gcp-batch-netcat:0.2.0" |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
89 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
90 # Create a comprehensive test script |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
91 test_script = f'''#!/bin/bash |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
92 set -e |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
93 echo "=== GCP Batch NFS Connectivity Test ===" |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
94 echo "Target: {target_host}:{target_port}" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
95 echo "Timestamp: $(date)" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
96 echo "Container hostname: $(hostname)" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
97 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
98 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
99 # Basic network info |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
100 echo "=== Network Information ===" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
101 echo "Container IP addresses:" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
102 hostname -I |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
103 echo "Default route:" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
104 ip route | grep default || echo "No default route found" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
105 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
106 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
107 # DNS configuration |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
108 echo "=== DNS Configuration ===" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
109 echo "DNS servers:" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
110 cat /etc/resolv.conf | grep nameserver || echo "No nameservers found" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
111 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
112 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
113 # Test DNS resolution of target |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
114 echo "=== DNS Resolution Test ===" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
115 echo "Resolving {target_host}:" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
116 nslookup {target_host} || {{ |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
117 echo "DNS resolution failed for {target_host}" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
118 echo "Trying with Google DNS (8.8.8.8):" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
119 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
|
120 }} |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
121 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
122 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
123 # Basic connectivity test |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
124 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
|
125 echo "Testing connection to NFS server {target_host}:{target_port}..." |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
126 timeout 30 nc -z -v -w 10 {target_host} {target_port} |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
127 nc_result=$? |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
128 echo "Netcat result: $nc_result" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
129 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
130 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
131 # Additional connectivity tests |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
132 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
|
133 echo "Testing external connectivity (Google DNS 8.8.8.8:53):" |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
134 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
|
135 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
136 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
137 echo "=== Network Troubleshooting ===" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
138 echo "Route table:" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
139 ip route |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
140 echo "" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
141 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
142 echo "=== Final Result ===" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
143 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
|
144 echo "✓ SUCCESS: Connection to NFS server {target_host}:{target_port} successful" |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
145 exit 0 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
146 else |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
147 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
|
148 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
|
149 echo "Common causes:" |
6
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
150 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
|
151 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
|
152 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
|
153 echo "" |
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
154 echo "Solutions:" |
d25792770df8
planemo upload for repository https://github.com/afgane/gcp_batch_netcat commit ece227052d14d755b0d0b07a827152b2e98fb94b-dirty
enis
parents:
5
diff
changeset
|
155 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
|
156 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
|
157 echo "- Verify the IP address is the LoadBalancer external IP, not ClusterIP" |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
158 exit 1 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
159 fi |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
160 ''' |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
161 |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
162 runnable.container.entrypoint = "/bin/bash" |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
163 runnable.container.commands = ["-c", test_script] |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
164 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
|
165 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
166 task = batch_v1.TaskSpec() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
167 task.runnables = [runnable] |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
168 task.compute_resource = batch_v1.ComputeResource() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
169 task.compute_resource.cpu_milli = 1000 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
170 task.compute_resource.memory_mib = 1024 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
171 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
|
172 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
173 task_group = batch_v1.TaskGroup() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
174 task_group.task_count = 1 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
175 task_group.parallelism = 1 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
176 task_group.task_spec = task |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
177 logger.debug(f"Task group: count={task_group.task_count}, parallelism={task_group.parallelism}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
178 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
179 # Network configuration: Batch job should run in the same network as the NFS server |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
180 network_interface = batch_v1.AllocationPolicy.NetworkInterface() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
181 network_interface.network = f"global/networks/{args.network}" |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
182 network_interface.subnetwork = f"regions/{args.region}/subnetworks/{args.subnet}" |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
183 logger.debug(f"Network: {network_interface.network}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
184 logger.debug(f"Subnet: {network_interface.subnetwork}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
185 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
186 network_policy = batch_v1.AllocationPolicy.NetworkPolicy() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
187 network_policy.network_interfaces = [network_interface] |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
188 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
189 allocation_policy = batch_v1.AllocationPolicy() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
190 allocation_policy.network = network_policy |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
191 |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
192 job = batch_v1.Job() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
193 job.task_groups = [task_group] |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
194 job.allocation_policy = allocation_policy |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
195 job.logs_policy = batch_v1.LogsPolicy() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
196 job.logs_policy.destination = batch_v1.LogsPolicy.Destination.CLOUD_LOGGING |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
197 logger.info("Job specification built successfully") |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
198 |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
199 create_request = batch_v1.CreateJobRequest() |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
200 create_request.parent = f"projects/{project_id}/locations/{args.region}" |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
201 create_request.job_id = job_name |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
202 create_request.job = job |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
203 logger.debug(f"Create request parent: {create_request.parent}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
204 logger.debug(f"Create request job_id: {create_request.job_id}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
205 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
206 logger.info(f"Submitting job with name: {job_name}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
207 logger.info(f"Target project: {project_id}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
208 logger.info(f"Target Batch region: {args.region}") |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
209 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
|
210 |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
211 # Proceed with job submission |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
212 try: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
213 logger.info("Calling client.create_job()...") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
214 job_response = client.create_job(request=create_request) |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
215 logger.info("Job submitted successfully!") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
216 logger.info(f"Job name: {job_response.name}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
217 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
|
218 |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
219 with open(args.output, 'w') as f: |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
220 f.write("Job submitted successfully using Python client.\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
221 f.write(f"Job name: {job_name}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
222 f.write(f"Job response name: {job_response.name}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
223 f.write(f"Job UID: {job_response.uid}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
224 f.write(f"Project: {project_id}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
225 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
|
226 f.write(f"NFS Target: {target_host}:{target_port}\n") |
5
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
227 f.write(f"\nTo view job logs, run:\n") |
b2ce158b4f22
planemo upload commit ece227052d14d755b0d0b07a827152b2e98fb94b
enis
parents:
4
diff
changeset
|
228 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
|
229 |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
230 except Exception as e: |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
231 logger.error(f"Error submitting job: {type(e).__name__}: {e}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
232 logger.error(f"Error details: {str(e)}") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
233 import traceback |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
234 logger.error("Traceback:", exc_info=True) |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
235 |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
236 with open(args.output, 'w') as f: |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
237 f.write(f"Error submitting job: {type(e).__name__}: {e}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
238 f.write(f"Error details: {str(e)}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
239 f.write(f"Job name: {job_name}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
240 f.write(f"Project: {project_id}\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
241 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
|
242 f.write(f"NFS Target: {target_host}:{target_port}\n") |
4
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
243 f.write(f"Traceback:\n") |
2ff4a39ea41b
planemo upload commit 1bf6938d35be8e67e317f504f43f281ce7dc06e6
enis
parents:
3
diff
changeset
|
244 f.write(traceback.format_exc()) |
0
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
245 |
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
246 if __name__ == '__main__': |
7852c0efafd7
planemo upload for repository https://github.com/afgane/gcp_batch_netcat
enis
parents:
diff
changeset
|
247 main() |