Merge "CORD-3105 Add SimpleExampleService documentation to guide"
diff --git a/SUMMARY.md b/SUMMARY.md
index 600411d..1cf75e1 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -40,6 +40,7 @@
     * [Configuring Services](operating_cord/services.md)
         * [Fabric](fabric/README.md)
         * [ONOS](onos-service/README.md)
+        * [RCORD](rcord/README.md)
         * [vOLT](olt-service/README.md)
         * [vRouter](vrouter/README.md)
 * [Modeling Guide](xos/README.md)
@@ -73,4 +74,3 @@
     * [Test Setup](cord-tester/qa_testsetup.md)
     * [Test Environment](cord-tester/qa_testenv.md)
     * [System Tests](cord-tester/validate_pods.md)
-
diff --git a/prereqs/k8s-multi-node.md b/prereqs/k8s-multi-node.md
index d606416..febe128 100644
--- a/prereqs/k8s-multi-node.md
+++ b/prereqs/k8s-multi-node.md
@@ -25,7 +25,7 @@
     * Run Ubuntu 16.04 server
     * Able to communicate together (ping one each other)
     * Have the same user *cord* configured, that you can use to remotely access them from the operator machine
-    * The user *cord* is sudoer on each machine, and it doesn't need a password to get sudoer privileges
+    * The user *cord* is sudoer on each machine, and it doesn't need a password to get sudoer privileges (see to authorize a password-less access from the development/management machine in the sections below)
 
 ## Download the Kubespray Installation Scripts
 
@@ -46,6 +46,13 @@
 * Export the k8s configuration file path as environment variable to
    let the user access a specific deployment
 
+## Prepare for the Kubespray installation
+
+Before starting the installation make sure that
+
+* The development/management machine has password-less access to the target machine(s), meaning the public key of the development/management machine has been copied in the authorization_keys files on the target machines. If you don't know how to do a script called *copy-ssh-keys.sh* is provided. To copy your public key to a target machine run *./copy-ssh-keys.sh TARGET_MACHINE_IP*. Repeat this procedure for each target machine.
+* All target machines don't mount any swap partition. It's easy as simply installing Ubuntu without a swap partition or -once the OS is already installed- commenting out the corresponding line in */etc/fstab* and reboot.
+
 ## Install Kubespray
 
 The following example assumes that
@@ -61,7 +68,6 @@
 
 * Cleans up any old Kubespray installation folder (may be there from previous installations)
 * Clones the official Kubespray installation repository
-* Copies the public key of the operator machine, over to each target machine
 * Installs required software and configures the target machines as prescribed in the Kubespray guide
 * Deploys Kubespray
 * Downloads and exports the access configuration outside the Kubespray folder, so it won’t be removed at the next execution of the script (for example while trying to re-deploy the POD, or while deploying a different POD)
@@ -71,8 +77,9 @@
 ./setup.sh -i onf 10.90.0.101 10.90.0.102 10.90.0.103
 ```
 
-At the beginning of the installation you will be asked to insert your
+> **NOTE:** at the beginning of the installation you will be asked to insert your
 password multiple times.
+> **NOTE:** the official Kubespray instalation procedure -run by the script- will automatically change the hostname of the target machine(s) with nodeX (where X is an incremental number starting from 1).
 
 At the end of the procedure, Kubespray should be installed and running
 on the remote machines.
diff --git a/prereqs/vtn-setup.md b/prereqs/vtn-setup.md
index d523c3b..e5ff99b 100644
--- a/prereqs/vtn-setup.md
+++ b/prereqs/vtn-setup.md
@@ -22,7 +22,7 @@
 cp ~/.ssh/id_rsa xos-profiles/base-openstack/files/node_key
 ```
 
-The VTN app requires a fabric interface on the compute nodes.  VTN will not successfully initialize if this interface is not present. By default the name of this interface is expected to be named `fabric`. If there is not an actual fabric interface on the compute node, create a dummy interface as follows:
+Second, the VTN app requires a fabric interface on the compute nodes.  VTN will not successfully initialize if this interface is not present. By default the name of this interface is expected to be named `fabric`. If there is not an actual fabric interface on the compute node, create a dummy interface as follows:
 
 ```shell
 sudo modprobe dummy
@@ -30,14 +30,22 @@
 sudo ifconfig fabric up
 ```
 
-Finally, on each compute node, Open vSwitch must be configured to listen for
-remote connections so that it can be controlled by VTN.  Example:
+Finally, in order to be added to the VTN configuration, each compute node must
+be resolvable in DNS.  If a server's hostname is not resolvable, it can be
+added to the local `kube-dns` server (substitute _HOSTNAME_ with the output of
+the `hostname` command, and _HOST-IP-ADDRESS_ with the node's primary IP
+address):
 
 ```shell
-PODS=$( kubectl get pod --namespace openstack|grep openvswitch-db|awk '{print $1}' )
-for POD in $PODS
-do
-  kubectl --namespace openstack exec "$POD" \
-      -- ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6641
-done
+cat <<EOF > /tmp/HOSTNAME-dns.yaml
+kind: Service
+apiVersion: v1
+metadata:
+  name: HOSTNAME
+  namespace: default
+spec:
+  type: ExternalName
+  externalName: HOST-IP-ADDRESS
+EOF
+kubectl create -f /tmp/HOSTNAME-dns.yaml
 ```
diff --git a/profiles/mcord/install.md b/profiles/mcord/install.md
index 89bbb76..3fda193 100644
--- a/profiles/mcord/install.md
+++ b/profiles/mcord/install.md
@@ -5,9 +5,8 @@
 A convenience script is provided that will install M-CORD on a single
 node, suitable for evaluation or testing.  Requirements:
 
-- An Ubuntu 16.04 node with at least 64GB of RAM and 32 virtual CPUs
+- An _Ubuntu 16.04.4 LTS_ server with at least 64GB of RAM and 32 virtual CPUs
 - User invoking the script has passwordless `sudo` capability
-- Hostname is resolvable in DNS, e.g., `dig +short $( hostname )` returns an IP address
 
 ```bash
 git clone https://gerrit.opencord.org/automation-tools