From cefb19092700f9c69d51fb4ef75e5333b6b966ae Mon Sep 17 00:00:00 2001 From: Murali Paluru Date: Mon, 24 Jun 2019 13:47:41 -0700 Subject: [PATCH] adding cluster scan types --- .../v3/cluster_scan_types.go | 56 +++++++++++++++++++ apis/management.cattle.io/v3/cluster_types.go | 1 + apis/management.cattle.io/v3/schema/schema.go | 9 +++ 3 files changed, 66 insertions(+) create mode 100644 apis/management.cattle.io/v3/cluster_scan_types.go diff --git a/apis/management.cattle.io/v3/cluster_scan_types.go b/apis/management.cattle.io/v3/cluster_scan_types.go new file mode 100644 index 00000000..4869f650 --- /dev/null +++ b/apis/management.cattle.io/v3/cluster_scan_types.go @@ -0,0 +1,56 @@ +package v3 + +import ( + "github.com/rancher/norman/condition" + "github.com/rancher/norman/types" + v1 "k8s.io/api/core/v1" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + ClusterScanConditionCreated condition.Cond = "Created" + ClusterScanConditionCompleted condition.Cond = "Completed" +) + +type ClusterScanConfig struct { +} + +type ClusterScanCondition struct { + // Type of condition. + Type string `json:"type"` + // Status of the condition, one of True, False, Unknown. + Status v1.ConditionStatus `json:"status"` + // The last time this condition was updated. + LastUpdateTime string `json:"lastUpdateTime,omitempty"` + // Last time the condition transitioned from one status to another. + LastTransitionTime string `json:"lastTransitionTime,omitempty"` + // The reason for the condition's last transition. + Reason string `json:"reason,omitempty"` + // Human-readable message indicating details about last transition + Message string `json:"message,omitempty"` +} + +type ClusterScanSpec struct { + ScanType string `json:"scanType"` + // cluster ID + ClusterID string `json:"clusterId,omitempty" norman:"required,type=reference[cluster]"` + // manual flag + Manual bool `yaml:"manual" json:"manual,omitempty"` + // scanConfig + ScanConfig ClusterScanConfig `yaml:",omitempty" json:"scanConfig,omitempty"` +} + +type ClusterScanStatus struct { + Conditions []ClusterScanCondition `json:"conditions"` +} + +type ClusterScan struct { + types.Namespaced + + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ClusterScanSpec `json:"spec"` + Status ClusterScanStatus `yaml:"status" json:"status,omitempty"` +} diff --git a/apis/management.cattle.io/v3/cluster_types.go b/apis/management.cattle.io/v3/cluster_types.go index b8aa3849..4ea4bb88 100644 --- a/apis/management.cattle.io/v3/cluster_types.go +++ b/apis/management.cattle.io/v3/cluster_types.go @@ -30,6 +30,7 @@ const ( ClusterActionBackupEtcd = "backupEtcd" ClusterActionRestoreFromEtcdBackup = "restoreFromEtcdBackup" ClusterActionRotateCertificates = "rotateCertificates" + ClusterActionRunCISScan = "runSecurityScan" // ClusterConditionReady Cluster ready to serve API (healthy when true, unhealthy when false) ClusterConditionReady condition.Cond = "Ready" diff --git a/apis/management.cattle.io/v3/schema/schema.go b/apis/management.cattle.io/v3/schema/schema.go index 99b8fef0..5ea6c83f 100644 --- a/apis/management.cattle.io/v3/schema/schema.go +++ b/apis/management.cattle.io/v3/schema/schema.go @@ -40,6 +40,7 @@ var ( Init(globalDNSTypes). Init(kontainerTypes). Init(etcdBackupTypes). + Init(clusterScanTypes). Init(monitorTypes). Init(credTypes). Init(mgmtSecretTypes). @@ -227,6 +228,7 @@ func clusterTypes(schemas *types.Schemas) *types.Schemas { Input: "rotateCertificateInput", Output: "rotateCertificateOutput", } + schema.ResourceActions[v3.ClusterActionRunCISScan] = types.Action{} }) } @@ -832,3 +834,10 @@ func clusterTemplateTypes(schemas *types.Schemas) *types.Schemas { MustImport(&Version, v3.ClusterTemplate{}). MustImport(&Version, v3.ClusterTemplateRevision{}) } + +func clusterScanTypes(schemas *types.Schemas) *types.Schemas { + return schemas.MustImportAndCustomize(&Version, v3.ClusterScan{}, func(schema *types.Schema) { + schema.CollectionMethods = []string{http.MethodGet} + schema.ResourceMethods = []string{http.MethodGet, http.MethodDelete} + }) +}