# vim: set ts=2 et:
trusty-mitaka-nodes:
  inherits: openstack-phase1
  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"
    #ceph-osd-replication-count: 2
    admin-role: admin
    keystone-admin-role: admin
    #use-internal-endpoints: true
    #os-public-hostname: pod.maas

trusty-mitaka:
  inherits: openstack-phase2

openstack-phase1:
  services:
    nodes:
      charm: "cs:trusty/ubuntu"
      num_units: 5
    ntp:
      charm: "local:trusty/ntp"
    neutron-gateway:
      charm: "local:trusty/neutron-gateway"
      options:
        #ext-port: "eth1"
        instance-mtu: 1400
      to:
        - "nodes=0"
    nova-cloud-controller:
      charm: "local:trusty/nova-cloud-controller"
      num_units: 3
      options:
        console-access-protocol: novnc
        #console-proxy-ip: pod.maas
        network-manager: Neutron
        #service-guard: true
        vip: 10.4.1.16
      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
        #hugepages: "50%"
        #virt-type: lxd
      to:
        - "nodes=1"
        - "nodes=2"
        - "nodes=3"
        - "nodes=4"
    openstack-dashboard:
      charm: "local:trusty/openstack-dashboard"
      num_units: 3
      options:
        secret: admin
        webroot: /
        vip: 10.4.1.11
        #endpoint-type: internalURL
      to:
        - "lxc:nodes=3"
        - "lxc:nodes=4"
        - "lxc:nodes=0"
    rabbitmq-server:
      charm: "local:trusty/rabbitmq-server"
      num_units: 3
      options:
        vip: 10.4.1.10
      to:
        - "lxc:nodes=4"
        - "lxc:nodes=0"
        - "lxc:nodes=1"
    heat:
      charm: "local:trusty/heat"
      num_units: 3
      options:
        vip: 10.4.1.18
      to:
        - "lxc:nodes=2"
        - "lxc:nodes=3"
        - "lxc:nodes=4"
    congress:
      charm: local:trusty/congress
      options:
        #source-branch: stable/mitaka
      to:
        - "lxc:nodes=0"
    glance:
      charm: "local:trusty/glance"
      num_units: 3
      options:
        vip: 10.4.1.12
      to:
        - "lxc:nodes=3"
        - "lxc:nodes=4"
        - "lxc:nodes=0"
    opnfv-promise:
      charm: local:trusty/promise
      to:
        - "lxc:nodes=0"
    keystone:
      charm: "local:trusty/keystone"
      num_units: 3
      options:
        admin-password: openstack
        admin-token: admin
        vip: 10.4.1.13
      to:
        - "lxc:nodes=4"
        - "lxc:nodes=0"
        - "lxc:nodes=1"
    mongodb:
      charm: local:trusty/mongodb
      to:
        - "lxc:nodes=0"
    mysql:
      charm: "local:trusty/percona-cluster"
      num_units: 3
      options:
        dataset-size: 2G
        max-connections: 20000
        lp1366997-workaround: true
        root-password: 293rhc395m
        sst-password: 127rc14t51
        vip: 10.4.1.15
      to:
        - "lxc:nodes=0"
        - "lxc:nodes=1"
        - "lxc:nodes=2"
    neutron-api:
      charm: "local:trusty/neutron-api"
      num_units: 3
      options:
        neutron-security-groups: true
        overlay-network-type: vxlan
        #flat-network-providers: "*"
        vip: 10.4.1.17
      to:
        - "lxc:nodes=1"
        - "lxc:nodes=2"
        - "lxc:nodes=3"
    ceph:
      charm: "local:trusty/ceph"
      num_units: 3
      options:
        monitor-count: 3
        fsid: 5a791d94-980b-11e4-b6f6-3c970e8b1cf7
        monitor-secret: AQAi5a9UeJXUExAA+By9u+GPhl8/XiUQ4nwI3A==
