mirror of https://github.com/knative/func.git
58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package common
|
|
|
|
import (
|
|
"context"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
"k8s.io/client-go/dynamic"
|
|
"knative.dev/func/pkg/k8s"
|
|
|
|
"testing"
|
|
)
|
|
|
|
// RetrieveKnativeServiceResource wraps the logic to query knative serving resources in current namespace
|
|
func RetrieveKnativeServiceResource(t *testing.T, serviceName string) *unstructured.Unstructured {
|
|
// create k8s dynamic client
|
|
config, err := k8s.GetClientConfig().ClientConfig()
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
dynClient, err := dynamic.NewForConfig(config)
|
|
if err != nil {
|
|
t.Fatal(err.Error())
|
|
}
|
|
|
|
knativeServiceResource := schema.GroupVersionResource{
|
|
Group: "serving.knative.dev",
|
|
Version: "v1",
|
|
Resource: "services",
|
|
}
|
|
namespace, _, _ := k8s.GetClientConfig().Namespace()
|
|
resource, err := dynClient.Resource(knativeServiceResource).Namespace(namespace).Get(context.Background(), serviceName, metav1.GetOptions{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return resource
|
|
}
|
|
|
|
// GetCurrentServiceRevision retrieves current revision name for the deployed function
|
|
func GetCurrentServiceRevision(t *testing.T, serviceName string) string {
|
|
resource := RetrieveKnativeServiceResource(t, serviceName)
|
|
rootMap := resource.UnstructuredContent()
|
|
statusMap := rootMap["status"].(map[string]interface{})
|
|
latestReadyRevision := statusMap["latestReadyRevisionName"].(string)
|
|
return latestReadyRevision
|
|
}
|
|
|
|
func GetKnativeServiceRevisionAndUrl(t *testing.T, serviceName string) (revision string, url string) {
|
|
resource := RetrieveKnativeServiceResource(t, serviceName)
|
|
rootMap := resource.UnstructuredContent()
|
|
statusMap := rootMap["status"].(map[string]interface{})
|
|
revision = statusMap["latestReadyRevisionName"].(string)
|
|
url = statusMap["url"].(string)
|
|
return revision, url
|
|
}
|