From e733c5cb0c63e8e795fd0fd7c0726ac054019817 Mon Sep 17 00:00:00 2001 From: Kevin Reynolds Date: Wed, 1 May 2024 18:02:20 -0400 Subject: [PATCH] test writing --- labapp/app/app.py | 30 ++++++++++++++-- labapp/app/markdown/manipulation.md | 10 +++--- labapp/app/markdown/portability.md | 51 ++++++++++++++++++++-------- labapp/app/static/vsite.png | Bin 0 -> 30877 bytes labapp/app/static/vsite2.png | Bin 0 -> 32103 bytes labapp/app/templates/base.html | 1 + 6 files changed, 70 insertions(+), 22 deletions(-) create mode 100644 labapp/app/static/vsite.png create mode 100644 labapp/app/static/vsite2.png diff --git a/labapp/app/app.py b/labapp/app/app.py index 62b3d2b..11730b4 100644 --- a/labapp/app/app.py +++ b/labapp/app/app.py @@ -62,6 +62,7 @@ def cloudapp_fetch(session, url, timeout, prop, value, headers = {}): def headers_cleaner(headers): """ Remove headers that contain specific substrings. + Use this to make responses look nicer. """ unwanted_substrings = ['x-envoy', 'cloudfront', 'x-k8se'] filtered_headers = { @@ -179,7 +180,7 @@ def port(): @app.route('/vnet') def vnet(): - """reference page""" + """vnet page""" ns = eph_ns() html = render_md("markdown/reference.md") return render_template('coming-soon.html', @@ -190,7 +191,7 @@ def vnet(): @app.route('/netpolicy') def netp(): - """reference page""" + """netpolicy page""" ns = eph_ns() html = render_md("markdown/reference.md") return render_template('coming-soon.html', @@ -226,6 +227,7 @@ def ex_test(): """Example test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) url = f"https://foo.{app.config['base_url']}/" data = cloudapp_fetch(s, url, 5, 'info', 'bar') return jsonify(status='success', data=data) @@ -237,6 +239,7 @@ def ex_test2(): """Example test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) url = f"https://bar.{app.config['base_url']}/" data = cloudapp_fetch(s, url, 5, 'info', 'foo') return jsonify(status='success', data=data) @@ -249,6 +252,7 @@ def lb_aws(): """Azure LB test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) ns = eph_ns() if not ns: raise LabException("Ephemeral NS not set") @@ -263,6 +267,7 @@ def lb_azure(): """Azure LB test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) ns = eph_ns() if not ns: raise LabException("Ephemeral NS not set") @@ -277,6 +282,7 @@ def route1(): """First Route Test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) ns = eph_ns() if not ns: raise LabException("Ephemeral NS not set") @@ -298,6 +304,7 @@ def route2(): """First Route Test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) ns = eph_ns() if not ns: raise LabException("Ephemeral NS not set") @@ -321,6 +328,7 @@ def manip1(): """First Manip Test""" try: s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) ns = eph_ns() if not ns: raise LabException("Ephemeral NS not set") @@ -330,6 +338,24 @@ def manip1(): return jsonify(status='success', data=r_data) except (LabException, requests.RequestException, ValueError) as e: return jsonify(status='fail', error=str(e)) + +@app.route('/_manip2') +def manip2(): + """First Manip Test""" + try: + s = requests.Session() + s.headers.update({"User-Agent": "MCN-Lab-Runner/1.0"}) + ns = eph_ns() + if not ns: + raise LabException("Ephemeral NS not set") + base_url = app.config['base_url'] + url = f"https://{ns}.{base_url}/" + + + r_data = cloudapp_fetch(s, url, 5, 'info', {"method": "GET", "path": "/raw"}) + return jsonify(status='success', data=r_data) + except (LabException, requests.RequestException, ValueError) as e: + return jsonify(status='fail', error=str(e)) if __name__ == '__main__': diff --git a/labapp/app/markdown/manipulation.md b/labapp/app/markdown/manipulation.md index 772cfc5..b29b160 100644 --- a/labapp/app/markdown/manipulation.md +++ b/labapp/app/markdown/manipulation.md @@ -162,19 +162,17 @@ Host: eph-ns.mcn-lab.f5demos.com ```
- +
-
+
-Nice 🚀! If you've completed all the exercises so far, you have a good foundation for how App Connect addresses common L7 MCN scenarios. -In subsequent labs, we'll explore security and observabilty concepts that build on MCN functionality. -Head over to the Network Connect exercise. +Finish off App Connect with an exercise on load balancer portability. diff --git a/labapp/app/markdown/portability.md b/labapp/app/markdown/portability.md index 2ffdd1d..8bdfbed 100644 --- a/labapp/app/markdown/portability.md +++ b/labapp/app/markdown/portability.md @@ -7,16 +7,22 @@ -So far we've built an object handling load balancing, routing, and content manipulation across multiple sites. -XC refers to these as "load balancers" but it's really the holistic representation of a service whose components live across a distributed network. -Our object is a simplified representation that does not include WAAP, API Protection, or service policies. -XC is incredibly flexible in defining where that object is advertised. +The configuration built so far handles load balancing, routing, and content manipulation. +XC refers to this object as a "load balancer" -- but it's really the holistic representation of an application whose service endpoints live across the distributed network. +The object is simple -- it doesn't yet include configuration for WAAP, API protection, or a service policy. + +What seperate XC from traditional ADCs is the flexibility of defining where the object is advertised.
### **Exercise 1: Advertise Policy** --- advertise from the Virtual Site +
@@ -27,7 +33,9 @@ GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 Host: eph-ns.mcn-lab.f5demos.com { - "env": "azure", + "info": { + "path": "/" + } ... } ``` @@ -38,17 +46,30 @@ Host: eph-ns.mcn-lab.f5demos.com
+ +
+

