# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
---
# This playbook recreates all design documents in the whisks and the activations DB.

- hosts: ansible
  tasks:
    - import_tasks: tasks/recreateViews.yml
      when: mode == "deploy"
