Function Aliases spec proposal
Change-Id: I4f3a08567873ab54762504816a69797ee77ec22c Story: #2001588 task: #6537
This commit is contained in:
parent
bd7679d599
commit
3aae175cd0
145
doc/source/specs/function_aliases.rst
Normal file
145
doc/source/specs/function_aliases.rst
Normal file
@ -0,0 +1,145 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
================================
|
||||
Support Qinling function aliases
|
||||
================================
|
||||
|
||||
https://storyboard.openstack.org/#!/story/2001588
|
||||
|
||||
Function aliases are like pointers to the specific funtion versions. By using
|
||||
aliases, you can access the specific version of a function an alias is pointing
|
||||
to (for example, to invoke the function) without having to know the specific
|
||||
version the alias is pointing to. Function aliases enable the following use
|
||||
cases:
|
||||
|
||||
- Easier support for promotion of new versions of functions and rollback when
|
||||
needed.
|
||||
|
||||
- Simplify management of event source mappings.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
- As a function developer, you want to create an alias that points to function
|
||||
version, and remapping of aliases to different function versions.
|
||||
|
||||
- As an application developer who relies on the Qinling functions, I want a
|
||||
safe and sustainable way to call the functions without changing the
|
||||
applications after the function is updated.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
A new database table needs to be created to store the mappings from alias to
|
||||
function and function version.
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
* Create function alias that points to the specified function version. After
|
||||
creation, Qinling returns the function alias information, including
|
||||
function id, version id, alias name, description
|
||||
and timestamps.
|
||||
|
||||
* POST ``/aliases``
|
||||
* Parameters: function_id
|
||||
* Parameters: description
|
||||
* Parameters: function_version
|
||||
* Parameters: name
|
||||
|
||||
* the 'name' must be unique within the project
|
||||
|
||||
* Update function alias. Update the function id and version to which the alias
|
||||
points and alias description.
|
||||
|
||||
* PUT ``/aliases/<alias_name>``
|
||||
* Parameters: function_id
|
||||
* Parameters: description
|
||||
* Parameters: function version
|
||||
|
||||
* Get the specified function alias information.
|
||||
|
||||
* GET ``/aliases/<alias_name>``
|
||||
|
||||
* List the aliases.
|
||||
|
||||
* GET ``/aliases/``
|
||||
|
||||
* Delete specific function alias. When deleting alias, need to check if there is
|
||||
any webhook/running job using the alias.
|
||||
|
||||
* DELETE ``/aliases/<alias_name>``
|
||||
|
||||
* Create execution. Create execution with alias, so the execution will be
|
||||
created with the function id and version number the alias points to.
|
||||
|
||||
* Create job. Create job with alias, so the job will be created with the
|
||||
function id and version number the alias points to.
|
||||
|
||||
* Create webhook. Create webhook with alias, so the webhook will be
|
||||
created with the function id and version number the alias points to.
|
||||
|
||||
* Delete function. Qinling needs to check if there is any alias using that
|
||||
function, if there is alias associated with the function, the function
|
||||
deletion will fail.
|
||||
|
||||
* Delete function version. Qinling needs to check if there is any alias using that
|
||||
function version, if there is alias associated with the function version,
|
||||
the function version deleteion will fail.
|
||||
|
||||
End user impact
|
||||
---------------
|
||||
|
||||
All the API changes should be supported in CLI.
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Deployer impact
|
||||
---------------
|
||||
|
||||
Database migration script is provided.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Dong Ma <winterma.dong@gmail.com>
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Pay attention to the notes written in ``REST API impact`` section.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* Introduction to AWS Lambda Aliases
|
||||
https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html
|
@ -30,6 +30,7 @@ Specs
|
||||
|
||||
function_versioning
|
||||
customize_resource
|
||||
function_aliases
|
||||
|
||||
Template
|
||||
--------
|
||||
|
Loading…
Reference in New Issue
Block a user