1
0
mirror of https://github.com/rancher/rke.git synced 2025-06-25 15:01:58 +00:00

vendor update

This commit is contained in:
moelsayed 2018-04-04 00:00:29 +02:00
parent 78bff1ebc9
commit 09a856cbb8
72 changed files with 235 additions and 3707 deletions

View File

@ -23,5 +23,5 @@ github.com/coreos/etcd 52f73c5a6cb0d1d196ffd6eced406c9d8502078
github.com/coreos/go-semver e214231b295a8ea9479f11b70b35d5acf3556d9b
github.com/ugorji/go/codec ccfe18359b55b97855cee1d3f74e5efbda4869dc
github.com/rancher/norman 510ed570d2e29a00e6bc1bcd18bdcad6c6860a13
github.com/rancher/types 0efe60ff1a97dbe1a55eed74e685c73ca4cd8c82
github.com/rancher/norman ff60298f31f081b06d198815b4c178a578664f7d
github.com/rancher/types 2e66000b6b101dbad981c350fd8216bd90ad562a

View File

@ -1,25 +0,0 @@
# Compiled Object files, Static and Dynamic libs (Shared Objects)
*.o
*.a
*.so
# Folders
_obj
_test
# Architecture specific extensions/prefixes
*.[568vq]
[568vq].out
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*
_testmain.go
*.exe
.idea/
*.iml

View File

@ -1,19 +0,0 @@
language: go
sudo: false
matrix:
include:
- go: 1.4
- go: 1.5
- go: 1.6
- go: 1.7
- go: 1.8
- go: tip
allow_failures:
- go: tip
script:
- go get -t -v ./...
- diff -u <(echo -n) <(gofmt -d .)
- go vet $(go list ./... | grep -v /vendor/)
- go test -v -race ./...

View File

@ -1,8 +0,0 @@
# This is the official list of Gorilla WebSocket authors for copyright
# purposes.
#
# Please keep the list sorted.
Gary Burd <gary@beagledreams.com>
Joachim Bauch <mail@joachim-bauch.de>

View File

