Skip to content

Commit

Permalink
Merge branch 'master' into sap-aem-int-day-3
Browse files Browse the repository at this point in the history
  • Loading branch information
TamimiGitHub authored Jul 16, 2024
2 parents 36c893b + b5c11ee commit 4e56a71
Show file tree
Hide file tree
Showing 433 changed files with 3,233 additions and 205 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/netlify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Checkout Current Commit
uses: actions/checkout@master
with:
ref: ${{ github.head_ref }}
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
path: main

Expand Down
26 changes: 26 additions & 0 deletions codelabs/ep-connect-ep-broker/codelab.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"environment": "web",
"format": "html",
"prefix": "https://storage.googleapis.com",
"mainga": "UA-49880327-14",
"updated": "2024-07-15T11:08:52Z",
"id": "ep-connect-ep-broker",
"duration": 83,
"title": "Connecting Event Portal to a runtime Event Broker",
"summary": "Establishes connectivity between Event Portal, Pub Sub+ Event Broker (the runtime component) and the Event Management Agent. This in turn enables config push",
"source": "main/markdown/ep-connect-ep-broker/ep-connect-ep-broker.md",
"theme": "",
"status": [
"published"
],
"category": [
"solace",
"eventportal"
],
"tags": [
"eventportal",
"web"
],
"feedback": "https://github.com/SolaceDev/solace-dev-codelabs/blob/master/markdown/ep-connect-ep-broker",
"url": "ep-connect-ep-broker"
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
200 changes: 200 additions & 0 deletions codelabs/ep-connect-ep-broker/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@

<!doctype html>

<html>
<head>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<meta name="theme-color" content="#4F7DC9">
<meta charset="UTF-8">
<title>Connecting Event Portal to a runtime Event Broker</title>
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Source+Code+Pro:400|Roboto:400,300,400italic,500,700|Roboto+Mono">
<link rel="stylesheet" href="//fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://storage.googleapis.com/claat-public/codelab-elements.css">
<style>
.success {
color: #1e8e3e;
}
.error {
color: red;
}
</style>
</head>
<body>
<google-codelab-analytics gaid="UA-49880327-14" ga4id=""></google-codelab-analytics>
<google-codelab codelab-gaid=""
codelab-ga4id=""
id="ep-connect-ep-broker"
title="Connecting Event Portal to a runtime Event Broker"
environment="web"
feedback-link="https://github.com/SolaceDev/solace-dev-codelabs/blob/master/markdown/ep-connect-ep-broker">

<google-codelab-step label="What you&#39;ll learn: Overview" duration="5">
<p>Delivering innovative event-driven features to the hands of users means moving micro-integrations from development to production. That means getting the right event infrastructure in the right environment at the right time. The PubSub+ Event Portal makes that easier, faster and more resilient.</p>
<p>This codelab establishes connectivity between Event Portal, PubSub+ Event Broker (the runtime event broker that moves events around) and the Event Management Agent. Once you&#39;ve established that connectivity, the next codelab explores <a href="https://codelabs.solace.dev/codelabs/ep-lifecycle" target="_blank">reusing events you already have, automating event access and auto-generating code for Event Driven applications.</a>.</p>
<aside class="special"><p> If you run into issues, please reach out on the <a href="https://solace.community/" target="_blank">Solace Community site</a>.</p>
</aside>


</google-codelab-step>

<google-codelab-step label="What you need: Prerequisites" duration="7">
<ul>
<li>Postman installed on a local machine, you can <a href="https://www.postman.com/downloads/" target="_blank">download it for free</a>.</li>
<li>Docker installed on a local machine. If you prefer to use Podman, please note that you will need to use different commands later in the lab.</li>
<li>An empty Event Portal account. Don&#39;t have an Event Portal account? <a href="https://console.solace.cloud/login/new-account?product=event-management" target="_blank">Get one for free.</a></li>
</ul>


</google-codelab-step>

