This repository has been archived by the owner on Apr 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #15 from flanksource/e2e-tests
E2e tests for copy-to-namespace and awx operator
- Loading branch information
Showing
21 changed files
with
1,984 additions
and
695 deletions.
There are no files selected for viewing
567 changes: 284 additions & 283 deletions
567
config/crd/bases/templating.flanksource.com_templates.yaml
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,3 +23,4 @@ spec: | |
args: | ||
- "--metrics-addr=127.0.0.1:8080" | ||
- "--enable-leader-election" | ||
- "--sync-period=20s" |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
apiVersion: acmp.corp/v1 | ||
kind: NamespaceRequest | ||
metadata: | ||
name: a | ||
spec: | ||
team: blue-team | ||
memory: 16 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
package k8s | ||
|
||
import ( | ||
"context" | ||
"encoding/json" | ||
"sync" | ||
"time" | ||
|
||
"github.com/go-logr/logr" | ||
"github.com/go-openapi/spec" | ||
"github.com/pkg/errors" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
"k8s.io/client-go/kubernetes" | ||
) | ||
|
||
type SchemaCache struct { | ||
clientset *kubernetes.Clientset | ||
expire time.Duration | ||
lock *sync.Mutex | ||
|
||
resources []*metav1.APIResourceList | ||
resourcesExpireTimestamp time.Time | ||
|
||
schema *spec.Swagger | ||
schemaExpireTimestamp time.Time | ||
log logr.Logger | ||
} | ||
|
||
func NewSchemaCache(clientset *kubernetes.Clientset, expire time.Duration, log logr.Logger) *SchemaCache { | ||
sc := &SchemaCache{ | ||
clientset: clientset, | ||
expire: expire, | ||
lock: &sync.Mutex{}, | ||
log: log, | ||
|
||
resources: nil, | ||
} | ||
return sc | ||
} | ||
|
||
func (sc *SchemaCache) FetchSchema() (*spec.Swagger, error) { | ||
sc.lock.Lock() | ||
defer sc.lock.Unlock() | ||
|
||
if sc.resources == nil || time.Now().After(sc.schemaExpireTimestamp) { | ||
sc.log.V(2).Info("before fetch schema") | ||
if err := sc.fetchAndSetSchema(); err != nil { | ||
return nil, errors.Wrap(err, "failed to refetch API schema") | ||
} | ||
sc.log.V(2).Info("after fetch schema") | ||
} | ||
|
||
return sc.schema, nil | ||
} | ||
|
||
func (sc *SchemaCache) FetchResources() ([]*metav1.APIResourceList, error) { | ||
sc.lock.Lock() | ||
defer sc.lock.Unlock() | ||
|
||
if sc.resources == nil || time.Now().After(sc.resourcesExpireTimestamp) { | ||
sc.log.V(2).Info("before fetch resources") | ||
if err := sc.fetchAndSetResources(); err != nil { | ||
return nil, errors.Wrap(err, "failed to refetch API resources") | ||
} | ||
sc.log.V(2).Info("after fetch resources") | ||
} | ||
return sc.resources, nil | ||
} | ||
|
||
func (sc *SchemaCache) fetchAndSetSchema() error { | ||
bs, err := sc.clientset.RESTClient().Get().AbsPath("openapi", "v2").DoRaw(context.TODO()) | ||
if err != nil { | ||
return errors.Wrap(err, "failed to fetch schema from server") | ||
} | ||
s := &spec.Swagger{} | ||
|
||
if err := json.Unmarshal(bs, &s); err != nil { | ||
return errors.Wrap(err, "failed to unmarshal openapi") | ||
} | ||
|
||
sc.schema = s | ||
sc.schemaExpireTimestamp = time.Now().Add(sc.expire) | ||
|
||
return nil | ||
} | ||
|
||
func (sc *SchemaCache) fetchAndSetResources() error { | ||
serverResources, err := sc.clientset.ServerResources() | ||
if err != nil { | ||
return errors.Wrap(err, "failed to list server resources") | ||
} | ||
sc.resources = serverResources | ||
sc.resourcesExpireTimestamp = time.Now().Add(sc.expire) | ||
return nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.