IEL Drone Lab 2: Introduction

☆ For this lab, a lab user name and Secure Gateway number was created for you. This name was set to YourLabName and this number was set to unassigned. This information will be addressed and referenced later in the lab.

Welcome back! This lab is the second in a series of labs designed to demonstrate how several IBM technologies, such as OpenShift (Kubernetes), Hybrid Multicloud, and some of the key capabilities available with Cloud Pak for Integration (Secure Gateway, API Connect, App Connect) can be utilized along with modern industry devices, such as drones and sensors, in various industry-specific applications.

In the previous lab, you deployed a customized, containerized application onto OpenShift. If you have not completed the previous lab, please return to the Technology Zone (https://techzone.ibm.com/collection/dronelab1) and request access to Remote Drone Console Application Hands-on Lab #1.

If it has been a significant amount of time since you have completed, it is recommended that you review the guide for Drone Lab 1, located here: https://ielgov.github.io/dronelab1. Additionally, feel free to use the Drone Lab 1 guide anytime for your reference.

Please confirm below that you have completed the previous lab and are ready to start this lab.

I have completed Drone Lab 1 and am ready to begin this lab, Drone Lab 2.

The diagram on the right depicts a high-level flow and services used in this lab.

Table of Contents

Before you begin
1. Enable access to a service with Secure Gateway
2. Use API Connect to manage and expose a service’s APIs
3. Connect to another service with App Connect
4. Explore Remote Operations Console with new flows
Summary & Contacts

View full size diagram

Lab Overview

The purpose of this lab is to enable connection from the Remote Operations Console you customized and deployed in Lab 1, to an on-prem private cloud service – provided by a fictional company, "GSC Drones-To-Go". This service was created to allow a user to interact with drones located at the IEL (Industry Engineering Lab) in Coppell, TX. In order for this connection to be enabled securely and deliver the necessary functionality, you will need to setup a few IBM Cloud service configurations.

Use Secure Gateway to allow access to the drone controller service, which is located on a private back-end OCP (OpenShift Container Platform) cluster at the Industry Engineering Lab in Coppell, TX. In this lab, we’ll refer to this private drone service as “GSC Drones-To-Go”. Use API Connect to expose APIs (for example, getLatLng, or, show me the latitude and longitude coordinates of the drone) so that you are able to communicate with the GSC Drones-To-Go service securely and efficiently. Use App Connect to connect to another service
Something to consider: How is your Remote Operations Console, a public Cloud Application, able to connect to a “private cloud” resource, like a drone controller/viewer service?

Lab Environment Setup

When you made a request to take this hands-on lab, there were some background tasks that were performed on your behalf in order to prepare the lab environment, which are described below. Don't worry if you have some questions about these concepts... you will get a lot more explanation and hands-on experience as you move through lab steps.

Created Two Lab Environment Flows
As depicted above, a Production Flow was created to support new functionality that illustrates Hybrid Cloud integration between the Remote Drone Console application and the IEL private Cloud. An additional Lab Flow was created to facilitate the hands-on activities with IBM’s most common integration services in a Hybrid Multicloud context, which each user will encounter in Lab Steps 1-3.

Created Drone Controller services in IEL Private Cloud
The drone controller application is an integral part of this lab – it interacts with physical and virtual resources at the IEL (Industry Engineering Lab in Coppell, TX) and its private cloud, along with providing API endpoints that can orchestrate the appropriate functionality. This application, along with a drone activity database, was deployed within the IEL private cloud OpenShift Cloud Platform (OCP), which is used for the lab’s Production Flow.

Provisioned a second OCP cluster in the IBM Cloud environment
The initial IBM Cloud organization OCP cluster where the Remote Drone Console application was deployed from Lab 1 acts as the public cloud, while a new OCP cluster that will be in focus during this lab in Steps 1-3 acts as a simulated private cloud. Even though this additional cluster is still in the IBM Cloud environment, it was created to enable each lab taker to have visibility into the application artifacts and configurations that were deployed so that they can perform hands-on activities.

Provisioned Cloud services*
Several IBM Cloud services were prepared and provisioned for lab users within the IBM Cloud organization, including Secure Gateway, API Connect, App Connect, and IBM Cloudant.

Deployed a Secure Gateway Client in both target Environments
To achieve the necessary Secure Gateway service configuration, a Secure Gateway Client was deployed within a project in the second IBM Cloud cluster to facilitate hands-on exploration that will be used in Lab Steps 1-3. In addition, a Secure Gateway Client was also deployed within the IEL private cloud environment to enable the IBM Cloud Remote Drone Console application functionality that will be leveraged as part of the lab’s Production Flow. In each case, preliminary configuration was performed to establish connection between the Secure Gateway Client in each Flow’s environment and the Secure Gateway Service running at the IBM Cloud organization level.

Deployed a project and artifacts for each lab user in the IBM Cloud
A project with a simplified Drone Controller application and a stubbed version of the drone database was deployed for each lab user within the second IBM Cloud OCP cluster. In addition, YAML files were provided to allow each user to walk through the setup of API Connect and App Connect services.

💡 * Why didn’t I see Cloud Pak for Integration in these lab steps? [Click to Read More]

IBM Cloud Pak for Integration would be the obvious choice to implement the functionality discussed in this lab in a production environment, where drone resources/data that the operators of the Remote Drone Console need to access resides across Hybrid Multi cloud environments— both public and private. That said, for the purposes of this lab, we chose the on-demand IBM cloud services for the following reasons:

1. To avoid upfront capital expenses and to have predictable ongoing operating expenses.
2. To avoid the additional administrative interfaces in Cloud Pak for Integration that would have been introduced before getting to the integration services that were of specific focus for this lab.
3. To more easily manage the pricing plan and user administration for the specific required resources (Secure Gateway, API Connect, App Connect, Cloudant, etc.) that were available through IBM public cloud services in a context that the users were already familiar with.

In short, using the IBM Public cloud services gave us the ability to provision and administer resources on-demand and only pay for what was needed, while still allowing the lab user to learn about three of Cloud Pak for Integration's powerful capabilities.

Move on to the Preliminary Steps →

Preliminary Steps

You will open several tabs throughout the course of this lab. To avoid confusion, it is recommended that this instruction site is viewed via a browser window with no other tabs open before you begin.

It is strongly recommended you use Google Chrome or Mozilla Firefox as your browser for this lab. Browsers such as Safari have been known to encounter errors with some of the IBM Cloud services.

The screenshots shown in this lab were recorded in a full screen width/height browser. Some IBM Cloud services perform best in full screen resolution.

To avoid issues as you navigate through the lab steps, it is ideal to use the buttons and tabs within the instructions (as opposed to using your browser's "back" and "forward" options).

After you requested this lab, you should have received an email containing the link to this instructions page.

Note: If you start this lab without completing Drone Lab 1 first, or without being assigned a lab name or Secure Gateway number, you will encounter errors and be unable to complete this lab successfully.

The instructions here will guide you through the lab step by step.

This instructions page that you have been provided should contain your lab name and your assigned Secure Gateway number.

Your Lab Name: YourLabName

Your Secure Gateway number: unassigned


Referencing the above, if your Lab Name is "YourLabName" and/or your Secure Gateway number is "unassigned", please use the email link located in the top right corner of this page and send an email to gscgov@us.ibm.com with the subject "I was not assigned a lab name/Secure Gateway number for Drone Lab 2."
Step 1 Next

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal

Ready? Move on to Step 1 and start the lab →

1. Enable access to a service with Secure Gateway

In this step, the first few instructions may seem familiar – you should be comfortable with navigating to and within an OpenShift web console in the IBM organization cluster based on your completion of the first Drone lab. As a reminder, you can always reference the first lab’s instructions guide here https://ielgov.github.io/dronelab1. In this lab, you will focus on a different cluster: one that emulates a real-life organization that has its own private service.

The purpose of this setup was to demonstrate the technology and value behind connecting various applications and services between different clusters, even if they are public or private. In a typical case, an application may want to access services that are located in a private cloud. With the inherit nature of private cloud, it may seem problematic to introduce communication with any public cloud application.

Let’s take a moment to review some concepts you will be delving into in the next few steps. Consider two parties involved:

1. the Operators that use the Remote Drone Operations Console application, and,

2. an organization, “GSC Drones-To-Go”, which has private on-prem resource in Coppell, TX that allows piloting and observing of local drones.


View full size diagram

GSC Drones-To-Go wants users like the Operators to access their drone service, wants to easily manage their access, and wants to make sure this connection is done securely so they aren’t compromised in any way.

The Operators, owners and users of the Remote Drone Operations Console, want to connect the service that GSC Drones-To-Go provides.

You will explore how IBM® Secure Gateway can help enable the connection between the Public Safety Situational Awareness Operator users in one cloud environment and the GSC Drones-To-Go services that are  running in another cloud environment. By deploying the lightweight and natively installed Secure Gateway Client, a secure, persistent connection can be established between your environment and the cloud. You can imagine the Secure Gateway Client is like an on-prem bouncer, checking who wants access based on their list.

Secure Gateway allows the safe connection of applications and resources regardless of their location. This is important - rather than bridging your environments at the network level like a traditional VPN, Secure Gateway provides granular resource control operating with the principle of least privilege as its core tenet.

In this step of the lab, you learn about how to use Secure Gateway to bridge connection between the Remote Drone Operations Console and the on-prem resource at GSC Drones-To-Go. In later steps, you will continue to get more access to the IEL Drone-To-Go service, including accessing APIs and even invoking related flows.

Reference:

Instruction/Step
Indicated as text with light blue background.

Example:
Scroll down after you make your changes
Reminder
It's important to read each step carefully and in order.

Skipping sections, reading too fast, or not clicking to read
💡 More Information lightbulb blocks

may result in incomplete learning.


Technologies Used


Your Tasks for Step 1

✅ Access IBM Cloud
✅ Access RedHat OpenShift cluster
✅ Open RedHat OpenShift web console
✅ Setting up the Access Control List (ACL)
✅ Adding a Secure Gateway destination


Step 1 In Progress

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal

1.1 Access IBM Cloud

1.1.1

Just like in the first lab, you’ll need to access RedHat OpenShift through the IBM Cloud in order to build and deploy your application. Begin by signing into IBM Cloud. ( New Tab ⇒ https://cloud.ibm.com ) (Single Sign-On Required with w3id)

Once you’ve logged in, you should be greeted with a dashboard that displays the various resources that IBM Cloud has to offer. From Cognitive APIs to DevOps to Classic Infrastructure resources, IBM Cloud has many offerings to explore.

At the top of the dashboard, you’ll see a navigation bar. On the right side of the navigation bar, there is a dropdown for various accounts you may be a part of. Most likely, the default is the last account you opened, if not the only one available.

For this lab, you’ll be working in the 1500867 – IBM account.

Click on the 1500867 – IBM account in the IBM Cloud’s navigation bar dropdown.

1.2 Access RedHat OpenShift cluster

1.2.1

Once you click on 1500867 - IBM, your dashboard will update with Resources that are specific to it. You should see a Resource summary card that currently contains a Resource: Clusters.

Click on View all in the Resource summary card.
1.2.2

You may recall that in Drone Lab 1, you accessed the mycluster-dal12-b3c.4x16 cluster, using it to deploy your remote drone operations console onto the public cloud. For the purposes of this lab, this mycluster-dal12-b3c.4x16 cluster will be referred to as “Cluster A”.

For most of this lab, you will be working with the droneLabs cluster, which may sometimes be referred to as “Cluster B” or “Lab 2 Cluster” throughout these instructions.

You will notice that there are several other resources located in this list. Grouped in the Cloud Foundry services, you will see resources like DroneLab_Secure Gateway-jv, DroneLab_API Connect-52, and DroneLab_App Connect-68. These will be utilized in later steps throughout this lab.

Click on Clusters grouping, and then the droneLabs cluster.


Cluster B will be used in this lab to demonstrate how services and applications located in a public cloud can communicate with services and applications in a private cloud. For this lab, imagine that Cluster B is private, and you want your application to have the ability to communicate with services located in this separate Cluster B. You will see in later steps why this is, based on the services located in this cluster.

💡 What is the difference between public and private cloud? [Click to Read More]

The definitions of public and private cloud are constantly evolving. It used to be defined by location and ownership, but keep in mind that as technologies become more complex, the definitions need to match. Below are some loose definitions to help with understanding the differences between them.

Public cloud - created from resources not owned by the end user that can be redistributed to other tenants.
Private cloud - solely dedicated to the end user, usually within the user’s firewall and sometimes on premise.

1.3 Open RedHat OpenShift web console

1.3.1

Let’s examine this cluster’s (droneLabs) overview of the resource.

You will remember from Drone Lab 1 that on the left side is the additional settings menu. In the middle is the summary card for the cluster. On the right side, you’ll see worker nodes/cluster insights. It includes diagnostics and status information about the cluster. All of this provides a summary of the OpenShift instance before you jump in and work directly inside of it.



Click on the OpenShift web console button in the top right to access the console.

When you click this button, you may be prompted with an alert saying you need to enable pop-ups. If you get that prompt, enable pop-ups for this site click the OpenShift web console button a second time and wait for the new page to open.

⚠️ How do I enable pop-ups? [Click to Troubleshoot]
Generally speaking, in the address bar, you may see an alert saying, "Pop-up blocked". Click the link for the pop-up you want to see. To always see pop-ups for the site, select Always allow pop-ups and then Done.

Windows Operating System
Firefox:
https://support.mozilla.org/en-US/kb/pop-blocker-settings-exceptions-troubleshooting

Google Chrome:
https://support.google.com/chrome/answer/95472?co=GENIE.Platform%3DDesktop&hl=en


Mac Operating System
Safari:
https://www.technipages.com/safari-popup-blocker

Firefox:
https://support.mozilla.org/en-US/kb/pop-blocker-settings-exceptions-troubleshooting

Google Chrome:
https://support.google.com/chrome/answer/95472?co=GENIE.Platform%3DDesktop&hl=en

It may take several seconds for this new tab to load completely. The reason for this is that you have moved into a RedHat OpenShift instance. Here you can see which projects and applications are deployed on your cluster.

Before we get too far, let’s make sure you are in the Developer Perspective for the Project space allocated for this lab:

1) Set your perspective in the left menu by clicking the dropdown and selecting </> Developer (instead of Administrator).

2) Click the dropdown where it says Project (at the top) and make sure "YourLabName-2020-lab-2" is selected.

3) Click Topology on the left menu.
⚠️ My page looks different! / I see an error on the page below! [Click to Troubleshoot]