@ -1,22 +0,0 @@
Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,64 +0,0 @@
# Gorilla WebSocket
Gorilla WebSocket is a [Go](http://golang.org/) implementation of the
[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol.
[![Build Status](https://travis-ci.org/gorilla/websocket.svg?branch=master)](https://travis-ci.org/gorilla/websocket)
[![GoDoc](https://godoc.org/github.com/gorilla/websocket?status.svg)](https://godoc.org/github.com/gorilla/websocket)
### Documentation
* [API Reference](http://godoc.org/github.com/gorilla/websocket)
* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat)
* [Command example](https://github.com/gorilla/websocket/tree/master/examples/command)
* [Client and server example](https://github.com/gorilla/websocket/tree/master/examples/echo)
* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch)
### Status
The Gorilla WebSocket package provides a complete and tested implementation of
the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The
package API is stable.
### Installation
go get github.com/gorilla/websocket
### Protocol Compliance
The Gorilla WebSocket package passes the server tests in the [Autobahn Test
Suite](http://autobahn.ws/testsuite) using the application in the [examples/autobahn
subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn).
### Gorilla WebSocket compared with other packages
<table>
<tr>
<th></th>
<th><a href="http://godoc.org/github.com/gorilla/websocket">github.com/gorilla</a></th>
<th><a href="http://godoc.org/golang.org/x/net/websocket">golang.org/x/net</a></th>
</tr>
<tr>
<tr><td colspan="3"><a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a> Features</td></tr>
<tr><td>Passes <a href="http://autobahn.ws/testsuite/">Autobahn Test Suite</a></td><td><a href="https://github.com/gorilla/websocket/tree/master/examples/autobahn">Yes</a></td><td>No</td></tr>
<tr><td>Receive <a href="https://tools.ietf.org/html/rfc6455#section-5.4">fragmented</a> message<td>Yes</td><td><a href="https://code.google.com/p/go/issues/detail?id=7632">No</a>, see note 1</td></tr>
<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.1">close</a> message</td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td><a href="https://code.google.com/p/go/issues/detail?id=4588">No</a></td></tr>
<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.2">pings</a> and receive <a href="https://tools.ietf.org/html/rfc6455#section-5.5.3">pongs</a></td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td>No</td></tr>
<tr><td>Get the <a href="https://tools.ietf.org/html/rfc6455#section-5.6">type</a> of a received data message</td><td>Yes</td><td>Yes, see note 2</td></tr>
<tr><td colspan="3">Other Features</tr></td>
<tr><td><a href="https://tools.ietf.org/html/rfc7692">Compression Extensions</a></td><td>Experimental</td><td>No</td></tr>
<tr><td>Read message using io.Reader</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextReader">Yes</a></td><td>No, see note 3</td></tr>
<tr><td>Write message using io.WriteCloser</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextWriter">Yes</a></td><td>No, see note 3</td></tr>
</table>
Notes:
1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html).
2. The application can get the type of a received data message by implementing
a [Codec marshal](http://godoc.org/golang.org/x/net/websocket#Codec.Marshal)
function.
3. The go.net io.Reader and io.Writer operate across WebSocket frame boundaries.
Read returns when the input buffer is full or a frame boundary is
encountered. Each call to Write sends a single frame message. The Gorilla
io.Reader and io.WriteCloser operate on a single WebSocket message.

View File

@ -1,392 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"bufio"
"bytes"
"crypto/tls"
"encoding/base64"
"errors"
"io"
"io/ioutil"
"net"
"net/http"
"net/url"
"strings"
"time"
)
// ErrBadHandshake is returned when the server response to opening handshake is
// invalid.
var ErrBadHandshake = errors.New("websocket: bad handshake")
var errInvalidCompression = errors.New("websocket: invalid compression negotiation")
// NewClient creates a new client connection using the given net connection.
// The URL u specifies the host and request URI. Use requestHeader to specify
// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies
// (Cookie). Use the response.Header to get the selected subprotocol
// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).
//
// If the WebSocket handshake fails, ErrBadHandshake is returned along with a
// non-nil *http.Response so that callers can handle redirects, authentication,
// etc.
//
// Deprecated: Use Dialer instead.
func NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufSize, writeBufSize int) (c *Conn, response *http.Response, err error) {
d := Dialer{
ReadBufferSize: readBufSize,
WriteBufferSize: writeBufSize,
NetDial: func(net, addr string) (net.Conn, error) {
return netConn, nil
},
}
return d.Dial(u.String(), requestHeader)
}
// A Dialer contains options for connecting to WebSocket server.
type Dialer struct {
// NetDial specifies the dial function for creating TCP connections. If
// NetDial is nil, net.Dial is used.
NetDial func(network, addr string) (net.Conn, error)
// Proxy specifies a function to return a proxy for a given
// Request. If the function returns a non-nil error, the
// request is aborted with the provided error.
// If Proxy is nil or returns a nil *URL, no proxy is used.
Proxy func(*http.Request) (*url.URL, error)
// TLSClientConfig specifies the TLS configuration to use with tls.Client.
// If nil, the default configuration is used.
TLSClientConfig *tls.Config
// HandshakeTimeout specifies the duration for the handshake to complete.
HandshakeTimeout time.Duration
// ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer
// size is zero, then a useful default size is used. The I/O buffer sizes
// do not limit the size of the messages that can be sent or received.
ReadBufferSize, WriteBufferSize int
// Subprotocols specifies the client's requested subprotocols.
Subprotocols []string
// EnableCompression specifies if the client should attempt to negotiate
// per message compression (RFC 7692). Setting this value to true does not
// guarantee that compression will be supported. Currently only "no context
// takeover" modes are supported.
EnableCompression bool
// Jar specifies the cookie jar.
// If Jar is nil, cookies are not sent in requests and ignored
// in responses.
Jar http.CookieJar
}
var errMalformedURL = errors.New("malformed ws or wss URL")
// parseURL parses the URL.
//
// This function is a replacement for the standard library url.Parse function.
// In Go 1.4 and earlier, url.Parse loses information from the path.
func parseURL(s string) (*url.URL, error) {
// From the RFC:
//
// ws-URI = "ws:" "//" host [ ":" port ] path [ "?" query ]
// wss-URI = "wss:" "//" host [ ":" port ] path [ "?" query ]
var u url.URL
switch {
case strings.HasPrefix(s, "ws://"):
u.Scheme = "ws"
s = s[len("ws://"):]
case strings.HasPrefix(s, "wss://"):
u.Scheme = "wss"
s = s[len("wss://"):]
default:
return nil, errMalformedURL
}
if i := strings.Index(s, "?"); i >= 0 {
u.RawQuery = s[i+1:]
s = s[:i]
}
if i := strings.Index(s, "/"); i >= 0 {
u.Opaque = s[i:]
s = s[:i]
} else {
u.Opaque = "/"
}
u.Host = s
if strings.Contains(u.Host, "@") {
// Don't bother parsing user information because user information is
// not allowed in websocket URIs.
return nil, errMalformedURL
}
return &u, nil
}
func hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) {
hostPort = u.Host
hostNoPort = u.Host
if i := strings.LastIndex(u.Host, ":"); i > strings.LastIndex(u.Host, "]") {
hostNoPort = hostNoPort[:i]
} else {
switch u.Scheme {
case "wss":
hostPort += ":443"
case "https":
hostPort += ":443"
default:
hostPort += ":80"
}
}
return hostPort, hostNoPort
}
// DefaultDialer is a dialer with all fields set to the default zero values.
var DefaultDialer = &Dialer{
Proxy: http.ProxyFromEnvironment,
}
// Dial creates a new client connection. Use requestHeader to specify the
// origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie).
// Use the response.Header to get the selected subprotocol
// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).
//
// If the WebSocket handshake fails, ErrBadHandshake is returned along with a
// non-nil *http.Response so that callers can handle redirects, authentication,
// etcetera. The response body may not contain the entire response and does not
// need to be closed by the application.
func (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) {
if d == nil {
d = &Dialer{
Proxy: http.ProxyFromEnvironment,
}
}
challengeKey, err := generateChallengeKey()
if err != nil {
return nil, nil, err
}
u, err := parseURL(urlStr)
if err != nil {
return nil, nil, err
}
switch u.Scheme {
case "ws":
u.Scheme = "http"
case "wss":
u.Scheme = "https"
default:
return nil, nil, errMalformedURL
}
if u.User != nil {
// User name and password are not allowed in websocket URIs.
return nil, nil, errMalformedURL
}
req := &http.Request{
Method: "GET",
URL: u,
Proto: "HTTP/1.1",
ProtoMajor: 1,
ProtoMinor: 1,
Header: make(http.Header),
Host: u.Host,
}
// Set the cookies present in the cookie jar of the dialer
if d.Jar != nil {
for _, cookie := range d.Jar.Cookies(u) {
req.AddCookie(cookie)
}
}
// Set the request headers using the capitalization for names and values in
// RFC examples. Although the capitalization shouldn't matter, there are
// servers that depend on it. The Header.Set method is not used because the
// method canonicalizes the header names.
req.Header["Upgrade"] = []string{"websocket"}
req.Header["Connection"] = []string{"Upgrade"}
req.Header["Sec-WebSocket-Key"] = []string{challengeKey}
req.Header["Sec-WebSocket-Version"] = []string{"13"}
if len(d.Subprotocols) > 0 {
req.Header["Sec-WebSocket-Protocol"] = []string{strings.Join(d.Subprotocols, ", ")}
}
for k, vs := range requestHeader {
switch {
case k == "Host":
if len(vs) > 0 {
req.Host = vs[0]
}
case k == "Upgrade" ||
k == "Connection" ||
k == "Sec-Websocket-Key" ||
k == "Sec-Websocket-Version" ||
k == "Sec-Websocket-Extensions" ||
(k == "Sec-Websocket-Protocol" && len(d.Subprotocols) > 0):
return nil, nil, errors.New("websocket: duplicate header not allowed: " + k)
default:
req.Header[k] = vs
}
}
if d.EnableCompression {
req.Header.Set("Sec-Websocket-Extensions", "permessage-deflate; server_no_context_takeover; client_no_context_takeover")
}
hostPort, hostNoPort := hostPortNoPort(u)
var proxyURL *url.URL
// Check wether the proxy method has been configured
if d.Proxy != nil {
proxyURL, err = d.Proxy(req)
}
if err != nil {
return nil, nil, err
}
var targetHostPort string
if proxyURL != nil {
targetHostPort, _ = hostPortNoPort(proxyURL)
} else {
targetHostPort = hostPort
}
var deadline time.Time
if d.HandshakeTimeout != 0 {
deadline = time.Now().Add(d.HandshakeTimeout)
}
netDial := d.NetDial
if netDial == nil {
netDialer := &net.Dialer{Deadline: deadline}
netDial = netDialer.Dial
}
netConn, err := netDial("tcp", targetHostPort)
if err != nil {
return nil, nil, err
}
defer func() {
if netConn != nil {
netConn.Close()
}
}()
if err := netConn.SetDeadline(deadline); err != nil {
return nil, nil, err
}
if proxyURL != nil {
connectHeader := make(http.Header)
if user := proxyURL.User; user != nil {
proxyUser := user.Username()
if proxyPassword, passwordSet := user.Password(); passwordSet {
credential := base64.StdEncoding.EncodeToString([]byte(proxyUser + ":" + proxyPassword))
connectHeader.Set("Proxy-Authorization", "Basic "+credential)
}
}
connectReq := &http.Request{
Method: "CONNECT",
URL: &url.URL{Opaque: hostPort},
Host: hostPort,
Header: connectHeader,
}
connectReq.Write(netConn)
// Read response.
// Okay to use and discard buffered reader here, because
// TLS server will not speak until spoken to.
br := bufio.NewReader(netConn)
resp, err := http.ReadResponse(br, connectReq)
if err != nil {
return nil, nil, err
}
if resp.StatusCode != 200 {
f := strings.SplitN(resp.Status, " ", 2)
return nil, nil, errors.New(f[1])
}
}
if u.Scheme == "https" {
cfg := cloneTLSConfig(d.TLSClientConfig)
if cfg.ServerName == "" {
cfg.ServerName = hostNoPort
}
tlsConn := tls.Client(netConn, cfg)
netConn = tlsConn
if err := tlsConn.Handshake(); err != nil {
return nil, nil, err
}
if !cfg.InsecureSkipVerify {
if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {
return nil, nil, err
}
}
}
conn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize)
if err := req.Write(netConn); err != nil {
return nil, nil, err
}
resp, err := http.ReadResponse(conn.br, req)
if err != nil {
return nil, nil, err
}
if d.Jar != nil {
if rc := resp.Cookies(); len(rc) > 0 {
d.Jar.SetCookies(u, rc)
}
}
if resp.StatusCode != 101 ||
!strings.EqualFold(resp.Header.Get("Upgrade"), "websocket") ||
!strings.EqualFold(resp.Header.Get("Connection"), "upgrade") ||
resp.Header.Get("Sec-Websocket-Accept") != computeAcceptKey(challengeKey) {
// Before closing the network connection on return from this
// function, slurp up some of the response to aid application
// debugging.
buf := make([]byte, 1024)
n, _ := io.ReadFull(resp.Body, buf)
resp.Body = ioutil.NopCloser(bytes.NewReader(buf[:n]))
return nil, resp, ErrBadHandshake
}
for _, ext := range parseExtensions(resp.Header) {
if ext[""] != "permessage-deflate" {
continue
}
_, snct := ext["server_no_context_takeover"]
_, cnct := ext["client_no_context_takeover"]
if !snct || !cnct {
return nil, resp, errInvalidCompression
}
conn.newCompressionWriter = compressNoContextTakeover
conn.newDecompressionReader = decompressNoContextTakeover
break
}
resp.Body = ioutil.NopCloser(bytes.NewReader([]byte{}))
conn.subprotocol = resp.Header.Get("Sec-Websocket-Protocol")
netConn.SetDeadline(time.Time{})
netConn = nil // to avoid close in defer.
return conn, resp, nil
}

View File

@ -1,16 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build go1.8
package websocket
import "crypto/tls"
func cloneTLSConfig(cfg *tls.Config) *tls.Config {
if cfg == nil {
return &tls.Config{}
}
return cfg.Clone()
}

View File

@ -1,38 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !go1.8
package websocket
import "crypto/tls"
// cloneTLSConfig clones all public fields except the fields
// SessionTicketsDisabled and SessionTicketKey. This avoids copying the
// sync.Mutex in the sync.Once and makes it safe to call cloneTLSConfig on a
// config in active use.
func cloneTLSConfig(cfg *tls.Config) *tls.Config {
if cfg == nil {
return &tls.Config{}
}
return &tls.Config{
Rand: cfg.Rand,
Time: cfg.Time,
Certificates: cfg.Certificates,
NameToCertificate: cfg.NameToCertificate,
GetCertificate: cfg.GetCertificate,
RootCAs: cfg.RootCAs,
NextProtos: cfg.NextProtos,
ServerName: cfg.ServerName,
ClientAuth: cfg.ClientAuth,
ClientCAs: cfg.ClientCAs,
InsecureSkipVerify: cfg.InsecureSkipVerify,
CipherSuites: cfg.CipherSuites,
PreferServerCipherSuites: cfg.PreferServerCipherSuites,
ClientSessionCache: cfg.ClientSessionCache,
MinVersion: cfg.MinVersion,
MaxVersion: cfg.MaxVersion,
CurvePreferences: cfg.CurvePreferences,
}
}

View File

@ -1,148 +0,0 @@
// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"compress/flate"
"errors"
"io"
"strings"
"sync"
)
const (
minCompressionLevel = -2 // flate.HuffmanOnly not defined in Go < 1.6
maxCompressionLevel = flate.BestCompression
defaultCompressionLevel = 1
)
var (
flateWriterPools [maxCompressionLevel - minCompressionLevel + 1]sync.Pool
flateReaderPool = sync.Pool{New: func() interface{} {
return flate.NewReader(nil)
}}
)
func decompressNoContextTakeover(r io.Reader) io.ReadCloser {
const tail =
// Add four bytes as specified in RFC
"\x00\x00\xff\xff" +
// Add final block to squelch unexpected EOF error from flate reader.
"\x01\x00\x00\xff\xff"
fr, _ := flateReaderPool.Get().(io.ReadCloser)
fr.(flate.Resetter).Reset(io.MultiReader(r, strings.NewReader(tail)), nil)
return &flateReadWrapper{fr}
}
func isValidCompressionLevel(level int) bool {
return minCompressionLevel <= level && level <= maxCompressionLevel
}
func compressNoContextTakeover(w io.WriteCloser, level int) io.WriteCloser {
p := &flateWriterPools[level-minCompressionLevel]
tw := &truncWriter{w: w}
fw, _ := p.Get().(*flate.Writer)
if fw == nil {
fw, _ = flate.NewWriter(tw, level)
} else {
fw.Reset(tw)
}
return &flateWriteWrapper{fw: fw, tw: tw, p: p}
}
// truncWriter is an io.Writer that writes all but the last four bytes of the
// stream to another io.Writer.
type truncWriter struct {
w io.WriteCloser
n int
p [4]byte
}
func (w *truncWriter) Write(p []byte) (int, error) {
n := 0
// fill buffer first for simplicity.
if w.n < len(w.p) {
n = copy(w.p[w.n:], p)
p = p[n:]
w.n += n
if len(p) == 0 {
return n, nil
}
}
m := len(p)
if m > len(w.p) {
m = len(w.p)
}
if nn, err := w.w.Write(w.p[:m]); err != nil {
return n + nn, err
}
copy(w.p[:], w.p[m:])
copy(w.p[len(w.p)-m:], p[len(p)-m:])
nn, err := w.w.Write(p[:len(p)-m])
return n + nn, err
}
type flateWriteWrapper struct {
fw *flate.Writer
tw *truncWriter
p *sync.Pool
}
func (w *flateWriteWrapper) Write(p []byte) (int, error) {
if w.fw == nil {
return 0, errWriteClosed
}
return w.fw.Write(p)
}
func (w *flateWriteWrapper) Close() error {
if w.fw == nil {
return errWriteClosed
}
err1 := w.fw.Flush()
w.p.Put(w.fw)
w.fw = nil
if w.tw.p != [4]byte{0, 0, 0xff, 0xff} {
return errors.New("websocket: internal error, unexpected bytes at end of flate stream")
}
err2 := w.tw.w.Close()
if err1 != nil {
return err1
}
return err2
}
type flateReadWrapper struct {
fr io.ReadCloser
}
func (r *flateReadWrapper) Read(p []byte) (int, error) {
if r.fr == nil {
return 0, io.ErrClosedPipe
}
n, err := r.fr.Read(p)
if err == io.EOF {
// Preemptively place the reader back in the pool. This helps with
// scenarios where the application does not call NextReader() soon after
// this final read.
r.Close()
}
return n, err
}
func (r *flateReadWrapper) Close() error {
if r.fr == nil {
return io.ErrClosedPipe
}
err := r.fr.Close()
flateReaderPool.Put(r.fr)
r.fr = nil
return err
}

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build go1.5
package websocket
import "io"
func (c *Conn) read(n int) ([]byte, error) {
p, err := c.br.Peek(n)
if err == io.EOF {
err = errUnexpectedEOF
}
c.br.Discard(len(p))
return p, err
}

View File

@ -1,21 +0,0 @@
// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !go1.5
package websocket
import "io"
func (c *Conn) read(n int) ([]byte, error) {
p, err := c.br.Peek(n)
if err == io.EOF {
err = errUnexpectedEOF
}
if len(p) > 0 {
// advance over the bytes just read
io.ReadFull(c.br, p)
}
return p, err
}

View File

@ -1,180 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package websocket implements the WebSocket protocol defined in RFC 6455.
//
// Overview
//
// The Conn type represents a WebSocket connection. A server application uses
// the Upgrade function from an Upgrader object with a HTTP request handler
// to get a pointer to a Conn:
//
// var upgrader = websocket.Upgrader{
// ReadBufferSize: 1024,
// WriteBufferSize: 1024,
// }
//
// func handler(w http.ResponseWriter, r *http.Request) {
// conn, err := upgrader.Upgrade(w, r, nil)
// if err != nil {
// log.Println(err)
// return
// }
// ... Use conn to send and receive messages.
// }
//
// Call the connection's WriteMessage and ReadMessage methods to send and
// receive messages as a slice of bytes. This snippet of code shows how to echo
// messages using these methods:
//
// for {
// messageType, p, err := conn.ReadMessage()
// if err != nil {
// return
// }
// if err = conn.WriteMessage(messageType, p); err != nil {
// return err
// }
// }
//
// In above snippet of code, p is a []byte and messageType is an int with value
// websocket.BinaryMessage or websocket.TextMessage.
//
// An application can also send and receive messages using the io.WriteCloser
// and io.Reader interfaces. To send a message, call the connection NextWriter
// method to get an io.WriteCloser, write the message to the writer and close
// the writer when done. To receive a message, call the connection NextReader
// method to get an io.Reader and read until io.EOF is returned. This snippet
// shows how to echo messages using the NextWriter and NextReader methods:
//
// for {
// messageType, r, err := conn.NextReader()
// if err != nil {
// return
// }
// w, err := conn.NextWriter(messageType)
// if err != nil {
// return err
// }
// if _, err := io.Copy(w, r); err != nil {
// return err
// }
// if err := w.Close(); err != nil {
// return err
// }
// }
//
// Data Messages
//
// The WebSocket protocol distinguishes between text and binary data messages.
// Text messages are interpreted as UTF-8 encoded text. The interpretation of
// binary messages is left to the application.
//
// This package uses the TextMessage and BinaryMessage integer constants to
// identify the two data message types. The ReadMessage and NextReader methods
// return the type of the received message. The messageType argument to the
// WriteMessage and NextWriter methods specifies the type of a sent message.
//
// It is the application's responsibility to ensure that text messages are
// valid UTF-8 encoded text.
//
// Control Messages
//
// The WebSocket protocol defines three types of control messages: close, ping
// and pong. Call the connection WriteControl, WriteMessage or NextWriter
// methods to send a control message to the peer.
//
// Connections handle received close messages by sending a close message to the
// peer and returning a *CloseError from the the NextReader, ReadMessage or the
// message Read method.
//
// Connections handle received ping and pong messages by invoking callback
// functions set with SetPingHandler and SetPongHandler methods. The callback
// functions are called from the NextReader, ReadMessage and the message Read
// methods.
//
// The default ping handler sends a pong to the peer. The application's reading
// goroutine can block for a short time while the handler writes the pong data
// to the connection.
//
// The application must read the connection to process ping, pong and close
// messages sent from the peer. If the application is not otherwise interested
// in messages from the peer, then the application should start a goroutine to
// read and discard messages from the peer. A simple example is:
//
// func readLoop(c *websocket.Conn) {
// for {
// if _, _, err := c.NextReader(); err != nil {
// c.Close()
// break
// }
// }
// }
//
// Concurrency
//
// Connections support one concurrent reader and one concurrent writer.
//
// Applications are responsible for ensuring that no more than one goroutine
// calls the write methods (NextWriter, SetWriteDeadline, WriteMessage,
// WriteJSON, EnableWriteCompression, SetCompressionLevel) concurrently and
// that no more than one goroutine calls the read methods (NextReader,
// SetReadDeadline, ReadMessage, ReadJSON, SetPongHandler, SetPingHandler)
// concurrently.
//
// The Close and WriteControl methods can be called concurrently with all other
// methods.
//
// Origin Considerations
//
// Web browsers allow Javascript applications to open a WebSocket connection to
// any host. It's up to the server to enforce an origin policy using the Origin
// request header sent by the browser.
//
// The Upgrader calls the function specified in the CheckOrigin field to check
// the origin. If the CheckOrigin function returns false, then the Upgrade
// method fails the WebSocket handshake with HTTP status 403.
//
// If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail
// the handshake if the Origin request header is present and not equal to the
// Host request header.
//
// An application can allow connections from any origin by specifying a
// function that always returns true:
//
// var upgrader = websocket.Upgrader{
// CheckOrigin: func(r *http.Request) bool { return true },
// }
//
// The deprecated Upgrade function does not enforce an origin policy. It's the
// application's responsibility to check the Origin header before calling
// Upgrade.
//
// Compression EXPERIMENTAL
//
// Per message compression extensions (RFC 7692) are experimentally supported
// by this package in a limited capacity. Setting the EnableCompression option
// to true in Dialer or Upgrader will attempt to negotiate per message deflate
// support.
//
// var upgrader = websocket.Upgrader{
// EnableCompression: true,
// }
//
// If compression was successfully negotiated with the connection's peer, any
// message received in compressed form will be automatically decompressed.
// All Read methods will return uncompressed bytes.
//
// Per message compression of messages written to a connection can be enabled
// or disabled by calling the corresponding Conn method:
//
// conn.EnableWriteCompression(false)
//
// Currently this package does not support compression with "context takeover".
// This means that messages must be compressed and decompressed in isolation,
// without retaining sliding window or dictionary state across messages. For
// more details refer to RFC 7692.
//
// Use of compression is experimental and may result in decreased performance.
package websocket

View File

@ -1,55 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"encoding/json"
"io"
)
// WriteJSON is deprecated, use c.WriteJSON instead.
func WriteJSON(c *Conn, v interface{}) error {
return c.WriteJSON(v)
}
// WriteJSON writes the JSON encoding of v to the connection.
//
// See the documentation for encoding/json Marshal for details about the
// conversion of Go values to JSON.
func (c *Conn) WriteJSON(v interface{}) error {
w, err := c.NextWriter(TextMessage)
if err != nil {
return err
}
err1 := json.NewEncoder(w).Encode(v)
err2 := w.Close()
if err1 != nil {
return err1
}
return err2
}
// ReadJSON is deprecated, use c.ReadJSON instead.
func ReadJSON(c *Conn, v interface{}) error {
return c.ReadJSON(v)
}
// ReadJSON reads the next JSON-encoded message from the connection and stores
// it in the value pointed to by v.
//
// See the documentation for the encoding/json Unmarshal function for details
// about the conversion of JSON to a Go value.
func (c *Conn) ReadJSON(v interface{}) error {
_, r, err := c.NextReader()
if err != nil {
return err
}
err = json.NewDecoder(r).Decode(v)
if err == io.EOF {
// One value is expected in the message.
err = io.ErrUnexpectedEOF
}
return err
}

View File

@ -1,55 +0,0 @@
// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. Use of
// this source code is governed by a BSD-style license that can be found in the
// LICENSE file.
// +build !appengine
package websocket
import "unsafe"
const wordSize = int(unsafe.Sizeof(uintptr(0)))
func maskBytes(key [4]byte, pos int, b []byte) int {
// Mask one byte at a time for small buffers.
if len(b) < 2*wordSize {
for i := range b {
b[i] ^= key[pos&3]
pos++
}
return pos & 3
}
// Mask one byte at a time to word boundary.
if n := int(uintptr(unsafe.Pointer(&b[0]))) % wordSize; n != 0 {
n = wordSize - n
for i := range b[:n] {
b[i] ^= key[pos&3]
pos++
}
b = b[n:]
}
// Create aligned word size key.
var k [wordSize]byte
for i := range k {
k[i] = key[(pos+i)&3]
}
kw := *(*uintptr)(unsafe.Pointer(&k))
// Mask one word at a time.
n := (len(b) / wordSize) * wordSize
for i := 0; i < n; i += wordSize {
*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(i))) ^= kw
}
// Mask one byte at a time for remaining bytes.
b = b[n:]
for i := range b {
b[i] ^= key[pos&3]
pos++
}
return pos & 3
}

View File

@ -1,15 +0,0 @@
// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved. Use of
// this source code is governed by a BSD-style license that can be found in the
// LICENSE file.
// +build appengine
package websocket
func maskBytes(key [4]byte, pos int, b []byte) int {
for i := range b {
b[i] ^= key[pos&3]
pos++
}
return pos & 3
}

View File

@ -1,103 +0,0 @@
// Copyright 2017 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"bytes"
"net"
"sync"
"time"
)
// PreparedMessage caches on the wire representations of a message payload.
// Use PreparedMessage to efficiently send a message payload to multiple
// connections. PreparedMessage is especially useful when compression is used
// because the CPU and memory expensive compression operation can be executed
// once for a given set of compression options.
type PreparedMessage struct {
messageType int
data []byte
err error
mu sync.Mutex
frames map[prepareKey]*preparedFrame
}
// prepareKey defines a unique set of options to cache prepared frames in PreparedMessage.
type prepareKey struct {
isServer bool
compress bool
compressionLevel int
}
// preparedFrame contains data in wire representation.
type preparedFrame struct {
once sync.Once
data []byte
}
// NewPreparedMessage returns an initialized PreparedMessage. You can then send
// it to connection using WritePreparedMessage method. Valid wire
// representation will be calculated lazily only once for a set of current
// connection options.
func NewPreparedMessage(messageType int, data []byte) (*PreparedMessage, error) {
pm := &PreparedMessage{
messageType: messageType,
frames: make(map[prepareKey]*preparedFrame),
data: data,
}
// Prepare a plain server frame.
_, frameData, err := pm.frame(prepareKey{isServer: true, compress: false})
if err != nil {
return nil, err
}
// To protect against caller modifying the data argument, remember the data
// copied to the plain server frame.
pm.data = frameData[len(frameData)-len(data):]
return pm, nil
}
func (pm *PreparedMessage) frame(key prepareKey) (int, []byte, error) {
pm.mu.Lock()
frame, ok := pm.frames[key]
if !ok {
frame = &preparedFrame{}
pm.frames[key] = frame
}
pm.mu.Unlock()
var err error
frame.once.Do(func() {
// Prepare a frame using a 'fake' connection.
// TODO: Refactor code in conn.go to allow more direct construction of
// the frame.
mu := make(chan bool, 1)
mu <- true
var nc prepareConn
c := &Conn{
conn: &nc,
mu: mu,
isServer: key.isServer,
compressionLevel: key.compressionLevel,
enableWriteCompression: true,
writeBuf: make([]byte, defaultWriteBufferSize+maxFrameHeaderSize),
}
if key.compress {
c.newCompressionWriter = compressNoContextTakeover
}
err = c.WriteMessage(pm.messageType, pm.data)
frame.data = nc.buf.Bytes()
})
return pm.messageType, frame.data, err
}
type prepareConn struct {
buf bytes.Buffer
net.Conn
}
func (pc *prepareConn) Write(p []byte) (int, error) { return pc.buf.Write(p) }
func (pc *prepareConn) SetWriteDeadline(t time.Time) error { return nil }

View File

@ -1,291 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"bufio"
"errors"
"net"
"net/http"
"net/url"
"strings"
"time"
)
// HandshakeError describes an error with the handshake from the peer.
type HandshakeError struct {
message string
}
func (e HandshakeError) Error() string { return e.message }
// Upgrader specifies parameters for upgrading an HTTP connection to a
// WebSocket connection.
type Upgrader struct {
// HandshakeTimeout specifies the duration for the handshake to complete.
HandshakeTimeout time.Duration
// ReadBufferSize and WriteBufferSize specify I/O buffer sizes. If a buffer
// size is zero, then buffers allocated by the HTTP server are used. The
// I/O buffer sizes do not limit the size of the messages that can be sent
// or received.
ReadBufferSize, WriteBufferSize int
// Subprotocols specifies the server's supported protocols in order of
// preference. If this field is set, then the Upgrade method negotiates a
// subprotocol by selecting the first match in this list with a protocol
// requested by the client.
Subprotocols []string
// Error specifies the function for generating HTTP error responses. If Error
// is nil, then http.Error is used to generate the HTTP response.
Error func(w http.ResponseWriter, r *http.Request, status int, reason error)
// CheckOrigin returns true if the request Origin header is acceptable. If
// CheckOrigin is nil, the host in the Origin header must not be set or
// must match the host of the request.
CheckOrigin func(r *http.Request) bool
// EnableCompression specify if the server should attempt to negotiate per
// message compression (RFC 7692). Setting this value to true does not
// guarantee that compression will be supported. Currently only "no context
// takeover" modes are supported.
EnableCompression bool
}
func (u *Upgrader) returnError(w http.ResponseWriter, r *http.Request, status int, reason string) (*Conn, error) {
err := HandshakeError{reason}
if u.Error != nil {
u.Error(w, r, status, err)
} else {
w.Header().Set("Sec-Websocket-Version", "13")
http.Error(w, http.StatusText(status), status)
}
return nil, err
}
// checkSameOrigin returns true if the origin is not set or is equal to the request host.
func checkSameOrigin(r *http.Request) bool {
origin := r.Header["Origin"]
if len(origin) == 0 {
return true
}
u, err := url.Parse(origin[0])
if err != nil {
return false
}
return u.Host == r.Host
}
func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string {
if u.Subprotocols != nil {
clientProtocols := Subprotocols(r)
for _, serverProtocol := range u.Subprotocols {
for _, clientProtocol := range clientProtocols {
if clientProtocol == serverProtocol {
return clientProtocol
}
}
}
} else if responseHeader != nil {
return responseHeader.Get("Sec-Websocket-Protocol")
}
return ""
}
// Upgrade upgrades the HTTP server connection to the WebSocket protocol.
//
// The responseHeader is included in the response to the client's upgrade
// request. Use the responseHeader to specify cookies (Set-Cookie) and the
// application negotiated subprotocol (Sec-Websocket-Protocol).
//
// If the upgrade fails, then Upgrade replies to the client with an HTTP error
// response.
func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) {
if r.Method != "GET" {
return u.returnError(w, r, http.StatusMethodNotAllowed, "websocket: not a websocket handshake: request method is not GET")
}
if _, ok := responseHeader["Sec-Websocket-Extensions"]; ok {
return u.returnError(w, r, http.StatusInternalServerError, "websocket: application specific 'Sec-Websocket-Extensions' headers are unsupported")
}
if !tokenListContainsValue(r.Header, "Connection", "upgrade") {
return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: 'upgrade' token not found in 'Connection' header")
}
if !tokenListContainsValue(r.Header, "Upgrade", "websocket") {
return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: 'websocket' token not found in 'Upgrade' header")
}
if !tokenListContainsValue(r.Header, "Sec-Websocket-Version", "13") {
return u.returnError(w, r, http.StatusBadRequest, "websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header")
}
checkOrigin := u.CheckOrigin
if checkOrigin == nil {
checkOrigin = checkSameOrigin
}
if !checkOrigin(r) {
return u.returnError(w, r, http.StatusForbidden, "websocket: 'Origin' header value not allowed")
}
challengeKey := r.Header.Get("Sec-Websocket-Key")
if challengeKey == "" {
return u.returnError(w, r, http.StatusBadRequest, "websocket: not a websocket handshake: `Sec-Websocket-Key' header is missing or blank")
}
subprotocol := u.selectSubprotocol(r, responseHeader)
// Negotiate PMCE
var compress bool
if u.EnableCompression {
for _, ext := range parseExtensions(r.Header) {
if ext[""] != "permessage-deflate" {
continue
}
compress = true
break
}
}
var (
netConn net.Conn
err error
)
h, ok := w.(http.Hijacker)
if !ok {
return u.returnError(w, r, http.StatusInternalServerError, "websocket: response does not implement http.Hijacker")
}
var brw *bufio.ReadWriter
netConn, brw, err = h.Hijack()
if err != nil {
return u.returnError(w, r, http.StatusInternalServerError, err.Error())
}
if brw.Reader.Buffered() > 0 {
netConn.Close()
return nil, errors.New("websocket: client sent data before handshake is complete")
}
c := newConnBRW(netConn, true, u.ReadBufferSize, u.WriteBufferSize, brw)
c.subprotocol = subprotocol
if compress {
c.newCompressionWriter = compressNoContextTakeover
c.newDecompressionReader = decompressNoContextTakeover
}
p := c.writeBuf[:0]
p = append(p, "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: "...)
p = append(p, computeAcceptKey(challengeKey)...)
p = append(p, "\r\n"...)
if c.subprotocol != "" {
p = append(p, "Sec-Websocket-Protocol: "...)
p = append(p, c.subprotocol...)
p = append(p, "\r\n"...)
}
if compress {
p = append(p, "Sec-Websocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\r\n"...)
}
for k, vs := range responseHeader {
if k == "Sec-Websocket-Protocol" {
continue
}
for _, v := range vs {
p = append(p, k...)
p = append(p, ": "...)
for i := 0; i < len(v); i++ {
b := v[i]
if b <= 31 {
// prevent response splitting.
b = ' '
}
p = append(p, b)
}
p = append(p, "\r\n"...)
}
}
p = append(p, "\r\n"...)
// Clear deadlines set by HTTP server.
netConn.SetDeadline(time.Time{})
if u.HandshakeTimeout > 0 {
netConn.SetWriteDeadline(time.Now().Add(u.HandshakeTimeout))
}
if _, err = netConn.Write(p); err != nil {
netConn.Close()
return nil, err
}
if u.HandshakeTimeout > 0 {
netConn.SetWriteDeadline(time.Time{})
}
return c, nil
}
// Upgrade upgrades the HTTP server connection to the WebSocket protocol.
//
// This function is deprecated, use websocket.Upgrader instead.
//
// The application is responsible for checking the request origin before
// calling Upgrade. An example implementation of the same origin policy is:
//
// if req.Header.Get("Origin") != "http://"+req.Host {
// http.Error(w, "Origin not allowed", 403)
// return
// }
//
// If the endpoint supports subprotocols, then the application is responsible
// for negotiating the protocol used on the connection. Use the Subprotocols()
// function to get the subprotocols requested by the client. Use the
// Sec-Websocket-Protocol response header to specify the subprotocol selected
// by the application.
//
// The responseHeader is included in the response to the client's upgrade
// request. Use the responseHeader to specify cookies (Set-Cookie) and the
// negotiated subprotocol (Sec-Websocket-Protocol).
//
// The connection buffers IO to the underlying network connection. The
// readBufSize and writeBufSize parameters specify the size of the buffers to
// use. Messages can be larger than the buffers.
//
// If the request is not a valid WebSocket handshake, then Upgrade returns an
// error of type HandshakeError. Applications should handle this error by
// replying to the client with an HTTP error response.
func Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header, readBufSize, writeBufSize int) (*Conn, error) {
u := Upgrader{ReadBufferSize: readBufSize, WriteBufferSize: writeBufSize}
u.Error = func(w http.ResponseWriter, r *http.Request, status int, reason error) {
// don't return errors to maintain backwards compatibility
}
u.CheckOrigin = func(r *http.Request) bool {
// allow all connections by default
return true
}
return u.Upgrade(w, r, responseHeader)
}
// Subprotocols returns the subprotocols requested by the client in the
// Sec-Websocket-Protocol header.
func Subprotocols(r *http.Request) []string {
h := strings.TrimSpace(r.Header.Get("Sec-Websocket-Protocol"))
if h == "" {
return nil
}
protocols := strings.Split(h, ",")
for i := range protocols {
protocols[i] = strings.TrimSpace(protocols[i])
}
return protocols
}
// IsWebSocketUpgrade returns true if the client requested upgrade to the
// WebSocket protocol.
func IsWebSocketUpgrade(r *http.Request) bool {
return tokenListContainsValue(r.Header, "Connection", "upgrade") &&
tokenListContainsValue(r.Header, "Upgrade", "websocket")
}

View File

@ -1,214 +0,0 @@
// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package websocket
import (
"crypto/rand"
"crypto/sha1"
"encoding/base64"
"io"
"net/http"
"strings"
)
var keyGUID = []byte("258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
func computeAcceptKey(challengeKey string) string {
h := sha1.New()
h.Write([]byte(challengeKey))
h.Write(keyGUID)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
func generateChallengeKey() (string, error) {
p := make([]byte, 16)
if _, err := io.ReadFull(rand.Reader, p); err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(p), nil
}
// Octet types from RFC 2616.
var octetTypes [256]byte
const (
isTokenOctet = 1 << iota
isSpaceOctet
)
func init() {
// From RFC 2616
//
// OCTET = <any 8-bit sequence of data>
// CHAR = <any US-ASCII character (octets 0 - 127)>
// CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>
// CR = <US-ASCII CR, carriage return (13)>
// LF = <US-ASCII LF, linefeed (10)>
// SP = <US-ASCII SP, space (32)>
// HT = <US-ASCII HT, horizontal-tab (9)>
// <"> = <US-ASCII double-quote mark (34)>
// CRLF = CR LF
// LWS = [CRLF] 1*( SP | HT )
// TEXT = <any OCTET except CTLs, but including LWS>
// separators = "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <">
// | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT
// token = 1*<any CHAR except CTLs or separators>
// qdtext = <any TEXT except <">>
for c := 0; c < 256; c++ {
var t byte
isCtl := c <= 31 || c == 127
isChar := 0 <= c && c <= 127
isSeparator := strings.IndexRune(" \t\"(),/:;<=>?@[]\\{}", rune(c)) >= 0
if strings.IndexRune(" \t\r\n", rune(c)) >= 0 {
t |= isSpaceOctet
}
if isChar && !isCtl && !isSeparator {
t |= isTokenOctet
}
octetTypes[c] = t
}
}
func skipSpace(s string) (rest string) {
i := 0
for ; i < len(s); i++ {
if octetTypes[s[i]]&isSpaceOctet == 0 {
break
}
}
return s[i:]
}
func nextToken(s string) (token, rest string) {
i := 0
for ; i < len(s); i++ {
if octetTypes[s[i]]&isTokenOctet == 0 {
break
}
}
return s[:i], s[i:]
}
func nextTokenOrQuoted(s string) (value string, rest string) {
if !strings.HasPrefix(s, "\"") {
return nextToken(s)
}
s = s[1:]
for i := 0; i < len(s); i++ {
switch s[i] {
case '"':
return s[:i], s[i+1:]
case '\\':
p := make([]byte, len(s)-1)
j := copy(p, s[:i])
escape := true
for i = i + 1; i < len(s); i++ {
b := s[i]
switch {
case escape:
escape = false
p[j] = b
j += 1
case b == '\\':
escape = true
case b == '"':
return string(p[:j]), s[i+1:]
default:
p[j] = b
j += 1
}
}
return "", ""
}
}
return "", ""
}
// tokenListContainsValue returns true if the 1#token header with the given
// name contains token.
func tokenListContainsValue(header http.Header, name string, value string) bool {
headers:
for _, s := range header[name] {
for {
var t string
t, s = nextToken(skipSpace(s))
if t == "" {
continue headers
}
s = skipSpace(s)
if s != "" && s[0] != ',' {
continue headers
}
if strings.EqualFold(t, value) {
return true
}
if s == "" {
continue headers
}
s = s[1:]
}
}
return false
}
// parseExtensiosn parses WebSocket extensions from a header.
func parseExtensions(header http.Header) []map[string]string {
// From RFC 6455:
//
// Sec-WebSocket-Extensions = extension-list
// extension-list = 1#extension
// extension = extension-token *( ";" extension-param )
// extension-token = registered-token
// registered-token = token
// extension-param = token [ "=" (token | quoted-string) ]
// ;When using the quoted-string syntax variant, the value
// ;after quoted-string unescaping MUST conform to the
// ;'token' ABNF.
var result []map[string]string
headers:
for _, s := range header["Sec-Websocket-Extensions"] {
for {
var t string
t, s = nextToken(skipSpace(s))
if t == "" {
continue headers
}
ext := map[string]string{"": t}
for {
s = skipSpace(s)
if !strings.HasPrefix(s, ";") {
break
}
var k string
k, s = nextToken(skipSpace(s[1:]))
if k == "" {
continue headers
}
s = skipSpace(s)
var v string
if strings.HasPrefix(s, "=") {
v, s = nextTokenOrQuoted(skipSpace(s[1:]))
s = skipSpace(s)
}
if s != "" && s[0] != ',' && s[0] != ';' {
continue headers
}
ext[k] = v
}
if s != "" && s[0] != ',' {
continue headers
}
result = append(result, ext)
if s == "" {
continue headers
}
s = s[1:]
}
}
return result
}

View File

@ -1,19 +0,0 @@
package clientbase
import (
"net/http"
"github.com/rancher/norman/types"
)
type APIBaseClient struct {
Ops *APIOperations
Opts *ClientOpts
Types map[string]types.Schema
}
type APIOperations struct {
Opts *ClientOpts
Types map[string]types.Schema
Client *http.Client
}

View File

@ -1,329 +0,0 @@
package clientbase
import (
"bytes"
"crypto/tls"
"crypto/x509"
"encoding/base64"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
"time"
"github.com/gorilla/websocket"
"github.com/pkg/errors"
"github.com/rancher/norman/types"
)
const (
SELF = "self"
COLLECTION = "collection"
)
var (
debug = false
dialer = &websocket.Dialer{}
)
type ClientOpts struct {
URL string
AccessKey string
SecretKey string
TokenKey string
Timeout time.Duration
HTTPClient *http.Client
CACerts string
Insecure bool
}
func (c *ClientOpts) getAuthHeader() string {
if c.TokenKey != "" {
return "Bearer " + c.TokenKey
}
if c.AccessKey != "" && c.SecretKey != "" {
s := c.AccessKey + ":" + c.SecretKey
return "Basic " + base64.StdEncoding.EncodeToString([]byte(s))
}
return ""
}
type APIError struct {
StatusCode int
URL string
Msg string
Status string
Body string
}
func (e *APIError) Error() string {
return e.Msg
}
func IsNotFound(err error) bool {
apiError, ok := err.(*APIError)
if !ok {
return false
}
return apiError.StatusCode == http.StatusNotFound
}
func newAPIError(resp *http.Response, url string) *APIError {
contents, err := ioutil.ReadAll(resp.Body)
var body string
if err != nil {
body = "Unreadable body."
} else {
body = string(contents)
}
data := map[string]interface{}{}
if json.Unmarshal(contents, &data) == nil {
delete(data, "id")
delete(data, "links")
delete(data, "actions")
delete(data, "type")
delete(data, "status")
buf := &bytes.Buffer{}
for k, v := range data {
if v == nil {
continue
}
if buf.Len() > 0 {
buf.WriteString(", ")
}
fmt.Fprintf(buf, "%s=%v", k, v)
}
body = buf.String()
}
formattedMsg := fmt.Sprintf("Bad response statusCode [%d]. Status [%s]. Body: [%s] from [%s]",
resp.StatusCode, resp.Status, body, url)
return &APIError{
URL: url,
Msg: formattedMsg,
StatusCode: resp.StatusCode,
Status: resp.Status,
Body: body,
}
}
func contains(array []string, item string) bool {
for _, check := range array {
if check == item {
return true
}
}
return false
}
func appendFilters(urlString string, filters map[string]interface{}) (string, error) {
if len(filters) == 0 {
return urlString, nil
}
u, err := url.Parse(urlString)
if err != nil {
return "", err
}
q := u.Query()
for k, v := range filters {
if l, ok := v.([]string); ok {
for _, v := range l {
q.Add(k, v)
}
} else {
q.Add(k, fmt.Sprintf("%v", v))
}
}
u.RawQuery = q.Encode()
return u.String(), nil
}
func NewAPIClient(opts *ClientOpts) (APIBaseClient, error) {
var err error
result := APIBaseClient{
Types: map[string]types.Schema{},
}
client := opts.HTTPClient
if client == nil {
client = &http.Client{}
}
if opts.Timeout == 0 {
opts.Timeout = time.Second * 10
}
client.Timeout = opts.Timeout
if opts.CACerts != "" {
roots := x509.NewCertPool()
ok := roots.AppendCertsFromPEM([]byte(opts.CACerts))
if !ok {
return result, err
}
tr := &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: roots,
},
}
client.Transport = tr
}
if opts.Insecure {
tr := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: opts.Insecure,
},
}
client.Transport = tr
}
req, err := http.NewRequest("GET", opts.URL, nil)
if err != nil {
return result, err
}
req.Header.Add("Authorization", opts.getAuthHeader())
resp, err := client.Do(req)
if err != nil {
return result, err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return result, newAPIError(resp, opts.URL)
}
schemasURLs := resp.Header.Get("X-API-Schemas")
if len(schemasURLs) == 0 {
return result, errors.New("Failed to find schema at [" + opts.URL + "]")
}
if schemasURLs != opts.URL {
req, err = http.NewRequest("GET", schemasURLs, nil)
req.Header.Add("Authorization", opts.getAuthHeader())
if err != nil {
return result, err
}
resp, err = client.Do(req)
if err != nil {
return result, err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return result, newAPIError(resp, opts.URL)
}
}
var schemas types.SchemaCollection
bytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return result, err
}
err = json.Unmarshal(bytes, &schemas)
if err != nil {
return result, err
}
for _, schema := range schemas.Data {
result.Types[schema.ID] = schema
}
result.Opts = opts
result.Ops = &APIOperations{
Opts: opts,
Client: client,
Types: result.Types,
}
return result, nil
}
func NewListOpts() *types.ListOpts {
return &types.ListOpts{
Filters: map[string]interface{}{},
}
}
func (a *APIBaseClient) Websocket(url string, headers map[string][]string) (*websocket.Conn, *http.Response, error) {
httpHeaders := http.Header{}
for k, v := range httpHeaders {
httpHeaders[k] = v
}
if a.Opts != nil {
httpHeaders.Add("Authorization", a.Opts.getAuthHeader())
}
return dialer.Dial(url, http.Header(httpHeaders))
}
func (a *APIBaseClient) List(schemaType string, opts *types.ListOpts, respObject interface{}) error {
return a.Ops.DoList(schemaType, opts, respObject)
}
func (a *APIBaseClient) Post(url string, createObj interface{}, respObject interface{}) error {
return a.Ops.DoModify("POST", url, createObj, respObject)
}
func (a *APIBaseClient) GetLink(resource types.Resource, link string, respObject interface{}) error {
url := resource.Links[link]
if url == "" {
return fmt.Errorf("failed to find link: %s", link)
}
return a.Ops.DoGet(url, &types.ListOpts{}, respObject)
}
func (a *APIBaseClient) Create(schemaType string, createObj interface{}, respObject interface{}) error {
return a.Ops.DoCreate(schemaType, createObj, respObject)
}
func (a *APIBaseClient) Update(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
return a.Ops.DoUpdate(schemaType, existing, updates, respObject)
}
func (a *APIBaseClient) ByID(schemaType string, id string, respObject interface{}) error {
return a.Ops.DoByID(schemaType, id, respObject)
}
func (a *APIBaseClient) Delete(existing *types.Resource) error {
if existing == nil {
return nil
}
return a.Ops.DoResourceDelete(existing.Type, existing)
}
func (a *APIBaseClient) Reload(existing *types.Resource, output interface{}) error {
selfURL, ok := existing.Links[SELF]
if !ok {
return fmt.Errorf("failed to find self URL of [%v]", existing)
}
return a.Ops.DoGet(selfURL, NewListOpts(), output)
}
func (a *APIBaseClient) Action(schemaType string, action string,
existing *types.Resource, inputObject, respObject interface{}) error {
return a.Ops.DoAction(schemaType, action, existing, inputObject, respObject)
}
func init() {
debug = os.Getenv("RANCHER_CLIENT_DEBUG") == "true"
if debug {
fmt.Println("Rancher client debug on")
}
}

