Switch from ThirdPartyResources to CustomResourceDefinitions (#381)

Switch Fission's storage over to the new CustomResourceDefinitions, from the deprecated ThirdPartyResources. This allows us to be compatible with Kubernets 1.8 and onwards.

This also adds a CLI tool for dumping state from an old fission version and restoring state into new CRDs.

The storage service is unaffected by this change.
This commit is contained in:
Ta-Ching Chen
2017-11-04 14:55:16 -07:00
committed by Soam Vasani
parent 746c51901d
commit 5f14b9b0ae
76 changed files with 1223 additions and 701 deletions
+8 -8
View File
@@ -36,8 +36,8 @@ import (
"k8s.io/client-go/kubernetes"
"github.com/fission/fission"
"github.com/fission/fission/crd"
"github.com/fission/fission/publisher"
"github.com/fission/fission/tpr"
)
type requestType int
@@ -56,7 +56,7 @@ type (
}
watchSubscription struct {
watch tpr.Kuberneteswatchtrigger
watch crd.KubernetesWatchTrigger
kubeWatch watch.Interface
lastResourceVersion string
stopped *int32
@@ -66,7 +66,7 @@ type (
kubeWatcherRequest struct {
requestType
watches []tpr.Kuberneteswatchtrigger
watches []crd.KubernetesWatchTrigger
responseChannel chan *kubeWatcherResponse
}
kubeWatcherResponse struct {
@@ -85,7 +85,7 @@ func MakeKubeWatcher(kubernetesClient *kubernetes.Clientset, publisher publisher
return kw
}
func (kw *KubeWatcher) Sync(watches []tpr.Kuberneteswatchtrigger) error {
func (kw *KubeWatcher) Sync(watches []crd.KubernetesWatchTrigger) error {
req := &kubeWatcherRequest{
requestType: SYNC,
watches: watches,
@@ -145,7 +145,7 @@ func printKubernetesObject(obj runtime.Object, w io.Writer) error {
return err
}
func createKubernetesWatch(kubeClient *kubernetes.Clientset, w *tpr.Kuberneteswatchtrigger, resourceVersion string) (watch.Interface, error) {
func createKubernetesWatch(kubeClient *kubernetes.Clientset, w *crd.KubernetesWatchTrigger, resourceVersion string) (watch.Interface, error) {
var wi watch.Interface
var err error
var watchTimeoutSec int64 = 120
@@ -174,7 +174,7 @@ func createKubernetesWatch(kubeClient *kubernetes.Clientset, w *tpr.Kuberneteswa
return wi, err
}
func (kw *KubeWatcher) addWatch(w *tpr.Kuberneteswatchtrigger) error {
func (kw *KubeWatcher) addWatch(w *crd.KubernetesWatchTrigger) error {
log.Printf("Adding watch %v: %v", w.Metadata.Name, w.Spec.FunctionReference)
ws, err := MakeWatchSubscription(w, kw.kubernetesClient, kw.publisher)
if err != nil {
@@ -184,7 +184,7 @@ func (kw *KubeWatcher) addWatch(w *tpr.Kuberneteswatchtrigger) error {
return nil
}
func (kw *KubeWatcher) removeWatch(w *tpr.Kuberneteswatchtrigger) error {
func (kw *KubeWatcher) removeWatch(w *crd.KubernetesWatchTrigger) error {
log.Printf("Removing watch %v: %v", w.Metadata.Name, w.Spec.FunctionReference)
ws, ok := kw.watches[w.Metadata.UID]
if !ok {
@@ -211,7 +211,7 @@ func (kw *KubeWatcher) removeWatch(w *tpr.Kuberneteswatchtrigger) error {
// return nil
// }
func MakeWatchSubscription(w *tpr.Kuberneteswatchtrigger, kubeClient *kubernetes.Clientset, publisher publisher.Publisher) (*watchSubscription, error) {
func MakeWatchSubscription(w *crd.KubernetesWatchTrigger, kubeClient *kubernetes.Clientset, publisher publisher.Publisher) (*watchSubscription, error) {
var stopped int32 = 0
ws := &watchSubscription{
watch: *w,
+2 -2
View File
@@ -17,12 +17,12 @@ limitations under the License.
package kubewatcher
import (
"github.com/fission/fission/crd"
"github.com/fission/fission/publisher"
"github.com/fission/fission/tpr"
)
func Start(routerUrl string) error {
fissionClient, kubeClient, err := tpr.MakeFissionClient()
fissionClient, kubeClient, _, err := crd.MakeFissionClient()
if err != nil {
return err
}
+4 -4
View File
@@ -22,17 +22,17 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/fission/fission/tpr"
"github.com/fission/fission/crd"
)
type (
WatchSync struct {
client *tpr.FissionClient
client *crd.FissionClient
kubeWatcher *KubeWatcher
}
)
func MakeWatchSync(client *tpr.FissionClient, kubeWatcher *KubeWatcher) *WatchSync {
func MakeWatchSync(client *crd.FissionClient, kubeWatcher *KubeWatcher) *WatchSync {
ws := &WatchSync{
client: client,
kubeWatcher: kubeWatcher,
@@ -44,7 +44,7 @@ func MakeWatchSync(client *tpr.FissionClient, kubeWatcher *KubeWatcher) *WatchSy
func (ws *WatchSync) syncSvc() {
// TODO watch instead of polling
for {
watches, err := ws.client.Kuberneteswatchtriggers(metav1.NamespaceAll).List(metav1.ListOptions{})
watches, err := ws.client.KubernetesWatchTriggers(metav1.NamespaceAll).List(metav1.ListOptions{})
if err != nil {
log.Fatalf("Failed to get Kubernetes watch trigger list: %v", err)
}