mailweb.openeuler.org
Manage this list

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Compass-ci

Threads by month
  • ----- 2025 -----
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
compass-ci@openeuler.org

February 2021

  • 19 participants
  • 416 discussions
[PATCH compass-ci 1/2] scheduler: add public service info in scheduler
by Cao Xueliang 07 Feb '21

07 Feb '21
We add the service info use the submit script in lkp-tests, but the lkp-tests don't know the service info for a remote user, so, we add the public service info in scheduler. Signed-off-by: Cao Xueliang <caoxl78320(a)163.com> --- src/lib/job.cr | 2 ++ src/scheduler/public_service.cr | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/scheduler/public_service.cr diff --git a/src/lib/job.cr b/src/lib/job.cr index 89c92c1..9829e81 100644 --- a/src/lib/job.cr +++ b/src/lib/job.cr @@ -9,6 +9,7 @@ require "scheduler/constants.cr" require "scheduler/jobfile_operate.cr" require "scheduler/kernel_params.cr" require "scheduler/pp_params.cr" +require "scheduler/public_service.cr" require "../scheduler/elasticsearch_client" require "./json_logger" @@ -52,6 +53,7 @@ class Job def initialize(job_content : JSON::Any, id) @hash = job_content.as_h + @hash.merge!(public_service) @es = Elasticsearch::Client.new @account_info = Hash(String, JSON::Any).new @log = JSONLogger.new diff --git a/src/scheduler/public_service.cr b/src/scheduler/public_service.cr new file mode 100644 index 0000000..e3b888b --- /dev/null +++ b/src/scheduler/public_service.cr @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: MulanPSL-2.0+ +# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved. + +class Job + def public_service + hash = Hash(String, JSON::Any).new + + yaml_any = File.open("/etc/compass-ci/defaults/public_service.yaml") do |content| + YAML.parse(content).as_h? + end + return hash unless yaml_any + + hash.merge!(Hash(String, JSON::Any).from_json(yaml_any.to_json)) + + hash + end +end -- 2.23.0
2 2
0 0
[PATCH lkp-tests] change the submit option from '-l' to '-r'
by Li Ping 05 Feb '21

05 Feb '21
[why] -l means lftp lftp is just one of the clients, "download results" should use more clear and descriptive name. Signed-off-by: Li Ping <1477412247(a)qq.com> --- lib/monitor.rb | 6 +++--- sbin/submit | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/monitor.rb b/lib/monitor.rb index 9091c92a9..45f720f20 100755 --- a/lib/monitor.rb +++ b/lib/monitor.rb @@ -96,7 +96,7 @@ class Monitor end def set_result_root(data) - return unless @action['lftp_result'] + return unless @action['mirror_result'] return unless data['log'] data = JSON.parse(data['log']) @@ -113,7 +113,7 @@ class Monitor system "lftp -c mirror #{url} >/dev/null 2>&1" end - def lftp(data) + def result(data) if @result_root lftp_mirror else @@ -163,7 +163,7 @@ class Monitor output(data) connect(data, ws) - lftp(data) + result(data) stop(data, ws) if @action['stop'] end diff --git a/sbin/submit b/sbin/submit index e8b176489..a6f0cd387 100755 --- a/sbin/submit +++ b/sbin/submit @@ -52,8 +52,8 @@ options = OptionParser.new do |opts| actions << 'connect' end - opts.on('-l', '--lftp', 'lftp mirror job result') do - actions << 'lftp_result' + opts.on('-r', '--result', 'mirror job result dir') do + actions << 'mirror_result' end opts.on('-m', '--monitor', "monitor job status: use -m 'KEY: VALUE' to add rule") do -- 2.23.0
1 0
0 0
[PATCH lab-z9] the file of testboxes allocation scheme
by Zhang Dewan 05 Feb '21

05 Feb '21
how about this ? it's not easy to show the true purpose of all the machines. sometimes machine borrow out, user maybe install OS on the disk, when it's back, we should set pxe boot, and reboot it. Signed-off-by: Zhang Dewan <513619464(a)qq.com> --- allot/testboxes-allocation-scheme | 246 ++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 allot/testboxes-allocation-scheme diff --git a/allot/testboxes-allocation-scheme b/allot/testboxes-allocation-scheme new file mode 100644 index 0000000..db2940b --- /dev/null +++ b/allot/testboxes-allocation-scheme @@ -0,0 +1,246 @@ +# x86_64: 2288hv5-2s44p-384g +2288hv5-2s44p-384g--b1 + Board-test +2288hv5-2s44p-384g--b2 + pub-tbox + Board-test +2288hv5-2s44p-384g--b3 + VNC-server + Board-test +2288hv5-2s44p-384g--b4 + Openshift-analyse + Board-test +2288hv5-2s44p-384g--b5 + pub-tbox + Board-test +2288hv5-2s44p-384g--b6 + pub-tbox + Board-test +2288hv5-2s44p-384g--b7 + Board-test +# aarch64: taishan200-2280-2s48p-256g +taishan200-2280-2s48p-256g--a11 + multi-docker +taishan200-2280-2s48p-256g--a12 + multi-docker +taishan200-2280-2s48p-256g--a13 + multi-docker +taishan200-2280-2s48p-256g--a14 + multi-docker +taishan200-2280-2s48p-256g--a15 + multi-docker +taishan200-2280-2s48p-256g--a16 + multi-docker +taishan200-2280-2s48p-256g--a17 + multi-docker +taishan200-2280-2s48p-256g--a18 + multi-docker +taishan200-2280-2s48p-256g--a19 + multi-docker +taishan200-2280-2s48p-256g--a20 + multi-docker +taishan200-2280-2s48p-256g--a21 + pub-tbox +taishan200-2280-2s48p-256g--a22 + pub-tbox +taishan200-2280-2s48p-256g--a24 + long-runtime +taishan200-2280-2s48p-256g--a25 + long-runtime +taishan200-2280-2s48p-256g--a26 + long-runtime +taishan200-2280-2s48p-256g--a27 + long-runtime +taishan200-2280-2s48p-256g--a28 + long-runtime +taishan200-2280-2s48p-256g--a29 + long-runtime +taishan200-2280-2s48p-256g--a30 + long-runtime +taishan200-2280-2s48p-256g--a31 + long-runtime +taishan200-2280-2s48p-256g--a32 + long-runtime +taishan200-2280-2s48p-256g--a33 + long-runtime +taishan200-2280-2s48p-256g--a34 + long-runtime +taishan200-2280-2s48p-256g--a35 + long-runtime +taishan200-2280-2s48p-256g--a49 + pub-tbox +taishan200-2280-2s48p-256g--a53 + pub-tbox +taishan200-2280-2s48p-256g--a60 + multi-qemu +taishan200-2280-2s48p-256g--a61 + multi-qemu +taishan200-2280-2s48p-256g--a62 + multi-qemu +taishan200-2280-2s48p-256g--a63 + pub-tbox +taishan200-2280-2s48p-256g--a64 + pub-tbox +taishan200-2280-2s48p-256g--a65 + pub-tbox +taishan200-2280-2s48p-256g--a66 + pub-tbox +taishan200-2280-2s48p-256g--a67 + pub-tbox +taishan200-2280-2s48p-256g--a68 + pub-tbox +taishan200-2280-2s48p-256g--a69 + pub-tbox +taishan200-2280-2s48p-256g--a70 + pub-tbox +taishan200-2280-2s48p-256g--a71 + pub-tbox +taishan200-2280-2s48p-256g--a84 + long-runtime +taishan200-2280-2s48p-256g--a85 + long-runtime +taishan200-2280-2s48p-256g--a86 + long-runtime +taishan200-2280-2s48p-256g--a87 + long-runtime +taishan200-2280-2s48p-256g--a88 + long-runtime +taishan200-2280-2s48p-256g--a89 + long-runtime +taishan200-2280-2s48p-256g--a90 + long-runtime +taishan200-2280-2s48p-256g--a91 + long-runtime +taishan200-2280-2s48p-256g--a92 + long-runtime +taishan200-2280-2s48p-256g--a93 + long-runtime +taishan200-2280-2s48p-256g--a94 + long-runtime +taishan200-2280-2s48p-256g--a96 + long-runtime +taishan200-2280-2s48p-256g--a97 + long-runtime +taishan200-2280-2s48p-256g--a98 + long-runtime + Board-test +taishan200-2280-2s48p-256g--a99 + long-runtime +taishan200-2280-2s48p-256g--a100 + long-runtime +taishan200-2280-2s48p-256g--a101 + long-runtime +taishan200-2280-2s48p-256g--a103 + long-runtime +taishan200-2280-2s48p-256g--a104 + long-runtime +taishan200-2280-2s48p-256g--a106 + long-runtime +taishan200-2280-2s48p-256g--a107 + long-runtime +# aarch64: taishan200-2280-2s48p-512g +taishan200-2280-2s48p-512g--a102 + long-runtime +taishan200-2280-2s48p-512g--a105 + long-runtime +taishan200-2280-2s48p-512g--a95 + long-runtime +# aarch64: taishan200-2280-2s64p-256g +taishan200-2280-2s64p-256g--a3 + Board-test +taishan200-2280-2s64p-256g--a4 + pub-tbox +taishan200-2280-2s64p-256g--a5 + pub-tbox +taishan200-2280-2s64p-256g--a6 + pub-tbox +taishan200-2280-2s64p-256g--a7 + pub-tbox +taishan200-2280-2s64p-256g--a8 + pub-tbox +taishan200-2280-2s64p-256g--a9 + pub-tbox +taishan200-2280-2s64p-256g--a10 + pub-tbox +taishan200-2280-2s64p-256g--a36 + pub-tbox +taishan200-2280-2s64p-256g--a37 + pub-tbox +taishan200-2280-2s64p-256g--a38 + pub-tbox +taishan200-2280-2s64p-256g--a39 + pub-tbox +taishan200-2280-2s64p-256g--a40 + pub-tbox +taishan200-2280-2s64p-256g--a41 + pub-tbox +taishan200-2280-2s64p-256g--a42 + pub-tbox +taishan200-2280-2s64p-256g--a43 + pub-tbox +taishan200-2280-2s64p-256g--a44 + pub-tbox +taishan200-2280-2s64p-256g--a45 + pub-tbox +taishan200-2280-2s64p-256g--a46 + pub-tbox +taishan200-2280-2s64p-256g--a78 + pub-tbox +taishan200-2280-2s64p-256g--a79 + pub-tbox +taishan200-2280-2s64p-256g--a80 + pub-tbox +taishan200-2280-2s64p-256g--a81 + pub-tbox +taishan200-2280-2s64p-256g--a82 + pub-tbox +taishan200-2280-2s64p-256g--a83 + pub-tbox +taishan200-2280-2s64p-256g--a108 + long-runtime +taishan200-2280-2s64p-256g--a109 + long-runtime +taishan200-2280-2s64p-256g--a110 + long-runtime +taishan200-2280-2s64p-256g--a111 + long-runtime +taishan200-2280-2s64p-256g--a112 + long-runtime +taishan200-2280-2s64p-256g--a113 + long-runtime +taishan200-2280-2s64p-256g--a114 + long-runtime +taishan200-2280-2s64p-256g--a115 + long-runtime +taishan200-2280-2s64p-256g--a116 + long-runtime +taishan200-2280-2s64p-256g--a117 + long-runtime +taishan200-2280-2s64p-256g--a118 + long-runtime +taishan200-2280-2s64p-256g--a119 + long-runtime +taishan200-2280-2s64p-256g--a120 + long-runtime +taishan200-2280-2s64p-256g--a121 + long-runtime +taishan200-2280-2s64p-256g--a122 + long-runtime +taishan200-2280-2s64p-256g--a123 + long-runtime +taishan200-2280-2s64p-256g--a124 + long-runtime +taishan200-2280-2s64p-256g--a125 + long-runtime +taishan200-2280-2s64p-256g--a126 + long-runtime +taishan200-2280-2s64p-256g--a127 + long-runtime +taishan200-2280-2s64p-256g--a128 + long-runtime +taishan200-2280-2s64p-256g--a129 + long-runtime +taishan200-2280-2s64p-256g--a130 + long-runtime +taishan200-2280-2s64p-256g--a131 + long-runtime -- 2.23.0
2 2
0 0
[PATCH compass-ci 2/2] sparrow/dev-env: add the public_service.yaml
by Cao Xueliang 05 Feb '21

05 Feb '21
The scheduler will read public_service.yaml, then add the public service info to the job yaml. Signed-off-by: Cao Xueliang <caoxl78320(a)163.com> --- sparrow/3-code/dev-env | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sparrow/3-code/dev-env b/sparrow/3-code/dev-env index 46f450d..a7eae4d 100755 --- a/sparrow/3-code/dev-env +++ b/sparrow/3-code/dev-env @@ -54,6 +54,23 @@ ES_PORT: $ES_PORT SRV_HTTP_PORT: $SRV_HTTP_PORT EOF +cat > /etc/compass-ci/defaults/public_service.yaml <<-EOF +LKP_SERVER: $server_ip +GIT_SERVER: $GIT_SERVER +INITRD_HTTP_HOST: $initrd_http_host +INITRD_HTTP_PORT: $initrd_http_port +GITCACHE_HOST: $gitcache_host +GITCACHE_PORT: $gitcache_port +SEND_MAIL_HOST: $server_ip +SEND_MAIL_PORT: $SEND_MAIL_PORT +ASSIST_RESULT_HOST: $server_ip +ASSIST_RESULT_PORT: $ASSIST_RESULT_PORT +RESULT_WEBDAV_HOST: $server_ip +RESULT_WEBDAV_PORT: $RESULT_WEBDAV_PORT +SRV_HTTP_HOST: $server_ip +SRV_HTTP_PORT: $SRV_HTTP_PORT +EOF + cat > /etc/profile.d/compass.sh <<'EOF' export LKP_SRC=/c/lkp-tests export CCI_SRC=/c/compass-ci -- 2.23.0
1 0
0 0
[PATCH lkp-tests] lib/job.rb: delete read "/etc/compass-ci/defaults/*.yaml"
by Cao Xueliang 05 Feb '21

05 Feb '21
The compass-ci/scheduler will read the yamls, so, delete it in lkp-tests Signed-off-by: Cao Xueliang <caoxl78320(a)163.com> --- lib/job.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/job.rb b/lib/job.rb index f19d1e6dc..015fb840f 100755 --- a/lib/job.rb +++ b/lib/job.rb @@ -420,8 +420,7 @@ class Job def load_self_config self_config_path = "#{ENV['HOME']}/.config/compass-ci" - Dir.glob(['/etc/compass-ci/defaults/*.yaml', - "#{self_config_path}/defaults/*.yaml"]).each do |file| + Dir.glob(["#{self_config_path}/defaults/*.yaml"]).each do |file| load_one_defaults(file, @job) end -- 2.23.0
1 0
0 0
[PATCH compass-ci] doc/manual: change the document name from Chinese to English
by Li Ping 05 Feb '21

05 Feb '21
Signed-off-by: Li Ping <1477412247(a)qq.com> --- .../manual/install-cci-client.md | 0 .../manual/log-in-machine-debug.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename "doc/manual/\346\234\254\345\234\260\345\256\211\350\243\205compass-ci\345\256\242\346\210\267\347\253\257.md" => doc/manual/install-cci-client.md (100%) rename "doc/manual/\345\246\202\344\275\225\347\231\273\345\275\225\346\265\213\350\257\225\346\234\272\350\260\203\346\265\213\344\273\273\345\212\241.md" => doc/manual/log-in-machine-debug.md (100%) diff --git "a/doc/manual/\346\234\254\345\234\260\345\256\211\350\243\205compass-ci\345\256\242\346\210\267\347\253\257.md" b/doc/manual/install-cci-client.md similarity index 100% rename from "doc/manual/\346\234\254\345\234\260\345\256\211\350\243\205compass-ci\345\256\242\346\210\267\347\253\257.md" rename to doc/manual/install-cci-client.md diff --git "a/doc/manual/\345\246\202\344\275\225\347\231\273\345\275\225\346\265\213\350\257\225\346\234\272\350\260\203\346\265\213\344\273\273\345\212\241.md" b/doc/manual/log-in-machine-debug.md similarity index 100% rename from "doc/manual/\345\246\202\344\275\225\347\231\273\345\275\225\346\265\213\350\257\225\346\234\272\350\260\203\346\265\213\344\273\273\345\212\241.md" rename to doc/manual/log-in-machine-debug.md -- 2.23.0
1 0
0 0
[PATCH v2 compass-ci] container/srv-http: download h5ai repo
by Liu Yinsi 05 Feb '21

05 Feb '21
before: copy h5ai repo from our server /c/h5ai into image after: download h5ai repo when build container [why] download h5ai in docker image, make build script more clean. Signed-off-by: Liu Yinsi <liuyinsi(a)163.com> --- container/srv-http/Dockerfile | 8 ++++---- container/srv-http/build | 7 ------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/container/srv-http/Dockerfile b/container/srv-http/Dockerfile index 987e40e..6564730 100644 --- a/container/srv-http/Dockerfile +++ b/container/srv-http/Dockerfile @@ -5,16 +5,16 @@ FROM alpine:3.9 ADD root / -RUN apk add --no-cache nginx php7 php7-fpm php7-session php7-json php7-exif php7-imagick php7-gd php7-fileinfo nodejs npm \ - && mkdir /run/nginx/ \ - && mkdir /h5ai +RUN apk add --no-cache nginx php7 php7-fpm php7-session php7-json php7-exif php7-imagick php7-gd php7-fileinfo nodejs npm git \ + && mkdir /run/nginx/ RUN sed -i '/\[global\]/a daemonize = no' /etc/php7/php-fpm.conf RUN sed -i "s/user = nobody/user = nginx/g" /etc/php7/php-fpm.d/www.conf RUN sed -i "s/group = nobody/group = nginx/g" /etc/php7/php-fpm.d/www.conf +RUN git clone https://gitee.com/luweitao_y/h5ai.git /h5ai + WORKDIR /h5ai -COPY h5ai /h5ai # build h5ai package RUN npm install \ diff --git a/container/srv-http/build b/container/srv-http/build index 054e826..3a500ea 100755 --- a/container/srv-http/build +++ b/container/srv-http/build @@ -2,11 +2,4 @@ # SPDX-License-Identifier: MulanPSL-2.0+ # Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved. -: ${H5AI_SRC:=/c/h5ai} - -cp -r $H5AI_SRC ./ - docker build -t srv-http . - -# clean h5ai folder -rm -rf ./h5ai -- 2.23.0
1 0
0 0
[PATCH compass-ci] container/srv-http: download h5ai repo
by Liu Yinsi 05 Feb '21