View File

@ -1,298 +0,0 @@
package clientbase
import (
"bytes"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"github.com/pkg/errors"
"github.com/rancher/norman/types"
)
func (a *APIOperations) setupRequest(req *http.Request) {
req.Header.Add("Authorization", a.Opts.getAuthHeader())
}
func (a *APIOperations) DoDelete(url string) error {
req, err := http.NewRequest("DELETE", url, nil)
if err != nil {
return err
}
a.setupRequest(req)
resp, err := a.Client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
io.Copy(ioutil.Discard, resp.Body)
if resp.StatusCode >= 300 {
return newAPIError(resp, url)
}
return nil
}
func (a *APIOperations) DoGet(url string, opts *types.ListOpts, respObject interface{}) error {
if opts == nil {
opts = NewListOpts()
}
url, err := appendFilters(url, opts.Filters)
if err != nil {
return err
}
if debug {
fmt.Println("GET " + url)
}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
return err
}
a.setupRequest(req)
resp, err := a.Client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
return newAPIError(resp, url)
}
byteContent, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
if debug {
fmt.Println("Response <= " + string(byteContent))
}
if err := json.Unmarshal(byteContent, respObject); err != nil {
return errors.Wrap(err, fmt.Sprintf("Failed to parse: %s", byteContent))
}
return nil
}
func (a *APIOperations) DoList(schemaType string, opts *types.ListOpts, respObject interface{}) error {
schema, ok := a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
if !contains(schema.CollectionMethods, "GET") {
return errors.New("Resource type [" + schemaType + "] is not listable")
}
return a.DoGet(a.Opts.URL+"/"+schemaType, opts, respObject)
}
func (a *APIOperations) DoNext(nextURL string, respObject interface{}) error {
return a.DoGet(nextURL, nil, respObject)
}
func (a *APIOperations) DoModify(method string, url string, createObj interface{}, respObject interface{}) error {
bodyContent, err := json.Marshal(createObj)
if err != nil {
return err
}
if debug {
fmt.Println(method + " " + url)
fmt.Println("Request => " + string(bodyContent))
}
req, err := http.NewRequest(method, url, bytes.NewBuffer(bodyContent))
if err != nil {
return err
}
a.setupRequest(req)
req.Header.Set("Content-Type", "application/json")
resp, err := a.Client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode >= 300 {
return newAPIError(resp, url)
}
byteContent, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
if len(byteContent) > 0 {
if debug {
fmt.Println("Response <= " + string(byteContent))
}
return json.Unmarshal(byteContent, respObject)
}
return nil
}
func (a *APIOperations) DoCreate(schemaType string, createObj interface{}, respObject interface{}) error {
if createObj == nil {
createObj = map[string]string{}
}
if respObject == nil {
respObject = &map[string]interface{}{}
}
schema, ok := a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
if !contains(schema.CollectionMethods, "POST") {
return errors.New("Resource type [" + schemaType + "] is not creatable")
}
// using collection link to post doesn't help the resources under project or cluster, because they need a projectId or clusterId in the path
// for example, v3/projects/foo/apps, v3/cluster/bar/namespaces
return a.DoModify("POST", a.Opts.URL+"/"+schemaType, createObj, respObject)
}
func (a *APIOperations) DoUpdate(schemaType string, existing *types.Resource, updates interface{}, respObject interface{}) error {
if existing == nil {
return errors.New("Existing object is nil")
}
selfURL, ok := existing.Links[SELF]
if !ok {
return fmt.Errorf("failed to find self URL of [%v]", existing)
}
if updates == nil {
updates = map[string]string{}
}
if respObject == nil {
respObject = &map[string]interface{}{}
}
schema, ok := a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
if !contains(schema.ResourceMethods, "PUT") {
return errors.New("Resource type [" + schemaType + "] is not updatable")
}
return a.DoModify("PUT", selfURL, updates, respObject)
}
func (a *APIOperations) DoByID(schemaType string, id string, respObject interface{}) error {
schema, ok := a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
if !contains(schema.ResourceMethods, "GET") {
return errors.New("Resource type [" + schemaType + "] can not be looked up by ID")
}
collectionURL, ok := schema.Links[COLLECTION]
if !ok {
return errors.New("Failed to find collection URL for [" + schemaType + "]")
}
return a.DoGet(collectionURL+"/"+id, nil, respObject)
}
func (a *APIOperations) DoResourceDelete(schemaType string, existing *types.Resource) error {
schema, ok := a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
if !contains(schema.ResourceMethods, "DELETE") {
return errors.New("Resource type [" + schemaType + "] can not be deleted")
}
selfURL, ok := existing.Links[SELF]
if !ok {
return fmt.Errorf("failed to find self URL of [%v]", existing)
}
return a.DoDelete(selfURL)
}
func (a *APIOperations) DoAction(schemaType string, action string,
existing *types.Resource, inputObject, respObject interface{}) error {
if existing == nil {
return errors.New("Existing object is nil")
}
actionURL, ok := existing.Actions[action]
if !ok {
return fmt.Errorf("action [%v] not available on [%v]", action, existing)
}
_, ok = a.Types[schemaType]
if !ok {
return errors.New("Unknown schema type [" + schemaType + "]")
}
var input io.Reader
if inputObject != nil {
bodyContent, err := json.Marshal(inputObject)
if err != nil {
return err
}
if debug {
fmt.Println("Request => " + string(bodyContent))
}
input = bytes.NewBuffer(bodyContent)
}
req, err := http.NewRequest("POST", actionURL, input)
if err != nil {
return err
}
a.setupRequest(req)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Content-Length", "0")
resp, err := a.Client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
if resp.StatusCode >= 300 {
return newAPIError(resp, actionURL)
}
byteContent, err := ioutil.ReadAll(resp.Body)
if err != nil {
return err
}
if debug {
fmt.Println("Response <= " + string(byteContent))
}
return json.Unmarshal(byteContent, respObject)
}

View File

