'Updates a snapshot
:param  snapshot: The snapshot you\'re restoring to the volume.
:type   snapshot: :class:`VolumeSnapshot`
:param  name: The snapshot name
:type   name: `str`
:param  description: The snapshot description
:type   description: `str`
:param  cpu_hot_plug: Snapshot CPU is hot pluggalbe
:type   cpu_hot_plug: `str`
:param  cpu_hot_unplug: Snapshot CPU is hot unpluggalbe
:type   cpu_hot_unplug: `str`
:param  ram_hot_plug: Snapshot RAM is hot pluggalbe
:type   ram_hot_plug: `str`
:param  ram_hot_unplug: Snapshot RAM is hot unpluggalbe
:type   ram_hot_unplug: `str`
:param  nic_hot_plug: Snapshot Network Interface is hot pluggalbe
:type   nic_hot_plug: `str`
:param  nic_hot_unplug: Snapshot Network Interface is hot unpluggalbe
:type   nic_hot_unplug: `str`
:param  disc_virtio_hot_plug: Snapshot VIRTIO disk is hot pluggalbe
:type   disc_virtio_hot_plug: `str`
:param  disc_virtio_hot_unplug: Snapshot VIRTIO disk is hot unpluggalbe
:type   disc_virtio_hot_unplug: `str`
:param  disc_scsi_hot_plug: Snapshot SCSI disk is hot pluggalbe
:type   disc_scsi_hot_plug: `str`
:param  disc_scsi_hot_unplug: Snapshot SCSI disk is hot unpluggalbe
:type   disc_scsi_hot_unplug: `str`
:param  licence_type: The snapshot licence_type
:type   licence_type: `str`
:return:    Instance of class ``VolumeSnapshot``
:rtype:     :class:`VolumeSnapshot`'

def ex_update_snapshot(self, snapshot, name=None, description=None, cpu_hot_plug=None, cpu_hot_unplug=None, ram_hot_plug=None, ram_hot_unplug=None, nic_hot_plug=None, nic_hot_unplug=None, disc_virtio_hot_plug=None, disc_virtio_hot_unplug=None, disc_scsi_hot_plug=None, disc_scsi_hot_unplug=None, licence_type=None):

    action = snapshot.extra['href']
    body = {}
    if (name is not None):
        body['name'] = name
    if (description is not None):
        body['description'] = description
    if (cpu_hot_plug is not None):
        body['cpuHotPlug'] = cpu_hot_plug
    if (cpu_hot_unplug is not None):
        body['cpuHotUnplug'] = cpu_hot_unplug
    if (ram_hot_plug is not None):
        body['ramHotPlug'] = ram_hot_plug
    if (ram_hot_unplug is not None):
        body['ramHotUnplug'] = ram_hot_unplug
    if (nic_hot_plug is not None):
        body['nicHotPlug'] = nic_hot_plug
    if (nic_hot_unplug is not None):
        body['nicHotUnplug'] = nic_hot_unplug
    if (disc_virtio_hot_plug is not None):
        body['discVirtioHotPlug'] = disc_virtio_hot_plug
    if (disc_virtio_hot_unplug is not None):
        body['discVirtioHotUnplug'] = disc_virtio_hot_unplug
    if (disc_scsi_hot_plug is not None):
        body['discScsiHotPlug'] = disc_scsi_hot_plug
    if (disc_scsi_hot_unplug is not None):
        body['discScsiHotUnplug'] = disc_scsi_hot_unplug
    if (licence_type is not None):
        body['licenceType'] = licence_type
    response = self.connection.request(action=action, params={'Content-Type': 'application/json'}, data=body, method='PATCH', with_full_url=True)
    return self._to_snapshot(response.object, response.headers)
