~arosales/charms/trusty/openstack-dashboard/add-default-fix-lint-nosetests

« back to all changes in this revision

Viewing changes to hooks/charmhelpers/contrib/openstack/neutron.py

  • Committer: James Page
  • Date: 2014-04-16 08:27:47 UTC
  • mfrom: (22.1.12 openstack-dashboard)
  • Revision ID: james.page@canonical.com-20140416082747-0szhciwyz0l1in29
[james-page,r=james-page,t=*]

Support for Icehouse on 12.04 and 14.04
Support for SSL endpoints

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
    kver = check_output(['uname', '-r']).strip()
18
18
    return 'linux-headers-%s' % kver
19
19
 
 
20
QUANTUM_CONF_DIR = '/etc/quantum'
 
21
 
 
22
 
 
23
def kernel_version():
 
24
    """ Retrieve the current major kernel version as a tuple e.g. (3, 13) """
 
25
    kver = check_output(['uname', '-r']).strip()
 
26
    kver = kver.split('.')
 
27
    return (int(kver[0]), int(kver[1]))
 
28
 
 
29
 
 
30
def determine_dkms_package():
 
31
    """ Determine which DKMS package should be used based on kernel version """
 
32
    # NOTE: 3.13 kernels have support for GRE and VXLAN native
 
33
    if kernel_version() >= (3, 13):
 
34
        return []
 
35
    else:
 
36
        return ['openvswitch-datapath-dkms']
 
37
 
20
38
 
21
39
# legacy
 
40
 
 
41
 
22
42
def quantum_plugins():
23
43
    from charmhelpers.contrib.openstack import context
24
44
    return {
30
50
            'contexts': [
31
51
                context.SharedDBContext(user=config('neutron-database-user'),
32
52
                                        database=config('neutron-database'),
33
 
                                        relation_prefix='neutron')],
 
53
                                        relation_prefix='neutron',
 
54
                                        ssl_dir=QUANTUM_CONF_DIR)],
34
55
            'services': ['quantum-plugin-openvswitch-agent'],
35
 
            'packages': [[headers_package(), 'openvswitch-datapath-dkms'],
 
56
            'packages': [[headers_package()] + determine_dkms_package(),
36
57
                         ['quantum-plugin-openvswitch-agent']],
37
58
            'server_packages': ['quantum-server',
38
59
                                'quantum-plugin-openvswitch'],
45
66
            'contexts': [
46
67
                context.SharedDBContext(user=config('neutron-database-user'),
47
68
                                        database=config('neutron-database'),
48
 
                                        relation_prefix='neutron')],
 
69
                                        relation_prefix='neutron',
 
70
                                        ssl_dir=QUANTUM_CONF_DIR)],
49
71
            'services': [],
50
72
            'packages': [],
51
73
            'server_packages': ['quantum-server',
54
76
        }
55
77
    }
56
78
 
 
79
NEUTRON_CONF_DIR = '/etc/neutron'
 
80
 
57
81
 
58
82
def neutron_plugins():
59
83
    from charmhelpers.contrib.openstack import context
60
 
    return {
 
84
    release = os_release('nova-common')
 
85
    plugins = {
61
86
        'ovs': {
62
87
            'config': '/etc/neutron/plugins/openvswitch/'
63
88
                      'ovs_neutron_plugin.ini',
66
91
            'contexts': [
67
92
                context.SharedDBContext(user=config('neutron-database-user'),
68
93
                                        database=config('neutron-database'),
69
 
                                        relation_prefix='neutron')],
 
94
                                        relation_prefix='neutron',
 
95
                                        ssl_dir=NEUTRON_CONF_DIR)],
70
96
            'services': ['neutron-plugin-openvswitch-agent'],
71
 
            'packages': [[headers_package(), 'openvswitch-datapath-dkms'],
72
 
                         ['quantum-plugin-openvswitch-agent']],
 
97
            'packages': [[headers_package()] + determine_dkms_package(),
 
98
                         ['neutron-plugin-openvswitch-agent']],
73
99
            'server_packages': ['neutron-server',
74
100
                                'neutron-plugin-openvswitch'],
75
101
            'server_services': ['neutron-server']
81
107
            'contexts': [
82
108
                context.SharedDBContext(user=config('neutron-database-user'),
83
109
                                        database=config('neutron-database'),
84
 
                                        relation_prefix='neutron')],
 
110
                                        relation_prefix='neutron',
 
111
                                        ssl_dir=NEUTRON_CONF_DIR)],
85
112
            'services': [],
86
113
            'packages': [],
87
114
            'server_packages': ['neutron-server',
89
116
            'server_services': ['neutron-server']
90
117
        }
91
118
    }
 
119
    # NOTE: patch in ml2 plugin for icehouse onwards
 
120
    if release >= 'icehouse':
 
121
        plugins['ovs']['config'] = '/etc/neutron/plugins/ml2/ml2_conf.ini'
 
122
        plugins['ovs']['driver'] = 'neutron.plugins.ml2.plugin.Ml2Plugin'
 
123
        plugins['ovs']['server_packages'] = ['neutron-server',
 
124
                                             'neutron-plugin-ml2']
 
125
    return plugins
92
126
 
93
127
 
94
128
def neutron_plugin_attribute(plugin, attr, net_manager=None):