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;
    }

    import ietf-inet-types {
        prefix "ietf-inet";
    }

    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 for Rhino. Required only if the node is built
               with Rhino replication enabled or with Rhino configured in pool mode.";
            yangdoc:change-impact "external";
            yangdoc:change-impact "restart";
        }

        leaf cassandra-contact-port {
          type ietf-inet:port-number;
          default 9042;
          description
            "The port to connect to on Rhino's Cassandra contact points.
             Required only if the node is built with Rhino replication enabled
             or with Rhino configured in pool mode.";
          yangdoc:change-impact "external";
          yangdoc:change-impact "restart";
        }

        leaf cassandra-nodetool-port {
          type ietf-inet:port-number;
          default 7199;
          description
            "The port the Cassandra nodetool utility should connect to
             for the Rhino Cassandra cluster. Required only if the node is built with Rhino
             replication enabled or with Rhino configured in pool mode.";
          yangdoc:change-impact "external";
          yangdoc:change-impact "restart";
        }

        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;

            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 3.2