Add filter options to Discovery Service
[nonrtric/plt/sme.git] / capifcore / generate.sh
1 # -
2 #   ========================LICENSE_START=================================
3 #   O-RAN-SC
4 #   %%
5 #   Copyright (C) 2022: Nordix Foundation
6 #   %%
7 #   Licensed under the Apache License, Version 2.0 (the "License");
8 #   you may not use this file except in compliance with the License.
9 #   You may obtain a copy of the License at
10 #
11 #        http://www.apache.org/licenses/LICENSE-2.0
12 #
13 #   Unless required by applicable law or agreed to in writing, software
14 #   distributed under the License is distributed on an "AS IS" BASIS,
15 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 #   See the License for the specific language governing permissions and
17 #   limitations under the License.
18 #   ========================LICENSE_END===================================
19 #
20
21 cwd=$(pwd)
22
23 mkdir -p specs
24
25 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/29222-h60.zip -o specs/apidef.zip
26 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-h70.zip -o specs/common29122apidef.zip
27 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/29508-h80.zip -o specs/common29508apidef.zip
28 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/29510-h70.zip -o specs/common29510apidef.zip
29 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.512/29512-h80.zip -o specs/common29512apidef.zip
30 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.514/29514-h60.zip -o specs/common29514apidef.zip
31 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.517/29517-h70.zip -o specs/common29517apidef.zip
32 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/29518-h70.zip -o specs/common29518apidef.zip
33 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/29522-h70.zip -o specs/common29522apidef.zip
34 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.523/29523-h80.zip -o specs/common29523apidef.zip
35 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.554/29554-h40.zip -o specs/common29554apidef.zip
36 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/29571-h70.zip -o specs/common29571apidef.zip
37 curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/29572-h60.zip -o specs/common29572apidef.zip
38
39 cd specs/
40
41 jar xvf apidef.zip
42 jar xvf common29122apidef.zip
43 jar xvf common29508apidef.zip
44 jar xvf common29510apidef.zip
45 jar xvf common29512apidef.zip
46 jar xvf common29514apidef.zip
47 jar xvf common29517apidef.zip
48 jar xvf common29518apidef.zip
49 jar xvf common29522apidef.zip
50 jar xvf common29523apidef.zip
51 jar xvf common29554apidef.zip
52 jar xvf common29571apidef.zip
53 jar xvf common29572apidef.zip
54
55 # Remove types that are not used by CAPIF that have dependencies to other specifications.
56 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\CivicAddress/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
57 mv temp.yaml TS29571_CommonData.yaml
58 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\ExternalMbsServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
59 mv temp.yaml TS29571_CommonData.yaml
60 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeographicArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
61 mv temp.yaml TS29571_CommonData.yaml
62 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeoServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
63 mv temp.yaml TS29571_CommonData.yaml
64 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaComp/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
65 mv temp.yaml TS29571_CommonData.yaml
66 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaCompRm/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
67 mv temp.yaml TS29571_CommonData.yaml
68 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
69 mv temp.yaml TS29571_CommonData.yaml
70 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsServiceInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
71 mv temp.yaml TS29571_CommonData.yaml
72 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsSession/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
73 mv temp.yaml TS29571_CommonData.yaml
74 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\SpatialValidityCond/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
75 mv temp.yaml TS29571_CommonData.yaml
76
77 # Remove attributes that can not be generated easily.
78 sed '/accessTokenError.*/,+3d' TS29571_CommonData.yaml >temp.yaml
79 mv temp.yaml TS29571_CommonData.yaml
80 sed '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml >temp.yaml
81 mv temp.yaml TS29571_CommonData.yaml
82
83 sed '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml >temp.yaml
84 mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
85
86 # Replace references to external specs that are collected to the common spec by the commoncollector
87 # <replacements_start>
88 cat TS29122_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
89 mv temp.yaml TS29122_CommonData.yaml
90 cat TS29122_CommonData.yaml | sed 's/TS29554_Npcf_BDTPolicyControl/CommonData/g' > temp.yaml
91 mv temp.yaml TS29122_CommonData.yaml
92 cat TS29122_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
93 mv temp.yaml TS29122_CommonData.yaml
94 cat TS29571_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
95 mv temp.yaml TS29571_CommonData.yaml
96 cat TS29571_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
97 mv temp.yaml TS29571_CommonData.yaml
98 cat TS29222_CAPIF_Publish_Service_API.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
99 mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
100 cat TS29222_CAPIF_Routing_Info_API.yaml | sed 's/TS29520_Nnwdaf_EventsSubscription/CommonData/g' > temp.yaml
101 mv temp.yaml TS29222_CAPIF_Routing_Info_API.yaml
102 cat TS29222_CAPIF_Routing_Info_API.yaml | sed 's/TS29510_Nnrf_NFManagement/CommonData/g' > temp.yaml
103 mv temp.yaml TS29222_CAPIF_Routing_Info_API.yaml
104 cat TS29222_CAPIF_Events_API.yaml | sed 's/TS29523_Npcf_EventExposure/CommonData/g' > temp.yaml
105 mv temp.yaml TS29222_CAPIF_Events_API.yaml
106 # <new_replacement>
107
108 # This spec has references to itself that need to be removed
109 cat TS29571_CommonData.yaml | sed 's/TS29571_CommonData.yaml//g' > temp.yaml
110 mv temp.yaml TS29571_CommonData.yaml
111
112 cd $cwd
113
114 echo "Fixing enums"
115 cd internal/gentools/enumfixer
116 go build .
117 ./enumfixer -apidir=../../../specs
118
119 cd $cwd
120 echo "Gathering common references"
121 cd internal/gentools/commoncollector
122 go build .
123 ./commoncollector -apidir=../../../specs
124
125 cd $cwd
126 echo "Fixing misc in specifications"
127 cd internal/gentools/specificationfixer
128 go build .
129 ./specificationfixer -apidir=../../../specs
130
131 cd $cwd
132
133 go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.10.1
134 PATH=$PATH:~/go/bin
135
136 echo "Generating TS29122_CommonData"
137 mkdir -p internal/common29122
138 oapi-codegen --config gogeneratorspecs/common29122/generator_settings.yaml specs/TS29122_CommonData.yaml
139
140 echo "Generating aggregated CommonData"
141 mkdir -p internal/common
142 oapi-codegen --config gogeneratorspecs/common/generator_settings.yaml specs/CommonData.yaml
143
144 echo "Generating TS29571_CommonData"
145 mkdir -p internal/common29571
146 oapi-codegen --config gogeneratorspecs/common29571/generator_settings.yaml specs/TS29571_CommonData.yaml
147
148 echo "Generating TS29222_CAPIF_Publish_Service_API"
149 mkdir -p internal/publishserviceapi
150 oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
151 oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
152
153 echo "Generating TS29222_CAPIF_API_Invoker_Management_API"
154 mkdir -p internal/invokermanagementapi
155 oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
156 oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
157
158 echo "Generating TS29222_CAPIF_API_Provider_Management_API"
159 mkdir -p internal/providermanagementapi
160 oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
161 oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
162
163 echo "Generating TS29222_CAPIF_Discover_Service_API"
164 mkdir -p internal/discoverserviceapi
165 oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
166 oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
167
168 echo "Generating TS29222_CAPIF_Security_API"
169 mkdir -p internal/securityapi
170 oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_types.yaml specs/TS29222_CAPIF_Security_API.yaml
171 oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_server.yaml specs/TS29222_CAPIF_Security_API.yaml
172
173 echo "Generating TS29222_CAPIF_Logging_API_Invocation_API"
174 mkdir -p internal/loggingapi
175 oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
176 oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
177
178 echo "Generating TS29222_CAPIF_Routing_Info_API"
179 mkdir -p internal/routinginfoapi
180 oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_types.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
181 oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_server.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
182
183 echo "Generating TS29222_CAPIF_Access_Control_Policy_API"
184 mkdir -p internal/accesscontrolpolicyapi
185 oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
186 oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
187
188 echo "Generating TS29222_CAPIF_Events_API"
189 mkdir -p internal/eventsapi
190 oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_types.yaml specs/TS29222_CAPIF_Events_API.yaml
191 oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_server.yaml specs/TS29222_CAPIF_Events_API.yaml
192
193 echo "Generating TS29222_CAPIF_Auditing_API"
194 mkdir -p internal/auditingapi
195 oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Auditing_API.yaml
196 oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Auditing_API.yaml
197
198 echo "Generating TS29222_AEF_Security_API"
199 mkdir -p internal/aefsecurityapi
200 oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml specs/TS29222_AEF_Security_API.yaml
201 oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml specs/TS29222_AEF_Security_API.yaml
202
203 echo "Cleanup"
204 rm -rf specs
205
206 echo "Generating mocks."
207 go generate ./...