# Copyright (C) 2015 Kristoffer Gronlund
#
# License: GNU General Public License (GPL)
version: 2.2
category: NFS
shortdesc: NFS Server
longdesc: |
  Configure an NFS server. Requires an existing file system resource,
  for example a file system running on LVM on DRBD.

parameters:
  - name: base-id
    required: true
    shortdesc: Base File System Resource ID
    longdesc: The ID of an existing file system resource.
    type: resource
    value: base-fs

include:
  - name: rootfs
    script: exportfs
    required: false
    shortdesc: NFSv4 Virtual File System Root
    parameters:
      - name: id
        value: exportfs-root
      - name: fsid
        value: 0
      - name: directory
        value: /srv/nfs
      - name: options
        value: "rw,crossmnt"

  - script: exportfs
    required: true
    shortdesc: Exported NFS Mount Point
    parameters:
      - name: id
        value: exportfs
      - name: directory
        value: /srv/nfs/example
      - name: options
        value: "rw,mountpoint"
      - name: wait_for_leasetime_on_stop
        value: true

  - script: virtual-ip
    required: false
    shortdesc: Virtual IP Address Used to Access the NFS Mounts

actions:
  - crm: "configure show {{base-id}}"
    shortdesc: Ensure That the File System Resource Exists
  - install: nfs-client nfs-kernel-server nfs-utils
    shortdesc: Install NFS Packages
  - service:
      - nfsserver: enable
      - nfsserver: start
  - include: rootfs
  - include: exportfs
  - include: virtual-ip
  - cib: |
      group g-nfs {{exportfs:id}} {{virtual-ip:id}}
      order base-then-nfs Mandatory: {{base-id}} g-nfs
      colocation nfs-with-base inf: g-nfs {{base-id}}
      {{#rootfs}}
      clone c-{{rootfs:id}} {{rootfs:id}}
      order rootfs-before-nfs Mandatory: c-{{rootfs:id}} g-nfs:start
      colocation nfs-with-rootfs inf: g-nfs c-{{rootfs:id}}
      {{/rootfs}}
  - call: /usr/sbin/exportfs -v
    error: Failed to configure NFS exportfs
    shortdesc: Check Result of exportfs -v
    sudo: true