If you see "Restricted Access: You don’t have access to this section due to cluster policy" along with the error details, "deploymentconfigs.apps.openshift.io is forbidden: User “IAM#...” cannot list resource “deploymentconfigs” in API group “apps.openshift.io" in the namespace “default”, make sure to select the developer perspective and that you are in the correct project. Your project should be "YourLabName-2020-lab-2".

If you do NOT see a page similar to the one below, email a screenshot of your page to gscgov@us.ibm.com (link in the top right corner) along with the message, "My Topology view in OpenShift doesn't match the screenshot in Step 1.3.1."



You should see the drone-controller node already located in the topology. As mentioned earlier, imagine this cluster you’re currently in, Cluster B, is GSC-To-Go’s private cluster, where their own applications and services are located. Your Remote Drone Operations Console application, on the totally separate and public Cluster A, wants to communicate and use these services, but the organization wants to make sure this is done properly and securely.

You will recall that your Remote Drone Operations Console had a component to “Connect” to some available drones.  In the next several steps, you will learn how this connection can be enabled, starting with the use of Secure Gateway.

1.4 Setting up the Access Control List (ACL)

1.4.1

In the introduction of this step, you read an analogy made regarding the Secure Gateway Client, acting as an on-prem bouncer, checking who wants access based on their list. This list is significant – it’s referred to as the Access Control List (ACL). You can allow or restrict (deny) access to on-premises resources by making modifications to the ACL. This can be done interactively using the client commands or specifying a file that contains the ACLs you want to have in affect.

ACL enables the Secure Gateway client to access the identified resource (hostname or IP address) in the environment and allows the request from Secure Gateway server. In order to identify the lab drone controller's information, click on the big center icon for the drone-controller node, opening the right side menu.

💡 What exactly is an ACL? [Click to Read More]

The Access Control List (ACL) is a not a term specific to IBM Secure Gateway. In fact, in networking, an ACL is one of the most fundamental components of security.

An Access Control Lists “ACL” is a function that watches incoming and outgoing traffic and compares it with a set of defined statements. Access Control Lists “ACLs” are network traffic filters that can control incoming or outgoing traffic. ACLs work on a set of rules that define how to forward or block a packet at the router’s interface. An ACL is the same as a Stateless Firewall, which only restricts, blocks, or allows the packets that are flowing from source to destination.

When you define an ACL on a routing device for a specific interface, all the traffic flowing through will be compared with the ACL statement which will either block it or allow it. The criteria for defining the ACL rules could be the source, the destination, a specific protocol, or more information. ACLs are common in routers or firewalls, but they can also configure them in any device that runs in the network, from hosts, network devices, servers, etc.

Read more about ACLs here: https://www.ittsystems.com/access-control-list-acl

Click on the big center icon for the drone-controller node (as indicated in the screenshot below) to open the right side menu.


This right side menu lists all the details for the drone-controller node. You will notice that the pod is running, builds, services, and routes. For now, let’s take a look at the service resource,  where you can get the drone-controller's route name (hostname) and port#, which has the S icon before it.

Click on the drone-controller service, located under Services.
1.4.2

Clicking on the drone-controller services opens a full page view, complete with all of its related service details. Take note of the Service Routing on the right side – you will see the Cluster IP address location, along with Service Port Mapping (8080). To make it easier for lab administration, for the next steps you will use the namespace instead of the Cluster IP address. It should be noted that both will work and enable access accordingly.

💡 What is a namespace? [Click to Read More]

A Kubernetes namespace provides a mechanism to scope resources in a cluster. In OpenShift, a project is a Kubernetes namespace with additional annotations.

Namespaces provide a unique scope for:
- Named resources to avoid basic naming collisions.
- Delegated management authority to trusted users.
- The ability to limit community resource consumption.

Most objects in the system are scoped by namespace, but some are excepted and have no namespace, including nodes and users. Read more about namespaces here: https://docs.openshift.com/enterprise/3.0/architecture/core_concepts/projects_and_users.html#namespaces.

Under Service Overview, notice the Labels section. One label starts with “route-name=”. The route-name is what you will use for the Access Control List. For your convenience, your route name was generated below for easy access.

Your route name

Copy to clipboard

Copy the route-name label under Labels in Service Overview (copy text after route-name=)
OR click on the “Copy to clipboard” button above.
Do NOT paste it anywhere just yet!

What you copied here will be used more than once in this lab. It will be provided to you again in later steps.

1.4.3

When you were provisioned this lab, you were placed in a project group based on the availability of connected secure gateway client connections and destinations at the time based on the associated pricing plan options. our assigned Secure Gateway group number was provided as part of you customized instructions link, which you can view below.

Your Secure Gateway Client group is unassigned


This Secure Gateway number will be provided again when it is used later.


1.4.4


The Secure Gateway Client group number you were assigned is important in navigation to the next project will access. Let’s go to it now by leaving the Service Details page and heading back to the Topology view.

Click on Topology on the left side menu to leave Service Details.


Click on the Project dropdown to select the project where your Secure Gateway Client resides. Keep in mind that this will be different for various lab users depending on the group number you were assigned to in Step 1.4.3. In this example, the instructions lab user was assigned to group #1, so the project they chose was secure-gateway-client1. It is critical that you select the secure-gateway-client project that contains the group # you were assigned – otherwise, you will encounter errors. As a reminder, your Secure Gateway number is ___. (If it says you are unassigned, please send an email to gscgov@us.ibm.com, which you can click in the top right, along with the message, “I do not have a Secure Gateway number assigned”.

Click on the Project dropdown and select the secure-gateway-clientunassigned.

Make sure you are in the Topology view. Once you’ve selected your matching project, you’ll notice that a node has already been deployed within this Secure Gateway Client project. Once you click on the node’s Open URL button, located in the top right of it, it will open the route endpoint which contains a friendly user interface for updating the ACL.

Click on the Open URL icon (top right corner of the node, see screenshot as reference) to open the endpoint.




1.4.5

What you’ve opened in the previous sub-step was the Secure Gateway Client – the bouncer, so to speak. It contains the ability to View Logs, see Connection Info, and most importantly, have a designated Access Control List. Let’s take a look at this list and add the address you copied in Step 1.4.2.

Click on Access Control List.




💡 What is the top right icon that says "Enabled" mean? [Click to Read More]

You may have wondered how the Secure Gateway Client was installed into this project, and furthermore you probably noticed that the Secure Gateway Client already has a connection established.  These preliminary steps were already done on our behalf as part of your lab user setup – if you are interested in seeing how it was done, watch the short video below.

If you're unable to watch the video above, please go to https://ibm.box.com/s/ojaxqs4f7raue41z2uys7m55nlomd9zh.

The service at the organization level generates a gateway ID and security token, which the Secure Gateway Client adds to establish a connection from the service to the cloud or cluster where the client is running.

For your reference, the Secure Gateway Client was installed on the cluster as a docker container (or on-prem via Linux or Windows installers).

What you’ve opened in the previous sub-step was the Secure Gateway Client – the bouncer, so to speak. It contains the ability to View Logs, see Connection Info, and most importantly, have a designated Access Control List. Let’s take a look at this list and add the address you copied in Step 1.4.2.

Your route name

Copy to clipboard

8080 is the port.

Paste your route-name address from Step 1.4.2 into the “Resource Hostname” field under Allow access. Type 8080 into the “Port” field. Then click on the Plus (+) button to add it.

Congratulations! You added your drone-controller route name address to a list of allowed hostnames, which is managed by the Secure Gateway Client. In the next step, you will finally add a destination, which will define how to connect to the resource.

💡 What is the benefit of using an ACL? [Click to Read More]

The main idea of using an ACL is to provide security to your network. Without it, any traffic is either allowed to enter or exit, making it more vulnerable to unwanted and dangerous traffic. To improve security with an ACL you can, for example, deny specific routing updates or provide traffic flow control.

For example, you could have a routing device that has an ACL which is denying access to host A into the one network, and at the same time, it is allowing access to host B in another network, even if there are other hosts in both networks. With an ACL you can filter packets for a single or group of IP addresses or different protocols, such as TCP or UDP. By being picky and controlling access to a very granular level, you can ensure the security of your operations.

Read more about ACL benefits here: https://www.ittsystems.com/access-control-list-acl

1.5 Adding a Secure Gateway destination

1.5.1

Within a Secure Gateway, a destination is a definition of how to connect to a specific on-premises or cloud resource. Once the destination has been created, the Secure Gateway servers will provide it with a unique public endpoint where it will listen for connections while the gateway is connected.

Let’s get started by navigating away from the Access Control List in Step 1.4. You will want to open a new tab and go to the list of Resources within the 1500867 - IBM account. By expanding the Cloud Foundry Services section, you will find the Secure Gateway instance (DroneLab_Secure Gateway-jv) that already exists.

In a new tab, open https://cloud.ibm.com/resources. Then expand the Cloud Foundry Services section. Click on DroneLab_Secure Gateway-jv.

You should see the Secure Gateway Dashboard, which displays the total inbound and outbound traffic along with the option to select gateways that were premade. Based on the group number you were assigned in Step 1.4.3; you will want to select the corresponding gateway that matches your group number.

💡 How were these pre-made gateways created? [Click to Read More]
Previously in Step 1.4.5, recall the video under the question "What is the top right icon that says "Enabled" mean?". That video detailed the step-by-step flow that was necessary for the lab steps to be completed- it must be installed and connected prior to a lab user starting this lab.

Click on Lab2Gatewayunassigned

Once you have selected and accessed your assigned gateway, you will be able to add your destination. This destination is a reference to the address you added to the Access Control List in the previous step. From within your assigned gateway and on the Destinations tab, the Add Destination button will open the Add Destination panel.

For your information, there are two methods for creating your destination: a guided setup that shows how each piece fits into the overall architecture and an advanced setup that provides all fields and options on a single panel. It should be noted that the guided setup does not allow for the configuration of proxy information, server name indicators, reject unauthorized or the upload of a destination-specific cert/key pair. After creation, all fields are available via the Edit Destination panel. This will be addressed in the later sub-steps.

Click on the Plus (+) button to add a destination within your assigned gateway.
1.5.2

To make it simpler for you, the following series of steps will require the details below:

Note: Some of the dropdowns may be difficult to read, especially if you are not in a full screen view.

To view the steps visually, click through the carousel of images below.

Add Destination:
Where is your resource located? On-Premises (click Next)
What is the host and port of your destination? drone-controller.YourLabName-2020-lab-2.svc.cluster.local, 8080 (click Next)
What protocol will the User/Application use to connect to your destination? HTTPS: Server Side (click Next)
What kind of authentication does your destination enforce? Destination-side(click Next)
If you would like to make your destination private, add IP table rules below: (Change nothing and click Next)
What would you like to name this destination? YourLabName-destination (Do NOT click next)
*** Click on Advanced Setup tab at the top. ***
Resource Authentication: TLS
On-Premises Authentication: Uncheck Reject unauthorized
Then click Add destination.

You should now notice your new destination being displayed in your assigned gateway. Read below about some of the details regarding this destination setup you just completed.

IBM Secure Gateway - Destinations Explained:

Secure Gateway enables the communication between client and destination environment. The destination configuration within Secure Gateway helps to identify the resource in the destination environment and defines the communication protocol between the client resource and the destination resource.
Destinations defined within the Secure Gateway can use HTTP/HTTPS, unencrypted TCP, Transport Layer Security (TLS) server-side, and TLS Mutual Auth. TLS Mutual authentication is an obvious choice for any connections that handle sensitive data transfers, as each side can be sure there is no HTTPS proxy (spyware, or hacker) inspecting the traffic between the server and the client.

To simplify for the purposes of this hands-on drone lab, a containerized drone controller (destination) was deployed within a Red Hat OpenShift cluster (private cloud) and configured to listen to TCP connections without requiring authentication.

To facilitate a secure connection, the Secure Gateway will enable communication with the Remote Drone Operations Console application running in another Red Hat OpenShift cluster (public cloud) using the HTTPS:server-side option. By contrast, if HTTP option had been used, it would not guarantee a secure connection.
Furthermore, by using the TLS authentication option between the Secure Gateway and the destination, browser cross-checking measures can be enabled. Since our drone controller was configured without an authentication mechanism, it is appropriate to deselect the option to "Reject unauthorized".

For reference, the options below provide a brief explanation of the available protocol options for how your application can initiate connections/requests with Secure Gateway.

TCP
No authentication. Your application can communicate directly with the Secure Gateway servers without requiring any certificates.

HTTP
TCP connection where the host header is rewritten to match the on-premises hostname.

No TLS
No authentication is provided. Your application can communicate directly to the gateway without requiring any certificates.

TLS: Server Side
TLS is enabled and the server provides a certificate to prove its authority. You need to accept the server certificate into your application trust-store.

TLS: Mutual Auth
The server provides a set of certificates. However, you also need to upload your own certificate or select auto-generate to automatically create a self-signed certificate/key pair that you can download along with the server certificate.

HTTPS Server-side
TLS: Server Side connection where the host header is rewritten to match the on-premises hostname.

HTTPS: Mutual Auth
TLS: Mutual Auth connection where the host header is rewritten to match the on-premises hostname.

Click on the small gear icon on your new destination.

In this Details pop-up, you’ll notice there are two URLs, one for the Cloud Host : Port and one for the Resource Host:Port. The Cloud Host : Port has a URL that will allow you to get access to the information that is private in the GSC-Drones-To-Go service!

Copy the Cloud Host : Port URL and paste it below. (Use the clipboard icon in the pop-up)

Do NOT move on until you have pasted and clicked submit on the Cloud Host : Port above and completed its subsequent steps!

Finish Step 1

You completed Step 1! 🎉

You have successfully setup Secure Gateway to allow connectivity to the GSC Drones-To-Go controller application running in Cluster B within the simulated private cloud.  This exemplifies the process that was used to connect the Remote Drone Operations Console to the on-prem GSC Drones-To-Go resources.

Step 1 Completed

✅ Access IBM Cloud
✅ Access RedHat OpenShift cluster
✅ Open RedHat OpenShift web console
✅ Setting up the Access Control List (ACL)
✅ Adding a Secure Gateway destination

In the next steps, you will continue to get more access to the IEL Drone-To-Go service. In Step 2, this access includes getting to work with the service’s APIs and learning more about them.

Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Next

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal
Ready? Move on to Step 2 →

Step 2: Use API Connect to manage and expose a service’s APIs

In the previous step, you enabled access to a private resource using Secure Gateway. Of course, connecting to a service involves much more than just enabling access. There are many actions you may want to perform in order to interact with the service as well – these actions and events must be understood by the service and your application.

Think about a time you clicked “Checkout and Pay” on an online store or hit “Confirm Appointment” on a clinic’s website. It happens so quickly and seamlessly, and with just a few taps and clicks, disparate services are able to talk to one another so you can quickly get what you need. An API, or Application Programming Interface, is the messenger that takes requests and tells a system what you want to do and then returns the response back to you.

To make it easier, imagine you’re in your car at a drive-through fast food restaurant. When it’s your turn, you tell your order through the microphone or directly to the employee at the window. Your order is made inside, you pay, and your order is handed over to you. In this instance, the fast food restaurant’s kitchen staff are ready to cook - but they need some way of getting the orders to them. The employee at the window provides that link of communication - when you say “#3 with no onions”, the employee at the window understands, and the kitchen staff understand exactly what that means, and make the order. You know this worked by getting your result - a bag with “#3 with no onions” in it.

Imagine how chaotic and disorderly it would be if everyone in the drive-through had to tell their order to kitchen staff directly. Thankfully, the employee at the window takes orders in a way that everyone can understand - you in your car, and the kitchen staff. The kitchen staff aren’t overwhelmed by taking orders from unfamiliar people, and the people in the drive-through can relax and not have to deal with communicating with the kitchen staff – they all end up talking to the one employee at the window.

That employee at the window acts as the API, or the messenger, and the kitchen staff acts as a service you want something from.

Now imagine if you owned a kitchen, or multiple kitchens all cooking different things – you would definitely need even more employees at the windows! How would you manage all of them? Is there an easier way to deal with order-taking employees that would work best for you? That’s where a service like API Connect comes in - it allows you to quickly create endpoints that can act as APIs and microservices, which are ready to be leveraged by other applications/services. You can also manage your APIs by setting varying levels of security and visibility, including rate limits. IBM API Connect is an integrated API management offering that allows developers to create, run, manage and secure APIs. The API Connect service also lets you transform and grow your business with insights through detailed analytics with structured filtered searches. In Step 2, you will specifically use API Connect to expose a set of APIs from that service you exposed using Secure Gateway (Step 1).

Recall a similar diagram in the beginning of the previous step. As mentioned before, this diagram will grow as you complete each step – notice how this step has added to the different ways your Remote Operations Console communicates with added services.

Technologies Used


Your Tasks for Step 2

✅ Add a catalog
✅ Work with OpenAPI definitions
✅ Edit and publish API product
✅ Explore and test API


Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 In Progress

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal

2.1 Add a catalog

2.1.1

In the first step, other services under the Resource List were shown but not delved into – including API Connect. This service exists already in the 1500867 – IBM account. Let’s start by navigating to the API Connect service.

In a new tab, open https://cloud.ibm.com/resources.
Then expand the Cloud Foundry Services section.
Click on DroneLab_API Connect-52.

The API Connect dashboard may contain a few catalogs that already exist. Before you go any further, let’s take some time and learn what exactly catalogs are with regard to API Connect.

💡 What is a catalog? [Click to Read More]

A catalog is a published collection of products. Products can be managed to control the availability and visibility of APIs and plans. You are able to create, edit, and stage products.

Within products are plans and APIs that you may want to group together. In the diagram below, notice how plans belong to only one product, can possess different APIs to other plans within the same product, and can share APIs with plans from any product.

Plans are used to differentiate between different offerings. Plans can also share APIs and can enforce rate limits. Plans can also specify billing costs for customers who use your products. For example, you can define three different plans for a single product. Each plan can have a different subscription cost and even a different rate limit that targets different customers.

At the bottom of the hierarchy, APIs (which were illustrated in the introduction of this step as the employee at the drive-through taking orders and giving them to the kitchen staff) are associated with the plans that exist in a product. All of these components form a definitive catalog that you will create in this sub-step.

💡 Are there different kinds of catalogs? [Click to Read More]

Yes, the current types of catalogs include: Development, Automatic subscription, and Default.

Development - In a development Catalog, staging and publishing actions are forced, meaning that if you republish a previously published Product it is overwritten without warning. If conflicts are found, they are automatically resolved by the system. Unpublish actions happen automatically. By default, a development Catalog is provided for you. A development Catalog must be used only for test purposes. A Developer Portal created from a development Catalog must be used in the same way, that is, for testing purposes only and not for real cases.

Automatic subscription - If you enable automatic subscription for a Catalog, testing of your APIs in the API Manager user interface is made easier because a test application is used, with a pre-supplied client ID and client secret, which is automatically subscribed to all the Plans in the Catalog, so you don't have to specify a plan or application when testing. The test application is not subject to rate limits. Automatic subscription is available only for a development Catalog. It’s important to note that Automatic subscription is supported only with the DataPower® Gateway.

Default - You can set one of your Catalogs to be the default Catalog. Then, calls to APIs that are published to that Catalog can use a shorter URL that does not include the Catalog name.

Start by clicking the Add button in the top left corner and selecting “Catalog” from the dropdown menu. This will show a pop-up which will prompt you to provide a name. Your catalog name will be YourLabName-catalog.

Click the “Add” button in the top left corner, and select “Catalog” from the dropdown menu.
Change the Display Name * to YourLabName-catalog, then click Add.
(This may take a few moments).
2.1.2

You should see your newly created catalog now along with the others that already existed in the API Connect dashboard. Take a look at what the catalog provides out of the box before we begin adding to it.

Click on your newly created catalog.

Along the top of this catalog are various options you can drill-down into – Products, Approvals, Community, Members, Analytics, and Settings. For now, let’s focus on getting ready for the next sub-step of importing API definitions. Click on the >> button in the top left corner, next to the home icon. This will open a side menu on the left side that contains Favorites, Dashboard, Drafts, and Admin. Let’s move to the Drafts.

Click on the >> button at the top left corner and select Drafts from the left side menu.

Within the Drafts page, you may notice other products or API drafts which have not yet been deployed to a catalog. There are two options at the top – Products and APIs. When we import an API definitions file at the next sub-step, you will also be able to add a product at the same time. Click on APIs at the top to get ready for Step 2.2. To make it easier for this lab, we have already created an OpenAPI definition to get a drone's telemetry data that you can import into API Connect and modify. In the real-world, developers will create the API definitions using API Connect's easy-to build API Connect designer feature and distribute it.

