~johnsca/charms/trusty/cloud-controller-v2/trunk

« back to all changes in this revision

Viewing changes to hooks/cloudfoundry/services.py

  • Committer: Cory Johns
  • Date: 2014-09-29 14:29:00 UTC
  • Revision ID: cory.johns@canonical.com-20140929142900-5wtq0e4qo6hqfpta
cloud-controller version 2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import contexts
 
2
import mapper
 
3
import tasks
 
4
import utils
 
5
 
 
6
__all__ = ['SERVICES']
 
7
 
 
8
 
 
9
SERVICES = {
 
10
    'cloud-controller-clock-v1': {
 
11
        'summary': "A shared clock",
 
12
        'description': '',
 
13
        'jobs': [{
 
14
            'job_name': 'cloud_controller_clock',
 
15
            'mapping': {'cc-db': mapper.ccdb},
 
16
            'provided_data': [],
 
17
            'required_data': [contexts.NatsRelation,
 
18
                              contexts.LTCRelation,
 
19
                              contexts.LoggregatorRelation,
 
20
                              contexts.CloudControllerRelation,
 
21
                              contexts.UAARelation,
 
22
                              contexts.CloudControllerDBRelation,
 
23
                              ]
 
24
            }],
 
25
 
 
26
    },
 
27
 
 
28
    'cloud-controller-clock-v2': {
 
29
        'summary': "A shared clock",
 
30
        'description': '',
 
31
        'jobs': [
 
32
            {'job_name': 'cloud_controller_clock',
 
33
             'mapping': {'cc-db': mapper.ccdb},
 
34
             'provided_data': [],
 
35
             'required_data': [contexts.NatsRelation,
 
36
                               contexts.LTCRelation,
 
37
                               contexts.LoggregatorRelation,
 
38
                               contexts.CloudControllerRelation,
 
39
                               contexts.UAARelation,
 
40
                               contexts.CloudControllerDBRelation,
 
41
                               ]},
 
42
            {'job_name': 'metron_agent',
 
43
             'required_data': [contexts.LTCRelation,
 
44
                               contexts.NatsRelation,
 
45
                               contexts.LoggregatorRelation,
 
46
                               contexts.EtcdRelation]},
 
47
            ],
 
48
 
 
49
    },
 
50
 
 
51
    'cloud-controller-v1': {
 
52
        'summary': 'CF Cloud Controller, the brains of the operation',
 
53
        'description': '',
 
54
        'jobs': [{
 
55
            'job_name': 'cloud_controller_ng',
 
56
            'mapping': {'db': mapper.ccdb},
 
57
            'provided_data': [contexts.CloudControllerRelation,
 
58
                              contexts.CloudControllerDBRelation],
 
59
            'required_data': [contexts.NatsRelation,
 
60
                              contexts.MysqlRelation,
 
61
                              contexts.LTCRelation,
 
62
                              contexts.UAARelation,
 
63
                              contexts.CloudControllerRelation.remote_view,
 
64
                              ],
 
65
            'data_ready': [
 
66
                contexts.CloudControllerDBRelation.send_data,
 
67
            ],
 
68
        }]
 
69
    },
 
70
 
 
71
    'cloud-controller-v2': {
 
72
        'summary': 'CF Cloud Controller, the brains of the operation',
 
73
        'description': '',
 
74
        'jobs': [
 
75
            {'job_name': 'cloud_controller_ng',
 
76
             'mapping': {'db': mapper.ccdb},
 
77
             'provided_data': [contexts.CloudControllerRelation,
 
78
                               contexts.CloudControllerDBRelation],
 
79
             'required_data': [contexts.NatsRelation,
 
80
                               contexts.MysqlRelation,
 
81
                               contexts.LTCRelation,
 
82
                               contexts.UAARelation,
 
83
                               contexts.CloudControllerRelation.remote_view,
 
84
                               ],
 
85
             'data_ready': [
 
86
                 contexts.CloudControllerDBRelation.send_data,
 
87
             ]},
 
88
            {'job_name': 'metron_agent',
 
89
             'required_data': [contexts.LTCRelation,
 
90
                               contexts.NatsRelation,
 
91
                               contexts.LoggregatorRelation,
 
92
                               contexts.EtcdRelation]},
 
93
        ]
 
94
    },
 
95
 
 
96
    'cloud-controller-worker-v1': {
 
97
        'summary': "Worker for cc",
 
98
        'description': '',
 
99
        'jobs': [
 
100
            {'job_name': 'cloud_controller_worker',
 
101
             'mapping': {'cc-db': mapper.ccdb},
 
102
             'provided_data': [],
 
103
             'required_data': [contexts.NatsRelation,
 
104
                               contexts.LTCRelation,
 
105
                               contexts.UAARelation,
 
106
                               contexts.CloudControllerRelation,
 
107
                               contexts.CloudControllerDBRelation,
 
108
                               ],
 
109
 
 
110
             }
 
111
            ]
 
112
    },
 
113
 
 
114
    'cloud-controller-worker-v2': {
 
115
        'summary': "Worker for cc",
 
116
        'description': '',
 
117
        'jobs': [
 
118
            {'job_name': 'cloud_controller_worker',
 
119
             'mapping': {'cc-db': mapper.ccdb},
 
120
             'provided_data': [],
 
121
             'required_data': [contexts.NatsRelation,
 
122
                               contexts.LTCRelation,
 
123
                               contexts.UAARelation,
 
124
                               contexts.CloudControllerRelation,
 
125
                               contexts.CloudControllerDBRelation,
 
126
                               ],
 
127
 
 
128
             },
 
129
            {'job_name': 'metron_agent',
 
130
             'required_data': [contexts.LTCRelation,
 
131
                               contexts.NatsRelation,
 
132
                               contexts.LoggregatorRelation,
 
133
                               contexts.EtcdRelation]},
 
134
            ]
 
135
    },
 
136
 
 
137
    'dea-v1': {
 
138
        'summary': 'DEA runs CF apps in containers',
 
139
        'description': '',
 
140
        'jobs': [
 
141
            {
 
142
                'job_name': 'dea_next',
 
143
                'mapping': {},
 
144
                'install': [
 
145
                    utils.install_linux_image_extra,
 
146
                    utils.apt_install(['quota']),
 
147
                    utils.modprobe(['quota_v1', 'quota_v2'])
 
148
                ],
 
149
                'required_data': [
 
150
                    contexts.NatsRelation,
 
151
                    contexts.LTCRelation,
 
152
                    contexts.DEARelation.remote_view,
 
153
                ],
 
154
                'data_ready': [
 
155
                    # Apply our workaround till we
 
156
                    # have a real fix
 
157
                    tasks.patch_dea
 
158
                ]
 
159
            },
 
160
            {
 
161
                'job_name': 'dea_logging_agent',
 
162
                'mapping': {},
 
163
                'required_data': [contexts.NatsRelation,
 
164
                                  contexts.LTCRelation]
 
165
            },
 
166
        ]
 
167
 
 
168
    },
 
169
 
 
170
    'dea-v2': {
 
171
        'summary': 'DEA runs CF apps in containers',
 
172
        'description': '',
 
173
        'jobs': [
 
174
            {
 
175
                'job_name': 'dea_next',
 
176
                'mapping': {},
 
177
                'install': [
 
178
                    utils.install_linux_image_extra,
 
179
                    utils.apt_install(['quota']),
 
180
                    utils.modprobe(['quota_v1', 'quota_v2'])
 
181
                ],
 
182
                'required_data': [
 
183
                    contexts.NatsRelation,
 
184
                    contexts.LTCRelation,
 
185
                    contexts.DEARelation.remote_view,
 
186
                ],
 
187
                'data_ready': [
 
188
                    #tasks.enable_swapaccounting
 
189
                    tasks.patch_dea
 
190
                ]
 
191
            },
 
192
            {
 
193
                'job_name': 'dea_logging_agent',
 
194
                'mapping': {},
 
195
                'required_data': [contexts.NatsRelation,
 
196
                                  contexts.LTCRelation,
 
197
                                  contexts.EtcdRelation]
 
198
            },
 
199
            {'job_name': 'metron_agent',
 
200
             'required_data': [contexts.LTCRelation,
 
201
                               contexts.NatsRelation,
 
202
                               contexts.LoggregatorRelation,
 
203
                               contexts.EtcdRelation]},
 
204
        ]
 
205
 
 
206
    },
 
207
 
 
208
    'nats-v1': {
 
209
        'service': 'nats',
 
210
        'summary': 'NATS message bus for CF',
 
211
        'jobs': [{
 
212
            'job_name': 'nats',
 
213
            'mapping': {},
 
214
            'required_data': [contexts.NatsRelation.remote_view],
 
215
            'provided_data': [contexts.NatsRelation],
 
216
        }],
 
217
    },
 
218
 
 
219
    'nats-stream-forwarder-v1':  {
 
220
        'service': 'nats-stream-forwarder',
 
221
        'summary': 'NATS stream forwarder',
 
222
        'description': '',
 
223
        'jobs': [{
 
224
            'job_name': 'nats_stream_forwarder',
 
225
            'mapping': {},
 
226
            'provided_data': [],
 
227
            'required_data': [contexts.NatsRelation]
 
228
            }]
 
229
    },
 
230
 
 
231
    'router-v1': {
 
232
        'service': 'router',
 
233
        'summary': 'CF Router',
 
234
        'jobs': [{
 
235
            'job_name': 'gorouter',
 
236
            'ports': [contexts.RouterRelation.port],
 
237
            'mapping': {},
 
238
            'provided_data': [contexts.RouterRelation],
 
239
            'required_data': [contexts.NatsRelation,
 
240
                              contexts.LTCRelation,
 
241
                              contexts.LoggregatorRelation,
 
242
                              contexts.RouterRelation.remote_view],
 
243
        }],
 
244
 
 
245
    },
 
246
 
 
247
    'router-v2': {
 
248
        'service': 'router',
 
249
        'summary': 'CF Router',
 
250
        'jobs': [
 
251
            {'job_name': 'gorouter',
 
252
             'ports': [contexts.RouterRelation.port],
 
253
             'mapping': {},
 
254
             'provided_data': [contexts.RouterRelation],
 
255
             'required_data': [contexts.NatsRelation,
 
256
                               contexts.LTCRelation,
 
257
                               contexts.LoggregatorRelation,
 
258
                               contexts.RouterRelation.remote_view]},
 
259
            {'job_name': 'metron_agent',
 
260
             'required_data': [contexts.LTCRelation,
 
261
                               contexts.NatsRelation,
 
262
                               contexts.LoggregatorRelation,
 
263
                               contexts.EtcdRelation]},
 
264
        ],
 
265
 
 
266
    },
 
267
 
 
268
    'uaa-v1': {
 
269
        'service': 'uaa',
 
270
        'summary': 'CF Oauth2 for identity management service',
 
271
        'jobs': [
 
272
            {'job_name': 'uaa',
 
273
             'mapping': {'db': mapper.uaadb},
 
274
             'provided_data': [contexts.UAARelation],
 
275
             'required_data': [contexts.MysqlRelation,
 
276
                               contexts.NatsRelation,
 
277
                               contexts.UAARelation.remote_view]
 
278
             }
 
279
        ]
 
280
    },
 
281
 
 
282
    'login-v1': {
 
283
        'service': 'login',
 
284
        'summary': 'login service',
 
285
        'description': '',
 
286
        'jobs': [{
 
287
            'job_name': 'login',
 
288
            'mapping': {},
 
289
            'provided_data': [],
 
290
            'required_data': [contexts.NatsRelation,
 
291
                              contexts.UAARelation,
 
292
                              contexts.LoginRelation.remote_view]
 
293
            }]
 
294
        },
 
295
 
 
296
    'loggregator-v1': {
 
297
        'service': 'loggregator',
 
298
        'summary': 'loggregating',
 
299
        'description': 'loggregating',
 
300
        'jobs': [{
 
301
            'job_name': 'loggregator',
 
302
            'mapping': {},
 
303
            'provided_data': [contexts.LoggregatorRelation],
 
304
            'required_data': [contexts.NatsRelation,
 
305
                              contexts.EtcdRelation,
 
306
                              contexts.LTCRelation,
 
307
                              contexts.LoggregatorRelation.remote_view]
 
308
            }]
 
309
        },
 
310
 
 
311
    'loggregator-trafficcontroller-v1': {
 
312
        'service': 'loggregator-trafficcontroller',
 
313
        'summary': 'loggregator-trafficcontroller',
 
314
        'description': '',
 
315
        'jobs': [{
 
316
            'job_name': 'loggregator_trafficcontroller',
 
317
            'ports': [contexts.LTCRelation.outgoing_port],
 
318
            'mapping': {},
 
319
            'provided_data': [contexts.LTCRelation],
 
320
            'required_data': [contexts.LoggregatorRelation,
 
321
                              contexts.LTCRelation.remote_view,
 
322
                              contexts.NatsRelation,
 
323
                              contexts.CloudControllerRelation,
 
324
                              contexts.EtcdRelation]
 
325
            }]
 
326
        },
 
327
 
 
328
    'loggregator-trafficcontroller-v2': {
 
329
        'service': 'loggregator-trafficcontroller',
 
330
        'summary': 'loggregator-trafficcontroller',
 
331
        'description': '',
 
332
        'jobs': [
 
333
            {'job_name': 'loggregator_trafficcontroller',
 
334
             'ports': [contexts.LTCRelation.outgoing_port],
 
335
             'mapping': {},
 
336
             'provided_data': [contexts.LTCRelation],
 
337
             'required_data': [contexts.LoggregatorRelation,
 
338
                               contexts.LTCRelation.remote_view,
 
339
                               contexts.NatsRelation,
 
340
                               contexts.CloudControllerRelation,
 
341
                               contexts.EtcdRelation]},
 
342
            ]
 
343
        },
 
344
 
 
345
    'hm9000-v1': {
 
346
        'service': 'hm9000',
 
347
        'summary': 'health monitor',
 
348
        'description': '',
 
349
        'jobs': [{
 
350
            'job_name': 'hm9000',
 
351
            'mapping': {},
 
352
            'provided_data': [],
 
353
            'required_data': [contexts.NatsRelation,
 
354
                              contexts.CloudControllerRelation,
 
355
                              contexts.EtcdRelation]
 
356
            }]
 
357
        },
 
358
 
 
359
    'haproxy-v1': {
 
360
        'service': 'haproxy',
 
361
        'summary': 'loadbalance the routers',
 
362
        'description': '',
 
363
        'jobs': [{
 
364
            'job_name': 'haproxy',
 
365
            'ports': [80],
 
366
            'mapping': {},
 
367
            'provided_data': [],
 
368
            'required_data': [contexts.RouterRelation],
 
369
            }]
 
370
        }
 
371
}