Skip to content

Commit f748ebd

Browse files
committed
add generator
1 parent caaa425 commit f748ebd

File tree

3 files changed

+41
-13
lines changed

3 files changed

+41
-13
lines changed

src/aaz_dev/cli/controller/az_arg_group_generator.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,10 @@ def render_arg_base(arg, cmd_ctx, arg_kwargs=None):
294294

295295
if isinstance(arg, CMDAnyTypeArgBase):
296296
arg_type = "AAZAnyTypeArg"
297+
elif isinstance(arg, CMDByteArgBase):
298+
raise NotImplementedError()
299+
elif isinstance(arg, CMDBinaryArgBase):
300+
arg_type = "AAZFileBytesArg"
297301
elif isinstance(arg, CMDStringArgBase):
298302
arg_type = "AAZStrArg"
299303
enum_kwargs = parse_arg_enum(arg.enum)
@@ -347,15 +351,6 @@ def render_arg_base(arg, cmd_ctx, arg_kwargs=None):
347351
"resource_group_arg": resource_group_arg
348352
}
349353
}
350-
elif isinstance(arg, CMDByteArgBase):
351-
raise NotImplementedError()
352-
elif isinstance(arg, CMDBinaryArgBase):
353-
arg_type = "AAZFileBytesArg"
354-
if arg.fmt and isinstance(arg.fmt, CMDStringFormat):
355-
arg_kwargs['fmt'] = fmt = {
356-
"cls": "AAZFileBytesArgFormat",
357-
"kwargs": {}
358-
}
359354
elif isinstance(arg, CMDDurationArgBase):
360355
arg_type = "AAZDurationArg"
361356
elif isinstance(arg, CMDDateArgBase):

src/aaz_dev/cli/controller/az_operation_generator.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from command.model.configuration import (
2-
CMDHttpOperation, CMDHttpRequestJsonBody, CMDArraySchema, CMDInstanceUpdateOperation, CMDRequestJson,
2+
CMDHttpOperation, CMDHttpRequestJsonBody, CMDArraySchema, CMDInstanceUpdateOperation, CMDRequestJson, CMDHttpRequestBytesBody, CMDRequestBytes,
33
CMDHttpResponseJsonBody, CMDObjectSchema, CMDSchema, CMDStringSchemaBase, CMDIntegerSchemaBase, CMDFloatSchemaBase,
44
CMDBooleanSchemaBase, CMDObjectSchemaBase, CMDArraySchemaBase, CMDClsSchemaBase, CMDJsonInstanceUpdateAction,
55
CMDObjectSchemaDiscriminator, CMDSchemaEnum, CMDJsonInstanceCreateAction, CMDJsonInstanceDeleteAction, CMDBinarySchema,
@@ -118,6 +118,8 @@ def __init__(self, name, cmd_ctx, operation, client_endpoints):
118118
body = self._operation.http.request.body
119119
if isinstance(body, CMDHttpRequestJsonBody):
120120
self.content = AzHttpRequestContentGenerator(self._cmd_ctx, body)
121+
elif isinstance(body, CMDHttpRequestBytesBody):
122+
self.content = AzHttpRequestContentBytesGenerator(self._cmd_ctx, body)
121123
else:
122124
raise NotImplementedError()
123125

@@ -260,6 +262,13 @@ def header_parameters(self):
260262
True,
261263
{}
262264
])
265+
elif isinstance(body, CMDHttpRequestBytesBody):
266+
parameters.append([
267+
"Content-Type",
268+
"application/octet-stream",
269+
True,
270+
{}
271+
])
263272
if self.success_responses:
264273
for response in self.success_responses:
265274
if response._response.body is not None and isinstance(response._response.body, CMDHttpResponseJsonBody):
@@ -510,6 +519,30 @@ def iter_scopes(self):
510519
for scopes in _iter_request_scopes_by_schema_base(self.schema, self.BUILDER_NAME, None, arg_key, self._cmd_ctx):
511520
yield scopes
512521

522+
class AzHttpRequestContentBytesGenerator:
523+
VALUE_NAME = "_content_value"
524+
BUILDER_NAME = "_builder"
525+
526+
def __init__(self, cmd_ctx, body):
527+
self._cmd_ctx = cmd_ctx
528+
assert isinstance(body.bytes, CMDRequestBytes)
529+
self._bodycontent = body.bytes
530+
self.ref = None
531+
if self._bodycontent.ref:
532+
self.ref, is_selector = self._cmd_ctx.get_variant(self._bodycontent.ref)
533+
assert not is_selector
534+
self.arg_key = "self.ctx.args"
535+
if self.ref is None:
536+
assert isinstance(self._bodycontent.schema, CMDSchema)
537+
if self._bodycontent.schema.arg:
538+
self.arg_key, hide = self._cmd_ctx.get_argument(self._bodycontent.schema.arg)
539+
assert not hide
540+
self.typ, self.typ_kwargs, self.cls_builder_name = render_schema(
541+
self._bodycontent.schema, self._cmd_ctx.update_clses, name=self._bodycontent.schema.name)
542+
543+
def iter_scopes(self):
544+
pass
545+
513546

514547
class AzHttpResponseGenerator:
515548

@@ -991,7 +1024,7 @@ def render_schema_base(schema, cls_map, schema_kwargs=None):
9911024
elif isinstance(schema, CMDIdentityObjectSchemaBase):
9921025
schema_type = "AAZIdentityObjectType"
9931026
elif isinstance(schema, CMDBinarySchema):
994-
schema_type = "AAZFileBytesType"
1027+
schema_type = "AAZBytesType"
9951028
elif isinstance(schema, CMDObjectSchemaBase):
9961029
if schema.props or schema.discriminators:
9971030
schema_type = "AAZObjectType"

src/aaz_dev/command/model/configuration/_arg.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,11 @@ def _reformat(self, **kwargs):
384384

385385

386386
# byte: base64 encoded characters
387-
class CMDByteArgBase(CMDArg):
387+
class CMDByteArgBase(CMDArgBase):
388388
TYPE_VALUE = "byte"
389389

390390

391-
class CMDByteArg(CMDByteArgBase):
391+
class CMDByteArg(CMDByteArgBase, CMDArg):
392392
pass
393393

394394

0 commit comments

Comments
 (0)