On Tue, Jun 19, 2018 at 11:45 AM Malintha Amarasinghe <[email protected]>
wrote:
> Hi,
>
> Micro gateway CLI works completely separately to API manager; whenever a
> new API is added for a label, whenever there is a change happens to an
> existing label there won't be any events published etc like previously. The
> CLI needs to regenerate the source build it and push the artifacts to the
> deployment and the full process needs to complete. In most occasions, the
> CLI can be configured to run periodically to generate sources and do above
> job.
>
> But in this case, most of the time, the CLI will be uselessly generating
> sources building it and pushing the artifacts to deployment. Comparatively,
> building and pushing artifacts to deployment have a huge overhead compared
> to generating sources.
>
> This effort is to avoid that as much as possible by change-detection; i.e.
>
> 1. The CLI will check if any of the required resources has changed vs the
> previous build and notify the user after a successful "setup" (source
> generate) command using the command line output and the exit code of the
> command.
> 2. Using the exit code, a user can write a shell script etc to decide
> whether he should proceed with "build" or not.
>
>
> *Proposed implementation:*
>
> API Publisher APIs does not have ETag feature. Even if it is there, the
> ETag will be generated for the whole resource. For code generation, we will
> be only using few attributes of the resource, hence using a global ETag for
> a resource may lead to unnecessary changes for the ETag. Hence the proposed
> implementation will be using a CLI-side hash generation for *used
> attributes *of the resource (API/Policies) only.
>
> To mark the attributes which are used for generating the code, a newly
> introduced annotation "@Hash" can be used.
>
> Ex:
>
> public class APIDetailedDTO extends APIInfoDTO {
>
> /**
> * Swagger definition of the APIDetailedDTO which contains details about
> URI templates and scopes\n
> **/
> *@Hash*
> @JsonProperty("apiDefinition")
> public String getApiDefinition() {
> return apiDefinition;
> }
>
> public void setApiDefinition(String apiDefinition) {
> this.apiDefinition = apiDefinition;
> }
>
>
> /**
> * WSDL URL if the APIDetailedDTO is based on a WSDL endpoint\n
> **/
> @JsonProperty("wsdlUri")
> public String getWsdlUri() {
> return wsdlUri;
> }
>
> public void setWsdlUri(String wsdlUri) {
> this.wsdlUri = wsdlUri;
> }
>
> *@Hash*
> @JsonProperty("responseCaching")
> public String getResponseCaching() {
> return responseCaching;
> }
>
>
>
> The methods marked with *@Hash* will be automatically extracted from the
> code and will be used to generate the hashes for each resource.
>
> The generated hashes will be stored inside the CLI's temp folder against
> each resources' UUID, which will be used to compare the hash changes
> between next runs.
>
What are the fields which we have added to the hash?
>
>
> Highly appreciate your ideas on this.
>
> Thanks!
> Malintha
>
>
> --
> Malintha Amarasinghe
> *WSO2, Inc. - lean | enterprise | middleware*
> http://wso2.com/
>
> Mobile : +94 712383306
>
--
Harsha Kumara
Associate Technical Lead, WSO2 Inc.
Mobile: +94775505618
Blog:harshcreationz.blogspot.com
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev