Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.

Copyright © Microsoft Corporation

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

os-register-azure

os-register-azure is a Spring Boot service that hosts CRUD APIs that allows consumers to register a push endpoint that can be triggered when data change events happen within the OSDU R2 ecosystem.

Running locally

Requirements

General Tips

Environment Variable Management The following tools make environment variable configuration simpler

Lombok This project uses Lombok for code generation. You may need to configure your IDE to take advantage of this tool.

Configure Maven

Check that maven is installed:

$ mvn --version
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 1.8.0_212, vendor: AdoptOpenJDK, runtime: /usr/lib/jvm/jdk8u212-b04/jre
...

You will need to configure access to the remote maven repository that holds the OSDU dependencies. This file should live within ~/.m2/settings.xml:

$ cat ~/.m2/settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>os-core</id>
            <username>slb-des-ext-collaboration</username>
            <!-- Treat this auth token like a password. Do not share it with anyone, including Microsoft support. -->
            <password>${VSTS_FEED_TOKEN}</password>
        </server>
    </servers>
</settings>

Environment Variables

In order to run the service locally, you will need to have the following environment variables defined.

System Environment required to run service Refer to application.properties

Definitions for some variables used

name value description sensitive? source
LOG_PREFIX storage Logging prefix no -
server.servlet.contextPath /api/storage/v2/ Servlet context path no -
AUTHORIZE_API ex https://foo-entitlements.azurewebsites.net Entitlements API endpoint no output of infrastructure deployment
AUTHORIZE_API_KEY ******** The API key clients will need to use when calling the entitlements yes --
azure.application-insights.instrumentation-key ******** API Key for App Insights yes output of infrastructure deployment
azure.activedirectory.client-id ******** AAD client application ID yes output of infrastructure deployment
azure.activedirectory.AppIdUri api://${azure.activedirectory.client-id} URI for AAD Application no --
azure.activedirectory.session-stateless true Flag run in stateless mode (needed by AAD dependency) no --
cosmosdb_account ex devintosdur2cosmosacct Cosmos account name no output of infrastructure deployment
cosmosdb_key ******** Key for CosmosDB yes output of infrastructure deployments
cosmosdb_database ex dev-osdu-r2-db Cosmos database for storage documents no output of infrastructure deployment
azure.storage.account-name ex foo-storage-account Storage account for storing documents no output of infrastructure deployment
azure.storage.enable-https true Used by spring boot starter library no -
servicebus_topic_name recordstopic Topic for async messaging no output of infrastructure deployment
servicebus_namespace_name ex foo-sb-namespace Namespace for async messaging no output of infrastructure deployment
KEYVAULT_URI ex https://foo-keyvault.vault.azure.net/ URI of KeyVault that holds application secrets no output of infrastructure deployment
AZURE_CLIENT_ID ******** Identity to run the service locally. This enables access to Azure resources. You only need this if running locally yes keyvault secret: $KEYVAULT_URI/secrets/app-dev-sp-username
AZURE_TENANT_ID ******** AD tenant to authenticate users from yes keyvault secret: $KEYVAULT_URI/secrets/app-dev-sp-tenant-id
AZURE_CLIENT_SECRET ******** Secret for $AZURE_CLIENT_ID yes keyvault secret: $KEYVAULT_URI/secrets/app-dev-sp-password
KEY_IDENTIFIER ****** Key Identifier for key used for encryption/decryption yes -

Build and run the application

After configuring your environment as specified above, you can follow these steps to build and run the application. These steps should be invoked from the repository root.

# build + test + install core service code
$ cd register-core/ && mvn clean install

# build + test + package azure service code
$ cd provider/register-azure/ && mvn clean package

# run service
#
# Note: this assumes that the environment variables for running the service as outlined
#       above are already exported in your environment.
$ mvn spring-boot:run -Dspring-boot.run.profiles=local   
# or directly run the jar file  
$ cd provider/register-azure/ && java -jar target\register-azure-1.0.0-spring-boot.jar

Test the application

After the service has started it should be accessible via a web browser by visiting http://localhost:8080/api/register/v1/swagger-ui.html. If the request does not fail, you can then run the integration tests.