<google-codelab-step label="Start a cloud event broker and get connection info" duration="15">
<h2 is-upgraded>Start a cloud event broker</h2>
<ol type="1">
<li>Login to PubSub+ Cloud and click on Cluster Manager <br><br><img alt="Image" src="img/e30b7cbb0cd4f8a3.png"><br><br></li>
<li>Click on Create Service <br><br><img alt="Image" src="img/d4e9cb042ed73a13.png"><br><br></li>
<li>In the Create Service window, name your service <code>aks-centralus-prod</code> and pick the developer service type. Then click on the green Create Service button. <br><br><img alt="Image" src="img/71beac5b37e5a024.png"><br><br></li>
<li>After a few minutes, the deployment of the service completes and you should see something like this. <br><br><img alt="Image" src="img/2065b4e743188980.png"><br><br> That&#39;s all it takes to create a running event broker.</li>
</ol>
<h2 is-upgraded>Get connection info</h2>
<p>To connect your runtime event broker to your design time model in Event Portal you&#39;ll need some information later. It&#39;s easier to get it now.</p>
<ol type="1">
<li>Click on the newly created <code>aks-centralus-prod</code> Service button</li>
<li>Click on the Manage tab (1), then expand the SEMP - REST API section (2) <br><br><img alt="Image" src="img/2de2daf031ffdfe4.png"><br><br></li>
<li>Copy the following values into a text editor URL to the SEMP API (1) Message VPN name (2) Username (3) Password (4) <br><br><img alt="Image" src="img/dd2a4855a8f7d870.png"></li>
</ol>
<aside class="warning"><p> Make sure to only copy the first part of the SEMP URL (shown highlighted in the image)<br> For example <code>https://mr-connection-hu34983498.messaging.solace.cloud:943</code><br></p>
</aside>


</google-codelab-step>

<google-codelab-step label="Use Postman to populate Event Portal Environments and MEMs" duration="10">
<h2 is-upgraded>Get an Event Portal Access Token</h2>
<ol type="1">
<li>Log into your newly created Solace Platform Account</li>
<li>Go to Token Management in Event Portal <br>&lt;<img alt="Image" src="img/ab0797a7e1af34de.png"><br><br></li>
<li>Create a token<br><img alt="Image" src="img/d40fe8d16d4d8a1e.png"><br><br></li>
<li>Name the token <code>Demo Setup</code></li>
<li>Give the token full Read and Write access to:<br> Event Portal 2.0<br> Event Portal<br> Account Management<br> Environments</li>
<li>Click on Create Token <br><br><img alt="Image" src="img/6e2e573afd5eb882.png"><br><br></li>
<li>Confirm that your token has the following permissions:<br><img alt="Image" src="img/2bb759c37467b29d.png"><br><br></li>
<li>Copy the token value and save it in a text file on your desktop.</li>
</ol>
<aside class="special"><p> This token will be used multiple times through the demo, so keep it handy.</p>
</aside>
<h2 is-upgraded>Import scripts into Postman</h2>
<ol type="1">
<li>Launch the desktop Postman application</li>
<li>Download the Postman Collection and Environment files below:<br><a href="https://raw.githubusercontent.com/SolaceLabs/PostmanScripts/main/EventPortalEnvironment.postman_environment.json" target="_blank">Environment file</a><br><a href="https://raw.githubusercontent.com/SolaceLabs/PostmanScripts/main/PopulateEventPortaldemo.postman_collection.json" target="_blank">Script to populate Event Portal</a><br><a href="https://raw.githubusercontent.com/SolaceLabs/PostmanScripts/main/TearDownEventPortal.postman_collection.json" target="_blank">Script to remove all objects from Event Portal</a></li>
<li>Drag the files from your hard drive to the left-hand column of Postman to import<br><img alt="Image" src="img/74eb622af73b83ee.png"><br><br></li>
</ol>
<h2 is-upgraded>Configure Postman with your Event Portal token</h2>
<ol type="1">
<li>Open the environment variables tab (1), select the Event Portal Environment and (2) set it as the active Environment.<br><img alt="Image" src="img/ee17bd7beeb48610.png"><br><br></li>
</ol>
<aside class="warning"><p> Make sure to set the correct active Environment (step 2 above)!</p>
</aside>
<ol type="1">
<li>Fill in the CURRENT VALUE column for api_key with the token you just generated in Event Portal.<br><img alt="Image" src="img/d8a1c70cfa9f8b31.png"><br><br></li>
<li>Save the environment variables.<br><img alt="Image" src="img/d50a135d405cb909.png"><br><br></li>
</ol>
<h2 is-upgraded>Run the Postman script</h2>
<ol type="1">
<li>Switch back to the Collections tab, hit the three dots next to &#34;Generate and populate Event Portal demo&#34;, then click &#34;Run collection&#34;<br><img alt="Image" src="img/b5b70e4539c3292a.png"><br><br></li>
<li>On the next screen, click on Run Generate and populate Event Portal<br><img alt="Image" src="img/2fba6ff189407105.png"><br><br></li>
<li>Wait for the script to complete. Be patient, there are a lot of commands to run!</li>
</ol>
<aside class="warning"><p> If you get this error when running the script, you likely have not set the Event Portal Environment as the active Environment.<br><code>POST http://&#123;&#123;baseurl}}/api/v2/architecture/addressSpaces</code><br><code>Error: getaddrinfo ENOTFOUND &#123;&#123;baseurl}}</code></p>
</aside>


