-
Notifications
You must be signed in to change notification settings - Fork 45
/
Edge-Application-Management.yaml
1546 lines (1494 loc) · 52.9 KB
/
Edge-Application-Management.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
---
openapi: 3.0.3
info:
title: Edge Application Management API
version: 0.9.3-wip
description: |
Edge Application Management API allows API consumers to manage the
Life Cycle of an Application and to Discover Edge Cloud Zones.
# Overview
The reference scenario foresees a distributed Telco Edge Cloud where any
Application Delevoper, known as an Application Provider, can host and
deploy their application according to their specifications and operational
criteria (e.g. within an specific geographical zone for data protection
purposes, ensure a minimum QoS for the application clients, etc).
Through Telco Edge Cloud services Developers around the globe can be
benefit from the traditional Cloud strengths but expertise and advantages
of the Mobile Network Operators offering to their users an evolved
experience for XR, V2X, Holographic and other new services.
# Introduction
The Edge Application Management API provides capabilities for lifecycle
management of application, instances and edge cloud zone discovery.
Lifecycle Management allows Application Provider to onboard
their application to the Edge Cloud Platform which do bookkeeping,
resource validation and other pre-deployment operations.
Application details can contain components network specification,
package type (QCOW2, OVA, CONTAINER, HELM), operating system details and
respository to download the image of the desired application.
Once the application is available on the Edge Cloud
Platform, the Application Provider can instantiate the application.
Edge Cloud Provider helps Application Provider to decide where to
instantiate the applications allowing them to retrieve a list of
Edge Cloud Zones that meets the provided criteria.
This discovery can be filtered by an specific geographical region
(e.g when data residency is need) and by status (active, inactive, unknown)
Application Provider can ask the Edge Cloud Platform to instantiate the
application to one or several Edge Cloud Zones that meet the criteria.
Typically when more than one Edge Cloud Zone is required in the same
geographic boundary, Application Provider can define instead
the entire Edge Cloud Region.
Application Provider can retrieve the information of the instances
for a given application, the information could be the Edge Cloud Zone
where the instance is, status (ready, instantiating, failed,
terminating, unknown) and endpoint (ip, port, fqdn).
Application Provider can terminate an instance of an application
(appInstanceId) or all the instances for a given appId.
# Quick Start
The usage of this API is based on several resources including GSMA
Edge Platform, Public Cloud and SDOs, to define a first approach on the
lifecycle management of application instances and edge cloud zones discovery
Before starting to use the API, the developer needs to know about
the below specified details.
__Application Management__
* __submitApp__ - Submits application details to an Edge Cloud Provider.
Based on the details provided, Edge Cloud Provider shall do bookkeeping,
resource validation and other pre-deployment operations.
* __deleteApp__ - Removes an application from an Edge Cloud Provider,
if there is a running instance of the given application,
the request cannot be done.
* __getApp__ - Retrieves the information of a given application.
__Application Instance Management__
* __createAppInstance__ Request the Edge Cloud Provider to instatiate
an instance of an application in a given Edge Cloud Zone,
if this parameter is not set, the Edge Cloud Provider will instantiate
the applications in all the Edge Cloud Zones.
* __getAppInstance__ Retrieves the list with information of the instances
related to a given application.
* __deleteAppInstance__ - Removes a given application instance from an Edge
Cloud Zone.
__Edge Cloud information__
* __getEdgeCloudZones__ List of the operators Edge Cloud Zones and their
status, ordering the results by location and filtering by status
(active/inactive/unknown)
# Authentication and Authorization
CAMARA guidelines defines a set of authorization flows which can grant API
clients access to the API functionality, as outlined in the document
[CAMARA-API-access-and-user-consent.md](https://github.com/camaraproject\
/IdentityAndConsentManagement/blob/main/documentation/CAMARA-API-access\
-and-user-consent.md).
Which specific authorization flows are to be used will be determined during
onboarding process, happening between the API Client and the Telco Edge
exposing the API, taking into account the declared purpose for accessing the
API, while also being subject to the prevailing legal framework dictated by
local legislation.
It is important to remark that in cases where personal user data is
processed by the API, and users can exercise their rights through mechanisms
such as opt-in and/or opt-out, the use of 3-legged access tokens becomes
mandatory. This measure ensures that the API remains in strict compliance
with user privacy preferences and regulatory obligations, upholding the
principles of transparency and user-centric data control.
# API documentation
Two operations have been defined in Edge Application Management API.
*__Application__* - The Application Provider submit application metadata to
the Edge Cloud Platform. The Edge Cloud Platform generates an appId for that
metadata that will be used to instantiate the application within
the Edge Cloud Zone.
*__Edge Cloud__* - Retrieves all the Edge Cloud Zones available according to
some defined parameters where an application can be instantiated.
Definitions of terminologies commonly referred
to throughout the API descriptions.
* __Application Provider__ - The provider of the application that accesses
an Edge Cloud Provider to deploy its application on the Edge Cloud.
An Application Provider may be part of a larger organisation,
like an enterprise, enterprise customer of an Edge Cloud Provider,
or be an independent entity.
* __Application__ - Contains the information about the application to be
instantiated. Descriptor, binary image, charts or any other package
assosiated with the application. The Application Provider request contains
mandatory criteria (e.g. required CPU, memory, storage, bandwidth) defined
in an Application. The Edge Cloud Platform generates a unique ID
for an Application that is ready to be instantiated.
* __Application Instance__ - Is an instance (VM or Container based) running
in an Edge Cloud Zone. The Edge Cloud Platform generates a unique ID
for each instance.
* __Edge Cloud__ - Cloud-like capabilities located at the network edge
including, from the Application Provider's perspective, access to
elastically allocated compute, data storage and network resources,
this access is provided through the Edge Cloud Platform.
* __Edge Cloud Provider__ - Company name of the provider offering the
Edge Services through the Edge Cloud Platform.
Could be an Operator or a Cloud Provider.
* __Edge Cloud Region__ - An Edge Cloud Region is equivalent
to a Region on a Public Cloud.
The higher construct in the hierarchy exposed to an Application
Provider who wishes to deploy an Application on the Edge Cloud and broadly
represents a geography. An Edge CloudRegion typically contains one or
multiple Edge Cloud Zones.
An Edge Cloud Region exists within an Edge Cloud.
* __Edge Cloud Zone__ - An Edge Cloud Zone is the lowest level of
abstraction exposed to an Application Provider who wants to deploy
an Application on Edge Cloud.
Edge Cloud Zones exists within a Edge Cloud Region.
---
contact:
email: [email protected]
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
externalDocs:
description: Product documentation at Camara
url: https://github.com/camaraproject/EdgeCloud
servers:
- url: "{apiRoot}/{basePath}"
variables:
apiRoot:
default: http://localhost:443
description: API root
basePath:
default: edge-application-management/vwip
description: Base path for the Edge Application Management API
tags:
- name: Application
description: Application and Application Instance Lice Cycle Management
- name: Edge Cloud
description: Edge Cloud Zones Availability
paths:
/apps:
post:
security:
- openId:
- edge-application-management:apps:write
tags:
- Application
summary: Submit application metadata to the Edge Cloud Provider.
description: |
Contains the information about the application to be
instantiated in the Edge Cloud
operationId: submitApp
parameters:
- $ref: '#/components/parameters/x-correlator'
requestBody:
description: |
The Application Provider request contains mandatory
criteria (e.g. required CPU, memory, storage, bandwidth) and
optional parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/AppManifest'
required: true
responses:
'201':
description: Application created successfully
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
$ref: '#/components/schemas/SubmittedApp'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
example:
status: 409
code: CONFLICT
message: "App already exists"
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
get:
security:
- openId:
- edge-application-management:apps:read
tags:
- Application
summary: Retrieve a list of existing Applications
description: |
Get the list of all existing Application definitions from the
Edge Cloud Provider that the user has permission to view.
operationId: getApps
parameters:
- $ref: '#/components/parameters/x-correlator'
responses:
'200':
description: List of existing applications
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AppManifest'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/apps/{appId}:
get:
security:
- openId:
- edge-application-management:apps:read
tags:
- Application
summary: Retrieve the information of an Application
description: |
Ask the Edge Cloud Provider the information for a given application
operationId: getApp
parameters:
- $ref: '#/components/parameters/x-correlator'
- name: appId
description: |
A globally unique identifier associated with the
application.
Edge Cloud Provider generates this identifier when the application
is submitted.
in: path
required: true
schema:
$ref: '#/components/schemas/AppId'
responses:
'200':
description: Information of Application
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
type: object
properties:
appManifest:
$ref: '#/components/schemas/AppManifest'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
delete:
security:
- openId:
- edge-application-management:apps:delete
tags:
- Application
summary: |
Delete an Application from an Edge Cloud Provider
description: Delete all the information and content
related to an Application
operationId: deleteApp
parameters:
- $ref: '#/components/parameters/x-correlator'
- name: appId
in: path
description: |
Identificator of the application to be
deleted provided by the Edge Cloud Provider
once the submission was successful
required: true
schema:
$ref: "#/components/schemas/AppId"
responses:
'202':
description: Request accepted
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
'204':
description: App deleted
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
example:
status: 409
code: CONFLICT
message: "App with a running application instance
cannot be deleted"
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/appinstances:
post:
security:
- openId:
- edge-application-management:instances:write
tags:
- Application
summary: Instantiation of an Application
description: |
Ask the Edge Cloud Platform to instantiate an application to one
or several Edge Cloud Zones with an Application as an input and an
Application Instance as the output.
operationId: createAppInstance
parameters:
- $ref: '#/components/parameters/x-correlator'
requestBody:
description: |
The Application ID and the array of Edge Cloud Zones to deploy
it to.
content:
application/json:
schema:
type: object
required:
- appId
- appZones
properties:
appId:
$ref: '#/components/schemas/AppId'
appZones:
$ref: '#/components/schemas/AppZones'
required: true
responses:
'202':
description: Application instantiation accepted
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
Location:
description: Contains the URI of the newly created application.
required: true
schema:
type: string
content:
application/json:
schema:
type: object
properties:
appInstances:
type: array
items:
$ref: '#/components/schemas/AppInstanceInfo'
minItems: 1
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
example:
status: 409
code: CONFLICT
message: "Application already instantiated in the given
Edge Cloud Zone or Edge Cloud Region"
'500':
$ref: '#/components/responses/500'
'501':
$ref: '#/components/responses/501'
'503':
$ref: '#/components/responses/503'
get:
security:
- openId:
- edge-application-management:instances:read
tags:
- Application
summary: Retrieve the information of Application Instances for a given App
description: |
Ask the Edge Cloud Provider the information of the instances for a
given application
operationId: getAppInstance
parameters:
- $ref: '#/components/parameters/x-correlator'
- name: appId
description: |
A globally unique identifier associated with
the application.
Edge Cloud Provider generates this identifier when the
application is submitted.
in: query
required: false
schema:
$ref: '#/components/schemas/AppId'
- name: appInstanceId
description: |
A globally unique identifier associated with a running
instance of an application within an specific Edge Cloud Zone.
Edge Cloud Provider generates this identifier.
in: query
required: false
schema:
$ref: '#/components/schemas/AppInstanceId'
- name: region
description: |
Human readable name of the geographical Edge Cloud Region of
the Edge Cloud. Defined by the Edge Cloud Provider.
in: query
required: false
schema:
$ref: '#/components/schemas/EdgeCloudRegion'
responses:
'200':
description: Information of Application Instances
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
type: object
properties:
appInstanceInfo:
type: array
items:
$ref: '#/components/schemas/AppInstanceInfo'
minItems: 1
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/appinstances/{appInstanceId}:
delete:
security:
- openId:
- edge-application-management:instances:delete
tags:
- Application
summary: Terminate an Application Instance
description: |
Terminate a running instance of an application within
an Edge Cloud Zone
operationId: deleteAppInstance
parameters:
- $ref: '#/components/parameters/x-correlator'
- name: appInstanceId
in: path
description: |
Identificator of the specific application instance
that will be terminated
required: true
schema:
$ref: "#/components/schemas/AppInstanceId"
responses:
'202':
description: |
Request accepted to be processed. It applies for async
deletion process
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
'204':
description: Application Instance Deleted
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/edge-cloud-zones:
get:
security:
- openId:
- edge-application-management:edge-cloud-zones:read
tags:
- Edge Cloud
summary: Retrieve a list of the operators Edge Cloud Zones and
their status
description: |
List of the operators Edge Cloud Zones and their
status, ordering the results by location and filtering by
status (active/inactive/unknown)
operationId: getEdgeCloudZones
parameters:
- $ref: '#/components/parameters/x-correlator'
- name: region
description: |
Human readable name of the geographical Edge Cloud Region of
the Edge Cloud. Defined by the Edge Cloud Provider.
in: query
required: false
schema:
$ref: '#/components/schemas/EdgeCloudRegion'
- name: status
description: Human readable status of the Edge Cloud Zone
in: query
required: false
schema:
$ref: '#/components/schemas/EdgeCloudZoneStatus'
responses:
'200':
description: |
Successful response, returning the
Available Edge Cloud Zones.
headers:
x-correlator:
$ref: "#/components/headers/x-correlator"
content:
application/json:
schema:
$ref: '#/components/schemas/EdgeCloudZones'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
components:
securitySchemes:
openId:
description: OpenID Provider Configuration Information.
type: openIdConnect
openIdConnectUrl: https://example.com/.well-known/openid-configuration
parameters:
x-correlator:
name: x-correlator
in: header
description: |
Correlation id for the different services
schema:
type: string
headers:
x-correlator:
description: |
Correlation id for the different services
required: false
schema:
type: string
format: uuid
schemas:
AccessEndpoint:
type: object
description: |
Application Endpoint for an especific instance that is
running in an specific Edge Cloud Zone.
required:
- port
anyOf:
- required:
- fqdn
- required:
- ipv4Addresses
- required:
- ipv6Addresses
properties:
port:
$ref: '#/components/schemas/Port'
fqdn:
$ref: '#/components/schemas/Fqdn'
ipv4Addresses:
description: IP version 4 of an application instance
type: array
items:
$ref: '#/components/schemas/Ipv4Addr'
minItems: 1
ipv6Addresses:
description: IP version 6 of an application instance.
type: array
items:
$ref: '#/components/schemas/Ipv6Addr'
minItems: 1
AppId:
type: string
format: uuid
description: |
A globally unique identifier associated with the application.
Edge Cloud Platform generates this identifier when the
Application is submitted.
AppInstanceId:
type: string
format: uuid
description: |
A globally unique identifier associated with a running
instance of an application.
Edge Cloud Platform generates this identifier when the
instantiation in the Edge Cloud Zone is successful.
AppInstanceInfo:
description: Information about the application instance.
type: object
properties:
appInstanceId:
$ref: '#/components/schemas/AppInstanceId'
status:
description: Status of the application instance (default is 'unknown')
type: string
enum:
- ready
- instantiating
- failed
- terminating
- unknown
default: unknown
componentEndpointInfo:
description: |
Information about the IP and Port exposed by the
Edge Cloud Platform.
Application Client shall use these access points to reach this
application instance
type: array
items:
type: object
required:
- interfaceId
- accessPoints
properties:
interfaceId:
type: string
pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$
description: |
This is the interface Identifier that Application Provider
defines when application is being submitted.
accessPoints:
$ref: '#/components/schemas/AccessEndpoint'
minItems: 1
kubernetesClusterRef:
$ref: '#/components/schemas/KubernetesClusterRef'
edgeCloudZone:
$ref: '#/components/schemas/EdgeCloudZone'
AppZones:
description: |
Collection of Edge Cloud Zones and/or Kubernetes cluster reference
where the Application Provider wants to instantiate the application.
type: array
items:
type: object
properties:
kubernetesClusterRef:
$ref: '#/components/schemas/KubernetesClusterRef'
EdgeCloudZone:
$ref: '#/components/schemas/EdgeCloudZone'
required:
- EdgeCloudZone
minItems: 1
additionalProperties: false
AppManifest:
description: |
Application information and requirements provided by the
Application Provider
properties:
appId:
$ref: '#/components/schemas/AppId'
name:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{1,63}$
description: Name of the application.
appProvider:
$ref: '#/components/schemas/AppProvider'
version:
type: string
description: Application version information
packageType:
description: Format of the application image package
type: string
enum:
- QCOW2
- OVA
- CONTAINER
- HELM
operatingSystem:
$ref: '#/components/schemas/OperatingSystem'
appRepo:
description: |
Repository where Application Provider stores the application image
type: object
required:
- type
- imagePath
properties:
type:
type: string
enum:
- PRIVATEREPO
- PUBLICREPO
description: |
Application repository and image URI information.
PUBLICREPO is used of public urls like github, helm repo etc.
PRIVATEREPO is used for private repo managed by the application
developer. Private repo can be accessed by using the app
developer provided userName and password. Password is
recommended to be the personal access token created by developer
e.g. in Github repo.
imagePath:
$ref: '#/components/schemas/Uri'
userName:
type: string
description: |
Username to acces the Helm chart, docker-compose
file or VM image repository
credentials:
type: string
maxLength: 128
description: |
Password or personal access token created by
developer to acces the app repository. API users can generate
a personal access token e.g. docker clients to use them as
password.
authType:
type: string
enum:
- DOCKER
- HTTP_BASIC
- HTTP_BEARER
- NONE
description: |
The credentials can also be formatted as a Basic
auth or Bearer auth in HTTP "Authorization" header.
checksum:
type: string
description: |
MD5 checksum for VM and file-based images, sha256
digest for containers
requiredResources:
$ref: '#/components/schemas/RequiredResources'
componentSpec:
description: |
Information defined in "appRepo" point to the application
descriptor e.g. Helm chart, docker-compose yaml file etc.
The descriptor may contain one or more containers and their
associated meta-data. A component refers to additional details
about these containers to expose the instances of the containers
to external client applications. App provider can define one or
more components (via the associated network port) in componentSpec
corresponding to the containers in helm charts or docker-compose
yaml file as part of app descriptors.
type: array
items:
type: object
required:
- componentName
- networkInterfaces
properties:
componentName:
type: string
description: Component name must be unique with an application
networkInterfaces:
description: |
Each application component exposes some ports
either for external users or for inter component
communication.
Application provider is required to specify which ports are
to be exposed and the type of traffic that will flow through
these ports.The underlying platform may assign a dynamic port
against the "extPort" that the application clients will use
to connect with edge application instance.
type: array
items:
type: object
required:
- interfaceId
- protocol
- port
- visibilityType
properties:
interfaceId:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{3,31}$
description: |
Each Port and corresponding traffic protocol
exposed by the component is identified by a name.
Application client on user device requires this to
uniquley idenify the interface.
protocol:
type: string
enum:
- TCP
- UDP
- ANY
description: |
Defines the IP transport communication
protocol i.e., TCP, UDP or ANY
port:
type: integer
format: int32
minimum: 1
maximum: 65535
description: |
Port number exposed by the component.
Edge Cloud Provider may generate a dynamic port
towards the component instance which forwards
external traffic to the component port.
visibilityType:
description: |
Defines whether the interface is exposed
to outer world or not i.e., external, or internal.
If this is set to "external", then it is exposed
to external applications otherwise it is exposed
internally to edge application components within
edge cloud. When exposed to external world,
an external dynamic port is assigned for UC traffic
and mapped to the extPort
type: string
enum:
- VISIBILITY_EXTERNAL
- VISIBILITY_INTERNAL
minItems: 1
required:
- name
- version
- appProvider
- packageType
- appRepo
- requiredResources
- componentSpec
AppProvider:
type: string
pattern: ^[A-Za-z][A-Za-z0-9_]{7,63}$
description: Human readable name of the Application Provider.
EdgeCloudProvider:
type: string
description: Human readable name of the Edge Cloud Provider.
EdgeCloudRegion:
type: string
description: |
Human readable name of the geographical Edge Cloud Region of
the Edge Cloud. Defined by the Edge Cloud Provider.
EdgeCloudZones:
type: array
items:
$ref: '#/components/schemas/EdgeCloudZone'
minItems: 1
description: |
A collection of Edge Cloud Zones where the Application Provider can
instantiate an Application Instance.
additionalProperties: false
EdgeCloudZoneId:
type: string
format: uuid
description: |
Unique identifier created by the Edge Cloud Platform to identify an
Edge Cloud Zone within an Edge Cloud.
EdgeCloudZone:
type: object
description: |
An Edge Cloud Zone, uniquely identified by a
combination of the value of the Edge Cloud Zone Id object
and the value of the Edge Cloud Provider
object. This value is used to identify an Edge Cloud zone
between Edge Clouds from different Edge Cloud Providers.
required:
- edgeCloudZoneId
- edgeCloudZoneName
- edgeCloudProvider
properties:
edgeCloudZoneId:
$ref: '#/components/schemas/EdgeCloudZoneId'
edgeCloudZoneName:
$ref: '#/components/schemas/EdgeCloudZoneName'
edgeCloudZoneStatus:
$ref: '#/components/schemas/EdgeCloudZoneStatus'
edgeCloudProvider:
$ref: '#/components/schemas/EdgeCloudProvider'
edgeCloudRegion:
$ref: '#/components/schemas/EdgeCloudRegion'
minItems: 1
EdgeCloudZoneName:
type: string
description: |
Human readable name of the geographical zone of
the Edge Cloud. Defined by the Edge Cloud Provider.
EdgeCloudZoneStatus:
description: Status of the Edge Cloud Zone (default is 'unknown')
type: string
enum:
- active
- inactive
- unknown
default: unknown
ErrorInfo:
type: object
description: Information about the error
properties:
status:
type: integer
description: HTTP status code returned along with this error response
code:
type: string
description: Code given to this error
message:
type: string
description: Detailed error description
required:
- status
- code
- message
Fqdn:
type: string
description: |
Full qualified domain name of an application instance
GpuInfo: