|
17 | 17 | from .utils import get_instance_path, get_chart_path, get_plan_path, \ |
18 | 18 | get_addon_path, get_addon_updateable, get_addon_bindable, InstanceLock, \ |
19 | 19 | load_instance_meta, load_binding_meta, dump_instance_meta, \ |
20 | | - load_addons_meta |
| 20 | + load_addons_meta, get_addon_allow_paras, verify_parameters |
21 | 21 | from .tasks import provision, bind, deprovision, update |
22 | 22 |
|
23 | 23 | logger = logging.getLogger(__name__) |
@@ -46,6 +46,11 @@ def provision(self, |
46 | 46 | raise ErrInstanceAlreadyExists() |
47 | 47 | if not async_allowed: |
48 | 48 | raise ErrAsyncRequired() |
| 49 | + allow_paras = get_addon_allow_paras(details.service_id) |
| 50 | + not_allow_keys = verify_parameters(allow_paras, details.parameters) |
| 51 | + if not_allow_keys: |
| 52 | + raise ErrBadRequest( |
| 53 | + msg="Instance parameters %s does not allowed" % not_allow_keys) |
49 | 54 | os.makedirs(instance_path, exist_ok=True) |
50 | 55 | chart_path, plan_path = ( |
51 | 56 | get_chart_path(instance_id), get_plan_path(instance_id)) |
@@ -140,6 +145,11 @@ def update(self, |
140 | 145 | if not is_plan_updateable: |
141 | 146 | raise ErrBadRequest( |
142 | 147 | msg="Instance %s does not updateable" % instance_id) |
| 148 | + allow_paras = get_addon_allow_paras(details.service_id) |
| 149 | + not_allow_keys = verify_parameters(allow_paras, details.parameters) |
| 150 | + if not_allow_keys: |
| 151 | + raise ErrBadRequest( |
| 152 | + msg="Instance parameters %s does not allowed" % not_allow_keys) |
143 | 153 | if not async_allowed: |
144 | 154 | raise ErrAsyncRequired() |
145 | 155 | if details.plan_id is not None: |
|
0 commit comments