Coretex
secret_parameter.py
1 # Copyright (C) 2023 Coretex LLC
2 
3 # This file is part of Coretex.ai
4 
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as
7 # published by the Free Software Foundation, either version 3 of the
8 # License, or (at your option) any later version.
9 
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Affero General Public License for more details.
14 
15 # You should have received a copy of the GNU Affero General Public License
16 # along with this program. If not, see <https://www.gnu.org/licenses/>.
17 
18 from typing import Any, List, Optional, TypeVar, Type
19 
20 import os
21 
22 from ..parameter_type import ParameterType
23 from ..base_parameter import BaseParameter
24 from ....project import ProjectType
25 from ....secret import Secret
26 
27 
28 T = TypeVar("T", bound = Secret)
29 
30 
31 class SecretParameter(BaseParameter[str]):
32 
33  def __init__(
34  self,
35  secretType: Type[T],
36  name: str,
37  description: str,
38  value: Optional[str],
39  dataType: ParameterType,
40  required: bool,
41  type: int
42  ) -> None:
43 
44  self._secretType = secretType
45 
46  super().__init__(name, description, value, dataType, required, type)
47 
48  @property
49  def types(self) -> List[type]:
50  return [str]
51 
52  def parseValue(self, type_: ProjectType) -> Optional[Any]:
53  if self.value is None:
54  return None
55 
56  if "CTX_NODE_ACCESS_TOKEN" in os.environ:
57  return self._secretType.fetchNodeSecret(self.value, os.environ["CTX_NODE_ACCESS_TOKEN"])
58 
59  return self._secretType.fetchByName(self.value)