def generate_models(ctx, stage): # type: (click.Context, str) -> None """Generate a model from Chalice routes. Currently only supports generating Swagger 2.0 models. """ factory = ctx.obj['factory'] # type: CLIFactory config = factory.create_config_obj(stage) if not config.chalice_app.routes: click.echo('No REST API found to generate model from.') raise click.Abort() swagger_generator = TemplatedSwaggerGenerator() model = swagger_generator.generate_swagger(config.chalice_app, ) ui = UI() ui.write(json.dumps(model, indent=4, cls=PlanEncoder)) ui.write('\n')
def create_default_deployer(session, config, ui): # type: (Session, Config, UI) -> Deployer client = TypedAWSClient(session) osutils = OSUtils() pip_runner = PipRunner(pip=SubprocessPip(osutils=osutils), osutils=osutils) dependency_builder = PipDependencyBuilder(osutils=osutils, pip_runner=pip_runner) return Deployer( application_builder=ApplicationGraphBuilder(), deps_builder=DependencyBuilder(), build_stage=BuildStage(steps=[ InjectDefaults(), DeploymentPackager(packager=LambdaDeploymentPackager( osutils=osutils, dependency_builder=dependency_builder, ui=UI(), ), ), PolicyGenerator(policy_gen=AppPolicyGenerator(osutils=osutils), ), SwaggerBuilder(swagger_generator=TemplatedSwaggerGenerator(), ) ], ), plan_stage=PlanStage( osutils=osutils, remote_state=RemoteState( client, config.deployed_resources(config.chalice_stage)), ), sweeper=UnreferencedResourcePlanner(), executor=Executor(client, ui), recorder=ResultsRecorder(osutils=osutils), )
def _create_deployer( session, # type: Session config, # type: Config ui, # type: UI executor_cls, # type: Type[BaseExecutor] recorder_cls, # type: Type[ResultsRecorder] ): # type: (...) -> Deployer client = TypedAWSClient(session) osutils = OSUtils() return Deployer( application_builder=ApplicationGraphBuilder(), deps_builder=DependencyBuilder(), build_stage=create_build_stage( osutils, UI(), TemplatedSwaggerGenerator(), ), plan_stage=PlanStage( osutils=osutils, remote_state=RemoteState( client, config.deployed_resources(config.chalice_stage)), ), sweeper=ResourceSweeper(), executor=executor_cls(client, ui), recorder=recorder_cls(osutils=osutils), )
def test_templated_swagger_generator(sample_app): doc = TemplatedSwaggerGenerator().generate_swagger(sample_app) uri = doc['paths']['/']['get']['x-amazon-apigateway-integration']['uri'] assert isinstance(uri, StringFormat) assert uri.template == ( 'arn:aws:apigateway:{region_name}:lambda:path' '/2015-03-31/functions/{api_handler_lambda_arn}/invocations') assert uri.variables == ['region_name', 'api_handler_lambda_arn']
def test_templated_swagger_with_auth_uri(sample_app_with_auth): doc = TemplatedSwaggerGenerator().generate_swagger(sample_app_with_auth) uri = doc['securityDefinitions']['myauth'][ 'x-amazon-apigateway-authorizer']['authorizerUri'] assert isinstance(uri, StringFormat) assert uri.template == ( 'arn:{partition}:apigateway:{region_name}:lambda:path' '/2015-03-31/functions/{myauth_lambda_arn}/invocations') assert uri.variables == ['partition', 'region_name', 'myauth_lambda_arn']
def create_default_deployer(session, config, ui): # type: (Session, Config, UI) -> Deployer client = TypedAWSClient(session) osutils = OSUtils() return Deployer( application_builder=ApplicationGraphBuilder(), deps_builder=DependencyBuilder(), build_stage=create_build_stage( osutils, UI(), TemplatedSwaggerGenerator(), ), plan_stage=PlanStage( osutils=osutils, remote_state=RemoteState( client, config.deployed_resources(config.chalice_stage)), ), sweeper=ResourceSweeper(), executor=Executor(client, ui), recorder=ResultsRecorder(osutils=osutils), )