register.go 1.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
package v1alpha1

import (
	"github.com/emicklei/go-restful"
	"k8s.io/apimachinery/pkg/runtime/schema"
	k8sinformers "k8s.io/client-go/informers"
	"kubesphere.io/kubesphere/pkg/api"
	"kubesphere.io/kubesphere/pkg/apiserver/runtime"
	"kubesphere.io/kubesphere/pkg/client/informers/externalversions"
	"net/http"
)

const (
	GroupName = "cluster.kubesphere.io"
)

var GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

func AddToContainer(container *restful.Container,
	k8sInformers k8sinformers.SharedInformerFactory,
	ksInformers externalversions.SharedInformerFactory,
	proxyService string,
	proxyAddress string,
	agentImage string) error {

	webservice := runtime.NewWebService(GroupVersion)
	h := NewHandler(k8sInformers.Core().V1().Services().Lister(), ksInformers.Cluster().V1alpha1().Clusters().Lister(), proxyService, proxyAddress, agentImage)

	// returns deployment yaml for cluster agent
	webservice.Route(webservice.GET("/clusters/{cluster}/agent/deployment").
		Doc("Return deployment yaml for cluster agent.").
		Param(webservice.PathParameter("cluster", "Name of the cluster.").Required(true)).
		To(h.GenerateAgentDeployment).
		Returns(http.StatusOK, api.StatusOK, nil))

Z
zryfish 已提交
36 37 38 39 40 41
	webservice.Route(webservice.POST("/clusters/validation").
		Doc("").
		Param(webservice.BodyParameter("cluster", "cluster specification")).
		To(h.ValidateCluster).
		Returns(http.StatusOK, api.StatusOK, nil))

42 43 44 45
	container.Add(webservice)

	return nil
}