Hi Eric,
Even after the restart, gateway is still using the OLD service
implementation URL. Do I have to rebuild the index, clear cache or do
something else??
When grepped for old URL, I can still see it in indices folder of elastic
search. I tried to clear cache and used refresh commands but did not work!
Appreciate if you can provide some more guidance here.
Thanks
Sanjay
On Wed, Jan 6, 2016 at 12:57 PM, Sanjay Melinamani <mssanjay(a)gmail.com>
wrote:
Thanks a ton! Worked like a charm :)
Sanjay
On Tue, Jan 5, 2016 at 8:01 AM, Eric Wittmann <eric.wittmann(a)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(a)redhat.com
>> <mailto:eric.wittmann@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(a)lists.jboss.org <mailto:Apiman-user@lists.jboss.org>
>>
https://lists.jboss.org/mailman/listinfo/apiman-user
>>
>>
>>