{"id":16939274,"url":"https://github.com/yue9944882/kubernetes-client-lambda","last_synced_at":"2025-03-22T12:32:16.734Z","repository":{"id":57501193,"uuid":"108549006","full_name":"yue9944882/kubernetes-client-lambda","owner":"yue9944882","description":"one-line kubernetes client: light-weight, lambda-styled, easy-testing. For a simplified kubernetes programming.","archived":false,"fork":false,"pushed_at":"2018-04-17T07:36:40.000Z","size":9215,"stargazers_count":46,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-18T11:11:29.515Z","etag":null,"topics":["client-library","kubernetes","lambda","oneliners"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yue9944882.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-27T13:22:55.000Z","updated_at":"2024-01-31T16:36:38.000Z","dependencies_parsed_at":"2022-09-14T19:41:37.176Z","dependency_job_id":null,"html_url":"https://github.com/yue9944882/kubernetes-client-lambda","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yue9944882%2Fkubernetes-client-lambda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yue9944882%2Fkubernetes-client-lambda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yue9944882%2Fkubernetes-client-lambda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yue9944882%2Fkubernetes-client-lambda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yue9944882","download_url":"https://codeload.github.com/yue9944882/kubernetes-client-lambda/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244959444,"owners_count":20538625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-library","kubernetes","lambda","oneliners"],"created_at":"2024-10-13T21:04:12.372Z","updated_at":"2025-03-22T12:32:16.424Z","avatar_url":"https://github.com/yue9944882.png","language":"Go","readme":"# Kubernetes Client Lambda #\n\n[![Build Status](https://travis-ci.org/yue9944882/kubernetes-client-lambda.svg?branch=master)](https://travis-ci.org/yue9944882/kubernetes-client-lambda)\n[![codecov](https://codecov.io/gh/yue9944882/kubernetes-client-lambda/branch/master/graph/badge.svg)](https://codecov.io/gh/yue9944882/kubernetes-client-lambda)\n[![Go Doc](https://godoc.org/github.com/yue9944882/kubernetes-client-lambda?status.svg)](https://godoc.org/github.com/yue9944882/kubernetes-client-lambda)\n\n\n![logo](image/logo.png)\n\n### What is Kubernetes Client Lambda? ###\n\n\nKubernetes Client Lambda (aka KCL) is a wrapper library for [kubernetes/client-go](https://github.com/kubernetes/client-go). Basically it contains these following feature:\n\n- Dynamic client \u0026 client pool\n- Hide details about client-go's informer and lister.\n- Hide annoying group \u0026 versions and use resources as enum.\n- Lambda styled resource filtering \u0026 manipulating. (inspired by Groovy)\n- It's really easy to use.\n\nWith KCL, you can operate kubernetes resources like this example:\n\n```go\n// See doc for more info about lambda functions Grep / Map..\nimport kubernetes \"github.com/yue9944882/kubernetes-client-lambda\"\n\n// In-Cluster example\n// var kcl kubernetes.KubernetesClientLambda = kubernetes.InCluster()\nkubernetes.InCluster().Type(kubernetes.ReplicaSet).InNamespace(\"test\").\n    List().\n    NamePrefix(\"foo-\").\n    Map(func(rs *api_ext_v1.ReplicaSet) rs*api_ext_v1.ReplicaSet {\n        // Edit in-place or clone a new one\n        rs.Meta.Labels[\"foo-label1\"] = \"test\" \n        return rs\n    }).Update()\n\n\n// Out-Of-Cluster example\nkubernetes.OutOfClusterDefault().Type(kubernetes.Pod).InNamespace(\"devops\").\n    List().\n    NameEqual(\"test-pod\").Each(\n        func(pod *api_v1.Pod) {\n            count++\n    })\n```\n\nAs the following example is shown, Calling `Mock()` on Kubernetes Type Enumeration will create the expected mocking resources for you:\n\n```go\nimport kubernetes \"github.com/yue9944882/kubernetes-client-lambda\"\n\nvar kcl KubernetesClientLambda = kubernetes.Mock()\n```\n\n### How to Get it? ###\n\n```\ngo get github.com/yue9944882/kubernetes-client-lambda\n```\n\n### Supported Lambda Function Type ###\n\nWe support following types of lambda function: \n\n##### Primitive Lambda Type #####\n\n\u003ca name=\"lambda-type\"\u003e\u003c/a\u003e\n\n| Name | Parameter Type | Return Type |\n|---|---|---|\n| Function | Resource | - |\n| Consumer | Resource |  |\n| Predicate | Resource | bool |\n| Producer | - | Resource |\n\n##### Kubernetes Resource Lambda Snippet #####\n\n| Name | Pipelinable | Description |\n|---|---|----|\n| NameEqual | yes | Filter out resources if its name mismatches |\n| NamePrefix | yes | Filter out resources if its name doesn't have the prefix |\n| NameRegex | yes | Filter out resources if its name doesn't match the regular expression |\n| HasAnnotation | yes | Filter out resources if it doesn't have the annotation |\n| HasAnnotationKey | yes | Filter out resources if it doesn't have the annotation key |\n| HasLabel | yes | Filter out resources if it doesn't have the label |\n| HasLabelKey | yes | Filter out resources if it doesn't have the label key |\n\n\nAnd these lambda can be consumed by following function: \n\n\n\u003ca name=\"pipeline-type\"\u003e\u003c/a\u003e\n##### Primitive Pipeline Type #####\n\n| Name | Pipelinable | Lambda Type | Description |\n|---|---|----|---|\n| Collect | yes | - | Deep copies the elements and put them into collection | \n| Add | yes | Producer | Add the element returned by lambda into collection |\n| Map | yes | Consumer | Add all the elements returned by lambda to a new collection |\n| Grep | yes | Predicate | Remove the element from collection if applied lambda returned a `false` |\n| First | yes | Predicate | Take only the first element when applied lambda returned a `true` |\n| Iter | no | Function | Apply the lambda to every elements in the collection |\n\n\nPrimitive methods like `CreateIfNotExist`, `DeleteIfExist` have no parameter and just consumes all elements at the end of the pipelining. \nHere are supported primitive kubernetes operation functions below:\n\n##### Basic Operation #####\n\n| Operation | Param | Return1 | Return2 | \n|---|---|---|---|\n| Each | Function | lambda error | - |\n| Any | Predicate | bool | lambda error |\n| Every | Predicate | bool | lambda error |\n| NotEmpty | - | bool | lambda error |\n\n##### Kubernetes Operation #####\n\n| Operation | Param | Return1 | Return2 | \n|---|---|---|---|\n| Create | - | bool(sucess) | lambda error |\n| CreateIfNotExists | - | bool(success) | lambda error |\n| Delete | - | bool(sucess) | lambda error |\n| DeleteIfExists | - |  bool(success) | lambda error |\n| Update | - |  bool(sucess) | lambda error |\n| UpdateIfExists | - |  bool(success) | lambda error |\n| UpdateOrCreate | - | bool(success) | lambda error |\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyue9944882%2Fkubernetes-client-lambda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyue9944882%2Fkubernetes-client-lambda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyue9944882%2Fkubernetes-client-lambda/lists"}