Skip to content

Commit b9c8a4b

Browse files
committed
updating function keys decorator
1 parent 88ab1f6 commit b9c8a4b

File tree

1 file changed

+64
-58
lines changed

1 file changed

+64
-58
lines changed

src/containerapp/azext_containerapp/containerapp_function_keys_decorator.py

Lines changed: 64 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,47 @@
1717
logger = get_logger(__name__)
1818

1919

20-
class ContainerAppFunctionsDecorator(BaseResource):
21-
"""Base decorator for Container App Functions operations"""
20+
class ContainerAppFunctionKeysDecorator(BaseResource):
21+
"""Base decorator for Container App Function Keys operations"""
2222

2323
def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models: str):
2424
super().__init__(cmd, client, raw_parameters, models)
2525

2626
def get_argument_function_name(self):
2727
return self.get_param("function_name")
2828

29+
def get_argument_revision_name(self):
30+
return self.get_param("revision_name")
2931

30-
class ContainerAppFunctionKeysListDecorator(ContainerAppFunctionsDecorator):
32+
def validate_common_arguments(self):
33+
"""Validate common arguments required for all function operations"""
34+
resource_group_name = self.get_argument_resource_group_name()
35+
name = self.get_argument_name()
36+
revision_name = self.get_argument_revision_name()
37+
38+
if not resource_group_name:
39+
raise ValidationError("Resource group name is required.")
40+
41+
if not name:
42+
raise ValidationError("Container app name is required.")
43+
44+
if not revision_name:
45+
raise ValidationError("Revision name is required.")
46+
47+
return resource_group_name, name, revision_name
48+
49+
def validate_function_arguments(self):
50+
"""Validate arguments required for function-specific operations"""
51+
resource_group_name, name, revision_name = self.validate_common_arguments()
52+
function_name = self.get_argument_function_name()
53+
54+
if not function_name:
55+
raise ValidationError("Function name is required.")
56+
57+
return resource_group_name, name, revision_name, function_name
58+
59+
60+
class ContainerAppFunctionKeysListDecorator(ContainerAppFunctionKeysDecorator):
3161
"""Decorator for listing function keys"""
3262

3363
def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models: str):
@@ -36,18 +66,7 @@ def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models:
3666
def list_keys(self):
3767
"""List keys for a specific function"""
3868
try:
39-
function_name = self.get_argument_function_name()
40-
resource_group_name = self.get_argument_resource_group_name()
41-
name = self.get_argument_name()
42-
43-
if not resource_group_name:
44-
raise ValidationError("Resource group name is required.")
45-
46-
if not name:
47-
raise ValidationError("Container app name is required.")
48-
49-
if not function_name:
50-
raise ValidationError("Function name is required.")
69+
resource_group_name, name, revision_name, function_name = self.validate_function_arguments()
5170

5271
return self.client.list_function_keys(
5372
cmd=self.cmd,
@@ -59,7 +78,7 @@ def list_keys(self):
5978
handle_raw_exception(e)
6079

6180

62-
class ContainerAppFunctionKeysUpdateDecorator(ContainerAppFunctionsDecorator):
81+
class ContainerAppFunctionKeysUpdateDecorator(ContainerAppFunctionKeysDecorator):
6382
"""Decorator for updating function keys"""
6483

6584
def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models: str):
@@ -71,26 +90,21 @@ def get_argument_key_name(self):
7190
def get_argument_key_value(self):
7291
return self.get_param("key_value")
7392

93+
def validate_update_arguments(self):
94+
"""Validate arguments required for updating function keys"""
95+
resource_group_name, name, revision_name, function_name = self.validate_function_arguments()
96+
key_name = self.get_argument_key_name()
97+
98+
if not key_name:
99+
raise ValidationError("Key name is required.")
100+
101+
return resource_group_name, name, revision_name, function_name, key_name
102+
74103
def update_keys(self):
75104
"""Update keys for a specific function"""
76105
try:
77-
function_name = self.get_argument_function_name()
78-
key_name = self.get_argument_key_name()
106+
resource_group_name, name, revision_name, function_name, key_name = self.validate_update_arguments()
79107
key_value = self.get_argument_key_value()
80-
resource_group_name = self.get_argument_resource_group_name()
81-
name = self.get_argument_name()
82-
83-
if not resource_group_name:
84-
raise ValidationError("Resource group name is required.")
85-
86-
if not name:
87-
raise ValidationError("Container app name is required.")
88-
89-
if not function_name:
90-
raise ValidationError("Function name is required.")
91-
92-
if not key_name:
93-
raise ValidationError("Key name is required.")
94108

95109
return self.client.update_function_keys(
96110
cmd=self.cmd,
@@ -104,7 +118,7 @@ def update_keys(self):
104118
handle_raw_exception(e)
105119

106120

107-
class ContainerAppFunctionHostKeysListDecorator(ContainerAppFunctionsDecorator):
121+
class ContainerAppFunctionHostKeysListDecorator(ContainerAppFunctionKeysDecorator):
108122
"""Decorator for listing host keys"""
109123

110124
def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models: str):
@@ -113,14 +127,7 @@ def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models:
113127
def list_host_keys(self):
114128
"""List host keys for the container app function host"""
115129
try:
116-
resource_group_name = self.get_argument_resource_group_name()
117-
name = self.get_argument_name()
118-
119-
if not resource_group_name:
120-
raise ValidationError("Resource group name is required.")
121-
122-
if not name:
123-
raise ValidationError("Container app name is required.")
130+
resource_group_name, name, revision_name = self.validate_common_arguments()
124131

125132
return self.client.list_host_keys(
126133
cmd=self.cmd,
@@ -131,7 +138,7 @@ def list_host_keys(self):
131138
handle_raw_exception(e)
132139

133140

134-
class ContainerAppFunctionHostKeysUpdateDecorator(ContainerAppFunctionsDecorator):
141+
class ContainerAppFunctionHostKeysUpdateDecorator(ContainerAppFunctionKeysDecorator):
135142
"""Decorator for updating host keys"""
136143

137144
def __init__(self, cmd: AzCliCommand, client: Any, raw_parameters: Dict, models: str):
@@ -146,26 +153,25 @@ def get_argument_key_name(self):
146153
def get_argument_key_value(self):
147154
return self.get_param("key_value")
148155

156+
def validate_host_key_arguments(self):
157+
"""Validate arguments required for updating host keys"""
158+
resource_group_name, name, revision_name = self.validate_common_arguments()
159+
key_type = self.get_argument_key_type()
160+
key_name = self.get_argument_key_name()
161+
162+
if not key_type:
163+
raise ValidationError("Key type is required.")
164+
165+
if not key_name:
166+
raise ValidationError("Key name is required.")
167+
168+
return resource_group_name, name, revision_name, key_type, key_name
169+
149170
def update_host_keys(self):
150171
"""Update host keys for the container app function host"""
151172
try:
152-
key_type = self.get_argument_key_type()
153-
key_name = self.get_argument_key_name()
173+
resource_group_name, name, revision_name, key_type, key_name = self.validate_host_key_arguments()
154174
key_value = self.get_argument_key_value()
155-
resource_group_name = self.get_argument_resource_group_name()
156-
name = self.get_argument_name()
157-
158-
if not resource_group_name:
159-
raise ValidationError("Resource group name is required.")
160-
161-
if not name:
162-
raise ValidationError("Container app name is required.")
163-
164-
if not key_type:
165-
raise ValidationError("Key type is required.")
166-
167-
if not key_name:
168-
raise ValidationError("Key name is required.")
169175

170176
return self.client.update_host_keys(
171177
cmd=self.cmd,

0 commit comments

Comments
 (0)