'Update the properties of a backup target, only changing the serviceplan
is supported.
:param target: Backup target to update
:type  target: Instance of :class:`BackupTarget` or ``str``
:param name: Name of the target
:type name: ``str``
:param address: Hostname, FQDN, IP, file path etc.
:type address: ``str``
:param extra: (optional) Extra attributes (driver specific).
:type extra: ``dict``
:rtype: Instance of :class:`BackupTarget`'

def update_target(self, target, name=None, address=None, extra=None):

    if (extra is not None):
        service_plan = extra.get('servicePlan', DEFAULT_BACKUP_PLAN)
    else:
        service_plan = DEFAULT_BACKUP_PLAN
    request = ET.Element('ModifyBackup', {'xmlns': BACKUP_NS})
    request.set('servicePlan', service_plan)
    server_id = self._target_to_target_address(target)
    self.connection.request_with_orgId_api_1(('server/%s/backup/modify' % server_id), method='POST', data=ET.tostring(request)).object
    if isinstance(target, BackupTarget):
        target.extra = extra
    else:
        target = self.ex_get_target_by_id(server_id)
    return target
