def generate_json_skeleton(self, call_parameters, parsed_args, parsed_globals, **kwargs): # Only perform the method if the ``--generate-cli-skeleton`` was # included in the command line. if getattr(parsed_args, 'generate_cli_skeleton', False): # Obtain the model of the operation operation_model = self._operation_model # Generate the skeleton based on the ``input_shape``. argument_generator = ArgumentGenerator() operation_input_shape = operation_model.input_shape # If the ``input_shape`` is ``None``, generate an empty # dictionary. if operation_input_shape is None: skeleton = {} else: skeleton = argument_generator.generate_skeleton( operation_input_shape) # Write the generated skeleton to standard output. sys.stdout.write(json.dumps(skeleton, indent=4)) sys.stdout.write('\n') # This is the return code return 0
def generate_json_skeleton(self, call_parameters, parsed_args, parsed_globals, **kwargs): if getattr(parsed_args, 'generate_cli_skeleton', None): for_output = parsed_args.generate_cli_skeleton == 'output' operation_model = self._operation_model if for_output: service_name = operation_model.service_model.service_name operation_name = operation_model.name # TODO: It would be better to abstract this logic into # classes for both the input and output option such that # a similar set of inputs are taken in and output # similar functionality. return StubbedCLIOperationCaller(self._session).invoke( service_name, operation_name, call_parameters, parsed_globals) else: argument_generator = ArgumentGenerator() operation_input_shape = operation_model.input_shape if operation_input_shape is None: skeleton = {} else: skeleton = argument_generator.generate_skeleton( operation_input_shape) sys.stdout.write( json.dumps(skeleton, indent=4, default=json_encoder)) sys.stdout.write('\n') return 0
def _generate_input_skeleton(self, **kwargs): outfile = sys.stdout input_shape = self._operation_model.input_shape skeleton = {} if input_shape is not None: argument_generator = ArgumentGenerator() skeleton = argument_generator.generate_skeleton(input_shape) json.dump(skeleton, outfile, indent=4, default=json_encoder) outfile.write('\n') return 0
def test_can_generate_all_inputs(): session = botocore.session.get_session() generator = ArgumentGenerator() for service_name in session.get_available_services(): service_model = session.get_service_model(service_name) for operation_name in service_model.operation_names: operation_model = service_model.operation_model(operation_name) input_shape = operation_model.input_shape if input_shape is not None and input_shape.members: yield (_test_can_generate_skeleton, generator, input_shape, service_name, operation_name)
def _make_client_call(self, client, operation_name, parameters, parsed_globals): method_name = xform_name(operation_name) operation_model = client.meta.service_model.operation_model( operation_name) fake_response = {} if operation_model.output_shape: argument_generator = ArgumentGenerator(use_member_names=True) fake_response = argument_generator.generate_skeleton( operation_model.output_shape) with Stubber(client) as stubber: stubber.add_response(method_name, fake_response) return getattr(client, method_name)(**parameters)
def _search_jmespath_expression(expression, op_model): arg_gen = ArgumentGenerator(use_member_names=True) sample_output = arg_gen.generate_skeleton(op_model.output_shape) search_result = jmespath.search(expression, sample_output) return search_result
def setUp(self): self.arg_generator = ArgumentGenerator()
def generator(): return ArgumentGenerator()