VMware vSphere Integrated Containers provider (#206)

* Add Virtual Kubelet provider for VIC

Initial virtual kubelet provider for VMware VIC.  This provider currently
handles creating and starting of a pod VM via the VIC portlayer and persona
server.  Image store handling via the VIC persona server.  This provider
currently requires the feature/wolfpack branch of VIC.

* Added pod stop and delete.  Also added node capacity.

Added the ability to stop and delete pod VMs via VIC.  Also retrieve
node capacity information from the VCH.

* Cleanup and readme file

Some file clean up and added a Readme.md markdown file for the VIC
provider.

* Cleaned up errors, added function comments, moved operation code

1. Cleaned up error handling.  Set standard for creating errors.
2. Added method prototype comments for all interface functions.
3. Moved PodCreator, PodStarter, PodStopper, and PodDeleter to a new folder.

* Add mocking code and unit tests for podcache, podcreator, and podstarter

Used the unit test framework used in VIC to handle assertions in the provider's
unit test.  Mocking code generated using OSS project mockery, which is compatible
with the testify assertion framework.

* Vendored packages for the VIC provider

Requires feature/wolfpack branch of VIC and a few specific commit sha of
projects used within VIC.

* Implementation of POD Stopper and Deleter unit tests (#4)

* Updated files for initial PR
This commit is contained in:
Loc Nguyen
2018-06-04 15:41:32 -07:00
committed by Ria Bhatia
parent 98a111e8b7
commit 513cebe7b7
6296 changed files with 1123685 additions and 8 deletions

View File

@@ -0,0 +1,197 @@
---
swagger: '2.0'
info:
version: 0.1.0
title: 'AttendList'
description: |
AttendList service.
contact:
name: API Support
url: http://attendlist.co/support
email: contact@evecon.co
consumes:
- application/json
produces:
- application/json
definitions:
Service:
description: Service information
type: object
properties:
Name:
type: string
readOnly: true
Build:
type: string
readOnly: true
Versions:
description: Representation of Version information
type: object
properties:
Id:
type: integer
format: int64
readOnly: true
Version:
type: integer
format: int64
readOnly: true
Created:
type: integer
format: int64
readOnly: true
Updated:
type: integer
format: int64
readOnly: true
Deleted:
type: boolean
readOnly: true
Dates:
description: Representation of Date interval
type: object
properties:
StartDate:
type: string
format: date-time
EndDate:
type: string
format: date-time
Location:
description: Representation of lat-lon Location
type: object
properties:
Latitude:
type: number
format: float
Longitude:
type: number
format: float
Event:
description: Representation of an Event
allOf:
- $ref: '#/definitions/Versions'
- $ref: '#/definitions/Dates'
- $ref: '#/definitions/Location'
- type: object
properties:
Name:
type: string
URL:
type: string
Notes:
type: string
Autosearch:
type: boolean
example:
StartDate: "2015-11-01T12:00:00Z"
EndDate: "2015-11-05T12:00:00Z"
Latitude: 59.842609
Longitude: 30.319087
Name: "Bikers meeting"
URL: "http://attendlist.co"
Notes: "Yet another bikers meeting"
Autosearch: false
paths:
/services:
get:
description: Get services information.
tags:
- services
operationId: getServices
responses:
'200':
description: Successful response
schema:
title: ArrayOfServices
type: array
items:
$ref: '#/definitions/Service'
default:
description: Generic Error
/events:
get:
description: Get events.
tags:
- events
operationId: getEvents
responses:
'200':
description: Successful response
schema:
title: ArrayOfEvents
type: array
items:
$ref: '#/definitions/Event'
default:
description: Generic Error
post:
description: Create new event.
tags:
- events
operationId: postEvent
parameters:
- name: Event
in: body
description: New events
required: true
schema:
$ref: '#/definitions/Event'
responses:
'201':
description: |
Successful response.
headers:
'Location':
description: Contains link to the new Event resource
type: string
default:
description: Generic Error
/events/{id}:
parameters:
- name: id
in: path
description: Existing event id.
required: true
type: integer
format: int64
get:
description: Get event by id.
tags:
- events
operationId: getEventById
responses:
'200':
description: Successful response
schema:
title: Newly created event
$ref: '#/definitions/Event'
default:
description: Generic Error
put:
description: Update existing event.
tags:
- events
operationId: putEventById
parameters:
- name: Event
in: body
description: Existing event
required: true
schema:
$ref: '#/definitions/Event'
responses:
'204':
description: Successful response
default:
description: Generic Error
delete:
description: Delete event by id.
tags:
- events
operationId: deleteEventById
responses:
'204':
description: Successful response
default:
description: Generic Error

View File

@@ -0,0 +1,27 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid pattern in headers"
},
"paths": {
"/foo": {
"get": {
"responses": {
"default": {
"headers": {
"X-Foo": {
"type": "array",
"items": {
"type": "string",
"pattern": ")<-- bad pattern"
}
}
},
"description": "Generic Error"
}
}
}
}
}
}

View File

@@ -0,0 +1,33 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid pattern in headers"
},
"paths": {
"/foo": {
"get": {
"responses": {
"default": {
"headers": {
"X-Foo": {
"type": "string",
"pattern": ")<-- bad pattern"
}
},
"description": "Generic Error"
},
"402": {
"headers": {
"X-Foo": {
"type": "string",
"pattern": ")<-- bad pattern"
}
},
"description": "Generic Error"
}
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid pattern in items"
},
"parameters": {
"fooBody": {
"name": "user",
"in": "body",
"description": "user to add to the system",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string",
"pattern": ")<-- bad pattern"
}
}
}
},
"paths": {
"/foo": {
"parameters": [
{ "$ref": "#/parameters/fooBody" }
],
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid pattern in parameter"
},
"parameters": {
"userId": {
"name": "userId",
"in": "path",
"type": "string",
"pattern": ")<-- bad pattern",
"required": true
}
},
"paths": {
"/users/{userId}": {
"parameters": [
{ "$ref": "#/parameters/userId" }
],
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
}
}
}

View File

@@ -0,0 +1,25 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid pattern in schema"
},
"paths": {
"/foo": {
"get": {
"produces": [
"text/plain"
],
"responses": {
"200": {
"description": "Successful",
"schema": {
"type": "string",
"pattern": ")<-- bad pattern"
}
}
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"swagger" : "2.0",
"info" : {
"version" : "1.0",
"title" : "Hello World",
"description" : "Simple Hello World API, with Get operation to one resource path, no request parameters defined"
},
"host" : "api.tibco.com",
"basePath" : "/v1",
"schemes" : [ "http" ]
}

View File

@@ -0,0 +1,14 @@
{
"info" : {
"version" : "1.0",
"title" : "Hello World",
"description" : "Simple Hello World API, with Get operation to one resource path, no request parameters defined"
},
"host" : "api.tibco.com",
"basePath" : "/v1",
"schemes" : [ "http" ],
"paths": {
"/": {
}
}
}

View File

@@ -0,0 +1,15 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid no responses"
},
"paths": {
"/foo": {
"get": {
"description": "foo",
"responses": {}
}
}
}
}

View File

@@ -0,0 +1,14 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger invalid no responses"
},
"paths": {
"/foo": {
"get": {
"description": "foo"
}
}
}
}

View File

@@ -0,0 +1,55 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger parameters with refs"
},
"parameters": {
"userId": {
"name": "userId",
"in": "path",
"type": "string",
"required": true
},
"limit": {
"name": "limit",
"in": "query",
"type": "integer",
"format": "int64"
}
},
"paths": {
"/foo": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/bar": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/users/{userId}": {
"parameters": [{
"$ref": "#/parameters/userId"
}, {
"$ref": "#/parameters/limit"
}],
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger global parameters"
},
"parameters": {
"userId": {
"name": "userId",
"in": "path",
"type": "string",
"required": true
}
},
"paths": {
"/foo": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/bar": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/users/{userId}": {
"parameters": [{
"$ref": "#/parameters/userId"
}],
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
}
}
}

View File

@@ -0,0 +1,14 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger of additionalProperties in pathItem"
},
"paths": {
"/": {
"invalid-property": {
"description": "blah"
}
}
}
}

View File

@@ -0,0 +1,47 @@
{
"swagger": "2.0",
"info": {
"version": "0.0.1",
"title": "test of Swagger global parameters"
},
"parameters": {
"userId": {
"name": "userId",
"in": "path",
"type": "string",
"required": true
}
},
"paths": {
"/foo": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/bar": {
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
},
"/users/{userId}": {
"parameters": [
{ "$ref": "#/parameters/userId" }
],
"get": {
"responses": {
"200": {
"description": "Successful"
}
}
}
}
}
}