summaryrefslogtreecommitdiffstats
path: root/ci/odl/juju-deployer/ovs-odl-ha.yaml
blob: e1d7fc44a605007b6d30fd916cadc1c00b27a85e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

@media only all and (prefers-color-scheme: dark) {
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
.highlight .sx { color: #e6db74 } /* Literal.String.Other */
.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
}
#!/usr/bin/env python
#
# jose.lausuch@ericsson.com
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
#

import yaml

import tier_handler as th


class TierBuilder:
    def __init__(self, ci_installer, ci_scenario, testcases_file):
        self.ci_installer = ci_installer
        self.ci_scenario = ci_scenario
        self.testcases_file = testcases_file
        self.dic_tier_array = None
        self.tier_objects
# vim: set ts=2 et:
trusty-mitaka-nodes:
  inherits: openstack-phase1
  overrides:
    series: trusty

trusty-mitaka:
  inherits: openstack-phase2
  overrides:
    #os-data-network: 10.4.8.0/21
    #ceph-cluster-network: 10.4.0.0/21
    #prefer-ipv6: true
    #enable-dvr: true
    #l2-population: true
    region: Canonical
    #source: "cloud:trusty-mitaka"
    openstack-origin: "cloud:trusty-mitaka"
    series: trusty
    #ceph-osd-replication-count: 2
    admin-role: admin
    keystone-admin-role: admin

openstack-phase1:
  series: trusty
  services:
    nodes:
      charm: "cs:trusty/ubuntu"
      num_units: 5
    ntp:
      charm: "local:trusty/ntp"
  relations:
    - - "ntp:juju-info"
      - "nodes:juju-info"

openstack-phase2:
  inherits: openstack-phase1
  relations:
    - - "glance:ha"
      - "hacluster-glance:ha"
    - - "keystone:ha"
      - "hacluster-keystone:ha"
    - - "neutron-api:ha"
      - "hacluster-neutron:ha"
    - - "nova-cloud-controller:ha"
      - "hacluster-nova:ha"
    - - "openstack-dashboard:ha"
      - "hacluster-horizon:ha"
    - - "ceilometer:ha"
      - "hacluster-ceilometer:ha"
    - - "cinder:ha"
      - "hacluster-cinder:ha"
    - - "heat:ha"
      - "hacluster-heat:ha"
#    - - "ceph-radosgw:ha"
#      - "hacluster-ceph-radosgw:ha"
    - - "neutron-api:neutron-plugin-api-subordinate"
      - "neutron-api-odl:neutron-plugin-api-subordinate"
    - - "nova-compute:neutron-plugin"
      - "openvswitch-odl:neutron-plugin"
    - - "neutron-gateway"
      - "openvswitch-odl"
    - - "openvswitch-odl:ovsdb-manager"
      - "odl-controller:ovsdb-manager"
    - - "neutron-api-odl:odl-controller"
      - "odl-controller:controller-api"
    - - "keystone:shared-db"
      - "percona-cluster:shared-db"
    - - "nova-cloud-controller:shared-db"
      - "percona-cluster:shared-db"
    - - "nova-cloud-controller:amqp"
      - "rabbitmq-server:amqp"
    - - "nova-cloud-controller:image-service"
      - "glance:image-service"
    - - "nova-cloud-controller:identity-service"
      - "keystone:identity-service"
    - - "nova-cloud-controller:cloud-compute"
      - "nova-compute:cloud-compute"
    - - "nova-compute:amqp"
      - "rabbitmq-server:amqp"
    - - "nova-compute:image-service"
      - "glance:image-service"
    - - "glance:shared-db"
      - "percona-cluster:shared-db"
    - - "glance:identity-service"
      - "keystone:identity-service"
    - - "glance:amqp"
      - "rabbitmq-server:amqp"
    - - "openstack-dashboard:identity-service"
      - "keystone:identity-service"
    - - "neutron-api:shared-db"
      - "percona-cluster:shared-db"
    - - "neutron-api:amqp"
      - "rabbitmq-server:amqp"
    - - "nova-cloud-controller:neutron-api"
      - "neutron-api:neutron-api"
    - - "neutron-api:identity-service"
      - "keystone:identity-service"
    - - "neutron-gateway:amqp"
      - "rabbitmq-server:amqp"
    - - "neutron-gateway:neutron-plugin-api"
      - "neutron-api:neutron-plugin-api"
    - - "nova-cloud-controller:quantum-network-service"
      - "neutron-gateway:quantum-network-service"
    - - "ceilometer:amqp"
      - "rabbitmq-server:amqp"
    - - "ceilometer-agent:ceilometer-service"
      - "ceilometer:ceilometer-service"
    - - "ceilometer:identity-service"
      - "keystone:identity-service"
    - - "ceilometer:identity-notifications"
      - "keystone:identity-notifications"
    - - "ceilometer-agent:nova-ceilometer"
      - "nova-compute:nova-ceilometer"
    - - "ceilometer:shared-db"
      - "mongodb:database"
    - - "heat:shared-db"
      - "percona-cluster:shared-db"
    - - "heat:identity-service"
      - "keystone:identity-service"
    - - "heat:amqp"
      - "rabbitmq-server:amqp"
    - - "cinder:image-service"
      - "glance:image-service"
    - - "cinder:amqp"
      - "rabbitmq-server:amqp"
    - - "cinder:identity-service"
      - "keystone:identity-service"
    - - "cinder:cinder-volume-service"
      - "nova-cloud-controller:cinder-volume-service"
    - - "cinder-ceph:storage-backend"
      - "cinder:storage-backend"
    - - "ceph:client"
      - "nova-compute:ceph"
    - - "cinder:shared-db"
      - "percona-cluster:shared-db"
    - - "ceph:client"
      - "cinder-ceph:ceph"
    - - "ceph:client"
      - "glance:ceph"
    - - "ceph-osd:mon"
      - "ceph:osd"
    - - "ceph-radosgw:mon"
      - "ceph:radosgw"
    - - "ceph-radosgw:identity-service"
      - "keystone:identity-service"
    #- - nova-compute:lxd
      #- lxd:lxd
    - - congress:shared-db
      - mysql:shared-db
    - - congress:identity-service
      - keystone:identity-service
    - - congress:amqp
      - rabbitmq-server:amqp
  services:
    hacluster-keystone:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'QisjNpoKHLkvyc3PEdDHP5VZjgD0kOk9t0ABPWmCELlu5AgWgnW6bJd34BVXO7VhW+3ZwNQM3W+bZ3pl28ftY4ki4N/S0KLFNia5egFgiA3AH2QXLnokS7OYXuu6GMJJ1S5mDe6P5zU+tfJe/Mebq24u7CgR0gAvohSPRdDTwdY='
    hacluster-cinder:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'cc6n5Zv6M2mQ2mUhTx/aKoImQ7q77pKDdkSwBUG5VqoSb23SxnGUsAxH5E8lOeCZ84EURzS71FEb8F9P5YY+2deh0+tdXukoKTugdVmJfarahPpWpEEZRRCigUngdFw/479FOcFCkN1SJtQNqWi1ACYSn1/GRoQ2vP+2byrkV6E='
    hacluster-heat:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'tNeFXmOqzytRq7loxLMDaaMqZZXjC7BNfMbcKxSNeIPyBj4lkJwHZyuV7mo0ogzcfVJqLBHBULai+ed9uyWCZJxLXoi+WwTj5AqcXfxfSo9vLCthukJJ4zuKvzeGibZRszwINf32RW9jtXSCPosv8a+9MSg49KD1c9fS20aEuIM='
    hacluster-horizon:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'aCVPHw6XYne+Hxv0WPiM3+yEfeIxs0Ly0EMKB494Rdzjf5rE52GcXqqxuvIa/nXJ4GCR+UdKk9FEwcASfYkeu3HDWUld9uTE6pOc+ibWYnybNH7VBfEHW8h9YmQKs3HD2T3wlTcS2irU4CUW7/IKNok4etYdM3iFn1K2ReSGXEI='
    hacluster-nova:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'gel86qmEze8dYKYbfqIgRpqapJpKtdYL2hxC1y5nWYBPq7EMf6V8mF01IjeUkSRs14CUDrsPpT4PWeom7EOY2fleuLx/aIuqQUfEDkhf/gvaz7BaU4hrmTCoDBK7/HvEwY+/wu4qkEeckzSRPsm9MYzqnLRshh8yjZJ70xU/mmk='
    hacluster-neutron:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'KNhb4++3jlllbnscS5D3qdzOJDsQPEeZ7zOLZJHbkKrRjX9gRCijVVOiv2JCvq03HqQ7LIufQzWGl9Za8qh0f6QmQ3XhFh/Cb/3WaYFj+tEf0zArWv+8miswmM1z4eyTSrTWBq0dTgx1z96wjBxP5HV0+1LWW+3Ei4oZWyRGeR0='
    hacluster-glance:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'el1dd8107J5mwQDPS7tEJPZrr0XFfL95+Tku/QG90W5Q5f5SP4W8TRfKvddGmZWZl2lVd1neG5WqaHa1mq/aScJpoflzVAJCvshN7Gd2AjHhLNNugeI8S90j/7wrKUhqiCAlkKaeri2xs5bB5PZ7Z9AHuNZL7SW1al8lxrKhUFI='
    hacluster-ceilometer:
      charm: "local:trusty/hacluster"
      options:
        corosync_key: |
          'cHkgKGJpdHMgPSA5NjApLgpQcmVzcyBrZXlzIG9uIHlvdXIga2V5Ym9hcmQgdG8gZ2VuZXJhdGUgZW50cm9weSAoYml0cyA9IDEwMDgpLgpXcml0aW5nIGNvcm9zeW5jIGtleSB0byAvZXRjL2Nvcm9zeW5jL2F1dGhrZXkuCg=='
#    hacluster-ceph-radosgw:
#      charm: "local:trusty/hacluster"
#      options:
#        corosync_key: |
#          'tk8U/FkH1+dNsvj6IU0C8AST7i/9ylIoCD8kWpPjB+UE2AYR7tkgkjnc4m5dzIYPYTceY7Hnb9xLJ0nlcQLYYFBRAJOg3drNTcVrfh63y9g9La1J1r51YSbOqXq1Q6RUhxP4OQBtDGE6/4NtZwuRPvPGLcI2ENiVm78l8JFkXRw='
    percona-cluster:
      charm: "local:trusty/percona-cluster"
      num_units: 3
      options:
        dataset-size: 2G
        lp1366997-workaround: true
        max-connections: 10000
        root-password: 293rhc395m
        sst-password: 127rc14t51
        vip: 10.4.1.15
      to:
        - "lxc:nodes=0"
        - "lxc:nodes=1"
        - "lxc:nodes=2"
    ceilometer:
      charm: "local:trusty/ceilometer"
      num_units: 3
      options:
        vip: 10.4.1.14
        #os-public-hostname: api.public-fqdn
      to:
        - "lxc:nodes=1"
        - "lxc:nodes=2"
        - "lxc:nodes=3"
    ceilometer-agent:
      charm: "local:trusty/ceilometer-agent"
    mongodb:
      charm: "local:trusty/mongodb"
      to:
        - "lxc:nodes=0"
    heat:
      charm: "local:trusty/heat"
      num_units: 3
      options:
        vip: 10.4.1.18
        #os-public-hostname: api.public-fqdn
      to:
        - "lxc:nodes=2"
        - "lxc:nodes=3"
        - "lxc:nodes=4"
    ceph:
      charm: local:trusty/ceph
      num_units: 3
      options:
        fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
        monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
        osd-devices: ""
        monitor-count: 3
#        osd-reformat: 'false'
#        ceph-cluster-network: 192.168.0.0/24
#        ceph-public-network: 192.168.0.0/24
      to:
        - "lxc:nodes=3"
        - "lxc:nodes=4"
        - "lxc:nodes=0"
    ceph-osd:
      charm: local:trusty/ceph-osd
      num_units: 3
      options:
        osd-devices: /srv
        osd-reformat: 'yes'
      to:
        - "nodes=2"
        - "nodes=3"
        - "nodes=4"
#        - "nodes=0"
    ceph-radosgw:
      charm: local:trusty/ceph-radosgw
#      vip: 10.4.1.10
      #os-public-hostname: api.public-fqdn
      options:
        use-embedded-webserver: true
        operator-roles: "Member,admin"
      to:
        - "lxc:nodes=0"
#        - "lxc:nodes=1"
#        - "lxc:nodes=2"
    cinder:
      charm: local:trusty/cinder
      num_units: 3
      options:
        block-device: None
        glance-api-version: 2
        vip: 10.4.1.19
        #os-public-hostname: api.public-fqdn
#        ha-mcastport: 5401
      to:
        - "lxc:nodes=4"
        - "lxc:nodes=0"
        - "lxc:nodes=1"
    cinder-ceph:
      charm: local:trusty/cinder-ceph
    rabbitmq-server:
      charm: local:trusty/rabbitmq-server
      num_units: 3
      to:
        - "lxc:nodes=0"
        - "lxc:nodes=1"
        - "lxc:nodes=2"
    keystone:
      charm: local:trusty/keystone
      num_units: 3
      options:
#        ha-mcastport: 5402
        admin-password: openstack
        admin-token: admin
        vip: 10.4.1.13
        #os-public-hostname: api.public-fqdn
      to:
        - "lxc:nodes=1"
        - "lxc:nodes=2"
        - "lxc:nodes=3"
    openstack-dashboard:
      charm: local:trusty/openstack-dashboard
      num_units: 3
      options:
        secret: admin
        vip: 10.4.1.11
        webroot: /
      to:
        - "lxc:nodes=2"
        - "lxc:nodes=3"
        - "lxc:nodes=4"
    nova-compute:
      charm: local:trusty/nova-compute
      num_units: 4
      options:
        enable-live-migration: true
        enable-resize: true
        manage-neutron-plugin-legacy-mode: false
        migration-auth-type: ssh
        #virt-type: lxd
        #hugepages: "50%"
      to:
        - "nodes=1"
        - "nodes=2"
        - "nodes=3"
        - "nodes=4"
    nova-cloud-controller:
      charm: local:trusty/nova-cloud-controller
      num_units: 3
      options:
        console-access-protocol: novnc
        network-manager: Neutron
        service-guard: true
        vip: 10.4.1.16
        #os-public-hostname: api.public-fqdn
      to:
        - "lxc:nodes=3"
        - "lxc:nodes=4"
        - "lxc:nodes=0"
    neutron-api:
      charm: local:trusty/neutron-api
      num_units: 3
      options:
        neutron-security-groups: True
        flat-network-providers: "*"
        vip: 10.4.1.17
        #os-public-hostname: api.public-fqdn
      to:
        - "lxc:nodes=4"
        - "lxc:nodes=0"
        - "lxc:nodes=1"
    neutron-gateway:
      charm: local:trusty/neutron-gateway
      options:
        #ext-port: "eth1"
        plugin: ovs-odl
        instance-mtu: 1400
      to:
        - "nodes=0"
    odl-controller:
      charm: local:trusty/odl-controller
      options:
        install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.4.2-Beryllium-SR2/distribution-karaf-0.4.2-Beryllium-SR2.tar.gz"
        profile: "openvswitch-odl-beryllium"
        http-proxy: "http://squid.internal:3128"
        https-proxy: "http://squid.internal:3128"
      to:
        - "lxc:nodes=0"
    glance:
      charm: local:trusty/glance
      num_units: 3
      options:
        vip: 10.4.1.12
        #os-public-hostname: api.public-fqdn
#        ha-mcastport: 5402
      to:
        - "lxc:nodes=0"
        - "lxc:nodes=1"
        - "lxc:nodes=2"
    opnfv-promise:
      branch: lp:~narindergupta/charms/trusty/promise/trunk
      to:
        - "lxc:nodes=0"
    neutron-api-odl:
      charm: local:trusty/neutron-api-odl
      options:
        overlay-network-type: 'vxlan'
        security-groups: True
    openvswitch-odl:
      charm: local:trusty/openvswitch-odl
    congress:
      charm: local:trusty/congress
      options:
        source-branch: stable/liberty
      to:
        - "lxc:nodes=0"