</google-codelab-step>

<google-codelab-step label="Enable runtime configuration for your environments" duration="3">
<ol type="1">
<li>To guide application promotion, Event Portal models all of your runtime environments. To do this, go to the profile icon in the lower left hand side, then click on Environments.<br><img alt="Image" src="img/24128d44be60d9d1.png"><br><br></li>
<li>To allow Event Portal to configure the runtime environment, click on the three dots, then select Enable Runtime Configuration. Do this for both Test and Prod.<br><img alt="Image" src="img/a8155ca3d8ed56e0.png"><br><br></li>
</ol>


</google-codelab-step>

<google-codelab-step label="Update the event management agent to connect to your cloud broker" duration="10">
<aside class="special"><p> If you are using Podman instead of Docker, you&#39;ll need to replace <code>docker</code> with <code>podman</code> in all command line entries.</p>
</aside>
<ol type="1">
<li>Open the Runtime Event Manager (1), then go to the Event Management Agent tab (2). Click on the 3 dots next to your Event Management Agent (the script created one for you). Then click on Edit Connection Details (4).<br><img alt="Image" src="img/6a1e5c2d3dc3f3e.png"><br><br></li>
<li>On the next screen, click on the three dots next to the PROD-solace event broker, then click on &#34;Edit Connection Details&#34;<br><img alt="Image" src="img/fc261df67c816ac5.png"><br><br></li>
<li>Update the Message VPN (1), SEMP username (2) and SEMP URL (3) to point to your cloud broker. You will recall you saved them to a text pad in a previous step. You will use the admin password later. Once properly configured, click on Save Changes (4)<br><img alt="Image" src="img/318a6c4730d78659.png"><br><br></li>
</ol>
<p>Click on the <strong>Save &amp; Create connection file</strong> button as shown : <img alt="16.a.png" src="img/f0ce240df6deffec.png"></p>


</google-codelab-step>

<google-codelab-step label="Run the Event Management Agent" duration="10">
<aside class="special"><p> These instructions are also on the Event Portal once you create the Event Management Agent.</p>
</aside>
<aside class="special"><p> If you are using Podman instead of Docker, you&#39;ll need to replace <code>docker</code> with <code>podman</code> in all command line entries.</p>
</aside>
<aside class="warning"><p> If you are using a Mac with an m chip, you may get the error<br><code>WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested</code><br>You can ignore this warning.</p>
</aside>
<p>Now it&#39;s time to connect the Event Portal model and the runtime broker using the Event Management Agent.</p>
<ol type="1">
<li>From the main Runtime Event Manager tab, click on the three dots and go to Install Event Management Agent<br><img alt="Image" src="img/988e2f385b27d15c.png"><br><br></li>
<li>Click on the download button and save the file to your hard drive. <br><img alt="Image" src="img/db0733ae1b8a522f.png"><br><br></li>
<li>Execute the following commands at the command line:</li>
</ol>
<pre><code>export PASSWORD_ENV_VAR_1=envVarPassword1
export PASSWORD_ENV_VAR_2=envVarPassword2
docker run -d -p 8180:8180 -v /absolute/path/to/your/ema/config.yml:/config/ema.yml \
--env PRODsolace_SOLACE_SEMP_PASSWORD=${PASSWORD_ENV_VAR_1} \
--env TESTsolace_SOLACE_SEMP_PASSWORD=${PASSWORD_ENV_VAR_2} \
--name event-management-agent solace/event-management-agent:latest
</code></pre>
<p>where <code>PASSWORD_ENV_VAR_1</code> is the password for your cloud broker and <code>/absolute/path/to/your/ema/config.yml</code> points to your downloaded EMA configuration.</p>
<ol type="1" start="4">
<li>Confirm the connection by running:<br><code>docker logs -f event-management-agent</code><br></li>
</ol>
<p>The last line should be: <code>Started event-management agent</code><br><img alt="Image" src="img/ac671c39e4af26d3.png"><br><br></p>
<aside class="warning"><p> The following error is caused by giving an incorrect path to the EMA file in the Docker command.<br><code>Failed to instantiate com.solace.maas.ep.event.management.agent.plugin.manager.client.KafkaClientConfigImpl: Constructor threw exception</code></p>
</aside>
<ol type="1" start="5">
<li>Further confirm by going back to the Event Management Agents tab. Look to see your EMA has a green &#34;Connected&#34; label<br><img alt="Image" src="img/4d2c013e2cdf06cd.png"><br><br></li>
</ol>


