### Example GoodData local configuration file (gooddata.yaml) Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started An example structure of the `gooddata.yaml` configuration file. It defines profiles with host, token, workspace ID, and data source ID, along with the source directory for analytics and a default profile. ```yaml profiles: dev: host: https://mamma_mia.trial.cloud.gooddata.com/ token: $GOODDATA_API_TOKEN workspace_id: gdc_demo_730b50f8-8a93-4723-a872-64dca815a616 data_source_id: gdc_demo_c2066bb5-bb14-419a-8172-239a380ffb49 source_dir: analytics default_profile: dev ``` -------------------------------- ### Install GoodData CLI globally Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started Command to install the GoodData Command-line Interface (CLI) globally using npm. This makes the `gd` command available system-wide. ```bash npm i -g @gooddata/code-cli ``` -------------------------------- ### Verify GoodData CLI version Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started Command to check the installed version of the GoodData CLI. A successful installation should return a version number, for example, `0.5.0`. ```bash gd -v ``` -------------------------------- ### GoodData.CN Helm Chart Example for Azure Installation Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/installation-configuration This Helm chart snippet demonstrates a finalized configuration for a GoodData.CN installation on Azure, showcasing settings for license management, PostgreSQL, Dex IdP, pod disruption budgets, encryption keys, result cache, and storage configurations for Quiver and export controller. It provides a practical example of how various configuration options are applied in a real-world deployment. ```yaml license: existingSecret: $LICENSE_KEY_SECRET_NAME deployPostgresHA: false deployDexIdP: false service: postgres: host: $POSTGRESQL_HOSTNAME port: $POSTGRESQL_PORT username: $POSTGRESQL_ADMIN_NAME existingSecret: $POSTGRESQL_CREDENTIALS_SECRET_NAME podDisruptionBudget: maxUnavailable: 1 metadataApi: encryptor: existingSecret: $GD_ENCRYPTION_KEYSET_SECRET resultCache: totalCacheLimit: 10Gi quiver: fsDatasourceFsStorage: storageSize: 10Gi storageClassName: azureblob-nfs-premium datasourceFs: storageType: FS durableStorageType: FS fsDurableStorage: storageClassName: azureblob-nfs-premium exportController: fsExportStorage: storageClassName: azureblob-nfs-premium pvcRequestStorageSize: 10Gi ``` -------------------------------- ### Initialize GoodData local environment with CLI Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started Command to initialize a local GoodData environment within your project folder. This interactive process guides you through creating a `gooddata.yaml` configuration file. ```bash gd init ``` -------------------------------- ### Example JIT Provisioning Organization Setting Configuration Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/set-up-authentication This JSON configuration demonstrates a complete setup for Just-In-Time (JIT) provisioning within GoodData organization settings. It enables JIT, allows dynamic user group assignment via custom scope and claim names, and sets a default user group as a fallback. ```JSON { "data": { "attributes": { "content": { "enabled": true, "userGroupsScopeEnabled": true, "userGroupsScopeName": "gd_user_groups_scope", "userGroupsClaimName": "gd_user_grops_claim", "userGroupsDefaults": ["defaultUserGroup"] }, "type": "JIT_PROVISIONING" }, "id": "id1", "type": "organizationSetting" } } ``` -------------------------------- ### Example Output of Apache Pulsar Pod Status Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/k8s-resources Shows an example output of the `kubectl -n pulsar get pods` command, illustrating the expected running and completed states of various Pulsar components. ```shell NAME READY STATUS RESTARTS AGE pulsar-bookie-0 1/1 Running 0 2m11s pulsar-bookie-1 1/1 Running 0 2m11s pulsar-bookie-2 1/1 Running 0 2m11s pulsar-bookie-init-c4n6k 0/1 Completed 0 2m10s pulsar-broker-0 1/1 Running 0 2m11s pulsar-broker-1 1/1 Running 0 2m11s pulsar-pulsar-init-l8v47 0/1 Completed 0 2m10s pulsar-recovery-0 1/1 Running 0 2m11s pulsar-zookeeper-0 1/1 Running 0 2m11s pulsar-zookeeper-1 1/1 Running 0 90s pulsar-zookeeper-2 1/1 Running 0 54s ``` -------------------------------- ### Install Development Tools using Homebrew on Unix-like Systems Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/prepare This snippet provides commands to install essential development tools like kubectl, k3d, Helm, CURL, OpenJDK, and Tinkey on Unix-like systems using Homebrew. It also includes adding the Tinkey tap for proper installation. ```Shell brew install kubectl brew install k3d brew install helm brew install curl brew install openjdk brew tap tink-crypto/tink-tinkey https://github.com/tink-crypto/tink-tinkey brew install tinkey ``` -------------------------------- ### Deploy Changes using GoodData CLI Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started This command deploys your saved changes to the hostname and workspace defined in the `gooddata.yaml` configuration file. Ensure all changes are saved before execution. ```Shell gd deploy ``` -------------------------------- ### GoodData SDK Standalone Example: Read Workspace Catalog Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/python-sdk/latest/getting-started A complete standalone Python SDK example demonstrating connection setup and how to retrieve the full catalog for a specified workspace. It then iterates and prints datasets, metrics, attributes, and facts. ```Python from gooddata_sdk import GoodDataSdk # GoodData base URL, e.g. "https://www.example.com" host = "https://www.example.com" # GoodData user token token = "some_user_token" sdk = GoodDataSdk.create(host, token) workspace_id = "123" # Read catalog for demo workspace catalog = sdk.catalog_workspace_content.get_full_catalog(workspace_id) # Print all dataset in the workspace for dataset in catalog.datasets: print(dataset) # Print all metrics in the workspace for metric in catalog.metrics: print(metric) # Read list of attributes for demo workspace attributes = sdk.catalog_workspace_content.get_attributes_catalog(workspace_id) # Read list of facts for demo workspace facts = sdk.catalog_workspace_content.get_facts_catalog(workspace_id) ``` -------------------------------- ### Verify Docker Installation Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/prepare Execute this command in your terminal to confirm that Docker is correctly installed and running. It pulls and runs a minimal 'hello-world' image, printing a confirmation message upon successful execution. ```bash docker run hello-world ``` -------------------------------- ### Example Response for Dex User Creation API Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/organization This JSON snippet shows the typical response received after successfully creating a user in Dex. It includes the user's email, display name, and most importantly, the `authenticationId` which is crucial for linking the user in GoodData.CN. ```json { "email": "boss@alpha.example.com", "password": null, "displayName": "John Doe", "authenticationId": "CiQxOTIwNzc0Ny04ZWJkLTQ4ZjEtOGY3OC1iYjY2YmQ0ZjQwMjASBWxvY2Fs" } ``` -------------------------------- ### Clone GoodData workspace to local environment Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started Command to clone the GoodData workspace, as configured in `gooddata.yaml`, to your local file system. This creates an `analytics` folder containing your analytical objects. ```bash gd clone ``` -------------------------------- ### Initialize GoodData React App with App Toolkit Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/gooddata-ui/latest/quick_start Command to quickly set up a sample React application using the GoodData App Toolkit, providing a starting point for GoodData.UI development. ```Shell npx @gooddata/app-toolkit@latest init ``` -------------------------------- ### Expected GoodData local project folder structure Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started Illustrates the typical folder structure after initializing and cloning a GoodData workspace. It includes the `analytics` folder with subdirectories for datasets and metrics, alongside configuration files like `gooddata.yaml`, `.env`, and `.gitignore`. ```text root_folder └── analytics │ ├── datasets │ │ ├── dataset1.yaml │ │ ├── dataset2.yaml │ │ └── ... │ ├── metrics │ │ ├── metric1.yaml │ │ ├── metric2.yaml │ │ └── ... │ └── ... ├── gooddata.yaml ├── .env └── .gitignore ``` -------------------------------- ### Configure GoodData Host and Workspace in package.json Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/gooddata-ui/latest/quick_start This snippet demonstrates how to modify the `hostname` and `workspaceId` properties within your `package.json` file. This configuration is essential for connecting your GoodData React SDK application to your specific GoodData Cloud or GoodData.CN instance instead of the default public examples. ```diff - "hostname": "https://public-examples.gooddata.com", - "workspaceId": "demo", + "hostname": "https://", + "workspaceId": "", ``` -------------------------------- ### Example Output: Kubernetes Services Status Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/k8s-resources Illustrative output showing the expected status of services, particularly confirming that the `ingress-nginx-controller` service is of type `LoadBalancer` and has external IP addresses assigned, indicating successful ingress setup. ```Shell Output NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes ClusterIP 10.43.0.1 443/TCP 60s kube-system ingress-nginx-controller LoadBalancer 10.43.184.209 172.18.0.2,172.18.0.3,172.18.0.4 80:30599/TCP,443:31432/TCP 25s kube-system ingress-nginx-controller-admission ClusterIP 10.43.68.48 443/TCP 25s kube-system kube-dns ClusterIP 10.43.0.10 53/UDP,53/TCP,9153/TCP 55s ``` -------------------------------- ### Example Output: Kubernetes Pods Status Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/k8s-resources Illustrative output showing the expected status of pods after a successful k3d cluster and NGINX Ingress Controller setup. All pods should be in 'Running' or 'Completed' status. ```Shell Output NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6799fbcd5-nd72d 1/1 Running 0 53s kube-system helm-install-ingress-nginx-9brtw 0/1 Completed 0 53s kube-system ingress-nginx-controller-77dcf769dc-hdp2v 1/1 Running 0 35s kube-system local-path-provisioner-6f5d79df6-pknfx 1/1 Running 0 53s kube-system metrics-server-54fd9b65b-txm94 1/1 Running 0 53s kube-system svclb-ingress-nginx-controller-5606dd8e-8hmp2 2/2 Running 0 35s kube-system svclb-ingress-nginx-controller-5606dd8e-szt5z 2/2 Running 0 35s kube-system svclb-ingress-nginx-controller-5606dd8e-z57kw 2/2 Running 0 35s ``` -------------------------------- ### Install Azure CLI on macOS Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command installs the Azure Command-Line Interface (CLI) on macOS using Homebrew, a package manager. Azure CLI is essential for managing Azure resources from the terminal. ```Shell brew install azure-cli ``` -------------------------------- ### Describe GoodData Kubernetes Pod Details Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation Use this command to get detailed information about a specific GoodData Cloud Native Kubernetes pod, including its events, status, and resource usage. This is useful for diagnosing issues when a pod is in an 'Error' or 'CrashLoopBackOff' state. ```Bash kubectl -n gooddata-cn describe pod ``` -------------------------------- ### GoodData React App Development Scripts Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/gooddata-ui/latest/quick_start Common npm scripts included in the GoodData React project for starting the development server, bundling for production, clearing build results, and refreshing metadata. ```Shell npm start npm run build npm run clean npm run refresh-md ``` -------------------------------- ### Final customized-values.yaml Configuration for Local Installation Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation This is the complete `customized-values.yaml` file, consolidating all the configuration settings for a local GoodData.CN installation. It includes settings for metadata encryption, license, replica count, image repository, and component deployment. ```yaml metadataApi: encryptor: existingSecret: gdcn-encryption license: existingSecret: gooddata-cn-license replicaCount: 1 image: repositoryPrefix: "k3d-registry:5000" deployVisualExporter: false ``` -------------------------------- ### Install kubectl on macOS Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command installs kubectl, the Kubernetes command-line tool, on macOS using Homebrew. Kubectl is used to run commands against Kubernetes clusters. ```Shell brew install kubectl ``` -------------------------------- ### Example Response for JWK Confirmation Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/jwt-access-token This JSON block shows an example of the expected response when confirming a successfully uploaded JWK via a GET call to the same API endpoint. It displays the JWK's attributes, including its content (kty, alg, use, kid, x5t, x5c, e, n), ID, and type. ```json { "data": { "attributes": { "content": { "kty": "RSA", "alg": "RS256", "use": "sig", "kid": "67C2BC3D-32E4-4C8C-93EF-9B03F0E65A3A", "x5t": "oLe3EKODu72OtVftIu8_WGaPWk8", "x5c": [ "MIICujCCAaKgAwIBAgIECI8fsTANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExR0ZXN0LWFsZXgucmVhY2g1Lm5ldDAeFw0yMDA3MjkwOTM0MjlaFw0yMjAyMTcxNDIwMzNaMB8xHTAbBgVVQQDExR0ZXN0LWFsZXgucmVhY2g1Lm5ldMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlzRszUeQ4WiSqvmYxMP10ngm8ALIoUwMH7Oa8vrZgD5pqalPjetPAxeVcAv2gTyDlOwtB0fGvlQo6n78pd9pTbgrzUjhmFuYN6OCfT6eN/2wu0LmwryFS2mbh7/1DTiKd2tZaRalskPECXTKkeks85HVqanB0860BYlGvQvfgrvhCWXXFJJeXvNwYNFYdDdrFQhoeOAEvRDKg9DdHZf6XzSR6Qk3w51FKn2b7imen/G52itD/kIen1hqqB2Jwt9SWyX5MSGySY2QwC18F6Dfs8L+t0mwCo6grGW9264Z5vlO0PWssEqGIX/ez6nk1ZdHXhoXwJ0W+6QzeQlUN8jNoQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAETbMWro4HI4ZuqtnjMZrgEOpx6WhAtxpMx5XFPVWbdp/DpPySotoWbbD6qCtYc34E/ec7mH7aHVap+Gl2IyeSHTht4FXfF9q/1Oj/fis/4DDi1iq00rJsU18D71mZ9FGWCWlO1nhW1KSTGbRJ3E0wSrNabcvaXcwEHokR3zm+xfRWjtbrq2hQ19R16xyOLVy4zrF95QxP4UN+Cvm8nmYur6bSqv+gCMvDsl+O/gtRHGgpUukHEJwnee1R3+1aIv+9zOF3HaaUC5neOLBFITGmeXgi8G2IhbG+JoXh/GUkb66TZUlUAM3qXYNL9Nf+2MQ7nAPTXcxlmImFUUrnv0c3" ], "e": "AQAB", "n": "wAwTHQIRVkX4m6lI0ayO1b7FnR4hgH9KFQJPHO7i11zJ6exhs7nzS4WGTlOMzM_j17O3zcBEYfe1P65rhikRhRuYU3cBmqQGxTQEZcTqmOSZxjB7TPukp7R57IvbmYuHFZjxqSQQpazopvCCMHO5OECilT_Md_xuZtdZDehOYNwZM880kN0KKtGFDXDQzC110uk0R_mVatuPY1ZIe0lYnfkokKqfWma849zpcpJE5MiIIxTFsFANsRW3he72EodoDMEhYZnUOQ4dGk_t3OiY-NgtRKtI1vW5T-rsZ0Tl3oRqJmXPeE5TP8bC3n-nm_SJPtDyc2Q-8CO1EITIZR8Ikw" } }, "id": "jwk-1", "type": "jwk" } } ``` -------------------------------- ### Install Helm on macOS Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command installs Helm, the package manager for Kubernetes, on macOS using Homebrew. Helm helps manage Kubernetes applications through charts. ```Shell brew install helm ``` -------------------------------- ### Install pem-jwk tool Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/jwt-access-token This command installs the `pem-jwk` tool globally using npm, which is required for converting PEM files to JWK format. ```bash npm install -g pem-jwk ``` -------------------------------- ### Install GoodData.CN with Helm Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation Install GoodData.CN into your Kubernetes cluster using the Helm chart. This command applies your custom configurations from `customized-values.yaml` to the deployment in the `gooddata-cn` namespace. ```bash helm install gooddata-cn gooddata/gooddata-cn --namespace gooddata-cn -f customized-values.yaml ``` -------------------------------- ### Add GoodData Helm Repository Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation Add the official GoodData Helm chart repository to your Helm configuration. This allows you to access and install GoodData.CN charts directly via Helm. ```bash helm repo add gooddata https://charts.gooddata.com/ helm repo update ``` -------------------------------- ### Export environmental variables from file Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command sources the `environmental_variables.sh` file, making all defined variables available in the current shell session. This is a crucial step to ensure that the installation process can access the configured settings. ```bash source environmental_variables.sh ``` -------------------------------- ### Install Docker on Ubuntu and Enable Non-Sudo Access Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/prepare This snippet provides commands for installing Docker CE on Ubuntu, including adding the Docker GPG key and repository. It also includes steps to enable running Docker commands without 'sudo' by adding the current user to the 'docker' group, which requires logging out and back in or using 'newgrp docker'. ```Shell # Install Docker: sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce # Enable running Docker without sudo: sudo groupadd docker sudo usermod -aG docker $USER newgrp docker ``` -------------------------------- ### Install GoodData CLI Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/cli This command installs the GoodData Command-line Interface globally using npm, making the `gd` command available in your terminal for interacting with GoodData. ```javascript npm i -g @gooddata/code-cli ``` -------------------------------- ### Create Script to Transfer GoodData.CN Docker Images Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation This Bash script automates the pulling, tagging, and pushing of essential GoodData.CN Docker images to a specified local registry. It ensures all necessary components are available before Helm installation. ```bash #!/bin/bash IMAGE_TAG="3.13.0" REGISTRY="localhost:5000" IMAGES=( "afm-exec-api" "analytical-designer" "api-gateway" "apidocs" "auth-service" "automation" "calcique" "dashboards" "dex" "export-builder" "export-controller" "gateway-api-gw" "home-ui" "ldm-modeler" "measure-editor" "metadata-api" "organization-controller" "quiver" "result-cache" "scan-model" "sql-executor" "tabular-exporter" "tools" "web-components" ) img_cp() { image=$1 docker pull "gooddata/$image:$IMAGE_TAG" docker tag "gooddata/$image:$IMAGE_TAG" "$REGISTRY/$image:$IMAGE_TAG" docker push "$REGISTRY/$image:$IMAGE_TAG" } for image in "${IMAGES[@]}"; do img_cp "$image" & done wait ``` -------------------------------- ### Monitor GoodData.CN Pod Status Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation Check the status of all GoodData.CN pods within the `gooddata-cn` namespace in your Kubernetes cluster. This helps verify that all components are running and ready after installation. ```bash kubectl -n gooddata-cn get pods ``` -------------------------------- ### Create Kubernetes Namespace for GoodData.CN Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/aks-resources Creates a dedicated Kubernetes namespace named 'gooddata-cn' for the GoodData.CN installation. ```bash kubectl apply -f - < environmental_variables.sh # You will assign some the commented out environmental # variable values later in the installation process. # Azure AZ_RESOURCE_GROUP="gd-rg" AZ_LOCATION="eastus2" # REVIEW # PostgreSQL PG_NAME="gd-db" PG_ADMIN_NAME="postgres" # Don't change this! PG_ADMIN_PASSWORD="" # FILL IN PG_HOSTNAME="gd-db.postgres.database.azure.com" PG_PORT=5432 PG_CREDENTIALS_SECRET="gd-pg-secret" # Kubernetes AZ_AKS="gd-aks-cluster" AZ_AKS_NODE_RESOURCE_GROUP="gd-rg-aks-nodes" PG_VNET="gd-vnet" PG_SUBNET="gd-subnet" # AZ_AKS_NODE_VNET="" # AZ_AKS_NODE_VNET_ID="" # PG_VNET_ID="" # PG_SUBNET_ID="" # DNS DNS_ZONE="" # FILL IN DNS_RESOURCE_GROUP="gd-rg" # Change this if your DNS zone is in different RG USER_ASSIGNED_IDENTITY_NAME="externaldns" FEDERATED_IDENTITY_CREDENTIAL_NAME="externaldns" SERVICE_ACCOUNT_NAMESPACE="external-dns" SERVICE_ACCOUNT_NAME="external-dns" ACME_EMAIL="" # FILL IN # AKS_OIDC_ISSUER="" # SUBSCRIPTION_ID="" # TENANT_ID="" # USER_ASSIGNED_CLIENT_ID="" # DNS_ID="" # RESOURCE_GROUP_ID="" # Azure Storage Account AZ_STORAGE_ACCOUNT_NAME="gd-storage-user" AZ_STORAGE_CONTAINER_NAME="gd-storage-container" AZ_STORAGE_SECRET_NAME="gd-storage-secret" # AZ_STORAGE_KEY="" # GoodData.CN GD_LICENSE_KEY="" # FILL IN GD_LICENSE_KEY_SECRET="gd-license-secret" GD_ENCRYPTION_KEYSET_SECRET="gd-keyset-secret" GD_ORGANIZATION_HOSTNAME="" # FILL IN, use "yourcustomsubdomain.your_dns_zone" GD_ORGANIZATION_ID="gd-org-id" GD_ORGANIZATION_NAME="gooddata-org-name" GD_ORGANIZATION_DISPLAY_NAME="GoodData Organization" GD_ADMIN_USER_NAME="bootstrapAdminUser" GD_ADMIN_USER_PASSWORD="" # FILL IN GD_CERT_SELF_SIGNED_SECRET="gd-cert-secret" # GD_ADMIN_USER_PASSWORD_SALTED="" # GD_BOOTSTRAP_API_TOKEN="" # Authentication OAUTH_ISSUER_LOCATION="" # FILL IN OAUTH_CLIENT_ID="" # FILL IN OAUTH_CLIENT_SECRET="" # FILL IN USER_SUB_CLAIM="" # FILL IN EOF ``` -------------------------------- ### Log in to Azure CLI Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command initiates the login process for the Azure CLI, prompting the user to authenticate with their Azure account. Successful login is required to interact with Azure resources. ```Shell az login ``` -------------------------------- ### JSON: Example Definition for Fresh Color Palette Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/customize-appearance/create-custom-color-palettes A JSON array illustrating the structure for defining a custom color palette, including unique GUIDs and RGB values for each color entry. ```JSON [ { "guid": "01", "fill": { "r": 140, "g": 125, "b": 232 } }, { "guid": "02", "fill": { "r": 125, "g": 219, "b": 232 } }, { "guid": "03", "fill": { "r": 125, "g": 232, "b": 174 } }, { "guid": "04", "fill": { "r": 211, "g": 232, "b": 125 } }, { "guid": "05", "fill": { "r": 232, "g": 221, "b": 125 } }, { "guid": "06", "fill": { "r": 82, "g": 64, "b": 191 } }, { "guid": "07", "fill": { "r": 64, "g": 176, "b": 191 } }, { "guid": "08", "fill": { "r": 51, "g": 204, "b": 121 } }, { "guid": "09", "fill": { "r": 173, "g": 204, "b": 51 } }, { "guid": "10", "fill": { "r": 204, "g": 189, "b": 51 } } ] ``` -------------------------------- ### Deploy GoodData.CN Helm Chart on Azure AKS Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/installation This command executes a Helm upgrade operation to install or update the GoodData.CN Helm chart within the `gooddata-cn` namespace. It waits for the deployment to complete, sets a timeout, specifies the Helm chart repository, and applies configurations from the `gooddata-values.yaml` file. ```bash helm -n gooddata-cn upgrade --install gooddata-cn gooddata-cn \ --wait --timeout 20m --repo https://charts.gooddata.com \ --version 3.14.0 -f gooddata-values.yaml ``` -------------------------------- ### Calculate Project Duration with DATETIME_DIFF Prior to Aggregation Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/create-metrics/maql/time-arithmetics/datetime-diff This example demonstrates how to apply `DATETIME_DIFF` before aggregation to calculate the total duration of projects. It calculates the difference between `start_date` and `end_date` for each row in the 'project' dataset and then sums these differences to get a total duration. ```MAQL SELECT SUM(SELECT DATETIME_DIFF({label/start_date.day}, {label/end_date.day}) BY {dataset/project}) ``` -------------------------------- ### Initialize Node.js Project Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/jwt-access-token/jwt-javascript-example This command initializes a new Node.js project, creating a `package.json` file to manage project metadata and dependencies. It's the first step in setting up a new Node.js application. ```bash npm init ``` -------------------------------- ### Example profiles.yaml Configuration File Structure Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/python-sdk/latest/getting-started Illustrates the structure of a `profiles.yaml` file used for configuring GoodData SDK connections. It includes host, token, and optional custom headers or extra user agent settings. ```YAML default: host: http://localhost:3000 token: YWRtaW46Ym9vdHN0cmFwOmFkbWluMTIz custom_headers: #optional Host: localhost extra_user_agent: xyz #optional ``` -------------------------------- ### Wrap React App Content with GoodData ThemeProvider Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/gooddata-ui/latest/quick_start This snippet shows how to integrate the `ThemeProvider` component into your React application's structure, typically by wrapping your main content alongside `BackendProvider` and `WorkspaceProvider`. This allows the `ThemeProvider` to load and apply themes from the GoodData server. ```diff +
...
+
``` -------------------------------- ### Retrieve Organization Declarative Layout with cURL Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/organization-api/backups This example demonstrates how to retrieve all entities associated with the organization specified in the hostname of the call. The output is stored in a JSON file named `organization-layout.json` by making a GET request to the `/api/v1/layout/organization` endpoint. ```bash curl -H "Authorization: Bearer $API_TOKEN" \ -X GET \ $HOST_URL/api/v1/layout/organization > organization-layout.json ``` -------------------------------- ### Example GoodData Project Configuration with Multiple Profiles Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/structures Provides a practical example of a gooddata.yaml file, demonstrating how to set up multiple profiles (local, dev, prod) with specific host URLs, API token environment variables, workspace IDs, and data source IDs. It also shows how to define the source_dir and default_profile. ```YAML profiles: local: host: https://localhost:3000/ token: $GOODDATA_API_TOKEN_LOCAL workspace_id: gdc_demo_730b50f8-8a93-4723-a872-64dca815a616 data_source_id: gdc_demo_c2066bb5-bb14-419a-8172-239a380ffb49 dev: host: https://mamma_mia.trial.cloud.gooddata.com/ token: $GOODDATA_API_TOKEN_DEV workspace_id: gdc_demo_730b50f8-8a93-4723-a872-64dca815a616 data_source_id: gdc_demo_c2066bb5-bb14-419a-8172-239a380ffb49 prod: host: https://my-company.gooddata.com/ token: $GOODDATA_API_TOKEN_PROD workspace_id: gdc_demo_730b50f8-8a93-4723-a872-64dca815a616 data_source_id: gdc_demo_c2066bb5-bb14-419a-8172-239a380ffb49 source_dir: analytics default_profile: dev ``` -------------------------------- ### Install Cert Manager with Helm Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/aks-resources Installs Cert Manager using Helm, pulling from the Jetstack repository. It ensures CRDs are installed and waits for the installation to complete. ```bash helm upgrade --install cert-manager cert-manager \ --repo https://charts.jetstack.io --namespace cert-manager \ --set installCRDs=true --wait ``` -------------------------------- ### Initialize GoodData SDK with Host and Token Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/create-visualizations/export This snippet demonstrates how to initialize the GoodData SDK by providing the host URL and a personal access token. The `GoodDataSdk.create` method establishes the connection for subsequent API calls to your GoodData instance. ```python host = "https://www.example.com" token = "" sdk = GoodDataSdk.create(host, token) ``` -------------------------------- ### Configure Ingress for Internal Dex OIDC Provider Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/installation-configuration If you choose to keep the internal Dex OIDC provider enabled, this configuration allows you to specify the ingress host where the identity provider will run. It includes options for TLS secret names and an example annotation for cert-manager integration. ```YAML dex: ingress: authHost: 'auth.company.com' tls: authSecretName: gooddata-cn-auth-tls # annotations: # cert-manager.io/cluster-issuer: letsencrypt-production ``` -------------------------------- ### Download and Extract Tinkey Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/prepare This command downloads the Tinkey utility, a command-line tool for managing Tink keysets, from Google Cloud Storage and extracts its contents. Tinkey is used for cryptographic operations. ```Shell curl -fsL https://storage.googleapis.com/tinkey/tinkey-1.9.0.tar.gz \ | tar xzvf - ``` -------------------------------- ### Example JIT Provisioning ID Token Payload Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/manage-organization/set-up-authentication This JSON object illustrates a typical ID token payload structure for Just-In-Time (JIT) user provisioning. It includes standard OIDC claims (`sub`, `name`, `email`) and the GoodData-specific `urn.gooddata.user_groups` claim, which can be used to automatically assign users to groups upon login. ```json { "sub": "", "name": "User Name", "given_name": "User", "family_name": "Name", "email": "user.name@gooddata.com", "ver": 1, "iss": "https://issuer/oauth2/default", "aud": "", "iat": 1234567890, "exp": 1234567890, "jti": "ID.example", "amr": ["pwd"], "idp": "", "nonce": "nonce", "preferred_username": "user.name@gooddata.com", "auth_time": 1000, "at_hash": "preview_at_hash", "urn.gooddata.user_groups": [ "userGroupA", "userGroupB", "adminUserGroup" ] } ``` -------------------------------- ### Initialize GoodData CLI Environment Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/cli Initializes a local GoodData environment by creating essential configuration files: `gooddata.yaml` for settings, `.env` for environmental variables, and `.gitignore` for version control, preparing the directory for analytics development. ```shell gd init ``` -------------------------------- ### Disable Slide Deck Exports via Organization Settings API with cURL Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/create-dashboards/export/export-templates This cURL command demonstrates how to interact with the `api/v1/entities/organizationSettings` endpoint. Although it uses a GET request, it includes a JSON payload in the request body, which is intended to specify the `ENABLE_SLIDES_EXPORT` setting to `false` for disabling slide deck exports at the organization level. This example shows the structure for updating organization settings. ```shell curl '$HOST_URL/api/v1/entities/organizationSettings' \ -X GET \ -H "Authorization: Bearer $API_TOKEN" \ -H 'Content-Type: application/vnd.gooddata.api+json' \ -d '{ "data": { "attributes": { "content": { "value": false }, "type": "ENABLE_SLIDES_EXPORT" }, "id": "", "type": "organizationSetting" } } ' ``` -------------------------------- ### Execute Docker Image Transfer Script Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-locally/installation Run the `imgcp.sh` script to transfer the GoodData.CN Docker images to your local registry. This step is crucial for making the images accessible for the Helm deployment. ```bash bash imgcp.sh ``` -------------------------------- ### Define a GoodData Metric in YAML Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/api-and-sdk/vs-code-extension/getting-started This YAML snippet defines a new analytical metric named 'pending_revenue'. It specifies the metric's type, unique ID, display title, a descriptive explanation, and the MAQL (Multi-dimensional Analytical Query Language) query used to calculate its value. The MAQL query calculates the sum of order unit prices for items currently 'In Cart'. ```yaml type: metric id: pending_revenue title: Pending revenue description: The sum of orders in carts maql: select SUM({fact/order_unit_price}) WHERE {label/order_status}= "In Cart" ``` -------------------------------- ### Install NGINX Ingress Controller with Helm Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/aks-resources This command uses Helm to install or upgrade the NGINX Ingress Controller. It specifies the official Helm repository, the target namespace 'ingress-nginx', and applies the custom configurations defined in 'ingress-values.yaml'. ```Shell helm upgrade --install ingress-nginx ingress-nginx \ --repo https://kubernetes.github.io/ingress-nginx \ -n ingress-nginx --values ingress-values.yaml ``` -------------------------------- ### List Available Azure Locations with Azure CLI Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/azure-resources Use this Azure CLI command to retrieve a comprehensive list of all available Azure regions. This helps in selecting an optimal location for deploying resources, considering factors like proximity, server configurations, and vCPU availability. ```Azure CLI az account list-locations ``` -------------------------------- ### Install Apache Pulsar using Helm Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/install/install-on-azure/aks-resources This command uses Helm to install or upgrade the Apache Pulsar chart from its official repository into the 'pulsar' namespace. It specifies chart version 3.9.0 and applies the configurations defined in the `pulsar-values.yaml` file. ```bash helm upgrade --install pulsar pulsar \ --repo https://pulsar.apache.org/charts \ -n pulsar --version 3.9.0 --values pulsar-values.yaml ``` -------------------------------- ### SQL Syntax Examples for LOG and SQRT Functions Source: https://www.gooddata.com/docs/cloud-native/3.35/docs/cloud-native/3.35/create-metrics/maql/math/log Provides examples of how to use the LOG function within a SQL SELECT statement. It also includes a syntax example for the SQRT function, demonstrating its usage with a number and an optional base. ```SQL SELECT LOG(…) SELECT SQRT(number, base) ```