+1 for the change in the next release. @wasura @malintha shall we create a issue and track it?
On Fri, May 1, 2020 at 12:06 AM Bhathiya Jayasekara <bhath...@wso2.com> wrote: > Yes, we can keep both formats for some time, and mention the old format is > deprecated. It won't affect any existing users that way. We just need to > decide when we can do this. > > Thanks, > Bhathiya > > On Thu, Apr 30, 2020 at 6:57 PM Harsha Kumara <hars...@gmail.com> wrote: > >> >> >> On Thu, Apr 30, 2020 at 11:18 PM Uvindra Dias Jayasinha <uvin...@wso2.com> >> wrote: >> >>> Ideally it would be great if we could make the commands more consistent >>> but we need to take care about changing existing ones because we can end up >>> breaking customers existing CI/CD flows. >>> >>> The commands are now a binding API. If we are changing them in the >>> future we need to first deprecate the current ones. >>> >> Yes that's what I meant to decide best way to migrate our existing >> commands later and adhere new commands to the convention. We still may have >> the old commands in depreciated mode and do a release with the changes. We >> can't change old commands without addressing the backward compatibility. >> >>> >>> On Thu, 30 Apr 2020 at 18:10, Harsha Kumara <hars...@gmail.com> wrote: >>> >>>> >>>> >>>> On Thu, Apr 30, 2020 at 10:02 PM Wasura Wattearachchi <was...@wso2.com> >>>> wrote: >>>> >>>>> Hi all, >>>>> >>>>> There are two (2) types of command signatures in API Controller such >>>>> as apictl [verb] [noun] [flags] and apictl [command] [flags]. Below >>>>> are the commands belonging to those two (2) categories. >>>>> >>>>> apictl [verb] [noun] [flags] >>>>> >>>>> apictl [command] [flags] >>>>> >>>>> Existing commands: >>>>> >>>>> - >>>>> >>>>> apictl list apis [flags] >>>>> - >>>>> >>>>> apictl list apps [flags] >>>>> - >>>>> >>>>> apictl login <env-name> [flags] >>>>> - >>>>> >>>>> apictl logout <env-name> [flags] >>>>> - >>>>> >>>>> apictl install api-operator [flags] >>>>> - >>>>> >>>>> apictl uninstall api-operator [flags] >>>>> - >>>>> >>>>> apictl change registry [flags] >>>>> - >>>>> >>>>> apictl version <---- apictl noun only >>>>> - >>>>> >>>>> apictl help <----- apictl verb only >>>>> >>>>> >>>>> Newly added commands: >>>>> >>>>> - >>>>> >>>>> apictl list api-products [flags] >>>>> >>>>> Existing commands: >>>>> >>>>> - >>>>> >>>>> apictl add [flags] >>>>> - >>>>> >>>>> apictl add-env [flags] >>>>> - >>>>> >>>>> apictl remove-env [flags] >>>>> - >>>>> >>>>> apictl export-api [flags] >>>>> - >>>>> >>>>> apictl export-apis [flags] >>>>> - >>>>> >>>>> apictl export-app [flags] >>>>> - >>>>> >>>>> apictl import-api [flags] >>>>> - >>>>> >>>>> apictl import-app [flags] >>>>> - >>>>> >>>>> apictl init [flags] >>>>> - >>>>> >>>>> apictl get-keys [flags] >>>>> - >>>>> >>>>> apictl set [flags] >>>>> - >>>>> >>>>> apictl update [flags] >>>>> >>>>> >>>>> Newly added commands: >>>>> >>>>> - >>>>> >>>>> apictl delete-api [flags] >>>>> - >>>>> >>>>> apictl change-api-status [flags] >>>>> - >>>>> >>>>> apictl delete-api-product [flag] >>>>> >>>>> >>>>> Commands to be added: >>>>> >>>>> - >>>>> >>>>> apictl import-api-product [flags] >>>>> - >>>>> >>>>> apictl export-api-product [flags] >>>>> >>>>> >>>>> Eventually, it would be better if we can stick into one command >>>>> structure (which is apictl [verb] [noun] [flags]) as >>>>> @Bhathiya Jayasekara <bhath...@wso2.com> and @Harsha Kumara >>>>> suggested. +1 for that, since the commands will be more consistent. >>>>> >>>>> But Is it okay to start with the commands for API Products only (IMO, >>>>> users will be confused if this is only done for API Products, not APIs or >>>>> Apps) or shall we convert all the commands at once, in a future release? >>>>> >>>> Yes it would good if those commands become more consistent. At the >>>> moment we should follow the proper strategy when adding new commands. We >>>> may need to decide best way to move existing commands to a consistent >>>> format. Having consistency will make commands less complicated. >>>> >>>>> >>>>> Your opinions will be highly appreciated. >>>>> >>>>> Thank you! >>>>> >>>>> On Thu, Apr 16, 2020 at 10:13 AM Wasura Wattearachchi <was...@wso2.com> >>>>> wrote: >>>>> >>>>>> Hi all, >>>>>> >>>>>> This is regarding the issue >>>>>> <https://github.com/wso2/product-apim-tooling/issues/168> which >>>>>> requests to support listing and generating tokens for API Products >>>>>> through >>>>>> API Controller (apictl). Currently, we do not support any functionality >>>>>> related to API Products from API Controller side. Thus, we can introduce >>>>>> the following four (4) functionalities as a new feature (rather than a >>>>>> fix >>>>>> to the above-stated issue) in order to improve API Controller, additional >>>>>> to what has been requested in the above issue. >>>>>> >>>>>> >>>>>> 1. >>>>>> >>>>>> Import API Products >>>>>> 2. >>>>>> >>>>>> Export API Products >>>>>> 3. >>>>>> >>>>>> List API Products >>>>>> 4. >>>>>> >>>>>> Generate keys (tokens) for API Products >>>>>> >>>>>> >>>>>> Approaches >>>>>> >>>>>> Here, we can identify two (2) approaches for importing/exporting API >>>>>> Products. >>>>>> >>>>>> Approach 1 - Import/export without the dependant APIs >>>>>> >>>>>> 1. >>>>>> >>>>>> Import API Products >>>>>> >>>>>> Allow to import an API Product only if the dependent APIs have been >>>>>> already imported/created inside the API Manager. The main task here >>>>>> is to check whether the required resources to create the API Product are >>>>>> with the APIs in the API Manager. >>>>>> >>>>>> 1. >>>>>> >>>>>> Export API Products >>>>>> >>>>>> Allow to export/download an API Product without the related APIs >>>>>> inside the archive file. >>>>>> >>>>>> Approach 2 - Import/export with the dependant APIs >>>>>> >>>>>> 1. >>>>>> >>>>>> Import API Products >>>>>> >>>>>> Give freedom to the user to import an API Product along with the >>>>>> related APIs (archived together) only if the dependent APIs have not >>>>>> been already imported/created inside the API Manager. If the user >>>>>> tries to import an already imported API/APIs when importing the API >>>>>> Product, an error should be displayed. >>>>>> >>>>>> 1. >>>>>> >>>>>> Export API Products >>>>>> >>>>>> Allow to export/download an API Product with the dependent APIs >>>>>> inside the archive file. >>>>>> >>>>>> Comparison of Approach 1 and 2 >>>>>> >>>>>> Approach 1 >>>>>> >>>>>> Approach 2 >>>>>> >>>>>> - >>>>>> >>>>>> Advantage >>>>>> >>>>>> Basically our rule would be "If you need to create a CI/CD process >>>>>> for an API Product, you should already have performed CI/CD process for >>>>>> all >>>>>> the dependent APIs". >>>>>> >>>>>> So as you can see, after doing CI/CD for each independent API you >>>>>> will have all the required APIs imported/exported. Then you can proceed >>>>>> with CI/CD for API Products smoothly since the required APIs have been >>>>>> already imported/exported. (If APIs are shared between two or more API >>>>>> Products, when importing those API Products, those shared APIs will not >>>>>> be >>>>>> imported/updated repeatedly, which is efficient) >>>>>> >>>>>> >>>>>> - >>>>>> >>>>>> Disadvantage >>>>>> >>>>>> Manually need to setup the CI/CD flows for API Products as the tool >>>>>> does not take care of updating the dependent APIs. >>>>>> >>>>>> - >>>>>> >>>>>> Advantage >>>>>> >>>>>> Easier to setup the CI/CD flows for API Products as the tool takes >>>>>> care of updating the dependent APIs. >>>>>> >>>>>> >>>>>> - >>>>>> >>>>>> Disadvantage >>>>>> >>>>>> If APIs are shared between two or more API Products, when importing >>>>>> those API Products, those shared APIs will be imported/updated >>>>>> repeatedly, >>>>>> which is inefficient. >>>>>> >>>>>> Commands to be used >>>>>> >>>>>> Here, we can identify two (2) ways such as using existing commands or >>>>>> using a new set of commands. >>>>>> >>>>>> Using existing commands >>>>>> >>>>>> 1. >>>>>> >>>>>> Import API Products >>>>>> >>>>>> Use the same command that we currently use to import an API “apictl >>>>>> import-api”. >>>>>> >>>>>> 1. >>>>>> >>>>>> Export API Products >>>>>> >>>>>> Use the same command that we currently use to export an API “apictl >>>>>> export-api”. >>>>>> >>>>>> Currently, name (-n) and (-v) are mandatory in the export-api >>>>>> command. But for products, we do not have a version. So we cannot make >>>>>> the >>>>>> version parameter mandatory. If we do not mandate it, no issue with >>>>>> products, but we need a way to download APIs without the version param. >>>>>> Then we can follow the approach like: if there is only one API with >>>>>> name:foo, we download it. But if there are multiple APIs with name:foo >>>>>> (with multiple versions) we give an error. >>>>>> >>>>>> 1. >>>>>> >>>>>> List API Products >>>>>> >>>>>> List API Products along with the APIs using the existing command “apictl >>>>>> list apis”. Further, we can improve this command by introducing a >>>>>> flag such as --api-products which can take either true or false. If true >>>>>> is >>>>>> given, the API Products will be listed along with the APIs and if false >>>>>> is >>>>>> given, only the APIs will get listed (which is similar to the current >>>>>> behaviour of “apictl list apis” command) not API Products. (This is >>>>>> recommended if you choose Command 1 in both import and export as stated >>>>>> earlier to maintain the consistency) >>>>>> >>>>>> 1. >>>>>> >>>>>> Generate keys (tokens) for API Products >>>>>> >>>>>> We can extend the current command “apictl get-keys” which has the >>>>>> ability to generate keys for APIs, in a way that it will have the ability >>>>>> to generate keys for API Products as well. >>>>>> >>>>>> Using a new set of commands >>>>>> >>>>>> 1. >>>>>> >>>>>> Import API Products >>>>>> >>>>>> Introduce a new command similar to what we currently use when >>>>>> importing an API. Example:- “apictl import-api-product”. >>>>>> >>>>>> 1. >>>>>> >>>>>> Export API Products >>>>>> >>>>>> Introduce a new command similar to what we currently use when >>>>>> exporting an API. Example:- “apictl export-api-product”. >>>>>> >>>>>> 1. >>>>>> >>>>>> List API Products >>>>>> >>>>>> Introduce a separate command as “apictl list api-products” to list >>>>>> API Products. >>>>>> >>>>>> Comparison of “Using existing commands” and “Using a new set of >>>>>> commands” >>>>>> >>>>>> Using existing commands >>>>>> >>>>>> Using a new set of commands >>>>>> >>>>>> - >>>>>> >>>>>> Advantage >>>>>> >>>>>> Can be used directly in CI/CD flow without worrying about the project >>>>>> type whether it is an API or an API Product. (Refer to the disadvantage >>>>>> of >>>>>> the other column for more information) >>>>>> >>>>>> >>>>>> - >>>>>> >>>>>> Disadvantage >>>>>> >>>>>> Since we are using “apictl export-api” (or “apictl import-api”) there >>>>>> is a wording issue. >>>>>> >>>>>> But IMO, this is not a problem, since API Product is in fact after >>>>>> all an API. >>>>>> >>>>>> - >>>>>> >>>>>> Advantage >>>>>> >>>>>> Since we have another command for importing/exporting apps as >>>>>> import-apps/export-apps, one could naturally go for a new command for >>>>>> import-api-product/export-api-product. >>>>>> >>>>>> >>>>>> - >>>>>> >>>>>> Disadvantage >>>>>> >>>>>> In CI/CD flow this can be a bit inconvenient because APIs and API >>>>>> Products are very similar, so would be its project structure. But from >>>>>> the >>>>>> automation script, it has to figure out which command to execute: >>>>>> export-api or export-api-product (same for import as well), since it does >>>>>> not know this project is an API or an API Product. >>>>>> >>>>>> Your feedback to choose the appropriate approaches and commands (with >>>>>> the problems that may arise) for each of the above tasks will be much >>>>>> appreciated. Furthermore, it would be great if new more simplified >>>>>> approaches can be identified in addition to the above-stated approaches. >>>>>> >>>>>> Thank you! >>>>>> -- >>>>>> *Wasura Wattearachchi* | Software Engineer | WSO2 Inc. >>>>>> (m) +94775396038 | (e) was...@wso2.com | (b) Medium >>>>>> <https://medium.com/@wasuradananjith> >>>>>> [image: http://wso2.com/signature] <http://wso2.com/signature> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> *Wasura Wattearachchi* | Software Engineer | WSO2 Inc. >>>>> (m) +94775396038 | (e) was...@wso2.com | (b) Medium >>>>> <https://medium.com/@wasuradananjith> >>>>> [image: http://wso2.com/signature] <http://wso2.com/signature> >>>>> >>>>> >>>>> >>>> >>>> -- >>>> *Harsha Kumara* >>>> *PhD Student* >>>> *LaTrobe University* >>>> >>> >>> >>> -- >>> Regards, >>> Uvindra >>> >>> Mobile: 777733962 >>> >> >> >> -- >> *Harsha Kumara* >> *PhD Student* >> *LaTrobe University* >> > > > -- > *Bhathiya Jayasekara* | Senior Technical Lead | WSO2 Inc. > (m) +94 71 547 8185 | (e) bhathiya-@t-wso2-d0t-com > > > -- *Harsha Kumara* *PhD Student* *LaTrobe University*
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture