Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions simplyblock_core/cluster_ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

from docker.errors import DockerException
from simplyblock_core import utils, scripts, constants, mgmt_node_ops, storage_node_ops
from simplyblock_core.settings import Settings
from simplyblock_core.controllers import backup_controller, cluster_events, device_controller, qos_controller, tasks_controller, tcp_ports_events
from simplyblock_core.fw_api_client import FirewallClient
from simplyblock_core.db_controller import DBController
Expand Down Expand Up @@ -563,6 +564,18 @@ def add_cluster(blk_size, page_size_in_blocks, cap_warn, cap_crit, prov_cap_warn
cluster.nvmf_base_port = nvmf_base_port
cluster.rpc_base_port = rpc_base_port
cluster.snode_api_port = snode_api_port
if hashicorp_vault_settings:
settings = Settings()
missing = [
path
for path in [settings.tls_certificate_authority, settings.tls_certificate, settings.tls_key]
if not path.is_file()
]
if missing:
raise ValueError(
"HashiCorp Vault requires TLS certificates that are not present: "
+ ", ".join(map(str, missing))
)
cluster.hashicorp_vault_settings = hashicorp_vault_settings
if backup_config:
cluster.backup_config = backup_config
Expand Down
10 changes: 5 additions & 5 deletions simplyblock_core/controllers/pool_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,13 @@ def add_pool(name, pool_max, lvol_max, max_rw_iops, max_rw_mbytes, max_r_mbytes,
pool.dhchap_ctrlr_key = utils.generate_dhchap_key(length=32)


with create_kms_connection(cluster) as kms:
try:
try:
with create_kms_connection(cluster) as kms:
kms.create_key_encryption_key(pool.get_id())
logger.info("Created pool key")
except KMSException:
logger.exception("Failed to create pool key")
return False
except KMSException:
logger.exception("Failed to create pool key")
return False

pool.status = "active"
pool.write_to_db(db_controller.kv_store)
Expand Down
15 changes: 7 additions & 8 deletions simplyblock_web/api/v2/pool.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import Annotated, List, Optional
from uuid import UUID

from fastapi import APIRouter, Depends, HTTPException, Request, Response
from fastapi import APIRouter, Depends, HTTPException, Response
from pydantic import BaseModel

from simplyblock_core.db_controller import DBController
Expand Down Expand Up @@ -42,24 +42,23 @@ class StoragePoolParams(BaseModel):
cr_plural: str = ""


@api.post('/', name='clusters:storage-pools:create', status_code=201, responses={201: {"content": None}})
def add(request: Request, cluster: Cluster, parameters: StoragePoolParams) -> Response:
@api.post('/', name='clusters:storage-pools:create', status_code=201)
def add(cluster: Cluster, parameters: StoragePoolParams):
for pool in db.get_pools(cluster.get_id()):
if pool.pool_name == parameters.name:
raise HTTPException(409, f'Pool {parameters.name} already exists')

id_or_false = pool_controller.add_pool(
pool_id = pool_controller.add_pool(
parameters.name, parameters.pool_max, parameters.volume_max_size, parameters.max_rw_iops, parameters.max_rw_mbytes,
parameters.max_r_mbytes, parameters.max_w_mbytes, cluster.get_id(),
parameters.cr_name, parameters.cr_namespace, parameters.cr_plural,
dhchap=parameters.dhchap,
)

if not id_or_false:
raise ValueError('Failed to create pool')
if not pool_id:
raise HTTPException(500, 'Failed to create pool')

pool = db.get_pool_by_id(id_or_false)
return pool.to_dict()
return db.get_pool_by_id(pool_id).to_dict()


instance_api = APIRouter(prefix='/{pool_id}')
Expand Down
Loading