Skip to content

Commit fb097de

Browse files
Merge pull request #2191 from allmightyspiff/issues2123
Fixed invalid filter in `vs migrate` preventing guest list from being properly shown.
2 parents c168dff + b41158b commit fb097de

File tree

5 files changed

+29
-21
lines changed

5 files changed

+29
-21
lines changed

Diff for: .secrets.baseline

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"files": "^.secrets.baseline$",
44
"lines": null
55
},
6-
"generated_at": "2024-10-04T22:18:14Z",
6+
"generated_at": "2024-10-07T21:05:06Z",
77
"plugins_used": [
88
{
99
"name": "AWSKeyDetector"
@@ -112,15 +112,15 @@
112112
"hashed_secret": "6367c48dd193d56ea7b0baad25b19455e529f5ee",
113113
"is_secret": false,
114114
"is_verified": false,
115-
"line_number": 121,
115+
"line_number": 122,
116116
"type": "Secret Keyword",
117117
"verified_result": null
118118
},
119119
{
120120
"hashed_secret": "df51e37c269aa94d38f93e537bf6e2020b21406c",
121121
"is_secret": false,
122122
"is_verified": false,
123-
"line_number": 1035,
123+
"line_number": 1036,
124124
"type": "Secret Keyword",
125125
"verified_result": null
126126
}

Diff for: SoftLayer/CLI/virt/migrate.py

+21-15
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ def cli(env, guest, migrate_all, host):
1919
"""Manage VSIs that require migration. Can migrate Dedicated Host VSIs as well."""
2020

2121
vsi = SoftLayer.VSManager(env.client)
22-
pending_filter = {'virtualGuests': {'pendingMigrationFlag': {'operation': 1}}}
2322
dedicated_filter = {'virtualGuests': {'dedicatedHost': {'id': {'operation': 'not null'}}}}
2423
mask = """mask[
2524
id, hostname, domain, datacenter, pendingMigrationFlag, powerState,
@@ -28,21 +27,22 @@ def cli(env, guest, migrate_all, host):
2827

2928
# No options, just print out a list of guests that can be migrated
3029
if not (guest or migrate_all):
31-
require_migration = vsi.list_instances(filter=pending_filter, mask=mask)
30+
require_migration = vsi.list_instances(mask=mask)
3231
require_table = formatting.Table(['id', 'hostname', 'domain', 'datacenter'], title="Require Migration")
3332

3433
for vsi_object in require_migration:
35-
require_table.add_row([
36-
vsi_object.get('id'),
37-
vsi_object.get('hostname'),
38-
vsi_object.get('domain'),
39-
utils.lookup(vsi_object, 'datacenter', 'name')
40-
])
34+
if vsi_object.get('pendingMigrationFlag', False):
35+
require_table.add_row([
36+
vsi_object.get('id'),
37+
vsi_object.get('hostname'),
38+
vsi_object.get('domain'),
39+
utils.lookup(vsi_object, 'datacenter', 'name')
40+
])
4141

42-
if require_migration:
42+
if len(require_table.rows) > 0:
4343
env.fout(require_table)
4444
else:
45-
click.secho("No guests require migration at this time", fg='green')
45+
click.secho("No guests require migration at this time.", fg='green')
4646

4747
migrateable = vsi.list_instances(filter=dedicated_filter, mask=mask)
4848
migrateable_table = formatting.Table(['id', 'hostname', 'domain', 'datacenter', 'Host Name', 'Host Id'],
@@ -56,14 +56,20 @@ def cli(env, guest, migrate_all, host):
5656
utils.lookup(vsi_object, 'dedicatedHost', 'name'),
5757
utils.lookup(vsi_object, 'dedicatedHost', 'id')
5858
])
59-
env.fout(migrateable_table)
59+
if len(migrateable_table.rows) > 0:
60+
env.fout(migrateable_table)
61+
else:
62+
click.secho("No dedicated guests to migrate.", fg='green')
6063
# Migrate all guests with pendingMigrationFlag=True
6164
elif migrate_all:
62-
require_migration = vsi.list_instances(filter=pending_filter, mask="mask[id]")
63-
if not require_migration:
64-
click.secho("No guests require migration at this time", fg='green')
65+
require_migration = vsi.list_instances(mask="mask[id,pendingMigrationFlag]")
66+
migrated = 0
6567
for vsi_object in require_migration:
66-
migrate(vsi, vsi_object['id'])
68+
if vsi_object.get('pendingMigrationFlag', False):
69+
migrated = migrated + 1
70+
migrate(vsi, vsi_object['id'])
71+
if migrated == 0:
72+
click.secho("No guests require migration at this time", fg='green')
6773
# Just migrate based on the options
6874
else:
6975
migrate(vsi, guest, host)

Diff for: SoftLayer/fixtures/SoftLayer_Account.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
'globalIdentifier': '1a2b3c-1701',
3636
'primaryBackendIpAddress': '10.45.19.37',
3737
'hourlyBillingFlag': False,
38-
38+
'pendingMigrationFlag': True,
3939
'billingItem': {
4040
'id': 6327,
4141
'recurringFee': 1.54,
@@ -63,6 +63,7 @@
6363
'globalIdentifier': '05a8ac-6abf0',
6464
'primaryBackendIpAddress': '10.45.19.35',
6565
'hourlyBillingFlag': True,
66+
'pendingMigrationFlag': True,
6667
'billingItem': {
6768
'id': 6327,
6869
'recurringFee': 1.54,

Diff for: SoftLayer/managers/vs.py

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ def list_instances(self, hourly=True, monthly=True, tags=None, cpus=None,
131131
call = 'getMonthlyVirtualGuests'
132132

133133
_filter = utils.NestedDict(kwargs.get('filter') or {})
134+
_filter['virtualGuests']['id'] = utils.query_filter_orderby()
134135
if tags:
135136
_filter['virtualGuests']['tagReferences']['tag']['name'] = {
136137
'operation': 'in',

Diff for: tests/managers/vs/vs_tests.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def test_list_instances_with_filters(self):
6565

6666
_filter = {
6767
'virtualGuests': {
68+
'id': {'operation': 'orderBy', 'options': [{'name': 'sort', 'value': ['ASC']}]},
6869
'datacenter': {
6970
'name': {'operation': '_= dal05'}},
7071
'domain': {'operation': '_= example.com'},
@@ -83,8 +84,7 @@ def test_list_instances_with_filters(self):
8384
'transientGuestFlag': {'operation': False},
8485
}
8586
}
86-
self.assert_called_with('SoftLayer_Account', 'getVirtualGuests',
87-
filter=_filter)
87+
self.assert_called_with('SoftLayer_Account', 'getVirtualGuests', filter=_filter)
8888

8989
def test_resolve_ids_ip(self):
9090
_id = self.vs._get_ids_from_ip('172.16.240.2')

0 commit comments

Comments
 (0)