aboutsummaryrefslogtreecommitdiffstats
path: root/network/service_net_map.j2.yaml
blob: b2562c79bd12abfbc4e22b4fe70d8e0372df83d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
heat_template_version: ocata

description: >
  Mapping of service_name_network -> network name

parameters:
  ServiceNetMap:
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
                 Note that the key in this map must match the service_name
                 in the service template, e.g if the service_name is heat_api
                 the key must be either heat_api_network, or optionally
                 HeatApiNetwork (which will be internally converted to
                 transform captalization to underscores).
    default: {}
    type: json

  # Note that the key in this map must match the service_name
  # see the description above about conversion from CamelCase to
  # snake_case - the names must still match when converted
  ServiceNetMapDefaults:
    default:
      # Note the values in this map are replaced by *NetName
      # to allow for sane defaults when the network names are
      # overridden.
      ApacheNetwork: internal_api
      NeutronTenantNetwork: tenant
      CeilometerApiNetwork: internal_api
      AodhApiNetwork: internal_api
      PankoApiNetwork: internal_api
      BarbicanApiNetwork: internal_api
      GnocchiApiNetwork: internal_api
      MongodbNetwork: internal_api
      CinderApiNetwork: internal_api
      CinderIscsiNetwork: storage
      GlanceApiNetwork: storage
      IronicApiNetwork: ctlplane
      IronicNetwork: ctlplane
      KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
      KeystonePublicApiNetwork: internal_api
      ManilaApiNetwork: internal_api
      NeutronApiNetwork: internal_api
      OctaviaApiNetwork: internal_api
      HeatApiNetwork: internal_api
      HeatApiCfnNetwork: internal_api
      HeatApiCloudwatchNetwork: internal_api
      NovaApiNetwork: internal_api
      NovaPlacementNetwork: internal_api
      NovaMetadataNetwork: internal_api
      NovaVncProxyNetwork: internal_api
      NovaLibvirtNetwork: internal_api
      Ec2ApiNetwork: internal_api
      Ec2ApiMetadataNetwork: internal_api
      SwiftStorageNetwork: storage_mgmt
      SwiftProxyNetwork: storage
      SaharaApiNetwork: internal_api
      HorizonNetwork: internal_api
      MemcachedNetwork: internal_api
      RabbitmqNetwork: internal_api
      RedisNetwork: internal_api
      MysqlNetwork: internal_api
      CephClusterNetwork: storage_mgmt
      CephMonNetwork: storage
      CephRgwNetwork: storage
      PublicNetwork: external
      OpendaylightApiNetwork: internal_api
      OvnDbsNetwork: internal_api
      MistralApiNetwork: internal_api
      ZaqarApiNetwork: internal_api
      PacemakerRemoteNetwork: internal_api
      # We special-case the default ResolveNetwork for the CephStorage role
      # for backwards compatibility, all other roles default to internal_api
      CephStorageHostnameResolveNetwork: storage
      EtcdNetwork: internal_api
{% for role in roles if role.name != 'CephStorage' %}
      {{role.name}}HostnameResolveNetwork: internal_api
{% endfor %}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.
    type: json

  # We define mappings to work around names that break when doing the
  # CamelCase to snake_case conversion to align with service_names
  ServiceNetMapDeprecatedMapping:
    default:
      MongoDbNetwork: MongodbNetwork
      RabbitMqNetwork: RabbitmqNetwork
      CephPublicNetwork: CephMonNetwork
      SwiftMgmtNetwork: SwiftStorageNetwork
    description: Mapping older deprecated service names, intended for
                 internal use only, this will be removed in future.
    type: json

  InternalApiNetName:
    default: internal_api
    description: The name of the internal API network.
    type: string
  ExternalNetName:
    default: external
    description: The name of the external network.
    type: string
  ManagementNetName:
    default: management
    description: The name of the management network.
    type: string
  StorageNetName:
    default: storage
    description: The name of the storage network.
    type: string
  StorageMgmtNetName:
    default: storage_mgmt
    description: The name of the Storage management network.
    type: string
  TenantNetName:
    default: tenant
    description: The name of the tenant network.
    type: string


parameter_groups:
- label: deprecated
  description: Do not use deprecated params, they will be removed.
  parameters:
  - ServiceNetMapDeprecatedMapping

resources:
  ServiceNetMapValue:
    type: OS::Heat::Value
    properties:
      type: json
      value:
        map_merge:
          - map_replace:
             - {get_param: ServiceNetMapDefaults}
             - values:
                 external: {get_param: ExternalNetName}
                 internal_api: {get_param: InternalApiNetName}
                 storage: {get_param: StorageNetName}
                 storage_mgmt: {get_param: StorageMgmtNetName}
                 tenant: {get_param: TenantNetName}
                 management: {get_param: ManagementNetName}
          - map_replace:
             - {get_param: ServiceNetMap}
             - keys: {get_param: ServiceNetMapDeprecatedMapping}


outputs:
  service_net_map:
    value: {get_attr: [ServiceNetMapValue, value]}

  service_net_map_lower:
    value:
      # This does a conversion from CamelCase to snake_case,
      # e.g HeatApiNetwork becomes heat_api_network so it
      # matches the service names.
      yaql:
        expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]]))
        data:
          map: {get_attr: [ServiceNetMapValue, value]}