</google-codelab-step>

<google-codelab-step label="Confirm EMA Connection to Broker using an Audit" duration="5">
<p>Since the EMA is used for both audit and for config push, we will confirm broker connectivity by running an audit.</p>
<ol type="1">
<li>Go to Runtime Event Manager, then click on the <code>us-central-solace-Prod</code> modelled event mesh.<br><img alt="Image" src="img/967b8e81145dd7d3.png"><br><br></li>
<li>Click on Audit, then &#34;Run Discovery Scan&#34;<br><img alt="Image" src="img/52a34201b45f1865.png"><br><br></li>
<li>Confirm you want to run a Discovery Scan<br><img alt="Image" src="img/f4adb3b2e3f1cd20.png"><br><br></li>
<li>If you see this message, you&#39;ve successfully created a connection between the EMA and your event broker.<br><img alt="Image" src="img/79206bc54af0b2d8.png"><br><br></li>
</ol>
<p>You are done!</p>


</google-codelab-step>

<google-codelab-step label="Takeaways" duration="3">
<p>Delivering innovative event-driven features to the hands of users means moving micro-integrations from development to production. That means getting the right event infrastructure in the right environment at the right time. Event Portal makes that easier, faster and more resilient.</p>
<p>Now that you&#39;ve established that connectivity, you can explore how Event Portal <a href="https://codelabs.solace.dev/codelabs/ep-lifecycle" target="_blank">reuses events you already have, automates event access and auto-generates code for Event Driven applications.</a>.</p>
<p class="image-container"><img alt="Soly Image Caption" src="img/44f356558033e250.gif"></p>
<p>Thanks for participating in this codelab! Let us know what you thought in the <a href="https://solace.community/" target="_blank">Solace Community Forum</a>! If you found any issues along the way we&#39;d appreciate it if you&#39;d raise them by clicking the Report a mistake button at the bottom left of this codelab.</p>


</google-codelab-step>

</google-codelab>

<script src="https://storage.googleapis.com/claat-public/native-shim.js"></script>
<script src="https://storage.googleapis.com/claat-public/custom-elements.min.js"></script>
<script src="https://storage.googleapis.com/claat-public/prettify.js"></script>
<script src="https://storage.googleapis.com/claat-public/codelab-elements.js"></script>
<script src="//support.google.com/inapp/api.js"></script>

