Skip to content

Commit c8accde

Browse files
committed
Some serverside fixes
1 parent a946a0d commit c8accde

File tree

8 files changed

+46
-20
lines changed

8 files changed

+46
-20
lines changed

src/zenml/config/pipeline_configurations.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
from pydantic import SerializeAsAny, field_validator
2121

2222
from zenml.config.constants import DOCKER_SETTINGS_KEY
23+
from zenml.config.frozen_base_model import FrozenBaseModel
2324
from zenml.config.retry_config import StepRetryConfig
2425
from zenml.config.source import SourceWithValidator
25-
from zenml.config.strict_base_model import FrozenBaseModel
2626
from zenml.model.model import Model
2727
from zenml.utils.tag_utils import Tag
2828
from zenml.utils.time_utils import utc_now

src/zenml/config/pipeline_run_configuration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
from pydantic import Field, SerializeAsAny
2020

2121
from zenml.config.base_settings import BaseSettings
22+
from zenml.config.frozen_base_model import FrozenBaseModel
2223
from zenml.config.retry_config import StepRetryConfig
2324
from zenml.config.schedule import Schedule
2425
from zenml.config.source import SourceWithValidator
2526
from zenml.config.step_configurations import StepConfigurationUpdate
26-
from zenml.config.strict_base_model import FrozenBaseModel
2727
from zenml.model.model import Model
2828
from zenml.models import PipelineBuildBase
2929
from zenml.utils import pydantic_utils

src/zenml/config/pipeline_spec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
import json
1717
from typing import Any, Dict, List, Optional
1818

19+
from zenml.config.frozen_base_model import FrozenBaseModel
1920
from zenml.config.source import Source, SourceWithValidator
2021
from zenml.config.step_configurations import StepSpec
21-
from zenml.config.strict_base_model import FrozenBaseModel
2222
from zenml.utils.json_utils import pydantic_encoder
2323

2424

src/zenml/config/retry_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# permissions and limitations under the License.
1414
"""Retry configuration for a step."""
1515

16-
from zenml.config.strict_base_model import FrozenBaseModel
16+
from zenml.config.frozen_base_model import FrozenBaseModel
1717

1818

1919
class StepRetryConfig(FrozenBaseModel):

src/zenml/config/step_run_info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
from typing import Any, Callable
1717
from uuid import UUID
1818

19+
from zenml.config.frozen_base_model import FrozenBaseModel
1920
from zenml.config.pipeline_configurations import PipelineConfiguration
2021
from zenml.config.step_configurations import StepConfiguration
21-
from zenml.config.strict_base_model import FrozenBaseModel
2222

2323

2424
class StepRunInfo(FrozenBaseModel):

src/zenml/zen_server/routers/run_templates_endpoints.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@
4040
verify_permissions_and_update_entity,
4141
)
4242
from zenml.zen_server.rbac.models import Action, ResourceType
43-
from zenml.zen_server.rbac.utils import verify_permission
43+
from zenml.zen_server.rbac.utils import (
44+
batch_verify_permissions_for_models,
45+
verify_permission,
46+
)
4447
from zenml.zen_server.routers.projects_endpoints import workspace_router
4548
from zenml.zen_server.utils import (
4649
handle_exceptions,
@@ -242,6 +245,8 @@ def create_template_run(
242245
"""
243246
from zenml.zen_server.template_execution.utils import run_template
244247

248+
rbac_read_checks = []
249+
245250
with track_handler(
246251
event=AnalyticsEvent.EXECUTED_RUN_TEMPLATE,
247252
) as analytics_handler:
@@ -265,6 +270,28 @@ def create_template_run(
265270
project_id=template.project.id,
266271
)
267272

273+
if config:
274+
rbac_read_checks.extend(
275+
[
276+
zen_store().get_secret_by_name_or_id(id)
277+
for id in config.secrets
278+
]
279+
)
280+
281+
for _, step in config.steps.items():
282+
if step.secrets:
283+
rbac_read_checks.extend(
284+
[
285+
zen_store().get_secret_by_name_or_id(id)
286+
for id in step.secrets
287+
]
288+
)
289+
290+
if rbac_read_checks:
291+
batch_verify_permissions_for_models(
292+
rbac_read_checks, action=Action.READ
293+
)
294+
268295
return run_template(
269296
template=template,
270297
auth_context=auth_context,

src/zenml/zen_server/template_execution/utils.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
from zenml.utils import (
4949
dict_utils,
5050
requirements_utils,
51-
secret_utils,
5251
settings_utils,
5352
)
5453
from zenml.zen_server.auth import AuthContext, generate_access_token
@@ -379,11 +378,10 @@ def deployment_request_from_template(
379378
exclude={"name", "parameters"},
380379
)
381380
if pipeline_secrets := pipeline_update_dict.get("secrets", []):
382-
pipeline_update_dict["secrets"] = (
383-
secret_utils.resolve_and_verify_secrets(
384-
pipeline_secrets, zen_store=zen_store()
385-
)
386-
)
381+
pipeline_update_dict["secrets"] = [
382+
zen_store().get_secret_by_name_or_id(secret)
383+
for secret in pipeline_secrets
384+
]
387385
pipeline_configuration = PipelineConfiguration(
388386
**pipeline_update_dict,
389387
name=deployment.pipeline_configuration.name,
@@ -422,11 +420,10 @@ def deployment_request_from_template(
422420
update_dict.pop("name", None)
423421

424422
if step_secrets := update_dict.get("secrets", []):
425-
update_dict["secrets"] = (
426-
secret_utils.resolve_and_verify_secrets(
427-
step_secrets, zen_store=zen_store()
428-
)
429-
)
423+
update_dict["secrets"] = [
424+
zen_store().get_secret_by_name_or_id(secret)
425+
for secret in step_secrets
426+
]
430427

431428
configured_parameters = set(update.parameters)
432429
step_config_dict = dict_utils.recursive_update(

src/zenml/zen_stores/sql_zen_store.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6228,8 +6228,10 @@ def get_secret(
62286228

62296229
return secret_model
62306230

6231-
def get_secret_by_name(self, secret_name: str) -> SecretResponse:
6232-
"""Get a secret by name.
6231+
def get_secret_by_name_or_id(
6232+
self, secret_name_or_id: Union[str, UUID]
6233+
) -> SecretResponse:
6234+
"""Get a secret by name or ID.
62336235
62346236
Args:
62356237
secret_name: The name of the secret to fetch.
@@ -6239,7 +6241,7 @@ def get_secret_by_name(self, secret_name: str) -> SecretResponse:
62396241
"""
62406242
with Session(self.engine) as session:
62416243
secret_in_db = self._get_schema_by_name_or_id(
6242-
secret_name, schema_class=SecretSchema, session=session
6244+
secret_name_or_id, schema_class=SecretSchema, session=session
62436245
)
62446246
secret_model = secret_in_db.to_model(
62456247
include_metadata=True, include_resources=True

0 commit comments

Comments
 (0)