resource_registry:

  OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
  OS::TripleO::PostDeploySteps: puppet/post.yaml
  OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
  OS::TripleO::Hosts::SoftwareConfig: hosts-config.yaml
  OS::TripleO::DefaultPasswords: default_passwords.yaml

  # Tasks (for internal TripleO usage)
  OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None
  OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml

{% for role in roles %}
  OS::TripleO::{{role.name}}: puppet/{{role.name.lower()}}-role.yaml
  OS::TripleO::{{role.name}}Config: puppet/{{role.name.lower()}}-config.yaml
  OS::TripleO::Tasks::{{role.name}}PreConfig: OS::Heat::None
  OS::TripleO::Tasks::{{role.name}}PostConfig: OS::Heat::None
  OS::TripleO::{{role.name}}ExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
  # Port assignments for the {{role.name}} role
  # Note we have to special-case ObjectStorage for backwards compatibility
  {% if role.name != 'ObjectStorage' %}
  OS::TripleO::{{role.name}}::Ports::ExternalPort: network/ports/noop.yaml
  OS::TripleO::{{role.name}}::Ports::InternalApiPort: network/ports/noop.yaml
  OS::TripleO::{{role.name}}::Ports::StoragePort: network/ports/noop.yaml
  OS::TripleO::{{role.name}}::Ports::StorageMgmtPort: network/ports/noop.yaml
  OS::TripleO::{{role.name}}::Ports::TenantPort: network/ports/noop.yaml
  OS::TripleO::{{role.name}}::Ports::ManagementPort: network/ports/noop.yaml
  {% else %}
  OS::TripleO::SwiftStorage::Ports::ExternalPort: network/ports/noop.yaml
  OS::TripleO::SwiftStorage::Ports::InternalApiPort: network/ports/noop.yaml
  OS::TripleO::SwiftStorage::Ports::StoragePort: network/ports/noop.yaml
  OS::TripleO::SwiftStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
  OS::TripleO::SwiftStorage::Ports::TenantPort: network/ports/noop.yaml
  OS::TripleO::SwiftStorage::Ports::ManagementPort: network/ports/noop.yaml
  {% endif %}
  OS::TripleO::{{role.name}}::Net::SoftwareConfig: net-config-noop.yaml
{% endfor %}

  # This resource registry entry will override the one generated by default
  # in the jinja loop
  OS::TripleO::Controller::Net::SoftwareConfig: net-config-bridge.yaml

  OS::TripleO::Server: OS::Nova::Server

  # This creates the "heat-admin" user for all OS images by default
  # To disable, replace with firstboot/userdata_default.yaml
  OS::TripleO::NodeAdminUserData: firstboot/userdata_heat_admin.yaml

  # Hooks for operator extra config
  # NodeUserData == Cloud-init additional user-data, e.g cloud-config
  # ControllerExtraConfigPre == Controller configuration pre service deployment
  # NodeExtraConfig == All nodes configuration pre service deployment
  # NodeExtraConfigPost == All nodes configuration post service deployment
  OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
  OS::TripleO::NodeTLSCAData: OS::Heat::None
  OS::TripleO::NodeTLSData: OS::Heat::None
  OS::TripleO::NodeExtraConfig: puppet/extraconfig/pre_deploy/default.yaml
  OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml

  OS::TripleO::Tasks::ControllerPrePuppet: OS::Heat::None
  OS::TripleO::Tasks::ControllerPostPuppet: OS::Heat::None

  # "AllNodes" Extra cluster config, runs on all nodes prior to the post_deploy
  # phase, e.g when puppet is applied, but after the pre_deploy phase.  Useful when
  # configuration with knowledge of all nodes in the cluster is required vs single
  # node configuration in the pre_deploy step.
  # See extraconfig/all_nodes/* for examples
  OS::TripleO::AllNodesExtraConfig: OS::Heat::None

  # TripleO overcloud networks
  OS::TripleO::Network: network/networks.yaml

  OS::TripleO::Network::External: OS::Heat::None
  OS::TripleO::Network::InternalApi: OS::Heat::None
  OS::TripleO::Network::StorageMgmt: OS::Heat::None
  OS::TripleO::Network::Storage: OS::Heat::None
  OS::TripleO::Network::Tenant: OS::Heat::None
  OS::TripleO::Network::Management: OS::Heat::None

  OS::TripleO::Network::ExtraConfig: OS::Heat::None

  OS::TripleO::Network::Ports::NetVipMap: network/ports/net_ip_map.yaml
  OS::TripleO::Network::Ports::NetIpMap: network/ports/net_ip_map.yaml
  OS::TripleO::Network::Ports::NetIpListMap: network/ports/net_ip_list_map.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::ExternalVipPort: network/ports/noop.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: network/ports/noop.yaml
  OS::TripleO::Network::Ports::StorageVipPort: network/ports/noop.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: network/ports/noop.yaml
  OS::TripleO::Network::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml

  # Service to network Mappings
  OS::TripleO::ServiceNetMap: network/service_net_map.yaml

  # Service Endpoint Mappings
  OS::TripleO::EndpointMap: network/endpoints/endpoint_map.yaml

  # validation resources
  OS::TripleO::AllNodes::Validation: all-nodes-validation.yaml

  # services
  OS::TripleO::Services: puppet/services/services.yaml
  OS::TripleO::Services::Apache: puppet/services/apache.yaml
  OS::TripleO::Services::ApacheTLS: OS::Heat::None
  OS::TripleO::Services::CACerts: puppet/services/ca-certs.yaml
  OS::TripleO::Services::CephMon: OS::Heat::None
  OS::TripleO::Services::CephRgw: OS::Heat::None
  OS::TripleO::Services::CephOSD: OS::Heat::None
  OS::TripleO::Services::CephClient: OS::Heat::None
  OS::TripleO::Services::CephExternal: OS::Heat::None
  OS::TripleO::Services::CinderApi: puppet/services/cinder-api.yaml
  OS::TripleO::Services::CinderBackup: OS::Heat::None
  OS::TripleO::Services::CinderScheduler: puppet/services/cinder-scheduler.yaml
  OS::TripleO::Services::CinderVolume: puppet/services/cinder-volume.yaml
  OS::TripleO::Services::BlockStorageCinderVolume: puppet/services/cinder-volume.yaml
  OS::TripleO::Services::Core: OS::Heat::None
  OS::TripleO::Services::Keystone: puppet/services/keystone.yaml
  OS::TripleO::Services::GlanceApi: puppet/services/glance-api.yaml
  OS::TripleO::Services::GlanceRegistry: puppet/services/glance-registry.yaml
  OS::TripleO::Services::HeatApi: puppet/services/heat-api.yaml
  OS::TripleO::Services::HeatApiCfn: puppet/services/heat-api-cfn.yaml
  OS::TripleO::Services::HeatApiCloudwatch: puppet/services/heat-api-cloudwatch.yaml
  OS::TripleO::Services::HeatEngine: puppet/services/heat-engine.yaml
  OS::TripleO::Services::Kernel: puppet/services/kernel.yaml
  OS::TripleO::Services::MySQL: puppet/services/database/mysql.yaml
  OS::TripleO::Services::NeutronDhcpAgent: puppet/services/neutron-dhcp.yaml
  OS::TripleO::Services::NeutronL3Agent: puppet/services/neutron-l3.yaml
  OS::TripleO::Services::NeutronMetadataAgent: puppet/services/neutron-metadata.yaml
  # FIXME(shardy) the duplicate NeutronServer line can be removed when we've updated
  # the multinode job ControllerServices after this patch merges
  OS::TripleO::Services::NeutronServer: puppet/services/neutron-api.yaml
  OS::TripleO::Services::NeutronApi: puppet/services/neutron-api.yaml
  OS::TripleO::Services::NeutronCorePlugin: puppet/services/neutron-plugin-ml2.yaml
  # can be the same as NeutronCorePlugin but some vendors install different
  # things where VMs run
  OS::TripleO::Services::ComputeNeutronCorePlugin: puppet/services/neutron-plugin-ml2.yaml
  # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin)
  OS::TripleO::Services::NeutronCorePluginML2OVN: puppet/services/neutron-plugin-ml2-ovn.yaml
  OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml
  OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
  OS::TripleO::Services::NeutronCorePluginOpencontrail: puppet/services/neutron-plugin-opencontrail.yaml
  OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml
  OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
  OS::TripleO::Services::ComputeNeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
  OS::TripleO::Services::Pacemaker: OS::Heat::None
  OS::TripleO::Services::NeutronSriovAgent: OS::Heat::None
  OS::TripleO::Services::RabbitMQ: puppet/services/rabbitmq.yaml
  OS::TripleO::Services::HAproxy: puppet/services/haproxy.yaml
  OS::TripleO::Services::HAProxyPublicTLS: OS::Heat::None
  OS::TripleO::Services::HAProxyInternalTLS: OS::Heat::None
  OS::TripleO::Services::Keepalived: puppet/services/keepalived.yaml
  OS::TripleO::Services::Memcached: puppet/services/memcached.yaml
  OS::TripleO::Services::SaharaApi: OS::Heat::None
  OS::TripleO::Services::SaharaEngine: OS::Heat::None
  OS::TripleO::Services::Redis: puppet/services/database/redis.yaml
  OS::TripleO::Services::NovaConductor: puppet/services/nova-conductor.yaml
  OS::TripleO::Services::MongoDb: puppet/services/database/mongodb.yaml
  OS::TripleO::Services::NovaApi: puppet/services/nova-api.yaml
  OS::TripleO::Services::NovaMetadata: puppet/services/nova-metadata.yaml
  OS::TripleO::Services::NovaScheduler: puppet/services/nova-scheduler.yaml
  OS::TripleO::Services::NovaConsoleauth: puppet/services/nova-consoleauth.yaml
  OS::TripleO::Services::NovaVncProxy: puppet/services/nova-vnc-proxy.yaml
  OS::TripleO::Services::NovaCompute: puppet/services/nova-compute.yaml
  OS::TripleO::Services::NovaLibvirt: puppet/services/nova-libvirt.yaml
  OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml
  OS::TripleO::Services::SwiftProxy: puppet/services/swift-proxy.yaml
  OS::TripleO::Services::SwiftStorage: puppet/services/swift-storage.yaml
  OS::TripleO::Services::SwiftRingBuilder: puppet/services/swift-ringbuilder.yaml
  OS::TripleO::Services::Snmp: puppet/services/snmp.yaml
  OS::TripleO::Services::Timezone: puppet/services/time/timezone.yaml
  OS::TripleO::Services::CeilometerApi: puppet/services/ceilometer-api.yaml
  OS::TripleO::Services::CeilometerCollector: puppet/services/ceilometer-collector.yaml
  OS::TripleO::Services::CeilometerExpirer: puppet/services/ceilometer-expirer.yaml
  OS::TripleO::Services::CeilometerAgentCentral: puppet/services/ceilometer-agent-central.yaml
  OS::TripleO::Services::CeilometerAgentNotification: puppet/services/ceilometer-agent-notification.yaml
  OS::TripleO::Services::ComputeCeilometerAgent: puppet/services/ceilometer-agent-compute.yaml
  OS::TripleO::Services::Horizon: puppet/services/horizon.yaml
  #Gnocchi services
  OS::TripleO::Services::GnocchiApi: puppet/services/gnocchi-api.yaml
  OS::TripleO::Services::GnocchiMetricd: puppet/services/gnocchi-metricd.yaml
  OS::TripleO::Services::GnocchiStatsd: puppet/services/gnocchi-statsd.yaml
  OS::TripleO::Services::VipHosts: puppet/services/vip-hosts.yaml
  # Services that are disabled by default (use relevant environment files):
  OS::TripleO::Services::FluentdClient: OS::Heat::None
  OS::TripleO::LoggingConfiguration: puppet/services/logging/fluentd-config.yaml
  OS::TripleO::Services::ManilaApi: OS::Heat::None
  OS::TripleO::Services::ManilaScheduler: OS::Heat::None
  OS::TripleO::Services::ManilaShare: OS::Heat::None
  OS::TripleO::Services::ManilaBackendGeneric: OS::Heat::None
  OS::TripleO::Services::ManilaBackendNetapp: OS::Heat::None
  OS::TripleO::Services::ManilaBackendCephFs: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronL3Agent: OS::Heat::None
  OS::TripleO::Services::ComputeNeutronMetadataAgent: OS::Heat::None
  OS::TripleO::Services::BarbicanApi: OS::Heat::None
  OS::TripleO::Services::AodhApi: puppet/services/aodh-api.yaml
  OS::TripleO::Services::AodhEvaluator: puppet/services/aodh-evaluator.yaml
  OS::TripleO::Services::AodhNotifier: puppet/services/aodh-notifier.yaml
  OS::TripleO::Services::AodhListener: puppet/services/aodh-listener.yaml
  OS::TripleO::Services::MistralEngine: OS::Heat::None
  OS::TripleO::Services::MistralApi: OS::Heat::None
  OS::TripleO::Services::MistralExecutor: OS::Heat::None
  OS::TripleO::Services::IronicApi: OS::Heat::None
  OS::TripleO::Services::IronicConductor: OS::Heat::None
  OS::TripleO::Services::NovaIronic: OS::Heat::None
  OS::TripleO::Services::TripleoPackages: puppet/services/tripleo-packages.yaml
  OS::TripleO::Services::TripleoFirewall: puppet/services/tripleo-firewall.yaml
  OS::TripleO::Services::OpenDaylightApi: OS::Heat::None
  OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None
  OS::TripleO::Services::SensuClient: OS::Heat::None
  OS::TripleO::Services::ContrailAnalytics: puppet/services/network/contrail-analytics.yaml
  OS::TripleO::Services::ContrailConfig: puppet/services/network/contrail-config.yaml
  OS::TripleO::Services::ContrailControl: puppet/services/network/contrail-control.yaml
  OS::TripleO::Services::ContrailDatabase: puppet/services/network/contrail-database.yaml
  OS::TripleO::Services::ContrailWebui: puppet/services/network/contrail-webui.yaml

parameter_defaults:
  EnablePackageInstall: false
  SoftwareConfigTransport: POLL_TEMP_URL

{% for role in roles %}
  # Parameters generated for {{role.name}} Role
  {{role.name}}Services: {{role.ServicesDefault|default([])}}
{% endfor %}