05 Feb '21
before: copy h5ai repo from our server /c/h5ai into image after: download h5ai repo when build container [why] download h5ai in docker image, make build script more clear. Signed-off-by: Liu Yinsi <liuyinsi(a)163.com> --- container/srv-http/Dockerfile | 8 ++++---- container/srv-http/build | 7 ------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/container/srv-http/Dockerfile b/container/srv-http/Dockerfile index 987e40e..1f9b5ca 100644 --- a/container/srv-http/Dockerfile +++ b/container/srv-http/Dockerfile @@ -5,16 +5,16 @@ FROM alpine:3.9 ADD root / -RUN apk add --no-cache nginx php7 php7-fpm php7-session php7-json php7-exif php7-imagick php7-gd php7-fileinfo nodejs npm \ - && mkdir /run/nginx/ \ - && mkdir /h5ai +RUN apk add --no-cache nginx php7 php7-fpm php7-session php7-json php7-exif php7-imagick php7-gd php7-fileinfo nodejs npm git\ + && mkdir /run/nginx/ RUN sed -i '/\[global\]/a daemonize = no' /etc/php7/php-fpm.conf RUN sed -i "s/user = nobody/user = nginx/g" /etc/php7/php-fpm.d/www.conf RUN sed -i "s/group = nobody/group = nginx/g" /etc/php7/php-fpm.d/www.conf +RUN git clone https://gitee.com/luweitao_y/h5ai.git /h5ai + WORKDIR /h5ai -COPY h5ai /h5ai # build h5ai package RUN npm install \ diff --git a/container/srv-http/build b/container/srv-http/build index 054e826..3a500ea 100755 --- a/container/srv-http/build +++ b/container/srv-http/build @@ -2,11 +2,4 @@ # SPDX-License-Identifier: MulanPSL-2.0+ # Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved. -: ${H5AI_SRC:=/c/h5ai} - -cp -r $H5AI_SRC ./ - docker build -t srv-http . - -# clean h5ai folder -rm -rf ./h5ai -- 2.23.0
2 2
0 0
[PATCH v3 compass-ci 2/2] sparrow/3-code: set server_ip
by Liu Yinsi 05 Feb '21

05 Feb '21
[how] before: server_ip is the local host ip after: server_ip from config yaml /etc/compass-ci/setup.yaml [why] if deploy compass-ci client and server not in a same machine, need to config server ip in config yaml, or client can't access server services. Signed-off-by: Liu Yinsi <liuyinsi(a)163.com> --- sparrow/3-code/dev-env | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sparrow/3-code/dev-env b/sparrow/3-code/dev-env index 46f450d..8812839 100755 --- a/sparrow/3-code/dev-env +++ b/sparrow/3-code/dev-env @@ -2,8 +2,13 @@ # SPDX-License-Identifier: MulanPSL-2.0+ # Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved. +mkdir -p /etc/compass-ci +cp -a $CCI_SRC/sparrow/setup.yaml /etc/compass-ci/setup.yaml + +server_ip=$(awk '/^server_ip:\s/ {print $2; exit}' /etc/compass-ci/setup.yaml) +[ -z $server_ip ] && server_ip=$(ip route get 1.2.3.4 | awk '{print $7; exit}') + server_name=$(hostname | cut -f1 -d.) -server_ip=$(ip route get 1.2.3.4 | awk '{print $7; exit}') : ${sched_host:=$server_ip} : ${sched_port:=3000} : ${os_http_host:=$server_ip} -- 2.23.0
1 0
0 0
[PATCH v3 compass-ci 1/2] sparrow: add initial config setup.yaml
by Liu Yinsi 05 Feb '21

05 Feb '21
[why] before locally deploy compass-ci, fill config setup.yaml firstly, will make the whole process cleaner. Signed-off-by: Liu Yinsi <liuyinsi(a)163.com> --- sparrow/setup.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 sparrow/setup.yaml diff --git a/sparrow/setup.yaml b/sparrow/setup.yaml new file mode 100644 index 0000000..4503080 --- /dev/null +++ b/sparrow/setup.yaml @@ -0,0 +1,11 @@ +# please fill the configuration according to comments. + +# account name +my_name: xxx + +# email address +my_email: xxx(a)xxx.com + +# when you deploy compass-ci client, fill the compass-ci server's ip, +# then client can access server service. +server_ip: -- 2.23.0
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • ...
  • 42
  • Older →

HyperKitty Powered by HyperKitty