# vim: set ts=2 et:
openstack-phase1:
  series: trusty
  services:
    nodes-api:
      charm: "cs:trusty/ubuntu"
      num_units: 3
      constraints: tags=control
    nodes-compute:
      charm: "cs:trusty/ubuntu"
      num_units: 2
      constraints: tags=compute
    "ntp": 
      charm: "cs:trusty/ntp"
    zookeeper:
      branch: lp:~charmers/charms/precise/zookeeper/trunk
      num_units: 3
      series: precise
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    cassandra:
      branch: lp:~stub/charms/trusty/cassandra/noauthentication
      num_units: 3
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
      options:
        authenticator: AllowAllAuthenticator
  relations:
    - - "ntp:juju-info"
      - "nodes-api:juju-info"
    - - "ntp:juju-info"
      - "nodes-compute:juju-info"
openstack-phase2: 
  inherits: openstack-phase1
  services: 
    "percona-cluster": 
      branch: "lp:~openstack-charmers/charms/trusty/percona-cluster/next"
      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-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "hacluster-keystone":
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'QisjNpoKHLkvyc3PEdDHP5VZjgD0kOk9t0ABPWmCELlu5AgWgnW6bJd34BVXO7VhW+3ZwNQM3W+bZ3pl28ftY4ki4N/S0KLFNia5egFgiA3AH2QXLnokS7OYXuu6GMJJ1S5mDe6P5zU+tfJe/Mebq24u7CgR0gAvohSPRdDTwdY='
    "hacluster-horizon":
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'aCVPHw6XYne+Hxv0WPiM3+yEfeIxs0Ly0EMKB494Rdzjf5rE52GcXqqxuvIa/nXJ4GCR+UdKk9FEwcASfYkeu3HDWUld9uTE6pOc+ibWYnybNH7VBfEHW8h9YmQKs3HD2T3wlTcS2irU4CUW7/IKNok4etYdM3iFn1K2ReSGXEI='
    "hacluster-nova":
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'gel86qmEze8dYKYbfqIgRpqapJpKtdYL2hxC1y5nWYBPq7EMf6V8mF01IjeUkSRs14CUDrsPpT4PWeom7EOY2fleuLx/aIuqQUfEDkhf/gvaz7BaU4hrmTCoDBK7/HvEwY+/wu4qkEeckzSRPsm9MYzqnLRshh8yjZJ70xU/mmk='
    "hacluster-neutron": 
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'KNhb4++3jlllbnscS5D3qdzOJDsQPEeZ7zOLZJHbkKrRjX9gRCijVVOiv2JCvq03HqQ7LIufQzWGl9Za8qh0f6QmQ3XhFh/Cb/3WaYFj+tEf0zArWv+8miswmM1z4eyTSrTWBq0dTgx1z96wjBxP5HV0+1LWW+3Ei4oZWyRGeR0='
    "hacluster-glance":
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'el1dd8107J5mwQDPS7tEJPZrr0XFfL95+Tku/QG90W5Q5f5SP4W8TRfKvddGmZWZl2lVd1neG5WqaHa1mq/aScJpoflzVAJCvshN7Gd2AjHhLNNugeI8S90j/7wrKUhqiCAlkKaeri2xs5bB5PZ7Z9AHuNZL7SW1al8lxrKhUFI='
    "hacluster-ceilometer":
      charm: "cs:trusty/hacluster"
      options:
        corosync_key: |
          'cHkgKGJpdHMgPSA5NjApLgpQcmVzcyBrZXlzIG9uIHlvdXIga2V5Ym9hcmQgdG8gZ2VuZXJhdGUgZW50cm9weSAoYml0cyA9IDEwMDgpLgpXcml0aW5nIGNvcm9zeW5jIGtleSB0byAvZXRjL2Nvcm9zeW5jL2F1dGhrZXkuCg=='
    "ceilometer":
      branch: "lp:~openstack-charmers/charms/trusty/ceilometer/next"
      num_units: 3
      options:
        vip: 10.4.1.14
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "ceilometer-agent":
      branch: "lp:~openstack-charmers/charms/trusty/ceilometer-agent/next"
    "mongodb":
      charm: "cs:trusty/mongodb"
      num_units: 1
      to:
        - "lxc:nodes-api=0"
    heat:
      branch: "lp:~openstack-charmers/charms/trusty/heat/next"
      to:
        - "lxc:nodes-api=0"
    ceph:
      charm: cs:trusty/ceph
      num_units: 2
      options:
        fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
        monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
        osd-devices: /srv
        monitor-count: 1
        osd-reformat: 'no'
