Forum Discussion

msaud's avatar
msaud
Icon for Cirrus rankCirrus
Jun 19, 2023

F5 iRUule not working

This is API Application rather than web browser.

 

Source URL:

https://mule-dev-openai-lb.ucsf.edu/tccog2/openai/deployments/tccognitivedeployment/completions?api-version=2022-12-01

 

Destination URL:

https://tccog2.openai.azure.com/openai/deployments/tccognitivedeployment/completions?api-version=2022-12-01

 

tccog2 – azure openai instance name

irule Requirements:

1) destination host translation (prepend openai.azure.com with azure openai instance name) Immediate resource after the host name in the source url is extracted and prepended in the dest host name. As shown in the example above tccog2 is extracted from source url and prepended in the dest host name tccog2.openai.azure.com.

2) uri path translation (remove the azure openai instance name from uri path) Rest of the uri path (/openai/deployments/tccognitivedeployment/completions?api-version=2022-12-01) after the first resource from the host name is extracted and send us the destination uri path after the host name.

Following irule is not working to satisfy the above requirements:

 

when HTTP_REQUEST {

if { [HTTP::host] equals "mule-dev-openai-lb.ucsf.edu"} {

if { [HTTP::path] equals "/tccog2" } {

set newUri [string range [HTTP::uri] [string first / [HTTP::uri] 1] end]

set HTTP::uri ${newUri}

HTTP::redirect "https://tccog2.openai.azure.com[HTTP::uri]"

}

}

}

  • Hello msaud 

    Please remove the "set" in the "set HTTP::uri ${newUri}" command so it reads "HTTP::uri ${newUri}".  I usually don't have the brackets but I doubt that makes a difference.

    Scott

  • [edit] Ignore this, ScottE had the proper advice below 🙂

     

    What's not working for you exactly - what behaviour are you seeing?

    I did a quick test in the lab and I see the behaviour you'd expect (a 302 redirect) - obviously I've set the IP for mule-dev-openai-lb.ucsf.edu to the VIP in my lab here:

     

    $ curl -kv 'http://mule-dev-openai-lb.ucsf.edu/tccog2/openai/deployments/tccognitivedeployment/completi
    ons?api-version=2022-12-01'
    *   Trying 10.10.16.10:80...
    * Connected to mule-dev-openai-lb.ucsf.edu (10.10.16.10) port 80 (#0)
    > GET /tccog2/openai/deployments/tccognitivedeployment/completions?api-version=2022-12-01 HTTP/1.1
    > Host: mule-dev-openai-lb.ucsf.edu
    > User-Agent: curl/7.81.0
    > Accept: */*
    >
    * Mark bundle as not supporting multiuse
    * HTTP 1.0, assume close after body
    < HTTP/1.0 302 Moved Temporarily
    < Location: https://tccog2.openai.azure.com/tccog2/openai/deployments/tccognitivedeployment/completions?api-version=2022-12-01
    < Server: BigIP
    * HTTP/1.0 connection set to keep alive!
    < Connection: Keep-Alive
    < Content-Length: 0
    <
    * Connection #0 to host mule-dev-openai-lb.ucsf.edu left intact