@shared_task(name='nodeconductor.structure.push_ssh_public_key', max_retries=120, default_retry_delay=30)
@retry_if_false
def push_ssh_public_key(ssh_public_key_uuid, service_project_link_str):
    try:
        public_key = SshPublicKey.objects.get(uuid=ssh_public_key_uuid)
    except SshPublicKey.DoesNotExist:
        logger.warning('Missing public key %s.', ssh_public_key_uuid)
        return True
    try:
        service_project_link = next(models.ServiceProjectLink.from_string(service_project_link_str))
    except __HOLE__:
        logger.warning('Missing service project link %s.', service_project_link_str)
        return True

    backend = service_project_link.get_backend()
    try:
        backend.add_ssh_key(public_key, service_project_link)
        logger.info(
            'SSH key %s has been pushed to service project link %s.',
            public_key.uuid, service_project_link_str)
    except ServiceBackendNotImplemented:
        pass
    except (ServiceBackendError, CloudBackendError):
        logger.warning(
            'Failed to push SSH key %s to service project link %s.',
            public_key.uuid, service_project_link_str,
            exc_info=1)

    return True
dataset/ETHPy150Open opennode/nodeconductor/nodeconductor/structure/tasks.py/push_ssh_public_key