#        ceph-cluster-network: 192.168.0.0/24
#        ceph-public-network: 192.168.0.0/24
      to:
        - "nodes-compute=0"
        - "nodes-compute=1"
    ceph-osd:
      charm: cs:trusty/ceph-osd
      num_units: 1
      options:
        osd-devices: /srv
        osd-reformat: 'yes'
      to:
        - "nodes-api=0"
    ceph-radosgw:
      charm: cs:trusty/ceph-radosgw
      num_units: 3
      options:
        use-embedded-webserver: true
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"

    cinder:
      charm: cs:trusty/cinder
      num_units: 3
      options:
        block-device: None
        glance-api-version: 2
#        ha-mcastport: 5401
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    cinder-ceph:
      charm: cs:trusty/cinder-ceph
    "rabbitmq-server": 
      branch: lp:charms/trusty/rabbitmq-server
      num_units: 3
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "keystone": 
      branch: lp:charms/trusty/keystone
      num_units: 3
      options: 
        "admin-password": openstack
        "admin-token": admin
        vip: 10.4.1.13
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "openstack-dashboard": 
      branch: lp:charms/trusty/openstack-dashboard
      num_units: 3
      options: 
        secret: admin
        vip: 10.4.1.11
        webroot: /
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "nova-compute": 
      branch: lp:~openstack-charmers/charms/trusty/nova-compute/next
      num_units: 2
      options: 
        "enable-live-migration": False
        "manage-neutron-plugin-legacy-mode": False
      to:
        - "nodes-compute=0"
        - "nodes-compute=1"
#        - "nodes-api=0"
#        - "nodes-api=1"
#        - "nodes-api=2"
    "nova-cloud-controller": 
      branch: lp:charms/trusty/nova-cloud-controller
      num_units: 3
      options: 
        "console-access-protocol": novnc
        "network-manager": Neutron
        "quantum-security-groups": "yes"
        "service-guard": true
        vip: 10.4.1.16
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "neutron-api": 
      branch: lp:~openstack-charmers/charms/trusty/neutron-api/next
      num_units: 3
      options:
        neutron-security-groups: True
        manage-neutron-plugin-legacy-mode: False
        vip: 10.4.1.17
      to: 
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
    "glance": 
      branch: lp:charms/trusty/glance
      num_units: 3
      options: 
        vip: 10.4.1.12
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
        - "lxc:nodes-api=2"
  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" ] 
    - [ keystone, percona-cluster ]
    - [ nova-cloud-controller, percona-cluster ]
    - [ nova-cloud-controller, rabbitmq-server ]
    - [ nova-cloud-controller, glance ]
    - [ nova-cloud-controller, keystone ]
    - [ nova-compute, nova-cloud-controller ]
    - [ "nova-compute:shared-db", "percona-cluster:shared-db" ]
    - [ "nova-compute:amqp", "rabbitmq-server:amqp" ]
    - [ nova-compute, glance ]
    - [ glance, percona-cluster ]
    - [ glance, keystone ]
    - [ openstack-dashboard, keystone ]
    - [ neutron-api, percona-cluster ]
    - [ neutron-api, rabbitmq-server ]
    - [ neutron-api, nova-cloud-controller ]
    - [ neutron-api, keystone ]
    - [ neutron-api, neutron-api-contrail ]
    - [ "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" ]

