X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=servicemanager%2Fgenerate.sh;fp=r1-sme-manager%2Fgenerate-service-publish-and-discovery.sh;h=efe7a1a4b69585d66a1476a86ddbb92f7ca35b25;hb=refs%2Fchanges%2F63%2F11963%2F14;hp=ca9f5ce4aa6481f3907bf63f9be558b6e9a00014;hpb=8ff4d0377ccd9b3c10bc9fb247b7136bba3eb6d7;p=nonrtric%2Fplt%2Fsme.git diff --git a/r1-sme-manager/generate-service-publish-and-discovery.sh b/servicemanager/generate.sh similarity index 51% rename from r1-sme-manager/generate-service-publish-and-discovery.sh rename to servicemanager/generate.sh index ca9f5ce..efe7a1a 100755 --- a/r1-sme-manager/generate-service-publish-and-discovery.sh +++ b/servicemanager/generate.sh @@ -1,8 +1,9 @@ +#!/bin/bash # - # ========================LICENSE_START================================= # O-RAN-SC # %% -# Copyright (C) 2023: Nordix Foundation +# Copyright (C) 2024: OpenInfra Foundation Europe # %% # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,30 +19,12 @@ # ========================LICENSE_END=================================== # -#!/bin/bash - make_internal_dirs () { - echo "Make the internal directory structure" - mkdir -p internal/config - mkdir -p internal/discoverservice + echo "Make the internal API directory structure" mkdir -p internal/discoverserviceapi - mkdir -p internal/eventsapi - mkdir -p internal/eventservice - mkdir -p internal/helmmanagement - mkdir -p internal/invokermanagement mkdir -p internal/invokermanagementapi - mkdir -p internal/keycloak - mkdir -p internal/loggingapi - mkdir -p internal/providermanagement mkdir -p internal/providermanagementapi - mkdir -p internal/publishservice mkdir -p internal/publishserviceapi - mkdir -p internal/restclient -} - -tear_down () { - echo "Tear down the internal directory" - rm -rf internal/ } set_up_dir_paths () { @@ -51,23 +34,6 @@ set_up_dir_paths () { capifcore_dir="$sme_dir/capifcore" } -copy_test_wrappers () { - echo "Copy the test wrappers" - cp -v $capifcore_dir/internal/config/*.go internal/config - cp -v $capifcore_dir/internal/discoverservice/*.go internal/discoverservice - cp -v $capifcore_dir/internal/eventsapi/type*.go internal/eventsapi - cp -v $capifcore_dir/internal/eventservice/*.go internal/eventservice - cp -v $capifcore_dir/internal/helmmanagement/*.go internal/helmmanagement - cp -v $capifcore_dir/internal/invokermanagement/*.go internal/invokermanagement - cp -v $capifcore_dir/internal/invokermanagementapi/type*.go internal/invokermanagementapi - cp -v $capifcore_dir/internal/keycloak/*.go internal/keycloak - cp -v $capifcore_dir/internal/providermanagement/*.go internal/providermanagement - cp -v $capifcore_dir/internal/providermanagementapi/*.go internal/providermanagementapi - cp -v $capifcore_dir/internal/publishservice/*.go internal/publishservice - cp -v $capifcore_dir/internal/publishserviceapi/type*.go internal/publishserviceapi - cp -v $capifcore_dir/internal/restclient/*.go internal/restclient -} - curl_api_specs () { echo "Curl down the API specs" mkdir -p specs @@ -86,25 +52,24 @@ curl_api_specs () { curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/29572-h60.zip -o specs/common29572apidef.zip } -jar_extraction () { +spec_extraction () { cd specs/ - echo "Jar extraction" - jar xvf apidef.zip - jar xvf common29122apidef.zip - jar xvf common29508apidef.zip - jar xvf common29510apidef.zip - jar xvf common29512apidef.zip - jar xvf common29514apidef.zip - jar xvf common29517apidef.zip - jar xvf common29518apidef.zip - jar xvf common29522apidef.zip - jar xvf common29523apidef.zip - jar xvf common29554apidef.zip - jar xvf common29571apidef.zip - jar xvf common29572apidef.zip + echo "Specifications extraction" + unzip -o apidef.zip + unzip -o common29122apidef.zip + unzip -o common29508apidef.zip + unzip -o common29510apidef.zip + unzip -o common29512apidef.zip + unzip -o common29514apidef.zip + unzip -o common29517apidef.zip + unzip -o common29518apidef.zip + unzip -o common29522apidef.zip + unzip -o common29523apidef.zip + unzip -o common29554apidef.zip + unzip -o common29571apidef.zip + unzip -o common29572apidef.zip } - fix_with_sed () { echo "Fixing with sed" @@ -120,7 +85,7 @@ fix_with_sed () { sed -i -e 'H;x;/^\( *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsSession/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml sed -i -e 'H;x;/^\( *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\SpatialValidityCond/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml - # Remove attributes that can not be generated easily. + # Remove attributes that cannot be generated easily. sed -i '/accessTokenError.*/,+3d' TS29571_CommonData.yaml sed -i '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml sed -i '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml @@ -148,20 +113,20 @@ gentools () { cd "$capifcore_dir/internal/gentools/enumfixer" go build . - ./enumfixer -apidir="$sme_dir/r1-sme-manager/specs" + ./enumfixer -apidir="$sme_dir/servicemanager/specs" echo "Gathering common references" cd "$capifcore_dir/internal/gentools/commoncollector" go build . - ./commoncollector -apidir="$sme_dir/r1-sme-manager/specs" + ./commoncollector -apidir="$sme_dir/servicemanager/specs" echo "Fixing misc in specifications" cd "$capifcore_dir/internal/gentools/specificationfixer" go build . - ./specificationfixer -apidir="$sme_dir/r1-sme-manager/specs" + ./specificationfixer -apidir="$sme_dir/servicemanager/specs" } -code_generation () { +generate_apis_from_spec () { go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.10.1 PATH=$PATH:~/go/bin @@ -169,93 +134,81 @@ code_generation () { echo "Generating TS29122_CommonData" mkdir -p internal/common29122 - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/common29122/generator_settings.yaml" specs/TS29122_CommonData.yaml + oapi-codegen --config "gogeneratorspecs/common29122/generator_settings.yaml" specs/TS29122_CommonData.yaml echo "Generating aggregated CommonData" mkdir -p internal/common - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/common/generator_settings.yaml" specs/CommonData.yaml + oapi-codegen --config "gogeneratorspecs/common/generator_settings.yaml" specs/CommonData.yaml echo "Generating TS29571_CommonData" mkdir -p internal/common29571 - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/common29571/generator_settings.yaml" specs/TS29571_CommonData.yaml + oapi-codegen --config "gogeneratorspecs/common29571/generator_settings.yaml" specs/TS29571_CommonData.yaml echo "Generating TS29222_CAPIF_Publish_Service_API" mkdir -p internal/publishserviceapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/publishserviceapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Publish_Service_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/publishserviceapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Publish_Service_API.yaml + oapi-codegen --config "gogeneratorspecs/publishserviceapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Publish_Service_API.yaml + oapi-codegen --config "gogeneratorspecs/publishserviceapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Publish_Service_API.yaml + oapi-codegen --config "gogeneratorspecs/publishserviceapi/generator_settings_client.yaml" specs/TS29222_CAPIF_Publish_Service_API.yaml echo "Generating TS29222_CAPIF_API_Invoker_Management_API" mkdir -p internal/invokermanagementapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml" specs/TS29222_CAPIF_API_Invoker_Management_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml" specs/TS29222_CAPIF_API_Invoker_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml" specs/TS29222_CAPIF_API_Invoker_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml" specs/TS29222_CAPIF_API_Invoker_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/invokermanagementapi/generator_settings_client.yaml" specs/TS29222_CAPIF_API_Invoker_Management_API.yaml echo "Generating TS29222_CAPIF_API_Provider_Management_API" mkdir -p internal/providermanagementapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/providermanagementapi/generator_settings_types.yaml" specs/TS29222_CAPIF_API_Provider_Management_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/providermanagementapi/generator_settings_server.yaml" specs/TS29222_CAPIF_API_Provider_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/providermanagementapi/generator_settings_types.yaml" specs/TS29222_CAPIF_API_Provider_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/providermanagementapi/generator_settings_server.yaml" specs/TS29222_CAPIF_API_Provider_Management_API.yaml + oapi-codegen --config "gogeneratorspecs/providermanagementapi/generator_settings_client.yaml" specs/TS29222_CAPIF_API_Provider_Management_API.yaml echo "Generating TS29222_CAPIF_Discover_Service_API" mkdir -p internal/discoverserviceapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Discover_Service_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Discover_Service_API.yaml - - echo "Generating TS29222_CAPIF_Logging_API_Invocation_API" - mkdir -p internal/loggingapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/loggingapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/loggingapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml - - echo "Generating TS29222_CAPIF_Routing_Info_API" - mkdir -p internal/routinginfoapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/routinginfoapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Routing_Info_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/routinginfoapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Routing_Info_API.yaml - - echo "Generating TS29222_CAPIF_Access_Control_Policy_API" - mkdir -p internal/accesscontrolpolicyapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Access_Control_Policy_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Access_Control_Policy_API.yaml - - echo "Generating TS29222_CAPIF_Events_API" - mkdir -p internal/eventsapi - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/eventsapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Events_API.yaml - oapi-codegen --config "$capifcore_dir/gogeneratorspecs/eventsapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Events_API.yaml - - echo "Clean up" - rm -rf specs -} - - -fix_package_imports () { - echo "Fix package imports" - if find "$cwd/internal" -type f -exec sed -i 's/oransc.org\/nonrtric\/capifcore/oransc.org\/nonrtric\/r1-sme-manager/g' {} +; then - echo "Package import replacement successful" - else - echo "Package import replacement failed" - fi -} - -generate_mocks () { - echo "Generating mocks" - go generate ./... + oapi-codegen --config "gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml" specs/TS29222_CAPIF_Discover_Service_API.yaml + oapi-codegen --config "gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml" specs/TS29222_CAPIF_Discover_Service_API.yaml + oapi-codegen --config "gogeneratorspecs/discoverserviceapi/generator_settings_client.yaml" specs/TS29222_CAPIF_Discover_Service_API.yaml } -running_tests () { - echo "Running tests" - cd internal - go clean -testcache - go test ./publishservice ./discoverservice +run_tests () { + # Make sure that SERVICE_MANAGER_ENV is configured with the required .env file, e.g. + # export SERVICE_MANAGER_ENV=development + cd "$cwd" + go test -p=1 -count=1 ./... } # Main code block +echo $(date -u) "generate started" + +# Check if the run-tests switch is provided as a command-line argument +RUN_TESTS=false +while [[ "$#" -gt 0 ]]; do + case "$1" in + -t|--run-tests) + RUN_TESTS=true + shift # consume the switch + ;; + *) + echo "Unknown argument: $1" + exit 1 + ;; + esac + shift +done -tear_down make_internal_dirs set_up_dir_paths -copy_test_wrappers curl_api_specs -jar_extraction +spec_extraction fix_with_sed gentools -code_generation -fix_package_imports -generate_mocks -running_tests +generate_apis_from_spec + +# Check if the run-tests switch is enabled +if [ "$RUN_TESTS" = true ]; then + echo "Running tests!" + run_tests +else + echo "Not running tests." +fi + +echo $(date -u) "generate completed" \ No newline at end of file