@ -9,7 +9,7 @@ import (
"github.com/juju/ratelimit"
errors2 "github.com/pkg/errors"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/objectclient"
"github.com/rancher/norman/types"
"github.com/sirupsen/logrus"
"k8s.io/apimachinery/pkg/api/errors"
@ -40,7 +40,7 @@ type GenericController interface {
type Backend interface {
List(opts metav1.ListOptions) (runtime.Object, error)
Watch(opts metav1.ListOptions) (watch.Interface, error)
ObjectFactory() clientbase.ObjectFactory
ObjectFactory() objectclient.ObjectFactory
}
type handlerDef struct {

View File

@ -4,7 +4,7 @@ import (
"fmt"
"reflect"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/objectclient"
"github.com/rancher/norman/types/slice"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -27,10 +27,10 @@ type objectLifecycleAdapter struct {
name string
clusterScoped bool
lifecycle ObjectLifecycle
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
}
func NewObjectLifecycleAdapter(name string, clusterScoped bool, lifecycle ObjectLifecycle, objectClient *clientbase.ObjectClient) func(key string, obj runtime.Object) error {
func NewObjectLifecycleAdapter(name string, clusterScoped bool, lifecycle ObjectLifecycle, objectClient *objectclient.ObjectClient) func(key string, obj runtime.Object) error {
o := objectLifecycleAdapter{
name: name,
clusterScoped: clusterScoped,

View File

@ -1,4 +1,4 @@
package clientbase
package objectclient
import (
"encoding/json"

View File

@ -2,24 +2,20 @@ package types
import (
"fmt"
"net/http"
"reflect"
"strconv"
"strings"
"net/http"
"github.com/rancher/norman/types/convert"
"github.com/rancher/norman/types/definition"
"github.com/rancher/norman/types/slice"
"github.com/sirupsen/logrus"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
var (
namespacedType = reflect.TypeOf(Namespaced{})
resourceType = reflect.TypeOf(Resource{})
typeType = reflect.TypeOf(metav1.TypeMeta{})
metaType = reflect.TypeOf(metav1.ObjectMeta{})
blacklistNames = map[string]bool{
"links": true,
"actions": true,
@ -194,6 +190,16 @@ func jsonName(f reflect.StructField) string {
return strings.SplitN(f.Tag.Get("json"), ",", 2)[0]
}
func k8sType(field reflect.StructField) bool {
return field.Type.Name() == "TypeMeta" &&
strings.HasSuffix(field.Type.PkgPath(), "k8s.io/apimachinery/pkg/apis/meta/v1")
}
func k8sObject(field reflect.StructField) bool {
return field.Type.Name() == "ObjectMeta" &&
strings.HasSuffix(field.Type.PkgPath(), "k8s.io/apimachinery/pkg/apis/meta/v1")
}
func (s *Schemas) readFields(schema *Schema, t reflect.Type) error {
if t == resourceType {
schema.CollectionMethods = []string{"GET", "POST"}
@ -212,16 +218,15 @@ func (s *Schemas) readFields(schema *Schema, t reflect.Type) error {
}
jsonName := jsonName(field)
if jsonName == "-" {
continue
}
if field.Anonymous && jsonName == "" && field.Type == typeType {
if field.Anonymous && jsonName == "" && k8sType(field) {
hasType = true
}
if field.Anonymous && jsonName == "metadata" && field.Type == metaType {
if field.Anonymous && jsonName == "metadata" && k8sObject(field) {
hasMeta = true
}

View File

@ -281,6 +281,8 @@ type Process struct {
Env []string `json:"env,omitempty"`
// Process docker image
Image string `json:"image,omitempty"`
//AuthConfig for image private registry
ImageRegistryAuthConfig string `json:"imageRegistryAuthConfig,omitempty"`
// Process docker image VolumesFrom
VolumesFrom []string `json:"volumesFrom,omitempty"`
// Process docker container bind mounts

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type AuthConfigController interface {
}
type AuthConfigInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*AuthConfig) (*AuthConfig, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*AuthConfig, error)
Get(name string, opts metav1.GetOptions) (*AuthConfig, error)
@ -177,11 +177,11 @@ func (s *authConfigClient) Controller() AuthConfigController {
type authConfigClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller AuthConfigController
}
func (s *authConfigClient) ObjectClient() *clientbase.ObjectClient {
func (s *authConfigClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type CatalogController interface {
}
type CatalogInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Catalog) (*Catalog, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Catalog, error)
Get(name string, opts metav1.GetOptions) (*Catalog, error)
@ -177,11 +177,11 @@ func (s *catalogClient) Controller() CatalogController {
type catalogClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller CatalogController
}
func (s *catalogClient) ObjectClient() *clientbase.ObjectClient {
func (s *catalogClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterAlertController interface {
}
type ClusterAlertInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterAlert) (*ClusterAlert, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterAlert, error)
Get(name string, opts metav1.GetOptions) (*ClusterAlert, error)
@ -178,11 +178,11 @@ func (s *clusterAlertClient) Controller() ClusterAlertController {
type clusterAlertClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterAlertController
}
func (s *clusterAlertClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterAlertClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterComposeConfigController interface {
}
type ClusterComposeConfigInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterComposeConfig) (*ClusterComposeConfig, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterComposeConfig, error)
Get(name string, opts metav1.GetOptions) (*ClusterComposeConfig, error)
@ -178,11 +178,11 @@ func (s *clusterComposeConfigClient) Controller() ClusterComposeConfigController
type clusterComposeConfigClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterComposeConfigController
}
func (s *clusterComposeConfigClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterComposeConfigClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type ClusterController interface {
}
type ClusterInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Cluster) (*Cluster, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Cluster, error)
Get(name string, opts metav1.GetOptions) (*Cluster, error)
@ -177,11 +177,11 @@ func (s *clusterClient) Controller() ClusterController {
type clusterClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterController
}
func (s *clusterClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterEventController interface {
}
type ClusterEventInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterEvent) (*ClusterEvent, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterEvent, error)
Get(name string, opts metav1.GetOptions) (*ClusterEvent, error)
@ -178,11 +178,11 @@ func (s *clusterEventClient) Controller() ClusterEventController {
type clusterEventClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterEventController
}
func (s *clusterEventClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterEventClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterLoggingController interface {
}
type ClusterLoggingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterLogging) (*ClusterLogging, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterLogging, error)
Get(name string, opts metav1.GetOptions) (*ClusterLogging, error)
@ -178,11 +178,11 @@ func (s *clusterLoggingClient) Controller() ClusterLoggingController {
type clusterLoggingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterLoggingController
}
func (s *clusterLoggingClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterLoggingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterPipelineController interface {
}
type ClusterPipelineInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterPipeline) (*ClusterPipeline, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterPipeline, error)
Get(name string, opts metav1.GetOptions) (*ClusterPipeline, error)
@ -178,11 +178,11 @@ func (s *clusterPipelineClient) Controller() ClusterPipelineController {
type clusterPipelineClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterPipelineController
}
func (s *clusterPipelineClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterPipelineClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterRegistrationTokenController interface {
}
type ClusterRegistrationTokenInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterRegistrationToken) (*ClusterRegistrationToken, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterRegistrationToken, error)
Get(name string, opts metav1.GetOptions) (*ClusterRegistrationToken, error)
@ -178,11 +178,11 @@ func (s *clusterRegistrationTokenClient) Controller() ClusterRegistrationTokenCo
type clusterRegistrationTokenClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterRegistrationTokenController
}
func (s *clusterRegistrationTokenClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterRegistrationTokenClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ClusterRoleTemplateBindingController interface {
}
type ClusterRoleTemplateBindingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ClusterRoleTemplateBinding) (*ClusterRoleTemplateBinding, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ClusterRoleTemplateBinding, error)
Get(name string, opts metav1.GetOptions) (*ClusterRoleTemplateBinding, error)
@ -178,11 +178,11 @@ func (s *clusterRoleTemplateBindingClient) Controller() ClusterRoleTemplateBindi
type clusterRoleTemplateBindingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ClusterRoleTemplateBindingController
}
func (s *clusterRoleTemplateBindingClient) ObjectClient() *clientbase.ObjectClient {
func (s *clusterRoleTemplateBindingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type DynamicSchemaController interface {
}
type DynamicSchemaInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*DynamicSchema) (*DynamicSchema, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*DynamicSchema, error)
Get(name string, opts metav1.GetOptions) (*DynamicSchema, error)
@ -177,11 +177,11 @@ func (s *dynamicSchemaClient) Controller() DynamicSchemaController {
type dynamicSchemaClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller DynamicSchemaController
}
func (s *dynamicSchemaClient) ObjectClient() *clientbase.ObjectClient {
func (s *dynamicSchemaClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type GlobalComposeConfigController interface {
}
type GlobalComposeConfigInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*GlobalComposeConfig) (*GlobalComposeConfig, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*GlobalComposeConfig, error)
Get(name string, opts metav1.GetOptions) (*GlobalComposeConfig, error)
@ -177,11 +177,11 @@ func (s *globalComposeConfigClient) Controller() GlobalComposeConfigController {
type globalComposeConfigClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller GlobalComposeConfigController
}
func (s *globalComposeConfigClient) ObjectClient() *clientbase.ObjectClient {
func (s *globalComposeConfigClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type GlobalRoleBindingController interface {
}
type GlobalRoleBindingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*GlobalRoleBinding) (*GlobalRoleBinding, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*GlobalRoleBinding, error)
Get(name string, opts metav1.GetOptions) (*GlobalRoleBinding, error)
@ -177,11 +177,11 @@ func (s *globalRoleBindingClient) Controller() GlobalRoleBindingController {
type globalRoleBindingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller GlobalRoleBindingController
}
func (s *globalRoleBindingClient) ObjectClient() *clientbase.ObjectClient {
func (s *globalRoleBindingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type GlobalRoleController interface {
}
type GlobalRoleInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*GlobalRole) (*GlobalRole, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*GlobalRole, error)
Get(name string, opts metav1.GetOptions) (*GlobalRole, error)
@ -177,11 +177,11 @@ func (s *globalRoleClient) Controller() GlobalRoleController {
type globalRoleClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller GlobalRoleController
}
func (s *globalRoleClient) ObjectClient() *clientbase.ObjectClient {
func (s *globalRoleClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type GroupController interface {
}
type GroupInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Group) (*Group, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Group, error)
Get(name string, opts metav1.GetOptions) (*Group, error)
@ -177,11 +177,11 @@ func (s *groupClient) Controller() GroupController {
type groupClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller GroupController
}
func (s *groupClient) ObjectClient() *clientbase.ObjectClient {
func (s *groupClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type GroupMemberController interface {
}
type GroupMemberInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*GroupMember) (*GroupMember, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*GroupMember, error)
Get(name string, opts metav1.GetOptions) (*GroupMember, error)
@ -177,11 +177,11 @@ func (s *groupMemberClient) Controller() GroupMemberController {
type groupMemberClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller GroupMemberController
}
func (s *groupMemberClient) ObjectClient() *clientbase.ObjectClient {
func (s *groupMemberClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -4,8 +4,8 @@ import (
"context"
"sync"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"github.com/rancher/norman/restwatch"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/rest"
@ -184,7 +184,7 @@ type NodePoolsGetter interface {
}
func (c *Client) NodePools(namespace string) NodePoolInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &NodePoolResource, NodePoolGroupVersionKind, nodePoolFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &NodePoolResource, NodePoolGroupVersionKind, nodePoolFactory{})
return &nodePoolClient{
ns: namespace,
client: c,
@ -197,7 +197,7 @@ type NodesGetter interface {
}
func (c *Client) Nodes(namespace string) NodeInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &NodeResource, NodeGroupVersionKind, nodeFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &NodeResource, NodeGroupVersionKind, nodeFactory{})
return &nodeClient{
ns: namespace,
client: c,
@ -210,7 +210,7 @@ type NodeDriversGetter interface {
}
func (c *Client) NodeDrivers(namespace string) NodeDriverInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &NodeDriverResource, NodeDriverGroupVersionKind, nodeDriverFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &NodeDriverResource, NodeDriverGroupVersionKind, nodeDriverFactory{})
return &nodeDriverClient{
ns: namespace,
client: c,
@ -223,7 +223,7 @@ type NodeTemplatesGetter interface {
}
func (c *Client) NodeTemplates(namespace string) NodeTemplateInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &NodeTemplateResource, NodeTemplateGroupVersionKind, nodeTemplateFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &NodeTemplateResource, NodeTemplateGroupVersionKind, nodeTemplateFactory{})
return &nodeTemplateClient{
ns: namespace,
client: c,
@ -236,7 +236,7 @@ type ProjectsGetter interface {
}
func (c *Client) Projects(namespace string) ProjectInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ProjectResource, ProjectGroupVersionKind, projectFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ProjectResource, ProjectGroupVersionKind, projectFactory{})
return &projectClient{
ns: namespace,
client: c,
@ -249,7 +249,7 @@ type GlobalRolesGetter interface {
}
func (c *Client) GlobalRoles(namespace string) GlobalRoleInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &GlobalRoleResource, GlobalRoleGroupVersionKind, globalRoleFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &GlobalRoleResource, GlobalRoleGroupVersionKind, globalRoleFactory{})
return &globalRoleClient{
ns: namespace,
client: c,
@ -262,7 +262,7 @@ type GlobalRoleBindingsGetter interface {
}
func (c *Client) GlobalRoleBindings(namespace string) GlobalRoleBindingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &GlobalRoleBindingResource, GlobalRoleBindingGroupVersionKind, globalRoleBindingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &GlobalRoleBindingResource, GlobalRoleBindingGroupVersionKind, globalRoleBindingFactory{})
return &globalRoleBindingClient{
ns: namespace,
client: c,
@ -275,7 +275,7 @@ type RoleTemplatesGetter interface {
}
func (c *Client) RoleTemplates(namespace string) RoleTemplateInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &RoleTemplateResource, RoleTemplateGroupVersionKind, roleTemplateFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &RoleTemplateResource, RoleTemplateGroupVersionKind, roleTemplateFactory{})
return &roleTemplateClient{
ns: namespace,
client: c,
@ -288,7 +288,7 @@ type PodSecurityPolicyTemplatesGetter interface {
}
func (c *Client) PodSecurityPolicyTemplates(namespace string) PodSecurityPolicyTemplateInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PodSecurityPolicyTemplateResource, PodSecurityPolicyTemplateGroupVersionKind, podSecurityPolicyTemplateFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PodSecurityPolicyTemplateResource, PodSecurityPolicyTemplateGroupVersionKind, podSecurityPolicyTemplateFactory{})
return &podSecurityPolicyTemplateClient{
ns: namespace,
client: c,
@ -301,7 +301,7 @@ type PodSecurityPolicyTemplateProjectBindingsGetter interface {
}
func (c *Client) PodSecurityPolicyTemplateProjectBindings(namespace string) PodSecurityPolicyTemplateProjectBindingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PodSecurityPolicyTemplateProjectBindingResource, PodSecurityPolicyTemplateProjectBindingGroupVersionKind, podSecurityPolicyTemplateProjectBindingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PodSecurityPolicyTemplateProjectBindingResource, PodSecurityPolicyTemplateProjectBindingGroupVersionKind, podSecurityPolicyTemplateProjectBindingFactory{})
return &podSecurityPolicyTemplateProjectBindingClient{
ns: namespace,
client: c,
@ -314,7 +314,7 @@ type ClusterRoleTemplateBindingsGetter interface {
}
func (c *Client) ClusterRoleTemplateBindings(namespace string) ClusterRoleTemplateBindingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterRoleTemplateBindingResource, ClusterRoleTemplateBindingGroupVersionKind, clusterRoleTemplateBindingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterRoleTemplateBindingResource, ClusterRoleTemplateBindingGroupVersionKind, clusterRoleTemplateBindingFactory{})
return &clusterRoleTemplateBindingClient{
ns: namespace,
client: c,
@ -327,7 +327,7 @@ type ProjectRoleTemplateBindingsGetter interface {
}
func (c *Client) ProjectRoleTemplateBindings(namespace string) ProjectRoleTemplateBindingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ProjectRoleTemplateBindingResource, ProjectRoleTemplateBindingGroupVersionKind, projectRoleTemplateBindingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ProjectRoleTemplateBindingResource, ProjectRoleTemplateBindingGroupVersionKind, projectRoleTemplateBindingFactory{})
return &projectRoleTemplateBindingClient{
ns: namespace,
client: c,
@ -340,7 +340,7 @@ type ClustersGetter interface {
}
func (c *Client) Clusters(namespace string) ClusterInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterResource, ClusterGroupVersionKind, clusterFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterResource, ClusterGroupVersionKind, clusterFactory{})
return &clusterClient{
ns: namespace,
client: c,
@ -353,7 +353,7 @@ type ClusterEventsGetter interface {
}
func (c *Client) ClusterEvents(namespace string) ClusterEventInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterEventResource, ClusterEventGroupVersionKind, clusterEventFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterEventResource, ClusterEventGroupVersionKind, clusterEventFactory{})
return &clusterEventClient{
ns: namespace,
client: c,
@ -366,7 +366,7 @@ type ClusterRegistrationTokensGetter interface {
}
func (c *Client) ClusterRegistrationTokens(namespace string) ClusterRegistrationTokenInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterRegistrationTokenResource, ClusterRegistrationTokenGroupVersionKind, clusterRegistrationTokenFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterRegistrationTokenResource, ClusterRegistrationTokenGroupVersionKind, clusterRegistrationTokenFactory{})
return &clusterRegistrationTokenClient{
ns: namespace,
client: c,
@ -379,7 +379,7 @@ type CatalogsGetter interface {
}
func (c *Client) Catalogs(namespace string) CatalogInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &CatalogResource, CatalogGroupVersionKind, catalogFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &CatalogResource, CatalogGroupVersionKind, catalogFactory{})
return &catalogClient{
ns: namespace,
client: c,
@ -392,7 +392,7 @@ type TemplatesGetter interface {
}
func (c *Client) Templates(namespace string) TemplateInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &TemplateResource, TemplateGroupVersionKind, templateFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &TemplateResource, TemplateGroupVersionKind, templateFactory{})
return &templateClient{
ns: namespace,
client: c,
@ -405,7 +405,7 @@ type TemplateVersionsGetter interface {
}
func (c *Client) TemplateVersions(namespace string) TemplateVersionInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &TemplateVersionResource, TemplateVersionGroupVersionKind, templateVersionFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &TemplateVersionResource, TemplateVersionGroupVersionKind, templateVersionFactory{})
return &templateVersionClient{
ns: namespace,
client: c,
@ -418,7 +418,7 @@ type GroupsGetter interface {
}
func (c *Client) Groups(namespace string) GroupInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &GroupResource, GroupGroupVersionKind, groupFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &GroupResource, GroupGroupVersionKind, groupFactory{})
return &groupClient{
ns: namespace,
client: c,
@ -431,7 +431,7 @@ type GroupMembersGetter interface {
}
func (c *Client) GroupMembers(namespace string) GroupMemberInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &GroupMemberResource, GroupMemberGroupVersionKind, groupMemberFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &GroupMemberResource, GroupMemberGroupVersionKind, groupMemberFactory{})
return &groupMemberClient{
ns: namespace,
client: c,
@ -444,7 +444,7 @@ type PrincipalsGetter interface {
}
func (c *Client) Principals(namespace string) PrincipalInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PrincipalResource, PrincipalGroupVersionKind, principalFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PrincipalResource, PrincipalGroupVersionKind, principalFactory{})
return &principalClient{
ns: namespace,
client: c,
@ -457,7 +457,7 @@ type UsersGetter interface {
}
func (c *Client) Users(namespace string) UserInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &UserResource, UserGroupVersionKind, userFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &UserResource, UserGroupVersionKind, userFactory{})
return &userClient{
ns: namespace,
client: c,
@ -470,7 +470,7 @@ type AuthConfigsGetter interface {
}
func (c *Client) AuthConfigs(namespace string) AuthConfigInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &AuthConfigResource, AuthConfigGroupVersionKind, authConfigFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &AuthConfigResource, AuthConfigGroupVersionKind, authConfigFactory{})
return &authConfigClient{
ns: namespace,
client: c,
@ -483,7 +483,7 @@ type TokensGetter interface {
}
func (c *Client) Tokens(namespace string) TokenInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &TokenResource, TokenGroupVersionKind, tokenFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &TokenResource, TokenGroupVersionKind, tokenFactory{})
return &tokenClient{
ns: namespace,
client: c,
@ -496,7 +496,7 @@ type DynamicSchemasGetter interface {
}
func (c *Client) DynamicSchemas(namespace string) DynamicSchemaInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &DynamicSchemaResource, DynamicSchemaGroupVersionKind, dynamicSchemaFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &DynamicSchemaResource, DynamicSchemaGroupVersionKind, dynamicSchemaFactory{})
return &dynamicSchemaClient{
ns: namespace,
client: c,
@ -509,7 +509,7 @@ type PreferencesGetter interface {
}
func (c *Client) Preferences(namespace string) PreferenceInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PreferenceResource, PreferenceGroupVersionKind, preferenceFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PreferenceResource, PreferenceGroupVersionKind, preferenceFactory{})
return &preferenceClient{
ns: namespace,
client: c,
@ -522,7 +522,7 @@ type ProjectNetworkPoliciesGetter interface {
}
func (c *Client) ProjectNetworkPolicies(namespace string) ProjectNetworkPolicyInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ProjectNetworkPolicyResource, ProjectNetworkPolicyGroupVersionKind, projectNetworkPolicyFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ProjectNetworkPolicyResource, ProjectNetworkPolicyGroupVersionKind, projectNetworkPolicyFactory{})
return &projectNetworkPolicyClient{
ns: namespace,
client: c,
@ -535,7 +535,7 @@ type ClusterLoggingsGetter interface {
}
func (c *Client) ClusterLoggings(namespace string) ClusterLoggingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterLoggingResource, ClusterLoggingGroupVersionKind, clusterLoggingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterLoggingResource, ClusterLoggingGroupVersionKind, clusterLoggingFactory{})
return &clusterLoggingClient{
ns: namespace,
client: c,
@ -548,7 +548,7 @@ type ProjectLoggingsGetter interface {
}
func (c *Client) ProjectLoggings(namespace string) ProjectLoggingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ProjectLoggingResource, ProjectLoggingGroupVersionKind, projectLoggingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ProjectLoggingResource, ProjectLoggingGroupVersionKind, projectLoggingFactory{})
return &projectLoggingClient{
ns: namespace,
client: c,
@ -561,7 +561,7 @@ type ListenConfigsGetter interface {
}
func (c *Client) ListenConfigs(namespace string) ListenConfigInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ListenConfigResource, ListenConfigGroupVersionKind, listenConfigFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ListenConfigResource, ListenConfigGroupVersionKind, listenConfigFactory{})
return &listenConfigClient{
ns: namespace,
client: c,
@ -574,7 +574,7 @@ type SettingsGetter interface {
}
func (c *Client) Settings(namespace string) SettingInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &SettingResource, SettingGroupVersionKind, settingFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &SettingResource, SettingGroupVersionKind, settingFactory{})
return &settingClient{
ns: namespace,
client: c,
@ -587,7 +587,7 @@ type NotifiersGetter interface {
}
func (c *Client) Notifiers(namespace string) NotifierInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &NotifierResource, NotifierGroupVersionKind, notifierFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &NotifierResource, NotifierGroupVersionKind, notifierFactory{})
return &notifierClient{
ns: namespace,
client: c,
@ -600,7 +600,7 @@ type ClusterAlertsGetter interface {
}
func (c *Client) ClusterAlerts(namespace string) ClusterAlertInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterAlertResource, ClusterAlertGroupVersionKind, clusterAlertFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterAlertResource, ClusterAlertGroupVersionKind, clusterAlertFactory{})
return &clusterAlertClient{
ns: namespace,
client: c,
@ -613,7 +613,7 @@ type ProjectAlertsGetter interface {
}
func (c *Client) ProjectAlerts(namespace string) ProjectAlertInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ProjectAlertResource, ProjectAlertGroupVersionKind, projectAlertFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ProjectAlertResource, ProjectAlertGroupVersionKind, projectAlertFactory{})
return &projectAlertClient{
ns: namespace,
client: c,
@ -626,7 +626,7 @@ type ClusterPipelinesGetter interface {
}
func (c *Client) ClusterPipelines(namespace string) ClusterPipelineInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterPipelineResource, ClusterPipelineGroupVersionKind, clusterPipelineFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterPipelineResource, ClusterPipelineGroupVersionKind, clusterPipelineFactory{})
return &clusterPipelineClient{
ns: namespace,
client: c,
@ -639,7 +639,7 @@ type SourceCodeCredentialsGetter interface {
}
func (c *Client) SourceCodeCredentials(namespace string) SourceCodeCredentialInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &SourceCodeCredentialResource, SourceCodeCredentialGroupVersionKind, sourceCodeCredentialFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &SourceCodeCredentialResource, SourceCodeCredentialGroupVersionKind, sourceCodeCredentialFactory{})
return &sourceCodeCredentialClient{
ns: namespace,
client: c,
@ -652,7 +652,7 @@ type PipelinesGetter interface {
}
func (c *Client) Pipelines(namespace string) PipelineInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PipelineResource, PipelineGroupVersionKind, pipelineFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PipelineResource, PipelineGroupVersionKind, pipelineFactory{})
return &pipelineClient{
ns: namespace,
client: c,
@ -665,7 +665,7 @@ type PipelineExecutionsGetter interface {
}
func (c *Client) PipelineExecutions(namespace string) PipelineExecutionInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PipelineExecutionResource, PipelineExecutionGroupVersionKind, pipelineExecutionFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PipelineExecutionResource, PipelineExecutionGroupVersionKind, pipelineExecutionFactory{})
return &pipelineExecutionClient{
ns: namespace,
client: c,
@ -678,7 +678,7 @@ type PipelineExecutionLogsGetter interface {
}
func (c *Client) PipelineExecutionLogs(namespace string) PipelineExecutionLogInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &PipelineExecutionLogResource, PipelineExecutionLogGroupVersionKind, pipelineExecutionLogFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &PipelineExecutionLogResource, PipelineExecutionLogGroupVersionKind, pipelineExecutionLogFactory{})
return &pipelineExecutionLogClient{
ns: namespace,
client: c,
@ -691,7 +691,7 @@ type SourceCodeRepositoriesGetter interface {
}
func (c *Client) SourceCodeRepositories(namespace string) SourceCodeRepositoryInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &SourceCodeRepositoryResource, SourceCodeRepositoryGroupVersionKind, sourceCodeRepositoryFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &SourceCodeRepositoryResource, SourceCodeRepositoryGroupVersionKind, sourceCodeRepositoryFactory{})
return &sourceCodeRepositoryClient{
ns: namespace,
client: c,
@ -704,7 +704,7 @@ type GlobalComposeConfigsGetter interface {
}
func (c *Client) GlobalComposeConfigs(namespace string) GlobalComposeConfigInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &GlobalComposeConfigResource, GlobalComposeConfigGroupVersionKind, globalComposeConfigFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &GlobalComposeConfigResource, GlobalComposeConfigGroupVersionKind, globalComposeConfigFactory{})
return &globalComposeConfigClient{
ns: namespace,
client: c,
@ -717,7 +717,7 @@ type ClusterComposeConfigsGetter interface {
}
func (c *Client) ClusterComposeConfigs(namespace string) ClusterComposeConfigInterface {
objectClient := clientbase.NewObjectClient(namespace, c.restClient, &ClusterComposeConfigResource, ClusterComposeConfigGroupVersionKind, clusterComposeConfigFactory{})
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &ClusterComposeConfigResource, ClusterComposeConfigGroupVersionKind, clusterComposeConfigFactory{})
return &clusterComposeConfigClient{
ns: namespace,
client: c,

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type ListenConfigController interface {
}
type ListenConfigInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ListenConfig) (*ListenConfig, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ListenConfig, error)
Get(name string, opts metav1.GetOptions) (*ListenConfig, error)
@ -177,11 +177,11 @@ func (s *listenConfigClient) Controller() ListenConfigController {
type listenConfigClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ListenConfigController
}
func (s *listenConfigClient) ObjectClient() *clientbase.ObjectClient {
func (s *listenConfigClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type NodeController interface {
}
type NodeInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Node) (*Node, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Node, error)
Get(name string, opts metav1.GetOptions) (*Node, error)
@ -178,11 +178,11 @@ func (s *nodeClient) Controller() NodeController {
type nodeClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller NodeController
}
func (s *nodeClient) ObjectClient() *clientbase.ObjectClient {
func (s *nodeClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type NodeDriverController interface {
}
type NodeDriverInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*NodeDriver) (*NodeDriver, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*NodeDriver, error)
Get(name string, opts metav1.GetOptions) (*NodeDriver, error)
@ -177,11 +177,11 @@ func (s *nodeDriverClient) Controller() NodeDriverController {
type nodeDriverClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller NodeDriverController
}
func (s *nodeDriverClient) ObjectClient() *clientbase.ObjectClient {
func (s *nodeDriverClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type NodePoolController interface {
}
type NodePoolInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*NodePool) (*NodePool, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*NodePool, error)
Get(name string, opts metav1.GetOptions) (*NodePool, error)
@ -178,11 +178,11 @@ func (s *nodePoolClient) Controller() NodePoolController {
type nodePoolClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller NodePoolController
}
func (s *nodePoolClient) ObjectClient() *clientbase.ObjectClient {
func (s *nodePoolClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type NodeTemplateController interface {
}
type NodeTemplateInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*NodeTemplate) (*NodeTemplate, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*NodeTemplate, error)
Get(name string, opts metav1.GetOptions) (*NodeTemplate, error)
@ -178,11 +178,11 @@ func (s *nodeTemplateClient) Controller() NodeTemplateController {
type nodeTemplateClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller NodeTemplateController
}
func (s *nodeTemplateClient) ObjectClient() *clientbase.ObjectClient {
func (s *nodeTemplateClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type NotifierController interface {
}
type NotifierInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Notifier) (*Notifier, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Notifier, error)
Get(name string, opts metav1.GetOptions) (*Notifier, error)
@ -178,11 +178,11 @@ func (s *notifierClient) Controller() NotifierController {
type notifierClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller NotifierController
}
func (s *notifierClient) ObjectClient() *clientbase.ObjectClient {
func (s *notifierClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type PipelineController interface {
}
type PipelineInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Pipeline) (*Pipeline, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Pipeline, error)
Get(name string, opts metav1.GetOptions) (*Pipeline, error)
@ -178,11 +178,11 @@ func (s *pipelineClient) Controller() PipelineController {
type pipelineClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PipelineController
}
func (s *pipelineClient) ObjectClient() *clientbase.ObjectClient {
func (s *pipelineClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type PipelineExecutionController interface {
}
type PipelineExecutionInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*PipelineExecution) (*PipelineExecution, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*PipelineExecution, error)
Get(name string, opts metav1.GetOptions) (*PipelineExecution, error)
@ -178,11 +178,11 @@ func (s *pipelineExecutionClient) Controller() PipelineExecutionController {
type pipelineExecutionClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PipelineExecutionController
}
func (s *pipelineExecutionClient) ObjectClient() *clientbase.ObjectClient {
func (s *pipelineExecutionClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type PipelineExecutionLogController interface {
}
type PipelineExecutionLogInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*PipelineExecutionLog) (*PipelineExecutionLog, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*PipelineExecutionLog, error)
Get(name string, opts metav1.GetOptions) (*PipelineExecutionLog, error)
@ -178,11 +178,11 @@ func (s *pipelineExecutionLogClient) Controller() PipelineExecutionLogController
type pipelineExecutionLogClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PipelineExecutionLogController
}
func (s *pipelineExecutionLogClient) ObjectClient() *clientbase.ObjectClient {
func (s *pipelineExecutionLogClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type PodSecurityPolicyTemplateController interface {
}
type PodSecurityPolicyTemplateInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*PodSecurityPolicyTemplate) (*PodSecurityPolicyTemplate, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*PodSecurityPolicyTemplate, error)
Get(name string, opts metav1.GetOptions) (*PodSecurityPolicyTemplate, error)
@ -177,11 +177,11 @@ func (s *podSecurityPolicyTemplateClient) Controller() PodSecurityPolicyTemplate
type podSecurityPolicyTemplateClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PodSecurityPolicyTemplateController
}
func (s *podSecurityPolicyTemplateClient) ObjectClient() *clientbase.ObjectClient {
func (s *podSecurityPolicyTemplateClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type PodSecurityPolicyTemplateProjectBindingController interface {
}
type PodSecurityPolicyTemplateProjectBindingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*PodSecurityPolicyTemplateProjectBinding) (*PodSecurityPolicyTemplateProjectBinding, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*PodSecurityPolicyTemplateProjectBinding, error)
Get(name string, opts metav1.GetOptions) (*PodSecurityPolicyTemplateProjectBinding, error)
@ -178,11 +178,11 @@ func (s *podSecurityPolicyTemplateProjectBindingClient) Controller() PodSecurity
type podSecurityPolicyTemplateProjectBindingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PodSecurityPolicyTemplateProjectBindingController
}
func (s *podSecurityPolicyTemplateProjectBindingClient) ObjectClient() *clientbase.ObjectClient {
func (s *podSecurityPolicyTemplateProjectBindingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type PreferenceController interface {
}
type PreferenceInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Preference) (*Preference, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Preference, error)
Get(name string, opts metav1.GetOptions) (*Preference, error)
@ -178,11 +178,11 @@ func (s *preferenceClient) Controller() PreferenceController {
type preferenceClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PreferenceController
}
func (s *preferenceClient) ObjectClient() *clientbase.ObjectClient {
func (s *preferenceClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type PrincipalController interface {
}
type PrincipalInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Principal) (*Principal, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Principal, error)
Get(name string, opts metav1.GetOptions) (*Principal, error)
@ -177,11 +177,11 @@ func (s *principalClient) Controller() PrincipalController {
type principalClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller PrincipalController
}
func (s *principalClient) ObjectClient() *clientbase.ObjectClient {
func (s *principalClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ProjectAlertController interface {
}
type ProjectAlertInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ProjectAlert) (*ProjectAlert, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ProjectAlert, error)
Get(name string, opts metav1.GetOptions) (*ProjectAlert, error)
@ -178,11 +178,11 @@ func (s *projectAlertClient) Controller() ProjectAlertController {
type projectAlertClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ProjectAlertController
}
func (s *projectAlertClient) ObjectClient() *clientbase.ObjectClient {
func (s *projectAlertClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ProjectController interface {
}
type ProjectInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Project) (*Project, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Project, error)
Get(name string, opts metav1.GetOptions) (*Project, error)
@ -178,11 +178,11 @@ func (s *projectClient) Controller() ProjectController {
type projectClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ProjectController
}
func (s *projectClient) ObjectClient() *clientbase.ObjectClient {
func (s *projectClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ProjectLoggingController interface {
}
type ProjectLoggingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ProjectLogging) (*ProjectLogging, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ProjectLogging, error)
Get(name string, opts metav1.GetOptions) (*ProjectLogging, error)
@ -178,11 +178,11 @@ func (s *projectLoggingClient) Controller() ProjectLoggingController {
type projectLoggingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ProjectLoggingController
}
func (s *projectLoggingClient) ObjectClient() *clientbase.ObjectClient {
func (s *projectLoggingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ProjectNetworkPolicyController interface {
}
type ProjectNetworkPolicyInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ProjectNetworkPolicy) (*ProjectNetworkPolicy, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ProjectNetworkPolicy, error)
Get(name string, opts metav1.GetOptions) (*ProjectNetworkPolicy, error)
@ -178,11 +178,11 @@ func (s *projectNetworkPolicyClient) Controller() ProjectNetworkPolicyController
type projectNetworkPolicyClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ProjectNetworkPolicyController
}
func (s *projectNetworkPolicyClient) ObjectClient() *clientbase.ObjectClient {
func (s *projectNetworkPolicyClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type ProjectRoleTemplateBindingController interface {
}
type ProjectRoleTemplateBindingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*ProjectRoleTemplateBinding) (*ProjectRoleTemplateBinding, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*ProjectRoleTemplateBinding, error)
Get(name string, opts metav1.GetOptions) (*ProjectRoleTemplateBinding, error)
@ -178,11 +178,11 @@ func (s *projectRoleTemplateBindingClient) Controller() ProjectRoleTemplateBindi
type projectRoleTemplateBindingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller ProjectRoleTemplateBindingController
}
func (s *projectRoleTemplateBindingClient) ObjectClient() *clientbase.ObjectClient {
func (s *projectRoleTemplateBindingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type RoleTemplateController interface {
}
type RoleTemplateInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*RoleTemplate) (*RoleTemplate, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*RoleTemplate, error)
Get(name string, opts metav1.GetOptions) (*RoleTemplate, error)
@ -177,11 +177,11 @@ func (s *roleTemplateClient) Controller() RoleTemplateController {
type roleTemplateClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller RoleTemplateController
}
func (s *roleTemplateClient) ObjectClient() *clientbase.ObjectClient {
func (s *roleTemplateClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type SettingController interface {
}
type SettingInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Setting) (*Setting, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Setting, error)
Get(name string, opts metav1.GetOptions) (*Setting, error)
@ -177,11 +177,11 @@ func (s *settingClient) Controller() SettingController {
type settingClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller SettingController
}
func (s *settingClient) ObjectClient() *clientbase.ObjectClient {
func (s *settingClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type SourceCodeCredentialController interface {
}
type SourceCodeCredentialInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*SourceCodeCredential) (*SourceCodeCredential, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*SourceCodeCredential, error)
Get(name string, opts metav1.GetOptions) (*SourceCodeCredential, error)
@ -178,11 +178,11 @@ func (s *sourceCodeCredentialClient) Controller() SourceCodeCredentialController
type sourceCodeCredentialClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller SourceCodeCredentialController
}
func (s *sourceCodeCredentialClient) ObjectClient() *clientbase.ObjectClient {
func (s *sourceCodeCredentialClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -53,7 +53,7 @@ type SourceCodeRepositoryController interface {
}
type SourceCodeRepositoryInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*SourceCodeRepository) (*SourceCodeRepository, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*SourceCodeRepository, error)
Get(name string, opts metav1.GetOptions) (*SourceCodeRepository, error)
@ -178,11 +178,11 @@ func (s *sourceCodeRepositoryClient) Controller() SourceCodeRepositoryController
type sourceCodeRepositoryClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller SourceCodeRepositoryController
}
func (s *sourceCodeRepositoryClient) ObjectClient() *clientbase.ObjectClient {
func (s *sourceCodeRepositoryClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type TemplateController interface {
}
type TemplateInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Template) (*Template, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Template, error)
Get(name string, opts metav1.GetOptions) (*Template, error)
@ -177,11 +177,11 @@ func (s *templateClient) Controller() TemplateController {
type templateClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller TemplateController
}
func (s *templateClient) ObjectClient() *clientbase.ObjectClient {
func (s *templateClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type TemplateVersionController interface {
}
type TemplateVersionInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*TemplateVersion) (*TemplateVersion, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*TemplateVersion, error)
Get(name string, opts metav1.GetOptions) (*TemplateVersion, error)
@ -177,11 +177,11 @@ func (s *templateVersionClient) Controller() TemplateVersionController {
type templateVersionClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller TemplateVersionController
}
func (s *templateVersionClient) ObjectClient() *clientbase.ObjectClient {
func (s *templateVersionClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type TokenController interface {
}
type TokenInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*Token) (*Token, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Token, error)
Get(name string, opts metav1.GetOptions) (*Token, error)
@ -177,11 +177,11 @@ func (s *tokenClient) Controller() TokenController {
type tokenClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller TokenController
}
func (s *tokenClient) ObjectClient() *clientbase.ObjectClient {
func (s *tokenClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -3,8 +3,8 @@ package v3
import (
"context"
"github.com/rancher/norman/clientbase"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
@ -52,7 +52,7 @@ type UserController interface {
}
type UserInterface interface {
ObjectClient() *clientbase.ObjectClient
ObjectClient() *objectclient.ObjectClient
Create(*User) (*User, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*User, error)
Get(name string, opts metav1.GetOptions) (*User, error)
@ -177,11 +177,11 @@ func (s *userClient) Controller() UserController {
type userClient struct {
client *Client
ns string
objectClient *clientbase.ObjectClient
objectClient *objectclient.ObjectClient
controller UserController
}
func (s *userClient) ObjectClient() *clientbase.ObjectClient {
func (s *userClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}

View File

@ -5,4 +5,4 @@ k8s.io/kubernetes v1.8.3
bitbucket.org/ww/goautoneg a547fc61f48d567d5b4ec6f8aee5573d8efce11d https://github.com/rancher/goautoneg.git
golang.org/x/sync fd80eb99c8f653c847d294a001bdf2a3a6f768f5
github.com/rancher/norman 510ed570d2e29a00e6bc1bcd18bdcad6c6860a13
github.com/rancher/norman ff60298f31f081b06d198815b4c178a578664f7d