Pivotal Cloud Foundry discovery
The ServiceNow Discovery application finds Pivotal Cloud Foundry (PCF) version 3 components using the Pivotal Cloud Foundry pattern. Discovering some of these resources may require updating to the latest version of the Discovery and Service Mapping Patterns application from the ServiceNow Store.
You can use this pattern on the ServiceNow AI Platform starting Kingston version.
The discovery of PCF V3 components is supported when the Discovery and Service Mapping Patterns plugin Version 1.0.99, March 2023 is installed. The Pattern continues to support the discovery of PCF V2 components.
Request apps on the Store
Visit the ServiceNow Store to view all the available apps, and for information about submitting requests to the store. For cumulative release notes information for all released apps, see the ServiceNow Store version history release notes.
Prerequisites
Pivotal Cloud Foundry credentials
Create the Pivotal Cloud Foundry credentials.
- Navigate to Discovery > Credentials.
- Select New.
- Select CloudFoundry Credentials.
- On the form, fill in the fields:
| Field | Description |
|---|---|
| Name | Credential name. As an example, `pcf_user credentials` |
| Active | Option for enabling this credential for discovery. Select this check box to enable discovery. |
| Applies to | Credentials that you may or may not want to apply to All MID servers in your network, or to one or more Specific MID servers. Select Specific MID servers. |
| Order | Order in which the platform tries this credential as it tries to log in to devices. A smaller number indicates that the credential seems higher in the list. Establish the credential order when using large numbers of credentials or when security locks out users after three failed logins tries. If all the credentials have the same order number, or none, the instance tries the credentials in a random order. The default value is 100. |
| User name | Name of the user of these credentials. Avoid leading or trailing spaces in user names. A warning seems if the platform detects leading or trailing spaces in the user name. An example is `pcf_user`. Use the `client_id` that is used to generate the JWT token. |
| Password | Password for the user of these credentials. Use the `client_secret` that is used to generate the JWT token. |
| Credential alias | Alternate name for these credentials. As an example, `cf` If this field is closed, select the unlock icon to unlock the field. |
5. Select **Update**.
JSON web token credentials
To verify the JSON web token (JWT), perform the following token validation steps.
The format of the JWT token is: https://docs.cloudfoundry.org/api/uaa/version/4.27.0/index.html#jwt-bearer-token-grant
Run the following cURL script against the User Account and Authentication (UAA) server API and verify the results:
curl -s -k https://ip_address:port/oauth/token -X; POST -H ”Content-Type: application/x-www-form-urlencoded” -H “Accept: application/json” -d “client_id=<INSERT_USER_HERE>&client_secret=<INSERT_PASS_HERE>&grant_type=client_credentials&token_format=jwt&response_type=token”If this command doesn’t generate a token, verify that the credentials in the ServiceNow repository are correct, otherwise go to step 2.
Run the following cURL script against Pivotal Cloud Foundry API:
curl https://ip_address:port/v3/spaces -k -v -H “Accept: application/json” -H “Authorization: bearer<INSERT TOKEN HERE>”If this command doesn’t retrieve the PCF spaces information, verify the credentials on the ServiceNow credentials repository.
Credentials for V3 API elements
Provide a read-only user with permission to use the following API elements:
- –/v3/organizations
- –/v3/spaces
- –/v3/domains
- –/v3/routes
- –/v3/organization_quotas
- –/v3/space_quotas
- –/v3/apps
- -/v3/service_offerings
- -/v3/service_plans
- -/v3/service_instances
- -/v3/droplets Note: The Pivotal Cloud Foundry Pattern also supports the PCF V2 APIs.
Create a serverless Discovery schedule
- Navigate to Discovery > Discovery Schedules.
- Select New.
On the form, fill in the fields:
Field Description Name Enter a unique and descriptive name for this Discovery schedule, for example, pcfDiscover For the Discover type, select Serverlesss MID Server MID Servers that the credentials apply to. Specify the required MID Server, for example, Discovery_ServerActive Option for enabling this credential for discovery. Select this check box to enable discovery. Credential alias Alternate name for these credentials. Use the alias related with the Pivotal Cloud Foundry credentials that you created earlier. Right-click the header of the Discovery Schedule form and select Save.
Serverless execution pattern
5. Select the Serverless Execution Patterns tab.
6. Select **New**.
7. On the form, fill in the fields:
|Field|Description|
|-----|-----------|
|Name|Enter a unique and descriptive name for this Serverless Execution Pattern, for example, `pcf1`|
|Pattern|Select **CloudFoundry**.|
|Proxy Host|Fully qualified domain name of the machine on which you’re installing the proxy server. Specify **Global**.|
|Active|Check box to enable this schedule for discovery. Select this check box.|
8. Right-click the header of the Serverless Execution Patterns form and select **Save**.
9. Select the Serverless Execution Patterns tab
10. Create and define the serverless execution pattern as described in the product documentation.
Configure the parameters required by the Pivotal Cloud Foundry Pattern as follows:
|Parameter|Description|
|---------|-----------|
|Organization|Name of the organization that is required to be discovered, or all where the input is “\*”.|
|CredentialAlias|Alternate name for these credentials. Use the alias related with the Pivotal Cloud Foundry credentials that you created earlier.|
|URL\_CF|API URL of the Cloud Controller that is used to retrieve the information from Pivotal Cloud Foundry.|
|URL\_CF\_AUTH|UAA server APIthat is used to generate the token. Enter the value in the format: https://uaa.sys.dev.phx.pcf.example.com/oauth/token|
11. **Update**.
12. To start discovery, navigate to the Serverless Discovery definition and select **Discover Now**.
EVAL closure functions
Use the following EVAL closure functions to concatenate all organizations with “,” as a separator.
var rtrn = ’’; var organizations = ${organizations[*].name}; var beforeReturn = ’’; var separator = ’’; for (var i = 0; i < organizations.size(); i++) { beforeReturn += separator + organizations.get(i); separator = ','; } rtrn = beforeReturn;Use the following EVAL closure functions to return 1 if the operational status is active and 2 if it isn’t active.
var rtrn = ''; var currentOrgStatus = ${organizations[].operational_status}; var status = currentOrgStatus.toLowerCase(); if(status == "active"){ rtrn = "1"; } else { rtrn = "2"; }Use the following EVAL closure function to return 1 if the operational status is started and 2 if it isn’t started.
var rtrn = ''; var currentAppStatus = ${apps[].state}; var status = currentAppStatus.toLowerCase(); if(status == "started"){ rtrn = "1"; } else { rtrn = "2"; }CloudFoundry Get Call
The CloudFoundry Get Call custom operation handles the generation of tokens. It uses the credentials and URL_CF_AUTH context variable to generate a token that is used to create API calls.
When a token is generated, the URL_CF is used to create the API calls defined in the Resource field. The custom operation also handles pagination where the response has more than one page.
CloudFoundry Get Call parses the input JSON to populate the tables and variables.
Cloud Foundry custom operation
Pivotal Cloud Foundry BOSH extension section
The Pivotal Cloud Foundry BOSH is an extension section of the Pivotal Cloud Foundry Pattern.
The extension is available on the ServiceNow® Store for the June 2023 release of Discovery and Service Mapping Patterns 1.6.0.
Requirements for Pivotal Cloud Foundry BOSH
Note: The following requirements are relevant only to the BOSH extension section.
The Opsman authentication URL has to be provided as a pattern parameter with the name URL_OPSMAN_AUTH. For example:
https://<opsman entry point>/uaa/oauth/tokenThe added credentials must have permission to execute the following APIs:
- /uaa/oauth/token
- /api/v0/deployed/products Note: Custom APIs are added as Tanzu Opsman Get API step to the Pattern.
Data collected by Discovery during horizontal discovery
| Field | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Main CI: PCF Foundation \[cmdb\_ci\_pcf\_foundation\] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Name | Pivotal Cloud Foundry cluster entry name`| ip\_address | Pivotal Cloud Foundry host IP. | port | Pivotal Cloud Foundry service port. | short\_description | Pivotal Cloud Foundry service build number. | Organization | Organization list, managed by PCF cluster. The entries are separated using a “,” comma separator. | PCF Organization \[cmdb\_ci\_pcf\_organization\] | Name | Organization name | URL | Organization unique URL | pcf\_guid | Organization UID in CF | operational\_status | Organization status | PCF Space \[cmdb\_ci\_pcf\_space\] | Name | Space name | URL | Space unique URL | pcf\_guid | Space UID in CF | PCF Application \[cmdb\_ci\_pcf\_appl\] | Name | Application name | URL | Application unique URL | pcf\_guid | Application UID in CF | PCF Route \[cmdb\_ci\_pcf\_route\] | Name | Route name | URL | Route unique URL | pcf\_guid | Route UID in CF | port | Route port | type | Route type | PCF Quota \[cmdb\_ci\_pcf\_quota\] | Name | Quota name | URL | Quota unique URL | pcf\_guid | Quota UID in CF | PCF Domain \[cmdb\_ci\_pcf\_domain\] | name | Domain name | url | Domain unique URL | pcf\_guid | Domain UID in CF | PCF Space instance \[cmdb\_ci\_pcf\_space\_instance\] | name | Space service instance name | url | Space service instance unique URL | pcf\_guid | Space service instance UID in CF | PCF Service Plan \[cmdb\_ci\_pcf\_service\_plan\] | name | Service plan instance name | url | Service plan unique URL | pcf\_guid | Space service instance UID in CF | PCF Service \[cmdb\_ci\_pcf\_service\] | name | Service name | url | Service unique URL | pcf\_guid | Service UID in CF | PCF Droplet \[cmdb\_ci\_pcf\_droplet\] | name | Resource URL | pcf\_guid | Droplet ID | url | Droplet URL | install\_status | Installation status: 1, "installed" | operational\_status | Operational status: 1, "operational" | Key Value \[cmdb\_key\_value\] | key | Resource Tag keyNote: This data is only collected for V3 API calls. | value | Resource Tag value.Note: This data is only collected for V3 API calls. |
CI relationshipsThese relationships are created to support Pivotal Cloud Foundry discovery.
Pivotal Cloud Foundry BOSH relationshipsThese relationships are created to support Pivotal Cloud Foundry BOSH extension section discovery.
Parent Topic:Available on-premise discovery patterns | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||