Skip to content

Commit d21a6cd

Browse files
committed
Merge pull request softlayer#384 from wnagele/master
Fix for issue softlayer#383 & Support for immediate cancellation of servers
2 parents ae8cb0a + 8132352 commit d21a6cd

4 files changed

Lines changed: 11 additions & 7 deletions

File tree

SoftLayer/CLI/modules/server.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ class CancelServer(environment.CLIRunnable):
252252
Cancel a dedicated server
253253
254254
Options:
255+
--immediate Cancels the server immediately (instead of on the billing
256+
anniversary)
255257
--comment=COMMENT An optional comment to add to the cancellation ticket
256258
--reason=REASON An optional cancellation reason. See cancel-reasons for a
257259
list of available options
@@ -271,9 +273,10 @@ def execute(self, args):
271273
comment = self.env.input("(Optional) Add a cancellation comment:")
272274

273275
reason = args.get('--reason')
276+
immediate = args.get('--immediate')
274277

275278
if args['--really'] or formatting.no_going_back(hw_id):
276-
mgr.cancel_hardware(hw_id, reason, comment)
279+
mgr.cancel_hardware(hw_id, reason, comment, immediate)
277280
else:
278281
raise exceptions.CLIAbort('Aborted')
279282

SoftLayer/managers/hardware.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ def __init__(self, client, ordering_manager=None):
3333
else:
3434
self.ordering_manager = ordering_manager
3535

36-
def cancel_hardware(self, hardware_id, reason='unneeded', comment=''):
36+
def cancel_hardware(self, hardware_id, reason='unneeded', comment='',
37+
immediate=False):
3738
""" Cancels the specified dedicated server.
3839
3940
:param int hardware_id: The ID of the hardware to be cancelled.
@@ -48,7 +49,7 @@ def cancel_hardware(self, hardware_id, reason='unneeded', comment=''):
4849
mask='id,bareMetalInstanceFlag')
4950

5051
if server.get('bareMetalInstanceFlag'):
51-
return self.cancel_metal(hardware_id)
52+
return self.cancel_metal(hardware_id, immediate)
5253

5354
reasons = self.get_cancellation_reasons()
5455
cancel_reason = reasons['unneeded']
@@ -224,7 +225,7 @@ def get_available_dedicated_server_packages(self):
224225

225226
for package in packages:
226227
available_packages.append((package['id'], package['name'],
227-
package['description']))
228+
package.get('description', None)))
228229

229230
return available_packages
230231

SoftLayer/managers/ordering.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ def filter_outlet_packages(packages):
6363
non_outlet_packages = []
6464

6565
for package in packages:
66-
if all(['OUTLET' not in package['description'].upper(),
67-
'OUTLET' not in package['name'].upper()]):
66+
if all(['OUTLET' not in package.get('description', '').upper(),
67+
'OUTLET' not in package.get('name', '').upper()]):
6868
non_outlet_packages.append(package)
6969

7070
return non_outlet_packages

SoftLayer/tests/CLI/modules/server_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ def test_cancel_server(self, resolve_mock, cancel_mock, ngb_mock):
329329
args = {'--really': True, '--reason': 'Test'}
330330
runnable.execute(args)
331331

332-
cancel_mock.assert_called_with(hw_id, args['--reason'], None)
332+
cancel_mock.assert_called_with(hw_id, args['--reason'], None, None)
333333

334334
# Now check to make sure we properly call CLIAbort in the negative case
335335
env_mock = mock.Mock()

0 commit comments

Comments
 (0)