Lift CAPIF specifications to latest version
[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 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\CivicAddress/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
56 mv temp.yaml TS29571_CommonData.yaml
57 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\ExternalMbsServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
58 mv temp.yaml TS29571_CommonData.yaml
59 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeographicArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
60 mv temp.yaml TS29571_CommonData.yaml
61 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeoServiceArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
62 mv temp.yaml TS29571_CommonData.yaml
63 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaComp/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
64 mv temp.yaml TS29571_CommonData.yaml
65 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaCompRm/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
66 mv temp.yaml TS29571_CommonData.yaml
67 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsMediaInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
68 mv temp.yaml TS29571_CommonData.yaml
69 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsServiceInfo/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
70 mv temp.yaml TS29571_CommonData.yaml
71 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\MbsSession/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
72 mv temp.yaml TS29571_CommonData.yaml
73 sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\SpatialValidityCond/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
74 mv temp.yaml TS29571_CommonData.yaml
75 sed '/accessTokenError.*/,+3d' TS29571_CommonData.yaml >temp.yaml
76 mv temp.yaml TS29571_CommonData.yaml
77 sed '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml >temp.yaml
78 mv temp.yaml TS29571_CommonData.yaml
79
80 sed '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml >temp.yaml
81 mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
82
83 sed '64,68d' TS29222_CAPIF_Discover_Service_API.yaml >temp.yaml # Remove parameter preferred-aef-loc since it doesn't follow the OpenApi specification, "The behavior for nested objects and arrays is undefined."
84 mv temp.yaml TS29222_CAPIF_Discover_Service_API.yaml
85
86 cat TS29122_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
87 mv temp.yaml TS29122_CommonData.yaml
88 cat TS29122_CommonData.yaml | sed 's/TS29554_Npcf_BDTPolicyControl/CommonData/g' > temp.yaml
89 mv temp.yaml TS29122_CommonData.yaml
90 cat TS29122_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
91 mv temp.yaml TS29122_CommonData.yaml
92 cat TS29571_CommonData.yaml | sed 's/TS29514_Npcf_PolicyAuthorization/CommonData/g' > temp.yaml
93 mv temp.yaml TS29571_CommonData.yaml
94 cat TS29571_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
95 mv temp.yaml TS29571_CommonData.yaml
96 cat TS29571_CommonData.yaml | sed 's/TS29571_CommonData.yaml//g' > temp.yaml # This spec has references to itself that need to be removed
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
107 go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.10.1
108 PATH=$PATH:~/go/bin
109
110 cd $cwd
111
112 echo "Fixing enums"
113 cd internal/gentools/enumfixer
114 go build .
115 ./enumfixer -apidir=../../../specs
116
117 cd $cwd
118 echo "Gathering common references"
119 cd internal/gentools/commoncollector
120 go build .
121 ./commoncollector -apidir=../../../specs
122
123 cd $cwd
124 echo "Fixing misc in specifications"
125 cd internal/gentools/specificationfixer
126 go build .
127 ./specificationfixer -apidir=../../../specs
128
129 cd $cwd
130
131 echo "Generating TS29122_CommonData"
132 mkdir -p internal/common29122
133 oapi-codegen --config gogeneratorspecs/common29122/generator_settings.yaml specs/TS29122_CommonData.yaml
134
135 echo "Generating aggregated CommonData"
136 mkdir -p internal/common
137 oapi-codegen --config gogeneratorspecs/common/generator_settings.yaml specs/CommonData.yaml
138
139 echo "Generating TS29571_CommonData"
140 mkdir -p internal/common29571
141 oapi-codegen --config gogeneratorspecs/common29571/generator_settings.yaml specs/TS29571_CommonData.yaml
142
143 echo "Generating TS29222_CAPIF_Publish_Service_API"
144 mkdir -p internal/publishserviceapi
145 oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
146 oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
147
148 echo "Generating TS29222_CAPIF_API_Invoker_Management_API"
149 mkdir -p internal/invokermanagementapi
150 oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
151 oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
152
153 echo "Generating TS29222_CAPIF_API_Provider_Management_API"
154 mkdir -p internal/providermanagementapi
155 oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
156 oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
157
158 echo "Generating TS29222_CAPIF_Discover_Service_API"
159 mkdir -p internal/discoverserviceapi
160 oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
161 oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
162
163 echo "Generating TS29222_CAPIF_Security_API"
164 mkdir -p internal/securityapi
165 oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_types.yaml specs/TS29222_CAPIF_Security_API.yaml
166 oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_server.yaml specs/TS29222_CAPIF_Security_API.yaml
167
168 echo "Generating TS29222_CAPIF_Logging_API_Invocation_API"
169 mkdir -p internal/loggingapi
170 oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
171 oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
172
173 echo "Generating TS29222_CAPIF_Routing_Info_API"
174 mkdir -p internal/routinginfoapi
175 oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_types.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
176 oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_server.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
177
178 echo "Generating TS29222_CAPIF_Access_Control_Policy_API"
179 mkdir -p internal/accesscontrolpolicyapi
180 oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
181 oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
182
183 echo "Generating TS29222_CAPIF_Events_API"
184 mkdir -p internal/eventsapi
185 oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_types.yaml specs/TS29222_CAPIF_Events_API.yaml
186 oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_server.yaml specs/TS29222_CAPIF_Events_API.yaml
187
188 echo "Generating TS29222_CAPIF_Auditing_API"
189 mkdir -p internal/auditingapi
190 oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Auditing_API.yaml
191 oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Auditing_API.yaml
192
193 echo "Generating TS29222_AEF_Security_API"
194 mkdir -p internal/aefsecurityapi
195 oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml specs/TS29222_AEF_Security_API.yaml
196 oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml specs/TS29222_AEF_Security_API.yaml
197
198 echo "Cleanup"
199 rm -rf specs
200
201 echo "Generating mocks."
202 go generate ./...