</body>
</html>
26 changes: 26 additions & 0 deletions codelabs/ep-lifecycle/codelab.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"environment": "web",
"format": "html",
"prefix": "https://storage.googleapis.com",
"mainga": "UA-49880327-14",
"updated": "2024-07-15T11:13:36Z",
"id": "ep-lifecycle",
"duration": 71,
"title": "Event Portal: event-driven innovation that's faster, easier, more resilient",
"summary": "See how Event Portal can guide you on a smooth path from fantastic idea to the hands of your users",
"source": "main/markdown/ep-lifecycle/ep-lifecycle.md",
"theme": "",
"status": [
"published"
],
"category": [
"solace",
"eventportal"
],
"tags": [
"eventportal",
"web"
],
"feedback": "https://github.com/SolaceDev/solace-dev-codelabs/blob/master/markdown/ep-lifecycle",
"url": "ep-lifecycle"
}
Binary file added codelabs/ep-lifecycle/img/102b52ace447c71a.png
Binary file added codelabs/ep-lifecycle/img/125cf0adc0cc19ff.png
Binary file added codelabs/ep-lifecycle/img/1957279cbbe4b7a6.png
Binary file added codelabs/ep-lifecycle/img/1e318c0daed7f9ac.png
Binary file added codelabs/ep-lifecycle/img/2e47349569e9e01a.png
Binary file added codelabs/ep-lifecycle/img/2e66b21246e885f4.png
Binary file added codelabs/ep-lifecycle/img/3663fe923281af2e.png
Binary file added codelabs/ep-lifecycle/img/3cd61532045d8f80.png
Binary file added codelabs/ep-lifecycle/img/40d226b48da3c9fc.png
Binary file added codelabs/ep-lifecycle/img/44f356558033e250.gif
Binary file added codelabs/ep-lifecycle/img/45845665c652df8b.png
Binary file added codelabs/ep-lifecycle/img/4803dd349d035167.png
Binary file added codelabs/ep-lifecycle/img/55d14220f35a54fc.png
Binary file added codelabs/ep-lifecycle/img/59cd71233a8d1e3b.png
Binary file added codelabs/ep-lifecycle/img/62fca0935cdf69d7.png
Binary file added codelabs/ep-lifecycle/img/6758deaa5e458a7c.png
Binary file added codelabs/ep-lifecycle/img/6a5d14e6e1059385.png
Binary file added codelabs/ep-lifecycle/img/6cc75765efa9c122.png
Binary file added codelabs/ep-lifecycle/img/6d9bc4480858f78a.png
Binary file added codelabs/ep-lifecycle/img/72752449d31f6e23.png
Binary file added codelabs/ep-lifecycle/img/77ea68c336e1f4ca.png
Binary file added codelabs/ep-lifecycle/img/788e417964665cba.png
Binary file added codelabs/ep-lifecycle/img/78d3721cf1042ad6.png
Binary file added codelabs/ep-lifecycle/img/7b5c691d210d1902.png
Binary file added codelabs/ep-lifecycle/img/7ba297766a146259.png
Binary file added codelabs/ep-lifecycle/img/7c43288445fdd720.png
Binary file added codelabs/ep-lifecycle/img/7dbde4c236f5e050.png
Binary file added codelabs/ep-lifecycle/img/81400a01072c8c1e.png
Binary file added codelabs/ep-lifecycle/img/834967177754e04c.png
Binary file added codelabs/ep-lifecycle/img/84e519bc8f391e2.png
Binary file added codelabs/ep-lifecycle/img/8b6fff5cc1162a08.png
Binary file added codelabs/ep-lifecycle/img/8e49785f6ff483f0.png
Binary file added codelabs/ep-lifecycle/img/8ef3b966a07f490e.png
Binary file added codelabs/ep-lifecycle/img/90b4d605d8af0802.png
Binary file added codelabs/ep-lifecycle/img/9253a58dc34a70db.png
Binary file added codelabs/ep-lifecycle/img/93de13a57e3dfa49.png
Binary file added codelabs/ep-lifecycle/img/9abc3041cad5cec8.png
Binary file added codelabs/ep-lifecycle/img/9d0e79a073179cb.png
Binary file added codelabs/ep-lifecycle/img/a37a27ca0d1395fa.png
Binary file added codelabs/ep-lifecycle/img/a47a45c90ec29441.png
Binary file added codelabs/ep-lifecycle/img/a730bde567da17aa.png
Binary file added codelabs/ep-lifecycle/img/ac81d0a15233f367.png
Binary file added codelabs/ep-lifecycle/img/b05c2a11bd7ff6d7.png
Binary file added codelabs/ep-lifecycle/img/b36f4136605e5aff.png
Binary file added codelabs/ep-lifecycle/img/b4e02fca4e3213a5.png
Binary file added codelabs/ep-lifecycle/img/b5f64b5a5c8ec2b8.png
Binary file added codelabs/ep-lifecycle/img/b7a472d3ead7d064.png
Binary file added codelabs/ep-lifecycle/img/b99a319bc01c88d2.png
Binary file added codelabs/ep-lifecycle/img/babddc5fef3b6600.png
Binary file added codelabs/ep-lifecycle/img/c5e164e0967289ae.png
Binary file added codelabs/ep-lifecycle/img/c6602818e35f2f98.png
Binary file added codelabs/ep-lifecycle/img/c72b5c990c5c1a09.png
Binary file added codelabs/ep-lifecycle/img/d11457e94cb10feb.png
Binary file added codelabs/ep-lifecycle/img/d660b25ba821037.png
Binary file added codelabs/ep-lifecycle/img/d7ef471b9fd0a054.png
Binary file added codelabs/ep-lifecycle/img/d99b0caa38a9d74.png
Binary file added codelabs/ep-lifecycle/img/ddcea2555636e59a.png
Binary file added codelabs/ep-lifecycle/img/de68f31ebe50ebdb.png
Binary file added codelabs/ep-lifecycle/img/e1006862542e84ec.png
Binary file added codelabs/ep-lifecycle/img/e5b5d6710fbf8d8f.png
Binary file added codelabs/ep-lifecycle/img/e90b36a4225f8f60.png
Binary file added codelabs/ep-lifecycle/img/e9dcd70ee5db90ce.png
Binary file added codelabs/ep-lifecycle/img/ee476ad18f9a8639.png
Binary file added codelabs/ep-lifecycle/img/f2918fbe04d96cb8.png
Binary file added codelabs/ep-lifecycle/img/f6350c4e9b2be11c.png
Binary file added codelabs/ep-lifecycle/img/f89539c6296a49f0.png
Binary file added codelabs/ep-lifecycle/img/ffd44ada7f57a5f9.png
Loading

0 comments on commit 4e56a71

Please sign in to comment.