summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Chapman <michapma@redhat.com>2016-01-20 00:54:52 -0500
committerMichael Chapman <woppin@gmail.com>2016-01-21 16:21:56 +1100
commit4a6d9adfc7f6ea5938b21055acbd059856aaebf2 (patch)
tree49cc5586f23d4f69b89dc49171bc1f43389de21d
parent00f0590f04797aeb429234863dd384fa5317b609 (diff)
Aodh
Add support for Aodh. Current packaged module is out of date and the module is very young, so it is pulled from git on liberty branch. Change-Id: Iff72c8b63970021e212bb9d78f9a805d108f0bcf
-rwxr-xr-xbuild/instack.sh24
-rw-r--r--build/opnfv-tripleo-heat-templates.patch515
2 files changed, 497 insertions, 42 deletions
diff --git a/build/instack.sh b/build/instack.sh
index 80cfa473..e0d71d51 100755
--- a/build/instack.sh
+++ b/build/instack.sh
@@ -242,11 +242,16 @@ pushd stack
# make a copy of the cached overcloud-full image
cp overcloud-full.qcow2 overcloud-full-odl.qcow2
+#install aodh on overcloud
+AODH_PKG="openstack-aodh-api,openstack-aodh-common,openstack-aodh-compat,openstack-aodh-evaluator,openstack-aodh-expirer"
+AODH_PKG+=",openstack-aodh-listener,openstack-aodh-notifier"
+
# remove unnecessary packages and install necessary packages
LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y openstack-neutron-openvswitch" \
--install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
--upload /etc/yum.repos.d/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
--install opendaylight,python-networking-odl,ceph \
+ --install $AODH_PKG \
-a overcloud-full-odl.qcow2
## WORK AROUND
@@ -265,6 +270,7 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-opendaylight.tar.gz:/et
LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-templates.patch:/tmp \
--run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opnfv-tripleo-heat-templates.patch" \
-a instack.qcow2
+
LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-puppet-neutron.patch:/tmp \
--run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/opendaylight-puppet-neutron.patch" \
-a overcloud-full-odl.qcow2
@@ -276,6 +282,24 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-cinder-quota-fix.pat
--run-command "cd /etc/puppet/modules/cinder && patch -Np1 < /tmp/puppet-cinder-quota-fix.patch" \
-a overcloud-full-odl.qcow2
# END REMOVE ME AFTER Brahmaputra
+
+## END WORK AROUND
+popd
+
+## WORK AROUND
+## Current package of puppet-aodh is old
+
+pushd stack
+rm -rf aodh
+git clone https://github.com/openstack/puppet-aodh aodh
+pushd aodh
+git checkout stable/liberty
+popd
+
+tar -czf puppet-aodh.tar.gz aodh
+LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-aodh.tar.gz:/etc/puppet/modules/ \
+ --run-command "cd /etc/puppet/modules/ && rm -rf aodh && tar xzf puppet-aodh.tar.gz" \
+ -a overcloud-full-odl.qcow2
## END WORK AROUND
popd
diff --git a/build/opnfv-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch
index f96f1251..dc6ebadd 100644
--- a/build/opnfv-tripleo-heat-templates.patch
+++ b/build/opnfv-tripleo-heat-templates.patch
@@ -1,4 +1,4 @@
-From d9b3ccc28ff57bfa4e1135cea038ac4e5318947c Mon Sep 17 00:00:00 2001
+From 3bdd51fc8aa137e65422d6b1f5b0ddc4391b3201 Mon Sep 17 00:00:00 2001
From: Tim Rozet <tdrozet@gmail.com>
Date: Tue, 12 Jan 2016 16:49:57 -0500
Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
@@ -8,17 +8,20 @@ Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
environments/opendaylight-external.yaml | 25 ++
environments/opendaylight.yaml | 25 ++
environments/opendaylight_l3.yaml | 9 +
+ network/endpoints/endpoint_map.yaml | 31 ++
overcloud-resource-registry-puppet.yaml | 3 +
- overcloud-without-mergepy.yaml | 73 +++++
- puppet/all-nodes-config.yaml | 6 +
- puppet/compute.yaml | 35 +++
- puppet/controller.yaml | 47 ++++
- puppet/manifests/overcloud_compute.pp | 33 ++-
- puppet/manifests/overcloud_controller.pp | 86 +++++-
- puppet/manifests/overcloud_controller_pacemaker.pp | 302 +++++++++++++--------
+ overcloud-without-mergepy.yaml | 87 +++++
+ puppet/all-nodes-config.yaml | 16 +
+ puppet/compute.yaml | 35 ++
+ puppet/controller.yaml | 84 +++++
+ puppet/hieradata/common.yaml | 1 +
+ puppet/hieradata/controller.yaml | 3 +
+ puppet/manifests/overcloud_compute.pp | 33 +-
+ puppet/manifests/overcloud_controller.pp | 104 +++++-
+ puppet/manifests/overcloud_controller_pacemaker.pp | 385 +++++++++++++++------
puppet/manifests/overcloud_opendaylight.pp | 27 ++
- puppet/opendaylight-puppet.yaml | 217 +++++++++++++++
- 14 files changed, 772 insertions(+), 124 deletions(-)
+ puppet/opendaylight-puppet.yaml | 217 ++++++++++++
+ 17 files changed, 968 insertions(+), 125 deletions(-)
create mode 100644 environments/onos.yaml
create mode 100644 environments/opendaylight-external.yaml
create mode 100644 environments/opendaylight.yaml
@@ -117,6 +120,69 @@ index 0000000..ffdb017
+ neutron_mechanism_drivers: ['opendaylight']
+ neutron_tenant_network_type: vxlan
+ opendaylight_install: true
+diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
+index 0521401..7caa91b 100644
+--- a/network/endpoints/endpoint_map.yaml
++++ b/network/endpoints/endpoint_map.yaml
+@@ -4,6 +4,9 @@ description: >
+ A Map of OpenStack Endpoints
+
+ parameters:
++ AodhApiVirtualIP:
++ type: string
++ default: ''
+ CeilometerApiVirtualIP:
+ type: string
+ default: ''
+@@ -43,6 +46,9 @@ parameters:
+ EndpointMap:
+ type: json
+ default:
++ AodhAdmin: {protocol: 'http', port: '8042', host: 'IP_ADDRESS'}
++ AodhInternal: {protocol: 'http', port: '8042', host: 'IP_ADDRESS'}
++ AodhPublic: {protocol: 'http', port: '8042', host: 'IP_ADDRESS'}
+ CeilometerAdmin: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerInternal: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+ CeilometerPublic: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
+@@ -83,6 +89,28 @@ parameters:
+
+ resources:
+
++ AodhInternal:
++ type: OS::TripleO::Endpoint
++ properties:
++ EndpointName: AodhInternal
++ EndpointMap: { get_param: EndpointMap }
++ CloudName: {get_param: CloudName}
++ IP: {get_param: AodhApiVirtualIP}
++ AodhPublic:
++ type: OS::TripleO::Endpoint
++ properties:
++ EndpointName: AodhPublic
++ EndpointMap: { get_param: EndpointMap }
++ CloudName: {get_param: CloudName}
++ IP: {get_param: PublicVirtualIP}
++ AodhAdmin:
++ type: OS::TripleO::Endpoint
++ properties:
++ EndpointName: AodhAdmin
++ EndpointMap: { get_param: EndpointMap }
++ CloudName: {get_param: CloudName}
++ IP: {get_param: AodhApiVirtualIP}
++
+ CeilometerInternal:
+ type: OS::TripleO::Endpoint
+ properties:
+@@ -407,6 +435,9 @@ resources:
+ outputs:
+ endpoint_map:
+ value:
++ AodhInternal: {get_attr: [ AodhInternal, endpoint] }
++ AodhPublic: {get_attr: [ AodhPublic, endpoint] }
++ AodhAdmin: {get_attr: [ AodhAdmin, endpoint] }
+ CeilometerInternal: {get_attr: [ CeilometerInternal, endpoint] }
+ CeilometerPublic: {get_attr: [ CeilometerPublic, endpoint] }
+ CeilometerAdmin: {get_attr: [ CeilometerAdmin, endpoint] }
diff --git a/overcloud-resource-registry-puppet.yaml b/overcloud-resource-registry-puppet.yaml
index 4cfed6b..adecc79 100644
--- a/overcloud-resource-registry-puppet.yaml
@@ -132,10 +198,22 @@ index 4cfed6b..adecc79 100644
# NodeUserData == Cloud-init additional user-data, e.g cloud-config
# ControllerExtraConfigPre == Controller configuration pre service deployment
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
-index a532c2f..1aa87ae 100644
+index a532c2f..5206004 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
-@@ -113,6 +113,10 @@ parameters:
+@@ -15,6 +15,11 @@ parameters:
+ description: The password for the keystone admin account, used for monitoring, querying neutron etc.
+ type: string
+ hidden: true
++ AodhPassword:
++ default: unset
++ description: The password for the aodh services
++ type: string
++ hidden: true
+ CeilometerBackend:
+ default: 'mongodb'
+ description: The ceilometer backend type.
+@@ -113,6 +118,10 @@ parameters:
default: ''
type: string
description: Neutron ID for ctlplane network.
@@ -146,7 +224,7 @@ index a532c2f..1aa87ae 100644
NeutronEnableTunnelling:
type: string
default: "True"
-@@ -227,6 +231,27 @@ parameters:
+@@ -227,6 +236,27 @@ parameters:
default: false
description: Should MongoDb journaling be disabled
type: boolean
@@ -174,7 +252,15 @@ index a532c2f..1aa87ae 100644
PublicVirtualFixedIPs:
default: []
description: >
-@@ -664,6 +689,18 @@ parameters:
+@@ -575,6 +605,7 @@ parameters:
+ default:
+ NeutronTenantNetwork: tenant
+ CeilometerApiNetwork: internal_api
++ AodhApiNetwork: internal_api
+ MongoDbNetwork: internal_api
+ CinderApiNetwork: internal_api
+ CinderIscsiNetwork: storage
+@@ -664,6 +695,18 @@ parameters:
structure as ExtraConfig.
type: json
@@ -193,7 +279,7 @@ index a532c2f..1aa87ae 100644
# Hostname format for each role
# Note %index% is translated into the index of the node, e.g 0/1/2 etc
# and %stackname% is replaced with OS::stack_name in the template below.
-@@ -688,6 +725,10 @@ parameters:
+@@ -688,6 +731,10 @@ parameters:
type: string
description: Format for CephStorage node hostnames
default: '%stackname%-cephstorage-%index%'
@@ -204,7 +290,15 @@ index a532c2f..1aa87ae 100644
# Identifiers to trigger tasks on nodes
UpdateIdentifier:
-@@ -770,6 +811,28 @@ resources:
+@@ -758,6 +805,7 @@ resources:
+ properties:
+ CloudName: {get_param: CloudName}
+ CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
++ AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+ GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+ GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
+@@ -770,6 +818,28 @@ resources:
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
@@ -233,7 +327,15 @@ index a532c2f..1aa87ae 100644
Controller:
type: OS::Heat::ResourceGroup
depends_on: Networks
-@@ -832,6 +895,7 @@ resources:
+@@ -781,6 +851,7 @@ resources:
+ properties:
+ AdminPassword: {get_param: AdminPassword}
+ AdminToken: {get_param: AdminToken}
++ AodhPassword: {get_param: AodhPassword}
+ CeilometerBackend: {get_param: CeilometerBackend}
+ CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
+ CeilometerPassword: {get_param: CeilometerPassword}
+@@ -832,6 +903,7 @@ resources:
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
@@ -241,7 +343,7 @@ index a532c2f..1aa87ae 100644
NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
NeutronPublicInterface: {get_param: NeutronPublicInterface}
NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
-@@ -853,6 +917,11 @@ resources:
+@@ -853,6 +925,11 @@ resources:
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
MongoDbNoJournal: {get_param: MongoDbNoJournal}
@@ -253,7 +355,15 @@ index a532c2f..1aa87ae 100644
PcsdPassword: {get_resource: PcsdPassword}
PublicVirtualInterface: {get_param: PublicVirtualInterface}
RabbitPassword: {get_param: RabbitPassword}
-@@ -948,6 +1017,9 @@ resources:
+@@ -878,6 +955,7 @@ resources:
+ ServiceNetMap: {get_param: ServiceNetMap}
+ EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+ CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
++ AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
+ HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+ GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+@@ -948,6 +1026,9 @@ resources:
NovaPublicIP: {get_attr: [PublicVirtualIP, ip_address]}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
@@ -263,7 +373,7 @@ index a532c2f..1aa87ae 100644
RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
RabbitPassword: {get_param: RabbitPassword}
RabbitUserName: {get_param: RabbitUserName}
-@@ -1068,6 +1140,7 @@ resources:
+@@ -1068,6 +1149,7 @@ resources:
compute_hosts: {get_attr: [Compute, hosts_entry]}
controller_hosts: {get_attr: [Controller, hosts_entry]}
controller_ips: {get_attr: [Controller, ip_address]}
@@ -271,8 +381,34 @@ index a532c2f..1aa87ae 100644
block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
+@@ -1081,6 +1163,7 @@ resources:
+ heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+ swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
+ ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
++ aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
+ glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
+@@ -1189,6 +1272,7 @@ resources:
+ nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
+ ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
++ aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
+ horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
+ redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
+@@ -1434,6 +1518,9 @@ outputs:
+ PublicVip:
+ description: Controller VIP for public API endpoints
+ value: {get_attr: [PublicVirtualIP, ip_address]}
++ AodhInternalVip:
++ description: VIP for Aodh API internal endpoint
++ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ CeilometerInternalVip:
+ description: VIP for Ceilometer API internal endpoint
+ value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml
-index 2bc519b..98283c2 100644
+index 2bc519b..6342df3 100644
--- a/puppet/all-nodes-config.yaml
+++ b/puppet/all-nodes-config.yaml
@@ -8,6 +8,8 @@ parameters:
@@ -284,7 +420,16 @@ index 2bc519b..98283c2 100644
block_storage_hosts:
type: comma_delimited_list
object_storage_hosts:
-@@ -82,6 +84,10 @@ resources:
+@@ -34,6 +36,8 @@ parameters:
+ type: comma_delimited_list
+ ceilometer_api_node_ips:
+ type: comma_delimited_list
++ aodh_api_node_ips:
++ type: comma_delimited_list
+ nova_api_node_ips:
+ type: comma_delimited_list
+ nova_metadata_node_ips:
+@@ -82,6 +86,10 @@ resources:
raw_data: {get_file: hieradata/RedHat.yaml}
all_nodes:
mapped_data:
@@ -295,6 +440,21 @@ index 2bc519b..98283c2 100644
controller_node_ips:
list_join:
- ','
+@@ -166,6 +174,14 @@ resources:
+ list_join:
+ - "','"
+ - {get_param: ceilometer_api_node_ips}
++ aodh_api_node_ips:
++ str_replace:
++ template: "['SERVERS_LIST']"
++ params:
++ SERVERS_LIST:
++ list_join:
++ - "','"
++ - {get_param: aodh_api_node_ips}
+ nova_api_node_ips:
+ str_replace:
+ template: "['SERVERS_LIST']"
diff --git a/puppet/compute.yaml b/puppet/compute.yaml
index 70c7403..13fd4f6 100644
--- a/puppet/compute.yaml
@@ -384,10 +544,25 @@ index 70c7403..13fd4f6 100644
description: Hostname of the server
value: {get_attr: [NovaCompute, name]}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
-index ea0b3af..1d52922 100644
+index ea0b3af..489aa57 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
-@@ -357,6 +357,10 @@ parameters:
+@@ -14,6 +14,14 @@ parameters:
+ description: The keystone auth secret and db password.
+ type: string
+ hidden: true
++ AodhApiVirtualIP:
++ type: string
++ default: ''
++ AodhPassword:
++ default: unset
++ description: The password for the aodh services.
++ type: string
++ hidden: true
+ CeilometerApiVirtualIP:
+ type: string
+ default: ''
+@@ -357,6 +365,10 @@ parameters:
default: 'True'
description: Allow automatic l3-agent failover
type: string
@@ -398,7 +573,7 @@ index ea0b3af..1d52922 100644
NeutronEnableTunnelling:
type: string
default: "True"
-@@ -443,6 +447,31 @@ parameters:
+@@ -443,6 +455,31 @@ parameters:
NtpServer:
type: string
default: ''
@@ -430,7 +605,7 @@ index ea0b3af..1d52922 100644
PcsdPassword:
type: string
description: The password for the 'pcsd' user.
-@@ -696,6 +725,7 @@ resources:
+@@ -696,6 +733,7 @@ resources:
input_values:
bootstack_nodeid: {get_attr: [Controller, name]}
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
@@ -438,7 +613,7 @@ index ea0b3af..1d52922 100644
haproxy_log_address: {get_param: HAProxySyslogAddress}
heat.watch_server_url:
list_join:
-@@ -805,6 +835,12 @@ resources:
+@@ -805,6 +843,12 @@ resources:
template: tripleo-CLUSTER
params:
CLUSTER: {get_param: MysqlClusterUniquePart}
@@ -451,7 +626,36 @@ index ea0b3af..1d52922 100644
neutron_flat_networks: {get_param: NeutronFlatNetworks}
neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
neutron_agent_mode: {get_param: NeutronAgentMode}
-@@ -1136,6 +1172,16 @@ resources:
+@@ -879,6 +923,7 @@ resources:
+ ceilometer_backend: {get_param: CeilometerBackend}
+ ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
+ ceilometer_password: {get_param: CeilometerPassword}
++ aodh_password: {get_param: AodhPassword}
+ ceilometer_coordination_url:
+ list_join:
+ - ''
+@@ -891,6 +936,12 @@ resources:
+ - - 'mysql://ceilometer:unset@'
+ - {get_param: MysqlVirtualIP}
+ - '/ceilometer'
++ ceilometer_public_url: {get_param: [EndpointMap, CeilometerPublic, uri]}
++ ceilometer_internal_url: {get_param: [EndpointMap, CeilometerInternal, uri]}
++ ceilometer_admin_url: {get_param: [EndpointMap, CeilometerAdmin, uri]}
++ aodh_public_url: {get_param: [EndpointMap, AodhPublic, uri]}
++ aodh_internal_url: {get_param: [EndpointMap, AodhInternal, uri]}
++ aodh_admin_url: {get_param: [EndpointMap, AodhAdmin, uri]}
+ snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
+ snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
+ nova_password: {get_param: NovaPassword}
+@@ -948,6 +999,7 @@ resources:
+ neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
+ neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
+ ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
++ aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
+ nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
+ nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
+ horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
+@@ -1136,6 +1188,16 @@ resources:
mysql_bind_host: {get_input: mysql_network}
mysql_virtual_ip: {get_input: mysql_virtual_ip}
@@ -461,14 +665,14 @@ index ea0b3af..1d52922 100644
+ opendaylight_username: {get_input: opendaylight_username}
+ opendaylight_password: {get_input: opendaylight_password}
+ opendaylight_enable_l3: {get_input: opendaylight_enable_l3}
-+
++
+ # ONOS
+ onos_port: {get_input: onos_port}
+
# Neutron
neutron::bind_host: {get_input: neutron_api_network}
neutron::rabbit_password: {get_input: rabbit_password}
-@@ -1152,6 +1198,7 @@ resources:
+@@ -1152,6 +1214,7 @@ resources:
neutron_flat_networks: {get_input: neutron_flat_networks}
neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
@@ -476,6 +680,74 @@ index ea0b3af..1d52922 100644
neutron_agent_mode: {get_input: neutron_agent_mode}
neutron_router_distributed: {get_input: neutron_router_distributed}
neutron::core_plugin: {get_input: neutron_core_plugin}
+@@ -1198,6 +1261,27 @@ resources:
+ snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
+ snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
+
++ # Aodh
++ aodh::rabbit_userid: {get_input: rabbit_username}
++ aodh::rabbit_password: {get_input: rabbit_password}
++ aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
++ aodh::rabbit_port: {get_input: rabbit_client_port}
++ aodh::debug: {get_input: debug}
++ aodh::wsgi::apache::ssl: false
++ aodh::api::service_name: 'httpd'
++ aodh::api::host: {get_input: aodh_api_network}
++ aodh::api::keystone_password: {get_input: aodh_password}
++ aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
++ aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
++ aodh::auth::auth_password: {get_input: aodh_password}
++ aodh::keystone::auth::public_url: {get_input: aodh_public_url }
++ aodh::keystone::auth::internal_url: {get_input: aodh_internal_url }
++ aodh::keystone::auth::admin_url: {get_input: aodh_admin_url }
++ aodh::keystone::auth::password: {get_input: aodh_password }
++ aodh::keystone::auth::region: {get_input: keystone_region}
++ # for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
++ aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
++
+ # Nova
+ nova::rabbit_userid: {get_input: rabbit_username}
+ nova::rabbit_password: {get_input: rabbit_password}
+diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
+index 030f661..5840016 100644
+--- a/puppet/hieradata/common.yaml
++++ b/puppet/hieradata/common.yaml
+@@ -6,6 +6,7 @@ ceilometer::agent::auth::auth_region: 'regionOne'
+ # FIXME: Might be better to use 'service' tenant here but this requires
+ # changes in the tripleo-incubator keystone role setup
+ ceilometer::agent::auth::auth_tenant_name: 'admin'
++aodh::auth::auth_tenant_name: 'admin'
+
+ nova::network::neutron::neutron_admin_tenant_name: 'service'
+ nova::network::neutron::neutron_admin_username: 'neutron'
+diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
+index 4b7fd81..4f1fef6 100644
+--- a/puppet/hieradata/controller.yaml
++++ b/puppet/hieradata/controller.yaml
+@@ -32,6 +32,7 @@ redis::sentinel::notification_script: '/usr/local/bin/redis-notifications.sh'
+ # service tenant
+ nova::api::admin_tenant_name: 'service'
+ glance::api::keystone_tenant: 'service'
++aodh::api::keystone_tenant: 'service'
+ glance::registry::keystone_tenant: 'service'
+ neutron::server::auth_tenant: 'service'
+ neutron::agents::metadata::auth_tenant: 'service'
+@@ -39,6 +40,7 @@ cinder::api::keystone_tenant: 'service'
+ swift::proxy::authtoken::admin_tenant_name: 'service'
+ ceilometer::api::keystone_tenant: 'service'
+ heat::keystone_tenant: 'service'
++aodh::keystone::auth::tenant: 'service'
+
+ # keystone
+ keystone::cron::token_flush::maxdelay: 3600
+@@ -115,6 +117,7 @@ tripleo::loadbalancer::mysql: true
+ tripleo::loadbalancer::redis: true
+ tripleo::loadbalancer::swift_proxy_server: true
+ tripleo::loadbalancer::ceilometer: true
++tripleo::loadbalancer::aodh: true
+ tripleo::loadbalancer::heat_api: true
+ tripleo::loadbalancer::heat_cloudwatch: true
+ tripleo::loadbalancer::heat_cfn: true
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
index cd41cc7..b8336ee 100644
--- a/puppet/manifests/overcloud_compute.pp
@@ -521,7 +793,7 @@ index cd41cc7..b8336ee 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
-index 1f6c2be..7851b45 100644
+index 1f6c2be..474bb1d 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -30,6 +30,21 @@ if hiera('step') >= 1 {
@@ -546,7 +818,17 @@ index 1f6c2be..7851b45 100644
if count(hiera('ntp::servers')) > 0 {
include ::ntp
}
-@@ -223,9 +238,7 @@ if hiera('step') >= 3 {
+@@ -158,6 +173,9 @@ if hiera('step') >= 2 {
+
+ if hiera('step') >= 3 {
+
++ # Apache
++ include ::apache
++
+ include ::keystone
+
+ #TODO: need a cleanup-keystone-tokens.sh solution here
+@@ -223,9 +241,7 @@ if hiera('step') >= 3 {
include ::nova::scheduler
include ::nova::scheduler::filter
@@ -556,7 +838,7 @@ index 1f6c2be..7851b45 100644
include ::neutron::agents::dhcp
include ::neutron::agents::metadata
-@@ -237,15 +250,76 @@ if hiera('step') >= 3 {
+@@ -237,15 +253,77 @@ if hiera('step') >= 3 {
require => Package['neutron'],
}
@@ -587,6 +869,7 @@ index 1f6c2be..7851b45 100644
+ if ! str2bool(hiera('opendaylight_enable_l3', 'no')) {
+ Service['neutron-server'] -> Service['neutron-l3']
+ }
++
+ if str2bool(hiera('opendaylight_install', 'false')) {
+ $controller_ips = split(hiera('controller_node_ips'), ',')
+ $opendaylight_controller_ip = $controller_ips[0]
@@ -636,7 +919,7 @@ index 1f6c2be..7851b45 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::nexus1000v
-@@ -280,8 +354,6 @@ if hiera('step') >= 3 {
+@@ -280,8 +358,6 @@ if hiera('step') >= 3 {
}
Service['neutron-server'] -> Service['neutron-dhcp-service']
@@ -645,8 +928,29 @@ index 1f6c2be..7851b45 100644
Service['neutron-server'] -> Service['neutron-metadata']
include ::cinder
+@@ -447,6 +523,20 @@ if hiera('step') >= 3 {
+
+ Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
+
++ # Aodh
++ include ::aodh::auth
++ include ::aodh::api
++ include ::aodh::evaluator
++ include ::aodh::notifier
++ include ::aodh::listener
++ include ::aodh::client
++ include ::aodh::db::sync
++ class { '::aodh' :
++ database_connection => $ceilometer_database_connection,
++ }
++ # To manage the upgrade:
++ Exec['ceilometer-dbsync'] -> Exec['aodh-db-sync']
++
+ # Heat
+ include ::heat
+ include ::heat::api
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
-index 3fb92f3..9568390 100644
+index 3fb92f3..770fc77 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -380,6 +380,21 @@ if hiera('step') >= 2 {
@@ -667,7 +971,7 @@ index 3fb92f3..9568390 100644
+ controllers_ip => $controller_node_ips
+ }
+ }
-+
++
exec { 'galera-ready' :
command => '/usr/bin/clustercheck >/dev/null',
timeout => 30,
@@ -721,7 +1025,7 @@ index 3fb92f3..9568390 100644
+ } else {
+ $opendaylight_controller_ip = hiera('opendaylight_controller_ip')
+ }
-+
+
+ $opendaylight_port = hiera('opendaylight_port')
+ $private_ip = hiera('neutron::agents::ml2::ovs::local_ip')
+
@@ -731,7 +1035,7 @@ index 3fb92f3..9568390 100644
+ odl_password => hiera('opendaylight_password'),
+ odl_port => hiera('opendaylight_port'),
+ }
-
++
+ if str2bool(hiera('opendaylight_install', 'false')) {
+ class { 'neutron::plugins::ovs::opendaylight':
+ odl_controller_ip => $opendaylight_controller_ip,
@@ -786,13 +1090,42 @@ index 3fb92f3..9568390 100644
}
neutron_dhcp_agent_config {
'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
-@@ -1055,62 +1125,21 @@ if hiera('step') >= 4 {
+@@ -879,6 +949,28 @@ if hiera('step') >= 3 {
+ enabled => false,
+ }
+
++ # Aodh
++ include ::aodh
++ include ::aodh::config
++ include ::aodh::auth
++ include ::aodh::client
++ class { '::aodh::api':
++ manage_service => false,
++ enabled => false,
++ }
++ class { '::aodh::evaluator':
++ manage_service => false,
++ enabled => false,
++ }
++ class { '::aodh::notifier':
++ manage_service => false,
++ enabled => false,
++ }
++ class { '::aodh::listener':
++ manage_service => false,
++ enabled => false,
++ }
++
+ # httpd/apache and horizon
+ # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
+ class { '::apache' :
+@@ -1055,62 +1147,21 @@ if hiera('step') >= 4 {
clone_params => 'interleave=true',
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
- pacemaker::resource::service { $::neutron::params::l3_agent_service:
- clone_params => 'interleave=true',
-+ if !('onos_ml2' in hiera('neutron_mechanism_drivers')) {
++ if !('onos_ml2' in hiera('neutron_mechanism_drivers') or str2bool(hiera('opendaylight_enable_l3', 'no'))) {
+ pacemaker::resource::service { $::neutron::params::l3_agent_service:
+ clone_params => 'interleave=true',
+ }
@@ -853,7 +1186,7 @@ index 3fb92f3..9568390 100644
pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-clone",
-@@ -1120,65 +1149,110 @@ if hiera('step') >= 4 {
+@@ -1120,65 +1171,110 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
Pacemaker::Resource::Service[$::neutron::params::server_service]],
}
@@ -1020,6 +1353,104 @@ index 3fb92f3..9568390 100644
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => 'interleave=true',
+@@ -1276,7 +1372,7 @@ if hiera('step') >= 4 {
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+ }
+
+- # Ceilometer
++ # Ceilometer and Aodh
+ case downcase(hiera('ceilometer_backend')) {
+ /mysql/: {
+ pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
+@@ -1304,6 +1400,21 @@ if hiera('step') >= 4 {
+ pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :
+ clone_params => 'interleave=true',
+ }
++ pacemaker::resource::service { $::aodh::params::notifier_service_name :
++ clone_params => 'interleave=true',
++ }
++ pacemaker::resource::service { $::aodh::params::expirer_package_serice :
++ clone_params => 'interleave=true',
++ }
++ pacemaker::resource::service { $::aodh::params::listener_service_name :
++ clone_params => 'interleave=true',
++ }
++ pacemaker::resource::service { $::aodh::params::api_service_name :
++ clone_params => 'interleave=true',
++ }
++ pacemaker::resource::service { $::aodh::params::evaluator_service_name :
++ clone_params => 'interleave=true',
++ }
+ pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
+ clone_params => 'interleave=true',
+ }
+@@ -1315,8 +1426,10 @@ if hiera('step') >= 4 {
+ # Fedora doesn't know `require-all` parameter for constraints yet
+ if $::operatingsystem == 'Fedora' {
+ $redis_ceilometer_constraint_params = undef
++ $redis_aodh_constraint_params = undef
+ } else {
+ $redis_ceilometer_constraint_params = 'require-all=false'
++ $redis_aodh_constraint_params = 'require-all=false'
+ }
+ pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint':
+ constraint_type => 'order',
+@@ -1328,6 +1441,16 @@ if hiera('step') >= 4 {
+ require => [Pacemaker::Resource::Ocf['redis'],
+ Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]],
+ }
++ pacemaker::constraint::base { 'redis-then-aodh-evaluator-constraint':
++ constraint_type => 'order',
++ first_resource => 'redis-master',
++ second_resource => "${::aodh::params::evaluator_service_name}-clone",
++ first_action => 'promote',
++ second_action => 'start',
++ constraint_params => $redis_aodh_constraint_params,
++ require => [Pacemaker::Resource::Ocf['redis'],
++ Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name]],
++ }
+ pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
+ constraint_type => 'order',
+ first_resource => "${::keystone::params::service_name}-clone",
+@@ -1426,6 +1549,38 @@ if hiera('step') >= 4 {
+ require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name],
+ Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]],
+ }
++ pacemaker::constraint::base { 'aodh-delay-then-aodh-evaluator-constraint':
++ constraint_type => 'order',
++ first_resource => 'delay-clone',
++ second_resource => "${::aodh::params::evaluator_service_name}-clone",
++ first_action => 'start',
++ second_action => 'start',
++ require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
++ Pacemaker::Resource::Ocf['delay']],
++ }
++ pacemaker::constraint::colocation { 'aodh-evaluator-with-aodh-delay-colocation':
++ source => "${::aodh::params::evaluator_service_name}-clone",
++ target => 'delay-clone',
++ score => 'INFINITY',
++ require => [Pacemaker::Resource::Service[$::horizon::params::http_service],
++ Pacemaker::Resource::Ocf['delay']],
++ }
++ pacemaker::constraint::base { 'aodh-evaluator-then-aodh-notifier-constraint':
++ constraint_type => 'order',
++ first_resource => "${::aodh::params::evaluator_service_name}-clone",
++ second_resource => "${::aodh::params::notifier_service_name}-clone",
++ first_action => 'start',
++ second_action => 'start',
++ require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
++ Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
++ }
++ pacemaker::constraint::colocation { 'aodh-notifier-with-aodh-evaluator-colocation':
++ source => "${::aodh::params::notifier_service_name}-clone",
++ target => "${::aodh::params::evaluator_service_name}-clone",
++ score => 'INFINITY',
++ require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
++ Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
++ }
+ if downcase(hiera('ceilometer_backend')) == 'mongodb' {
+ pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':
+ constraint_type => 'order',
diff --git a/puppet/manifests/overcloud_opendaylight.pp b/puppet/manifests/overcloud_opendaylight.pp
new file mode 100644
index 0000000..33f609a
@@ -1277,5 +1708,5 @@ index 0000000..b876dc7
+ - - {get_attr: [OpenDaylightDeployment, deploy_stdout]}
+ - {get_param: UpdateIdentifier}
--
-2.5.0
+2.5.4 (Apple Git-61)