Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Swagger 3.x #1103

Open
robertoyoc opened this issue Aug 11, 2020 · 1 comment
Open

Support for Swagger 3.x #1103

robertoyoc opened this issue Aug 11, 2020 · 1 comment

Comments

@robertoyoc
Copy link

Subject of the issue

Does wskdeploy support using Swagger 3.x file?
Is OpenWhisk compatible with this OAS?

Your environment
Local computer where trying to deploy:
OpenWhisk CLI 1.0.0
wskdeploy 1.0.0
go version go1.14.7 linux/amd64

Host:
Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-1032-aws x86_64)
Kubernetes Version 1.18.6
Helm version v3.2.4

Steps to reproduce
I'm using the following OAS:

open_api3_spec.yaml

openapi: '3.0.0'
info:
  version: '1.0'
  title: Hello World API
servers:
  - url: 'https://<my_ip>/api'
    description: Development server

paths:
  /hello/world:
    get:
      summary: Returns greeting
      description: Returns a greeting to the user!
      parameters:
        - in: query
          name: name
          description: The name of the user
          schema:
            type: string
        - in: query
          name: place
          description: The place where the user is at
          schema:
            type: string
      responses:
        '200':
          description: Returns the greeting.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GreetingResponse'          
      operationId: getHello
      x-openwhisk:
        namespace: itio
        action: hello_world
        package: devops
        url: 'https://<my_ip>/api/v1/web/itio/devops/hello_world.json'

components:
  schemas:
    GreetingResponse:
      type: object
      properties:
        greeting:
          type: string
          description: Greeting response

x-ibm-configuration:
  assembly:
    execute:
      - operation-switch:
          title: whisk-invoke
          case:
            - operations:
                - getHello
              execute:
                - invoke:
                    target-url: 'https://<my_ip>/api/v1/web/itio/devops/hello_world.json'
                    verb: keep
          otherwise: []

manifest.json

project:
  config: 'open_api3_spec.yaml'
  packages:
    devops:
      version: 1.0
      license: Apache-2.0
      actions:
        hello_world:
          function: src/hello.js
          annotations:
            web-export: true

Then executing wskdeploy with these files.

Expected behaviour
API to be created with the OAS.

Actual behaviour

Error: manifestreader.go [118]: [ERROR_YAML_FILE_FORMAT_ERROR]: File: [manifest.yaml]:
==> Unable to parse swagger file: {{.err}}

Also tried exporting a Swagger 3.0 file from Swagger Hub:
swagger-export.yaml

openapi: 3.0.0
info:
  title: OpenAPIv3
  version: '1.0'
servers:
  - url: 'http://<my_ip>/api'
paths:
  /users:
    get:
      summary: Get Users
      tags: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
      operationId: get-users
components:
  schemas:
    User:
      title: User
      type: object
      properties:
        id:
          type: string
        name:
          type: string

Error changed to:

error: Unable to parse swagger file: Swagger file is invalid (missing basePath, info, paths, or swagger fields)

From the error message, it says missing basePath, but this requirement is obsolete in OpenAPI 3.0.

@rabbah
Copy link
Member

rabbah commented Aug 12, 2020

My guess is there are a few schema alignments necessary both in the cli/go client and in the route management package in the openwhisk repo.

Are you interested in submitting a pull request to support openapi?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants