Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chalice Deploy Rewrite #604

Closed
joguSD opened this issue Nov 10, 2017 · 4 comments
Closed

Chalice Deploy Rewrite #604

joguSD opened this issue Nov 10, 2017 · 4 comments

Comments

@joguSD
Copy link
Contributor

joguSD commented Nov 10, 2017

Deployer Rewrite

This is a tracking issue for reworking the deployment system in chalice.
To summarize the key points of this work:

  • Generalize the deployments to not be tightly coupled to API gateway and
    Lambda resources. This will allow for features such as Lambda only chalice apps
    without any API Gateway components.
  • Allow chalice to support more AWS resources
    ([proposal] AWS Managed Resouces for Chalice #516)
  • Allow for smarter/smaller update "diffs"
  • Allow for deployment parallelism (being able to deploy resources in parallel)

This will also have the benefit of being easier to troubleshoot
and maintain for chalice devs because all the deployment phases are extracted
out into separate classes.

This work should not result in any backwards incompatible changes, except in a
few cases now that are either undocumented or buggy.

This work is being tracked in the
new-deployer branch.

Related issues:

@joguSD joguSD changed the title Chalide Deploy Rewrite Chalice Deploy Rewrite Nov 11, 2017
@nplutt
Copy link
Contributor

nplutt commented Nov 11, 2017

Hey not sure if this is the place for this, but I think that it would be very useful if you could deploy a lambda function without the requirement of having an API gateway be deployed with it as well.

Thanks,
Nick

@bubba-h57
Copy link

My scheduled tasks need a different lambda_timeout & lambda_memory_size than the application/stage default.

It would be nice to see the same naming convention used in the API Gateway as that which is used in Lambda.

It would be nice to override the default naming convention(s) in the config.json.

jamesls added a commit that referenced this issue Mar 26, 2018
This branch contains the rewrite of the Chalice
deployer.  This will allow us to easily add support
for AWS resources along with more advanced deployment
features that were difficult in the old deployer

Tracking Issue: #604
PR: #763

* new-deployer:
  Add note about downgrades
  Add changelog/release notes for 1.2.0
  Add back config validation during deployment
  Fix lint issues in tests
  Raise ChaliceDeploymentError's on failed deploys
  Rename create_new_default_deployer to create_default_deployer
  Use correct chalice version
  Handle upgrading 0.10.0 to the new deployer format
  Raise RuntimeError when unable to load IAM policy file
  Return empty deployed values when stage does not exist
  Create empty deployed resources when no deployment exists
  Rename DeployedResources2 to DeployedResources
  Remove old deployed resources
  Fix integration tests with per-stage deploy files
  Move newdeployer to deployer module
  Move validation code over to separate module
  Remove references to old deployer and tests
  Remove create_default_deployer
  Replace deploy()/delete() with new deployer
  Move ApplicationPolicyHandler to newdeployer
  Remove string_format for StoreValue
  Remove TODO about proper error handling
  Raise RuntimeError on unknown instruction
  Move TemplatedSwaggerGenerator to swagger.py
  Remove swagger TODO
  Add deployment reporter
  Add rest_api_url to deployed values
  Add backend key to deployed.json
  Update deployed json files to not include stage
  Move recording deployed values into deployer
  Upgrade old deploy format on new deploy
  Raise exeption when deployed resource does not exist
  Use app-stage for api handler function name
  Extra out add results to plan to separate method
  Fix py3 test failures
  Add newlines to delete messages
  Add back print messages during deployment
  Update planner to use Plan object
  Don't create session twice
  Fix integ tests to use new deployer
  Add support for built in authorizers in new deployer
  Remove stack from executor
  Incorporate review feedback so far
  Incorporate review feedback
  Add role_name to deployed values
  Refactor remote state to use dynamic dispatch
  Remove role_arn from LambdaFunction model
  Remove resource from APICall, not needed
  Add support for deploying rest APIs
  Don't require unnecessary arguments
  Add support for scheduled events in newdeployer
  Incorporate review feedback
  Add delete-new command
  Change deployed.json from dict to list of resources
  Split record resource instructions into 3
  Rename sweeper to UnreferencedResourcePlanner
  Restructure if statement
  Use method dispatch for executing instructions
  Add support for deleting unreferenced resources
  Add TODOs for all pending review feedback
  Add back check for duplicate items in ordered list
  Refactor update code to use remote state object
  Remove delete_role_policy call
  Refactor planner unit tests
  Extract planner out to separate module
  Move APICall to models
  Initial commit of updating resources
  Rename resource builder to application builder
  Add missing type definition
  Rename DeployPhase to Placeholder
  Validate all DeployPhase vars have been handled
  Add TODO about deployer errors
  Rename output to target_variable for clarity
  Use more description _lambda_arn suffix
  Rename class to ApplicationGraphBuilder
  Initial POC of new deployer
@wollerman
Copy link

This references #488 but doesn't seem to address it. Is that task still part of this?

@jamesls
Copy link
Member

jamesls commented May 24, 2018

That's still a planned feature I'd like to implement (and am currently working on) but it's not part of this specific issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants