Skip to main content
Glama
sql_test.go7.37 kB
package example import ( "testing" "github.com/weibaohui/kom/kom" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) func TestSQL(t *testing.T) { sql := "select * from deploy where id!=1 and x.y.z.name!='xxx' and (yyy.uuu.ii.sage>80 and sex=0) and (x='ttt' or yyy='ttt') order by id desc" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.name!='hello-28890812-wj2dh' order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas>=1 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas>=2 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) And metadata.name Like '%dns%' order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.name LIKE '%dns' order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.name LIKE 'dns%' order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas<>2 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas!=2 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas>1 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas<1 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas<3 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas=3 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas=2 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicasin (2,1) order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas not in (2,3) order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas between 3 and 4 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas not between 3 and 4 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas not between 1 and 2 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas not between 2 and 3 order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.creationTimestamp between '2024-11-09 00:00:00' and '2024-11-09 23:59:39' order by id desc limit 2" sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.creationTimestamp not between '2024-11-08' and '2024-11-10' order by id desc limit 2" // sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.creationTimestamp > '2024-11-08' order by id desc limit 2" // sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and spec.replicas in (2,1) order by id desc limit 2" // sql = "select * from virtualmachine where (metadata.namespace='kube-system' or metadata.namespace='default' ) order by id desc" // sql = "select * from deploy where (metadata.namespace='kube-system' or metadata.namespace='default' ) and metadata.creationTimestamp in ('2024-11-08','2024-11-09','2024-11-10') order by id desc limit 2" var list []*unstructured.Unstructured err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } func TestCRDSQL(t *testing.T) { sql := "select * from vm where (metadata.namespace='kube-system' or metadata.namespace='default' ) " var list []*unstructured.Unstructured err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } func TestPodSQL(t *testing.T) { sql := "select * from pod where metadata.namespace='kube-system' or metadata.namespace='default' order by metadata.name desc " var list []v1.Pod err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } func TestNodeIPSQL(t *testing.T) { sql := "select * from node where status.addresses[type=InternalIP].address like '%10%' " sql = "select * from node where status.addresses.address like '%10%' " var list []v1.Node err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } func TestPodImageSql(t *testing.T) { sql := "select * from pod where spec.containers.image like '%k8m%' " var list []v1.Pod err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } // spec: // // containers: // - command: // - k8m // - -d // image: weibh/k8m:0.0.21-sp1 // imagePullPolicy: Always // name: k8m // ports: // - containerPort: 3618 // name: http-k8m // protocol: TCP func TestPodPorts2Sql(t *testing.T) { sql := "select * from pod where 'spec.containers.ports.name' like '%k8m%' " var list []v1.Pod err := kom.DefaultCluster().Sql(sql).List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } } func TestCRD2Sql(t *testing.T) { var list []*unstructured.Unstructured err := kom.DefaultCluster().GVK( "apiextensions.k8s.io", "v1", "CustomResourceDefinition"). Where(" 'spec.names.kind' like '%exec%'"). List(&list).Error if err != nil { t.Logf("List error %v", err) } t.Logf("Count %d", len(list)) for _, d := range list { t.Logf("List Items foreach %s,%s\n", d.GetNamespace(), d.GetName()) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/kom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server