[Apiman-user] How to update backend implementation URL for published Service without changing the version

Sanjay Melinamani mssanjay at gmail.com
Wed Jan 6 12:57:04 EST 2016


Thanks  a ton! Worked like a charm :)

Sanjay


On Tue, Jan 5, 2016 at 8:01 AM, Eric Wittmann <eric.wittmann at redhat.com>
wrote:

> Drop the /_source from the PUT command. :)
>
> -Eric
>
> On 1/5/2016 1:45 AM, Sanjay Melinamani wrote:
>
>> Thanks Eric for your reply! makes sense...
>>
>> I tried to use the two CURL commands.
>>
>> GET worked and I was able to see the end point being used.
>> curl -XGET
>> http://localhost:19200/apiman_gateway/service/prism:osa:1.0/_source
>> {"endpoint":"http://OLD_URL
>> ","endpointType":"rest","publicService":false,"organizationId":"prism","serviceId":"osa","version":"1.0","endpointProperties":[],"policies":[]}
>>
>>
>>
>> But the PUT failed as below..
>>
>> curl -XPUT
>> http://localhost:19200/apiman_gateway/service/prism:osa:1.0/_source -d
>> '{"endpoint":"http://NEW_URL
>> ","endpointType":"rest","publicService":false,"organizationId":"prism","serviceId":"osa","version":"1.0","endpointProperties":[],"policies":[]}'
>>
>> No handler found for uri [/apiman_gateway/service/prism:osa:1.0/_source]
>> and method [PUT]
>>
>>
>> Thanks again for your time
>>
>> Sanjay
>>
>>
>> On Mon, Jan 4, 2016 at 11:26 AM, Eric Wittmann <eric.wittmann at redhat.com
>> <mailto:eric.wittmann at redhat.com>> wrote:
>>
>>     Hi Sanjay, thanks for the questions.
>>
>>     Currently there is no easy way to update the backend implementation
>>     endpiont URL without creating a new version of the service.
>>
>>     However, if this is a one-off sort of thing then you may be able to
>>     get it done.  It depends mostly on what configuration you are
>>     using.  But I'll explain based on the most recent 1.1.x release
>>     (1.1.9.Final) with its default configuration.
>>
>>     The Manager and Gateway are decoupled, resulting in the duplication
>>     of *some* of the data (including the endpoint URL).  So when you
>>     "publish" a service from the Manager, the Gateway is given
>>     information about the service.  This information is stored in the
>>     Gateway's "registry".  By default the registry implementation is
>>     elasticsearch.  So if you wanted to change the endpoint URL for a
>>     service, you would need to update that information in your Database
>>     (you did this) *and* in elasticsearch.
>>
>>     It's actually not that difficult to update the information in
>>     elasticsearch.  You'll need to find the correct record and then
>>     update it.  If you're using the default installation, then ES is
>>     running on port 19200.  If you want to change the following service:
>>
>>     Organization:  Example
>>     Service ID:    MyService
>>     Version:       1.0
>>
>>     Then you might do something like this:
>>
>>     curl -XGET
>>
>> http://localhost:19200/apiman_gateway/service/Example:MyService:1.0/_source
>>
>>     You could then take that JSON result, modify the bits you want to
>>     change, and then update it like so (as an example - please replace
>>     the JSON below with the JSON you get back from the GET above):
>>
>>     curl -XPUT
>>     http://localhost:19200/apiman_gateway/service/Example:MyService:1.0
>> -d '
>>     {
>>        "endpoint" : "http://UPDATED-ENDPOINT-HERE",
>>        "endpointType" : "rest",
>>        "publicService" : true,
>>        "organizationId" : "Example",
>>        "serviceId": "MyService",
>>        "version" : "1.0",
>>        "endpointProperties": [],
>>        "policies":[]
>>     }
>>     '
>>
>>     Once this is done you'll have to restart apiman so that the Gateway
>>     picks up the changes.
>>
>>     Note: we are making some changes in apiman 1.2.x that will make all
>>     of this easier under some circumstances.  In particular, as of
>>     apiman 1.2.0.Final you will be able to re-publish "Public" services
>>     (now called APIs).  So if the API is public then you can simply make
>>     changes and then republish those changes to the Gateway.  If the API
>>     is *not* public then the current semantics are the same:  you cannot
>>     make changes and republish because that may violate contracts that
>>     consumers have made with your API.
>>
>>     -Eric
>>
>>
>>
>>     On 12/29/2015 12:19 PM, Sanjay Melinamani wrote:
>>
>>         Hi All,
>>         I am using APIMAN 1.1.9 and for an existing API that I have
>>         published to
>>         consumers, I like to change its backend implementation end point
>> URL
>>         without changing the API service version.
>>         I updated the backend implementation URL in database table
>>         "service_versions". I can see the updated URL from UI but still
>> the
>>         gateway is using the old implementation URL specified.
>>         Does it cache the implementation URL once the service is
>>         published ? Is
>>         there anyway I can update  the implementation URL for an
>>         existing service?
>>
>>         Appreciate your time and help.
>>
>>         Thanks
>>         Sanjay
>>
>>
>>
>>
>>         _______________________________________________
>>         Apiman-user mailing list
>>         Apiman-user at lists.jboss.org <mailto:Apiman-user at lists.jboss.org>
>>         https://lists.jboss.org/mailman/listinfo/apiman-user
>>
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/apiman-user/attachments/20160106/78f43c46/attachment-0001.html 


More information about the Apiman-user mailing list