|
1 | 1 | import re
|
2 | 2 | import copy
|
3 | 3 | from typing import Any, Dict
|
4 |
| - |
| 4 | +from uuid import uuid4 |
5 | 5 | import inquirer
|
6 | 6 | from ibm_ray_config.modules.config_builder import ConfigBuilder
|
7 |
| -from ibm_ray_config.modules.utils import validate_cluster_name, get_profile_resources |
| 7 | +from ibm_ray_config.modules.utils import CACHE, free_dialog, validate_name, get_profile_resources |
8 | 8 |
|
9 | 9 | class WorkersConfig(ConfigBuilder):
|
| 10 | + def __init__(self, base_config: Dict[str, Any]) -> None: |
| 11 | + super().__init__(base_config) |
| 12 | + self.cluster_name_scheme = f'cluster-at-{CACHE["vpc_name"]}-{str(uuid4())[:5]}' |
| 13 | + |
10 | 14 |
|
11 | 15 | def run(self) -> Dict[str, Any]:
|
12 |
| - default_cluster_name = self.base_config.get('cluster_name', 'default') |
| 16 | + default_cluster_prefix = self.base_config.get('cluster_name') |
| 17 | + if not default_cluster_prefix: |
| 18 | + default_cluster_prefix = self.cluster_name_scheme.split('-at',1)[0] |
13 | 19 | default_min_workers = self.base_config.get('min_workers', '0')
|
14 | 20 | default_max_workers = default_min_workers
|
15 | 21 |
|
16 | 22 | question = [
|
17 |
| - inquirer.Text( |
18 |
| - 'name', message="Enter cluster name following the pattern `[a-z]|[a-z][-a-z0-9]*[a-z0-9]`", validate = validate_cluster_name, default=default_cluster_name), |
19 | 23 | inquirer.Text('min_workers', message="Minimum number of worker nodes",
|
20 | 24 | default=default_min_workers, validate=lambda _, x: re.match('^[+]?[0-9]+$', x)),
|
21 | 25 | inquirer.Text('max_workers', message="Maximum number of worker nodes", default=default_max_workers,
|
22 | 26 | validate=lambda answers, x: re.match('^[+]?[0-9]+$', x) and int(x) >= int(answers['min_workers']))
|
23 | 27 | ]
|
| 28 | + |
| 29 | + print(f"\ncluster name is {self.cluster_name_scheme}") |
| 30 | + cluster_prefix = free_dialog(msg= f"Pick a custom name to replace: '{default_cluster_prefix}'(or Enter for default)", |
| 31 | + default=default_cluster_prefix, |
| 32 | + validate=validate_name)['answer'] |
24 | 33 | answers = inquirer.prompt(question, raise_keyboard_interrupt=True)
|
25 |
| - self.base_config['cluster_name'] = answers['name'] |
| 34 | + # replaces first word of self.cluster_name_scheme with user input. |
| 35 | + cluster_name = self.cluster_name_scheme.replace(default_cluster_prefix, cluster_prefix) |
| 36 | + self.base_config['cluster_name'] = cluster_name |
26 | 37 | self.base_config['max_workers'] = int(answers['max_workers'])
|
27 | 38 |
|
28 | 39 | if self.base_config.get('worker_instance_profile', None):
|
|
0 commit comments