1
0
mirror of https://github.com/rancher/norman.git synced 2025-08-25 10:28:37 +00:00
mirror from GitHub
Go to file
Darren Shepherd 418b1d3d37 Update vendor
2018-10-30 11:31:00 -07:00
api API-UI 1.1.5 2018-07-24 14:33:56 -07:00
authorization Add CanDo function to AccessControl interface 2018-04-25 20:14:41 -07:00
clientbase Add ability to pass in WebSocket dialer 2018-07-31 14:10:23 -07:00
condition Allow to put Reason in controller.ForgetError 2018-10-03 02:44:42 +09:00
controller Handlers return object and error 2018-10-30 09:57:37 -07:00
example Major refactor of subcontexts 2018-02-09 13:45:22 -07:00
generator Handlers return object and error 2018-10-30 09:57:37 -07:00
httperror Add Conflict constant 2018-07-19 10:23:17 -07:00
leader Make k8s 1.12 leader election the default 2018-10-23 22:48:23 -07:00
lifecycle Handlers return object and error 2018-10-30 09:57:37 -07:00
metrics Add Generic Controller Related Metrics 2018-10-05 14:36:58 +09:00
name Special handling for endpoints plural name 2018-01-12 19:15:37 +00:00
objectclient Add support for k8s 1.12 2018-10-09 19:30:04 -07:00
package Initial Commit 2017-10-11 22:48:07 -07:00
parse Revert "Revert "Don't strip strings on output"" 2018-09-10 20:34:17 -07:00
pkg Fix k3s issues 2018-10-24 16:21:28 -07:00
restwatch Add timeouts to rest clients 2018-04-02 15:46:10 -07:00
scripts Make k8s 1.12 leader election the default 2018-10-23 22:48:23 -07:00
signal Move gorouting dump 2018-01-22 23:53:21 +00:00
store Add support for k8s 1.12 2018-10-09 19:30:04 -07:00
types Add pending mapper to set resource state to pending when no conditions 2018-10-09 19:30:07 -07:00
urlbuilder Allow API to run through k8s service proxy 2018-07-19 10:23:17 -07:00
vendor Update vendor 2018-10-30 11:31:00 -07:00
.dockerignore More initial dev 2017-11-10 21:46:30 -07:00
.drone.yml Initial Commit 2017-10-11 22:48:07 -07:00
.gitignore Fixes to adapt to 1.10.5 2018-07-11 16:44:45 -07:00
build.go Make k8s 1.12 leader election the default 2018-10-23 22:48:23 -07:00
Dockerfile.dapper Switch to go 1.11 2018-09-25 11:43:11 -07:00
LICENSE Initial Commit 2017-10-11 22:48:07 -07:00
Makefile Switch to go 1.11 2018-09-25 11:43:11 -07:00
README.md Update example 2017-11-10 21:50:42 -07:00
types.go Create server startup wrapper 2018-10-22 10:52:23 -07:00
vendor.conf Update vendor 2018-10-30 11:31:00 -07:00

Norman

An API framework for Building Rancher Style APIs backed by K8s CustomResources.

Building

make

Example

Refer to examples/

package main

import (
	"context"
	"fmt"
	"net/http"
	"os"

	"github.com/rancher/norman/generator"
	"github.com/rancher/norman/server"
	"github.com/rancher/norman/types"
)

type Foo struct {
	types.Resource
	Name     string `json:"name"`
	Foo      string `json:"foo"`
	SubThing Baz    `json:"subThing"`
}

type Baz struct {
	Name string `json:"name"`
}

var (
	version = types.APIVersion{
		Version: "v1",
		Group:   "io.cattle.core.example",
		Path:    "/example/v1",
	}

	Schemas = types.NewSchemas()
)

func main() {
	if _, err := Schemas.Import(&version, Foo{}); err != nil {
		panic(err)
	}

	server, err := server.NewAPIServer(context.Background(), os.Getenv("KUBECONFIG"), Schemas)
	if err != nil {
		panic(err)
	}

	fmt.Println("Listening on 0.0.0.0:1234")
	http.ListenAndServe("0.0.0.0:1234", server)
}

License

Copyright (c) 2014-2017 Rancher Labs, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.