Thanks  a ton! Worked like a charm :) 

Sanjay


On Tue, Jan 5, 2016 at 8:01 AM, Eric Wittmann <eric.wittmann@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@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@lists.jboss.org <mailto:Apiman-user@lists.jboss.org>
        https://lists.jboss.org/mailman/listinfo/apiman-user