module custom-vm-pool {
    yang-version 1.1;
    namespace "http://metaswitch.com/yang/tas-vm-build/custom-vm-pool";
    prefix "custom-vm-pool";

    import vm-types {
        prefix "vmt";
        revision-date 2019-11-29;
    }
    import sas-configuration {
        prefix "sas";
        revision-date 2019-11-29;
    }

    import extensions {
        prefix "yangdoc";
        revision-date 2020-12-02;
    }

    organization
      "Metaswitch Networks";
    contact
      "rvt-schemas@metaswitch.com";
    description
      "Rhino Custom VM pool configuration schema.";

    revision 2019-11-29 {
        description
          "Initial revision";
        reference
          "Metaswitch Deployment Definition Guide";
    }

    grouping custom-virtual-machine-pool {

        leaf deployment-id {
            type vmt:deployment-id-type;
            mandatory true;
            description
              "The deployment identifier. Used to form a unique VM identifier within the
               VM host.";
        }

        leaf site-id {
            type vmt:site-id-type;
            mandatory true;
            description
              "Site identifier for the site that this VM pool is a part of.";
        }

        leaf image-name {
            type string;
            mandatory true;
            description
              "Name of the image name used for VMs in this VM pool.
               Should match the image name specified when building the VM image.";
        }

        leaf node-type-suffix {
            type vmt:node-type-suffix-type;
            default "";
            description
              "Suffix to add to the node type when deriving the group identifier. Should
               normally be left blank.";
        }

        list cassandra-contact-points {
            key "management.ipv4 signaling.ipv4";

            uses vmt:cassandra-contact-point-interfaces;
            description
              "A list of Cassandra contact points. Required only if the node is built
               with Rhino replication enabled.";
            yangdoc:change-impact "converges";
        }

        list additional-rhino-jvm-options {
            key "name";

            leaf "name" {
                type string;
                description
                  "Name of the JVM option. Do not include '-D'.";
            }

            leaf "value" {
                type string;
                mandatory true;
                description
                  "Value for the JVM option.";
            }

            description
              "Additional JVM options to use when running Rhino.
               Should normally be left blank.";
        }

        list rhino-auth {
            key "username";
            min-elements 1;

            uses vmt:rhino-auth-grouping;

            description
              "List of Rhino users and their plain text passwords.";
            yangdoc:change-impact "converges";
        }

        list virtual-machines {
            key "vm-id";

            leaf vm-id {
                type string;
                mandatory true;
                description
                  "The unique virtual machine identifier.";
            }

            unique rhino-node-id;
            uses vmt:rhino-vm-grouping {
                refine rhino-node-id {
                    mandatory false;
                    description
                      "The Rhino node identifier. Only specify this if the custom VMs
                      are to be deployed in a Rhino cluster.";
                }
            }

            container sas-instance-configuration {
                uses sas:sas-instance-configuration-grouping;
                when "../../../sas/enabled = 'true'";
                presence "This container is optional, but has mandatory descendants.";

                description
                  "SAS instance configuration.";
            }

            description
              "Configured virtual machines.";
        }

        description
          "Custom virtual machine pool.";
    }
}
Previous page Next page
VM Build Container Version 1.0.0