#        osd-reformat: 'yes'
#        ceph-cluster-network: 192.168.0.0/24
#        ceph-public-network: 192.168.0.0/24
      to:
        - "lxc:nodes=1"
        - "lxc:nodes=2"
        - "lxc:nodes=3"
    ceph-osd:
      charm: "local:trusty/ceph-osd"
      num_units: 3
      options:
        osd-devices: /srv
        osd-reformat: 'yes'
      to:
        - "nodes=2"
        - "nodes=3"
        - "nodes=4"
    ceph-radosgw:
      charm: "local:trusty/ceph-radosgw"
      options:
        use-embedded-webserver: true
        operator-roles: "Member,admin"
      to:
        - "lxc:nodes=0"
    cinder:
      charm: "local:trusty/cinder"
      num_units: 3
      options:
        block-device: None
        glance-api-version: 2
        vip: 10.4.1.19
      to:
        - "lxc:nodes=2"
        - "lxc:nodes=3"
        - "lxc:nodes=4"
    ceilometer:
      charm: "local:trusty/ceilometer"
      num_units: 3
      options:
        vip: 10.4.1.14
      to:
        - "lxc:nodes=0"
        - "lxc:nodes=1"
        - "lxc:nodes=2"
    hacluster-keystone:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-cinder:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-heat:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-horizon:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-ceilometer:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-nova:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-neutron:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-glance:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3
    hacluster-mysql:
      charm: "local:trusty/hacluster"
      options:
        corosync_transport: unicast
        cluster_count: 3

  relations:
    - - ntp:juju-info
      - nodes:juju-info
    - - mysql:ha
      - hacluster-mysql:ha
    - - 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

openstack-phase2:
  inherits: openstack-phase1
  relations:
    - - nova-compute:amqp
      - rabbitmq-server:amqp
    - - neutron-gateway:amqp
      - rabbitmq-server:amqp
    - - keystone:shared-db
      - mysql:shared-db
    - - nova-cloud-controller:identity-service
      - keystone:identity-service
    - - glance:identity-service
      - keystone:identity-service
    - - neutron-api:identity-service
      - keystone:identity-service
    - - neutron-openvswitch:neutron-plugin-api
      - neutron-api:neutron-plugin-api
    - - neutron-api:shared-db
      - mysql:shared-db
    - - neutron-api:amqp
      - rabbitmq-server:amqp
    - - neutron-gateway:neutron-plugin-api
      - neutron-api:neutron-plugin-api
    - - glance:shared-db
      - mysql:shared-db
    - - glance:amqp
      - rabbitmq-server:amqp
    - - nova-cloud-controller:image-service
      - glance:image-service
    - - nova-compute:image-service
      - glance:image-service
    - - nova-cloud-controller:cloud-compute
      - nova-compute:cloud-compute
    - - nova-cloud-controller:amqp
      - rabbitmq-server:amqp
    - - nova-cloud-controller:quantum-network-service
      - neutron-gateway:quantum-network-service
    - - nova-compute:neutron-plugin
      - neutron-openvswitch:neutron-plugin
    - - neutron-openvswitch:amqp
      - rabbitmq-server:amqp
    - - openstack-dashboard:identity-service
      - keystone:identity-service
    - - nova-cloud-controller:shared-db
      - mysql:shared-db
    - - nova-cloud-controller:neutron-api
      - neutron-api:neutron-api
    - - 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
      - mysql:shared-db
    - - ceph:client
      - cinder-ceph:ceph
    - - ceph:client
      - glance:ceph
    - - ceph-osd:mon
      - ceph:osd
    - - ntp:juju-info
      - nova-compute:juju-info
    - - ntp:juju-info
      - neutron-gateway:juju-info
    - - ceph-radosgw:mon
      - ceph:radosgw
    - - ceph-radosgw:identity-service
      - keystone:identity-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
      - mysql:shared-db
    - - heat:identity-service
      - keystone:identity-service
    - - heat:amqp
      - rabbitmq-server:amqp
    #- - nova-compute:lxd
      #- lxd:lxd
    - - congress:shared-db
      - mysql:shared-db
    - - congress:identity-service
      - keystone:identity-service
    - - congress:amqp
      - rabbitmq-server:amqp

  services:
    ceilometer-agent:
      charm: "local:trusty/ceilometer-agent"
    cinder-ceph:
      charm: "local:trusty/cinder-ceph"
    neutron-openvswitch:
      charm: "local:trusty/neutron-openvswitch"
      options:
        #enable-dpdk: true
        #data-port: ""
        #default-socket-memory: 1024
        #defualt-socket-cores: 1
        #dpdk-driver: uio_pci_generic