def cancel!(reason = :unneeded, comment = '')
      if !bare_metal_instance? then
        cancellation_reasons = self.class.cancellation_reasons()
        cancel_reason = cancellation_reasons[reason] || cancellation_reasons[:unneeded]
        softlayer_client[:Ticket].createCancelServerTicket(self.id, cancel_reason, comment, true, 'HARDWARE')
      else
        # Note that reason and comment are ignored in this case, unfortunately
        softlayer_client[:Billing_Item].object_with_id(self.service.object_mask("mask[id]").getBillingItem['id'].to_i).cancelService()
      end
    end
def cancel!(reason = :unneeded, comment = '')
      if !bare_metal_instance? then
        cancellation_reasons = self.class.cancellation_reasons()
        cancel_reason = cancellation_reasons[reason] || cancellation_reasons[:unneeded]
        softlayer_client[:Ticket].createCancelServerTicket(self.id, cancel_reason, comment, true, 'HARDWARE')
      else
        # Note that reason and comment are ignored in this case, unfortunately
        softlayer_client[:Billing_Item].object_with_id(self.service.object_mask("mask[id]").getBillingItem['id'].to_i).cancelService()
      end
    end
Sends a ticket asking that a server be cancelled (i.e. shutdown and
 removed from the account).

 The +cancellation_reason+ parameter should be a key from the hash returned
 by BareMetalServer::cancellation_reasons.

 You may add your own, more specific reasons for cancelling a server in the
 +comments+ parameter.