ddc6b69dfc
Ceph components are configured by puppet. Hieradata for it is generated by sysinv. Currently the configuration is generated using IPs from the management network. Allow ceph components to be configurable on cluster-host network. Create a 'network' parameter for strorage-backend-add command. The parameter is optional, the rest controller will default the value to management network. Example usage: system storage-backend-add --network cluster-host ceph --confirmed system storage-backend-add --network mgmt ceph --confirmed system storage-backend-add ceph --confirmed Updated unit tests. Added unit test for component that generates the ceph monitor ips for hieradata. Tests: 1) AIO-SX: add ceph using --network cluster-host, unlock, ip is from cluster-host network. 2) STANDARD 2+2: full deploy, no --network parameter, everything as before. 3) storage-backend-modify and storage-backend-add allows only 'mgmt' and 'cluster-host' network parameter. 4) storage-backend-modify does modify the network before the first unlock; is rejected for network parameter after first unlock. Story: 2008843 Task: 42350 Task: 42351 Signed-off-by: Dan Voiculeasa <dan.voiculeasa@windriver.com> Change-Id: I681ccb3302b8f233424bc291e08675a4dc2b10f7
64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
#
|
|
# Copyright (c) 2013-2021 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# -*- encoding: utf-8 -*-
|
|
#
|
|
|
|
from cgtsclient.common import base
|
|
from cgtsclient import exc
|
|
|
|
CREATION_ATTRIBUTES = ['confirmed', 'name', 'services', 'capabilities',
|
|
'tier_uuid', 'cinder_pool_gib', 'glance_pool_gib',
|
|
'ephemeral_pool_gib', 'object_pool_gib',
|
|
'kube_pool_gib', 'object_gateway', 'network']
|
|
DISPLAY_ATTRIBUTES = ['object_gateway', 'ceph_total_space_gib',
|
|
'object_pool_gib', 'cinder_pool_gib',
|
|
'kube_pool_gib', 'glance_pool_gib', 'ephemeral_pool_gib',
|
|
'tier_name', 'tier_uuid', 'network']
|
|
PATCH_ATTRIBUTES = ['object_gateway', 'object_pool_gib',
|
|
'cinder_pool_gib', 'glance_pool_gib',
|
|
'ephemeral_pool_gib', 'kube_pool_gib', 'network']
|
|
|
|
|
|
class StorageCeph(base.Resource):
|
|
def __repr__(self):
|
|
return "<storage_ceph %s>" % self._info
|
|
|
|
|
|
class StorageCephManager(base.Manager):
|
|
resource_class = StorageCeph
|
|
|
|
@staticmethod
|
|
def _path(id=None):
|
|
return '/v1/storage_ceph/%s' % id if id else '/v1/storage_ceph'
|
|
|
|
def list(self):
|
|
return self._list(self._path(), "storage_ceph")
|
|
|
|
def get(self, storceph_id=None):
|
|
try:
|
|
if storceph_id:
|
|
return self._list(self._path(storceph_id))[0]
|
|
else:
|
|
return self._list(self._path(), "storage_ceph")[0]
|
|
except IndexError:
|
|
return None
|
|
|
|
def create(self, **kwargs):
|
|
new = {}
|
|
for (key, value) in kwargs.items():
|
|
if key in CREATION_ATTRIBUTES:
|
|
new[key] = value
|
|
else:
|
|
raise exc.InvalidAttribute('%s' % key)
|
|
return self._create(self._path(), new)
|
|
|
|
def update(self, storceph_id, patch):
|
|
return self._update(self._path(storceph_id), patch)
|
|
|
|
def delete(self, storceph_id):
|
|
return self._delete(self._path(storceph_id))
|