diff --git a/contrib/nix/README.md b/contrib/nix/README.md index 40920bfc03..d768f08edb 100644 --- a/contrib/nix/README.md +++ b/contrib/nix/README.md @@ -57,3 +57,11 @@ kafka => kafka-topics.sh --bootstrap-server localhost:9092 - confluent schema-registry => curl http://localhost:8081 ``` + +## Environemnt Check + +you only need install nix to run it! + +``` +nix-shell datahub-check.nix -A gms +``` diff --git a/contrib/nix/datahub-check.nix b/contrib/nix/datahub-check.nix new file mode 100644 index 0000000000..aee544283f --- /dev/null +++ b/contrib/nix/datahub-check.nix @@ -0,0 +1,99 @@ +{ pkgs ? import {} }: + +with pkgs ; +let + datahub = import ./datahub-config.nix ; + build-prompt = '' + echo This derivation is not buildable, instead run it using nix-shell. + exit 1 + '' ; + parse-uri = uri : + let + uriSchemaSplit = builtins.split "://" uri ; + schema = builtins.head uriSchemaSplit ; + uriNoSchema = lib.last uriSchemaSplit ; + + uriPathSplit = builtins.split "/" uriNoSchema ; + hostPort = builtins.head uriPathSplit ; + path = lib.optionalString (builtins.length uriPathSplit > 1) (lib.last uriPathSplit) ; + + hostPortSplit = builtins.split ":" hostPort ; + host = builtins.head hostPortSplit ; + port = lib.last hostPortSplit ; + + in { inherit schema host port path ; } ; + gms = + let + gms-conf = datahub.services.linkedin-datahub-gms ; + jdbc-uri = parse-uri gms-conf.sandbox.jdbc.uri ; + elasticsearch-uri = parse-uri (builtins.head gms-conf.sandbox.elasticsearch.uris) ; + neo4j-uri = parse-uri gms-conf.sandbox.neo4j.uri ; + kafka-uri = parse-uri (builtins.head gms-conf.sandbox.kafka.uris) ; + schema-registry-uri = parse-uri (builtins.head gms-conf.sandbox.schema-registry.uris) ; + gms-uri = parse-uri gms-conf.listener ; + + check-port = name : uri : '' + echo " [${name}] checking port..." + ${netcat-gnu}/bin/nc -z ${uri.host} ${uri.port} + if [ $? != 0 ]; then echo " [${name}] !ERROR: can not connec to ${uri.host}:${uri.port}" && exit 1; fi + '' ; + check-jdbc-user = '' + # echo " [jdbc] checking username and password..." + '' ; + check-jdbc-table = '' + # echo " [jdbc] checking [metadata_aspect] table..." + '' ; + check-elasticsearch-index = '' + # echo " [elasticsearch] checking [corpuserinfodocument, datasetdocument] indices ..." + '' ; + check-neo4j-user = '' + # echo " [neo4j] checking user and password..." + '' ; + check-kafka-topic = '' + # echo " [kafka] checking [MetadataChangeEvent, MetadataAuditEvent] indices..." + '' ; + in + stdenv.mkDerivation { + name = "gms-check" ; + + buildInputs = [ netcat-gnu ] ; + + preferLocalBuild = true ; + buildCommand = build-prompt ; + + shellHookOnly = true; + shellHook = '' + echo "******** checking sandbox.jdbc " + ${check-port "jdbc" jdbc-uri} + ${check-jdbc-user } + ${check-jdbc-table } + + echo "******** checking sandbox.elasticsearch " + ${check-port "elasticsearch" elasticsearch-uri} + ${check-elasticsearch-index} + + echo "******** checking sandbox.neo4j " + ${check-port "neo4j" neo4j-uri} + ${check-neo4j-user } + + echo "******** checking sandbox.kafka " + ${check-port "kafka" kafka-uri} + ${check-kafka-topic } + + echo "******** checking sandbox.schema-registry " + ${check-port "schema-registry" schema-registry-uri} + + echo "******** checking gms " + ${check-port "gms" gms-uri} + exit 0 + '' ; + } ; + frontend = + let + frontend-conf = ddatahub.services.linkedin-datahub-frontend ; + in {} ; + pipeline = + let + pipeline-conf = ddatahub.services.linkedin-datahub-pipeline ; + in {} ; +in { inherit gms frontend pipeline;} diff --git a/contrib/nix/datahub-config.nix b/contrib/nix/datahub-config.nix new file mode 100644 index 0000000000..25a212b807 --- /dev/null +++ b/contrib/nix/datahub-config.nix @@ -0,0 +1,31 @@ +{ + services.linkedin-datahub-gms = { + enable = true; + sandbox = { + jdbc.uri = "jdbc:postgresql://localhost:5432/datahub" ; + jdbc.username = "datahub" ; + jdbc.password = "datahub" ; + elasticsearch.uris = [ "http://localhost:9200" ] ; + neo4j.uri = "bolt://localhost:7687" ; + neo4j.username = "neo4j" ; + neo4j.password = "datahub" ; + kafka.uris = [ "PLAINTEXT://localhost:9092" ] ; + schema-registry.uris = [ "http://localhost:8081" ] ; + } ; + listener = "http://localhost:8080" ; + } ; + + services.linkedin-datahub-frontend = { + enable = true ; + listener = "http://localhost:9001" ; + linkedin-datahub-gms.uri = "http://localhost:8080" ; + } ; + services.linkedin-datahub-pipeline = { + enable = true ; + linkedin-datahub-gms.uri = "http://localhost:8080" ; + sandbox = { + kafka.uris = [ "PLAINTEXT://localhost:9092" ] ; + schema-registry.uris = [ "http://localhost:8081" ] ; + } ; + } ; +}