From 05b3d836925cac6cd0ff2388e7e462d9c99425d0 Mon Sep 17 00:00:00 2001 From: Javier Dario VEGA BAEZ <66302636+dario-vega@users.noreply.github.com> Date: Tue, 9 Apr 2024 10:08:28 +0200 Subject: [PATCH] QA to examples-nosql-cluster-deployment - Urgent fixes for LiveLab serverless (#166) * QA April 2024 - using latest NoSQL version for examples-nosql-cluster-deployment - adapting the code to use ARM images by default - the default instance for Cloud Shell is now ARM * QA - April 2024 - new zip files * Update data.sh because PAR URL expiration * Update data.sh * QA : new zip files * QA new zip files * Update data.sh * New zip files --- demo-livelab/demo-lab-nosql/data.sh | 2 +- .../serverless-with-nosql-database/data.sh | 2 +- .../functions-fn/api/demo-api/Dockerfile | 15 --------------- .../functions-fn/api/demo-api/func.yaml | 7 +++++-- .../load/demo-keyval-load/Dockerfile | 15 --------------- .../load/demo-keyval-load/func.yaml | 7 +++++-- .../functions-fn/load/demo-load/Dockerfile | 16 ---------------- .../functions-fn/load/demo-load/func.yaml | 7 +++++-- .../streaming/load-target/func.yaml | 2 ++ .../functions.tf | 1 + examples-nosql-cluster-deployment/README.md | 6 +++--- .../script/env-proxy.sh | 2 +- .../script/env.sh | 2 +- zips/README.md | 4 ---- zips/demo-lab-baggage.zip | Bin 11813122 -> 11813122 bytes zips/demo-lab-nosql.zip | Bin 14724 -> 14728 bytes zips/examples-nosql-cluster-deployment.zip | Bin 1874201 -> 1874211 bytes zips/serverless-with-nosql-database.zip | Bin 33841 -> 32619 bytes zips/video-on-demand-with-nosql-database.zip | Bin 71666 -> 71666 bytes 19 files changed, 25 insertions(+), 63 deletions(-) delete mode 100644 demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/Dockerfile delete mode 100644 demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/Dockerfile delete mode 100644 demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/Dockerfile delete mode 100644 zips/README.md diff --git a/demo-livelab/demo-lab-nosql/data.sh b/demo-livelab/demo-lab-nosql/data.sh index d07cc98..a90d38c 100644 --- a/demo-livelab/demo-lab-nosql/data.sh +++ b/demo-livelab/demo-lab-nosql/data.sh @@ -1,6 +1,6 @@ mkdir ~/BaggageData cd ~/BaggageData -curl https://objectstorage.us-ashburn-1.oraclecloud.com/p/GzwEz9xBCBHrd0gx1QE0U8hqvNTKzmKcs1pSx3CQ2Ip9A05Z1vHgPNeVRMx_1cLp/n/c4u04/b/livelabsfiles/o/data-management-library-files/BaggageData.tar.gz -o BaggageData.tar.gz +curl https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/data-management-library-files/BaggageData.tar.gz -o BaggageData.tar.gz tar xvzf BaggageData.tar.gz rm BaggageData.tar.gz diff --git a/demo-livelab/serverless-with-nosql-database/data.sh b/demo-livelab/serverless-with-nosql-database/data.sh index 525b5d9..fc0a32d 100644 --- a/demo-livelab/serverless-with-nosql-database/data.sh +++ b/demo-livelab/serverless-with-nosql-database/data.sh @@ -1,6 +1,6 @@ mkdir ~/BaggageData cd ~/BaggageData -curl https://objectstorage.us-ashburn-1.oraclecloud.com/p/GzwEz9xBCBHrd0gx1QE0U8hqvNTKzmKcs1pSx3CQ2Ip9A05Z1vHgPNeVRMx_1cLp/n/c4u04/b/livelabsfiles/o/data-management-library-files/BaggageData.tar.gz -o BaggageData.tar.gz +curl https://c4u04.objectstorage.us-ashburn-1.oci.customer-oci.com/p/EcTjWk2IuZPZeNnD_fYMcgUhdNDIDA6rt9gaFj_WZMiL7VvxPBNMY60837hu5hga/n/c4u04/b/livelabsfiles/o/data-management-library-files/BaggageData.tar.gz -o BaggageData.tar.gz tar xvzf BaggageData.tar.gz rm BaggageData.tar.gz diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/Dockerfile b/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/Dockerfile deleted file mode 100644 index 860fe7c..0000000 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -#FROM fnproject/node:dev as build-stage -#WORKDIR /function -#ADD package-lock.json /function/ -#ADD package.json /function/ -#RUN npm install -#RUN node -v - -FROM node:12-slim -WORKDIR /function -ADD . /function/ -#COPY --from=build-stage /function/node_modules/ /function/node_modules/ -RUN npm install -RUN ls -lrt /function/* -RUN node -v -ENTRYPOINT ["node", "func.js"] diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/func.yaml b/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/func.yaml index c967d30..baf92c5 100644 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/func.yaml +++ b/demo-livelab/serverless-with-nosql-database/functions-fn/api/demo-api/func.yaml @@ -1,7 +1,10 @@ schema_version: 20180708 name: demo-api version: 0.0.1 -runtime: docker +runtime: node +build_image: fnproject/node:18-dev +run_image: fnproject/node:18 +entrypoint: node func.js memory: 256 timeout: 120 -idle_timeout: 1800 +idle_timeout: 1800 \ No newline at end of file diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/Dockerfile b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/Dockerfile deleted file mode 100644 index 860fe7c..0000000 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -#FROM fnproject/node:dev as build-stage -#WORKDIR /function -#ADD package-lock.json /function/ -#ADD package.json /function/ -#RUN npm install -#RUN node -v - -FROM node:12-slim -WORKDIR /function -ADD . /function/ -#COPY --from=build-stage /function/node_modules/ /function/node_modules/ -RUN npm install -RUN ls -lrt /function/* -RUN node -v -ENTRYPOINT ["node", "func.js"] diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/func.yaml b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/func.yaml index 37d4d3b..78a6412 100644 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/func.yaml +++ b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-keyval-load/func.yaml @@ -1,7 +1,10 @@ schema_version: 20180708 name: demo-keyval-load version: 0.0.1 -runtime: docker +runtime: node +build_image: fnproject/node:18-dev +run_image: fnproject/node:18 +entrypoint: node func.js memory: 256 timeout: 120 -idle_timeout: 1800 +idle_timeout: 1800 \ No newline at end of file diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/Dockerfile b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/Dockerfile deleted file mode 100644 index 33e4d1d..0000000 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ - -#FROM fnproject/node:dev as build-stage -#WORKDIR /function -#ADD package-lock.json /function/ -#ADD package.json /function/ -#RUN npm install -#RUN node -v - -FROM node:12-slim -WORKDIR /function -ADD . /function/ -#COPY --from=build-stage /function/node_modules/ /function/node_modules/ -RUN npm install -RUN ls -lrt /function/* -RUN node -v -ENTRYPOINT ["node", "func.js"] diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/func.yaml b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/func.yaml index 2505a08..4de7646 100644 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/func.yaml +++ b/demo-livelab/serverless-with-nosql-database/functions-fn/load/demo-load/func.yaml @@ -1,7 +1,10 @@ schema_version: 20180708 name: demo-load version: 0.0.1 -runtime: docker +runtime: node +build_image: fnproject/node:18-dev +run_image: fnproject/node:18 +entrypoint: node func.js memory: 256 timeout: 120 -idle_timeout: 1800 +idle_timeout: 1800 \ No newline at end of file diff --git a/demo-livelab/serverless-with-nosql-database/functions-fn/streaming/load-target/func.yaml b/demo-livelab/serverless-with-nosql-database/functions-fn/streaming/load-target/func.yaml index be27f1a..1640909 100644 --- a/demo-livelab/serverless-with-nosql-database/functions-fn/streaming/load-target/func.yaml +++ b/demo-livelab/serverless-with-nosql-database/functions-fn/streaming/load-target/func.yaml @@ -2,6 +2,8 @@ schema_version: 20180708 name: load-target version: 0.0.1 runtime: python +build_image: fnproject/python:3.11-dev +run_image: fnproject/python:3.11 entrypoint: /python/bin/fdk /function/func.py handler memory: 256 timeout: 300 diff --git a/demo-livelab/serverless-with-nosql-database/functions.tf b/demo-livelab/serverless-with-nosql-database/functions.tf index 8068229..71cdb97 100644 --- a/demo-livelab/serverless-with-nosql-database/functions.tf +++ b/demo-livelab/serverless-with-nosql-database/functions.tf @@ -9,6 +9,7 @@ resource oci_functions_application export_nosql_demos_1 { defined_tags = { } display_name = "nosql_demos" + shape = "GENERIC_ARM" freeform_tags = { } subnet_ids = [ diff --git a/examples-nosql-cluster-deployment/README.md b/examples-nosql-cluster-deployment/README.md index fe639c1..91fdc65 100644 --- a/examples-nosql-cluster-deployment/README.md +++ b/examples-nosql-cluster-deployment/README.md @@ -216,14 +216,14 @@ In this demo, we will use the Oracle NoSQL Database bundle - Enterprise Edition For more information about difference between versions (CE vs EE) and other topics, visit the [FAQ](https://www.oracle.com/database/technologies/nosqldb-learnmore-nosqldb-faq.html) ```bash -unzip kv-ee-23.3.30.zip -d nosql +unzip kv-ee-23.3.32.zip -d nosql unzip nosql-migrator-1.5.0.zip ```` Modify the file `env.sh` and `env-proxy.sh` with the appropriate kvhome path location. e.g. ```bash -export KVHOME=$HOME/nosql/kv-23.3.30 +export KVHOME=$HOME/nosql/kv-23.3.32 ``` Download, unzip NoSQL SDK for Java and compile the NoSQL SDK for Java examples. We will use java programs to test the configuration. Other language SDKs @@ -509,7 +509,7 @@ The following error can be safely ignored when running the command `bash stop.sh ````bash $ bash stop.sh -23.3.30 2023-12-01 19:36:45 UTC Build id: c5db6593507b Edition: Client +23.3.32 2024-03-06 18:21:38 UTC Build id: 69f48431fc69 Edition: Client Failed to stop SNA: Bootstrap config file /home/opc/nosql/kvroot/config.xml does not exist ```` diff --git a/examples-nosql-cluster-deployment/script/env-proxy.sh b/examples-nosql-cluster-deployment/script/env-proxy.sh index fa85e3f..663fea6 100644 --- a/examples-nosql-cluster-deployment/script/env-proxy.sh +++ b/examples-nosql-cluster-deployment/script/env-proxy.sh @@ -3,7 +3,7 @@ # Copyright (c) 2023, 2024 Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -export KVHOME=$HOME/nosql/kv-23.3.30 +export KVHOME=$HOME/nosql/kv-23.3.32 export KVHOST=`hostname` export KVSTORE=OUG export PROXYHOME=/home/opc/proxy diff --git a/examples-nosql-cluster-deployment/script/env.sh b/examples-nosql-cluster-deployment/script/env.sh index f7d801b..4cd8210 100644 --- a/examples-nosql-cluster-deployment/script/env.sh +++ b/examples-nosql-cluster-deployment/script/env.sh @@ -3,7 +3,7 @@ # Copyright (c) 2023, 2024 Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -export KVHOME=$HOME/nosql/kv-23.3.30 +export KVHOME=$HOME/nosql/kv-23.3.32 export KVROOT=$HOME/nosql/kvroot export KVDATA=$HOME/nosql/data diff --git a/zips/README.md b/zips/README.md deleted file mode 100644 index cd4889e..0000000 --- a/zips/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Oracle NoSQL Database Examples - -This directory contains zips files allowing us to deploy the current examples separately. - diff --git a/zips/demo-lab-baggage.zip b/zips/demo-lab-baggage.zip index eb012103ef61a7f852ae1ef5cb5f73db74ae1e30..2935c7402867336af0d50e2f9f81960d13230a03 100644 GIT binary patch delta 3783 zcmZwJX;4;G7zc1x7ZgnaUkOVA*<_P_6JAtAR7{Xf+yHk|3scafO-;q6%%!dyVhe_f zpqz)fAGC6&v8)+&OlvIEnbZ^&akmuF{_nZmdtc6#ncoNg=iKK!_uO+YtXOfzaRoSM zjInocva$U9x}kiNvtO6>fv&S^LCS1o?)H{&LOc&G1Iu?b?6570vc%H!DBDPFU`>3q zE!crQIDjK`g3izdx`GpQgYMuAJ)kGN0==L&xPU9TK_4(dUvP(4!2|liYw$YshXLRT zUf>M_!3TW75Bwnj20I>9h=&9i0*R0WW=MviFbsx6 z3XFhM7zt@G3P!^iNQbfT28@FY$b|8b1=)}TxsV4FARi{eB$y0SU@8ROn6j+!p2^mxE!@_|Qz|O1bCnvrsdu-oHujby zZ?WcH!a@07LakF@<>Y78#_1>DoLwuMv+H{G<6~LHb(Ff#*Nu zu)*3j^1nIkh>7P73s{1l|F?h@1_M59X>VEowF=apB{ORm2~3MYyM)f zJXfc?NXb{3GS;P$4ec<-zgp6QMm9z(B^_&I7kQ;U7g(AW%XcrZ3l2O#{Wlw}<&x)R zR>I@$m)Tf7Zn?}_dE9)3DZBrYew-e$Q0Z7GIZ1b~vhL0~+3g2OovO4aUuD^PVXeIf z|FBFgmea4Xqsl&ZYhqbiF3oCUWxS88O)OWBpS7?7(zF}w93P9j$%gZ>jtlR(X?;gn zxUb}Vi~Yne`Qw(=CdmHH?4Yvx`P(dAUnZ!9mGbFTEo__~WAzpu-@e1lFIhO_E=$#B z%e(I~C*>#{xNr4Dq}Kav9biFMVXar)M6q zmC7T}duqL>^-tLrzCv0no2d0E?QdoNJpR3vP1ob(XDpS+YoD=vJ-+#jt>f{MHm1MU za(x@?q1^0`FIcEHU4Ht4k+Q>wZAr;Hw(ej@%DK0Eh2#`F@>HhJu_yiQm-g9{#8(~e zK+4Wrrc3J_XfKZ=94SLvR9f#yt9k6&iS)nha&9NeR*E0&Okvt|`C4a6R`P(ZWc4mj z?@CXUdn)Ko!F;~jyVWB()SZ;ijyk5C{+`a1qAxMYndT~Am!Er+)p_=Dq4~VituCaW ze)*0Ir7ImJxlx{8rov6loBNP*^!Yx-m}n+1Q)wcrcl@4-DtlP|0Mw6e3@gPyK$mQ! zVh=J&qs-)N{q>hl_N9%yK!JPvo$|-A)tyc$ea!T*-kD1Lrkt>I{YgIsQqKYOn3w6| zNmk$1Bv0zElqvM0C>WqyVx{xn80{xn>uwacH9mFRFl`+hz5 zHL5SRfXp$0XeQgd>_e+aHBFRJQ z6HJN1)g{3+O^BWZQ-KgI3!x$*Y73zmN~Eo^GL$lfS&u{2=Cnh$Xt3cHZV#r3!i96g zXo^t2DU8Mnv+}|zTZm4E8#Zl3gu1m_tH&ZJT_}$o61TQG(y$W&QR+@;wQ8bhj?hGO zG%XaOU!rNY5RH#99R7wF^$BU^U1QZq-@;h+L}^iDtoq2cC?(FYUo4KM3Qa`B8{YYf zcrpvKp2r&we_;Y8D6_Oyze_N@f&N2iyijY`5cT9}t$HP@yQ)Q1i8NEVFeu4zzABRp h56#`IwyM=CGpns?(Rt&n_+-Q5s7O{n78jGr=YP-i(menG delta 3783 zcmZwJX;csYAgq~dC+G>i;5FzCeZU!9pfB_T6Z8jHcpcne0K5Tj!ax`V?%)BQ z;04~`1HRw~{xBE5u`L@D_}LEXanjFb;Ac7xEw<3ZM|i!vvTJlVCDTfvHdg(_lKxfMS>l zvtTyNfwy5U%!B#x4!jE`umIkJg|G-pp$ry7IV^z+sD$_71Naa=f{$S-RKYU%1eU`J zSP83OHLQWP@F{!-pTj!%0@lL@*a(~8OV|t&Y=Nz?4YtD$sD_f+QV#Z+@+$D1{dkDC-v#x&Bo4hRR`OZTGw|UjMm3|_8gRb_8eOD8^5l)yixB#zEs|L=>pGx%wHNa>6BG2Wu9U? z`Sj*fEK)BYaGKq<<+Ag~G5*z(<~Ol)t(0`EiCyHCc3og;S}fncz%JPH{Pf>!w3bWmmsu%~ zw_awMdfa@OwetAR6{hU|EBbMK%tEANA>=6CzshtIRNa|FjJ^3oj(F<$sJ^Y7d zYq6YhjU83?vHJ}+PRpg4H&`X_+hVCOgN+VsEkGe5~WbyKY(E5f<(* zIo)PI^Gp7?ZM6xq-yK%3tbYD3%g~nzY-VMA`tD{nMvt+2Gmr1yW9C;ZoOPe2YP02? z_nD(|6!t%`dLmNm12&gene)*4`5k@8Zt}SH5liY&-0CD?=apyJ@s7(MTkq+a$84GM z$n&3B?`h*Rwvn%p*2>0feMJ0wU!&( zSx@C=e|o_}wCVD*7mSo0K4eQu-m!K2PNbZB%U4KF=|t|z^x1Z#zx~o)JCgXS!|h4g zdCPQZjXmw*akv9zX^Tp09cTrQT{@HgmtD^5OgT#N`YsfzO_#5Ap=2fZ??zVd^7L-> zRJo@qJt&CJS9`a5BnNwt^4U?xl+)kKiBj|>COFX?8>z&N zOwuSbIaz=GrIY<>9WOA&_2r%N$Fa$kPAPp9yIJo{4SrKj*tvnEp8~1ZAbP^fbaf}I zZ)=h}4OGfZ^`J<5-ty8Ua^q8F4@wgvcTXB7M9V#Cgb>~Fq>)0D>qRL-bi|7igviyK zh6>U9-iGp5yba|ud?-n{u+E1@36aUy(0!$^p@~0@QM4Zo7i#VBqhuvIssNPJ_D0y8gAEP_Sn zjer{?1B2S+oy9*0WO>2NzyKyn1G2pj8;Jb97hmX@sIcT_3BSBSL0IC0 zV|FW&onKrs$-TVvg(zsPK+}Ias?K$}U%gQ)%9`g>b#p{muH?+qe<*0TL;x?471 z_Hqg9@lyvm?_|2^ILk3efU^@Y*crAoT1>uRtcIdN0isLliT?8tk$JC!Z8$V7MQ`z#xvI0a)mm$-^{AgZ=#9Oq#htmtpco zeF+?1h%uLDx~Mz(fw?TdUS582VGf2*!M1LHn|ZSr6emEej$-So$@k6mVYVW?ZeStJ zJVPI3vo*TE!7f_|lrJ{`yKM3b1737BilBJzt=s;?1!$oM5G$fs`r8nq)5j7T(eak@ KY_p7j>KFi>R_%NM delta 1437 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 delta 12619 zcmZ`<2RM~s|2{bO&PcD5l_+FnWS14PvPvZ(BQtw*itIh#$|ypVy$*@&jBI6vN+}Ua zA(a1n-t&FVq3`dyj_Y#&?%(|z&+|Ud^FGI;3b%U|ZnWpMNRU(r?2n%`Zz8QUg^5X; zbujcv)Hy_gh3rnl5Ed>kTYkX^VJ0dsr)_h8AP^&_M2O>{D>2zoW-%Xe;q$uc#zvF~ z5-b<{0hQ(e=E^@!g+H)LU|}T@UMqa1k_fX>N!)P}w$)LSsO-kUAZbWG5W)C7Er}8y zKS@X8P731%OoaG%CK4_rj5D*5sNwk*Y$Q{}Fs{T-h{v&$lv2R>8D4_8;nBP#m}p*P z>|NN#-hfobYgsoS+o@puL?`kb9!GZ~-%wIwyOJaukLU-@hLCc2YxWTG9V1$0SWFMO zTtQ8vlkp=g`Abj4=sgAzpDA57_jY?5zeFkaWiMr$;?gf2PcRGCYJ67N#srH$2fjW|p!voVv zaZXzUiCV&$MD7We?SuR*FC23w(d=rhHnmbAX#370;#yXsSy4aLB`#C&8DwXfm95rwR*74GAnv~|?DIn+Z1UZRa(w15RB12wth(4n zKbH_k`|!D$M?Ee(4GsaEfv;HlP42iJ&$*G2=l+yWqTERBMKgx(NQsHB0f6pWG78ON z_(&?E?H_aKE9P6ZWrMw1&MQ%{!Z%t(G(l9rheYgK#_Y@5-YpI(DU@pSTIaLa79vN% zB)4+4g96$^KiwFr`FtG)>P4a(D>SU>PtUrDx+5RdxhipH6wR}s+#gLJZGRO@F+eda z*}UK_^-Uzi%=|`lsH67Vpzp=#yV492-Y(CnU;dHb_(0hdrywe4RZVWT^-+_HUP0rE zSvIYI)7k^NMxT@UnXwO={C1wG$IH+JYe_dH7vI*k|13-S&^wlyx2d6Y;P9v0u@MD8 zfDJcYINxy*dmwSPP~M;rlj&^~W1jT@Pu_Ct8axOKs#t@lj4Se_v=-_oyZ*-6NY(KWW#xx21v`O16VETrhN6Pu$>Zj;Wj zuEM4@YxPFA`T4%6S<8ZwVTl{+&Bt}_r4uD+3$c_v9Q8fxPcd)SI!yaovvypYbF8Y3PorlrRz61PE$0`jK|uFJ*ds^e;oX9!pCqbz3vDtY7}~+dGfu zW;n0*YxODxH69cCro_bbp)A|Nelmk5$NOwDCi02bGvMmvjbW+lg??m7Pt+8cCO>VK zq}KdW?pL3Q$sN9u=nz6=8LHRl6g$Hb+@-KGiIl&wFx67B!Byl%OOu;fkLEFNUKjm@ zNsYQs!ed+y3JP~zET&1{9AD%_?_68>o>cWUrKPu?ZgFsII^AR-mdQCldtG!cKup*B z)s}t+HRjw~f2}AY>HbL$OUfmMI8&BbU$tz#>qQCWCr?d0uvmF|&LiZZ;f^P-|2%!J z#m&_T=Fq>c2cH#oggA08PR61YsP*4A-~K?C`Kz|#rQ3+>GU;S2pKa#cImIIfU1VCX zMO(xmUkt70Z7hYF7}>8^e@c$=3~A!(ut2`MH_-vy)@ou0ZWOYE8Lndx731 z7M&~XlJDoAUvaV#RQv0qQQowIzGJ*Of@JLISo!4rmJPYUkYK5)qyiP9lNrgnhUqZ) zMWTJ*q*F)7?OjAb%WBh=hRLjqtZ9ZhCyQq@rA#`#%VGmD%OkWk3Z_A0B!?1Lj~f^5 zvr^My#2Fb>nXms;3jHgOEU|x6$UEe3>^u0O_27N?X`(p=MB6nF_8~epd#kvKDDwvg z^PKvJxvzkaQcK9Seq?yt4PyR9?*U=RwAe;R$V@AC}YkpD8&!lvwZ41 z?(b)(V`f_x__MGl|Jh`;b|8B6@EfYKjq1eP;-3C>C(A_Cx73Sc-(M^)tV^}o=3w_H zcc;?!azMJcf6d;S22W@46`6GBgKHx8qsVZp%usTcNb_-eV}>HQEC=R&MM{uEKi?y?Q_AYBBRWG>ubvp*I!TgIi>dA9HA&qPvvL`Y0s zYK@0tb@3SgH@nm`ZZ|@>X2M*uxjDux?jby{pmWkcBsg5D=wyZ#VIS^<%%J4Q1@n4>mtiL?sYh^ zSL7vHMfhf0E(xzl^PN&t@vsGXGu>N@+7gy|D<(U2=3FtF6*)-zUq>aYH}tKU7PAU9 zdzKY17Z{yYpXQWlqSn0}$K9Mf9&e)4xmb9v{gFi`oCnT?zB zBMIN~;8uI$rE#GoU4%+YlTOMhJNtyWBVir#CfOpL(Cgl* zK09*vtI~P0e9G$D_s%8#IXnm6(RW?@OZw%9hQwngIrj@&ha{BvysQS0E+f}7TE4Ny zu5|uZM$<-4-^xh2cq^hju%i#5ST|zF!}NZXam+ebFptZ|J{YOrPqN@#eAYJ8L5V^9|DX>^YCuHW%MI1f;>cQPf)R+^=#nP%kPgj4= zztMEZoXvbi7UgOM;|n>B8?ODFPu=7tX4QXdvD0W;-OwK}9Oiu5_o911o3;pb>1Vky zA=Idj!cSrG=cC%Kq!+zMFBFT{Ri&NEoSUeBHDn&6Uk4YzF$sf4z>0r>j@ze@P#t+(m9<;hR zRaqJTvSI1VhKGx%>oliX=AWRE-~3-p$MbH!ucv*{7OBlVJoO;yLkUZ)j?JMNB`fPZ zk5;CI`60f~JsWyY)dnUXjFd+SKe+m`iasu(ol1(^+LKv})LW(ftH!;jZufLk*+8ll zBoj%)i(rsz1qlKQombOF+O~%8OJ6g$WZJyI)L_fJ8X|i3Pdqrdg0x2qW^=teM;0Gl z#UEEuY8lONnfK(dxb05Lj{UUExMNM0yj4(8UAq7{)6r9wljMKu?&oOconPXA52Nb& zS{r=I7F7@*$(~iw1?_A*`fM)u-+DspF;q?#DO$r|n0etLO>Pp+Ten(%i=BkxXBmf{ zNIEE`+3I2j|D{IMY&w)I~TSKN@faLcue?PjILY? zNL8Q{^(@xtI;Pyy#(oDKl6IuGhjaEQ=il_jw^~vj=wsK@WpfQ3`r9Zp4jz4Zo;$jg zS+E&U7!ps}ZfTOaLwI_VYcbSA;^W+q}t0R#!-rtv=s4x4*olWUWM;<(g{P zt23ryUXihzgSrqhIr?c>%&#EZFB{t2WBn{a{E;NMRr zoXroGfAL;^org99V{-*N`&7Hr3WO=Feb*#2n2i^jXHQ}{a2{M$fX*0N*!YpBC(-BNnuviB4fE; z5$)7IhcV&#tB#Ln?ajlw)!7(nj=P7ydt%VAm?wVgQ&{d3sjnuDYeRG?Tcpt$%0oXR zW{Ub-rnU{)vu+gfOFehCLi^Wmz0P$^Sb1Wi+*Fq~T`nUE+hZ@~eo58c!K8or^;Niy?Cm)hV`}osZ^nWe zRXpqK>9bzE5lt7*9HiDwMt`GPs$%CUGCax~jPiB_Be{mrM>6>DGxEKr zK`B=ZN92l3rP7r@9^QV?DAyrns@*`MzV&H4<(1sEpjS^X8$GP}^CPds)cVoV%3;k* zR>t|czP^toyK}4+Xr7*DL@s{)arA}17CEL)vfP*c0-4@rkrSU}`=sS3>RqoP&Ja<3 z@@=hjc9LeG?Ie#QZi_T5AmKxscEy&f%95xK=ov_x8XuzpG2g7_6^(utyrp@(R+OSq z`;3Hi<9!6jiO=5Wx!1fD)!W}0c@|$7GA5FIHNTi*(a;T)=kGQ%FkVhzVN7e`P7x5N5}8qoZKp%ETwB}FF^Cxs#>CI z+COqV4+>oI+IjeWwfgvlfmRoAU68vzh2Bl^OHF$=NM4B*VFJ%zkYt`QEZ@2=86Kg(YQw5QrmFw6_MFGi_9l#y`N(FJt4 z3uj+9DW9@?yhp1GrR&Mp)Wm;A#mSDVu1-u#2Ws$Trhk`+eLi{PSwz|kC5GJVP6ca9 zj|NxFbNl9cj6dtl(gvRUe!Vri)eh;>oVb|r*7Zkv>AHfS3fc3cW#ZC@f0m-d{-Cd- z=(p5=Oe8K6W$I>5&v$iw|6=dr=lR!nAbB*5xz#9VJO5NV|3jMWH`gW}w~2V4s!R72 z`ziA*bmpGd+IzvHN`a$4T#U}rM;9E?2`u}oFz=SpykO0@YBzBxQ2xcuH&-M#Cv#tL z*c>9Cy)+`z;IpimzH?b1CC)>QhaRov)Oy-&wK6(p*64AlYIUxwvR9vv-Bdg@LUdk& z3SGaGH~Kq+o_h{F`MJ?0ty|!_U3h zrd!A?*sEv$s)1hax>#K?{m0eOAHO^LZiy!HCyva#UrL+weupkIEM1$CpPM^-ZM^q0 zoAK!fDud-5#xnA0LA;d5>NSRklPY_hA71TDwxlXhHTX8ymDv0(N?Y1U$A!vm+sIbV zvqsj2Eys22tTENAj%_pkO|#c;+c6wU)vtCC*vlbi=xT@pdpQKgts~X(Hycyy$Qt+# zB{hu{e??P0LmET_-;$Wql4{}Em9(VAKVkejF`3>jj=dpb3GXK+!}JrA7vF;k=nQha zBaZMngB_@5j@fh+#yJyN@R7rP6In36iLA4SVcWG* z)(g8n;SHs%n1<4WU%$h)C)sRxKgfsW_ifCdBZoLY<5Z~uf*UnQYTzn4jK4YnoZVH# z08GFV?naFoMaVZn0rWWBo|h2E@B*GV9T6cyJU|Hefa6<865=J2zz**At?UdT{^tx} zi<@t@I)ElVpIRM&6NgV+BINU52HxR@fXa#xzi0(avqO2;=Tery>b;MWcX1obKCb!qFFq0a9>yb1cCq zfCu6L+|@66Jb<6m7%&y!CZffrv4K8v>ov5%pupSRfGF6M05I)l0Zt|WOK{Pz5&?pR zhdl`>zy<3_2DEqS7@~H752w09Dv?D&gh2cS2a=)oPoYud)CAYkxcIPgeHx(xJqTRJ zDLdXJY;((9U=r7khv~p2f`}OaJqg^-3t`dz1yDpO5^yINYNyTvfD!%QYj95=Y6KDT z3kd=N|B5xxcbF7q2wE?#mGm9saP*}NJ-=eudHKevbm_zF%z#>*k-cNj@Nwrq%l@wS zC3zC`dMz(la^AAvK%6=hLV4HmAIj7{mQPkMP#X-aEX~05JahYnN$%nY^ z^1T*~cxG30SFFAXqp*eHiNV{W6qr=IfkYuLm5Trm-MaLRcMi-Uyj)HX1QIx^)+Mh} zSVZznmaBEA<&3c;jE#g+5C@bLue$tM75Jm5xjA{oDD5w^<ep+oJDHcA~85AnB3$C0EJ zRE7T4eXpO;Pp9;f1DQ0cUgo?cm-BH^U+O@M`uy5!`E6y#^&z61Z(0TA1%p?=Yg9ok z=xbw0!qA~tGRUdUy1Uk}Oq@OznsD`!$y!rAZB}MMEx*xD;YXE5^pk}}g~S#uf2ZU} z6VkJjH!p{szO-ZB(HC4$MxSrV%W~agx+vzuO>Y{*oAU)72V@=Rv|A$`9OJVc99#X0 zZ~SBwO;&X|^;vOQRsO{C++zpo;DdYiKa+s2qDvXjGowldauuj1N|xQp{8+OK*8mjbAgn^&pZzph(+3&CP}Z#RNa_B&&V9-z0H%VQC{c2^gVfX z>TsazXCC*@G_!sBpDBc`8!vp2dEOeIw1c{$AVZ$a>T9hDMe6(KE5Z<`p3Z244XePqDfi zL_GPIz6GITXBuusrQ`?90&&4FXJ~2bl5Q@fJ^$YJp#6Ynhk@eL!?T*Az(#XxJnOJ1 zo6ffQGWykIWgIyeG_(5U5t}u;MV%kdy`c5bVzx06?c2sjLrzM1cYR_@KfKEOxm$|3 zOgV=C^GpP}w-- z)Ijbg!=u8S0|VNvzp{ni4o{8TE7MsS$hhe=OfQ9gy<%$6Zg0GDl|`?!RZrme%JYz~ z-8N&1%Bd^5;&T?+cg)ZSN0Q#uFhAw-IPlxinM|ziS?I z_hF^!14pk-{yy1O8GlP9jAHoE_bS!rXNSj~Ckn({OqAEp9pf0{r-(}sKYV?C%A$2- zLc+7UMgeVnVb!f05y2=jLRn! zS$9)_I0_d2DDOBKo7DaI9Lyy0A0dStb~s+MzI30z_InS zF5W%~u{$8P9F~0&{2h*>+r!?f1hjB5HLD3X?nl+YG`u-XJRRve0f|HtgNX@HI~!{V zb~(&=4R970Oghj(PYvRcK|2K;>=YOjiK5&S%)b^e!v%X=M_8c3Gav+qx7HKlyw8C; z9R99>aI_Q~fk#AecB_jfy)sbLU;oLDqlq9pFmVcC#^^Kwia3$DX21wPHeZ_o9ULy( zO0ex?qFaGOIQ(%NK}T>qG(2bm9fZk5bO0(ie&0*No&Inqa1@8DbrBplz~nCAJuKth z4e0Eq1HS48{=o379>8=L#)!TG_;D(idjVrSj_CzNaQJ*5A&%#}3=rbI1JF|f>+=o) z*YG+p4$rNg`ce&fsFj`AO#)P!0^~r!5r7d-RUHA0aS|D?2^+Ba8qmYx+M|T$wUSZ5 z4u=EdfF)k%&Nz^Y!%>rjsf0`d#W-AiiclXK#Va^`c^a_5>zK>{emMN~JK!oFmwgXh zz~RXsfGc=>?ZbatcI+eJKzV-z+;RMGp9l|B(96rqe7I%QvFrp#wQI5LZEs+l&kBV< z&w>F~C|MY;vqIs&L8zmToXKdd)4DE)no znzkstebBRiA;B9c!+orW|3WNw|Hwz!q0a9*vVbqVQDkrln|3IZU7VfZUkUu|QJQ!I zC-%UcDCKxHlLCS8XGI{y5NyyQjX*#%4pDU*4H7w^WbkxY+SCDRQ#gVY)MqC-0%kg( z==KqMu>^hE{}7uHxWYSKLN2pt8N<+li_3`FFFu}e(iH@ zmv5pAy-I}WXdpsJ?s0X=ASZBb${;5vC&m5S2#6h6IIv#x^KB1LA_V!w{=in76uaKI zw{tMg3B`zy4wv5S1XZTxLbabt>x`n^N0oPmsDgvk`>7Gm|EShusl0i#`>EtN302_& zK9^S~5K$5%fa}Bv`90-FTG8+Irv+Wc0VEiA6Geef4Hg*;4{g_9CqlGcCf?V6gfrt_ z5!QXK@4L^R;4>sb+(;xsDC~*fX3d0i^>IOQ;l1FtJ#&Eyw5Vgo5w=`VEO-K((M;std!`D^c@A-i8K^-ee-s~h1_hAQiU~Ve85Weua0JLQX6Gzq3fh61jx% zL~zmrMY%7FV&OC39CReRb$EXk29gAx=RFBM;UfJ#A^GexcoMDD|IT9tOEl5J6G2%o z!dVQf*?B>vo=bQV?WzB*HjO22T_+$)|3ifPJ2a75U`&TV6bbIH?6?!&8_e`3s0_DS z!tU6`=f6M4cjpfS;*Zj2f2_M8$l!w_-PcV@YJck`$V(p@$dh}<^jrYW3GG9;e!-=e zLQ4^GZs4w+6x{YfG2xYQQ_2@2l?UNSn?V5ezZ0VnOQF7nqZr)+SpKC5`au-7+gOSy z=;Mc?-xsA2YyT7s+Zo`iNcS6i=QsRp311QXy$F@~7&<|!?kRH|JmZhj-ltmP52>nz zV^!s7g!e1L<%tGBl)gw@Vu1lDntc*avG(3*tX<^)k>C!5C>60V1>A`RDE=+~K9;f( zhouOD9|BQ__C+}y1lhe4aCYdDh~a-oU?~lWyA;y@CmTjI#KR=RytEX6{$Hh7EJGso zzYGfO{Sm<$0k?(n7Q`t^`!9zK+)4u|_ejCx@v$6aGrjak*H>s6V1lIO z_Q;+q0xhCZLg2el6cuO}N;uD9&x}&F+BwMc1=QNTBUxCy>q)RSz*X?_XfS_35s>|4HO}rAfjY1+vl6V`sRn1?j`(Mj5R8QE)U{Z)ffdSb~WG>8KMa@hUM^YwFtzi zJ#Fd*&7)DL_Z8S24as>oYvd&cE!9K=eHF{_$>$hDn8TP+~|V0&#jzk1q}2JP#)R zqpXz(Dbo(&>=}uKorEJ#VC_A_Si2%9G6GQTNgf{CDTRv(Qc&DDXi@m@ffV`^dcz3? zZzcV6ApM#IDN2rliOHzb3>G#v!VX^U|6?n5EYo=y0LkP*Te0?@YDmC@WRwwp#=ylZ znp?J}K=k8K@tS++q?6cC>a_n)oZx#A2bCemjeoL7f#oUxWY3-oWj{8J>(`%D6eAdz z`p--%!jc-_?UD$d2Dqs*X^=hO1I`|mMmW9Ujy|~g25}k6Ngm2+@APE^-=+QYk}3y6 za&JCiC*V==bSyg^C^859k2k^=w)`_s-yjfO(A$U9e|iLs6EsjiW7t7gNq`sYz4vql zH@EzyR2Vlz?-AVq2zL48jYWw3x1^k-bHbeQCOoO G&Hn?jCV*i8 diff --git a/zips/serverless-with-nosql-database.zip b/zips/serverless-with-nosql-database.zip index 387594c97ce11c0332d838b14820e70b1a5929e8..03a52cc33b2cbbb3cddae00463531503f4046240 100644 GIT binary patch delta 4576 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 TAz=^)2m*uw+Qxhr_t(Dx4|rQm delta 5547 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 diff --git a/zips/video-on-demand-with-nosql-database.zip b/zips/video-on-demand-with-nosql-database.zip index 47cf968a6986818da3aaeba3e496cbfb45ee5923..1c3ce9c572cf1db44a4d36a688635da82fd5f511 100644 GIT binary patch delta 1944 zcmZvbT}YEr7{~W)?>4tN+f1Ehlm&eml|?};!lExpr>1RcWm%{*XDNh55s`#o^eIPr z>mt)GBD%V-hP zU`|WY2u79kX**L{WwwW$UKCMqEBLBXr)ebQ*?^IR@7&ueNDP^@>nZfQw02!skY?%6 zy5jX(mFmPiu?`?ke4+t^$)M6mrPA|unqsxM{*NVr_CcP)X;!JcGTJXDI8`d?twwdG z`C_aN1o5^2k#d)+RGas?b)6F%MY%WAK~TQC9z$DUGKF4Gp*;iB8x4t!{%CLmZi+Xb z{8}tEMJ0X%s=cqJ^G)V}TJJkp{mciS0K1wWrZeh(cvFLEgl{LMsK!47Rr@?RqF2{D z0vChr0MIPo=J4f9^74wE+hiG`f+n&=bhFIjSaSpRwfkkT#$RQYa=Wx>y(1Wzsua!i zC5Er$Eo=M>(1Vsu*g@Z#$tEjkt;5jRmPDa9r)`B1)9UtYM!&Tet1->%NM*F4BbvnU z;w6h5#l8B9rLnKqGHK!K>BOL-GYwPOjiIs5EUHA=U5|13{O;Wpde3#YkkiZV&1JN) zcY^e9d?%v|-=`CLypJvG?dm&BXl8#tbMW=wAhcw_&1m<)E1h8->s%iQYkD}WAH|I~ove|(<+yD2A)J__KZNM^A|3)?9t(k?ByD3VE?I&QEQ9qgb| zQoT_RxeDahLy-bygm9>bM;-&G8s*VRBjhXWjV8!epb8VX6(}qeaun!nC>Mvp3@KD4 zi{pqHc2Q1tA2UON0+olseg(2jfddLu%cFP;x79rh98?r0TcJ#Wdac}|#o=7XU*Vjp uVk);gM8IB!eMJOU7#0b63RQI^H+@VLWGGY@c%-#)s-w1l*ZR+0IH<` delta 1944 zcmZvbUr3Wt7{>Q*-!`{7+f1Ehm_>h$N~0haVPct7rfFMRSr*Qzvp*0ONkkDsU0BHx zzq-h@i->NlcHxB>8ndZo7a^IZc41{!RxZoTwDz4-=X`vp!P&)+=Y8JyefBO;F9hlZ zbLLi!U{pz;vb75;&GwL-oN8BD@Kt8a(n!d&5hDrTYuF)344Jek6ndRnyDlt9bMzI? z1ieD{^o$%o6=c*?1PVhUCqr|jJlieXfTcN?WGje_~)Q1p9e?ObE`X0 z9c%}H=K3~=uUb)1Q0mwz%Lo;=k|m-a$t+GkYQ(;FzYNy+E6q}FSC^%v2P0D*MX|oL z@HM<;jeiMx(3XlF^zFOYWQFZ@7#cgaQs~X=SZ&0#swK$M?Sb29r&=1(4-NT0jeGOf(JvNWX&c& zy$1Z#=DDrM?ZKa6y9(XtiWie+!aVueqPnB=k!v&&J6s!;#WgaTj^X;iPBy`{Kqr}? zc#KWp?HG$8A-?|76-Jjn{p!U*MgHGnbe`<25Zy79x5f( zoAi*cKz==xC{T6?hhFi>W8hTdJUVX#m%`p?f?NeEH-TG$!a^ZWfht0|I1FakPF1ov zPMKjJGZZS&xiC1SK$aPBSb=JJlwjeuYOugDMd3Cp99N)0E4OHAIM?x4IHxL~ s$?Xmia8O}i9>EocMM8l>RTari9}@-H3e^=JX>FXU%=Yj4J8iJ=4=qBE>;M1&