Advertisement
Guest User

Untitled

a guest
Mar 5th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. set -e
  4.  
  5. kafkaProducer() {
  6. echo "Post Kafka message for resource with id $1"
  7. KAFKA_POST_MSG="bin/kafka-console-producer.sh --producer.config /opt/kafka/ssl/vault/client-ssl.properties --broker-list kafka-svc:9092 --topic rawUCMDBNotification --property 'parse.key=true' --property 'key.separator=@' <<EOF
  8. UKEY470@{\"action\":\"DELETE\",\"time\":\"2018-12-14T13:24:32Z\",\"ci\":{\"ucmdbId\":\"$1\",\"type\":\"host_node\",\"properties\":{}}}
  9. EOF"
  10. echo "KAFKA POST MSG:"
  11. echo "$KAFKA_POST_MSG"
  12. kubectl exec -t -n ${DCA_NS} ${KAFKA_POD} -c kafka -- sh -c "$KAFKA_POST_MSG"
  13. }
  14.  
  15. setupKafka() {
  16. KAFKA_POD=`kubectl get po -n${DCA_NS} | grep -i running | grep kafka-broker-1 | grep -Po "^\S+"`
  17. echo "Using KAFKA pod: ${KAFKA_POD}"
  18. KAFKA_CLIENT_SCRIPT="cat << EOF > test-kafka-client2.sh
  19. #!/bin/bash
  20.  
  21. cd /opt/kafka/ssl/vault
  22.  
  23. openssl pkcs12 -export -name servercert -in server.crt -inkey server.key -out keystore.p12 -password pass:changeit
  24.  
  25. keytool -delete -alias servercert -destkeystore keystore.jks -deststorepass changeit || true
  26.  
  27. keytool -noprompt -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias servercert -srcstorepass changeit -deststorepass changeit
  28.  
  29. (csplit -z -f singlecert- issue_ca.crt '/-----BEGIN CERTIFICATE-----/' '{*}' && \
  30. ls singlecert-* | xargs -i{} -n1 keytool -delete -alias {} -file {} -keystore cacerts -storepass changeit -noprompt; \
  31. ls singlecert-* | xargs -i{} -n1 keytool -importcert -alias {} -trustcacerts -file {} -keystore cacerts -storepass changeit -noprompt; \
  32. rm -rf singlecert-* )
  33.  
  34. touch client-ssl.properties
  35.  
  36. echo 'security.protocol=SSL
  37. ssl.truststore.location=/opt/kafka/ssl/vault/cacerts
  38. ssl.truststore.password=changeit
  39. ssl.keystore.location=/opt/kafka/ssl/vault/keystore.jks
  40. ssl.keystore.password=changeit' > client-ssl.properties
  41.  
  42. EOF
  43. chmod +x test-kafka-client2.sh
  44. ./test-kafka-client2.sh
  45. "
  46. kubectl exec -t -n ${DCA_NS} ${KAFKA_POD} -c kafka -- sh -c "$KAFKA_CLIENT_SCRIPT"
  47. }
  48.  
  49. INGRESS_FQDN=`hostname -f`
  50. echo "Using Ingress FQDN: ${INGRESS_FQDN}"
  51.  
  52. DCA_NS=`kubectl get ns | grep dca | cut -f1 -d" "`
  53. echo "Using DCA namespace: ${DCA_NS}"
  54.  
  55. DCA_API_POD=`kubectl get po -n${DCA_NS} | grep -i running | grep dca-api-deploy- | grep -Po "^\S+"`
  56. echo "Using DCA API pod: ${DCA_API_POD}"
  57.  
  58. echo "Retrieving DCA admin credentials..."
  59. DCA_ADMIN_USER=`kubectl exec -ti -n${DCA_NS} ${DCA_API_POD} -c dca-api -- get_secret DCA_USERNAME_KEY | sed 's/PASS=//' | tr -d '\r'`
  60. DCA_ADMIN_PASSWORD=`kubectl exec -ti -n${DCA_NS} ${DCA_API_POD} -c dca-api -- get_secret DCA_PASSWORD_KEY | sed 's/PASS=//' | tr -d '\r'`
  61.  
  62. echo "Retrieving IDM transport credentials..."
  63. IDM_TRANSPORT_USER=`kubectl exec -ti -n${DCA_NS} ${DCA_API_POD} -c dca-api -- get_secret IDM_TRANSPORT_USERNAME_KEY | sed 's/PASS=//' | tr -d '\r'`
  64. IDM_TRANSPORT_PASSWORD=`kubectl exec -ti -n${DCA_NS} ${DCA_API_POD} -c dca-api -- get_secret IDM_TRANSPORT_PASSWORD_KEY | sed 's/PASS=//' | tr -d '\r'`
  65.  
  66. IDM_BASIC_AUTH=`echo -n ${IDM_TRANSPORT_USER}:${IDM_TRANSPORT_PASSWORD} | base64`
  67.  
  68. echo "Retrieving IDM auth token ..."
  69. IDM_AUTH_RESPONSE=`curl -ks -H "Content-Type: application/json;charset=utf-8" -H "Authorization: Basic $IDM_BASIC_AUTH" -d @- "https://$INGRESS_FQDN:5443/idm-service/v2.0/tokens" <<EOF
  70. {"passwordCredentials": {"password": "$DCA_ADMIN_PASSWORD","username": "$DCA_ADMIN_USER"},"tenantName": "provider"}
  71. EOF`
  72.  
  73. XAUTH_TOKEN=`echo "$IDM_AUTH_RESPONSE" | jq -r .token.id`
  74.  
  75. echo "Retrieving all DCA resources"
  76.  
  77. PGUSER=`kubectl exec -ti -ndca1 $DCA_API_POD -c dca-api -- get_secret DCA_DB_USER_KEY | sed 's/PASS=//' | tr -d '\r'`
  78. PGPASSWORD=`kubectl exec -ti -ndca1 $DCA_API_POD -c dca-api -- get_secret DCA_DB_PASSWORD_KEY | sed 's/PASS=//' | tr -d '\r'`
  79. PGNODE1=`kubectl get po -n core | grep itom-postgresql-node1- | grep -Po "^\S+"`
  80.  
  81. kubectl exec -t -ncore $PGNODE1 -c itom-postgresql-node1 -- sh -c "PGPASSWORD=$PGPASSWORD psql -t -U db_admin -h cdf-pgnode1 -d dca_db -c 'SELECT resource_uuid FROM RESOURCE_VW;'" | tr -d '\r' | head -n -1 | sed 's/^ *//' > all-dca-resources.txt
  82.  
  83. echo "Determining the list of DCA resources that are not available in UCMDB"
  84.  
  85. UCMDB_PASSWORD=`kubectl exec -ti -n${DCA_NS} ${DCA_API_POD} -c dca-api -- get_secret ADMIN_PASSWORD_VAULT_KEY | sed 's/PASS=//' | tr -d '\r'`
  86.  
  87. UCMDB_AUTH_RESPONSE=`curl -X POST -ks -d @- -H "Content-Type: application/json" "https://${INGRESS_FQDN}:33111/rest-api/authenticate"<<EOF
  88. {"username": "admin", "password": "$UCMDB_PASSWORD", "clientContext": 1}
  89. EOF`
  90.  
  91. UCMDB_AUTH_TOKEN=`echo "$UCMDB_AUTH_RESPONSE" | jq -r .token`
  92.  
  93.  
  94. for RESOURCE_ID in $(cat all-dca-resources.txt)
  95. do
  96. RESP_CODE=`curl -ks -o /dev/null -w "%{http_code}" -H "Authorization: Bearer ${UCMDB_AUTH_TOKEN}" "https://${INGRESS_FQDN}:33111/rest-api/dataModel/ci/${RESOURCE_ID}"`
  97. if [ "$RESP_CODE" -eq "200" ] ; then
  98. echo "Resource $RESOURCE_ID found in UCMDB"
  99. # remove next line in prod.
  100. elif [ "$RESP_CODE" -eq "404" ] ; then
  101. echo "Resource $RESOURCE_ID does not exist in UCMDB"
  102. echo $RESOURCE_ID >> dca-resources-not-in-ucmdb.txt
  103. else
  104. echo "The call to UCMDB failed: HTTP [${RESP_CODE}]"
  105. fi
  106. done
  107.  
  108. echo "Setup Kafka client"
  109. setupKafka
  110.  
  111. echo "Removing DCA resources not fuond in UCMDB"
  112. for RESOURCE_ID in $(cat dca-resources-not-in-ucmdb.txt)
  113. do
  114. kafkaProducer $RESOURCE_ID
  115. done
  116.  
  117. echo "All done! exiting..."
  118.  
  119. set +e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement