aerokube / ggr-ui Goto Github PK
View Code? Open in Web Editor NEWThe missing /status API for Ggr
Home Page: https://aerokube.com/ggr-ui/latest/
License: Apache License 2.0
The missing /status API for Ggr
Home Page: https://aerokube.com/ggr-ui/latest/
License: Apache License 2.0
Can you add a screenshot of the UI in the README.md ?
As described.
Hello.
We are using ggr-ui with two selenoid backends.
In ggr-ui status page one backend is named "test" and another "unknown".
I have no idea where ggr got these names for them.
The quota file test.xml
describes selenoid servers like this:
<host name="192.168.34.91" port="4444" count="50"/>
<host name="192.168.131.2" port="4444" count="35"/>
How can we set names for backend servers defined in quota file?
Thanks!
Hello.
We've added a third selenoid host to our ggr cluster and modified quota file to include new host.
GGR creates sessions on new host, but these sessions are not displayed neither in ggr-ui /status page, nor in selenoid-ui page on ggr server (both pages succesfully display sessions from two older hosts).
We simply set up selenoid on new host and added new host's ip to quota file.
Perhaps we've missed some vital step while adding a new host to the cluster?
Spotted in ggr-ui v.1.2.0 inside docker container (docker pull aerokube/ggr-ui:1.2.0).
When generating json from different selenoid servers, it glues it together, but instead of taking it from different servers, it takes it from one server and multiplies it by the number of servers.
On version 1.1.2 everything works fine.
Error example:
I have the following setup...
2 docker hosts running 2 copies of Selenoid, 1 on each host.
I have GGR and GGR-UI running with quota XML files specifying each of the 2 hosts as hosts in the XML.
The quota XML files are on a volume that is shared to all relevant GGR / GGR-UI containers.
When I point Selenoid-UI at GGR-UI, and open the Selenoid-UI page, it shows the Selenoid status as Red. In the logs for the Selenoid-UI container I see this error repeated:
can't get status (json: cannot unmarshal number into Go value of type selenoid.State)
For reference, this is what is reported by http://<ggr-ui-url>:8888/status
when a container is running a test in Chrome:
{
"browsers": {
"chrome": {
"66.0": {
"test": {
"count": 1,
"sessions": [
{
"caps": {
"applicationContainers": null,
"browserName": "chrome",
"browserVersion": "",
"containerHostname": "",
"env": null,
"hostsEntries": null,
"labels": null,
"name": "",
"screenResolution": "1920x1080x24",
"selenoid:options": null,
"timeZone": "",
"version": "66.0",
"videoFrameRate": 0,
"videoName": "",
"videoScreenSize": "1920x1080"
},
"container": "9338f9c4ec56018360ca1048ea8e63e7ca6b736084582d2187419cec9e4e622e",
"containerInfo": {
"id": "9338f9c4ec56018360ca1048ea8e63e7ca6b736084582d2187419cec9e4e622e",
"ip": "172.17.0.3"
},
"id": "11683c93804e090b01a66b616c644a1e6b2cf214509835c980ccdb61ab5ef037",
"screen": "1920x1080x24",
"vnc": false
}
]
}
}
},
"firefox": {
"58.0": {
}
}
},
"pending": 0,
"queued": 0,
"total": 10,
"used": 1
}
And this is what is reported from /status
when no tests are running:
{
"browsers": {
"chrome": {
"66.0": {
}
},
"firefox": {
"58.0": {
}
}
},
"pending": 0,
"queued": 0,
"total": 10,
"used": 0
}
Please let me know if I can provide any further info, or if I should file this issue on the Selenoid-UI page. Thanks!
Implement functionality Proxying VNC Traffic.
I am sure I am missing something , but dont know what . I am able to run my tests fine but cant see status on selenoid ui ..Seems ggr ui is unable to connect to selenoid.
This is my quota file -
<qa:browsers xmlns:qa="urn:config.gridrouter.qatools.ru">
<browser name="firefox" defaultVersion="45.0">
<version number="58.0">
<region name="1">
<host name="localhost" port="4445" count="1"/>
</region>
</version>
</browser>
</qa:browsers>
My docker-compose looks like this--
version: '3'
services:
selenoid:
network_mode: bridge
image: aerokube/selenoid:latest-release
volumes:
- "/etc/selenoid:/etc/selenoid"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/opt/selenoid/video:/opt/selenoid/video"
- "./logs:/opt/selenoid/logs"
environment:
- OVERRIDE_VIDEO_OUTPUT_DIR=$PWD
#"-video-output-dir", "/opt/selenoid/video",
command: ["-conf", "/etc/selenoid/browsers.json","-video-output-dir", "/opt/selenoid/video","-log-output-dir","/opt/selenoid/logs","-timeout","3m","sessionTimeout","2m"]
ports:
- "4445:4444"
ggr-ui:
image: "aerokube/ggr-ui:latest-release"
network_mode: bridge
ports:
- "8888:8888"
volumes:
- "/etc/grid-router/quota:/etc/grid-router/quota:ro"
selenoid-ui:
image: "aerokube/selenoid-ui"
network_mode: bridge
links:
- ggr-ui
ports:
- "9090:8080"
environment:
- DBUS_SESSION_BUS_ADDRESS=/dev/null
command: ["--selenoid-uri", "http://ggr-ui:8888"]
Hello!
Something seems to be silently failing/throwing errors, but hadn't noticed until I looked in the GGR-UI logs for the docker container.
Log has numerous entries of the following:
2019/03/13 10:17:37 [STATUS] [Failed to parse response: invalid character 'T' looking for beginning of value]
Not sure what is happening.
Many thanks
Hello,
I've set up a 3 node cluster and I'm trying to use ggr-ui to aggregate the VNC/Logs into a single Selenoid-UI.
The individual Selenoid-UI instances work great, but if I try to view the aggregate view, the VNC/Logs are connected/reconnected over and over again.
Seeing Connection closed (code: 1000) on the WS session in Dev tools and remote Selenoid logs show connect/disconnect of VNC/Log sessions.
Need to pass request context to remote host requests.
Via -limit
flag.
Same stuff as for Ggr.
Currently, if there are no running Selenoid instances behind ggr (or almost all of them are down), it takes a while until /status request gets resolved with some response. It's a bit inconvenient. Would be good to have some mechanism to sort these not running instances out and do not consider them in order to have more fast ggr-ui request-response logic. Once instance becomes available, it should be considered then. Any other suggestions to improve this would be appreciated.
Use goroutines to accelerate polling.
As described.
When setting up ggr > ggr-ui > selenoid-ui using docker-compose, selenoid-ui fails to get the status from ggr-ui. If I access the ggr-ui /status API directly, i get the response as expected.
Repeating Error:
selenoid-ui_1 | 2018/06/18 20:09:49 can't get status (Get http://ggrui:8888/status: context deadline exceeded)
docker-compose file:
version: '3'
services:
ggr:
restart: always
image: aerokube/ggr
ports:
- "4444:4444"
volumes:
- "./:/etc/grid-router:ro"
command: ["-quotaDir", "/etc/grid-router"]
ggr-ui:
restart: always
image: aerokube/ggr-ui
ports:
- "8888:8888"
volumes:
- "./:/etc/grid-router/quota:ro"
selenoid-ui:
restart: always
image: aerokube/selenoid-ui
links:
- ggr-ui
ports:
- "8080:8080"
command: ["--selenoid-uri", "http://ggr-ui:8888"]
I have used the same docker-compose configuration with base selenoid > selenoid-ui with no issues. Any ideas as to whats causing this?
Needed to correctly proxy wss connections.
As described.
Needed e.g. when run against a set of Windows VMs with VNC server already installed. Similar to Ggr feature.
docker kill -s HUP ggr-ui-container-id
/status
response aggregated from currently running selenoid instances./status
endpoint for non-existing selenoid instance.GGR-UI logs:
2018/05/23 13:16:29 [STATUS] [Failed to fetch status from http://10.0.185.224:4444: Get http://10.0.185.224:4444/status: dial tcp 10.0.185.224:4444: i/o timeout] [10.0.160.134]
Relates to #5
Needed to show videos list in Selenoid UI
Similarly to Ggr.
As described.
Similarly to Ggr and Selenoid.
Docker image versions: latest-release for all images
Docker version : Docker version 1.13.1-cs2, build ad32da7
GGR-UI error : 2018/08/15 17:04:25 [STATUS] [Failed to fetch status: Get http://ip:4444/status: context canceled] [172.17.0.1]
selenoid-UI error: 2018/08/15 17:02:00 can't get status (Get http://ip:8888/status: context deadline exceeded)
When running Selenoid behind GGR I get a 400 when attempting to start a manual session. I assume this is because ggr-ui does not proxy /wd/hub/session to the GGR. Can this function be added to allow for manual sessions to be created on large deployments behind GGR?
I have some problems with GGR and Selenoid. I tried to set up and followed the documentation and below are the two ways I tried to set up GGR on a Linux machine. We have three servers selenoid1, selenoid2, and selenod3. I am configuring GGR on the selenoid3 server
Quota file and htpasswd was created as described on the official site, quota file contains host selenoid1 and selenoid2 server, and selenoid3 works as GGR server
Start Selenoid on all three server: docker run -d --name selenoid -p 4444:4444 -e TZ=Etc/GMT+0 -e OVERRIDE_VIDEO_OUTPUT_DIR=/usr/local/selenoid/video/ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/selenoid/config:/etc/selenoid/:ro -v /usr/local/selenoid/logs:/opt/selenoid/logs -v /usr/local/selenoid/video:/opt/selenoid/video aerokube/selenoid:latest-release -video-output-dir /opt/selenoid/video -timeout 3m0s -limit 8
Start GGR on selenoid3 server: docker run -d --name ggr -p 4445:4444 -v /etc/grid-router:/etc/grid-router:ro aerokube/ggr:latest-release -guests-allowed -guests-quota /etc/grid-router/quota/auto
Start GGR-UI on selenoid3 server: docker run -d --name ggr-ui -p 8888:8888 -v /etc/grid-router/quota/:/etc/grid-router/quota:ro aerokube/ggr-ui:latest-release
Start Selenoid-UI on all three server: docker run -d --name selenoid-ui -p 8081:8080 --link ggr-ui aerokube/selenoid-ui:latest-release --selenoid-uri http://ggr-ui:8888
With the above configuration when I run curl http://auto:password@#{ggr_servername}:4445/status
and I get 404 page not found when I run the test it does not connect to GGR and gives a 500 error. I also restarted all the containers again but still, I got the same error
GGR-ui log:
2021/07/02 21:10:32 [INIT] [Loading quota files from /etc/grid-router/quota] 2021/07/02 21:10:32 [INIT] [Listen on :8888]
GGR logs:
2021/07/02 22:00:28 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Users file is "/etc/grid-router/users.htpasswd"] 2021/07/02 22:00:28 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Loading configuration files from "/etc/grid-router/quota"]
2. As per my understanding based on the official guide on the GGR site
Quota file and htpasswd was created as described on the official site, quota file contains host selenoid1 and selenoid2 server, and selenoid3 works as GGR server
Start Selenoid on all three servers: docker run -d --name selenoid -p 4444:4444 -e TZ=Etc/GMT+0 -e OVERRIDE_VIDEO_OUTPUT_DIR=/usr/local/selenoid/video/ -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/selenoid/config:/etc/selenoid/:ro -v /usr/local/selenoid/logs:/opt/selenoid/logs -v /usr/local/selenoid/video:/opt/selenoid/video aerokube/selenoid:latest-release -video-output-dir /opt/selenoid/video -timeout 3m0s -limit 8
Start GGR on selenoid3 server: docker run -d --name ggr -v /etc/grid-router:/etc/grid-router:ro aerokube/ggr:latest-release -guests-allowed -guests-quota /etc/grid-router/quota/auto
Start GGR-UI on selenoid3 server:docker run -d --name ggr-ui -p 8888:8888 -v /etc/grid-router/quota/:/etc/grid-router/quota:ro aerokube/ggr-ui:latest-release
Start Selenoid-UI on all three server: docker run -d --name selenoid-ui -p 8081:8080 aerokube/selenoid-ui:latest-release --selenoid-uri http://#{ggr_servername}:8888
Logs GGR:
2021/07/02 20:51:55 [STATUS] [Failed to fetch status: Get http://#{selenoid1_name}:4444/status: dial tcp: lookup #{selenoid1} on #{selenoid1_ip}: no such host] [172.17.0.1] 2021/07/02 20:51:56 [SHUTDOWN] [Shutting down in 5m0s] 2021/07/02 21:05:00 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Users file is "/etc/grid-router/users.htpasswd"] 2021/07/02 21:05:00 [-] [-] [INIT] [-] [-] [-] [-] [-] [-] [Loading configuration files from "/etc/grid-router/quota"]
Logs complain about Selenoid1 no such details for Selenoid2, I assume Selenoid2 is working and connected successfully.
Logs GGR-UI
2021/07/02 22:54:37 [INIT] [Loading quota files from /etc/grid-router/quota] 2021/07/02 22:54:37 [INIT] [Listen on :8888]
With the above configuration when I run curl http://auto:password@#{ggr_servername}:4444/status
I get JSON response as expected and I am able to run the test but tests are executing on Selenoid3 server and chrome browser and vnc container start on selenoid3 server, I was expecting that tests will execute on Selenoid1 or Selenoid2 server but that never happens. I am not sure what is wrong with my configuration, is something I am missing?
I appreciate your help!!!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.