summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)