charm-ceph-mon/actions/create_cache_tier.py
James Page 203947623f action: Misc tidyup and improvements
General tidy of actions codebase including sorting out
some minor bugs.

Added new copy-pool action.

Added support for CRUSH device classes when creating
erasure coding profiles.

Removed need for use of rados python module by switching
to using the ceph command line tool for all operations.

Add new action for creation of new CRUSH rules using
device classes.

Resync charms.ceph to support switching the crush_rule
key on a pool.

Resync charmhelpers for support for device classing.

Rename all action py files to by standards compliant.

Change-Id: I1f7d95b1637f2064bd11a5d5336764b2946428ac
Depends-On: I2c405f9a4956ff1ccf1edb7372a9bb11e1e591a4
2019-02-19 14:54:41 +00:00

56 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python3
#
# 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.
from subprocess import CalledProcessError
import sys
sys.path.append('hooks')
from charmhelpers.contrib.storage.linux.ceph import Pool, pool_exists
from charmhelpers.core.hookenv import action_get, log, action_fail
def make_cache_tier():
backer_pool = action_get("backer-pool")
cache_pool = action_get("cache-pool")
cache_mode = action_get("cache-mode")
# Pre flight checks
if not pool_exists('admin', backer_pool):
log("Please create {} pool before calling create-cache-tier".format(
backer_pool))
action_fail("create-cache-tier failed. Backer pool {} must exist "
"before calling this".format(backer_pool))
if not pool_exists('admin', cache_pool):
log("Please create {} pool before calling create-cache-tier".format(
cache_pool))
action_fail("create-cache-tier failed. Cache pool {} must exist "
"before calling this".format(cache_pool))
pool = Pool(service='admin', name=backer_pool)
try:
pool.add_cache_tier(cache_pool=cache_pool, mode=cache_mode)
except CalledProcessError as err:
log("Add cache tier failed with message: {}"
.format(str(err)))
action_fail("create-cache-tier failed. Add cache tier failed with "
"message: {}".format(str(err)))
if __name__ == '__main__':
make_cache_tier()