From b276607a18f5b1863b3db9c9ac1a6cb88b1114f6 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Tue, 22 Mar 2022 15:53:32 -0400 Subject: [PATCH 01/13] resolve conflicts --- .dockerignore | 2 + .gitignore | 2 + Dockerfile | 24 +++++ README.md | 25 +++++- app/services/solr_service.rb | 41 ++++++++- app/workers/cancellable_worker.rb | 2 +- app/workers/indexing_worker.rb | 3 + app/workers/transaction_worker.rb | 16 +++- dbinit/0-users.sql | 3 + docker-compose.yml | 104 ++++++++++++++++++++++ entrypoint.sh | 45 ++++++++++ init.sh | 51 +++++++++++ solr-docker/.gitignore | 1 + solr-docker/Dockerfile | 9 ++ solr-docker/README.md | 22 +++++ solr-docker/initscripts/setup.sh | 6 ++ solr-docker/stanford-cjk-plugin-7.7.1.jar | Bin 0 -> 56597 bytes solr-docker/umich-plugin-7.7.1.jar | Bin 0 -> 48880 bytes 18 files changed, 348 insertions(+), 8 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100755 dbinit/0-users.sql create mode 100644 docker-compose.yml create mode 100755 entrypoint.sh create mode 100755 init.sh create mode 100644 solr-docker/.gitignore create mode 100644 solr-docker/Dockerfile create mode 100644 solr-docker/README.md create mode 100755 solr-docker/initscripts/setup.sh create mode 100755 solr-docker/stanford-cjk-plugin-7.7.1.jar create mode 100755 solr-docker/umich-plugin-7.7.1.jar diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a9225fe --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +Dockerfile +dbinit/ diff --git a/.gitignore b/.gitignore index e25dff4..d75ff93 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ /.vagrant *.iml +vendor/bundle + .vagrant_rails_env .ruby-version diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1f789fb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM ruby:2.7-alpine AS builder + +RUN apk update && apk upgrade && apk add --no-cache build-base sqlite-dev libpq-dev libxml2-dev libxslt-dev yajl git + +COPY ./ /app/ + +WORKDIR /app + +RUN bundle config set path /gems && bundle install -j $(nproc) + +FROM ruby:2.7-alpine + +RUN apk add nodejs git bash libpq yajl sqlite sqlite-dev + +WORKDIR /app + +COPY --from=builder /gems /gems +RUN bundle config set path /gems + +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +EXPOSE 3000 +CMD ["server"] + diff --git a/README.md b/README.md index a752314..2bd3683 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,30 @@ of what you'll need installed on the target system, other than Ruby, of course. ## Getting Started +### Containers and compose + +The Vagrant setup should do most of what's needed, but a somewhat +lighter-weight approach is available using `docker compose` (or +`podman-compose`), as defined in the `docker-compose.yml` and various +`Dockerfile`s in the project's directory. + +Before running containers for all the services via compose, you will need +to run the `init.sh` script in the same directory as this file; this will +pull down the solr configuration from the working repository. Read the +comments in that file for more information. + +From that point, `docker compose up` will start all the necessary services, +including the primary Rails application (in development mode, so editing files +in the Rails application directories will take effect immediately). + +For more information, look at the `Dockerfile` in this directory and in the +`solr-docker` subdirectory. + ### Vagrant -Use[`vagrant`](https://www.vagrantup.com/) if you just need to get going. +If you don't want to use containers, you can use +[`vagrant`](https://www.vagrantup.com/) if you just need to get going. + Vagrant is a tool for managing virtual machines; it doesn't itself contain any 'virtualization' features, but it knows how to interact with several VM providers (e.g Virtualbox, vmWare Fusion, things like that) and is intended to @@ -237,7 +258,7 @@ stanza: ``` # assuming service name == 'trln-ingest' EnvironmentFile=/etc/default/trln-ingest -PassEnvironment=DB_HOST DB_USER DB_PASSWORD DB_ADAPTER DB_NAME RAILS_ENV TRANSACTION_STORAGE_BASE +PassEnvironment=DB_HOST DB_USER DB_PASSWORD DB_ADAPTER DB_NAME RAILS_ENV TRANSACTION_FILES_BASE_ ``` You may also want to create a `config/database.yml` and `config/solr.yml` for diff --git a/app/services/solr_service.rb b/app/services/solr_service.rb index c511e5b..96ac88d 100644 --- a/app/services/solr_service.rb +++ b/app/services/solr_service.rb @@ -4,7 +4,9 @@ class SolrService class << self; attr_accessor :config end - @config = YAML.load_file(Rails.root.join('config', 'solr.yml'))[Rails.env].to_ostruct_deep + COLL_PATH = '/solr/admin/collections' + + @config = Rails.application.config_for(:solr) attr_accessor :url, :collection, :client @@ -12,19 +14,23 @@ class << self; attr_accessor :config end # if passed a block, this object will be the block's parameter. def initialize(collection = 'trlnbib') @collection = collection - @url = URI.join(self.class.config.url.sample, @collection).to_s + @url = URI.join( config.url.sample, @collection).to_s @client = RSolr.connect :url => url yield self if block_given? end + def config + @config ||= Rails.application.config_for(:solr).to_ostruct_deep + end + def count response = @client.select params: { q: '*:*', rows: 0 } end def clusterstatus - @client.get('../admin/collections', params: { action: 'CLUSTERSTATUS' }) + @client.get(COLL_PATH, params: { action: 'clusterstatus' }) rescue StandardError => ex - Rails.logger.error("unable to fetch clusterstatus #{ex.backtrace}") + Rails.logger.error("unable to fetch clusterstatus: #{ex} #{ex.backtrace}") { error: 'sorry' } end @@ -68,4 +74,31 @@ def json_doc_update(files, commit_interval = 0) end @client.commit unless commit_interval == -1 end + + # Creates a collection if it does not + # already exist. + # == Parameters + # collection:: + # A string describing the name of the collection to create. + # defaults to 'trlnbib' + # config_name:: + # A String with the name of the configuration name to use. + # A configuration matching the name must already exist. + # defaults to the same value as `collection` + def create_collection(collection = 'trlnbib', config_name = nil) + return unless Rails.env == 'development' + + resp = @client.get(COLL_PATH, params: { action: 'list' }) + return if resp.fetch('collections', []).include?(collection) + + config_name ||= collection + + resp = @client.get(COLL_PATH, params: { + action: 'create', + 'collection.configName' => config_name, + name: collection, + numShards: 1 + }) + return resp + end end diff --git a/app/workers/cancellable_worker.rb b/app/workers/cancellable_worker.rb index 08a9933..ef28bb1 100644 --- a/app/workers/cancellable_worker.rb +++ b/app/workers/cancellable_worker.rb @@ -3,7 +3,7 @@ class CancellableWorker include Sidekiq::Worker def cancelled? - Sidekiq.redis {|r| r.exists("cancelled-#{jid}") }.positive? + Sidekiq.redis { |r| r.exists("cancelled-#{jid}") }.positive? end def cancel!(jid) diff --git a/app/workers/indexing_worker.rb b/app/workers/indexing_worker.rb index 1d9b45e..74b0b8a 100644 --- a/app/workers/indexing_worker.rb +++ b/app/workers/indexing_worker.rb @@ -1,8 +1,10 @@ # Kicks off an indexing process # class IndexingWorker < CancellableWorker + # rubocop:disable Metrics/MethodLength def perform(txn_id, batch_size = 5000) return if cancelled? + begin Transaction.find(txn_id) rescue RecordNotFound @@ -14,4 +16,5 @@ def perform(txn_id, batch_size = 5000) processor.logger = logger processor.run end + # rubocop:enable Metrics/MethodLength end diff --git a/app/workers/transaction_worker.rb b/app/workers/transaction_worker.rb index 1a7d190..c89ea30 100644 --- a/app/workers/transaction_worker.rb +++ b/app/workers/transaction_worker.rb @@ -5,6 +5,7 @@ class TransactionWorker < CancellableWorker def perform(transaction_id) return if cancelled? + begin txn = Transaction.find(transaction_id) rescue ActiveRecord::RecordNotFound @@ -13,8 +14,8 @@ def perform(transaction_id) return end logger.info("Creating a processor for #{transaction_id}") + txn = load_transaction(transaction_id) processor = TransactionProcessor.new(txn) - #processor.logger = logger begin logger.info("Starting ingest for transaction #{transaction_id}") processor.run @@ -22,4 +23,17 @@ def perform(transaction_id) IndexingWorker.perform_async(transaction_id) end end + + private + + def load_transaction(transaction_id) + begin + txn = Transaction.find(transaction_id) + rescue ActiveRecord::RecordNotFound + logger.info("Cancelling #{jid} because no txn matches id #{transaction_id}") + cancel!(jid) + return + end + txn + end end diff --git a/dbinit/0-users.sql b/dbinit/0-users.sql new file mode 100755 index 0000000..318a2cc --- /dev/null +++ b/dbinit/0-users.sql @@ -0,0 +1,3 @@ +CREATE user ainsworth WITH PASSWORD 'a1nsw0rth'; +CREATE database shrindex OWNER ainsworth; + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3abf864 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,104 @@ +--- +services: + database: + image: postgres:14-alpine + ports: + - 5432:5432 + environment: + POSTGRES_PASSWORD: "p0tat0 precious polym3r chimes" + PODMAN_USERNS: keep-id + volumes: + # normally this would be :Z on selinux systems however + # this appears to interfere with the right selinux context + # being set on the container. :Z means the container should get + # its own context and be the only one that can access the mount + # :z means other containers in this compose file can access + # the mount + - ./dbinit:/docker-entrypoint-initdb.d/:z + + healthcheck: + test: pg_isready -U postgres -h 127.0.0.1 + interval: 5s + + redis: + image: redis:5-bullseye + ports: + - 6379:6379 + healthcheck: + test: redis-cli ping + interval: 1s + timeout: 3s + retries: 10 + + base-app: &base-app + image: rwgrim/docker-noop + volumes: + # see above; any :Z seems to break the postgres container + - ./:/app/:z + - ingest-transactions:/transactions:z + depends_on: + database: + condition: service_healthy + redis: + condition: service_healthy + solr1: + condition: service_healthy + + secrets: + - trln-ingest-db-pw + environment: + OS_ENV: container + DB_HOST: database + DB_USER: ainsworth + REDIS_URL: redis://redis:6379 + SOLR_URL: http://solr1:8983/solr/ + TRANSACTION_FILES_BASE: /transactions + + app: &app + <<: *base-app + image: ingestapp + build: . + command: server + ports: + - 3000:3000 + + sidekiq: + <<: *base-app + image: ingestapp + command: sidekiq + + solr1: + image: solr:7.7.3 + container_name: solr1 + build: + context: solr-docker + ports: + - 8983:8983 + environment: + - ZK_HOST=zoo1:2181 + depends_on: + - zoo1 + healthcheck: + test: ['CMD-SHELL', 'curl -sf http://localhost:8983/solr/admin/collections?action=list' ] + volumes: + - ./solr-docker/initscripts:/docker-entrypoint-initdb.d:Z + + zoo1: + image: zookeeper:3.6.2 + container_name: zoo1 + restart: always + hostname: zoo1 + ports: + - 2181:2181 + - 7001:7000 + environment: + ZOO_MY_ID: 1 + ZOO_SERVERS: server.1=zoo1:2888:388;2181 + ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok + +secrets: + trln-ingest-db-pw: + external: true + +volumes: + ingest-transactions: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..4abffb3 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +rm -f /app/tmp/pids/server.pid + +if [ -e /run/secrets/trln-ingest-db-pw ]; then + export DB_PASSWORD=$(cat /run/secrets/trln-ingest-db-pw) +else + echo "Secret not available" + exit 1 +fi + +export OS_ENV=container + +echo "TRANSACTION FILES BASE: '${TRANSACTION_FILES_BASE}'" +export TRANSACTION_FILES_BASE=${TRANSACTION_FILES_BASE:-/transactions} + +cd /app + +CMD=${1:-server} + +case $1 in + server) + bundle exec rails db:migrate + bundle exec rails user:admin + bundle exec rails server -b 0.0.0.0 + ;; + sidekiq) + exec bundle exec sidekiq + ;; + migrate) + exec bundle exec rails db:migrate + ;; + test) + export RAILS_ENV=test + exec bundle exec rails test + ;; + shell) + exec /bin/bash + ;; + *) + exec bundle exec $@ + ;; +esac diff --git a/init.sh b/init.sh new file mode 100755 index 0000000..9ac6b24 --- /dev/null +++ b/init.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -eu + +# Ensures that a suitable TRLN Discovery Solr configuration +# is downloaded and available for use with Docker/Podman Compose. + +# By default pulls the `master` branch, but this can be changed +# by passing in the name of another branch when running this script. + +# After a copy has been checked out, a different branch can be used +# via `cd solr-docker/config && git pull origin [newbranch] && git checkout [newbranch]` and re-starting all the containers. + +CONFIG_BRANCH=${1:-master} + +echoerr() { + echo "$@" 1>&2; +} + +wd=$(pwd) + +if [ ! -d solr-docker/config/solr/trlnbib ]; then + cd solr-docker/config + echo "checking out solr configuration" + git init + git remote add origin https://github.com/trln/trln-config + git config core.sparseCheckout true + echo "solr/trlnbib/" >> .git/info/sparse-checkout + git pull --depth=1 origin "$CONFIG_BRANCH" + git checkout ${CONFIG_BRANCH} + cd $wd +else + echo "solr configuration is already available" +fi + +container_runner='podman' +if [ $(type -P "${container_runner}") ]; then + # no-op becuase it's hard to negate the test + : +else + container_runner='docker' +fi + +${container_runner} secret list | grep trln-ingest-db-pw > /dev/null + +if [ $? != 0 ]; then + echo "Didn't find database secret; creating ..." + ruby -r securerandom -e 'puts SecureRandom.alphanumeric(48)' | ${container_runner} secret create trln-ingest-db-pw - +else + echo "database secret is set up" +fi diff --git a/solr-docker/.gitignore b/solr-docker/.gitignore new file mode 100644 index 0000000..04204c7 --- /dev/null +++ b/solr-docker/.gitignore @@ -0,0 +1 @@ +config diff --git a/solr-docker/Dockerfile b/solr-docker/Dockerfile new file mode 100644 index 0000000..b244ad1 --- /dev/null +++ b/solr-docker/Dockerfile @@ -0,0 +1,9 @@ +FROM solr:7.7.3 + +# Install necessary contrib jars +RUN cp /opt/solr/contrib/analysis-extras/lib/icu*.jar /opt/solr/contrib/analysis-extras/lucene-libs/*icu*.jar /opt/solr/server/solr/lib + +# Add external jars +COPY *.jar /opt/solr/server/solr/lib + +COPY config/solr/trlnbib /trlnbib-config diff --git a/solr-docker/README.md b/solr-docker/README.md new file mode 100644 index 0000000..4cb7f99 --- /dev/null +++ b/solr-docker/README.md @@ -0,0 +1,22 @@ +# Docker/Podman setup for Solr + +This directory contains customizations to run Solr in a container via `docker +compose` or `podman-compose` for purposes of local development. + +It assumes that the TRLN Discovery Solr configset has already been installed into the `config` subdirectory. See the `init.sh` file in the parent directory for +more information. + +## Rationale + +The official Solr containers from the Apache Solr project provide a number of +features to get up and running quickly, but they're mostly geared around +creating _cores_ rather than _collections_; the Rails application assumes it's +working in a Solr Cloud deployment, because that's what's available in +production. + +Using collections rather than cores means we have to do quite a bit more setup, +over and above ensuring that the configset is available, and most of what +happens in the Dockerfile is oriented around that setup. + +Additionaly, the Rails application will create the `trlnbib` collection when +running in `development` mode if it does not already exist. diff --git a/solr-docker/initscripts/setup.sh b/solr-docker/initscripts/setup.sh new file mode 100755 index 0000000..236d782 --- /dev/null +++ b/solr-docker/initscripts/setup.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# ensures configuration is uploaded; assumes configuration is mounted +# at /trlnbib-config +/opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost ${ZK_HOST:-zootopia:2181} -cmd upconfig -confname trlnbib -confdir /trlnbib-config + diff --git a/solr-docker/stanford-cjk-plugin-7.7.1.jar b/solr-docker/stanford-cjk-plugin-7.7.1.jar new file mode 100755 index 0000000000000000000000000000000000000000..01f08b60894f6da3ae43e9799b36c9783fe1ff6e GIT binary patch literal 56597 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 z z$-K#XbDwkXIp^LznFI7yI$#&MXB|*p%pC}&pcP{*J8?tXSmg#)vY7~HT(3#g#m7hG zZzQ%&?N=pR!0VZlb!+rUd0|0x{e_}(n;Cpc!i5+>cXgv-DI^qK#r|Qv4RfLR!@V(3 zr#X-oVSk{RBYJ%L-Q>>5JX+)4A*EyR!>h0*#=weFE!LA5vOT8YRHJ@u@#6a=E%$v6 zt~U31C)slxEk57=@Ehw*Q3W(pN0#ZG?-agQvGGhkR&;(NiZS?g@lzvHmn{8byLuB; zuQLU2d0^$dqunz4%A z=;kqRryc_CE)@i(a*6{Z+@vMKb373^buk!x6xA04@Fie5?t8CS_!bA{->v!y-U*yp|5 zEpSheVUlnIC~f-j2OFUiD}2KQeAJz3I_?4p@_c^@FunaH?L8dlu>O!$lwM^XG{w;o zx%sQ4OWSx{^Q;tedQ|w4Gdh;c)4dL;CL)uA^3uM83YWb(PDbSdsJRNTLQfLJ#*7J= zj%$+cSc7O$Y2~4<3hI4$UL`keS3>f2*XR|jW7yfS)?ZM;wIM`zF* zc6Wg-`V-hzJ59yqjY27=f1Ng@V4mj)-1umf>e<4T%)cd#XOS2#Vi~lrkFl;PwOtiP zlU!I}>5cVRYb?i8x7H>ust=oiNYkd@ue*CT0sjEU&v6~D$!S$L?mZ8AL6B>JJ$3p` z+BV0tWPH1*<~{pBRSt2-8{DJ+Q+i1`Fbn9%p$~5e9-X?>DFVS zY>9p3fk$Q%S5)%& z3{I5&ido-|41gG6!4??(rMB(|ht!8<+HCfrZaxWghrsi(AZgaiGotrr~$=ZU4yiWBqD;M>JKZ$i5Vo z6?^6q3CS)|$@V`RC~w)=#<3siXnwlE&T7`k0LkC#FnxY=NNasz7h6O2Q}u0HxOb0S z@G6@SgUvhDIsDjb61zB~17&T}aoUP#0sEbNTm-Z3B}*V}jy~9qFP8F5wfIL+zrqjS zW5l>uH1Z*HM=3(jblq4YYuLcIB-ldOu$#gps*L3K(+6peL*I(X9Gsa^AL-tvb)KdY zS9H4e;^uy~y7RzyD70Fy)eOeN%-uw)CF{$>xfOm zY+g<38{L#RKk4ExiSI?uvs1HF;z|h^*z+LK+f*r(;2(LK5Q2eeca9QB10t@oa_Sgu zJ4FrKb<8!o3n=e5OB{Qq$qB2Z!6?F|KuCR91Jam z?u&P$7;}Thn@+K_XeY^Rt%-GJJbhX`VdBH^1_r%?mmk7~!AGelb-5`8t=D3Y%YQ!o zY59pLXm$#KYB3$#)LsMdT@BL6IP{U=DOk%?uuI-=W)nyK5ZT3MnQ_UbdsQD8zPVV9;j&!3(2IBdUUoazXNkY)s-Q10G0QYa>HUPUpQ) zxUlH*SBFfGqqn*qkn6iGQmG~P3OL-1YQdc}Q-(SAIPeK5FOn3POZ%+FwaYY!^hAC`%|Ymn|lpYqu!{%j8KQ zgupD~3JSlDY>CCKJkvd?d}QBfl`{idu4X*i)4NKj#>7eKc$M_~v8i3zHRp+9HP0fa zZ#}$8_J&QibCTW0l9OM@&?=+@K=QlrWc9}N10Q1&aVb|)Gj*B+&{A4~jQVLCUTsP;EL-=ca5#WnG(>0(5bnl)J)(k|%ay0<*xG z+h14ly5+NH00ih{+}?FmR;(r?cRnq2-R-E`*Z{#WB%8OBz2hod3Z*A4JFI6|hH9$P zFvv+yJ3=K?OZ5~Ja zv3I0pPEkDe9P8sKMj{=`Wfy4>j|71I_w@%R`OB#oI$)B`ls@aqv3VL(B}7gwL$*jNc8bFb;yVAG5+6{@(>0PK1EK>=7!&kb_A*go3oY*#HX5=ZE% zh>c@!i1r8Eh@x9LFD9_hmVUZ8P)`0R7Z0`W$`-6ylQE%b8RjCWvZ~@AL5Utv1{Gw< zDx%9bAD5u%G<^4Er;QonC`bv%C7j$fiWfTqRR(Aay(}Y&#aCGyJ>3##;Iq8*A&Sux ziDw0PwA3$TE$jU0DubSr>A5L`q?%>)BZ?hq*Ao=0t$F(KTod;LwhpTd$l+jIivE&1ld8>_;=vBSz_U zbL%vSr8ksj zO<(0TidyFuByu?<)~TwMf3AFx=x4}|-^$J4wJnZ9kYQ_Fs=hX=o7ioHGXkRC-`tr# ztVABbow1q*JwCf<+^PAhrw?B!xW9h=TsXtUGAm$*$6i|j|Eo?#7SQi`u`abtGya`f zKa8#YL6KW8Z2SksQBH0e)%JzctwmaOBFn@JF5A=3<>^|vbK2;a3H|sP)I3%F_y|jD zYU>`l9VW2u+e;k*CFHedy#nqIO1w;FlP5STT{U#I#dS#}%9&#nqv|K3<76`%!ukSEBvY`gE-E+JUkUr1G?TalsGi zOfa^(bff-9V+E7^5pUT$a#h-yTjykntvaJ=`sRw3G;^WR1Ysc~t;xRKHjw#m*trhpAy6VJ|J)4k=i+DYzGn+MKx zcbqfXB?`+dy5E)d%H>McVMM{<+uBCv?#xoJ5lJ`6>@f?itTqLyKE_#+W;$h`O+8x z0&>5)ZL<}b6Z~B_t@|_y#?~5HRJoLrSOG#QV$VAGFs5_4#ZxG?=N=FdB{HOCtWxA? zYETPVkeI|x{ii{_=@D=_oJpYiEwlk-!W6x=1{G%im{m2Yywi~Akxj-!)hvInN#yGi`dOI8eTFL)LHd0p~LunmuGn{ReSoROzK-JJFQ zs#EfEQZLh*d6`3L`r)kyMQiF8vu}nlsM>b%c7ov_X9+f!*9J};v^~v=fDJ9lNuK%= z7A$vV>Oa^T&gG;_jlaL39?_qSG<}lJ>3)WJ#Dfkk^vHyA*EoxE3X+Ph=K$2J>hXOH z9e`hBM1MY2w_O?emZqrte&Y;Syx7}gpvY98!P;AR^GCi$^~0R}0Z&tISog_>Buj;xK|H>*zJZCq<`DZl^d?9{^#hA;G1Dh zkOEUsR(gnU*Rr{ZOS^ELhFHrCmlL|LevdT4;435fHZ}SY@AbngEq4VUXf5oAc~IS2 z(4MmbMdC9Bsng}xd@*+Zb`%-Yt#_PaHVd$g0p`6ufHz6bKgWA`G}VTzx(U8n&cjsT zn9oh@#*W~m*+^RyRoM0_`|@c}^SQHJ zwiG%Ien`bn5EZ!vxPT*?;iL>N6Q<3KR5i9jD0N3c^V^C(wMRdtx7%tU_pfraUcvmo zZScZBDS@+uF9qIEw`in;Og%HFZEQ_tQB0Z1i#oJ#ybEH-{F*}xk8wcEsZv$bxl(y` zkzH&F4jgW@Q(dunW}~39Vx}fZs%SAe9u3c~Z%urGgD|t-AwO$ovWwG;UQ^Y^*SOg7 zL@i=!)$|Wa{N`V}#6^d@k#5K?Zg}s;TwTw7KklLNX;j4<+{9eY3k>OU!-!A&@I6Ef z_Dyq#R`s(6vOnFx@m9_gR+j9j_lSly>XN30djp%zYZzP$@hx-K$kB5CU<6zRhk@#} zQDU#h(HFO*;ygJ1!V;Mi5?XJ!N!M#IqjQxdTFQNINBoVR4R%$e)|#LiaG+hwQssU|=diZCqDSVDCjPgcR! za?K~maH~!p&MB?Wm519bIOo*JL(B%(M#5*uh`!kp+Y=G$gBd;t-8(^+!$Za+8#_59 z2xU|{&U|WvwE*cyQk%&EV@YZr+i7dCbpW0pca3`1Du#+=dF{I~dT`Roke=7v`>^Po z>e8MtqPuO!E@yE(l}kz4?Ycu6bnygIx1c~~HGoudQ-lFCXHM!eJ z&(uZcOK40l?B_m^s@$;eec~XCr?ZjaSLzb2?7So2o#-rp6e+Jq3RXNWj>;WK?ww%x z65G5T3QHAcd3atSfCuee4~M0W9$Y&2RWV0o=j^nF*$jA@$JZB+!O4urn|!V5+A^@z zsp2BDbin2AP6iR5>F{Kb75?GH`(|+kj*L>-#rd|{#jGM9Gt16(d_$SMr7l5?KU(WM zqNg9seaLNNHg%6^cva4vzkey+2(-bO*Yb;Ws0geWr|h;(T?{Q5^+@s{*0@1d&~Vr2 z#w<-59x41b3^#HRMoTNPMYV}xn$8_x)klad<7Q19dg;8+7+TE&&RZ|UuGE0=a{0`K$s~eyr>1_civY) zzi9_1F>$my*Hdu(IfJ$?_RqJXn_r=Gd$zm9KKF$UmK*+e#Or;vOT9!H<(j{4#ZYHOyr7{ zY~u@+I6$9ZuXR2}8dGSbXcKA_Nnj|Y1A79a$XcN4v*r1~ z-26YTEfdyIww7T)){AByx6PWI^OmFGMzVvOj+Uf+aG!6)qFK)jt87a4UlhDz)Phke zPChu0@{?k;wufar?Je2XyG5#GFGaPQ{g=MirX4t`OQC01ZHsz1f&;n{_u6Q=G#o`I z9)eyqLEl-A#s5Y%q{wBO<|Gk)8F&ts?9Y8@L!YXMf?cfZ*NfoR$c_Yu93OBTkWKSI zZ7*tgv8I8j-ct795puc19ewE~)1)w{ZrkJUPU3UqRPUkXUsE}z# zD5Lie;ZDg5Ozg5yZz5aCTy$Nx057|0Bq>(@UOuBj52zdEn=Jrp4ANSlYCtX*=+hNP zJwvPD6~_)h>o`i=tTx{qMZgB!Nr>)4#vd0lJr9uKgK`P(3t5wt1`dtu;l!{^vOK!D z-^eKb=kYrgmgN}tdb=%#^vxS#u`Y6*pw4&AcR0D_4q1JtY=&*zTg&_OkSn7EsRunJ zZqZ!uu1*P+D?vLqWRDf!=o6@_UP2GRZCRC%Z$rAlNnM|`|G@J;=atLiw- z+NzFcqZXhxgO{zTc0w!5PL3_qA?Oi5XfysZ)I+Cjj`=6)nfrD9*R)W2(T{(u4VE1S z%KT%Nplyx39EBH`=uod&oaSY(w|CPkA;v9kk;bu19BZ4Dqj>dQ##1-~Z4yd>XlvQ+ z9^ZG?gq-%!hAy0jvReg*-9FH?mGDLF4j96*ibirDgfhL?{b))TJ(_>nG23T0_EWFW zmr5Bknue2X&3Wk^tfelo(|z*rYzQ|HrsB@teLAJAbgC$wyVnw)11||ZAU$--cVH<^ zU3x?H#Wx2{EJ`y#Nrm`^e>xHiB`g;(Xn%{)o&5_$)o+pacI0@}g+>k%b7_vBU@S5g zreER@l1pvlMf&W+?hB3Uk9g{S(pvs1t*rg&t%TL|hby}K15oW-T6UnjSFE1j2X z38Mqrc!zU57NNPi5Bg3%{hx(>#BwMD=Qy-#|j&Q5T~ zVEyvv3}yu5CKQO=-GRv6%i)KGV~mQ9ucUwIWpf$K?teN~s=Xy}v+r`vjX6ubWNJN2 zd@Um8z$V`-ChEW@ozw4;>9IHPB=3r^-gze)nqNQ}_sN$D|BX(wQ4Id{B@xR%O+Ll` zvch3QR;|aFEZ)0hxi2&KQQ~TTp8;*1rlP%E5{0<5aolKX6gCi+l#3kN>)ibSzh5B@ zixva#B$Il0&#Tp$zzGR%Jkv>~7fsMw_5rV1;l90;Q47zws6$Klx!oz>5{#b)f!INw zeaxe#dza67I{_MY!Ctq~HXH{&2bdfRgr3`avNC7?p}>C(-F!$dtkqWM6#S%KEi5%< zK2+XxxuOIyz*#khl(3V3#rW+Nh##|aLgE-)8CoJLMP9}kMEv1wny^SiE--?msx?C) zqR)LTd`L{9&qH6`9V3GBWy0d9CvjuNMV0_(zF8sCU6OSp1i#ofn&;)QKD#F+Bsl0& zESD|i34&(DKw6O5#^f>ZLN!&_Qur6wdTYJ{zG07*rk+=lAUQ;tE4hnPj}@eECH-7@ z$*Qx$TJdD1%M0HyquS5uLD}Fbs=vNk3GVKlI!+c{%rLI_d7XLny+}1jjDA)7=5I5Q zhZ~B}Q*>*}c`y_~PAmp;_n(>PY%;^H6LwS$IKg_c$O2V6hI+9rmN5~uZ$@V#3y7&* zC%6O9EH`*WZ|#x9Q(+@Ec>|+;mt>=~ri+?AWR^=n7YY94*WjSDz^LVSfiEFqpEtJz zhj%4T-oYm>Pqgvc1RZ}ED$9u%tR)LFqp7)Cqd_OsQ_rmqUt-hTRf&Kx9gmn6^(7t4EZtD_^;?gd?fP)^<_RKqwOxskWr>Qk#k~)HHR2lV zt~}bgHecq^zB+yhj}6)j21P*D39v2xDBoI+*icw=SpOr+dP#a+2D<0kqkAE_KS~lH z-}^CzJ4lbg?lqLK#jOgu9g=B6?Lryzm$8)DCb{`bvT(k(Gif2TLR|(?#}P+JI|s%m z5~Yr!G6pqRu;euqiQgRGQ~CePl%yB!8+Ll@0I_VrI2oS=RekM{hiJ`lxmBKEc#}jKveKo- z=m}1e-?WFL=jkY%ci;#$JbKDLST@o_<|n(YM?@Q}&zF(K0SHd-j@uR*N{mR*q0Ui9G&*DT+QoLWRUmg7!XhE@WQdzTk97;o`^ZRN7CF5;umx8 zfTO=_Y5{3U+cEwUAtodSDLx0!x6aA9?C3Pttm5?`NmGXtvU`S>xb$>*Kd8S0DwRd3c(>Z&S zjEqW8m=V0fJUJ#o^ua2D4f+KgQ(n|6?SB4sx%**8;N$H4NA+}%rCj^)eZC%v#P z5=y)-KrSyxl@lb{k}#vco~c`ga&Fb0K(-nXCQ*rCrx3jA)Ysa3+MXW-4&W)|#=Q?x zG1K#^t|caYHb-?B%umSir^C3n{p9;9gfY|2sv@&{yjCNpn ztu4-1jpX#m?qqtOIjye3*E8+u{jr3?S4c=}f^`@1g?9UIj1)j;jj<%G#NxX{$<$7& zVN0yCaoz&z$sn6wnZ<5am!y6&$)iLg;(4-@FbR2+AYgFrMAFpXWrS;kw5wsN32B93 z;;+zwZIhXE*EhcJ%?g z`a`^t9{SHBt7s#Z>l>rX78u9#X=wEN)_3Lls0Fn*M5D>!F2XB=|bnqXll$PBChe7$S0le^KT0AAr@{=?_}2F4DN$u?e$EqgV!+u zUIuIe@MP_YzhihcX?${n4)x;bsYeO+Mx}OcB2SH|MY0CpL zb?(7~6S{Fk*BJTOpN=jOA!v?AsoKq5vJ+wY!%417$y%oI{_WNa;b!f&u$pVUP5ndo zi&=GaVL}c>;Heql_cf=^GNvM|_}VqT5b<0zgiZ+@jY$;!QmOxgMB0rq#f`wt7AA8#9e&yIUu!_cU!$qi+@6vlm1AH4jfPZf5W;r|?g! ze{{cA(lli&n?Sjf)4+d&Gmo?3-g?}+4>=QE2|`iv3rdEiC-rJXNw!$tVgH8_N!6sn zlMOh>5lUSZ8gFW?r=*5OX&@?whuG{O*A3}*w=rtc8_TNj_Vr@14lLg*TQm-@99J)d zihDanep&fR%jUFPg-l9}r+_zL5J8i(MDCGkaDflk zQ+u$My^}QB!4+-_E!%lPhN{U`YEPZcd!qNu}H_a_a4wxgeBPw1Z}c+M`f zb1WiNrGj}(9bIJkyj9BBKMr2k%1twAPjSj4j6b9|JB_jK&mxGd)P?5nC&v*`R?h$x zy$EE}-SfH>Q(d`oQmkufe-$u$2iPa`mqJa|DVu(UJ9?;!taQyYv zD=0{n!{*6G214P?uOpIkT&S(-Swg1e*cWmNlUNS-*|WlKD=j3ewe$^N@X<(SA~j@H z(m<$IKBLU1vk@#0uFok)?AQ?Al>dso8l}@2A>T#4KQgCWqSn4CZ;5sPxp9Kw2}eCy z#+WT&(si@u_)WF@43wmDmzGyVzahGMK&V$f+%8&M)`sfT$}vbl#tmk|h`CDn4GSh8 zDa7}`-MDZ_923@k-^1eG|5i^Yr`w$&2E!uXC0W^Y=LJUeF-LkJCzl!~Tj#A)&7^0X z@N=DY*Xuiw<9iD5q& zOw0({6Sf{nc3>$Mg>~-ONi3aL#=i1?uD?X)7(B$?++G#Fb(tV``H@TVzXb*1i=rmh zOQOU}!bqerI**p?6O2Y}m^3Jd^~b1T!H#h5F^b9t7cN3rl{x(rwQCq(xg5f`Rtm7E zY3?KoTsoAjE^3TvujZom6`&z|M;~B|SF*7LL^MT2Tq}H4x@ZOG9c7=!ICK@PEWh{C z*SpWrN2_rd+2kgfSNS98Up>y|^-K+&qZiE7A(d^9ekXuiWup%&oUh*<+@XIkPGE3GtaGtQy(&%@KbIQ*!y-NW;!Ca^l|H7fmLfCo;(@EI7c*F%lQX9p%~WI#hYt5 z1)eoXyzX=-h55ayaR24dF|{uJ;o=`TUN5ivDhbC)JU$it(Uem!y)SZeKBcj;k}r+l!2V~ZPw~~ zK0jTUP|@FTM7LbRqjVo@HtdiiE@CVg-BA6G{uoI-40c7WWu9F;r?*iQsmIwFzdW9* zE+>$f!6|Qb+a~Ty?89aX8X^W?pl{mKu1m*HNzxiNw%r+v$LT{heVTLZ?T>4NdY@8{N9>!F#>2 zghl%tXpBfi68=a8$j=&DL!qs5$bzDge8gg-CMBd@MW3z&R?uM@)-w06Wul{suZ`|3 zwV@Oztl(7>Mjyoi7O6;S131zcvmNlf6s81BnyVb~Xxqf5tC{`E4T*=edK0a81BsVO zPaO-{KeVG^bqXQRlaoGoqB%9)AS2QyuMWr*bg@9(cukz^%my=BW^H9_(p$IB23LTVc_0q;LZOXAu$bBH>r%i|W+$E2uBu{}aU zqKWI#t|``EKnH%7S0m3?l|tGSSP97GDawl_lLQ}%@9p{XA>=}*d_~=Jp;H+%z|G8R zhdtubV@u<;PVVWM$v*;Pe{)U{z=AT72Bt&e|^)fD8|^6fLDm-R0WQb)@M)AQ9bJp89pfK%BR#Kb$%j-o9r! zTuFQB5to~;@yzy&?hnArp1xA`;h*wM&p&lVV`4^yotRa5+orW4fIFlzT)Ys2?pEgf zbFj}DCRydCTgaJg^x2GPN1-`gvqHifoB$!6_~jIQuGYCA#4%L~l$U*z{4@--yJKnE zUIFd|Xwu}-gGzBS?!s0GE*6j*7m!(gO?2b%x%o%CNwcUf?5^`6`!xFsT}&wzwJw$w+UT;*lf4{Yl@ku%7Z$zgOp~N2 zJt!WADtX%Hon|VMNp*1*A>3K>4nNpylj5KF!>+pEqDl1f|L8xZ<>&M|bvRz{;-1}5 zGIKV!#E3uMpo#C_6E}c<7MA9Zl{x6nG^`15CI7ZK42p*3nUS~dustCMOZVdD5y~KJ zD@jE#DXUbU{kO2i685b)l7SFQiroT-caP!1zR@uE0l_E495Fy@V*~6-`zEkF{82zj z`pXRK0X+2V1fw0Y6?d!#8K42%Yt3X=5+B7(P8$o%s*cbeB_|cQ^Q;wSEdMh}vb%L~;>q7Cv3)htHVSI})3(<5pr!Tn~W_Oe)Ku)G##iRg@I(8=F_|7RE2|4d^? zt8kGnLqElRP&8rf$z|M`>L%6kf<^=YG?jsAwJ?gXOPVTqpI*z)I+PlquDcD3;gXyoJ zN0cr4W&^$cG`5;%P=6C!yP6UEyN*@c7A5%2tjKeG%GjZ#-;mXpfOobh6c!448cmwh zm4^lO7=hn$X5YueUK1If9y6Hr(;ZT6n^z2J3wSu1Pdx!OhGh@^7fi`^7s=@DJ?xNTI_^fbZ%_!|mIXKCv*)hC1iV|h-M8g^i8+rW~5ACq^j{+be z8R8-#DgL+nkJzXt@8#j?;`HD4suke&(7PdL0leglo~7IO>x_pNv()H#(YF-bf>>=r++6()(&4U;Cd+e@E|}#D zv#oB)Ywgc9#PVl3XZ*BN(V-dMM$UN+CvvM7LgvvzB5iNZ;p+ac1XC_)m$)8$zZIuu z?%uXK6JEI05Z(C6QSNxpB&8qAzG)=!ENE-D61bT!`p(D4wDO718}bG{E;Z~&pxV^_ zDj@md&pl@?=dq=5DTUgZ|69)A6#q0GDs0eN-V&ijG#WUbCHAI`gRZ#G3jcR2(I2m)0DWie!kua06RU|o7)`$N z$CVWpGv``%?4LFI$9S~1S?7vf$1<4VE2+&Db9(t2x`?k6xy?DqmdwTqKTV2Oz zB(3-Ukn9!v70m7}uiYgpOLoq^5D(>4qhf6+lZB?=V^K5K@A48*{~ouT0lp?_0`G?hOTcEIu@+Z&+JH;FbaC~RffR3SN_4j4rv$)y-274?K2Vd?d-S2)dU!I^wSooSIbf6;&f#_ zeVDT$|C;F}FdqqTKeLOGLSne#MKBvngGqSM8mjbaUi1e% zCx$$x1gWID7sT4b}rB$@U@HAFpxr_5*^ zHyFgkdbY?kXIphhY>~lzLu+uEywrJfgT?is5<_^Ge%OY*d4~B%WkV6o$I(rGeX84X zrounlVzf*SFR3|h*i9b>lqZ{rROV(X9AsxcCHWHsZBql;-6gMzg z`X4L0#SJ}+3@;xahQ-aClz#!|H#b4IUFRJw-d9B(rR_)ab;)fP(_I8y(e>}r@e(ce zc=_4_LTGvJZhR;L3YIaxdWF!k1z{-598QxJGc6d?;(AkL=(fhB?Dt4}Qz+r18lny= z`ncH>kRo5e@Hs9%5t1^U6&@i4Vt>`}1ND5W$N(mx4YG1<`cO2PgL+c#`Uf*CHU_~~ zpia!eIM6!wpc*I;TRULWc;0xQ_h=I22ris5Zu}Xp;dDVt6WC53jj=vxe!t0_d2wic zuLa2e8**IIlg||x9jQ^d^$8_#47`KZ`QXg)3<(i8RrjP&dg^8G=n%b4>abl$ygNdp zzo2!=Sg4mqSRWDv{!Bx90WG0`_)Z%O$r}nU$-B`Q<3^a3Q4qo>^T0;x z5>f^v$q&tQ6YhwSzX;6`_U(NtfP+PdF9wa1G$bwmGj` z)!Jju+Rh5eRvSqMN*iQ4*Qk84wd#X8=Lt4P{%}3_r!YEXY$I#*UQc{;{3)jb|XdmVI?Msy;mWO`ZqR2rlp^qQZ(|dyzqfM^5kLYkhiR0 z8>GdE|D(}`6EB>A0<-eiqZRM(wm_iL3z3;93J_?dD~GHhjZ3$`ik5E@rZIDI$Z&r{ zp+$^diu0~`Tl0Qko20WXrY**TVvD3xa~JpiMm#VJ)$|aM5By=Iv`ymKiDS705b&cl z81W)BAwygCVsBjFxJTRAcwi0;-ChUmz(eEDBceNk-6^E*Ln{jsAQ&Bx-|g1Ds9UBI z5My3>Jn`;G4MuXh3wmRyy)k2WMgdX4Hn+wmDj=`|g~>5AT@s(G8W3?0Rxe|~{79p0 zj4HWBh`T(Mc~(em{{@Yu^hoR;?H@D^?@QnHDlpK#;M8!73}2QtdpjN<#DM`+I{67+ z+cG8SxuXvRprPq)09#R)nJBG>fvxeOCvSsM08u96!l01wCa`ETSllsEu)N1~xp;8miW08rBK)qA@qqmCet$1-}i! zUI4P*_4k}1)tyGDpS4nFp&67N8Q$x{e;W|~cmZ7+P;Ow5-IF}tnURuqgD9XK80M7o z{SI`K0qgpzHGV1UWY?Dglrqg$D z56T?6-#~)U%rfK{4@N@l#GG;YZDa^tz&0muB8;9=j&4a7`LibK+n%q~Bop2^u_6@9 z3D!`WN&Ybd@*aw9RIUP~whH9kb2(Ov&{q^JC?-RIw{3?w9FT7WU?E{i)PErr*h7n) zwqY*}efe9-LZPm0KneN?Z@aIhjo^=7vhrH81m56Udcacv>E<0j#{zSLtP)t&9WDHT zA0CAc5{XnTK(Z4L&6Pxx?qxg+Uvvfgi=u37ARTQpdhW{dv&S*ctIcf_&yPX{d(q8u39j7fFEwFC~aDq3?Hy19W}CT+i!g+*AU-wFeRR zHqs#}1fXqp;yh=d^D8J7d~rbU@8a(P7r-VFU|?jKL+UELR((Y zftm|5qBKDOM!VY@_g5)qct(uho6J(}x7R9wt9N0IOR^*kC_xK&_1mjB!e711BlBv& z1v;o>E$Dj{=&#@7tsfYmC7^thLULKb-`T*Ib|q`HBwP1JTHgzU$Hj)PmB=Ay)neUP ziU=8tNEYMe48Db1Qt0Jy)$$tW_vS-Ko1i*PP?%boCFB~B1J#yqp9(^Lo`j$~e6_Zh z-@tnOiA~Ezfz914D?&;Fu{W!8kbR{dvSI&~!Vv&=K;rZU+d1@TB3m4@*!oe7Xrqd* z;W2*W<=4uECNG#dR>*G57u_Or`{6!ESuEpRRA_I_wgF963%=2SU_FE~0O1V+cYi|9 zwRFrU9kj zQ||>`$aWx7-cCEF3)(9$;;b4HZmgna5?Y8lNFW!g6WN1T7Fkk>v3-QJ)J>18t=ipT ziwFs^9x z=Trj!RxqAahU)E7Viw?R7GVpikwvMHarANp27zX4yzkLM^#Ld!0jP!8!orl1T>RzQ zW}Ov49Ib+i$eB-o%QfVShsy1s%B{Ex^BXPjv;n|bgKWNyI+Ee$gK#&wr!5KY92ZD& zfxosA*yRmoD(j0!X(`0MF%T9qCi`AxPdH=mduR`@wzsvRz|FCT*W0^(shsIR1}p%& zO@x(=DZY={zXl$)gC0WPpZ2wqKmW3?)e*kfqvlr;7M(YPdKF3|`5mI|exb5AKpiVW z7l)v?cc52jqALDC&zYu9+@Zc$x9{Pz8)gp+wZ|~jk-+~OepZ8wTqAppg{On+--)j1 zgx9*k&Lm!r{H2T>5p?&iP0#^h{wjOfwgn)rVaz6XSwA)CUlX*l3AFLT&+E|JyG&qF zLT+EnKyQk3zKvpR6!Yb?9s#`yU#B4t$L|+WMo?O)+XjKk1rkTg3#5S{M0%N^c>*wI zD{}+Esc=J*d_iS2$AG-Y50zvH@AV^$ZNf1q!{0k%EQ=H;Obmk(dNJa9L6b2GgpYvg z1agsip=Z*VOSz$WVwm7%PLQS7MX1+>f|o6$Eb;Lc*^$|NbJ)kSu=aWI$)dR^23IwH z=(#vZ(F^n>4s!Nlyz_$Qcx~a(hBjBAl6hk08DYrzV%nR++$q$|xbeZRbSQX%n5hp; z_nY$2_CK!YOq7JDjJc6LdM*8WUf|za1Y=i(nEeH&1xSL13DzhEE%f#VrpN%?cK621=pTN6KcMyU zU;t=}VF!{MyYMIoQLGyC{7)>;0Or;bURMX2-g*%*M5M3B8Ku`TyvC{TJcPXiLPRq& z6MpozZ_DvN`PyX#4PTboe;ZOv-3xO;AP!9TRkS1r5^=5XqbMHh=wvRTIu59B98i8% zU~#RWsaugW+R<3 z;%->;_f0}CC%1$}?1^E@ZB^7J*O{IKp|mn zD0?@exC7*rmpss^YN!s+7Aak%hzoLo82)M@phg1ucK~gLH_H5lo9nm%uwElXUlN~h z4n^@r^m`q-Z4(J23VYAB6QIonS!oX~>KUu-8q0ShLX4+-pm{LKkW?xIfs(1YpJqF0+COvT>}WhYi4Ee5hG2EDD#q5if2PUo-9 z=jdIF=xmjEn@a#;+prqjup#F#YnQOP-w~U59AD`vo21NaR)G<#y|GQQt@HRl7tk{c zy%UqYFV@!j3y{(l@xvPE+>uVrWYpy(=kSC4h^u5JZp@4cZIrx3eUS%$_U9P|a- z$onf&$wpL^75obW@t*f^q?cLb>NVt`73A|7WUs>z*(KyD8w^hi49ZY^C@UQlhYs>n z9MU3gw&e+=g(9o8qo#UdwA;JLBEM0`z)k*7+J;<+1DiZUrQsnpr{N~>5Rr4V%0;Z( zB9gpyER_P1)e4gKI+Fjz(pLwx@jP$iZo#ccDDK7G65O@87AsZ=l;TbZR*E|WcP|ue zky4!CPN8^lE&lTP{@%Zm-MgFJ*`0ajS-CxuFIFS%R-NARm2J3(rW9Gnq4I`Lif2``;RuoOhtX5CKX+8GI_P!HNMXZ%D2RYWMC-Rj+?h?F6HLBuBWHYF%)2LF@s83#morZ*MR#F89nm-EuBF{HtPGd8WOHERDow{~;nDTZS@+u#y z_-0yADs}NW`^&NT^C#mJeWl3rB;Hy>=U&5&pT@oYV)2XmGA!dt{{AZLS3VkR6-AsG zuU)HOVX*%X;p<*3DRg%TPWL%!+_Bzir`{xP+1FlmKFM~!!Ic(JI;rGkYhu-!JHMjd`*EtNP0a@7@H})(GQ}VwxR)U`? zNIwl}-l*Ljwy^HpZ|y9;`SQk#7=OLt-ObDDkW>#KW}(~sk4w<;<=AEU2N?&~RdXh<_0)RetNUd=74 zX=Ivi*CbYOD#A(7kB)gvK97RBj*Qyqa3Dot|e+ zkJCMauR^|$KIEWvbbMPOqdr~?!u=iFxeXChFqnIKR<3P@{IYWwGfcQh`?HPaE@rHG zmZq7x$*kA)E=&C;?P4o{H*oMCi?kY3-M)u5FOmkg2`eNB@a8b13K{ z-_z)F-g_;yZtsXqyMD?Pvv@Oax-%5u+biyF%z)eVE{V%9wJ=7B6~w z&5u42!dFE6V&JD7^(EWOfvays0_M^dpH*z4o(HX89PiIN=0}V5f298MYt&4cuApZM z{7I3im2kf~mq{Bp6-ew&NW^IM=Ge1Pb*FvdOb0q->iNLj%hP4x$FY`M;W$_Q?pAwr zynpk=0SzZA$s2)lm+`n2scRd@&}VJ08|V%}$GwKbLs{^n*2y~*^KN#+gRb}2?4St7qmi(;A<{u^2d4 zU~u%<@LwNJhZ?|3uylp@M0e{5rqZM-UFYlcr1|kv>l8030#BCtM3)rj7qudS@rHiq zDdqAvm=*iHi}-VXti=_OVO<&4-B;x^Ni)dQ9?sBX@K*0G{wWBG!X}QzHY1O4(4Iz) zK>JQ_@?922O!TUR4WJ_cHikOBM_-BAlY&VrU1EY|81FI*WF0lQ|B=Hyk7n zS5y$VA%`REek2I#u&@)1lt*bfMixh`yE#UB+xPMCJ%3PpRsDHkINKc+0xL{Dn&ChR zp)PBkj)k)vv4;;U5F1-dY5oJ&|I*9D03V~hriH(3Im*g%0{6*TjE1wTL@oDDv)xf6 zM9{#R$fVyQ;d)T%qCHnoJIymPDflnZ01+ZB24(RLA>->iuDmT2Gx(@z^N-uWL7DlH4>f!g1Dp<%R&6NfDbCENPT+@O@ z4Q)=~d#_}_I$*&@FiCHa!ShUaNes*2&a;oO`kQEC;>1d>AVzR35kfKkh98~^b;SKy zC)b<@w*n>VMyT>Vk--WKn)}Px{3z=DqTz(6m91=dLr2oaB@g&10aNd?VGAybYmQ@=HuN2k$BY!&RLK73w_Q4Jf`h@vQn zD7q&@}ve(b)HiXdm|^5RS`Ls6-_Y)Wb@}PI84VL{)VDG-h#HR ziI$SB1)$zEt1LecLQSb7PDxY{{^AoXO+E3@henoy#KFc?PIMS&D7XC0QM3SVi$)es zZ$+o5jO~b7V}}o>*?@1P{AS?9F8M_PxS~|0kGkLc%_V_Ck-Dm&BVs1_h4_@U`J6Uv z_y#C02jG~1k;1g)IUG4tJ~BENU_Ca%yh*#F63YVL5)A)Re~iQ-3xq8XqBh%-3;jhD}&Gq8JQu`-o|0n%6_!JI3pd2!FH+>52=A~hYZP(7>TYfbB{p) zn*WI#dD7h8=F2DzlFMtP2kr}dl6j2&fzfAe)n7pj%N3TXF@0ix804_EkZ{c9 zk0nC3cq=g`={bYr;2n}lR0?e&<`FZ<*qRJza4qgMXrdufXvj|S1Wz}aHqHmRu`3ME z1zByHGHF?5)GyK4$f$*>+J#8>g$CM-?;}cGfk^Ty7ave$y|PWQ9MNT4?9lI)kU?Ep z{Gv;c2s6^y+97gy$Ji_7a^T+OYm-f%!v$Fw4~;fgyQ4(;fO_sh%&4O_L?=-2E%w+Q z@wf72**jf~8Sa=aY`~S=!yVld$+tQRXfQM5o*kw(#cQN(VTN?G2!I(9nJMN^d*r&L z*hvj+pm`P9k6+Wh!rF*8pMV#s7@nycUk{Ct!CySq0$NxRUrrYhcHc9#m#y$k_cwy)t%_JqIa z#~stplgHBU8Ct1-xkdqELUq7`j2|hnnmaPlitUxNGb)5dPq2^A&~8xL5<~8#koSl$ z!qFtRkelTpg|B8NcslK5pY{Z}nXSLxZd~LIixJ^vkSnWar6JjBs+}_5NQK$L2qGyV zA8c8YV;LG}U1p5GyU1RHWF)j> z+32L|Wf2%M%#<6DG;*3eZki99Ic;-YVO3ZZHVa6ftAqQ`%sr5osi1E8P`L5ti zPgEK9Y8?rZw7s+fW0Zphv~Qh&Lo(Gr6P9*+N}CPi^NA>5rnz0 z10*I#mPHJKe|$SV*ded;GZ)xmE8Cvy%Q?V!fHGxOs0@bL4_j1(OixD^#mR;4NM2vwJtC!gtv34m zN2ec*mz6(urOY&9VKGO)sbNt-_z*WHNW+8;o494Aj%bXP4UgNH@~9c;Vvw6op0t?)(62c<>)<{`ilrBE6it_wqAL=z`%!SZkSvZDGKiH1^KauN3yE zv2XU8ejh>dVhstnOH#E;jN%n$`Sak|P!?UZ3ZjFFw=+Y&2vXR~AtQ^mzN24bOh-E`~2Kwp6KlrVUtWysj_P_2} zx^P$}s>L7Uz7FPV?nHta;J2G06WZ(gQ#1%p9Q6`MY&a{s2@JaP??|+#EIXOAy1z=g zScFI6lI$DDoXpi!TLxyx0H^9?I1P6sm&g4PN|&ReO)Kp6i{*|j=P%Z$1Ypj4 z{8eRyGw6x5ForNN8mN9B^+^ZKx`JGjwO^Nif>x8vmWKtmR{~pg(D)nHoqQ54VhnB3 zBY}UD5%#@f8n~~nK|nD6%jAyhvq=`!H2gQ=V==9wypDbj0_sI+c0Grznp2TpWW^qE5qeX|9HQ-X_Ikd6+2)c$t3&+B5~Qyr z=7GZV1ndGR>B}?KJYb}lRSq>Gnv~(0*qCd3lko@s00gZ9$4;0xOCR<(p)nO!-JEi^ zT*$v-IGIXdZh_#ag02=j{%Wp`kP;Yh}v{o21-Qax~6H?s~T!<(;3u(ito?<>FxKLJux zk=sg8AgJ1Gl*y)4@M2*@RtEtoo7J{X!eG%db3c+ULd>67s*_@D(`-wy@)Wo$w3bn; zE~KG2TeiHPoclR;Ejp$GXX#fe!?VeDHfdn^9=9Kps5QAaE4YK`sML`V-bH$(VD~}< zlIX!tFC?{B@LFCq>=bSVv$~ud?FJ95Tsy0NH=A7P2ICK6g0&;CPij&?8(;+K00XQ9 zYldFK+Eky$f>aA&-|L;H0<^FzW5Z4ghueV!^A^G~yWc^~YI|2kJjHwT@sc{FlZ`ib zW4N4Q8ndwVi)ttbP*gBf0q``|Po=(jLdUQJKQE{nDF3EIZQMj_<@w3=w~E6YsQqD> z#8}@91xyiVJmb;{vxf%qN6dcm3K|Wu!NF&v!f)~BksD{kNC_t&Rt>ND?g)x??9%o! z*_UicTII=~@!|&W6Aj7`sGq z{x?M<6hKC;0|4fJWmmK-D({D?N+ppe{6VOqCJ{r{s@vCi6hInLEhswt;8_gPWLwYx z#+Kxt7%q<5&3Z!}eQQvvqW*SFbMXb#acvrQA!XR^!EpKodBEoGyXvdsg~GgFa6=lM zc)%<*zz@%`{b_P30$QsEoe*JI@AlK_0itoYwZuz5g|JS+?<$uxwVe|H+ti<5kqo!BPh zZoz&I+1x+b;JRKS1CiLx`H2u4)A&6cRGdM+6{GZiaW~N3%R2=6O0h2}r^6CZ@#mF) z9rCU1(rCKkw9a3=^4|)mm9oLTH##OU-5&$8r0I+>Zl|sy#WLtl149dl%{2Dzr2`FV z;3vNfkZ%}(7lB!UWyrUMVrM0rf9IWKH!NOyV>73H9puMkIO|Rgc6|T1w<#U0PH~SA z@_Q=({CHfHIJoF5LmhL!;d@y$Qo31)FBqJqs`2nMq!+<`S|;{%DuKu5*^Qh!CI=#+ zGcKolbowb(wHopePL#ButoA+9;i zdYqzb?=o7|09GAAd$nkLEbO%+a2m-Z@{o~FsC&h4W!nH7Ea^zpz8F?_k|AzvSZ_~a zxDMifR`JCG>c0TvT2UX^ozFnzS1e5JiypS}>+S5+7~+#YliqqJPU)I~}3`v)T+tj5K!{ zq3xY4ZicvVaI7*}RBvq6nVZmdyM8Ifhy>vJ9<~uG( zH0nNG1%vuM`c#{+V=FSV^><=rCD))A_6raS6g z5l;iYr9p<(&HTYQEQ73|+8b=9UNUbv2nQ>HkSvkLI>s$imaIFdhYz~cY;}1OUOtZ9 z8_6%HwilnVfVHFvsO`XBQb3@;Alb%241>4;Sp=QuXE#@Xc$u7F6=mEHEp6$*hbG0# z9M&m$4<{9Es;+}iOnyH|oESx8>5J7EH|ufQ6X3Cm5q~+u$G(wYvVvOkNfOOTF8%w;O0?C=Za9Te!ssb74_Mm&SZ`V z73T*(seE85kxR_yDyJ@wAjvH*u)80Sn_k3hZ{DZ#9mw4u$c=VG7d;uc#JEnWJ({n0 z+4@qe6G}wK&%r2;&<(X-Ts1Z!mA=9Yndp;=_4&Dj=_@^q?FTiW`3g}g6M)Z#M>Ys4O_eVMf47atCRnY_5$ zK!~V%Yx^OIR&nG;yfviBM|vl-*Kv9GM4*7r%z;WVcbZR~Ga6ys$~Vdph2U1O7X1b& z^^!pJ5XP1mS@%A7c zzAQd-x(nQwa{f@_6m4|An$L+OED+h0H(dpCOK1{BP0y-qwCVEa98S)B@%SlVCZh0= z$~x8ip-)@XIHFw4qfbFpV_)KiN}FS;(1V&Ny&w>;%&VFJQq$+;?qF?2RBQU@tc7*T z)8h+=S*yi0jaKo%CcN6CJ&}dhU&71*PiL!lAD-%=|7$}~j56UbY45(Ir6|V1#vr>q z36bVJh0<@seGfkZ1vIx*g0ikxp|Op?pSlqmlyXWYTePS!Szhk2QZAs!fG(POMowsy ze9vn_2Qcvb#Ve?x1^cEnZX2a)=UfM^dCIZcYbo6Js`vLW+PF^is@yUU7EE|k3P>^$lkrH3)p2EZPZ-B%}rw#O4wYBq~5!2lm zH0TCoLVCxjGrceRvovw4hWDutYNiNT{O>jjAk1ZPZc4jGaliP+;w8*H3&MNwL=-o| z3fS5YL>t`Cx_G+)-u@}$nwPIIiqy0o-pi_=y~yKOFGuks(<}ocxD+Z;0l7}lUOW91 zx56FUykEU{n#GLwQq7Kd^hNFL&V0bQuMmF%_@rqJ{3l0cU7>sF`mYzHUuCs~a4_Hu zTFm?*eY65OR>K{$Ii7nhihkO3L#Ah34^8U;s}3&T2=_u5nByH^xbH8#K;p!|;KUCZ^Hh&OCMyU<EP3V*TQB2U&pXloUd z6)`6c6&X1xMr1>54%iwg5qwP4ZXl*OtX*!~@;vB|W;49ppg1}9I57ox+IOJ9H*(XF z{FJl(lMriuO`(C$H8CbbAT2xV3>j!i_Rhjvrd~(swBy%t1J#yX8s7ajwVY{+rVW%i z{ZktI4G2Y2TTq5Bv_wvpOEI)T@O$FG(Dd6ZZks>xSR{lEf}XY{@mSv0T;`Dzr*_>7 z@7a56kQyKuttiamX$P~SmpxaQ?$)~eX_~nUlfMV2gs@c{QEc|93q^A{5=$%`%+?t# z1o`6nt^__nLPZr4WfE$iV)~@eJ_zza`=Szxd?b)jVWQNgte&WqRv4tw>^E&=&BW70 z2p2oro%YQ=qId~g*{|JIflNZx!ZS!8AS&_rtr!CcuNaq%Sm=G)+f*bM z&L#x<6<#1qwr0uLB`6C&nNqkBZlFeOD;rsa_bckGo;w$Kndv&?@O7iPJYG>K;f2TZ z4+SiT;N+i!$c0Cs_B06Ez9wB%0D@9@b|;3*r4}$IutJ&mhd=L_%}#WKO3U``*Y6}w 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 literal 0 HcmV?d00001 diff --git a/solr-docker/umich-plugin-7.7.1.jar b/solr-docker/umich-plugin-7.7.1.jar new file mode 100755 index 0000000000000000000000000000000000000000..e7646a5f661f4a7e21ec65e43127e651cdc7b9a4 GIT binary patch literal 48880 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�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 a($m}reLo-~g6_g2nt?VboPjini2e_T{Rde9 literal 0 HcmV?d00001 From c707ae735d628d363876c172065c2142b9495e7f Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 23 Mar 2022 11:32:01 -0400 Subject: [PATCH 02/13] update docs --- README.md | 16 ++++++++++++++-- init.sh | 21 ++++++++++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2bd3683..03e28b9 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,9 @@ lighter-weight approach is available using `docker compose` (or Before running containers for all the services via compose, you will need to run the `init.sh` script in the same directory as this file; this will -pull down the solr configuration from the working repository. Read the -comments in that file for more information. +pull down the solr configuration from the working repository and, if needed, create a docker/podman secret for the PostgreSQL database password. + +Read the comments in that file for more information. From that point, `docker compose up` will start all the necessary services, including the primary Rails application (in development mode, so editing files @@ -37,6 +38,17 @@ in the Rails application directories will take effect immediately). For more information, look at the `Dockerfile` in this directory and in the `solr-docker` subdirectory. +The default exposed ports are: + +| Port | Service | +|------| --------| +| 3000 | Rails | +| 2181 | Zookeeper | +| 8983 | solr | +| 6379 | Redis | +| 5432 | Postgres | + + ### Vagrant If you don't want to use containers, you can use diff --git a/init.sh b/init.sh index 9ac6b24..efe5588 100755 --- a/init.sh +++ b/init.sh @@ -4,6 +4,8 @@ set -eu # Ensures that a suitable TRLN Discovery Solr configuration # is downloaded and available for use with Docker/Podman Compose. +# Additionally creates a podman/docker secret for the PostgreSQL database +# password # By default pulls the `master` branch, but this can be changed # by passing in the name of another branch when running this script. @@ -19,6 +21,8 @@ echoerr() { wd=$(pwd) +# If solr setup fails due to missing configuration, then +# rm -rf solr-docker/config and re-run this script if [ ! -d solr-docker/config/solr/trlnbib ]; then cd solr-docker/config echo "checking out solr configuration" @@ -33,19 +37,26 @@ else echo "solr configuration is already available" fi +# figure out whether docker or podman is available on the command line; +# prefer podman to docker + container_runner='podman' -if [ $(type -P "${container_runner}") ]; then - # no-op becuase it's hard to negate the test - : -else +if [ -z "$(type -P "${container_runner}")" ]; then container_runner='docker' fi +if [ -z "$(type -P "${container_runner}")" ]; then + echo "Neither of podman/docker found. Exiting." + exit 1 +fi + +# grep will have a non-zero exit if the value isn't found + ${container_runner} secret list | grep trln-ingest-db-pw > /dev/null if [ $? != 0 ]; then echo "Didn't find database secret; creating ..." ruby -r securerandom -e 'puts SecureRandom.alphanumeric(48)' | ${container_runner} secret create trln-ingest-db-pw - else - echo "database secret is set up" + echo "database secret is already set up" fi From 34589cedca92ad97ba75227eaf189a5a5b3bb18f Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 23 Mar 2022 14:55:34 -0400 Subject: [PATCH 03/13] fix oops with missing config dir --- init.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/init.sh b/init.sh index efe5588..f3ddf23 100755 --- a/init.sh +++ b/init.sh @@ -24,8 +24,9 @@ wd=$(pwd) # If solr setup fails due to missing configuration, then # rm -rf solr-docker/config and re-run this script if [ ! -d solr-docker/config/solr/trlnbib ]; then - cd solr-docker/config + cd solr-docker echo "checking out solr configuration" + mkdir config && cd config git init git remote add origin https://github.com/trln/trln-config git config core.sparseCheckout true From 975c4a3b4e10c64189436c1ef94c2a58947b18ce Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Fri, 25 Mar 2022 13:39:25 -0400 Subject: [PATCH 04/13] support environment configs --- .gitignore | 1 + Gemfile | 2 ++ Gemfile.lock | 3 +++ app/services/solr_service.rb | 8 +++++--- config/boot.rb | 30 ++++++++++++++++++++++++++++++ config/database.yml | 13 ++++++++----- config/environments/development.rb | 2 +- config/initializers/spofford.rb | 4 ++++ config/solr.yml | 2 +- db/schema.rb | 14 +++++++------- docker-compose.yml | 2 +- init.sh | 10 ++++------ lib/tasks/user.rake | 5 ++++- 13 files changed, 71 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index d75ff93..ad7ce8a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ vendor/bundle .vagrant_rails_env +.db-password .ruby-version diff --git a/Gemfile b/Gemfile index 5bc38cd..c84f076 100644 --- a/Gemfile +++ b/Gemfile @@ -131,3 +131,5 @@ end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem # gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + + gem 'tzinfo-data' diff --git a/Gemfile.lock b/Gemfile.lock index 71280d0..1de4ff8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -270,6 +270,8 @@ GEM turbolinks-source (5.2.0) tzinfo (2.0.4) concurrent-ruby (~> 1.0) + tzinfo-data (1.2022.1) + tzinfo (>= 1.0.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) unf (0.1.4) @@ -322,6 +324,7 @@ DEPENDENCIES sqlite3 timecop (~> 0.9.1) turbolinks (~> 5) + tzinfo-data uglifier (>= 1.3.0) web-console yajl-ruby (>= 1.3.1) diff --git a/app/services/solr_service.rb b/app/services/solr_service.rb index 96ac88d..fc42818 100644 --- a/app/services/solr_service.rb +++ b/app/services/solr_service.rb @@ -86,10 +86,10 @@ def json_doc_update(files, commit_interval = 0) # A configuration matching the name must already exist. # defaults to the same value as `collection` def create_collection(collection = 'trlnbib', config_name = nil) - return unless Rails.env == 'development' + return unless Rails.env.development? - resp = @client.get(COLL_PATH, params: { action: 'list' }) - return if resp.fetch('collections', []).include?(collection) + query_resp = @client.get(COLL_PATH, params: { action: 'list' }) + return if query_resp.fetch('collections', []).include?(collection) config_name ||= collection @@ -100,5 +100,7 @@ def create_collection(collection = 'trlnbib', config_name = nil) numShards: 1 }) return resp + rescue StandardError + warn "#{query_resp.to_json}" end end diff --git a/config/boot.rb b/config/boot.rb index 30f5120..2789ad2 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,3 +1,33 @@ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) require 'bundler/setup' # Set up gems listed in the Gemfile. + +# add some global functions to let configs check environment + +module TRLN + module IngestEnvironment + + def vagrant? + return @vagrant if defined?(@vagrant) + @vagrant = system('grep -q ^vagrant: /etc/passwd') + end + + def container? + return @container if defined?(@container) + @container = ENV['OS_ENV'] == 'container' + end + + module_function :vagrant? + module_function :container? + end +end + + +if TRLN::IngestEnvironment.vagrant? + warn "We are running under vagrant. Subtly mangling configurations" + ENV['VAGRANT'] = 'yes' +end + +if TRLN::IngestEnvironment.container? + warn "We appear to be running inside a container" +end diff --git a/config/database.yml b/config/database.yml index e350be7..121e02d 100644 --- a/config/database.yml +++ b/config/database.yml @@ -12,14 +12,17 @@ default: &default development: &vagrant adapter: postgresql encoding: unicode + # see config/boot.rb + <% unless TRLN::IngestEnvironment.vagrant? %> + # host/passwd not needed when postgres is on localhost and ident auth + # is available, as with vagrant setup + host: <%= ENV.fetch('DB_HOST', 'localhost') %> + password: <%= ENV['DB_PASSWORD'] %> + <% end %> + database: <%= ENV['DB_NAME'] || 'shrindex' %> pool: 5 username: <%= ENV['DB_USER'] || 'set_env_vars' %> - # do not set host when running under vagrant - # host: <% ENV.fetch('DB_HOST', 'localhost') %> - # postgres under vagrant also uses ident when hostnamne - # is not set - #password: <%= ENV['DB_HOST'] %> # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". diff --git a/config/environments/development.rb b/config/environments/development.rb index a403ff9..3cae38a 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -62,7 +62,7 @@ # routes, locales, etc. This feature depends on the listen gem. config.file_watcher = ActiveSupport::EventedFileUpdateChecker - config.stash_directory = ENV['APP_STASH_DIRECTORY'] || "#{ENV['HOME']}/spofford-data" + config.stash_directory = ENV['TRANSACTION_FILES_BASE'] || "#{ENV['HOME']}/spofford-data" unless File.directory?(config.stash_directory) $stderr.write("Transaction storage directory #{config.stash_directory} does not exist!\n") diff --git a/config/initializers/spofford.rb b/config/initializers/spofford.rb index 7751612..1a51e36 100644 --- a/config/initializers/spofford.rb +++ b/config/initializers/spofford.rb @@ -15,4 +15,8 @@ FileUtils.mkdir(config.stash_directory) end + if Rails.env.development? + SolrService.new.create_collection + end + end diff --git a/config/solr.yml b/config/solr.yml index ed72b70..d99b38f 100644 --- a/config/solr.yml +++ b/config/solr.yml @@ -3,7 +3,7 @@ # see app/services/solr_service.rb common: &common url: - - http://localhost:8983/solr/ + - <%= ENV.fetch('SOLR_URL', 'http://localhost:8983/solr/') %> collections: - trlnbib - icetocs diff --git a/db/schema.rb b/db/schema.rb index 79d7f50..473eb5c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2,20 +2,20 @@ # of editing this file, please use the migrations feature of Active Record to # incrementally modify your database, and then regenerate this schema definition. # -# Note that this schema.rb definition is the authoritative source for your -# database schema. If you need to create the application database on another -# system, you should be using db:schema:load, not running all the migrations -# from scratch. The latter is a flawed and unsustainable approach (the more migrations -# you'll amass, the slower it'll run and the greater likelihood for issues). +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180904184901) do +ActiveRecord::Schema.define(version: 2018_09_04_184901) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" - create_table "documents", id: :string, limit: 32, force: :cascade do |t| + create_table "documents", id: { type: :string, limit: 32 }, force: :cascade do |t| t.string "local_id", limit: 32, null: false t.string "owner", limit: 32, null: false t.jsonb "content" diff --git a/docker-compose.yml b/docker-compose.yml index 3abf864..8bf8530 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -98,7 +98,7 @@ services: secrets: trln-ingest-db-pw: - external: true + file: .db-password volumes: ingest-transactions: diff --git a/init.sh b/init.sh index f3ddf23..35e57eb 100755 --- a/init.sh +++ b/init.sh @@ -53,11 +53,9 @@ fi # grep will have a non-zero exit if the value isn't found -${container_runner} secret list | grep trln-ingest-db-pw > /dev/null - -if [ $? != 0 ]; then - echo "Didn't find database secret; creating ..." - ruby -r securerandom -e 'puts SecureRandom.alphanumeric(48)' | ${container_runner} secret create trln-ingest-db-pw - +if [ ! -s .db-password ]; then + echo "database password file not found, creating" + echo 'a1nsw0rth' > .db-password else - echo "database secret is already set up" + echo "database passwod is already set up" fi diff --git a/lib/tasks/user.rake b/lib/tasks/user.rake index 5a25b46..2571d44 100644 --- a/lib/tasks/user.rake +++ b/lib/tasks/user.rake @@ -1,6 +1,9 @@ namespace :user do def vagrant? - @vagrant ||= system("grep '^vagrant:' /etc/passwd") + return @vagrant if defined?(@vagrant) + + # see config/boot.rb + @vagrant = TRLN::IngestEnvironment.vagrant? || TRLN::IngestEnvironment.container? end desc 'List users' task list: :environment do From f6f8773762a5eb01a9a1571626e423dafd3c6c42 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Mon, 26 Sep 2022 13:45:02 -0400 Subject: [PATCH 05/13] initial docker-compose dev environment --- .gitignore | 45 ++-- .rubocop.yml | 153 ++++++++++++++ Dockerfile | 10 +- README.md | 19 +- docker-compose.yml | 39 +++- entrypoint.sh => entrypoint | 2 + init.sh | 15 +- solr-docker/Dockerfile | 7 +- .../plugins/CJKFilterUtils-v3.0-SNAPSHOT.jar | Bin 0 -> 56622 bytes ...cene-umich-solr-filters-2.0-solr-9.0.0.jar | Bin 0 -> 58774 bytes wait-for | 192 ++++++++++++++++++ 11 files changed, 433 insertions(+), 49 deletions(-) create mode 100644 .rubocop.yml rename entrypoint.sh => entrypoint (94%) create mode 100644 solr-docker/plugins/CJKFilterUtils-v3.0-SNAPSHOT.jar create mode 100644 solr-docker/plugins/lucene-umich-solr-filters-2.0-solr-9.0.0.jar create mode 100755 wait-for diff --git a/.gitignore b/.gitignore index ad7ce8a..4d3ef7d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,16 +7,25 @@ # Ignore bundler config. /.bundle -/.vagrant +vendor/bundle + +# created by JetBrains' editors/IDEs *.iml +.idea/ -vendor/bundle +*.sublime-* + +# Directories created by vagrant directly +/.vagrant + +# directories created by vagrant provisioner + +solr-dir/ +tlrn-config/ .vagrant_rails_env .db-password -.ruby-version - # Ignore the default SQLite database. /db/*.sqlite3 /db/*.sqlite3-journal @@ -26,31 +35,23 @@ vendor/bundle /tmp/* !/log/.keep !/tmp/.keep +tmp/ +passenger.*.log +passenger*.lock +passenger*.pid # Ignore Byebug command history file. .byebug_history -# Local customizations -# +# Files downloaded by Ansible provisioners ansible/roles/* -# might be -trln-config/ -# Where Solr is installed -solr-dir/ -# Where public Solr configuration is downloaded -argon-solr-config - - - +# Other fiels created by/used by app config/local_env.yml -comfig/mappings config/mappings/ .password postgres-setup.sql -*.sublime-* -.idea/ -tmp/ -passenger.*.log -passenger*.lock -passenger*.pid + +# files created/used by containers (docker-compose.yml, init.sh) +.env +solr-docker/config/ diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..d43ee3e --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,153 @@ +# Relaxed.Ruby.Style + +## Version 2.5 + +Style/Alias: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylealias + +Style/AsciiComments: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleasciicomments + +Style/BeginBlock: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylebeginblock + +Style/BlockDelimiters: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleblockdelimiters + +Style/CommentAnnotation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylecommentannotation + +Style/Documentation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styledocumentation + +Layout/DotPosition: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutdotposition + +Style/DoubleNegation: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styledoublenegation + +Style/EndBlock: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleendblock + +Style/FormatString: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleformatstring + +Style/IfUnlessModifier: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleifunlessmodifier + +Style/Lambda: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylelambda + +Style/ModuleFunction: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylemodulefunction + +Style/MultilineBlockChain: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylemultilineblockchain + +Style/NegatedIf: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenegatedif + +Style/NegatedWhile: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenegatedwhile + +Style/NumericPredicate: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylenumericpredicate + +Style/ParallelAssignment: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleparallelassignment + +Style/PercentLiteralDelimiters: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylepercentliteraldelimiters + +Style/PerlBackrefs: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styleperlbackrefs + +Style/Semicolon: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesemicolon + +Style/SignalException: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesignalexception + +Style/SingleLineBlockParams: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesinglelineblockparams + +Style/SingleLineMethods: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylesinglelinemethods + +Layout/SpaceBeforeBlockBraces: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutspacebeforeblockbraces + +Layout/SpaceInsideParens: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#layoutspaceinsideparens + +Style/SpecialGlobalVars: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylespecialglobalvars + +Style/StringLiterals: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylestringliterals + +Style/TrailingCommaInArguments: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarguments + +Style/TrailingCommaInArrayLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainarrayliteral + +Style/TrailingCommaInHashLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#styletrailingcommainhashliteral + +Style/SymbolArray: + Enabled: false + StyleGuide: http://relaxed.ruby.style/#stylesymbolarray + +Style/WhileUntilModifier: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylewhileuntilmodifier + +Style/WordArray: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#stylewordarray + +Lint/AmbiguousRegexpLiteral: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#lintambiguousregexpliteral + +Lint/AssignmentInCondition: + Enabled: false + StyleGuide: https://relaxed.ruby.style/#lintassignmentincondition + +Layout/LineLength: + Enabled: false + +Metrics: + Enabled: false diff --git a/Dockerfile b/Dockerfile index 1f789fb..f0361a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,8 @@ -FROM ruby:2.7-alpine AS builder +ARG RUBY_VERSION=2.7-alpine +FROM ruby:${RUBY_VERSION} AS base + +# note here that if you don't use an alpine flavor this +# package update will not work! RUN apk update && apk upgrade && apk add --no-cache build-base sqlite-dev libpq-dev libxml2-dev libxslt-dev yajl git @@ -17,8 +21,8 @@ WORKDIR /app COPY --from=builder /gems /gems RUN bundle config set path /gems -COPY entrypoint.sh /usr/local/bin/entrypoint.sh -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +COPY entrypoint /usr/local/bin/entrypoint +ENTRYPOINT ["/usr/local/bin/entrypoint"] EXPOSE 3000 CMD ["server"] diff --git a/README.md b/README.md index 03e28b9..fbf3a9a 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,9 @@ records for the Triangle Research Libraries Network (TRLN). ![Continuous Integration Status](https://github.com/trln/trln-ingest/workflows/CI/badge.svg) -Setup is currently handled via Vagrant, but here's at least a partial list -of what you'll need installed on the target system, other than Ruby, of course. +Setup is currently handled via Vagrant or Docker Compose, but here's at least a +partial list of what you'll need installed on the target system, other than +Ruby, of course. * Postgres 9.5+ (for JSONB and "upsert" support) -- [Postgres yum repositories](https://yum.postgresql.org/repopackages.php) is a good place @@ -18,7 +19,7 @@ of what you'll need installed on the target system, other than Ruby, of course. ## Getting Started -### Containers and compose +### Containers and Docker/Podman Compose The Vagrant setup should do most of what's needed, but a somewhat lighter-weight approach is available using `docker compose` (or @@ -27,16 +28,20 @@ lighter-weight approach is available using `docker compose` (or Before running containers for all the services via compose, you will need to run the `init.sh` script in the same directory as this file; this will -pull down the solr configuration from the working repository and, if needed, create a docker/podman secret for the PostgreSQL database password. +pull down the solr configuration from the working repository and, if needed, create a docker/podman secret for the PostgreSQL database password. -Read the comments in that file for more information. +Read the comments in `init.sh` for more information. From that point, `docker compose up` will start all the necessary services, including the primary Rails application (in development mode, so editing files in the Rails application directories will take effect immediately). -For more information, look at the `Dockerfile` in this directory and in the -`solr-docker` subdirectory. +For more information, look at the `docker-compose.yml`, the `Dockerfile` in +this directory, and the one in in the `solr-docker` subdirectory. A little bit +of `depends_on` and `wait-for` fine-tuning is necessary to ensure that the Solr +plugin files (in `solr-docker/plugins`) and the Solr configuration are +correctly installed before the services services start. When the smoke clears +you should have a complete set of services. The default exposed ports are: diff --git a/docker-compose.yml b/docker-compose.yml index 8bf8530..b42f0cf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ services: database: image: postgres:14-alpine + container_name: database ports: - 5432:5432 environment: @@ -12,7 +13,7 @@ services: # this appears to interfere with the right selinux context # being set on the container. :Z means the container should get # its own context and be the only one that can access the mount - # :z means other containers in this compose file can access + # :z means other containers in this compose file can access # the mount - ./dbinit:/docker-entrypoint-initdb.d/:z @@ -22,6 +23,7 @@ services: redis: image: redis:5-bullseye + container_name: redis ports: - 6379:6379 healthcheck: @@ -30,6 +32,8 @@ services: timeout: 3s retries: 10 + # this is designed merely to be 'inherited' from so we arent' + # repeating ourselves with the rails and sidekiq containers base-app: &base-app image: rwgrim/docker-noop volumes: @@ -43,7 +47,7 @@ services: condition: service_healthy solr1: condition: service_healthy - + secrets: - trln-ingest-db-pw environment: @@ -53,15 +57,22 @@ services: REDIS_URL: redis://redis:6379 SOLR_URL: http://solr1:8983/solr/ TRANSACTION_FILES_BASE: /transactions - + app: &app <<: *base-app - image: ingestapp + container_name: spofford + image: ingestapp build: . command: server ports: - 3000:3000 + depends_on: + - solr1 + - redis + - database + + sidekiq: <<: *base-app image: ingestapp @@ -72,7 +83,7 @@ services: container_name: solr1 build: context: solr-docker - ports: + ports: - 8983:8983 environment: - ZK_HOST=zoo1:2181 @@ -81,6 +92,7 @@ services: healthcheck: test: ['CMD-SHELL', 'curl -sf http://localhost:8983/solr/admin/collections?action=list' ] volumes: + - ./solr-docker/plugins:/trln-modules - ./solr-docker/initscripts:/docker-entrypoint-initdb.d:Z zoo1: @@ -96,6 +108,23 @@ services: ZOO_SERVERS: server.1=zoo1:2888:388;2181 ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok + solr_config_loader: + image: solr:9 + container_name: config_loader + depends_on: solr1 + environment: + - SOLR_HOST=solr1 + command: + - bash + - "-e" + - "-x" + - "-c" + - "wait-for-solr.sh --max-attempts 10 --wait-seconds 5 --solr-url http://$$SOLR_HOST:8983/; solr create_collection -c trlnbib -d /trlnbib-config -p 8983" + + volumes: + - ./solr-docker/config:/trlnbib-config + + secrets: trln-ingest-db-pw: file: .db-password diff --git a/entrypoint.sh b/entrypoint similarity index 94% rename from entrypoint.sh rename to entrypoint index 4abffb3..b73d255 100755 --- a/entrypoint.sh +++ b/entrypoint @@ -1,5 +1,7 @@ #!/bin/sh +# Custom entrypoint to enable local development + set -e rm -f /app/tmp/pids/server.pid diff --git a/init.sh b/init.sh index 35e57eb..23a153f 100755 --- a/init.sh +++ b/init.sh @@ -13,7 +13,7 @@ set -eu # After a copy has been checked out, a different branch can be used # via `cd solr-docker/config && git pull origin [newbranch] && git checkout [newbranch]` and re-starting all the containers. -CONFIG_BRANCH=${1:-master} +CONFIG_BRANCH=${1:-main} echoerr() { echo "$@" 1>&2; @@ -23,16 +23,13 @@ wd=$(pwd) # If solr setup fails due to missing configuration, then # rm -rf solr-docker/config and re-run this script -if [ ! -d solr-docker/config/solr/trlnbib ]; then +if [ ! -d solr-docker/config/ ]; then cd solr-docker echo "checking out solr configuration" - mkdir config && cd config - git init - git remote add origin https://github.com/trln/trln-config - git config core.sparseCheckout true - echo "solr/trlnbib/" >> .git/info/sparse-checkout - git pull --depth=1 origin "$CONFIG_BRANCH" - git checkout ${CONFIG_BRANCH} + git clone https://github.com/trln/trlnbib-solr-config config/ + if [ "main" != "${CONFIG_BRANCH}" ]; then + git checkout ${CONFIG_BRANCH} + fi cd $wd else echo "solr configuration is already available" diff --git a/solr-docker/Dockerfile b/solr-docker/Dockerfile index b244ad1..bcb97d9 100644 --- a/solr-docker/Dockerfile +++ b/solr-docker/Dockerfile @@ -1,9 +1,10 @@ -FROM solr:7.7.3 +FROM solr:9.0.0 # Install necessary contrib jars -RUN cp /opt/solr/contrib/analysis-extras/lib/icu*.jar /opt/solr/contrib/analysis-extras/lucene-libs/*icu*.jar /opt/solr/server/solr/lib +#RUN cp /opt/solr/contrib/analysis-extras/lib/icu*.jar /opt/solr/contrib/analysis-extras/lucene-libs/*icu*.jar /opt/solr/server/solr/lib # Add external jars -COPY *.jar /opt/solr/server/solr/lib +#RUN sudo mkdir /opt/solr-9.0.0/modules/trln +COPY plugins/*.jar /trln-modules/ COPY config/solr/trlnbib /trlnbib-config diff --git a/solr-docker/plugins/CJKFilterUtils-v3.0-SNAPSHOT.jar b/solr-docker/plugins/CJKFilterUtils-v3.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..3fcae53818c52092f13010057ec5296bbba12432 GIT binary patch literal 56622 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 z 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 literal 0 HcmV?d00001 diff --git a/solr-docker/plugins/lucene-umich-solr-filters-2.0-solr-9.0.0.jar b/solr-docker/plugins/lucene-umich-solr-filters-2.0-solr-9.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae38357af47fef221796055f956b37476d8ca03e GIT binary patch literal 58774 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

aB+3L3oLNKO5f|82F{ zYcu|Fwl+X!l43MarZV(5wDW@y3tlMxJ7*e)#b0eTYi4U^hsRkuI_cQrAcTd)iv{LW z#LeJ0GARs{8PQ#xc7Sij@9N7Li>aE0Xt#=QGS&EYGC;Y4&opfZ${eDtvcPnT(`13| zRIP++r0C8o%>!aC0GcDhiWGzSQ7Z#5d<7093$RDeOyhgsHe)d>2#90~b~Tt|ItDlO zp3xG7AS9>KtKnZ-be~0HVrzh01Aoq}pmA7eaLJe-`+4!3nLkU%O#$l%CfJq64DJ`FylX=?{GZoR0KNHSxZ3J1hW=!`?c8M%8s4tD@X5@0l* z$EYfa$T)xZqt9SUd7|G@LeMxY8<6`5z6oOz?hK})MJf?E!v&v&jQ}4U zIV>hPO%N!|0=@m{3^K`)3}htzrk&aBL=PYbx==#>tjUMM=?oHo?Qd9!aAuzDFG`OA za{zDo?9Mjh!k@ti#z&}sXicvpOGW#@oTz9K?qSG_xMuIg2rK`11Aw&63r*vG3$7R z#qC1VeqigTi0r=T1S`-#zONm)#9NT|D6KDM67I~9Y%Gu%29h~|#zGJ>aOALdf(nHY zwVA{=3-@A>@mOaZol2qv`hLde)c23v>%RbF1jq~1d5i>oL`EC3PpGhy4Y5WY>}@eV z3YhX{?#Bg$9Maunr zQhjmku*Q?V#X3MrX+QjosxXB!&ACd?J)fX-#|MVeyn=+g1m8AK5I_#=0v&;9esLEL z4c~|eg05pCKnwRlI0alo9-<(z5GX#aC=V~%aJh7ds3!)22>3Fm>RM- zLI{MLcUA=M0=*D8CS1?~!nFDo5p%A*0~{2-P96f?dkztFX4O0#558m>!dsb-geUyt zfv-1%(0(ZufhKzO8N93T*-H?3S^X!#Kam3qAMe0j*GyY2HaWTI&p8i>f>ABe4@>-U zt?9-$)>~*S7_fpoT-XEtI2Qy$77c

Luu;@Nq8z1BX@fRroWbV2~TrPf#7O;Rc8% kuYExv1+hSIgHHnuKJ2qz0+!f=MfTuJ8r*vackqAvKQ>=a5&!@I literal 0 HcmV?d00001 diff --git a/wait-for b/wait-for new file mode 100755 index 0000000..1a66bcf --- /dev/null +++ b/wait-for @@ -0,0 +1,192 @@ +#!/bin/sh + +# The MIT License (MIT) +# +# Copyright (c) 2017 Eficode Oy +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +VERSION="2.2.2" + +set -- "$@" -- "$TIMEOUT" "$QUIET" "$PROTOCOL" "$HOST" "$PORT" "$result" +TIMEOUT=15 +QUIET=0 +# The protocol to make the request with, either "tcp" or "http" +PROTOCOL="tcp" + +echoerr() { + if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi +} + +usage() { + exitcode="$1" + cat << USAGE >&2 +Usage: + $0 host:port|url [-t timeout] [-- command args] + -q | --quiet Do not output any status messages + -t TIMEOUT | --timeout=timeout Timeout in seconds, zero for no timeout + -v | --version Show the version of this tool + -- COMMAND ARGS Execute command with args after the test finishes +USAGE + exit "$exitcode" +} + +wait_for() { + case "$PROTOCOL" in + tcp) + if ! command -v nc >/dev/null; then + echoerr 'nc command is missing!' + exit 1 + fi + ;; + wget) + if ! command -v wget >/dev/null; then + echoerr 'wget command is missing!' + exit 1 + fi + ;; + esac + + TIMEOUT_END=$(($(date +%s) + TIMEOUT)) + + while :; do + case "$PROTOCOL" in + tcp) + nc -w 1 -z "$HOST" "$PORT" > /dev/null 2>&1 + ;; + http) + wget --timeout=1 -q "$HOST" -O /dev/null > /dev/null 2>&1 + ;; + *) + echoerr "Unknown protocol '$PROTOCOL'" + exit 1 + ;; + esac + + result=$? + + if [ $result -eq 0 ] ; then + if [ $# -gt 7 ] ; then + for result in $(seq $(($# - 7))); do + result=$1 + shift + set -- "$@" "$result" + done + + TIMEOUT=$2 QUIET=$3 PROTOCOL=$4 HOST=$5 PORT=$6 result=$7 + shift 7 + exec "$@" + fi + exit 0 + fi + + if [ $TIMEOUT -ne 0 -a $(date +%s) -ge $TIMEOUT_END ]; then + echo "Operation timed out" >&2 + exit 1 + fi + + sleep 1 + done +} + +while :; do + case "$1" in + http://*|https://*) + HOST="$1" + PROTOCOL="http" + shift 1 + ;; + *:* ) + HOST=$(printf "%s\n" "$1"| cut -d : -f 1) + PORT=$(printf "%s\n" "$1"| cut -d : -f 2) + shift 1 + ;; + -v | --version) + echo $VERSION + exit + ;; + -q | --quiet) + QUIET=1 + shift 1 + ;; + -q-*) + QUIET=0 + echoerr "Unknown option: $1" + usage 1 + ;; + -q*) + QUIET=1 + result=$1 + shift 1 + set -- -"${result#-q}" "$@" + ;; + -t | --timeout) + TIMEOUT="$2" + shift 2 + ;; + -t*) + TIMEOUT="${1#-t}" + shift 1 + ;; + --timeout=*) + TIMEOUT="${1#*=}" + shift 1 + ;; + --) + shift + break + ;; + --help) + usage 0 + ;; + -*) + QUIET=0 + echoerr "Unknown option: $1" + usage 1 + ;; + *) + QUIET=0 + echoerr "Unknown argument: $1" + usage 1 + ;; + esac +done + +if ! [ "$TIMEOUT" -ge 0 ] 2>/dev/null; then + echoerr "Error: invalid timeout '$TIMEOUT'" + usage 3 +fi + +case "$PROTOCOL" in + tcp) + if [ "$HOST" = "" ] || [ "$PORT" = "" ]; then + echoerr "Error: you need to provide a host and port to test." + usage 2 + fi + ;; + http) + if [ "$HOST" = "" ]; then + echoerr "Error: you need to provide a host to test." + usage 2 + fi + ;; +esac + +wait_for "$@" + From c317bea8717ee34f14d7c2b59e7a98d56bdda70e Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Mon, 26 Sep 2022 13:46:04 -0400 Subject: [PATCH 06/13] allow PUT to ingest URLs `curl -T` can be used to stream large files from the client to the server, but it uses PUT instead of POST. This adds PUT mappings to ingest URLs --- config/routes.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 6e21b8c..e31bb7a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,6 +26,11 @@ post '/ingest/:owner', to: 'transactions#ingest_json', constraints: { content_type: 'application/json' } post '/ingest/:owner', to: 'transactions#ingest_zip', constraints: { content_type: 'application/zip' } + put '/ingest/:owner', to: 'transactions#ingest_json', contstraints: {content_type: 'application/json' } + + put '/ingest/:owner', to: 'transactions#ingest_zip', contstraints: {content_type: 'application/zip' } + + get '/ingest/:owner', to: 'transactions#ingest_form', as: 'ingest_form' post '/ingest/:owner', contraints: { content_type: :multipart_form }, to: 'transactions#upload' From cf60eccc8c83179be2d9b04c43f5afc1b9ab97ed Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Mon, 26 Sep 2022 13:46:39 -0400 Subject: [PATCH 07/13] remove old versions of solr plugins --- solr-docker/stanford-cjk-plugin-7.7.1.jar | Bin 56597 -> 0 bytes solr-docker/umich-plugin-7.7.1.jar | Bin 48880 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 solr-docker/stanford-cjk-plugin-7.7.1.jar delete mode 100755 solr-docker/umich-plugin-7.7.1.jar diff --git a/solr-docker/stanford-cjk-plugin-7.7.1.jar b/solr-docker/stanford-cjk-plugin-7.7.1.jar deleted file mode 100755 index 01f08b60894f6da3ae43e9799b36c9783fe1ff6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56597 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 z 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%0D@9@b|;3*r4}$IutJ&mhd=L_%}#WKO3U``*Y6}w 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 diff --git a/solr-docker/umich-plugin-7.7.1.jar b/solr-docker/umich-plugin-7.7.1.jar deleted file mode 100755 index e7646a5f661f4a7e21ec65e43127e651cdc7b9a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48880 zcmafa18`;0wry-19dvBlw(aD^Hcs5JZQD*dwr$(CI!Pz#{Ju~1?|c8*aeo*4f(OkP+)T0&e^jX_@GQGRMtPL`fw9#NK_W@c)(Nrh>Nb??}jPG)9|PL^H- z2KuO2BN>afj||wJEyL;};E3`-w6bL zh-Alz3IcNa9R!5&Z`?mt=f86Qp9vKQnmL8Z;=ANzXtAU`n#27fYp)}<|MHcWcY6N0bGzj|`;hD6Ff*#!yZiokZgwpu zUY~9Ky$cCR5n?qn*8;^6PQYL3=9l3HAc(Yd??{Zh-qvLtR*VTfc%ia zObB|kpIUQh!m^MAWM@XgVK6*ubAUjSz*JaktR)gE8q4;44Pjb{VTc-xpE62W`R>95 zfd_#+kTqDzC`;s2)aAN!c=$JHu5J0vfh({)0}_&GVlKrsH9ei(QSn52xZ3E{Hwq&g zk+f(LV;x4-wA?B2=&{Z2Vu{-kQ~+ato6?eCyM)-414kCrOUoRdpqKSd4YAEs{3@8i zREB8-@p^?Qx1mHB{?`Ker{xW|wPYDEPl)9}Qd`994nmH2VIius*6h576*W>Q= z+RJ}D^TF5O%ZEQF5wYh9e#rLibl2hcSf8+TSrEovB$xA6sEnLw7y9;7*}6BG!Da5) zH3WS2fcqD1S$VnCZTRJN-hpeQoFj+mTTRT;|J*YNO*^oZW=E$+; zNNFvr)2x`UTe?U0%138{+GP)zyyYcEp*+A8N)hr`}zD-TgJ1mj#jBD#}7E z#&Xi1fVxTjiZGZW(b`0`G`4|(9|gr-ezi@>t-x-U!X;NK;zN3ElI>Zki)?{BTJp5Y zhu<@86MV~FC2|ULmo&`5i1rmjmx(s;$!m4c+XDO;clT<2l*_kl`&T)*DArHO=QoLH zierZ_6Dctaiqe_2LKQnlFU72a#%Z_~w@Y)O^|EN(lZUIclYG@P$EgdRHw!GiO*8tH zoUdIA#Igj4kKobS2HV=>W*k(X7YXd;n$GNql{L=Z`UE+Qs;~b?V)@bpUP=39xscPm=X-%vaIR~2A4~83jcR9B3m%QdnTezk- zL8Dz;FKAvS6nwv^zQ26@G&@fmtE;(x>jEvCUDqnr>;TVL3-U2=O=D~qsWaNJO#vO} z>pYSo-9EIbK3*IUb1n$Q)|gt&Y0fU`*4q0e6X<4n_iKH%-*0uzXcXIBRS2uL-&VB0A&G1y>i>IMm^MXDg6vSm=xI%{P zOWsaxo(`j!&$-#;G4abNMQ)pWv&y2;3gd^MI_RK#B?wZ*6jhMG_p0!mjQB?{N(;|p zSom?TP4%~%I0hQ zaPQ!K9JezPgA>YIN2fWvcK8OFz<`_Wk;g&P2u$Yjp<1z6&9oYo;&rp zyeiv*fI2%iZ`51pWwL|aM?}IVo_r-TWNpMi#HSxf37+LZ@}JBdezr3bT*ZhsC4{6Y z-%`6RdE{v#Xq|oAb(tuw(1gH&9wN6$>J}qi)bq-?T6sJoi;tihHylP@=tOHc&*s6i zwFP=hes9m>BV)0J#b_lj^}3-jkwsNhwP%iRfx9{_;aXj1<+eT zHoYp&Ag)0za-_EkZ$in|6@u+RM2F&f4@NR~xzW)szEctW;B`s^JlG#&#+VNVnw2>O zG(&R`K8hhbxAYlkKJ~FZKFt@^4qp_`-~7HF)8`w$+JTd7H#eH@OHI&0hDz3z)HxEp z*^Lc|YBg5c*&{^29p?!8h4Uwe$pc(QzZf|TNc?2M5e34S1nK50Ui7!cBUpF23sTT=D8juM?eyq27=9iRUiG3L zHmlGZn&`E`ik8XESddWKi_SyENWc29Ua3B4&Bjx#u$Dk4ao)C-r=_d7V^CT6mpZ4G z0sQ4onJn@XMYChT8$d9*lJjVlrXiM%5V2=@mhg@+n8}41TEgy_iawdK{rgGvL{sE8 zi-6Je(cG>VKs`5M` zSrSgqG@7LP-0eBa+)cM)1QX{rWgKsUY~id5J#7%_bZ$^QO}51K@;)1GqJKsV zuHk#aONl&ujNr~@FN5gPs#vf}(yuMs!|!4!_q?Q6%6brXia0AhD?Hxh8+3L8j6;#)CoAI);OV(Kx1q zp+cro&s7UWfhj|#(#}=(!9g0sRjV1LfZ4(Qq@7DR*3t`5fYh)ENrGi65L&&lBX4T4 zaCfuN-W9#_CtH~MMc%oZl#>&U4{agdAQ3Q#sg;GfM>K9_lUlW|TsX}Yp zL=j2a^f5llh7oiOHoAaOh6t9GZHF$@P8GvZV$QF1x%>8ZJ8<)5x8RUi&-a zn}6g%@V4&k3Df3pYPjsmJ}dt|%Tgr8FG0)&LIs)9k(n{)=c#S%uLNzftM9d6%b?t{ z0Zo`(k^wH5T#5mYm~BD<@R)5<0a2K3VgWI5dX;@2wI{iB{RBGL9$3;h-#Xqn-4N?|vPYY>X19l_xdOc-Nu8)U zo3k9*zETMXw|{%_{V=)b@*tc&1a<|W-wAM{819MrgeBeKD^SoX6bN&rNbIrQbSspR zWD65!OD{TNO%JWB#krKjo-P2m;*7cS(As{)4u$*##h%Y-OJ^7$cg5sbh-pg}RA4Cb zcH-s_q&>scldjvN@q*S|q-+cA8EJk(=g5$2n@Ntklpk~qvU0HHxDLaYA8s2z8l5hM z+cM4!63iHATXsdUXBBtqtN{1tAc*Ca8#RtPSKG4ULH5XC7~C$soHOab)RpI7GxtJy zNzd);F2%0jexkTx_5JZKZ+HN@_yUaYdeb^1yc7xNVbnhBHc@3Ba zBQ>XI57-~8fZHDoJ52tOoYT8|^pCSZUDm_fOz>OFH=rhd(96%yd*m93TN_ZHeDwp- z8YCjCm{%=coIK0P`wFa4iwzy0T7odfpNn@T?gBjv45Nb0m-md<96mL6!<-wUuNvNH zUn>Sf9vix^2Ja|>mWKO+8_2K9n*n)rV1l}#d)Si(ugff;z1kFq9#P1=bgZv~o>&Pb z0dlFsrY&@&(~XgIsbt#pl1bCfXt0y($tLZ=SE)8stIn+4bRG*JlfG*X8e3C)* zb@M2b-pLkk(V;p$C4f{zs@+QE05=fCR;)RgOD#Mr`r__t20SzRviTL7jZM5_<`qb` z6)%|c6%9O#>*D(rH@1E+zH1ZyoL|ibLLn=(mW9tyG>tn7N!6Q{jn4p@76Ebcm9#Mv z->j~cxbkG)QB4-Z0s5`p34h_u&o<|Vb!Wj5298sGOoQrUeS#Ba`ZgUnj>f)3EZgKj z8!aPw_}YX(o56ivz-+eApPP98b0DE1`|s7&Kk)yljQzXz0#^q~r49xH682Y?qWIsm z7j;)FTNg4_SAeV8ze_GLDz}P@N*Mfc?lzim(d~%P;V`1D1#*siar6*@mQoa~u36e2 zOVd2E9USL8e;9BhaAHDd|0s{V6TX9h0_>a>6>hsvb6>o^K0fd9g+NPSO!-#sAZX!K z;Bu|QjZ?zdF_ZAfSAoNmpXr9P24** z(f|clZ`VGnE+4Vytq=5zPFn_)hVZs!Sy=SqP;a8gd+b3^?(h7=pBubTI)2NxJWt}NGAXkN_!$oco~9=Ri*~0m zeXZN>%)HU=)mO@e_P;sOzMW0ft~UU0A}QJ#*J}xES;*>e+tX@PJ?@4}7sU}euQP>b zDaok^(XA_v5i;Siy*$R%&)w^?*z{Pta(5ed*0xG08fo>UM)i9zsRw9Cz})vPMLS24H>665PLF+ITI*^rXehtx1#6%9>5X8f~GOT z3stDNedxuhqrZ}2U-)a~@X?k>@C@ObiK1e8@ ztw8aeiHamhmqyd)VP2R4**^#j+rg~%zDH&EnQftt7O6`RHq{}MCp zFEL5}H8Gk0gOtg3e@TfGdfU|6sACk!_#?b;0w+*TNeB{)kz8;(%puD`I!aM)Xazep6OE24311Qu{XX|#vW@_=es}6>tlH+f>LrH<61$|P zTZ~JUQ@MQyMO~G4)x+_a(cQHvE`>vysylm{3Qwx5y-sQ8)LxvTEi;71HO;ffsoW$L z8d(w#rgR9QGE$_>7Ka-<@y;kTgvEDCW7<2Jy%DAdE{v$=lWBRdv$`v$U?h5 zXH9q4{>oKlFfMEp9HyOuFryd7l!u4ws%CJzWrG<`{Lem^x;};AgA$K zA&jh6{GEnYHB}oeU7{2bgAuCF(*-)OkYYm z_yj3-)_E`fd*~Nvakq%DB>IbE-V8|lnlP0oFt*-;Bro!E1~)ks7C;H8kI@fKqYxziE@$HvPW&51JlgeJQ#xsmB%IX( zn7{%0xy6#B(1cT9U9sN;nCUB(pAeLp^AE{S*SG>3-2spX&A}CQvLs1^1!BS^C?+vx z;TI78a|-d|AU}FhV8T^d-WW=1(&yKIbsYZvy(&$$y&?$>0)m7L0z&h@(O1mO!_4!) z%h@TK`i}UTn15=U7i1n}6uy(?Z%m3;g}>AK>TNM8si^E?WZ)HIz3Sc0It)q6 zY?7a>p1VPy<0$z@V%<~*n7)a|dNJKp=1eiOO;&b{%zS+r!stOarP>x`R3RZw6<3K~ zvoUW}sOr=_f2W@AR7|?&lo?}=X*h^P)O3yz@pl3i;()!xeYJIxUE(k2EQj_Qx)YmP z!`H)5UA_2~!xOVbZ3?O5h4SeU2z6!+$C!f>ClhHAjeBXD&d4$dj#N3$U5%++v4y%b zkGf7C^3hiItz895}IU?f6Xq;Qa;ccS|JFk>#`8h zv&@=We-+4{JS1#%{jgTAu&L(GSZ`V~wJ(VcN`;PW(R{TmP;rSoQI5J?UDPO~3(E(f zh~n*p`5|^@ATX^DlJ%2~i&;3Myt9AXn}p6lV5RKKM^MT7Now9jF zC}s1(%3HkiJA&|XNMa6%?e=E(A)Hk~v|^4qr0L1uj{?S)%-X!7<)WYYGwP3u%TG;} zBt~S=HSL>{R8fYp``|LdTX1`m!PHaL9P+w~#-0h%9J&NGSZRoQWq9dy~VB&77na#t9A{Jwu%seZ$@7 zS8LJXkWp(ea!JRb`FchVVdE(IYh`!BFq{I|YIx%VzL8PyZj$VV!Nj4~a3w0(j#vNqrLLXJ1DvCiXkwz9}*cp<^>BCQ<3`{88MhJ-hTQ;#FE( z#`5q(%r86(JNO2_C5BR`{+p}0g5FEw*0K={iMe~aw|A3o( zjfqw(vz(d35RhvHcV&$rW%0x)!2Wd4mdsV)WfJLR3&g*7unmfw_ZSZ>JSdMe`B~)O z*9k!(L^4LO{ze?@O+MyH4x^$1R>!_blsK^4Qp~@06(gBB;eY2f_}$DbhDA1dfzT_2 zB5}GqBzJUY=!9AE55Y}P^%JO-OI7QQqT6nBuHmIvC z@Tq%6&LfqOde0;IVz&s}e+cO#V&Rv?w?RXgb3?10KN2p#JY-e{&nSNh>Uu5SlWYh# z0l`dy!&Pxb%XK}WVKEOA#<0*7UQcAKW|w#@`Xpoic{_?R>${9gNtHMQW{rdsRa`P%+AUJk`l9P@!cX_t0%(`t zZ_-fZ?bg~O?G}CT9u$_@pK1iv9gKPXQGR!&)$dSBT0s%Fe5bn+PFo8w5GLYofCn!m z!fn8RiQ?y?Lc>9o&PJh@i$s`-pfeXoN?nue^@nbtyRkXX8=+btvR(qj{5cnSC3sSK z8S3;J;IEW9SWJIt^jw-Wr*X=iH9>?F%hr(TZBqka|dWb^O))&()-0 zH+vBeCQa5Spwix)WP^#=fk4hB=Myq z|KowJZpo)M543a7qAUduOkK)-)mLhE`kOwNmRmz0OTpVLorv4pv#vh|6fWRP@m_@t z2^a;|MWPi=zSac*1me=)Jbv@((91by-}|{MWOomD$$eU#K}b4hbo_ng?PMmsJbyxJ zO~~%%fH||(_#JX(aUegLGtMtO3jW@FX5%;1KQDrt>4~K6-#$MqDF_J5|F#JK+2{X% z)<)f0uv&WJ4|SQIj|Qv=uo*&QWhVl-pZSb z8BxJ)cS?}9doW(EJ!xJ&M8*3PtDTRee%6n7TO{_` zHUd9FH-az1CjvMEEsh3DwJ}%RzE9{o%T^p99>6|`7ut+~%~WmD77ySb6i2{jwKZBB zV;XXV9V|h}!r@@G1>l&kO*rBX9wThx+|1VJ?8AjZGx5dm3&Rmk-Jyii;!5DSGhLas zMFNrm*n{?=Rk$NKwScx%KsEq*&>++oVU?LL84w5%94rn5hw;ow0Q!szDf%-dgxiWx z+3KNd6H((!jU1SXEa6-#YLFZSn{0O{90`#`GFg!2R3@Up`&L;-&BrwCP|070Q|OQqI3;r7zgt!uCx}JAEQ(OK z^GMLz#P~+sH2&!U7E&gj(H-jkLV8N3U&E1i9r<0k_fmq|WKJHa<}p*kEw`~_ z9d7eG>d*799hQM@v^zxsq%J1cIA?_|g3?LHu~H6qIyZv5E{$4 ziqPAHH~3Pn5|_q&nMp4wOfihtKLq=T2=1sH{tRS!@5RBGOi@?jl0fr8AoK3MI0k`p z?nyv$a^ErW>GhL-Yr~Bb89lM*oS^k2AvySMjSnx-jmgN zE}GP+*x>QNq)9yWN`CLQR{_ifS3I4@1>(`0-G18}QscUl+hLS@Sze;#n_I@*lnS!A z7tZpvb47QXIaySsNF3jCp$cCtQ#}0)qh5!pMB+=ci6hv@a_nPwq}L``P_LP1`UWJ- zRkRY(znD)ht-oPbvn$xwtnv-Lpjp+2f&8AP@Vnqg0f!}nM|&mohhOd1)x+-(ouJ7o z4$mzz#Q4Ud3UVPSmnt3h8ZMq~_E&f7<}|Wrc81p4c0RXamCIlA5#I^0^9<~DzW?@X z)y1KfI3qSM9t<{N82~iKPdeK8C3g5!YMeel$Y%|NhGj2+3oz%*bX(z!>lvG{pB?8W zASbyK$X=iR@>HXjvWcmwWB)Mi)i~AE{SXkK6bh)SdjxKQP8T)*Ub5CC9+V`-&A-S! zvSybmUKjZ(Ln@xnBXpIT)E>*Gf~aW2KR|VmONGRU+)}R74GkcH)w3r=SBLi=qpd4w z@qES5@x@zRX~s*#JK>q+vo3EbEG1w2`Lmb<FL)uAK`QjJ*un-_lqFUHSu%%p*SAaCBLb_+h3vZ>Y|l}?>++nMep`5g0n zXcyMujK^gV%Xs0jUTNuKqt#S7OBiU|r=*Ekce;y`sS5j~3{DP@OUJfz>P&RFBV{W# z%x6dJ?MpiB7<$?XAgNL1uT0;}k3Y53>wsWjO;^46-? ze|T~xvr{wkJ6`LJeUUzsIiR_lQ{#JNF%xOn$0#<8PGkn}wz zyyWItbvkNs?c-L{ZdmzQiyf)r<;pXH^uRK2WN3@MC1l1Kyh1yviU1*i_>SZ)`6GkG{v{=a+PkRe#qN%ZTCEI%)bjHDOM#}uhFs=$!9hqq}u)}rEZ`i-RuU#PKu z!;BQmiev}mFsTmnU%yt2+i2p^>{&GN2JU6VoG4A0te8{wKm}Tc0_E>ke>_}Q`ObzZr}T-pMG zE%_#h16C!cicJ|~A4_~bqCLrx6m@@Iz~xb&MjLr|pC5?vR1X2&W`74kae;a^8<7#D z);>u5zEGyeT>bKuV-?fbOrBxIvLnYiHQDCXPdjK&S}H_x4-M^8`CM1>Az6yfR9i?5 z9vE)S1&w-MmlEE-d3$<9WD$c+B%I}&Z{3Iww6^HQ!ZUQzOU6Hfb}qtyU?r&UIEQlfpv8$HZ&dc|A^#`@`$8wtO(+0RDX()8tWtjV$TiyJ z9C}b*cVSq$p9a&_QaINZ6EIbDyW-28R6D`_BJonOl!3aYk5@gGD1u@7=>Pje(T@u*fp^#8U-~$fF!oP7m8MXAUSQrBJ~GH}AP3l&@+$r)B-$ zxO~@~XaXcHIdgI2GBXmqi|S$0yTE0v;IFZ$HsQ=>9)#yMxg0b4#uD4)_m~4#Aq3E0 zx?cAlxXlECapJ=~()W(b-Jjjwe`p z<{`eL(~UcGiw>xuvt4_>OkquHUz(P-n&PH5P=45yzpIP2`}Jex(hW9pPAf!2^ZudJ z(UGs8f|zW=c_)uZzCIt|@7zjFQO-zS6O2OiPrb!W+mx>-nOp>Kw4J$g$%jQ^>F=lD zB8%Edp$JdUAB4!E&@u}whwYG?vkP3N2+uHzfnCWY?m0y<9au66+@UL^`9lf)E>}MT z5td1ufEj4(#aeA1c<|PHa%!@fEPFGT|S`l??vN8cIh+)*8+s38No$SQ~6}Q*HrFpp4^7%z|)sB@Wkh{ za`RRT{bK||SI#jTHkPv=mV#>@f-+;z6g}HGP?ft)JNZIQT5C3}6*f=2d4QV(e znJ-;>I35c72Qou(;U5w$h`+jWTRKg>Z23WVGEM!ivc5a+vVNLsw+rNSPa<1wp}(eT zw-X}f{i=$u8v&;3>LB{l3NRq@o%5{Z9yG>JczG<&k#xclJvLPE5ZH!WHlRTlpgZ?N zw*l@?AiNPuS|5jP&~+QypGf95MD%)a%8yWb>L`>w47A-Dc@Us@I= zw~;Qij2`e>b}R%OK?|{<@4m}61Lt$##xtnThG5j02~DHJ9-K_A+BZxU?59l?1};Bv z0;eB9y6ipCcIvxe9CUVqTj_`fHd7h*ch$6dOw{-EZ3Mb3azJi%%le^LeD_4F@C6!Y zg5ql2?uaf`UWYmaeXL{pELPa>+M9`b>Ip#&b>f2Rs>=pfSK#;XFOTnPo?q^A+-Q9q zwm}88ZbOJ_;sz8~EC6NC>RzBdQI?+=^eeY>G}_9E-z<~hlv7LdNv0(zQcPkoggVt? z+Eu`LiZ!N^kOq`huwzqyGZ}7#n-rVOQRhUPl(^IjbwI$E*f?gpl4413I(E5YE5s8H zMJ%XtNqfOk$~x>DEJ$*R|Au=>buY9w;acW^DqE*GaNTsx24qFC+7V`(WyLkw!8fd} z1iRQ?YZ+hm`P$kz)zU|lv`m+;$BwdW;%eD2V82oX~UtRATn$mLHAd~8tn;rIe?9^7*#d$-CZKAZ&pi|q2*A8WKETKotILPy6 zq(|jp(%prGJ)Y&*;6ukTR%TS>!w`BT>lEQb&yeCUK;g;DG3j9v^??$4T-KoOhnqI; zaOnJIVw==E@`>5!P7bX}rNAeY5e!YkdPiJ>fvnL53~ywtRl8s=WHSkC1mjIn&?^~Y zu0$|Ob0%}ArQEYVmW!sw-p4zZ(X09ZJ)EdnE7}U^p7>lVwQ4ts@cBa;ib)kKrPBlF>Te>;!%HE(B@pmYwgZr!y z@z0#gV|cQF`OFaUPp!9Wsjtymg_pfAkdJu>j~KmdYZDN!Bq#h3np`7T^z>dFNdl8-UbBn-y8n3c2kEZtEvD6 z0zwE60z&-1X*d7o6Zns2tcJdlswT>xUng z&&~R=he0>B-efU*lgqz*le=X|xbs2S2bJvvz;)-II|vNcSEv@NLMOj7Gv>@iEtaR- z)W0hdb<7F8LY-vjhlDuCDjtnEK67gb66oi@G}g|$Yt;naU~dTs|LRlbZ(%*OQeT|r}6^)N+HJD_)&`(ja`M1Be@xoRx&xWz7Tl@BD%a3`6k?EACz53 z&}5LeSPcAPzpXNC$qSVt1PJuB+Eq=L{<`FRpRrIyCf8)e}sP zmYg0eA|j((+nWcsJKRRBOZ)`{c8<#61?x|e*cl23*4Z3>KgOy}o(|n%>6DUyqD)l0 zgF>2Pn^Xn;CN|&c1?|=3UrtN0Qm#UaDNF?yU$~0Pr9 zmHQdM7Ii&neG>^0T-8qMDM@Zs?vfvHY7bXpm@B2x^d8!q{S;Nb0Y6`O=&q%;KBd<# zY*S<0Tf3dX+y~4$G|yWU`@RE;mhGnPJA%deo(+Y~(Qw^bAS661^h5*{N9&9dsNHlO z`r79+g?^M=s!-_4p{Fsek4#=f8D~(ZE{o{@QL1hl^1^jUD~?u3mw*puBaH}gYawe~ zjU_GnEsKtLfgK!{BFP+w5(i7@PuW1V%Mm-gY?u+5C14et&ci-%Qq_}&7mVBoSMFJ_T=ji}_hD1pzkVL|suxF#;6^!{=a(U6GuAgGio%#V$~CNu)Vt_w>oSVp5*jWEbml ziMKjs`VHd#Ca^e1+9?#g=hz|_jO5g00x@Ro<8U3g~$(>pPCSlEbm_gc( z+s$(`>!qQt#1)~(^=<8}K)Fgp&GRMi+fAg$;?79Tj{Iv#AK!Si!{>#0HOxj+})A2t|YpVb7 z2VwY4bTre7j{uVz?s?3>&GLyaD3Bxr$l*y{WafS*Mw7(-&}iz=Ix-B1U>Ti~!t2GnLe;ms9gKV|f>BramU-(8 zdeEklQr+2~nJt@4TRNrYYb}dbrbrv9+cE~fOd%njyJG?+XuLQ48oH$6y`eip;P%a( zI>+ku)&ZLkKlLYM#s^~-0!rbfdTwL{U5(cW%uoGjw)MlbEPDzTpVH_?x31Y@$1gk*wBXk8 z*6$mm_r_WbTiW)sn137SQ1^&-A0;mliX=bMoBoxhS@&dZO1m1e?zW*npGDAWZm&I6 zIe~PD#0T0 z(p9M_N2tm1ID1w?^CI zV2LPwvY(tH0c0Z#kr-mZ%u!?zTcjMKV}!#&caZ$pFg_F#tTN0)F0hq(q7!w7!pMf| zg$Ey+5RAl)zjJM#ts*bXFi#r#9$i;4G6q<{p1_OWLSDH=%Dybq>c^@{2W?V`RUZ=_ zj?f8$`H6Z(t0hYMxQ|$axs}BfyttKv{*LWTIV3Gei5igvs!+&68I+A6&Ttt@x`2ED z8Yj^~<8`)NC5-Ir#eP&^SSLdW^;CHUP^y!#w9*m`a`Za<4c7A|37m3*H2JVT^X^yO znvVMf{padyef=24etBn#b&dMw#>%hv zs~f=*E$+P=Byr5aI^gzK5CQQx_CS1;A<~Hp*+rg?*<3cTkV9@f@%lv^zUckEqaFm^MkFydQSXj&<-a`+nFhMTUJy*o1vS zV1$W_w{X|qVD4~sX+OepfMP4RQ8i%@d^CH^1^hPy$alf;ipH&4YoyR|@N2XizhJK` zd=SFd-1+E@dTo(m+?8IDU?*9TKIS4UhMP{aUlY&;-S?RKF_G<`ph*)#y0?Q5`a1SP zjYP?Cu5B&lM+WC-&VvV($kL^Pc?SxNSiVJ}xr)Q!j2ELSqC70S+qbc1%M~M?;uSc0 zFeUQXUSFTVIFPJ~c9V!XQglR1je?o5y1atR*VJgz+4q!tLKgH9MNuU7TRLkqE!c3~ z^VvKx>Ngg9HjM8N!BgX>L5X9(s{*{Xvk)Zl4kXGND*AbhPaox?w!YZc28DU$*5nwgxFrw+;M+O^P!*v>Ir<`zz z!iRbB(Hf+>cyW-~nGDG`Hn&mkbohK%2ARqV4JQUj_haef@D`;HX7cN#fhuJethICWi`%q=K*;>8PdTy|hQxMg#^UJYg3KsYe)wf#UX%4O(7a~*+?KhUrfY&JcS z*QA@S1?^36c_xJ;4IS%<8jQZ>yYH?ZOUpe?un#1mKH>7kpF%hG5-9Vh(wi}za#e>g z)_b;%z|Dy%2wyg=UD0yjGo6B$&59no3ii4;7zO)z0Yj2+!c%%~iNPe=CnrbxgXsbT zFzo$cJunxw6F-Nv1TWSpT9TXK5d*2w^VCf#s;6!HO9$8ArOXJ_yo$tVACRq8?t z<~8QqEVg=9eMS%+%`SF|?SAX4(&#M&Z{+S}8`LV=jKJX?vD{Pjb2Z$G{<2!Db4*?7 z#$^WkbW_K+=ApJe<0Rdm`z3FinfZHYpP~7eYBU9Il4!G1?TXK38_iYPj|*#fKx~9I zzooS-*b$c<$E# zRyNJ!ujuv(FKtPxmF=RDIjalGNpCQVM^S4U!SC?-<3NC1l6J|8giQ{hhPB2mwRxsx zg`!!*2&oQ2@Q^!w^8FHR2wDP7-KtgSv8Nr{cd^hNFCC0C~{Y( zriYXk=*eNzL^p&@1$n(^1?%jp?++$lBx&0QhR}y44usnz35UF1ZcbQHR)DK(@5oL!Rb zjHrh+hHCf%lKo!Dga!xS?G~ zYaF(ME1fGGYtbMj<}$1kjeTf71ws~}K1cQN?l)_vAKQb-#47`4^h&};p+g^N^$fQS zf9aq7+^RuQggpF!7J7gUmDe`?;(|Khq$=|vOkP#2fWCm^dr@q0fm(|4Zi)h~MZs?! zr9>SSP1z{|0~Pa4>Cyo=qL?rXD6+zEkMCC1G3|VkBCka)c;~95uaYjE z6!=O7m@X8F(_B_NSuI@pG`>i5w*cBdCKDUf=V03du_DH3voZ{)p%_+8eONABkO;T; zBY%SLKvuc|{G6kxU^Q9afw{w%I44Dy-)}eh7nE>kizrSF69B|UF8H^&UAWMAmd$N? z=L98z@d$2Dt2A8Yw0rd_i?DLVVc-m$+D^PH#BBP|E(ZXfJz!+(DIdEN1yxC8RXG*{8DuqyNC#HKP-(sI zW_l42m&s9D4!#wV-?Tua6+N_iBP!1y>~b;eirlW%@ZD4i1T9JD7rjn$>`3y9OG&E; zIm(pN7b5K>`LhL8!wKd!(A;uSgq!1D;vyIVu3#8Rza=N(%{C*6O7W|Z--v$Wu1=~E ze@Jh>6SLEt+q#+EI}5YFUs)Q`UhdOgPQOHS%1e%t0M*q5a0@(`=P_#E#6%??DmQ}6 zD?3bl;G3r}AnI2egbNS+!L$un$$((g)331cxa=|b;mbxxx}=Vhb$?k8WlbCAN+cGTsU2P zPQ>mxS`L;0gqmj$FU93fY)3M>iQb-~5v40kkFnajoj&k3Em3=IA+f`QQ|ttThp-c` zBwhrb*9b_5YTt7Q9m#|PkS);7rq^6NzZ>6cR!UrYD_d1wX1u#JoNQWY>MS8@IYMC{ z@D2T%sWSBi;h=hhCIiYR;#n9#WQTk3Uyt|cBJGrtW^{f}0EDEogxp+?6N)4|RD7M1 zoJoCa(DQ=n9bM<|A|-w0bHzM-vb?8L6J1h>k38*)@tbMj*^{EXCD?KUKKFj|f~`By ztSp^xE?w*9@WQq}AXqwN$;7q4D))froopktkE=NJyl{ODFWf%n3vfDn$<0+SlF_>& zK6D=rVf1)5lDSNH;j?FxkDSmhYr2POh+eBO7PyA#i0OBC$`b9Fu`l&mx%elQbd~D| zYwbHD-GBdR{%_3mpW6#fl{?S^0R-(TpPr-81loFy@p)yi@uSeFQS1ulkQjhSDfd=r zBL3*6%&aJD4!kQWXD^0{b`y(!|ar&6KfssM3qwQ zrd3cLj#)T%z%HLp-v%R&%$?r&637E=2s%?Sye^kG(6<9!!2X?_>|0O!cR)ix?7hpw zfAv=Whjr0kmPG%_X6T)uC@cRT7odOW#Gh=niKTG976zY~wc%i?)7$!f)c=X!J7vrS zi_}=s5Q|a#5hwEC3n#TcZ`-jMw5DJ9*K7Rj%y_5k0~yi#w3+P;rKzO2?M>?a@o~<( z-IlxYjIP(08+3^C>_QO2yyl83d(rRLLYyY!W`B3?(e1`iSZ4Ve>Keg6F1q~@fp=Uh z{lW}?u-dCOd{G?@lD7hI$csJb4RJpC6ay0}2=7;FS&HWBJ?qXcKVWo%0ct+IcP+n> zn3pf4l!Ul>1Y{ynz>Ssyv&jv43P~ogBPh@%*LV`t=UT9bxGXXWdQlMZU6)6_E%vkJ z{vPOw&~{%N208$wuu`zrC`WOY?$)`9t4a0|@JWhp*B-2#9EH&%9#QwFTy-cPoJncQ zj~BYBNU@uXH>gNWZQ|@n$xRdn-=Av-X$)p+q9%$1wax7{!&f3l=a^K23F$q`P2jVR z7y9u9I$_KS{J3AdSwMzEad6erY-Rg6>2acx6CMW zrzuxW5`r5v8q4u-zc|L!oMGhNcV5`oMYJ`J0oIGUicanqyIES{dnc}F6Gc*w%3J~$ zrO&mPqR0kYlKFRzSJ)z}^n2N**zDHzryJ};O+MNZl|R^xnDAvWUYlYyglHfi<#+{9 zyowiW!0e=bD<->33v8TH$YT7FT03!?q*GKFMH(~hN(p`XYy3ydvagR2Yo}M#BR=o2 zunM2csZ$YA_Zc^p1h<2Cl$K)CW{C5psPbd`$CP|?`)`@UoLuBw6xZAo`vG&10Dfg^ zqoRzDOk+53oDg+U3;G>3@tgSwwBx8XOYT@#SFlc8*YwQ^PHNt7mV1 zXBR@pDr#d(W7*nLfHR#8wkeiVel?orHQV}UE28=XI=xN}v5nG|WM#;fW zQ@sHdKSsZvaC{mSs9%~2h2R!*6Cl*x}7ClKT z{b5?&sgN;R8y+1yq(Betb|W(q(k{NQju7VJG9)iY_vFu86AqHTm5V zcmDHy1!~5pWn1oG2AxsiUSLkb7V z^#lr3rpjbJ$*ssJ5bZm%t;ecXl!1@!9hKd$bKB~+rT1m*I|V9JaAC+l--rKs_;8T zhGOE#(#NrImA0px+!`6(|FJk1d6f|@TPFKqGgY&OT$mB=ciu*AgtlWyW@&T8Jj~HK>fKp7h}K2FpSzv4 zS}0ETShuV{{6})MnGWVygly!e_5j`jQu`7Q;`3q)sWb=zQQY$_VchfW)(CWmj95#M zogP{Kx9|l#_Vgs1;6o*WX-q2O*f781TvAd-k={YZ#%%`Nj0507qurtAC89{dim&8` zF3Q(_$>i>zCab4{dUROZ*x})ozpgqm@CReY70)cJSAX-?-1YWF+OD2jYx;yvC`?x9 z4|q2z<82c2x_mZ(!L{)0$D}N+k7L^f+?=Y^Rp~6(5u`*qHEw(d1 zW88G-6{y>iU16@sQhCmy6tD*WnHIg{<{6f!CA0PnDs-3R_b3Unm1#@-zM;mr?7|RY zfN5mFRkD&P4?fc>B}}5bWO$JVVN>86U9;(#B-drQ^(N=>M^!vr8Pr;=mCor?Tm(L@2X(~04rsu!L<>DPDz%xPGxX>pz&rhq;H&upfLP^)2#O+NO zNNi(NEBn?LyJ`}jPUjB{vp*QfFtp&Ku%&5ZSF%;k?bNgv*9ENQ9++}=K$>h9sc2p^ z%A@m4hppE85WF-8W>oIKz#d1w4y%b`Q?2|)GyY=03c}wNN)Qbe?(^hd9;u3APr%fR zi0H!91UTU5A>Cd!(d#_ztJjA(m$a6?;1P-U=$5DSZ}Xo0y6O%T(#Ad2D?Ss`b!C#! z+?_=gktEHEgL>*4L`g*%urKK5<>))jR5c|lLkcHGDiMW8_j)9jIBL?FUG#u28x$ZS z?idVjjzZAjb(*E>e7aLXw+$38(S?N^m;LMxx2{Zula37Jq@FbxC9 z9ez-Kd|8hNQjPX}HJ}B#sc$j<`ok>q+3GB(F+*yL3w($E(_r{}L>ER2vQ!T!dTzB} zIr@J4*TlrT|I;dStpRvUwAN;B)c7>U0-?(JDe+G)Mr9Y%icqMhJd1sbz+MNLLUnqc z7iDxaisz>2-z!o05Mvd^J0i7yuSS0vO8y;@{>{PiAELRv^uIY;{yQcu__VA(BZeVd z*M@;W<)n5Q{h{~s%(pFEN%p{8Wcm+U55{9=GHzUHHZ<4@FW4_|pUbCi{s13#g4Vz2 zy4AJ@sz>Zf2&`swri-LzP8hBGK>$K&unh^=e{k23wzy$E=-?=l^s{3Rf>QYce(R)j zIUJSaZBl!kWS(izifk_wDl2t<_j1!1oG`$2aIrHmUyip4G;Wal)&1*^Wyy?l1M{w6lrNW2x3nZn5 z?DVI4J-O(t5RIX+6Zl^GV!11P*ti^GPiRDuNaXGt%P<`5IE?_1OxXT$rm8Toeu1=A`^++> z53#_9Kn%f}KqepNv|RrNeH?9LSI0S-^CH;r6U7D-YfekstE@GSBu6(Co7mHatT>B{ zmKd;pjeS%)iH1w?>vhdm*q^EMTz(TX@N7L@5>%2?fxt_tb2>IIIcS8$OJ|K-kXbo* ztr0r1I7aZ+bS#dcKxR9&RrvB&CLnz%ev-Q!cgwW~F{PeAtsc7~HwQJf1L<`Y!V7%x zQ7MhSmdXE2b;W_WCRH0BD7MM+DLYKa_sgkOK8W`gBD@j*shB>}J+iaEfBt~feCa{k zq9pGIR&UBW-~0%0WWj_dLZMxp_rec{Y!90IeM!roQ{KB*yEz=ZRK= zx5bqD5{B0$%_lA;J@J)#%dKF4X9^yM1O?p@ecck~2iY?5d%9ipiz$4hlu&py6`_mK zb4Y1cqagp3uOpZHS`7Mn$Qdcc$DmGJJN;+Za@T?gO$zOO#6pcmviK>rVwA>lJO3z z$1k--K>j2H;E?(2#3vdq&7{nYsD~3Y3FBWCu}=YUyWgU+)o?$DXxn0L@-%mVg_(rN zIk0Q(9#E1Ma`6s6f;o;_Z8hJAN;}%_nDvn+=I4i-cz6t|dTfuaH!CC!dW$Zgt57DQ zVsh4*$1g`_5(X3XSE2k)NIL#O zN(=UX#iW5xGMSPx(skN?6|k3vRENcFm)SK{%_@CDS~Hi$MR@}B1P5RhC9QUI!t~2{ z@-MO+DCCHuZu9+8^+-Lkq6Zm*5x-k5bO#42p;now_aud)S1bMCPEh-OLE(n8GIxO~ zGUouF1yB?b6eg0sj0jZW_6e0k%`(vk8~XHQcL8H@RqHhgQ1CM~H=todd*0iH2*P!e z%BpNdLWZ(0^(yl8%{WQ>4QgA?C(PU0OU3jW*A}VeMl9j}@Iy4NTfuja9aREkd1+R8 z=6)+SF6SN9gqRF_U8`H*i#CK(% zy;^f+roqP@dRj@uhWPd3o*6}d#RzYOVa%T_+GX3p{kLOO($v`*3yEtP|Gn3eYPD}fXo9h~d^!s&^_jUE zspITRGENU!-A*l=I>?tsm`|AD=ae_vRI@M@gw&TrQ+yKp%*xpNeF2P)6A+lLc-UV& z=ufVOxG&)OzfE^0K0*G%^XmM_@%rsR5?P+%jd<@5OFo&gz?V}hCGsBZ;-`bC&D$ov zj#mQTrvr13Zyza(^axUx27x5uGCTXsh3pFCxO4B7P^K3ujjETQbcy&$jA{;$!zCyNE-;tpX>i~x)`|7-(Gkh!?k=j zb`kpT)5YHfqkm5q((ePh_D-JvUa2!Q46U(0;t0nNM70^(eqVZAohzCNq{=P$p+_Ge zQt?p{QI>r8iy&=Y{3@W0sn4i@4GHfV@|FH_Jm089HSP>Nno)O`?tH$QA?oM%0(XI= z0`1|U(~}25BZTIFs=}yK2@L63Ru3O;BDA_Wh`*=wh-DgEj{uoefK}}Z!{R^`>ftuH zL6uzIxn+nYQkKjvG6bd*gFycCvhN_yxG-2YIL0&QidG?o2LAhE7gnW#JhQr4`7tqz z8_l1FVP_G1Dr3bTkpj~z*1s^IM8<#3+YH}7{xwr^sTP?(xZI*9S9K{`s}%TE{{|}- zKa`8-SR1Pb`j0V{lrquN4L!FoYbfQJLS>{5ZCs?}fm$I)XY$u1M9cyLt~oPObWP$2 zXCxF2Z}#@AoXQfZAUC}f9d*x{hhdtm>lRY|Z%CD#7lg}=^|Ki64#}WxD?c3Yh=P|> z)-tzSK)uMzsDMtv@=lM4Gq6#k)mS8B?f2*0Rqw`E?2|Tc@<}4Tdg=1zlp+hq^bic* z^oX!Doeu?!{S>DrJ9tvu5ej|AZnX7!$-Mbi53iW=OY6%36atKnAuFT#aJ(hyFeO5` zEB-K8=-m<&(HW=*KR$@Do@{Sly^LQvKJOk6PC%S(m_eW?6E|aJhn7JmIaUN5qpkoi z+%$9lh)A?ycj8pRvN;tzP_ZAo%AnkQ^r9!!%aPyt%1)}_{9)jy&?z7)m<%!RcbC^A%yk%}vgBt1^`31$nQA(?3r%8 zGkpf5l3cL{__2!A_~DaRil)yWd}*+;h$UQE%f4vspd?qKkzi!4*s+NhUDl!^l4Qu_VK5iAH1!f_c=WA7CF10Mtg|YYj${3*-XX% z0d~;QGa?fWOb{tE;Qv#^oC5 zNa1(BP2U%GHrrdin=pbD>dk;4tDJQZ7K7!5O79&bvYU0#?>;`zF*gh_V_GS4r@m4o zeh4f)9Saa^NIqcW~YRE$S3Ot*V~xabz7>Fh`LM zbFtr^X7Z%gmY{eGa}<8L85}+l)~>U?vro%quBqd3{&s^r`w$2-x36hFO|?6Cm6PFQ zNl*6ctC_2i)!W%2$K?63nxd{<>ScZdPQFDvzOED@XE83V8?~kUZymXK8Ah!*V~)B{ zMNV}5s_(kl&wAcuYpi*LA|pO1WG1Bc*RUhJP`DTBrr51N9&he%UhQ|0cynrCOOb{G zJymM^8AnKbSb;a^X&ACsQ1Tg3b48}?l3sfxw9SS7m8uUDMt|i4-5<^!p6A~`WeSLHKBBgAh|M|c~4ehYa8yx$_*j?6+$xP#3DtOKQC;> z?Vy~*J63uJ%ihfxspl+85pULy3MJ3EcG{k-i}LTsjR_4Cbnm$SNNMzC|p3I)!o)fD!=Vw)-%*&tYp7V3Y=`9Y7uTQNrsxo1!d;6b+)ngJ_f4iXj?M& z0PxE$;oPlylayrcd-p_=+hXw-8Jp>RzUGrGh7h5vEX0r8>Q3Cvkbph*)(tAGwM}u6 zK2MnQ5~zn{%Wt+RWU|@u9^+zGUPa)r+l7swl6iUgHm9m{vl*u_gj-G9%?THoDO4HD z1fZPTd8>y5Y867DlK*sTx6tm~vedK@j35;Bpc``vvCD_DPPmJ!;de&d5yqvSkmgP~ z60nlYBxB5Y9xMdwK8`&i;t1Gj(x1uoifAouW;yCRtv4hW;IJkm=Pb{xMP>=+=CpUy zK^M9pzG~3`GSA~S40Ij$*O2V{XmU7ttL0I9fFc|*DD5MY?8if3DvI_`R&^v?5;CeR z#c|*mw(0z6t4+`LZom_lA!t*$T$iBN8E=??yV`COY5=9(9t52Rv(gK{U`)VY7fdux zicG#mg-mWT-AmUz0`PKUU=fP^2%V+3K~SgqyAiDvW%{iw1VvSA*@2KXV^#zn4n?>K zJvN7J?GKc<=MAPRT%>l{Agz;t^T|DOoQ#^ta;|yWaQyA%N1Ll>X$@h>?mRg@IERK> zDw5h$)gH{bSH(t6;zotdwo<&iIS#PcUY308z5r!T#7*duX>*b#?3?H+dq$G9V zk30$=f#C+No-7`%i9_pn>4``l&jWm4VNaZSYCa~)h~~1Y!Y69up@wcJ8}kl4xVr{V zgN&YOcD$Cnz#mQu@yB`9_~i2lbgZu5C*uKPRSJR9AzqoypM|}yRRRw!X}vPFO!epv z){}|f$e5Fll};!gkg?V&ZZvIPjctBX{`^Q>G360Hru!bS@k^{q;ihyQN5uN9k zi~l-j;R2sZO<^(z_z}Jsz`Ss2?wnCq2Dnu^@u;6G> z+L6qFP6#}5>iL&M0s>`wzt743QD1_<5 z=V+w@A9b zn!~4Z+T0IgysK{CiW9JF*>QQGdiC4oU~b2P{%}Ou&UMQE<$TdBd;RxI@Sk1|lR8gE zS^f`fjS)^}?Y7b-rwT-BLaI|ZHS!7h!J~ZBsVhpN#lhIPsQT7d(P3q%hvb3Xqk2$P z`^DB~7L#(w#7wL)f=2wC@oP+jc)6i?ROdfvkC*^Z%5TN5TTwDfU z{3HYGCw0SDbjBA3tHcL2Z!mN7PqOCk)-~;=_fj0sB>Gq1qo9db z;iJWX8UNpnMn-1i>HNv-{O04S>u=9DybyK8M+5`)p@gJ#7s`Q2iw>#p&5q|s&EJ^> zDvdkQF?U=Hz~Zuo^A1!AdM9A-p<{ppXFd{9k_+>;FDesCNB_<4ZZEAw?ZE>#r^DIk zS&CGZ7WS(U7--VO{5+7G&}nEX*HfL{=Mk^(3KC#ZXztx%b$5dn1QfVyH@CBpq&x`R z#T>-{T1!7&atfeGdlc2!o%|&C7|6Rft&dXEu1#|nB(;odT_G)XZ~ECWxYyRvJo3rS zL*&cAmsK=^!pPhu4t><+(zIwpcIb&q`}G=9hUaePy(??$%=L}vm#B+moa773=WZsj z^R@{=wc!Xp>ZW|Z`M1KUrXej&Sv$et9UI56_3c9N>d%%fzTANfsjfLBZX_f9Tn5_- z8bQTS$QLSkG@B-A{1=*E6>VkhB~bZDR`>qHBiW*w=v+QS7!$hVpg=@u8f7+5mUS!~ z@?Fz%{YiWYKR9Xjfgj$fM@00-v)yv(9Mz$SsK;47-L^jcz)oN+w`x7E4$6MkzbP#_e<>|m%*&kG zb6MhF03HoXzge71qK)@R$zZMyS*uEEYzI$l;>eb58+V)`Y`SLA{Erh!L9uoQUbf{_ zB`!@ev&RTcw8uvUll0%<#qo%gT1FhGW>NQ$ZyrMOG;4(JGB4U@f+;o|(QzD(*2UUP z_Qwhx%23h_xj$n)PhRTEl3Ktouec-IE%@(fS0T1A2KvwUdOBxS5^xw+yEqKHuD6kw zmW8_=HOJ7{$xRfU&<(jPpSHYteUzc)F0>p+pVr3gIjmOtCLii6>y5)~W2>h!T_U-U za0*U6VFRWra@2+$m`Hw=KJhMiEme>D{ZktKvkcU>%lHP0qcU0X7WbBf+IGqZF!PDi zF427uiKONF&~tF6@b%Zo%mayB6Yt50MY`s=Rf%UvGx0eQtZP)Ez|NRXgvKs#>MZ$W zR}5q*JOQPX6?%}y6F~&!?T_~FCUDNzQBt_WC@wd=M-lF+y`Az{{BgR}dWe z{6XPgI!iJ=uKiYdgvmA_8gq(2?CQ%~pnz0V*AHpuuJ24ti0!dWtFukKv;#$+&KbdVgQ(i=PznhQtP(wiQ{1@E% zpOj7v0*I^dEdX@Qo&m;kM#i!PL%{Byqd&pxSaiq}nfE_(ksxWe1m{Yh77vYkw!RYFuJ!B<@e)dfCV!m^VY+n1&+MIM^?{}{=*yV7 zP(odI>In)nz4{(%FL+7Hztam9?t`?RSe7+=;m$hR=Un@ciS5Vs@ETzT-Z@T5^1c`X(0_gIU%MyJgY^?BZ~kTwiY68jE!#$cBcx0*UT; z_UVjoVPh@rg*q+(%x|?2Hq82zqo7HV)H6<;}48XCJY;J@3+D_9v z4TQ+?;8xh{h74j}x5lERMHnYefF*s4jvSk8#Y8v^JXE+OJsB>5**6SpQ&vf627gI= z+Ehu+);(C?`a8-Al1sr5DHHg&gK?t2`sbSPG`ol!CsEF&-ruT&s(vc;o$Qm?h;p2L zfdNB>VnWQD)aptnNa#p2jUirPR-upJ9z*U}2NfkQymNHP-ubYtAZ}YFr2yGJ&(KcW&7Qu9!`sTCJt+2++oe9eTyI#LOJOLQX}k*3rIu+Nmfpj|>nXgS zR6oA`I?Vm0zbg7;>Fk-oT1$D}IuRxMO!9+=tv9gSV1TL&F;V0Q?M@0hJcp04L3!0h zOBvq+!Q1Zx<_e92+`|KYc~n1Tjz0?Y?<^L@B^u%-8EiMJwA-BSUU!htCKeW(pbB$6 zJf$FFs281huBQ=z>j%PME|UixB2MA2DuM{fCGp>#Fz$O18j9bvqUby#6tnr|MfZzB z4FlHJFfeU(xyFnGn2S%IEH`Tqz7=YENqmH4X{HWufKN{G zV9`k%n4x8NwN%UquL--Q*^1Mk28hw)q2IBO`x1^@eIJB=itn*Qm-CK|$>*HkzwW~d z*XimP#w4!ZGn6Yw>h!IWuxH~?MPrF$49nZPo8p$4&n~W&IXWM%xst_@1xC%u&PCK z`u5g~nvW2|t@K#^LK3a?n4b0DSy9wVx3zpyl2`5Bcwi!mtO=s8L$}leQlTQ(%h)aZ z(_GmV4DzYIkqx-x*^hKg%=MF~Nt@d(|2|l6UFdqYG91OlKQ_)xQ6WoLOTHSk>)G-m zgSiXN%n)vq=n1C9J21{^mek8Jz{ky1$B!I!jeIa^3Kcc{geYpV*4K=$@}P#sP-^LJ z5Q*?hF`#pI@oQ@_W+Yt+C{+RfU8OXfi4X`_T&;PvazTCNxzI6IS3YxeKGak z{!W7*B!_>qrB0f0Fm*}cql&Lk5X6Q(LQOnufx)!%RqGGjPXq3QEvFiJ<%*<_HPU+3 zY6$1iwWmRern_atJPqa6XV+C_IxGRMX>$*}E{*zP8Ur3CCfapf;U>8BVe|8c{kXwa3QwvG^EcgmvQRSw7frc*fB46-n<32`#gOxFU7BD zOd40|zrGfb!nc;ft~)@p-oMf0)zltO9�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 a($m}reLo-~g6_g2nt?VboPjini2e_T{Rde9 From 910fe6f66bd1fef24074c784acaa8566713aec83 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Mon, 26 Sep 2022 14:34:23 -0400 Subject: [PATCH 08/13] fix docker-compose syntax --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b42f0cf..f1be870 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -111,7 +111,8 @@ services: solr_config_loader: image: solr:9 container_name: config_loader - depends_on: solr1 + depends_on: + - solr1 environment: - SOLR_HOST=solr1 command: From f55f381cc74e9141d7876d306588ff729c5944d5 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Wed, 26 Oct 2022 14:53:16 -0400 Subject: [PATCH 09/13] improve solr 9 compatibility uses SOLR_MODULES env var to enable analysis-extras and the "new" trln module, created by copying extra jars to /opt/solr/modules/trln/lib removes solrtasks gem --- Dockerfile | 10 ++++++---- Gemfile | 2 -- Gemfile.lock | 12 ------------ docker-compose.yml | 5 +++-- solr-docker/Dockerfile | 4 ++-- 5 files changed, 11 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index f0361a0..d26fc72 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,21 +4,23 @@ FROM ruby:${RUBY_VERSION} AS base # note here that if you don't use an alpine flavor this # package update will not work! -RUN apk update && apk upgrade && apk add --no-cache build-base sqlite-dev libpq-dev libxml2-dev libxslt-dev yajl git +RUN apk update && apk upgrade && apk add --no-cache build-base sqlite-dev libpq-dev libxml2-dev libxslt-dev yajl git nodejs bash sqlite + COPY ./ /app/ WORKDIR /app -RUN bundle config set path /gems && bundle install -j $(nproc) +FROM base AS builder -FROM ruby:2.7-alpine +RUN bundle config set path /gems && bundle install -j $(nproc) -RUN apk add nodejs git bash libpq yajl sqlite sqlite-dev +FROM base WORKDIR /app COPY --from=builder /gems /gems + RUN bundle config set path /gems COPY entrypoint /usr/local/bin/entrypoint diff --git a/Gemfile b/Gemfile index c84f076..b1d1f82 100644 --- a/Gemfile +++ b/Gemfile @@ -91,8 +91,6 @@ gem 'active_record_upsert', platform: :mri gem 'argot', github: 'trln/argot-ruby', tag: 'v1.0.7' -gem 'solrtasks', github: 'trln/solrtasks' - # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 3.0' # Use ActiveModel has_secure_password diff --git a/Gemfile.lock b/Gemfile.lock index 1de4ff8..80a1ef9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,14 +11,6 @@ GIT traject (~> 2.0) yajl-ruby (~> 1.2, >= 1.2.1) -GIT - remote: https://github.com/trln/solrtasks.git - revision: c463013d783bad2f9e61a9444914e8587329c9e2 - specs: - solrtasks (0.2.7) - cocaine (~> 0.5.8) - nokogiri (>= 1.10) - GEM remote: https://rubygems.org/ specs: @@ -94,9 +86,6 @@ GEM sassc-rails (>= 2.0.0) builder (3.2.4) byebug (11.1.3) - climate_control (0.2.0) - cocaine (0.5.8) - climate_control (>= 0.0.3, < 1.0) coderay (1.1.3) concurrent-ruby (1.1.9) connection_pool (2.2.5) @@ -318,7 +307,6 @@ DEPENDENCIES sassc (~> 2.0.0) sidekiq (~> 5.0) simple_token_authentication (~> 1.0) - solrtasks! spring spring-watcher-listen (~> 2.0.0) sqlite3 diff --git a/docker-compose.yml b/docker-compose.yml index f1be870..8ccb4dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -79,7 +79,7 @@ services: command: sidekiq solr1: - image: solr:7.7.3 + image: solr:9 container_name: solr1 build: context: solr-docker @@ -87,6 +87,7 @@ services: - 8983:8983 environment: - ZK_HOST=zoo1:2181 + - SOLR_MODULES=analysis-extras,trln depends_on: - zoo1 healthcheck: @@ -99,7 +100,7 @@ services: image: zookeeper:3.6.2 container_name: zoo1 restart: always - hostname: zoo1 + #hostname: zoo1 ports: - 2181:2181 - 7001:7000 diff --git a/solr-docker/Dockerfile b/solr-docker/Dockerfile index bcb97d9..5be0903 100644 --- a/solr-docker/Dockerfile +++ b/solr-docker/Dockerfile @@ -5,6 +5,6 @@ FROM solr:9.0.0 # Add external jars #RUN sudo mkdir /opt/solr-9.0.0/modules/trln -COPY plugins/*.jar /trln-modules/ +COPY plugins/*.jar /opt/solr/modules/trln/lib/ -COPY config/solr/trlnbib /trlnbib-config +COPY config/ /trlnbib-config From bcd9c57246499d1a80cd7b8aa7b7579a34bceecc Mon Sep 17 00:00:00 2001 From: Genia Kazymova Date: Thu, 27 Oct 2022 10:57:55 -0400 Subject: [PATCH 10/13] Add cd config when check for a branch in init.sh --- init.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/init.sh b/init.sh index 23a153f..bdba012 100755 --- a/init.sh +++ b/init.sh @@ -28,6 +28,7 @@ if [ ! -d solr-docker/config/ ]; then echo "checking out solr configuration" git clone https://github.com/trln/trlnbib-solr-config config/ if [ "main" != "${CONFIG_BRANCH}" ]; then + cd config git checkout ${CONFIG_BRANCH} fi cd $wd From 0b35f5cb4a7bb31c1eae1d85c25e38ccbb5f1a5c Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Fri, 28 Oct 2022 14:49:52 -0400 Subject: [PATCH 11/13] fix merge problem --- docker-compose.yml | 3 ++- init.sh | 3 +-- solr-docker/Dockerfile | 6 ------ 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8ccb4dc..95b70f9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -79,7 +79,7 @@ services: command: sidekiq solr1: - image: solr:9 + image: trln-ingest-solr:latest container_name: solr1 build: context: solr-docker @@ -94,6 +94,7 @@ services: test: ['CMD-SHELL', 'curl -sf http://localhost:8983/solr/admin/collections?action=list' ] volumes: - ./solr-docker/plugins:/trln-modules + - ./solr-docker/config:/trlnbib-config:z - ./solr-docker/initscripts:/docker-entrypoint-initdb.d:Z zoo1: diff --git a/init.sh b/init.sh index bdba012..c3bcc88 100755 --- a/init.sh +++ b/init.sh @@ -28,8 +28,7 @@ if [ ! -d solr-docker/config/ ]; then echo "checking out solr configuration" git clone https://github.com/trln/trlnbib-solr-config config/ if [ "main" != "${CONFIG_BRANCH}" ]; then - cd config - git checkout ${CONFIG_BRANCH} + cd config && git checkout ${CONFIG_BRANCH} fi cd $wd else diff --git a/solr-docker/Dockerfile b/solr-docker/Dockerfile index 5be0903..53bf98b 100644 --- a/solr-docker/Dockerfile +++ b/solr-docker/Dockerfile @@ -1,10 +1,4 @@ FROM solr:9.0.0 -# Install necessary contrib jars -#RUN cp /opt/solr/contrib/analysis-extras/lib/icu*.jar /opt/solr/contrib/analysis-extras/lucene-libs/*icu*.jar /opt/solr/server/solr/lib - # Add external jars -#RUN sudo mkdir /opt/solr-9.0.0/modules/trln COPY plugins/*.jar /opt/solr/modules/trln/lib/ - -COPY config/ /trlnbib-config From 03b4b4b8d8ef3705d45adfe8aa61a121d78df00e Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Fri, 28 Oct 2022 16:31:48 -0400 Subject: [PATCH 12/13] add info about accessing solr for `trln_argon` --- README.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fbf3a9a..41f96ee 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ Before running containers for all the services via compose, you will need to run the `init.sh` script in the same directory as this file; this will pull down the solr configuration from the working repository and, if needed, create a docker/podman secret for the PostgreSQL database password. -Read the comments in `init.sh` for more information. +Read the comments in `init.sh` for more information, especially if you want +to use a Solr configuration other than from the `main` branch. From that point, `docker compose up` will start all the necessary services, including the primary Rails application (in development mode, so editing files @@ -43,6 +44,14 @@ plugin files (in `solr-docker/plugins`) and the Solr configuration are correctly installed before the services services start. When the smoke clears you should have a complete set of services. +A few tidbits: note that `docker-compose up` will build any images that it +doesn't already know about, but once an image is found, you'll have to rebuild +it to get any changes you've made (e.g. `docker-compose build app`). If you've +done `docker-compose up` and stop things with `ctrl-c` in the terminal, this +_does not remove any of the images_ so when you run `up` again, you'll get the +same images as were used in your previous run. Frequent `docker-compose down`s +will help eliminate problems resulting from things sticking around too long. + The default exposed ports are: | Port | Service | @@ -53,6 +62,27 @@ The default exposed ports are: | 6379 | Redis | | 5432 | Postgres | +These are all available on `localhost`. + +## An Extra Note About Running `trln_argon` (or derivatives thereof) in Another Container + +You might want to do some end-to-end testing of index schema changes for `trln_argon`, and in that case it's nice to point one of those at the Solr instance +exposed by this application. + +Unless you tell it otherwise, `docker-compose` and friends will probably put +all containers it starts into the same network (`bridge` by default -- see https://docs.docker.com/network/ for more details). When running `trln_argon` inside a container, it can't see the services exposed to the _host_ at `localhost` but you can use `host.containers.internal` instead to access the services exposed +by containers, even if they're started from another process. + +In this case, put + +`SOLR_URL: http://host.containers.internal:8983/solr/trlnbib` + +in + +`trln_argon/.internal_test_app/config/local_env.yml` (adjust as necessary for +the particulars of the application you're working with). Note that with +`trln_argon` specifically, you will need to edit this file every time the +application is reinitialized. ### Vagrant From baed2cbb2f5dd9982b6e323aad7f456cd9be4d54 Mon Sep 17 00:00:00 2001 From: Adam Constabaris Date: Thu, 26 Oct 2023 16:33:03 -0400 Subject: [PATCH 13/13] bump version While this branch was initially intended to not change the core codebase, it turns out that a few changes were needed to help run the services under docker. --- lib/spofford/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/spofford/version.rb b/lib/spofford/version.rb index f5b5fb4..d28e22e 100644 --- a/lib/spofford/version.rb +++ b/lib/spofford/version.rb @@ -1,3 +1,3 @@ module Spofford - VERSION = '1.0.0'.freeze + VERSION = '1.0.1'.freeze end