contrail:
  inherits: openstack-phase2
  services:
    contrail-configuration:
      branch: lp:~sdn-charmers/charms/trusty/contrail-configuration/trunk
      num_units: 2
      options:
        vip: 10.4.1.18
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
    contrail-control:
      branch: lp:~sdn-charmers/charms/trusty/contrail-control/trunk
      num_units: 2
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
    contrail-analytics:
      branch: lp:~sdn-charmers/charms/trusty/contrail-analytics/trunk
      num_units: 2
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
    contrail-webui:
      branch: lp:~sdn-charmers/charms/trusty/contrail-webui/trunk
      num_units: 2
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
    neutron-api-contrail:
      branch: lp:~sdn-charmers/charms/trusty/neutron-api-contrail/trunk
    neutron-contrail:
      branch: lp:~sdn-charmers/charms/trusty/neutron-contrail/trunk
    haproxy:
      charm: cs:trusty/haproxy
      num_units: 2
      options:
        peering_mode: active-active
      to:
        - "lxc:nodes-api=0"
        - "lxc:nodes-api=1"
    keepalived:
      branch: lp:~sdn-charmers/charms/trusty/keepalived/trunk
      options:
        virtual-ip: 10.4.1.19
  overrides:
    admin-role: admin
  relations:
    - [ "contrail-configuration:cassandra", "cassandra:database" ]
    - [ contrail-configuration, zookeeper ]
    - [ contrail-configuration, rabbitmq-server ]
    - [ contrail-configuration, keystone ]
    - [ neutron-api-contrail, contrail-configuration ]
    - [ neutron-api-contrail, keystone ]
    - [ "contrail-control:contrail-api", "contrail-configuration:contrail-api" ]
    - [ "contrail-control:contrail-discovery", "contrail-configuration:contrail-discovery" ]
    - [ "contrail-control:contrail-ifmap", "contrail-configuration:contrail-ifmap" ]
    - [ contrail-control, keystone ]
    - [ "contrail-analytics:cassandra", "cassandra:database" ]
    - [ contrail-analytics, contrail-configuration ]
    - [ contrail-webui, keystone ]
    - [ "contrail-webui:contrail_api", "contrail-configuration:contrail-api" ]
    - [ "contrail-webui:contrail_discovery", "contrail-configuration:contrail-discovery" ]
    - [ "contrail-webui:cassandra", "cassandra:database" ]
    - [ nova-compute, neutron-contrail ]
    - [ "neutron-contrail:contrail-discovery", "contrail-configuration:contrail-discovery" ]
    - [ "neutron-contrail:contrail-api", "contrail-configuration:contrail-api" ]
    - [ neutron-contrail, keystone ]
    - [ contrail-configuration, haproxy ]
    - [ contrail-analytics, haproxy ]
    - [ contrail-webui, haproxy ]
    - [ haproxy, keepalived ]
trusty-liberty-nodes:
  inherits: openstack-phase1
  series: trusty
  overrides:
    series: trusty
    
trusty-liberty: 
  inherits: contrail
  series: trusty
  overrides:
    series: trusty
    #os-data-network: 10.4.8.0/21
    #prefer-ipv6: true
    region: Canonical
    openstack-origin: cloud:trusty-liberty
    source: "cloud:trusty-liberty"
    ceph-osd-replication-count: 2
    admin-role: admin


trusty-kilo-nodes:
  inherits: openstack-phase1
  series: trusty
  overrides:
    series: trusty

trusty-kilo:
  inherits: contrail
  series: trusty
  overrides:
    series: trusty
    #os-data-network: 10.4.8.0/21
    #prefer-ipv6: true
    region: Canonical
    openstack-origin: cloud:trusty-kilo
    source: "cloud:trusty-kilo"
    ceph-osd-replication-count: 2
    admin-role: admin


trusty-juno-nodes:
  inherits: openstack-phase1
  overrides:
    series: trusty

trusty-juno:
  inherits: contrail
  series: trusty
  overrides:
    series: trusty
    #os-data-network: 10.4.8.0/21
    #prefer-ipv6: true
    region: Canonical
    openstack-origin: cloud:trusty-juno
    source: "cloud:trusty-juno"
    ceph-osd-replication-count: 2
    admin-role: admin