Add action to list unmounted disks
This action is fairly simple in that it returns a list of unmounted disks This also includes a git-sync to pull in charms.ceph changes. Change-Id: Idb6eabd565b0a9951bb0b212b81a57497ada56f1 Closes-Bug: 1645481
This commit is contained in:
parent
9d5dbca3b0
commit
39ffd26452
|
@ -203,3 +203,5 @@ pool-get:
|
|||
required: [key, pool-name]
|
||||
additionalProperties: false
|
||||
|
||||
list-disks:
|
||||
description: List the unmounted disk on the specified unit
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
list_disks.py
|
|
@ -0,0 +1,50 @@
|
|||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright 2016 Canonical Ltd
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""
|
||||
List unmounted devices.
|
||||
|
||||
This script will get all block devices known by udev and check if they
|
||||
are mounted so that we can give unmounted devices to the administrator.
|
||||
"""
|
||||
|
||||
import pyudev
|
||||
import sys
|
||||
|
||||
|
||||
sys.path.append('hooks/')
|
||||
|
||||
from charmhelpers.contrib.storage.linux.utils import is_device_mounted
|
||||
from charmhelpers.core.hookenv import log, action_set
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
disks = []
|
||||
context = pyudev.Context()
|
||||
for device in context.list_devices(DEVTYPE='disk'):
|
||||
if device['SUBSYSTEM'] == 'block':
|
||||
matched = False
|
||||
for block_type in [u'dm', u'loop', u'ram', u'nbd']:
|
||||
if block_type in device.device_node:
|
||||
matched = True
|
||||
if matched:
|
||||
continue
|
||||
disks.append(device.device_node)
|
||||
log("Found disks: {}".format(disks))
|
||||
unmounted_disks = [disk for disk in disks if not is_device_mounted(disk)]
|
||||
|
||||
action_set({
|
||||
'disks': unmounted_disks})
|
|
@ -2,7 +2,7 @@
|
|||
# Wrapper to deal with newer Ubuntu versions that don't have py2 installed
|
||||
# by default.
|
||||
|
||||
declare -a DEPS=('apt' 'netaddr' 'netifaces' 'pip' 'yaml' 'dnspython')
|
||||
declare -a DEPS=('apt' 'netaddr' 'netifaces' 'pip' 'yaml')
|
||||
|
||||
check_and_install() {
|
||||
pkg="${1}-${2}"
|
||||
|
|
|
@ -381,8 +381,8 @@ def handle_put_osd_in_bucket(request, service):
|
|||
'osd',
|
||||
'crush',
|
||||
'set',
|
||||
osd_id,
|
||||
get_osd_weight(osd_id),
|
||||
str(osd_id),
|
||||
str(get_osd_weight(osd_id)),
|
||||
"root={}".format(target_bucket)
|
||||
]
|
||||
)
|
||||
|
|
|
@ -194,7 +194,7 @@ class Crushmap(object):
|
|||
raise "Failed to read Crushmap"
|
||||
|
||||
def ensure_bucket_is_present(self, bucket_name):
|
||||
if bucket_name not in [bucket.name() for bucket in self.buckets()]:
|
||||
if bucket_name not in [bucket.name for bucket in self.buckets()]:
|
||||
self.add_bucket(bucket_name)
|
||||
self.save()
|
||||
|
||||
|
|
Loading…
Reference in New Issue