From 0f05ced6a00bb07843a62c5e0382a9f8b3baf823 Mon Sep 17 00:00:00 2001 From: Graham Burgess Date: Thu, 10 Aug 2017 11:45:37 -0700 Subject: [PATCH] Add show-disk-free action to ceph-mon charm Added action show-disk-free that shows the output from ceph osd df tree. This makes it easier to determine how balanced the data is spread over the OSDs. Closes-Bug: #1709950 Change-Id: Idecb0fb5ee48b2a24a8991c64a9feeff1950f67b --- actions.yaml | 17 ++++++++++------- actions/show-disk-free | 1 + actions/show-disk-free.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 7 deletions(-) create mode 120000 actions/show-disk-free create mode 100755 actions/show-disk-free.py diff --git a/actions.yaml b/actions.yaml index 67fe4c88..860ca087 100644 --- a/actions.yaml +++ b/actions.yaml @@ -43,7 +43,7 @@ remove-cache-tier: create-pool: description: Creates a pool params: - name: + name: type: string description: The name of the pool profile-name: @@ -115,7 +115,7 @@ create-erasure-profile: get-erasure-profile: description: Display an erasure code profile. params: - name: + name: type: string description: The name of the profile required: [name] @@ -137,7 +137,7 @@ list-pools: set-pool-max-bytes: description: Set pool quotas for the maximum number of bytes. params: - max: + max: type: integer description: The name of the pool pool-name: @@ -170,10 +170,10 @@ pool-statistics: snapshot-pool: description: Snapshot a pool params: - pool-name: + pool-name: type: string description: The name of the pool - snapshot-name: + snapshot-name: type: string description: The name of the snapshot required: [snapshot-name, pool-name] @@ -181,10 +181,10 @@ snapshot-pool: remove-pool-snapshot: description: Remove a pool snapshot params: - pool-name: + pool-name: type: string description: The name of the pool - snapshot-name: + snapshot-name: type: string description: The name of the snapshot required: [snapshot-name, pool-name] @@ -226,3 +226,6 @@ crushmap-update: description: The json crushmap blob required: [map] additionalProperties: false +show-disk-free: + description: Show disk utilization by host and OSD. + additionalProperties: false diff --git a/actions/show-disk-free b/actions/show-disk-free new file mode 120000 index 00000000..85abbc3c --- /dev/null +++ b/actions/show-disk-free @@ -0,0 +1 @@ +show-disk-free.py \ No newline at end of file diff --git a/actions/show-disk-free.py b/actions/show-disk-free.py new file mode 100755 index 00000000..b21e4afb --- /dev/null +++ b/actions/show-disk-free.py @@ -0,0 +1,32 @@ +#!/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. + +import sys + +sys.path.append('hooks') +from subprocess import check_output, CalledProcessError +from charmhelpers.core.hookenv import log, action_set, action_fail + +if __name__ == '__main__': + try: + out = check_output(['ceph', '--id', 'admin', + 'osd', 'df', 'tree']).decode('UTF-8') + action_set({'message': out}) + except CalledProcessError as e: + log(e) + action_fail( + "ceph osd df tree failed with message: {}".format(e.message) + )