~gandelman-a/charms/precise/glance/is_relation_made_fix

« back to all changes in this revision

Viewing changes to hooks/charmhelpers/contrib/storage/linux/ceph.py

  • Committer: Adam Gandelman
  • Date: 2013-11-06 04:29:05 UTC
  • mfrom: (37.2.6 glance-ceilometer)
  • Revision ID: adamg@canonical.com-20131106042905-kts4w1l4js2ocv30
[jamespage] Add support for rabbitmq use for ceilometer notifications

Show diffs side-by-side

added added

removed removed

Lines of Context:
102
102
    Return a list of all Ceph Object Storage Daemons
103
103
    currently in the cluster
104
104
    '''
105
 
    return json.loads(check_output(['ceph', '--id', service,
106
 
                                    'osd', 'ls', '--format=json']))
 
105
    version = ceph_version()
 
106
    if version and version >= '0.56':
 
107
        return json.loads(check_output(['ceph', '--id', service,
 
108
                                        'osd', 'ls', '--format=json']))
 
109
    else:
 
110
        return None
107
111
 
108
112
 
109
113
def create_pool(service, name, replicas=2):
114
118
        return
115
119
    # Calculate the number of placement groups based
116
120
    # on upstream recommended best practices.
117
 
    pgnum = (len(get_osds(service)) * 100 / replicas)
 
121
    osds = get_osds(service)
 
122
    if osds:
 
123
        pgnum = (len(osds) * 100 / replicas)
 
124
    else:
 
125
        # NOTE(james-page): Default to 200 for older ceph versions
 
126
        # which don't support OSD query from cli
 
127
        pgnum = 200
118
128
    cmd = [
119
129
        'ceph', '--id', service,
120
130
        'osd', 'pool', 'create',
357
367
    if user and group:
358
368
        check_call(['chown', '%s.%s' % (user, group), keyring])
359
369
    return True
 
370
 
 
371
 
 
372
def ceph_version():
 
373
    ''' Retrieve the local version of ceph '''
 
374
    if os.path.exists('/usr/bin/ceph'):
 
375
        cmd = ['ceph', '-v']
 
376
        output = check_output(cmd)
 
377
        output = output.split()
 
378
        if len(output) > 3:
 
379
            return output[2]
 
380
        else:
 
381
            return None
 
382
    else:
 
383
        return None