|
9 | 9 | from SoftLayer.CLI import formatting |
10 | 10 | from SoftLayer.CLI import helpers |
11 | 11 |
|
12 | | - |
13 | 12 | # pylint: disable=unnecessary-lambda |
14 | 13 |
|
15 | 14 | COLUMNS = [ |
|
47 | 46 | @click.option('--hostname', '-H', help='Filter by hostname') |
48 | 47 | @click.option('--memory', '-m', help='Filter by memory in gigabytes') |
49 | 48 | @click.option('--network', '-n', help='Filter by network port speed in Mbps') |
| 49 | +@click.option('--search', is_flag=False, flag_value="", default=None, |
| 50 | + help="Use the more flexible Search API to list instances. See `slcli search --types` for list " + |
| 51 | + "of searchable fields.") |
50 | 52 | @helpers.multi_option('--tag', help='Filter by tags') |
51 | 53 | @click.option('--sortby', help='Column to sort by', default='hostname', show_default=True) |
52 | 54 | @click.option('--columns', |
|
59 | 61 | default=100, |
60 | 62 | show_default=True) |
61 | 63 | @environment.pass_env |
62 | | -def cli(env, sortby, cpu, domain, datacenter, hostname, memory, network, tag, columns, limit): |
| 64 | +def cli(env, sortby, cpu, domain, datacenter, hostname, memory, network, search, tag, columns, limit): |
63 | 65 | """List hardware servers.""" |
64 | 66 |
|
65 | | - manager = SoftLayer.HardwareManager(env.client) |
66 | | - servers = manager.list_hardware(hostname=hostname, |
67 | | - domain=domain, |
68 | | - cpus=cpu, |
69 | | - memory=memory, |
70 | | - datacenter=datacenter, |
71 | | - nic_speed=network, |
72 | | - tags=tag, |
73 | | - mask="mask(SoftLayer_Hardware_Server)[%s]" % columns.mask(), |
74 | | - limit=limit) |
| 67 | + if search is not None: |
| 68 | + object_mask = f"mask[resource(SoftLayer_Hardware)]" |
| 69 | + search_manager = SoftLayer.SearchManager(env.client) |
| 70 | + servers = search_manager.search_hadrware_instances(hostname=hostname, domain=domain, datacenter=datacenter, |
| 71 | + tags=tag, search_string=search, mask=object_mask) |
| 72 | + |
| 73 | + else: |
| 74 | + manager = SoftLayer.HardwareManager(env.client) |
| 75 | + servers = manager.list_hardware(hostname=hostname, |
| 76 | + domain=domain, |
| 77 | + cpus=cpu, |
| 78 | + memory=memory, |
| 79 | + datacenter=datacenter, |
| 80 | + nic_speed=network, |
| 81 | + tags=tag, |
| 82 | + mask="mask(SoftLayer_Hardware_Server)[%s]" % columns.mask(), |
| 83 | + limit=limit) |
75 | 84 |
|
76 | 85 | table = formatting.Table(columns.columns) |
77 | 86 | table.sortby = sortby |
|
0 commit comments