312cd3321a
Add support for ZFS (on Linux) filesystem. Following features are supported: - Create/delete share - Create/delete snapshot - Create share from snapshot - Extend/shrink share - Update NFS IP-based access rules using new interface. (SMB support planned for future). - create/delete/update/promote share replica ZFS-related notes: - Any amount of ZFS zpools can be used by share driver. - Allowed to configure default options for ZFS datasets that are used for share creation. - Any amount of nested datasets is allowed to be used. - All share replicas are read-only. - All share replicas are synched periodically, not continuously. So, status 'in_sync' means latest sync was successful. Time range between syncs equals to value of config global opt 'replica_state_update_interval'. Driver-related notes: - Able to use remote ZFSonLinux storage as well as local. Other made changes: - updated driver private data DB methods removing filtering by host as redundant operation. Replication requires some common metadata storage and filtering by host breaks it. It is safe to do so, because if driver gets some ID of entity then it is allowed to read its info too. Implements bp zfsonlinux-driver DocImpact Change-Id: I3ddd3767184e4843037de0ac75ff18dce709b6dc
59 lines
2.4 KiB
Python
59 lines
2.4 KiB
Python
# Copyright 2010 United States Government as represented by the
|
|
# Administrator of the National Aeronautics and Space Administration.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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 os
|
|
|
|
from oslo_policy import opts
|
|
|
|
from manila.common import config
|
|
|
|
CONF = config.CONF
|
|
|
|
|
|
def set_defaults(conf):
|
|
_safe_set_of_opts(conf, 'verbose', True)
|
|
_safe_set_of_opts(conf, 'state_path', os.path.abspath(
|
|
os.path.join(os.path.dirname(__file__),
|
|
'..',
|
|
'..')))
|
|
_safe_set_of_opts(conf, 'connection', "sqlite://", group='database')
|
|
_safe_set_of_opts(conf, 'sqlite_synchronous', False)
|
|
_POLICY_PATH = os.path.abspath(os.path.join(CONF.state_path,
|
|
'manila/tests/policy.json'))
|
|
opts.set_defaults(conf, policy_file=_POLICY_PATH)
|
|
_safe_set_of_opts(conf, 'share_export_ip', '0.0.0.0')
|
|
_safe_set_of_opts(conf, 'service_instance_user', 'fake_user')
|
|
_API_PASTE_PATH = os.path.abspath(os.path.join(CONF.state_path,
|
|
'etc/manila/api-paste.ini'))
|
|
_safe_set_of_opts(conf, 'api_paste_config', _API_PASTE_PATH)
|
|
_safe_set_of_opts(conf, 'share_driver',
|
|
'manila.tests.fake_driver.FakeShareDriver')
|
|
_safe_set_of_opts(conf, 'auth_strategy', 'noauth')
|
|
|
|
_safe_set_of_opts(conf, 'zfs_share_export_ip', '1.1.1.1')
|
|
_safe_set_of_opts(conf, 'zfs_service_ip', '2.2.2.2')
|
|
_safe_set_of_opts(conf, 'zfs_zpool_list', ['foo', 'bar'])
|
|
_safe_set_of_opts(conf, 'zfs_share_helpers', 'NFS=foo.bar.Helper')
|
|
_safe_set_of_opts(conf, 'zfs_replica_snapshot_prefix', 'foo_prefix_')
|
|
|
|
|
|
def _safe_set_of_opts(conf, *args, **kwargs):
|
|
try:
|
|
conf.set_default(*args, **kwargs)
|
|
except config.cfg.NoSuchOptError:
|
|
# Assumed that opt is not imported and not used
|
|
pass
|