You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
389 lines
11 KiB
389 lines
11 KiB
---
|
|
swagger: "2.0"
|
|
host: "localhost:8000"
|
|
basePath: "/api/v0.1"
|
|
info:
|
|
description: An API which supports creation, deletion, listing etc of SERVICE
|
|
version: "0.1.0"
|
|
title: LEXIS Extension Management API
|
|
contact:
|
|
email: diego@cyclops-labs.io
|
|
license:
|
|
name: Apache 2.0
|
|
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
|
|
|
|
tags:
|
|
- name: statusManagement
|
|
description: Actions relating to the reporting of the state of the service
|
|
- name: syncManagement
|
|
description: Actions relating to the syncing of data from LEXIS into cyclops services.
|
|
- name: triggerManagement
|
|
description: Actions relating to the periodics actions to be triggered in the system
|
|
|
|
securityDefinitions:
|
|
APIKeyHeader:
|
|
type: apiKey
|
|
in: header
|
|
name: X-API-KEY
|
|
APIKeyParam:
|
|
type: apiKey
|
|
in: query
|
|
name: api_key
|
|
Keycloak:
|
|
type: oauth2
|
|
flow: accessCode
|
|
authorizationUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/auth'
|
|
tokenUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/token'
|
|
scopes:
|
|
admin: Admin scope
|
|
user: User scope
|
|
|
|
schemes:
|
|
- http
|
|
- https
|
|
|
|
security:
|
|
- Keycloak: [user,admin]
|
|
- APIKeyHeader: []
|
|
- APIKeyParam: []
|
|
|
|
paths:
|
|
/status:
|
|
get:
|
|
tags:
|
|
- statusManagement
|
|
produces:
|
|
- application/json
|
|
summary: Basic status of the system
|
|
operationId: showStatus
|
|
responses:
|
|
'200':
|
|
description: Status information of the system
|
|
schema:
|
|
$ref: "#/definitions/Status"
|
|
/status/{id}:
|
|
get:
|
|
tags:
|
|
- statusManagement
|
|
produces:
|
|
- application/json
|
|
summary: Basic status of the system
|
|
operationId: getStatus
|
|
responses:
|
|
'200':
|
|
description: Status information of the system
|
|
schema:
|
|
$ref: "#/definitions/Status"
|
|
'404':
|
|
description: The endpoint provided doesn't exist
|
|
schema:
|
|
$ref: "#/definitions/ErrorResponse"
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
type: string
|
|
enum:
|
|
- kafka-receiver
|
|
- kafka-sender
|
|
- status
|
|
- trigger
|
|
- metrics
|
|
- sync
|
|
required: true
|
|
description: Id of the endpoint to be checked
|
|
|
|
/trigger/udrsredo:
|
|
get:
|
|
tags:
|
|
- triggerManagement
|
|
produces:
|
|
- application/json
|
|
summary: Redo of UDRs from the specific dates and with the specifc interval
|
|
security:
|
|
- Keycloak: [user]
|
|
- APIKeyHeader: []
|
|
- APIKeyParam: []
|
|
operationId: UDRRedo
|
|
responses:
|
|
'200':
|
|
description: Generation task executed successfully.
|
|
schema:
|
|
$ref: "#/definitions/ItemCreatedResponse"
|
|
'500':
|
|
description: Something unexpected happend, error raised
|
|
schema:
|
|
$ref: "#/definitions/ErrorResponse"
|
|
parameters:
|
|
- name: from
|
|
in: query
|
|
description: Datetime from which to regenerate the udrs
|
|
type: string
|
|
format: datetime
|
|
- name: to
|
|
in: query
|
|
description: Datetime until which to regenerate the udrs
|
|
type: string
|
|
format: datetime
|
|
- name: interval
|
|
in: query
|
|
description: Interval to do increments
|
|
type: string
|
|
|
|
/sync/hierarchy:
|
|
get:
|
|
tags:
|
|
- syncManagement
|
|
produces:
|
|
- application/json
|
|
summary: syncs all the organizations, projects, resources hierarchy from LEXIS
|
|
operationId: syncHierarchy
|
|
responses:
|
|
'200':
|
|
description: The load of data was completely successfully
|
|
'202':
|
|
description: Operation done but there might have been some fails when adding part of the data
|
|
'500':
|
|
description: Something unexpected happend, error raised
|
|
schema:
|
|
$ref: "#/definitions/ErrorResponse"
|
|
|
|
/sync/flavors:
|
|
get:
|
|
tags:
|
|
- syncManagement
|
|
produces:
|
|
- application/json
|
|
summary: Sync the OpenStack's flavors data in the system
|
|
operationId: syncFlavors
|
|
responses:
|
|
'200':
|
|
description: The load of data was completely successfully
|
|
'202':
|
|
description: Operation done but there might have been some fails when adding part of the data
|
|
'500':
|
|
description: Something unexpected happend, error raised
|
|
schema:
|
|
$ref: "#/definitions/ErrorResponse"
|
|
|
|
definitions:
|
|
ErrorResponse:
|
|
type: object
|
|
required:
|
|
- errorString
|
|
properties:
|
|
errorString:
|
|
type: string
|
|
ItemCreatedResponse:
|
|
properties:
|
|
Message:
|
|
type: string
|
|
Metadata:
|
|
type: object
|
|
x-go-type:
|
|
import:
|
|
package: "gitlab.com/cyclops-utilities/datamodels"
|
|
type: JSONdb
|
|
StringArray:
|
|
x-go-type:
|
|
import:
|
|
package: "github.com/lib/pq"
|
|
type: StringArray
|
|
Status:
|
|
type: object
|
|
required:
|
|
- SystemState
|
|
properties:
|
|
AverageResponseTime:
|
|
type: number
|
|
format: double
|
|
DBState:
|
|
type: string
|
|
LastRequest:
|
|
type: string
|
|
RequestsBoT:
|
|
type: integer
|
|
RequestsLastHour:
|
|
type: integer
|
|
RequestsToday:
|
|
type: integer
|
|
SystemState:
|
|
type: string
|
|
|
|
#User-Org:
|
|
Organization:
|
|
type: object
|
|
properties:
|
|
ID:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
|
|
FormalName:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:formalname"
|
|
RegisteredAddress1:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:registeredaddress1"
|
|
RegisteredAddress2:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:registeredaddress2"
|
|
RegisteredAddress3:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:registeredaddress3"
|
|
RegisteredCountry:
|
|
type: string
|
|
format: country
|
|
x-go-custom-tag: gorm:"column:registeredcountry"
|
|
CreationDate:
|
|
type: string
|
|
format: date-time
|
|
x-go-custom-tag: gorm:"column:registrationdatetime;type:timestamptz"
|
|
CreatedBy:
|
|
# userid who created this organization
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:createdby;type:uuid"
|
|
Website:
|
|
type: string
|
|
format: url
|
|
OrganizationEmailAddress:
|
|
type: string
|
|
format: email
|
|
x-go-custom-tag: gorm:"column:organizationemailaddress"
|
|
PrimaryTelephoneNumber:
|
|
type: string
|
|
format: telephone-number
|
|
x-go-custom-tag: gorm:"column:primarytelephonenumber"
|
|
VATRegistrationNumber:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:vatregistrationnumber"
|
|
OrganizationStatus:
|
|
type: string
|
|
enum:
|
|
- PENDING_APPROVAL
|
|
- APPROVED
|
|
- DISABLED
|
|
- TERMINATED
|
|
x-go-custom-tag: gorm:"column:organizationstatus"
|
|
|
|
Project:
|
|
type: object
|
|
properties:
|
|
ProjectID:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:projectid;type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
|
|
ProjectName:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:projectname"
|
|
ProjectShortName:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:projectshortname;unique"
|
|
ProjectDescription:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:projectdescription"
|
|
ProjectCreationTime:
|
|
type: string
|
|
format: date-time
|
|
x-go-custom-tag: gorm:"column:projectcreationtime;type:timestamptz;default:now()"
|
|
ProjectCreatedBy:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:projectcreatedby;type:uuid"
|
|
LinkedOrganization:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:linkedorganization;type:uuid"
|
|
AllowedOrganizations:
|
|
$ref: '#/definitions/StringArray'
|
|
x-go-custom-tag: gorm:"column:allowedorganizations;type:text[]"
|
|
ProjectStatus:
|
|
type: string
|
|
enum:
|
|
- PENDING
|
|
- ACTIVE
|
|
- DISABLED
|
|
- TERMINATED
|
|
x-go-custom-tag: gorm:"column:projectstatus"
|
|
ProjectContactPerson:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:projectcontactperson;type:uuid"
|
|
ProjectStartDate:
|
|
type: string
|
|
format: date-time
|
|
x-go-custom-tag: gorm:"column:projectstartdate;type:timestamptz"
|
|
ProjectTerminationDate:
|
|
type: string
|
|
format: date-time
|
|
x-go-custom-tag: gorm:"column:projectterminationdate;type:timestamptz"
|
|
ProjectMaxPrice:
|
|
type: number
|
|
format: double
|
|
default: 0.0
|
|
x-nullable: true
|
|
x-go-custom-tag: gorm:"column:projectmaxprice;type:float8;default:0.0"
|
|
NormCoreHours:
|
|
type: integer
|
|
default: 0
|
|
x-nullable: true
|
|
x-go-custom-tag: gorm:"column:normcorehours;default:0"
|
|
ProjectContactEmail:
|
|
type: string
|
|
format: email
|
|
x-go-custom-tag: gorm:"column:projectcontactemail"
|
|
ProjectDomain:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:projectdomain"
|
|
|
|
HPCResource:
|
|
type: object
|
|
properties:
|
|
HPCResourceID:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:hpcresourceid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
|
|
AssociatedHPCProject:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:associatedhpcproject"
|
|
AssociatedLEXISProject:
|
|
type: string
|
|
format: uuid
|
|
x-go-custom-tag: gorm:"column:associatedlexisproject;type:uuid"
|
|
ApprovalStatus:
|
|
type: string
|
|
enum:
|
|
- ACCEPTED
|
|
- REJECTED
|
|
- PENDING
|
|
x-go-custom-tag: gorm:"column:approvalstatus"
|
|
CloudNetworkName:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:cloudnetworkname"
|
|
ProjectNetworkName:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:projectnetworkname"
|
|
HEAppEEndpoint:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:heappeendpoint"
|
|
HPCProvider:
|
|
type: string
|
|
enum:
|
|
- IT4I
|
|
- LRZ
|
|
- ICHEC
|
|
x-go-custom-tag: gorm:"column:hpcprovider"
|
|
OpenStackEndpoint:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:openstackendpoint"
|
|
OpenStackProjectID:
|
|
type: string
|
|
x-go-custom-tag: gorm:"column:openstackprojectid"
|
|
ResourceType:
|
|
type: string
|
|
enum:
|
|
- CLOUD
|
|
- HPC
|
|
x-go-custom-tag: gorm:"column:resourcetype"
|
|
TermsConsent:
|
|
type: boolean
|
|
x-go-custom-tag: gorm:"column:termsconsent;type:bool"
|
|
|
|
|