Click on the APIs tab at the top.
💡 What are some common technical approaches with working with catalogs? [Click to Read More]

Catalogs act as a staging target and a division of the gateway and the Developer Portal. They are useful for separating Products and APIs for testing before you make them available to Developer organizations.

The URL for API calls and the Developer Portal are specific to a particular Catalog. In a typical configuration, an API provider organization uses a development Catalog for testing APIs under development and a production Catalog for hosting APIs that are ready for full use. A common approach is to have a development cloud with a development Catalog, a few test Catalogs and a production cloud that might have its own test Catalog.

You can use a Space to partition a Catalog so multiple teams can manage Products and APIs independently in a single Catalog. A Space is conceptually like a sub-catalog, except that Products and APIs in all Spaces in a given Catalog are published to the same developer portal. For more information about Spaces, see Using syndication in IBM API Connect.

2.2 Work with OpenAPI definitions

2.2.1

In the previous sub-step, you navigated to the Drafts page in your new catalog, and left off at the APIs tab. It’s time to finally add a product with some API definitions to this catalog.

Within API Connect, you can use an OpenAPI definition file to add a REST API. OpenAPI defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. An OpenAPI definition can then be used by documentation generation tools to display the API, code generation tools to generate servers and clients in various programming languages, testing tools, and many other use cases.

💡 What is REST API? [Click to Read More]
REST is acronym for REpresentational State Transfer. It is architectural style for distributed hypermedia systems. Read more about RESTful APIs here: https://restfulapi.net/.
Click on the Add button in the top left, and select “Import API from a file or URL”.
Then Select “Or import from URL…”

For your convenience, we have already provided an easy-to-use OpenAPI Swagger YAML file URL. The link provided is custom to you – your lab name – and will provide all the definitions required for setting up the APIs for this catalog. There are fields available for Username/Password authentication should your URL require it, but the URL provided to you does not require this authentication, so leave it blank.

Use the Copy to clipboard button below for your API Connect YAML file URL and paste is into the URL field for Import OpenAPI (Swagger).
Your API Connect YAML file URL

Copy to clipboard
💡 What is a YAML? [Click to Read More]
YAML (rhymes with "camel” and is a recursive acronym – “YAML Ain't Markup Language ") is a straightforward machine parseable data serialization format designed for human readability and interaction with scripting languages such as Perl and Python. YAML is optimized for data serialization, configuration settings, log files, Internet messaging and filtering. This specification describes the YAML information model and serialization format. Read more about YAML here https://yaml.org/spec/history/2001-12-10.html.

Once you have pasted your API Connect YAML file URL, go ahead and check “Add a product” - new fields will show below. For this lab, as you import this  API definition, you also want to create a new product for the API.

If someone already had an existing product,  they could simply import the API definition and choose to add it to a product later. Importing API definitions will allow you to also add a product along with it at the same time. Make sure your information is similar to the below images – under Info, the title of your product should be yourLabName-product. And under Publishing, make sure “Publish this product to a catalog” is checked and then select your newly formed catalog, yourLabName-catalog, from the list. Once these details are added, click “Import”. It’s important to note that APIs become accessible to other application only when a product is published in a catalog.

Check “Add a product”
Under Info:
1. Set the Title field to YourLabName-product.

Under Publishing:
2. Check Publish this product to a catalog and
3. select YourLabName-catalog
4. Then click Import at the bottom.

After clicking Import and entering the correct details above, your page will update and look similar to the image below. You are now in the Design view of the APIs – and thanks to the work you did just now, you were able to import the API into a new product, and associate it with your catalog.  In the next sub-step, you will explore this page a bit more and make a few changes as well.

2.3 Edit and publish API product

2.3.1

In this Design view, you have access to a working draft of the API you imported. There’s a side menu on the left which contains headings for all of the sections related to this API. Indeed, this entire YAML-style page scrolls and is split up by these sections. Feel free to pause these instructions and scroll up and down this Design view.

Some sections to pay attention to include the first one at the top –like Info which contains the foundational details related to this API. Scrolling a little further down, the section Scheme designates the HTTPS configuration this API uses.

Looking over the Parameters section will be useful in Step 2.4 when you test the API itself – pay attention to the two user-defined parameters, drone_id and time_stamp, which provide drone identifier and time stamp to fetch the associated drone information.

The Path section is where the endpoint path is defined – currently it’s just GET /status. When you imported the API definitions in the previous sub-step, those definitions were already created for you based on your customized YAML file.

Let’s move on by setting the path of the target endpoint of the exposed drone controller application that we enabled with Secure Gateway in Step 1. Scroll to or click the Properties heading on the side menu.

After exploring the Design view page, click on the Properties section on the side menu.

Once you’re selected the Properties section, find and click on the selected API property – target_host, a user-defined property where connection information will be provided to reach the necessary target resource. Clicking target_host will expand to show catalog-specific values for this property that you’ll need to edit.

Click on the target_host property to expand details.

Take a closer look at this target_host property. As its description suggests, this property specifies the host for the target URL. Remember at the end of Step 1, you pasted the Cloud Host : Port into these instructions for future usage. Later on, the target_host value for this API is manipulated based on the value it has been provided. Let’s replace this current value with your Cloud Host, conveniently provided below.

Click the Copy to clipboard button below and replace the current value in the Default Catalog with Your Secure Gateway Cloud Host URL.
Your Cloud Host

Copy to clipboard

Now that you have made that change, click on the Save button (floppy disk icon) in the top right corner. You should see a quick alert in the top right informing you that your API is now saved.

Save your changes by clicking the Save button in the top right corner.
2.3.2

Making changes to the API requires republishing the API product. Navigate away from the Design view to the Assemble view – located in the Assemble tab along the top of the page.

Click on the Assemble tab at the top of the page.

This Assemble view provides tooling for simple to complex flows that can be tested. You’ll notice there’s already a default action pre-configured (invoke). We won’t be changing anything here as this lab doesn’t involve further configuration of flows within API Connect.

You need to republish the changes you previously made. Click on the Play button ▶ near the top to change the side menu.

Click on the Play button ▶ near the top to change the side menu.

The side menu on the left updates with new options regarding setup – you can double-check to make sure the correct catalog and product is selected before you republish. Once you’re ready, click Republish product so that your earlier changes are ready to go. It may take a few seconds for it to finish. In the next step, you will finally get to test out this new API and view its data response.

Click Republish product, making sure that that the catalog and product match those that you created.
(If your screen doesn't look like this, you may need to click Change Setup first).

2.4 Explore and test API

2.4.1

At this point you have successfully created a catalog, imported and edited an API within a new product,  and republished it to your catalog.  The API is now ready to be tested. Recall in the introduction of this step – APIs act as messengers between applications and services. In the previous sub-step, you saw the GET /status endpoint – it required two values (drone_id and time_stamp). When you make a request to get information about a specific drone at a specific time, you will get back a response that includes information in a format that is understood.

Let’s begin trying out the API by clicking the Explore button in the top right corner. This will open a list where you can select your own catalog, yourLabName-catalog.

Click the Explore button in the top right corner, then click on YourLabName-catalog from the Catalogs.

The Explore tool is used to test API endpoints. It shows the operations for all of the APIs that are contained in a specified catalog. The left pane of the Explore window can be used to select an operation to test. The center pane displays summary information about the endpoint, including its parameters, model instance data, and response codes, and the right pane provides template code to call the endpoint. Let’s focus on the right pane for now. Notice the URL at the top preceded by GET, and the curl request. Click on “Try it” to start testing yourself.

✅ I see the "Try It" button, similar to the screenshot. [Click to Continue]
Click on “Try it” in the right pane.

The right pane changes to a view where you see the Type headers which are used to indicate the media type of the resource. In this case, you want to read a JSON response. The parameters are listed below and should be familiar – for this current example, change the value of drone_id to drone1 and the value of time_stamp to 0. Then click Call Operation.

Change the drone_id value to drone1 and time_stamp value to 0. Then click Call Operation.

Once you click Call Operation, you should see a Response added to the bottom of the right pane. The actual request information is listed above. The response includes a response code, headers, and a JSON response that contains data regarding the endpoint you requested – get status of drone #1 (drone_id), at the very beginning (time_stamp). It is served to you in a way that you can understand – and more importantly – your remote drone operations console can understand as well!



💡 What are response codes (like the number 200)? [Click to Read More]
HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes: Informational responses (100–199), Successful responses (200–299), Redirects (300–399), Client errors (400–499), and Server errors (500–599)

Checkpoint

Scroll through the JSON response and look for "location”. Does your location value match what was expected? Use the “Click to show answer” and test it yourself!

Step 2 Checkpoint: [Answer hidden - Click here to check your answer!]

Did your response’s location value match? Congratulations! You are ready to move onto Step 3.

Ignore the "⚠️ I don’t have a "Try It" button, and my screen does NOT match the screenshot!" below and scroll to Finish Step 2.





⚠️ I don’t have a "Try It" button, and my screen does NOT match the screenshot! [Follow workaround]

This Explore function in IBM Cloud seems to have issues with some browsers and/or browser settings. Below is an alternative path to test your API.


1. Click on the x on the top right corner of the page.

2. As shown in Step 2.3.2, go to Assemble tab. Click on the small gray play button.

3. On the left, click the dropdown under Operation (Choose an operation to invoke) and select get /status.
4. Add the following values - drone_id: drone1, time_stamp: 0, then scroll down and click Invoke.

5. View the response and continue instructions below.

💡 What are response codes (like the number 200)? [Click to Read More]
HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes: Informational responses (100–199), Successful responses (200–299), Redirects (300–399), Client errors (400–499), and Server errors (500–599)


Checkpoint

Scroll through the JSON response and look for "location”. Does your location value match what was expected? Use the “Click to show answer” and test it yourself!

Step 2 Checkpoint: [Answer hidden - Click here to check your answer!]

Did your response’s location value match? Congratulations! You are ready to move onto Step 3.





Finish Step 2

You completed Step 2! 🎉

You successfully used API Connect to expose APIs in the GSC Drones-To-Go service by creating a catalog, importing a YAML file with API definitions, made changes, republished, and tested out the API within the API Connect Explore tool.

Step 2 Completed

✅ Add a catalog
✅ Work with OpenAPI definitions
✅ Edit and publish API product
✅ Explore and test API

In the next step, you will use another service to demonstrate the value of invoking flows involving other services.

Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 Next

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal
Ready? Move on to Step 3 →

Step 3: Connect to another service with App Connect

Imagine you’re in charge of running a small event online at your workplace. Whenever someone registers for the event, you want them to receive a (1) confirmation email, (2) Slack message telling them where they can connect with others about the event, and (3) store their registration information in an Excel sheet.

This could be all done manually – but obviously, you’re a busy person, and you may only get time sparingly to do this, and it is still prone to human error. It may get overwhelming if a lot of people sign up at the same time. You may also think – aren’t there services that can do this automatically for me?

In Step 2, you imported API definitions that were able to be tested within API Connect. You were able to view that response data that the API produced – data that could be part of a bigger flow of events. For the event example above, you could use the registration data and have a template for an email ready to go. The registration data could also be used to automatically send a pre-defined Slack message to the signed-up person, and automatically add a row of information to an Excel sheet.

IBM® App Connect connects all these applications very quickly, regardless of whether they are on the cloud or a private network. And significantly, there is no coding required. Using the App Connect Designer on IBM Cloud makes it easy to connect apps, even applications like Salesforce, Marketo, and SAP, so that when an event occurs in one application, or a request is made to an API, the other connected apps are updated automatically.

Below are some common templates used on App Connect. These contain prebuilt flows which can be created for an API, so that when the request is submitted (such as through a mobile or web application), the flow performs all its actions, and then returns a response that either confirms that the actions were successful, or returns the data that was requested.

The lab diagram that has been referenced before is finally complete – take a look below and notice how each step was able to add onto the connections that your Remote Operations Console application had access to. With each service, your application became more powerful due to it being linked to useful resources. As it suggests, you will use the response data you previewed in Step 2, which included the location of the drone, to retrieve data from a database of sensors, thereby creating a very helpful list of sensors near the drone.

Technologies Used


Your Tasks for Step 3

✅ Explore sensor database
✅ Set up App Connect flow
✅ Start the API
✅ Try out the flow


Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 In Progress

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal

3.1 Explore sensor database

3.1.1

Before you access the App Connect service, let’s take a look at the database of sensors. In real-life situations, a Public Safety Situational Awareness Operator may want to quickly look at the nearby sensors to gauge the condition of the location they are viewing through the drone. It’s convenient that the GET /status API provided in Step 2 contains the latitude and longitude of the done location that can be used with the sensor location coordinates as well.

Open https://cloud.ibm.com/resources and under the Services section, click on DroneLab_Cloudant-cd.

The sensors’ information is stored in a Cloudant database. IBM Cloudant® is a fully managed, distributed database and is provided as an offering on IBM Cloud. It has already added to your IBM Cloud account. Once you click on the service, launch the dashboard to view the databases. You will take a look at the databased named sensordb.

Click Launch Dashboard.
Click sensordb.
Click sensorGeo to expand.
Then click Geospatial Indexes to expand.
Next, click sensorGeoIndex to show Cloudant’s geospatial tool to visualize the underlying data.
3.1.2

Once you click the sensordb database, a list of sensor information will be displayed.

One of the many features Cloudant provides is IBM Cloud Geospatial, or "IBM Cloudant Geo”. Cloudant Geo combines the advanced geospatial queries of a Geographic Information System (GIS) with the flexibility and adaptability of IBM Cloudant's database-as-a-service (DBaaS) capabilities. These capabilities include GeoJSON, IBM Cloudant Geo index, and more.

With IBM Cloudant Geo, all of the following are possible:

(1) Enable web and mobile developers to enhance their applications by using geospatial operations that go beyond simple bounding boxes
(2) Integrate with existing GIS applications, so that they can scale to accommodate different data sizes, concurrent users, and multiple locations.
(3) Provide a NoSQL capability for GIS applications, so that large streams of data can be acquired from devices, sensors, and satellites. This data can then be stored, processed, and syndicated across other web applications.

Let’s take advantage of this feature. Sensors have locations that be filtered on – within Cloudant, you’re able to draw polygons on a map and define spatially which sensors to display in a given bounded area. Go ahead and draw a circle on the map to filter sensors.

Use the Circle (dot icon) Tool on the right menu bar to draw a circle around a map area of your choosing.
Once you’ve made a circle, click on the { } JSON button at the top to view the sensor information in your drawn circle.

The circle you drew has filtered the sensors to only return the ones that are located within the boundary. When you click the JSON view, the list of JSON data pertains to the sensor markers shown on the Map view.  While the details returned  at this point is limited to the identifier and coordinates for each individual sensor, this information could then be used to query the type and values for each sensor which is useful in later lab sub-steps.

In the next sub-steps, you will use the location data you were able to return in the end of Step 2 in combination with the information located in the sensors in this database to return a list of sensors nearby.

3.2 Set up App Connect flow

3.2.1

Now that you have a preview of what the sensor database and its information looks like, let’s set up the flow. Close the two tabs you just opened related to the sensor database, and open the App Connect service in your IBM Cloud Resources. Then, click Launch App Connect to begin.

Close the two recent tabs:

current page for Map/JSON data of the sensors
the DroneLab_Cloudant-cd page

Then open https://cloud.ibm.com/resources and expand to the Cloud Foundry services.
Next, click the DroneLab-App Connect-68 service.

Click Launch App Connect.

This is the App Connect Home. You may notice that there may been integrations that have already been created – these artifacts reflect connections that other users have made. This dashboard also provides an overview of available functions that App Connect provides.

3.2.2

Let’s start by clicking on the Dashboard icon (you may need to hover to view it) on the black left side menu. In order to add a new flow, you will import its definitions that have been provided for you (similar to Step 2). On the top right corner, click New and then Import flow.

Click the Dashboard icon on the left side menu.
Next, click the New + icon in the top right corner.
Then click Import flow…

Using the copy to clipboard button, copy your YAML file URL below and paste it into the pop-up’s, “or specify a file URL” field. When you click Add file, it will import the YAML file containing your lab name. Click import to complete the process.

Use the copy to clipboard below and paste your URL into the ‘or specify a file URL’ field. Then click Add file.
Your App Connect YAML file URL

Copy to clipboard

Once the flow has been added (this may take a few seconds), the screen will update with Define view for the flow you created. Remember these two functions – retrieveSensordata and getNearBySensors. You will focus on getNearBySensors for the purposes of activities in the next several steps, but you will also be exposed to retrieveSensordata and asked to consider it within the context of the lab’s Production Flow used by the Remote Drone Console application.

Take a look at the various Properties associated with the getNearBySensors – droneid, lat, lon, radius, and response. You will provide a droneid, the latitude and longitude coordinates from the drone, and the radius you are interested in, and get a response. Notice that these properties are strings as well.

You may have noticed that retrieveSensordata has fewer Properties – only droneid and response. This will be explained as you continue through this lab section.

3.2.3

The getNearBySensors API is a simple API flow to demonstrate the capability and simplicity of the App Connect cloud service. For the lab, we developed this flow to show how a web application could get access to Cloudant sensor data that is in close proximity to a given drone’s location by providing the lat/long as input.

The retrieveSensordata may be more typical of a production API flow in that it combines several steps and includes some additional logic. Specifically, this flow is different from the simplified getNearBySensors API flow as it retrieves the drone’s status and telemetry data using the drone controller’s GET/status API (from API Connect), parses the response to find the drone's location (latitude/longitude) information, and then uses those locations details as input to retrieve sensor readings from the Cloudant database that are in the relevant area. This flow is used by the Remote Drone Console application as part of the lab’s Production Flow.

App Connect provides a model-driven, code-free approach that lets you easily implement your API operations as integration flows. For less experienced users, App Connect guides you through making models and integration flows you can use to build robust APIs. For experienced developers, App Connect's powerful tooling lets you extend the flow through code. In either model, the tool then builds well-formed OpenAPI definitions automatically. 

You can preview the flow within App Connect for getNearBySensors by clicking on the Operations tab on the section and then Edit flow (this may appear as "View Flow". The flow you see is linear – Request > HTTP Invoke method > JSON Parse > Response. As you continue to finish this lab, consider how this flow could be used within the Remote Console Operations application.

Click on Operations in the getNearBySensors section (the second box) and then Edit flow. (This may also appear as "View Flow").

You can see that a simple linear visual flow represents the step by step actions that happen within the getNearBySensors API. If you click on each step in the visual flow, you will see the details reflected underneath. For example, the output below shows the details of the HTTP step.

Click Done to close the Edit view.
💡 Want to know more about the retrieveSensordata production flow? [Click to Read More]

As mentioned above, the retrieveSensordata API flow is used in the lab’s Production Flow to expose an endpoint for the Remote Drone Console application to dynamically find the location on the drone and then access relevant sensor data that is nearby.

The flow uses the following connectors and tools:
HTTP endpoint: To invoke the GET /status REST API call of API Connect (configured to the drone controller in IEL Private Cloud)
HTTP endpoint: To invoke the Cloudant’s geospatial REST API call
JSON Parsers: To parse the resultant HTTP response and map it to a defined object

OPTIONAL: If you want to see the full flow, you can use “Edit flow” after clicking Operations within the retrieveSensordata section. (The button may also appear as “View Flow”).

Notice the slider tool above the flow, which allows you to zoom out to the see see the entire flow or zoom in to a specific area of concern. Just as with the getNearBySensors flow, you can click an of the individual steps to see the corresponding details reflected underneath the flow.

When you are done exploring this flow, make sure to click Done to close the Edit view.

3.3 Start the API

3.3.1

Now that you have set up the flow in App Connect, let’s test it out – but first, you’ll need to start the API and change authentication settings.  Begin by moving to the Manage view.

If you are unable to see or view the Manage tab, refresh the page. You may need to change browsers if this does not work.

Once you’re in the Manage view, you’ll be able to view and change settings related to the API flow.

Scroll down to the Security and Rate Limiting section. Pay attention to the section names as some are named similarly. For this lab, you will turn off “Require application via API key”. This lab does not include viewing the usage of the APIs so this authentication isn’t required. It should be noted that for production level implementations, it may be appropriate to require authentication so that applications that use this API would need to authenticate using an API key and secret or API key alone.   This section would thus manage its key sharing and provide visibility into the API usage after the API is online. Make sure you scroll down and save this change once it is turned off.

Click on the Manage tab at the top.

Under the Security and Rate Limiting section, turn off Require application authentication via API key. Then scroll to click Save.

A pop-up at the top right corner will confirm your changes are saved.

3.3.2

Once this change has been saved, click on the vertical 3 dots at the top next to “Stopped”. Clicking Start API will make this flow active. By making this API active, applications will now be able to use the functions that were shown in the previous sub-step.

Click on the 3 vertical dots next to Stopped in the top right corner. Then click Start API.

In the Sharing outside of Cloud Foundry organization, you’ll notice the description: To share the API with a developer who is not a member of your Cloud Foundry organization, first create an API key and a companion API documentation link. Then send the key and the link to the developer, who can then use the corresponding page to explore the API and create an API secret (if required).

If the above “Require authentication via API key” was enabled, you would first need to create an API key in order to use the API Documentation link.  Because this isn’t required for this lab, all that is needed is to use the API Documentation Link (from screenshot below) for the remaining substeps.

Scroll to the Sharing outside of Cloud Foundry organization section and click on the API Documentation Link below (opens in a new tab).

3.4 Try out the flow

3.4.1
Click on GET /getNearBySensors in the left side menu. Then click Try it.

Under the Query section, notice the API input parameters lat, lon, and radius. You’ll enter the location values that you should have gotten back at the end of Step 2 from the drone #1 you specified. Enter the following values in the corresponding fields and click Send to send the request. Scroll down after to view its response.

Paste these values in your request:

lat: 32.9426934
lon: -96.994849
radius: 500
Then click Send.

You should see a sensor reading response below that starts with a 200 OK Response. Congratulations! You were able to test the simplified getNearBySensors flow that you added within App Connect. If you look closely at the JSON results contained in the response, you may notice the type of sensor and current values for this particular device.

Thinking about our Remote Operations Console application, you can consider how App Connect’s flow can expose a single API (via the  /retrieveSensordata Production flow) that retrieves and parses a drone's current location, and then goes on to query the sensors in that immediate geospatial area to bring the values to the user. In the next step, you will visit and review the Remote Operations Console application's updated user interface and consider how these service connections enabled the Multi-Hybrid Cloud application with powerful functionality.

In the next step, you will visit and review the Remote Operations Console application's updated user interface to understand how these service connections  enable that Multi-Hybrid Cloud application with powerful functionality.

⚠️ My response doesn’t match the picture above / I got an error! [Click to Troubleshoot]
If you do NOT see a response similar to the one above, email a screenshot to gscgov@us.ibm.com (link in the top right corner) along with the message, "My App Connect response doesn’t match what is expected in Step 3.4.1."

Finish Step 3

You completed Step 3! 🎉

You successfully used App Connect to add a flow that can take drone location information and find nearby sensors in a given radius.

Step 3 Completed

✅ Explore sensor database
✅ Set up App Connect flow
✅ Start the API
✅ Try out the flow

In the next step, you will revisit the Remote Operations Console application and take a look at the Drone Viewer which incorporates some the services you delved into in previous steps.

Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 Completed ✅

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4 Next

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal
Ready? Move on to Step 4 →

Step 4: Explore Remote Operations Console with new flows

In the Steps 1, 2, and 3, you learned about the three main services that were integrated with your Remote Operations Console application. These three services are Secure Gateway, API Connect, and App Connect. Let’s review each briefly:

Secure Gateway A cloud service that enables you to establish a secure tunnel between the specific resources you want to connect. Used to enable access to GSC Drones-To-Go, a private cloud service.

API Connect A modern, intuitive and scalable API platform that lets you create, securely expose, manage and monetize APIs across clouds. Used to create and add APIs that can request and respond with data that belongs of the GSC Drones-To-Go drones.

App Connect An all-in-one tool for easily connecting apps, integrating data, building APIs and acting on events. Used to invoke flows that can retrieve nearby sensors based on location data of a drone.

Over the course of this lab, you viewed a diagram that showed how the Remote Operations Console application connected with these services. It is complete – review it once more before moving on.

Your Remote Operations Console application is connected to the private cloud that hosts the fictional company GSC-Drones-To-Go service, which is hosted in the IBM Industry Engineering Lab in Coppell, TX.

You may remember that in Drone Lab 1, you saw a list of drones but didn’t go much further than that. In this lab, you will finally get to view what the drone sees, view telemetry data it provides, and see its relevant geospatial information.

It is recommended that you revisit the Drone Lab #1 instructions site now if it has been a while since you’ve completed it.

If you want to recall specific information regarding the Remote Operations Console, it is recommended you read the instructions for Drone Lab 1, located here: https://ielgov.github.io/dronelab1.

There are two steps worth reviewing prior to finishing this lab.

Step 2 of the first lab contains information regarding accessing RedHat OpenShift through IBM Cloud. While this lab has primarily used Cluster B, you will be revisiting the Cluster A you used in Drone Lab 1. If it’s been a while since you have completed the first lab, it is recommended that you look over this step, including the components related to the OpenShift web console, which will not be covered in detail in this second lab.

Step 5, you may recall, of the first lab contains a breakdown of specific parts of the console application UI. This step contains clickable sections of the page that go into detail regarding the function of each widget. This second lab will not cover this content again and will go directly to a new section of the console application UI - so if it’s been a while, it is recommended that you go over this step again.

Technologies Used

Your Tasks for Step 4

✅ Recap previous steps
✅ View configurations made for this lab
✅ Explore the drone viewer modal


Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 Completed ✅

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4 In Progress

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal

4.1 View configurations made for this lab

4.1.1

Now that you’ve explored the services that were used in the Remote Operations Console application, let’s revisit the application and how they were used. As mentioned in the introduction, reviewing certain instructions in Drone Lab 1 may be helpful.

Navigate back to Cluster A, or mycluster-dal12-b3c.4x16, which is a part of the Resources in IBM Cloud. This should be familiar from Drone Lab 1 – launching the OpenShift web console will allow you to choose the Developer perspective, enter the Topology view, and select your project. It is critical you follow those steps correctly – not doing any of them will result in errors.

Open https://cloud.ibm.com/resources (in a new tab).
Next, click mycluster-dal12-b3c.4x16 (Cluster A) under the Clusters section.

Then click on OpenShift web console.
These 3 steps must be completely accurately in order to not encounter issues later!
(1) Make sure you are in the Developer perspective (and not in the Administrator perspective) by clicking the top left dropdown under the Red Hat OpenShift Container Platform logo. (You may see an error appear on screen - complete all 3 steps first).

(2) Click the Project dropdown and select YourLabName-2020-lab-1.

(3) Make sure you are in the Topology view by clicking Topology in the left side menu.

Once you have completed the 3 steps above, your Topology view may be similar to what you see below. It is okay if your Topology is different – you will review the nodes in this view in the next sub-step.

4.2 View configurations made for this lab

4.2.1

In the Topology view, you may see a number of nodes that already exist – some of which are remnants of Drone Lab 1. Review the list below.

Possible nodes within your Topology

default-sample-YourLabName
As part of the lab setup for each user, an instance of the default, unchanged remote drone console application was deployed in your OpenShift project to be used as a reference.

YourLabName-2020-lab-git
In Step 1 of Drone Lab 1, you had deployed your own instance of the Remote Operations Console application with the unique changes you made.


lab2-http-forward [required in order to finish this lab successfully]
The http-forwarder pods act as a middleman between the dronelab-ui pods and exposed endpoint for the private cluster. It takes HTTP requests from the lab2-dronelab-ui and passes them on to the private cluster.


lab2-dronelab-ui [required in order to finish this lab successfully]
This is an updated instance of the Remote Operations Console application UI. It will be used for this step.

⚠️ The necessary nodes are not in the Topology view of my project! [Click to Troubleshoot]
If you do NOT see the two * nodes in your project, send an email to gscgov@us.ibm.com (link in the top right corner) along with the message, “I do not see the necessary Drone Lab 2 nodes in Step 4.2.1.”

Before you revisit the Remote Operations Console application, let’s take a quick look at some of the configurations that were made in Drone Lab 2.

Click on the lab2-http-forward node.
Then in the side menu under Builds, click on lab2-http-forward.


Click on the Environment tab.

Notice the environment (env) variables in the Environment tab for this HTTP forward node. Just as you explored Secure Gateway (SG), API Connect (API), and App Connect (APP), there are values that have already been provided that are similar in syntax to the URLs you had produced in each previous step. Since the Remote Operations Console application has already been connected to the GSC Drones-To-Go service, these values were already taken care of for you.

4.3 Explore the drone viewer modal

4.3.1
Go back to the Topology view using the Topology link on the left side menu.

Let’s revisit the Remote Console Operations application. Using the endpoint associated with the lab2-dronelab-ui node, click on the top right Open URL icon of the node to launch the site.

Click on the Open URL button in the top right corner of the lab2-dronelab-ui node.

This website should be familiar from Drone Lab 1 - if you would like to review each section of the Remote Operations Console, please revisit Step 5 of the Drone Lab 1 instructions site https://ielgov.github.io/dronelab1. When you’re ready, go to the Available Drones section. Notice that the list of drones each have a status. The drones with the Available status can be connected to. These are the drones provided by the GSC Drones-To-Go service, and thanks to the services you explored earlier, this application is able to get access to these drones. Click on Connect on either of the drones to open its drone viewer modal.

Click Connect on any drone under the Available Drones with an Available status.

The drone viewer modal may take a few seconds to fully load all of its components. When it’s finished, take a look below at the various parts it has and the descriptions for each. You will focus on the Location section next.

Drone Viewer Modal

Status Bar
This bar is the top where there is a back button on the left and a close button on the right. You are able to view the drone name, its connected status, and what Operation Mode you are in. Since the drone is in flight with another pilot, you are restricted to Observation Only mode.

Detail Bar
The bar underneath the status includes the drone name, the current date, who the pilot is, and the serial number of the drone you are viewing.

Drone Viewer
The top left quadrant of this modal contains images coming from the video feed of the drone in flight.

Telemetry
The top right quadrant displays the current measurements and data from the drone in order to monitoring its situation.
- Total Flight Time: the elapsed flight measured in seconds.
- Barometer: pressure measured in mb.
- Battery: drone battery percentage.
- Height: drone height measured in cm.
- Temp (High/Low): highest and lowest temperature measured in Celsius degree.
- Speed (X/Y): speed in the X and Y axis measured in cm/s.
- Acceleration (X/Y): acceleration in the X and Y axis measured in cm/s.
- Pitch/Roll/Yaw: attitude pitch, roll, and yaw measured in degree.
- Time of Flight Distance: distance the drone went in the last second in cm.
- Latitude/Longitude: location coordinates of the drone.

For more information on these values, visit https://terra-1-g.djicdn.com/2d4dce68897a46b19fc717f3576b7c6a/Tello%20%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/For%20Tello/Tello%20SDK%20Documentation%20EN_1.3_1122.pdf.

Drone Control Pad
The bottom left quadrant has controls where you can operate the drone. Currently this isn’t operational while the drone is already in flight and you are in Observation Only mode.

Location
The bottom right quadrant is interactive – you are able to click on the layers on this map and view relevant geospatial markers that are close to the drone you are viewing.

4.3.2

In the Location section, turn on the Sensors in the map layers. You’ll notice that there a few sensors that are near the drone itself – click on one of them to view its information. If you recall in in Step 1, you enabled access to these drones in the GSC Drones-To-Go private cloud service with Secure Gateway and in Step 2, you were able to get the drone’s location coordinates through an API you had set up, and all of the sensors could be filtered to show nearby ones using the flow you added in Step 3. The connections to these services can be observed as you look at this section.

Click Sensors in the Location section map layers. Then click on a sensor maker to view its information.

This completes all the steps for Drone Lab 2 – congratulations! Close this modal and feel free to view the other drone you did not view to see its modal information as well.

Please take a screenshot of the drone you liked seeing more and post it in the Slack channel with your feedback on this lab. Then move onto the next section.

Email a screenshot
of the drone viewer modal you liked more
of your custom remote drone console application to gscgov@us.ibm.com.


Finish Step 4

You completed Step 4! 🎉

You successfully explored the topology view during and after the build process and checked the status to see your changes in the application. OpenShift took the Dockerfile from your GitHub repository and used its instructions to build the application image from the current repository code. You have utilized your skills to deploy an application on the latest multi-hybrid cloud platforms.

Step 4 Completed

✅ Recap previous steps
✅ View configurations made for this lab
✅ Explore the drone viewer modal

In the next step, you will explore your new custom remote drone dashboard application, along with various industry uses cases to consider.

Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 Completed ✅

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4 Completed ✅

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal
Ready? Move on to Summary →

IEL Drone Lab 2: Summary

Step 1 Completed ✅

☑ Access IBM Cloud
☑ Access RedHat OpenShift cluster
☑ Open RedHat OpenShift web console
☑ Setting up the Access Control List (ACL)
☑ Adding a Secure Gateway destination
Step 2 Completed ✅

☑ Add a catalog
☑ Work with OpenAPI definitions
☑ Edit and publish API product
☑ Explore and test API
Step 3 Completed ✅

☑ Explore sensor database
☑ Set up App Connect flow
☑ Start the API
☑ Try out the flow
Step 4 Completed ✅

☑ Recap previous steps
☑ View configurations made for this lab
☑ Explore the drone viewer modal


Let’s review what we accomplished in this lab overall:

Let’s review what we accomplished in this lab overall:

First, you set up a Secure Gateway connection in order to enable access to drones that belong to the private cloud GSC-Drones-To-Go service.

Next, you added API definition with API Connect so that you can get information from the drones, including getting back its current location.

Then, you created a flow using App Connect to use that drone location information to get back a list of sensors that are close to the drone’s location.

Lastly, you explored the Remote Operations Console application’s drone viewer modal, and got to see the different components associated with a drone that were enabled through the use of the above services.

The takeaway of this lab is a better understanding of how various IBM services can be easily connected to a cloud application in order to augment its security, functionality, and connectivity.





Thank you for taking time to complete IEL Drone Lab 2.

If you found this lab to be useful, remember that this Lab is the second a series of Hands-on Labs. Please look forward to more of these labs that will expand on the scenario and functionality that you completed today.

Lab Title Lab Description
Lab 1 Completed Building the drone application on a Multi-Hybrid cloud platform and using all the associated coding tools
Lab 2 Completed Validate connectivity to resources in back-end private cloud, and test interaction with drone in remote private cloud location via app running in multi-hybrid cloud.
Lab 3: Stormwater Lab Apply visual recognition to detect/count vehicles and sensor API to monitor water/flooding in streams in order to reroute traffic and barricade unsafe conditions, in a specific geographic location.
The IEL Drone Lab 2 was created by the IBM Industry Engineering Lab PubFed team in Coppell, TX.