Skip to content

Instantly share code, notes, and snippets.

@mbarnes
Last active February 27, 2025 15:54
Show Gist options
  • Save mbarnes/fda6047c9b236473f07f310250ce9bc3 to your computer and use it in GitHub Desktop.
Save mbarnes/fda6047c9b236473f07f310250ce9bc3 to your computer and use it in GitHub Desktop.
Bash aliases to help test the ARO-HCP resource provider
#!/bin/bash
#
# Helper functions for testing the ARO-HCP resource provider.
#
# These assume the RP is running locally or using port forwarding.
#
CLUSTER=${CLUSTER:-mbarnestest}
NODE_POOL=${NODE_POOL:-np-1}
API_VERSION=${API_VERSION:-2024-06-10-preview}
if [ ! -v AZURE_TENANT_ID ]
then
export AZURE_TENANT_ID=$(az account show --query tenantId --output tsv)
fi
if [ ! -v AZURE_SUBSCRIPTION_ID ]
then
export AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)
fi
export ARO_HCP_SERVER="localhost:8443"
# For interacting with AKS
alias k=kubectl
export KUBECONFIG=/home/mbarnes/.kube/hcp-underlay-usw3mbar-svc.kubeconfig
# Log into OpenShift Cluster Manager
alias ocm_login="ocm login --url=http://localhost:8000 --use-auth-code"
# Watch pods in aro-hcp namespace
alias aro_hcp_pods="watch kubectl get pods --namespace aro-hcp --output wide"
# Scale aro-hcp-frontend/backend to one replica
alias aro_hcp_frontend_scale="kubectl scale --replicas 1 --namespace aro-hcp deployment/aro-hcp-frontend"
alias aro_hcp_backend_scale="kubectl scale --replicas 1 --namespace aro-hcp deployment/aro-hcp-backend"
# Follow Resource Provider pod logs
alias aro_hcp_frontend_logs="kubectl logs --follow --namespace aro-hcp \$(kubectl get pods --namespace aro-hcp --selector app=aro-hcp-frontend --output=name | head --lines=1) | jq 'select(.request_path != \"/healthz\")'"
alias aro_hcp_backend_logs="kubectl logs --follow --namespace aro-hcp \$(kubectl get pods --namespace aro-hcp --selector app=aro-hcp-backend --output=name | head --lines=1) | jq '.'"
# Follow clusters-service pod logs
alias clusters_service_logs="kubectl logs --follow --namespace cluster-service \$(kubectl get pods --namespace cluster-service --selector app=clusters-service --output=name | head --lines=1)"
# Port-forward to aro-hcp-frontend or clusters-service
alias aro_hcp_frontend_port_forward="kubectl port-forward --namespace aro-hcp svc/aro-hcp-frontend 8443"
alias clusters_service_port_forward="kubectl port-forward --namespace cluster-service svc/clusters-service 8000"
function aro_hcp_get_subscription {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}?api-version=2.0\""
}
function aro_hcp_put_subscription {
STATE=${1:-Registered}
AZURE_SUBSCRIPTION_ID_DATA='{\"state\":\"'${STATE}'\", \"registrationDate\": \"'$(date --iso-8601=seconds)'\", \"properties\": {\"tenantId\": \"'${AZURE_TENANT_ID}'\"}}'
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request PUT \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}?api-version=2.0\" --json \"${AZURE_SUBSCRIPTION_ID_DATA}\""
}
function aro_hcp_list_clusters_by_subscription {
URL="http://${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters?api-version=${API_VERSION}"
bash -v -c "curl --silent --referer "${URL}" --request GET \"${URL}\""
}
function aro_hcp_list_clusters_by_location {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/locations/${LOCATION:-westus3}/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters?api-version=${API_VERSION}\""
}
function aro_hcp_list_clusters_by_resource_group {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters?api-version=${API_VERSION}\""
}
function aro_hcp_list_node_pools {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}/nodePools?api-version=${API_VERSION}\""
}
function aro_hcp_get_cluster {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}?api-version=${API_VERSION}\""
}
function aro_hcp_put_cluster {
IDENTITY_URL='https://dummyhost.identity.azure.net'
SYSTEM_DATA='{\"createdBy\": \"aro-hcp-local-testing\", \"createdByType\": \"User\", \"createdAt\": \"'$(date --iso-8601=seconds)'\"}'
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request PUT \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}?api-version=${API_VERSION}\" -H \"X-Ms-Arm-Resource-System-Data: ${SYSTEM_DATA}\" -H \"X-Ms-Identity-Url: ${IDENTITY_URL}\" --json @${1:-cluster.json}"
}
function aro_hcp_patch_cluster {
SYSTEM_DATA='{\"lastModifiedBy\": \"aro-hcp-local-testing\", \"lastModifiedByType\": \"User\", \"lastModifiedAt\": \"'$(date --iso-8601=seconds)'\"}'
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request PATCH \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}?api-version=${API_VERSION}\" -H \"X-Ms-Arm-Resource-System-Data: ${SYSTEM_DATA}\" --json @${1:-cluster_patch.json}"
}
function aro_hcp_delete_cluster {
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request DELETE \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}?api-version=${API_VERSION}\""
}
function aro_hcp_get_node_pool {
bash -v -c "curl --silent --referer "http://${ARO_HCP_SERVER}" --request GET \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}/nodePools/${NODE_POOL}?api-version=${API_VERSION}\""
}
function aro_hcp_put_node_pool {
SYSTEM_DATA='{\"createdBy\": \"aro-hcp-local-testing\", \"createdByType\": \"User\", \"createdAt\": \"'$(date --iso-8601=seconds)'\"}'
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request PUT \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}/nodePools/${NODE_POOL}?api-version=${API_VERSION}\" -H \"X-Ms-Arm-Resource-System-Data: ${SYSTEM_DATA}\" --json @${1:-node_pool.json}"
}
function aro_hcp_patch_node_pool {
SYSTEM_DATA='{\"lastModifiedBy\": \"aro-hcp-local-testing\", \"lastModifiedByType\": \"User\", \"lastModifiedAt\": \"'$(date --iso-8601=seconds)'\"}'
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request PATCH \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}/nodePools/${NODE_POOL}?api-version=${API_VERSION}\" -H \"X-Ms-Arm-Resource-System-Data: ${SYSTEM_DATA}\" --json @${1:-node_pool_patch.json}"
}
function aro_hcp_delete_node_pool {
bash -v -c "curl --include --silent --referer "http://${ARO_HCP_SERVER}" --request DELETE \"${ARO_HCP_SERVER}/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourceGroups/mbarnes-dev-rg/providers/Microsoft.RedHatOpenShift/hcpOpenShiftClusters/${CLUSTER}/nodePools/${NODE_POOL}?api-version=${API_VERSION}\""
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment