(action_ref, action_params=None, runner_params=None)
| 81 | |
| 82 | |
| 83 | def _validate_parameters(action_ref, action_params=None, runner_params=None): |
| 84 | position_params = {} |
| 85 | for action_param, action_param_meta in six.iteritems(action_params): |
| 86 | # Check if overridden runner parameters are permitted. |
| 87 | if action_param in runner_params: |
| 88 | for action_param_attr, value in six.iteritems(action_param_meta): |
| 89 | util_schema.validate_runner_parameter_attribute_override( |
| 90 | action_ref, |
| 91 | action_param, |
| 92 | action_param_attr, |
| 93 | value, |
| 94 | runner_params[action_param].get(action_param_attr), |
| 95 | ) |
| 96 | |
| 97 | if "position" in action_param_meta: |
| 98 | pos = action_param_meta["position"] |
| 99 | param = position_params.get(pos, None) |
| 100 | if param: |
| 101 | msg = ( |
| 102 | "Parameters %s and %s have same position %d." |
| 103 | % (action_param, param, pos) |
| 104 | + " Position values have to be unique." |
| 105 | ) |
| 106 | raise ValueValidationException(msg) |
| 107 | else: |
| 108 | position_params[pos] = action_param |
| 109 | |
| 110 | if "immutable" in action_param_meta: |
| 111 | if action_param in runner_params: |
| 112 | runner_param_meta = runner_params[action_param] |
| 113 | if "immutable" in runner_param_meta: |
| 114 | msg = ( |
| 115 | "Param %s is declared immutable in runner. " % action_param |
| 116 | + "Cannot override in action." |
| 117 | ) |
| 118 | raise ValueValidationException(msg) |
| 119 | if ( |
| 120 | "default" not in action_param_meta |
| 121 | and "default" not in runner_param_meta |
| 122 | ): |
| 123 | msg = "Immutable param %s requires a default value." % action_param |
| 124 | raise ValueValidationException(msg) |
| 125 | else: |
| 126 | if "default" not in action_param_meta: |
| 127 | msg = "Immutable param %s requires a default value." % action_param |
| 128 | raise ValueValidationException(msg) |
| 129 | |
| 130 | return _validate_position_values_contiguous(position_params) |
| 131 | |
| 132 | |
| 133 | def _validate_position_values_contiguous(position_params): |
no test coverage detected