+ +

+
+
+ temp + temp +
+
+
+
-### **Exercise 2: Find a Friend (Optional)** +### **Exercise 2: Find a Friend** -Test a friend's site. Look at the headers from the previous exercises. +Do you have a friend working on the lab? +Ask them their ephemeral namespace and test that their load balancer is being advertised from your site. -We need an input button for the friend's LB. I can keep my funny name LB around for this as well.
@@ -59,7 +80,9 @@ GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 Host: eph-ns.mcn-lab.f5demos.com { - "env": "azure", + "info": { + "path": "/" + } ... } ``` @@ -76,7 +99,7 @@ document.getElementById('requestBtn2').addEventListener('click', () => { -Nice 🚀! If you've completed all the exercises so far, you have a good foundation for how App Connect addresses common L7 MCN scenarios. -In subsequent labs, we'll explore security and observabilty concepts that build on MCN functionality. -Head over to the Network Connect exercise. +🚀 Nice 🚀! +
+ diff --git a/labapp/app/static/vsite.png b/labapp/app/static/vsite.png new file mode 100644 index 0000000000000000000000000000000000000000..ae59b43c7d6052866a11705c502914099db43f43 GIT binary patch literal 30877 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 literal 0 HcmV?d00001 diff --git a/labapp/app/static/vsite2.png b/labapp/app/static/vsite2.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb47e31891c22ed6b9666326ea1f421ee6c4b40 GIT binary patch literal 32103 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 z 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 n#6GFX{Cx}mV+oB1e}eIoaCR=b^@r literal 0 HcmV?d00001 diff --git a/labapp/app/templates/base.html b/labapp/app/templates/base.html index 9202154..e0b9a83 100644 --- a/labapp/app/templates/base.html +++ b/labapp/app/templates/base.html @@ -51,6 +51,7 @@

  • Load Balancing
  • Routing
  • Manipulation
  • +
  • Portability