2020-04-01 18:18:57 -07:00
|
|
|
swagger: "2.0"
|
|
|
|
|
info:
|
|
|
|
|
title: MinIO Console Server
|
|
|
|
|
version: 0.1.0
|
|
|
|
|
consumes:
|
|
|
|
|
- application/json
|
|
|
|
|
produces:
|
|
|
|
|
- application/json
|
|
|
|
|
schemes:
|
|
|
|
|
- http
|
2020-04-30 10:50:51 -07:00
|
|
|
- ws
|
2020-04-03 13:17:31 -07:00
|
|
|
basePath: /api/v1
|
2020-04-01 18:18:57 -07:00
|
|
|
# We are going to be taking `Authorization: Bearer TOKEN` header for our authentication
|
|
|
|
|
securityDefinitions:
|
|
|
|
|
key:
|
|
|
|
|
type: oauth2
|
|
|
|
|
flow: accessCode
|
|
|
|
|
authorizationUrl: http://min.io
|
|
|
|
|
tokenUrl: http://min.io
|
|
|
|
|
# Apply the key security definition to all APIs
|
|
|
|
|
security:
|
|
|
|
|
- key: []
|
|
|
|
|
paths:
|
2020-04-16 13:56:12 -07:00
|
|
|
/login:
|
|
|
|
|
get:
|
|
|
|
|
summary: Returns login strategy, form or sso.
|
|
|
|
|
operationId: LoginDetail
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/loginDetails"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
# Exclude this API from the authentication requirement
|
|
|
|
|
security: []
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
post:
|
2020-07-25 14:38:16 -07:00
|
|
|
summary: Login to Console
|
2020-04-16 13:56:12 -07:00
|
|
|
operationId: Login
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/loginRequest"
|
2020-04-16 13:56:12 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful login.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/loginResponse"
|
2020-04-16 13:56:12 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
# Exclude this API from the authentication requirement
|
|
|
|
|
security: []
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-07-08 13:55:08 -07:00
|
|
|
/login/operator:
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
post:
|
2020-07-08 13:55:08 -07:00
|
|
|
summary: Login to Operator Console.
|
|
|
|
|
operationId: LoginOperator
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-13 20:36:27 -07:00
|
|
|
$ref: "#/definitions/loginOperatorRequest"
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful login.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/loginResponse"
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
security: []
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-05-01 08:38:52 -07:00
|
|
|
/login/oauth2/auth:
|
|
|
|
|
post:
|
|
|
|
|
summary: Identity Provider oauth2 callback endpoint.
|
|
|
|
|
operationId: LoginOauth2Auth
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/loginOauth2AuthRequest"
|
2020-05-01 08:38:52 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful login.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/loginResponse"
|
2020-05-01 08:38:52 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
security: []
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
|
2020-04-16 13:56:12 -07:00
|
|
|
/logout:
|
|
|
|
|
post:
|
2020-07-25 14:38:16 -07:00
|
|
|
summary: Logout from Console.
|
2020-04-16 13:56:12 -07:00
|
|
|
operationId: Logout
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
|
|
|
|
|
/session:
|
|
|
|
|
get:
|
|
|
|
|
summary: Endpoint to check if your session is still valid
|
|
|
|
|
operationId: SessionCheck
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/sessionResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/buckets:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Buckets
|
|
|
|
|
operationId: ListBuckets
|
|
|
|
|
parameters:
|
|
|
|
|
- name: sort_by
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: string
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listBucketsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Make bucket
|
|
|
|
|
operationId: MakeBucket
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/makeBucketRequest"
|
2020-04-01 18:18:57 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/buckets/{name}:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: Bucket Info
|
|
|
|
|
operationId: BucketInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/bucket"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
|
|
|
|
delete:
|
|
|
|
|
summary: Delete Bucket
|
|
|
|
|
operationId: DeleteBucket
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/buckets/{name}/set-policy:
|
2020-04-01 18:18:57 -07:00
|
|
|
put:
|
|
|
|
|
summary: Bucket Set Policy
|
|
|
|
|
operationId: BucketSetPolicy
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/setBucketPolicyRequest"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/bucket"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/buckets/{bucket_name}/events:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Bucket Events
|
|
|
|
|
operationId: ListBucketEvents
|
|
|
|
|
parameters:
|
|
|
|
|
- name: bucket_name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listBucketEventsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-02 20:09:36 -07:00
|
|
|
post:
|
|
|
|
|
summary: Create Bucket Event
|
|
|
|
|
operationId: CreateBucketEvent
|
|
|
|
|
parameters:
|
|
|
|
|
- name: bucket_name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/bucketEventRequest"
|
2020-04-02 20:09:36 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
|
|
|
|
/buckets/{bucket_name}/events/{arn}:
|
2020-04-07 09:27:25 -07:00
|
|
|
delete:
|
|
|
|
|
summary: Delete Bucket Event
|
|
|
|
|
operationId: DeleteBucketEvent
|
|
|
|
|
parameters:
|
|
|
|
|
- name: bucket_name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
2020-04-16 13:56:12 -07:00
|
|
|
- name: arn
|
2020-04-07 09:27:25 -07:00
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
2020-04-16 13:56:12 -07:00
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/notificationDeleteRequest"
|
2020-04-07 09:27:25 -07:00
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-29 18:28:28 -07:00
|
|
|
/service-accounts:
|
2020-05-04 15:48:38 -07:00
|
|
|
get:
|
|
|
|
|
summary: List User's Service Accounts
|
|
|
|
|
operationId: ListUserServiceAccounts
|
|
|
|
|
parameters:
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/serviceAccounts"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-29 18:28:28 -07:00
|
|
|
post:
|
|
|
|
|
summary: Create Service Account
|
|
|
|
|
operationId: CreateServiceAccount
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/serviceAccountRequest"
|
2020-04-29 18:28:28 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/serviceAccountCreds"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
|
2020-05-04 15:48:38 -07:00
|
|
|
/service-accounts/{access_key}:
|
|
|
|
|
delete:
|
|
|
|
|
summary: Delete Service Account
|
|
|
|
|
operationId: DeleteServiceAccount
|
|
|
|
|
parameters:
|
|
|
|
|
- name: access_key
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- UserAPI
|
2020-04-29 18:28:28 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/users:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Users
|
|
|
|
|
operationId: ListUsers
|
|
|
|
|
parameters:
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listUsersResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Add User
|
|
|
|
|
operationId: AddUser
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/addUserRequest"
|
2020-04-01 18:18:57 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/user"
|
2020-04-01 18:18:57 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-06 20:07:32 -05:00
|
|
|
/users/{name}:
|
2020-04-09 18:39:49 -05:00
|
|
|
get:
|
|
|
|
|
summary: Get User Info
|
|
|
|
|
operationId: GetUserInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/user"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
2020-07-09 12:24:01 -07:00
|
|
|
- AdminAPI
|
2020-04-09 18:39:49 -05:00
|
|
|
put:
|
|
|
|
|
summary: Update User Info
|
|
|
|
|
operationId: UpdateUserInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/updateUser"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/user"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-06 20:07:32 -05:00
|
|
|
delete:
|
|
|
|
|
summary: Remove user
|
|
|
|
|
operationId: RemoveUser
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-08 19:38:18 -05:00
|
|
|
/users/{name}/groups:
|
|
|
|
|
put:
|
|
|
|
|
summary: Update Groups for a user
|
|
|
|
|
operationId: UpdateUserGroups
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/updateUserGroups"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/user"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-15 20:08:35 -05:00
|
|
|
/users-groups-bulk:
|
|
|
|
|
put:
|
|
|
|
|
summary: Bulk functionality to Add Users to Groups
|
|
|
|
|
operationId: BulkUpdateUsersGroups
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/bulkUserGroups"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/groups:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Groups
|
|
|
|
|
operationId: ListGroups
|
|
|
|
|
parameters:
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listGroupsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Add Group
|
|
|
|
|
operationId: AddGroup
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/addGroupRequest"
|
2020-04-01 18:18:57 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/groups/{name}:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: Group info
|
|
|
|
|
operationId: GroupInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/group"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
delete:
|
2020-04-02 09:57:59 -07:00
|
|
|
summary: Remove group
|
2020-04-01 18:18:57 -07:00
|
|
|
operationId: RemoveGroup
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
put:
|
|
|
|
|
summary: Update Group Members or Status
|
|
|
|
|
operationId: UpdateGroup
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/updateGroupRequest"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/group"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/policies:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Policies
|
|
|
|
|
operationId: ListPolicies
|
|
|
|
|
parameters:
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listPoliciesResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Add Policy
|
|
|
|
|
operationId: AddPolicy
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/addPolicyRequest"
|
2020-04-01 18:18:57 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/policy"
|
2020-04-01 18:18:57 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/policies/{name}:
|
2020-04-01 18:18:57 -07:00
|
|
|
delete:
|
|
|
|
|
summary: Remove policy
|
|
|
|
|
operationId: RemovePolicy
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
get:
|
|
|
|
|
summary: Policy info
|
|
|
|
|
operationId: PolicyInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/policy"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/configs:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: List Configurations
|
|
|
|
|
operationId: ListConfig
|
|
|
|
|
parameters:
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listConfigResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/set-policy/{name}:
|
2020-04-01 18:18:57 -07:00
|
|
|
put:
|
|
|
|
|
summary: Set policy
|
|
|
|
|
operationId: SetPolicy
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/setPolicyRequest"
|
2020-04-01 18:18:57 -07:00
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/configs/{name}:
|
2020-04-01 18:18:57 -07:00
|
|
|
get:
|
|
|
|
|
summary: Configuration info
|
|
|
|
|
operationId: ConfigInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/configuration"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
put:
|
|
|
|
|
summary: Set Configuration
|
|
|
|
|
operationId: SetConfig
|
|
|
|
|
parameters:
|
|
|
|
|
- name: name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/setConfigRequest"
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/service/restart:
|
2020-04-01 18:18:57 -07:00
|
|
|
post:
|
|
|
|
|
summary: Restart Service
|
|
|
|
|
operationId: RestartService
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-03 13:17:31 -07:00
|
|
|
/profiling/start:
|
2020-04-02 09:57:59 -07:00
|
|
|
post:
|
|
|
|
|
summary: Start recording profile data
|
|
|
|
|
operationId: ProfilingStart
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/profilingStartRequest"
|
2020-04-02 09:57:59 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/startProfilingList"
|
2020-04-02 09:57:59 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/profiling/stop:
|
2020-04-02 09:57:59 -07:00
|
|
|
post:
|
|
|
|
|
summary: Stop and download profile data
|
|
|
|
|
operationId: ProfilingStop
|
|
|
|
|
produces:
|
|
|
|
|
- application/octet-stream
|
|
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
type: file
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 13:17:31 -07:00
|
|
|
/admin/info:
|
2020-04-02 20:15:39 -07:00
|
|
|
get:
|
|
|
|
|
summary: Returns information about the deployment
|
|
|
|
|
operationId: AdminInfo
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/adminInfoResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-03 14:27:47 -07:00
|
|
|
/admin/arns:
|
|
|
|
|
get:
|
|
|
|
|
summary: Returns a list of active ARNs in the instance
|
|
|
|
|
operationId: ArnList
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/arnsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-04-09 16:07:26 -07:00
|
|
|
/admin/notification_endpoints:
|
|
|
|
|
get:
|
|
|
|
|
summary: Returns a list of active notification endpoints
|
|
|
|
|
operationId: NotificationEndpointList
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/notifEndpointResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Allows to configure a new notification endpoint
|
|
|
|
|
operationId: AddNotificationEndpoint
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/notificationEndpoint"
|
2020-04-09 16:07:26 -07:00
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/notificationEndpoint"
|
2020-04-09 16:07:26 -07:00
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
2020-04-16 13:56:12 -07:00
|
|
|
|
2020-07-01 18:03:22 -07:00
|
|
|
/tenants:
|
|
|
|
|
get:
|
|
|
|
|
summary: List Tenant of All Namespaces
|
|
|
|
|
operationId: ListAllTenants
|
|
|
|
|
parameters:
|
|
|
|
|
- name: sort_by
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: string
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listTenantsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
post:
|
|
|
|
|
summary: Create Tenant
|
|
|
|
|
operationId: CreateTenant
|
|
|
|
|
parameters:
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/createTenantRequest"
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/createTenantResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
|
|
|
|
/namespaces/{namespace}/tenants:
|
|
|
|
|
get:
|
|
|
|
|
summary: List Tenants by Namespace
|
|
|
|
|
operationId: ListTenants
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: sort_by
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: string
|
|
|
|
|
- name: offset
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
- name: limit
|
|
|
|
|
in: query
|
|
|
|
|
required: false
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/listTenantsResponse"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
|
|
|
|
/namespaces/{namespace}/tenants/{tenant}:
|
|
|
|
|
get:
|
|
|
|
|
summary: Tenant Info
|
|
|
|
|
operationId: TenantInfo
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: tenant
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/tenant"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
delete:
|
|
|
|
|
summary: Delete Tenant
|
|
|
|
|
operationId: DeleteTenant
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: tenant
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
204:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
put:
|
|
|
|
|
summary: Update Tenant
|
|
|
|
|
operationId: UpdateTenant
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: tenant
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/updateTenantRequest"
|
|
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
2020-07-13 20:36:27 -07:00
|
|
|
/namespaces/{namespace}/tenants/{tenant}/zones:
|
|
|
|
|
post:
|
|
|
|
|
summary: Tenant Add Zone
|
|
|
|
|
operationId: TenantAddZone
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: tenant
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: body
|
|
|
|
|
in: body
|
|
|
|
|
required: true
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/zone"
|
|
|
|
|
responses:
|
|
|
|
|
201:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
2020-07-27 14:19:40 -07:00
|
|
|
/namespaces/{namespace}/tenants/{tenant}/usage:
|
|
|
|
|
get:
|
|
|
|
|
summary: Get Usage For The Tenant
|
|
|
|
|
operationId: GetTenantUsage
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: tenant
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/tenantUsage"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
2020-07-01 18:03:22 -07:00
|
|
|
/namespaces/{namespace}/resourcequotas/{resource-quota-name}:
|
|
|
|
|
get:
|
|
|
|
|
summary: Get Resource Quota
|
|
|
|
|
operationId: GetResourceQuota
|
|
|
|
|
parameters:
|
|
|
|
|
- name: namespace
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
- name: resource-quota-name
|
|
|
|
|
in: path
|
|
|
|
|
required: true
|
|
|
|
|
type: string
|
|
|
|
|
responses:
|
|
|
|
|
200:
|
|
|
|
|
description: A successful response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/resourceQuota"
|
|
|
|
|
default:
|
|
|
|
|
description: Generic error response.
|
|
|
|
|
schema:
|
|
|
|
|
$ref: "#/definitions/error"
|
|
|
|
|
tags:
|
|
|
|
|
- AdminAPI
|
|
|
|
|
|
2020-04-01 18:18:57 -07:00
|
|
|
definitions:
|
|
|
|
|
bucketAccess:
|
|
|
|
|
type: string
|
|
|
|
|
enum:
|
|
|
|
|
- PRIVATE
|
|
|
|
|
- PUBLIC
|
|
|
|
|
- CUSTOM
|
|
|
|
|
default: PRIVATE
|
|
|
|
|
bucket:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- name
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
minLength: 3
|
|
|
|
|
size:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
access:
|
|
|
|
|
$ref: "#/definitions/bucketAccess"
|
|
|
|
|
creation_date:
|
|
|
|
|
type: string
|
|
|
|
|
listBucketsResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
buckets:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/bucket"
|
|
|
|
|
title: list of resulting buckets
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: number of buckets accessible to tenant user
|
|
|
|
|
makeBucketRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- name
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
error:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- message
|
|
|
|
|
properties:
|
|
|
|
|
code:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
message:
|
|
|
|
|
type: string
|
|
|
|
|
user:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
accessKey:
|
|
|
|
|
type: string
|
|
|
|
|
policy:
|
|
|
|
|
type: string
|
|
|
|
|
memberOf:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
listUsersResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
users:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/user"
|
|
|
|
|
title: list of resulting users
|
|
|
|
|
addUserRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- accessKey
|
|
|
|
|
- secretKey
|
2020-04-09 18:39:49 -05:00
|
|
|
- groups
|
2020-04-01 18:18:57 -07:00
|
|
|
properties:
|
|
|
|
|
accessKey:
|
|
|
|
|
type: string
|
|
|
|
|
secretKey:
|
|
|
|
|
type: string
|
2020-04-09 18:39:49 -05:00
|
|
|
groups:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-01 18:18:57 -07:00
|
|
|
group:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
members:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
policy:
|
|
|
|
|
type: string
|
|
|
|
|
addGroupRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- group
|
|
|
|
|
- members
|
|
|
|
|
properties:
|
|
|
|
|
group:
|
|
|
|
|
type: string
|
|
|
|
|
members:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
listGroupsResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
groups:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
title: list of groups
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: total number of groups
|
|
|
|
|
policy:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
2020-04-06 19:10:10 -07:00
|
|
|
policy:
|
2020-04-01 18:18:57 -07:00
|
|
|
type: string
|
|
|
|
|
policyEntity:
|
|
|
|
|
type: string
|
|
|
|
|
enum:
|
|
|
|
|
- user
|
|
|
|
|
- group
|
|
|
|
|
default: user
|
|
|
|
|
setPolicyRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- entityType
|
|
|
|
|
- entityName
|
|
|
|
|
properties:
|
|
|
|
|
entityType:
|
|
|
|
|
$ref: "#/definitions/policyEntity"
|
|
|
|
|
entityName:
|
|
|
|
|
type: string
|
|
|
|
|
addPolicyRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- name
|
2020-04-06 19:10:10 -07:00
|
|
|
- policy
|
2020-04-01 18:18:57 -07:00
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
2020-04-06 19:10:10 -07:00
|
|
|
policy:
|
2020-04-01 18:18:57 -07:00
|
|
|
type: string
|
|
|
|
|
listPoliciesResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
policies:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/policy"
|
|
|
|
|
title: list of policies
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: total number of policies
|
|
|
|
|
updateGroupRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- members
|
|
|
|
|
- status
|
|
|
|
|
properties:
|
|
|
|
|
members:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
configDescription:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
key:
|
|
|
|
|
type: string
|
|
|
|
|
description:
|
|
|
|
|
type: string
|
|
|
|
|
configurationKV:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
key:
|
|
|
|
|
type: string
|
|
|
|
|
value:
|
|
|
|
|
type: string
|
|
|
|
|
configuration:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
key_values:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/configurationKV"
|
|
|
|
|
listConfigResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
configurations:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
2020-07-09 12:24:01 -07:00
|
|
|
$ref: "#/definitions/configDescription"
|
2020-04-01 18:18:57 -07:00
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: total number of configurations
|
|
|
|
|
setConfigRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- key_values
|
|
|
|
|
properties:
|
|
|
|
|
key_values:
|
|
|
|
|
type: array
|
|
|
|
|
minItems: 1
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/configurationKV"
|
|
|
|
|
arn_resource_id:
|
|
|
|
|
type: string
|
|
|
|
|
title: Used if configuration is an event notification's target
|
|
|
|
|
notificationEventType:
|
|
|
|
|
type: string
|
|
|
|
|
enum:
|
|
|
|
|
- put
|
|
|
|
|
- delete
|
|
|
|
|
- get
|
|
|
|
|
notificationConfig:
|
|
|
|
|
type: object
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
required:
|
2020-04-02 20:09:36 -07:00
|
|
|
- arn
|
2020-04-01 18:18:57 -07:00
|
|
|
properties:
|
|
|
|
|
id:
|
|
|
|
|
type: string
|
|
|
|
|
arn:
|
|
|
|
|
type: string
|
|
|
|
|
events:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/notificationEventType"
|
|
|
|
|
title: "filter specific type of event. Defaults to all event (default: '[put,delete,get]')"
|
|
|
|
|
prefix:
|
|
|
|
|
type: string
|
|
|
|
|
title: "filter event associated to the specified prefix"
|
|
|
|
|
suffix:
|
|
|
|
|
type: string
|
|
|
|
|
title: "filter event associated to the specified suffix"
|
2020-04-16 13:56:12 -07:00
|
|
|
notificationDeleteRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- events
|
|
|
|
|
- prefix
|
|
|
|
|
- suffix
|
|
|
|
|
properties:
|
|
|
|
|
events:
|
|
|
|
|
type: array
|
|
|
|
|
minLength: 1
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/notificationEventType"
|
|
|
|
|
title: "filter specific type of event. Defaults to all event (default: '[put,delete,get]')"
|
|
|
|
|
prefix:
|
|
|
|
|
type: string
|
|
|
|
|
title: "filter event associated to the specified prefix"
|
|
|
|
|
suffix:
|
|
|
|
|
type: string
|
|
|
|
|
title: "filter event associated to the specified suffix"
|
2020-04-02 20:09:36 -07:00
|
|
|
bucketEventRequest:
|
|
|
|
|
type: object
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
required:
|
2020-04-02 20:09:36 -07:00
|
|
|
- configuration
|
|
|
|
|
properties:
|
|
|
|
|
configuration:
|
|
|
|
|
$ref: "#/definitions/notificationConfig"
|
|
|
|
|
ignoreExisting:
|
|
|
|
|
type: boolean
|
2020-04-01 18:18:57 -07:00
|
|
|
listBucketEventsResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
events:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/notificationConfig"
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: total number of bucket events
|
|
|
|
|
setBucketPolicyRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- access
|
|
|
|
|
properties:
|
|
|
|
|
access:
|
2020-04-02 09:57:59 -07:00
|
|
|
$ref: "#/definitions/bucketAccess"
|
2020-04-01 18:18:57 -07:00
|
|
|
loginDetails:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
loginStrategy:
|
|
|
|
|
type: string
|
2020-07-09 12:24:01 -07:00
|
|
|
enum: [form, redirect, service-account]
|
2020-04-01 18:18:57 -07:00
|
|
|
redirect:
|
|
|
|
|
type: string
|
2020-05-01 08:38:52 -07:00
|
|
|
loginOauth2AuthRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- state
|
|
|
|
|
- code
|
|
|
|
|
properties:
|
|
|
|
|
state:
|
|
|
|
|
type: string
|
|
|
|
|
code:
|
|
|
|
|
type: string
|
2020-07-08 13:55:08 -07:00
|
|
|
loginOperatorRequest:
|
MCS service account authentication with Mkube (#166)
`MCS` will authenticate against `Mkube`using bearer tokens via HTTP
`Authorization` header. The user will provide this token once
in the login form, MCS will validate it against Mkube (list tenants) and
if valid will generate and return a new MCS sessions
with encrypted claims (the user Service account token will be inside the
JWT in the data field)
Kubernetes
The provided `JWT token` corresponds to the `Kubernetes service account`
that `Mkube` will use to run tasks on behalf of the
user, ie: list, create, edit, delete tenants, storage class, etc.
Development
If you are running mcs in your local environment and wish to make
request to `Mkube` you can set `MCS_M3_HOSTNAME`, if
the environment variable is not present by default `MCS` will use
`"http://m3:8787"`, additionally you will need to set the
`MCS_MKUBE_ADMIN_ONLY=on` variable to make MCS display the Mkube UI
Extract the Service account token and use it with MCS
For local development you can use the jwt associated to the `m3-sa`
service account, you can get the token running
the following command in your terminal:
```
kubectl get secret $(kubectl get serviceaccount m3-sa -o
jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64
--decode
```
Then run the mcs server
```
MCS_M3_HOSTNAME=http://localhost:8787 MCS_MKUBE_ADMIN_ONLY=on ./mcs
server
```
Self-signed certificates and Custom certificate authority for Mkube
If Mkube uses TLS with a self-signed certificate, or a certificate
issued by a custom certificate authority you can add those
certificates usinng the `MCS_M3_SERVER_TLS_CA_CERTIFICATE` env variable
````
MCS_M3_SERVER_TLS_CA_CERTIFICATE=cert1.pem,cert2.pem,cert3.pem ./mcs
server
````
2020-06-23 11:37:46 -07:00
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- jwt
|
|
|
|
|
properties:
|
|
|
|
|
jwt:
|
|
|
|
|
type: string
|
2020-04-01 18:18:57 -07:00
|
|
|
loginRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- accessKey
|
|
|
|
|
- secretKey
|
|
|
|
|
properties:
|
|
|
|
|
accessKey:
|
|
|
|
|
type: string
|
|
|
|
|
secretKey:
|
|
|
|
|
type: string
|
|
|
|
|
loginResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
sessionId:
|
|
|
|
|
type: string
|
|
|
|
|
# Structure that holds the `Bearer {TOKEN}` present on authenticated requests
|
|
|
|
|
principal:
|
2020-07-10 19:14:28 -07:00
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
accessKeyID:
|
|
|
|
|
type: string
|
|
|
|
|
secretAccessKey:
|
|
|
|
|
type: string
|
|
|
|
|
sessionToken:
|
|
|
|
|
type: string
|
|
|
|
|
actions:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-02 09:57:59 -07:00
|
|
|
startProfilingItem:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
nodeName:
|
|
|
|
|
type: string
|
|
|
|
|
success:
|
|
|
|
|
type: boolean
|
|
|
|
|
error:
|
|
|
|
|
type: string
|
|
|
|
|
startProfilingList:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: number of start results
|
|
|
|
|
startResults:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/startProfilingItem"
|
|
|
|
|
profilerType:
|
|
|
|
|
type: string
|
|
|
|
|
enum:
|
|
|
|
|
- cpu
|
|
|
|
|
- mem
|
|
|
|
|
- block
|
|
|
|
|
- mutex
|
|
|
|
|
- trace
|
|
|
|
|
- threads
|
|
|
|
|
- goroutines
|
|
|
|
|
profilingStartRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- type
|
|
|
|
|
properties:
|
|
|
|
|
type:
|
2020-04-02 15:54:34 -07:00
|
|
|
$ref: "#/definitions/profilerType"
|
|
|
|
|
sessionResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
ACL for mcs (#123)
This PR sets the initial version of the ACL for mcs, the idea behind
this is to start using the principle of least privileges when assigning
policies to users when creating users through mcs, currently mcsAdmin policy uses admin:*
and s3:* and by default a user with that policy will have access to everything, if want to limit
that we can create a policy with least privileges.
We need to start validating explicitly if users has acccess to an
specific endpoint based on IAM policy actions.
In this first version every endpoint (you can see it as a page to),
defines a set of well defined admin/s3 actions to work properly, ie:
```
// corresponds to /groups endpoint used by the groups page
var groupsActionSet = iampolicy.NewActionSet(
iampolicy.ListGroupsAdminAction,
iampolicy.AddUserToGroupAdminAction,
//iampolicy.GetGroupAdminAction,
iampolicy.EnableGroupAdminAction,
iampolicy.DisableGroupAdminAction,
)
// corresponds to /policies endpoint used by the policies page
var iamPoliciesActionSet = iampolicy.NewActionSet(
iampolicy.GetPolicyAdminAction,
iampolicy.DeletePolicyAdminAction,
iampolicy.CreatePolicyAdminAction,
iampolicy.AttachPolicyAdminAction,
iampolicy.ListUserPoliciesAdminAction,
)
```
With that said, for this initial version, now the sessions endpoint will
return a list of authorized pages to be render on the UI, on subsequent
prs we will add this verification of authorization via a server
middleware.
2020-05-18 18:03:06 -07:00
|
|
|
pages:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-02 15:54:34 -07:00
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
enum: [ok]
|
2020-04-02 20:15:39 -07:00
|
|
|
adminInfoResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
buckets:
|
|
|
|
|
type: integer
|
|
|
|
|
objects:
|
|
|
|
|
type: integer
|
|
|
|
|
usage:
|
|
|
|
|
type: integer
|
2020-04-03 14:27:47 -07:00
|
|
|
arnsResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
arns:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-08 19:38:18 -05:00
|
|
|
updateUserGroups:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- groups
|
|
|
|
|
properties:
|
|
|
|
|
groups:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-09 16:07:26 -07:00
|
|
|
nofiticationService:
|
|
|
|
|
type: string
|
|
|
|
|
enum:
|
|
|
|
|
- webhook
|
|
|
|
|
- amqp
|
|
|
|
|
- kafka
|
|
|
|
|
- mqtt
|
|
|
|
|
- nats
|
|
|
|
|
- nsq
|
|
|
|
|
- mysql
|
|
|
|
|
- postgres
|
|
|
|
|
- elasticsearch
|
|
|
|
|
- redis
|
|
|
|
|
notificationEndpointItem:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
service:
|
|
|
|
|
$ref: "#/definitions/nofiticationService"
|
|
|
|
|
account_id:
|
|
|
|
|
type: string
|
|
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
notificationEndpoint:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- service
|
|
|
|
|
- account_id
|
|
|
|
|
- properties
|
|
|
|
|
properties:
|
|
|
|
|
service:
|
|
|
|
|
$ref: "#/definitions/nofiticationService"
|
|
|
|
|
account_id:
|
|
|
|
|
type: string
|
|
|
|
|
properties:
|
|
|
|
|
type: object
|
|
|
|
|
additionalProperties:
|
|
|
|
|
type: string
|
|
|
|
|
notifEndpointResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
notification_endpoints:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/notificationEndpointItem"
|
2020-04-09 18:39:49 -05:00
|
|
|
updateUser:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- status
|
|
|
|
|
- groups
|
|
|
|
|
properties:
|
|
|
|
|
status:
|
|
|
|
|
type: string
|
|
|
|
|
groups:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-04-15 20:08:35 -05:00
|
|
|
bulkUserGroups:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- users
|
|
|
|
|
- groups
|
|
|
|
|
properties:
|
|
|
|
|
users:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
groups:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
2020-05-04 15:48:38 -07:00
|
|
|
serviceAccounts:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
type: string
|
|
|
|
|
serviceAccountRequest:
|
2020-04-29 18:28:28 -07:00
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
policy:
|
|
|
|
|
type: string
|
2020-07-09 12:24:01 -07:00
|
|
|
title: "policy to be applied to the Service Account if any"
|
2020-04-29 18:28:28 -07:00
|
|
|
serviceAccountCreds:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
accessKey:
|
|
|
|
|
type: string
|
|
|
|
|
secretKey:
|
|
|
|
|
type: string
|
2020-07-09 12:24:01 -07:00
|
|
|
|
2020-07-01 18:03:22 -07:00
|
|
|
tenant:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
creation_date:
|
|
|
|
|
type: string
|
|
|
|
|
currentState:
|
|
|
|
|
type: string
|
|
|
|
|
zones:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/zone"
|
2020-07-09 12:24:01 -07:00
|
|
|
image:
|
|
|
|
|
type: string
|
2020-07-01 18:03:22 -07:00
|
|
|
namespace:
|
|
|
|
|
type: string
|
2020-07-09 12:24:01 -07:00
|
|
|
total_size:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
2020-07-27 14:19:40 -07:00
|
|
|
|
|
|
|
|
tenantUsage:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
2020-07-09 12:24:01 -07:00
|
|
|
used_size:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
|
2020-07-01 18:03:22 -07:00
|
|
|
tenantList:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
zone_count:
|
|
|
|
|
type: integer
|
|
|
|
|
instance_count:
|
|
|
|
|
type: integer
|
2020-07-27 18:03:47 -07:00
|
|
|
total_size:
|
2020-07-01 18:03:22 -07:00
|
|
|
type: integer
|
|
|
|
|
volume_count:
|
|
|
|
|
type: integer
|
|
|
|
|
creation_date:
|
|
|
|
|
type: string
|
|
|
|
|
currentState:
|
|
|
|
|
type: string
|
|
|
|
|
namespace:
|
|
|
|
|
type: string
|
|
|
|
|
listTenantsResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
tenants:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/tenantList"
|
|
|
|
|
title: list of resulting tenants
|
|
|
|
|
total:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
title: number of tenants accessible to tenant user
|
|
|
|
|
updateTenantRequest:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
image:
|
|
|
|
|
type: string
|
|
|
|
|
pattern: "^((.*?)/(.*?):(.+))$"
|
|
|
|
|
createTenantRequest:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- name
|
|
|
|
|
- namespace
|
2020-07-25 14:38:16 -07:00
|
|
|
- zones
|
2020-07-01 18:03:22 -07:00
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
pattern: "^[a-z0-9-]{3,63}$"
|
|
|
|
|
image:
|
|
|
|
|
type: string
|
|
|
|
|
service_name:
|
|
|
|
|
type: string
|
|
|
|
|
zones:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/zone"
|
|
|
|
|
mounth_path:
|
|
|
|
|
type: string
|
|
|
|
|
access_key:
|
|
|
|
|
type: string
|
|
|
|
|
secret_key:
|
|
|
|
|
type: string
|
2020-07-25 14:38:16 -07:00
|
|
|
enable_console:
|
2020-07-01 18:03:22 -07:00
|
|
|
type: boolean
|
|
|
|
|
default: true
|
|
|
|
|
enable_ssl:
|
|
|
|
|
type: boolean
|
|
|
|
|
default: true
|
|
|
|
|
namespace:
|
|
|
|
|
type: string
|
|
|
|
|
annotations:
|
|
|
|
|
type: object
|
|
|
|
|
additionalProperties:
|
|
|
|
|
type: string
|
|
|
|
|
createTenantResponse:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
access_key:
|
|
|
|
|
type: string
|
|
|
|
|
secret_key:
|
|
|
|
|
type: string
|
|
|
|
|
zone:
|
|
|
|
|
type: object
|
2020-07-13 20:36:27 -07:00
|
|
|
required:
|
|
|
|
|
- servers
|
2020-07-25 14:38:16 -07:00
|
|
|
- volumes_per_server
|
|
|
|
|
- volume_configuration
|
2020-07-01 18:03:22 -07:00
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
servers:
|
|
|
|
|
type: integer
|
2020-07-25 14:38:16 -07:00
|
|
|
volumes_per_server:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int32
|
|
|
|
|
volume_configuration:
|
|
|
|
|
type: object
|
|
|
|
|
required:
|
|
|
|
|
- size
|
|
|
|
|
properties:
|
|
|
|
|
size:
|
|
|
|
|
type: integer
|
|
|
|
|
storage_class_name:
|
|
|
|
|
type: string
|
2020-04-29 18:28:28 -07:00
|
|
|
|
2020-07-01 18:03:22 -07:00
|
|
|
resourceQuota:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
elements:
|
|
|
|
|
type: array
|
|
|
|
|
items:
|
|
|
|
|
$ref: "#/definitions/resourceQuotaElement"
|
|
|
|
|
|
|
|
|
|
resourceQuotaElement:
|
|
|
|
|
type: object
|
|
|
|
|
properties:
|
|
|
|
|
name:
|
|
|
|
|
type: string
|
|
|
|
|
hard:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|
|
|
|
|
used:
|
|
|
|
|
type: integer
|
|
|
|
|
format: int64
|