mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-07-19 02:28:30 +00:00
Compare commits
5 Commits
api/v0.3.2
...
cmd/kubect
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eff3d2e010 | ||
|
|
5cc9da9d4e | ||
|
|
adce0af864 | ||
|
|
f475ad002c | ||
|
|
3a74f15766 |
@@ -4,12 +4,11 @@ go 1.13
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/spf13/cobra v0.0.5
|
github.com/spf13/cobra v0.0.5
|
||||||
|
k8s.io/api v0.17.0
|
||||||
k8s.io/apimachinery v0.17.0
|
k8s.io/apimachinery v0.17.0
|
||||||
k8s.io/cli-runtime v0.17.0
|
k8s.io/cli-runtime v0.17.0
|
||||||
k8s.io/client-go v0.17.0
|
k8s.io/client-go v0.17.0
|
||||||
k8s.io/component-base v0.17.0 // indirect
|
k8s.io/component-base v0.17.0 // indirect
|
||||||
k8s.io/kubectl v0.0.0-20191219154910-1528d4eea6dd
|
k8s.io/kubectl v0.0.0-20191219154910-1528d4eea6dd
|
||||||
sigs.k8s.io/kustomize/kyaml v0.0.0
|
sigs.k8s.io/kustomize/kyaml v0.0.6
|
||||||
)
|
)
|
||||||
|
|
||||||
replace sigs.k8s.io/kustomize/kyaml v0.0.0 => ../../kyaml
|
|
||||||
|
|||||||
@@ -387,6 +387,8 @@ modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs
|
|||||||
modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
|
modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
|
||||||
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
|
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
|
||||||
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
|
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
|
||||||
|
sigs.k8s.io/kustomize/kyaml v0.0.6 h1:KhQr7JwpCseFTSWCwqp4CJ4mY6Kx+i34tF4e0eNkcXw=
|
||||||
|
sigs.k8s.io/kustomize/kyaml v0.0.6/go.mod h1:tDOfJjL6slQVBLHJ76XfXAFgAOEdfm04AW2HehYOp8k=
|
||||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
||||||
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
|
sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs=
|
||||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||||
|
|||||||
@@ -5,10 +5,7 @@
|
|||||||
package kubectlcobra
|
package kubectlcobra
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/cli-runtime/pkg/resource"
|
"k8s.io/cli-runtime/pkg/resource"
|
||||||
)
|
)
|
||||||
@@ -60,86 +57,3 @@ func sortGroupingObject(infos []*resource.Info) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the inventory of all objects (passed as infos) to the
|
|
||||||
// grouping object. Returns an error if a grouping object does not
|
|
||||||
// exist, or we are unable to successfully add the inventory to
|
|
||||||
// the grouping object; nil otherwise. Each object is in
|
|
||||||
// unstructured.Unstructured format.
|
|
||||||
func addInventoryToGroupingObj(infos []*resource.Info) error {
|
|
||||||
|
|
||||||
// Iterate through the objects (infos), creating an Inventory struct
|
|
||||||
// as metadata for the object, or if it's the grouping object, store it.
|
|
||||||
var groupingObj *unstructured.Unstructured
|
|
||||||
inventoryMap := map[string]string{}
|
|
||||||
for _, info := range infos {
|
|
||||||
obj := info.Object
|
|
||||||
if isGroupingObject(obj) {
|
|
||||||
// If we have more than one grouping object--error.
|
|
||||||
if groupingObj != nil {
|
|
||||||
return fmt.Errorf("Error--applying more than one grouping object.")
|
|
||||||
}
|
|
||||||
var ok bool
|
|
||||||
groupingObj, ok = obj.(*unstructured.Unstructured)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("Grouping object is not an Unstructured: %#v", groupingObj)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if obj == nil {
|
|
||||||
return fmt.Errorf("Creating inventory; object is nil")
|
|
||||||
}
|
|
||||||
gk := obj.GetObjectKind().GroupVersionKind().GroupKind()
|
|
||||||
inventory, err := createInventory(info.Namespace, info.Name, gk)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
inventoryMap[inventory.String()] = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we've found the grouping object, store the object metadata inventory
|
|
||||||
// in the grouping config map.
|
|
||||||
if groupingObj == nil {
|
|
||||||
return fmt.Errorf("Grouping object not found")
|
|
||||||
}
|
|
||||||
err := unstructured.SetNestedStringMap(groupingObj.UnstructuredContent(), inventoryMap, "data")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// retrieveInventoryFromGroupingObj returns a slice of pointers to the
|
|
||||||
// inventory metadata. This function finds the grouping object, then
|
|
||||||
// parses the stored resource metadata into Inventory structs. Returns
|
|
||||||
// an error if there is a problem parsing the data into Inventory
|
|
||||||
// structs, or if the grouping object is not in Unstructured format; nil
|
|
||||||
// otherwise. If a grouping object does not exist, or it does not have a
|
|
||||||
// "data" map, then returns an empty slice and no error.
|
|
||||||
func retrieveInventoryFromGroupingObj(infos []*resource.Info) ([]*Inventory, error) {
|
|
||||||
inventory := []*Inventory{}
|
|
||||||
groupingInfo, exists := findGroupingObject(infos)
|
|
||||||
if exists {
|
|
||||||
groupingObj, ok := groupingInfo.Object.(*unstructured.Unstructured)
|
|
||||||
if !ok {
|
|
||||||
err := fmt.Errorf("Grouping object is not an Unstructured: %#v", groupingObj)
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
invMap, exists, err := unstructured.NestedStringMap(groupingObj.Object, "data")
|
|
||||||
if err != nil {
|
|
||||||
err := fmt.Errorf("Error retrieving inventory from grouping object.")
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
if exists {
|
|
||||||
for invStr := range invMap {
|
|
||||||
inv, err := parseInventory(invStr)
|
|
||||||
if err != nil {
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
inventory = append(inventory, inv)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return inventory, nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ package kubectlcobra
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/cli-runtime/pkg/resource"
|
"k8s.io/cli-runtime/pkg/resource"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,16 +19,12 @@ var pod1Name = "pod-1"
|
|||||||
var pod2Name = "pod-2"
|
var pod2Name = "pod-2"
|
||||||
var pod3Name = "pod-3"
|
var pod3Name = "pod-3"
|
||||||
|
|
||||||
var groupingObj = unstructured.Unstructured{
|
var groupingObj = corev1.ConfigMap{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "ConfigMap",
|
Name: groupingObjName,
|
||||||
"metadata": map[string]interface{}{
|
Labels: map[string]string{
|
||||||
"name": groupingObjName,
|
GroupingLabel: "true",
|
||||||
"namespace": testNamespace,
|
|
||||||
"labels": map[string]interface{}{
|
|
||||||
GroupingLabel: "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -39,14 +35,10 @@ var groupingInfo = &resource.Info{
|
|||||||
Object: &groupingObj,
|
Object: &groupingObj,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod1 = unstructured.Unstructured{
|
var pod1 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod1Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod1Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,14 +48,10 @@ var pod1Info = &resource.Info{
|
|||||||
Object: &pod1,
|
Object: &pod1,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod2 = unstructured.Unstructured{
|
var pod2 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod2Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod2Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,14 +61,10 @@ var pod2Info = &resource.Info{
|
|||||||
Object: &pod2,
|
Object: &pod2,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod3 = unstructured.Unstructured{
|
var pod3 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod3Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod3Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,190 +215,3 @@ func TestSortGroupingObject(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddRetrieveInventoryToFromGroupingObject(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
infos []*resource.Info
|
|
||||||
expected []*Inventory
|
|
||||||
isError bool
|
|
||||||
}{
|
|
||||||
// No grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// No grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// Grouping object without other objects is OK.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
// More than one grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// More than one grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info, groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, groupingInfo},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info, groupingInfo, pod3Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info, pod3Info, groupingInfo},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info, pod2Info, pod3Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
err := addInventoryToGroupingObj(test.infos)
|
|
||||||
if test.isError && err == nil {
|
|
||||||
t.Errorf("Should have produced an error, but returned none.")
|
|
||||||
}
|
|
||||||
if !test.isError {
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Received error when expecting none (%s)\n", err)
|
|
||||||
} else {
|
|
||||||
retrieved, err := retrieveInventoryFromGroupingObj(test.infos)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Error retrieving inventory: %s\n", err)
|
|
||||||
}
|
|
||||||
if len(test.expected) != len(retrieved) {
|
|
||||||
t.Errorf("Expected inventory for %d resources, actual %d",
|
|
||||||
len(test.expected), len(retrieved))
|
|
||||||
}
|
|
||||||
for _, expected := range test.expected {
|
|
||||||
found := false
|
|
||||||
for _, actual := range retrieved {
|
|
||||||
if expected.Equals(actual) {
|
|
||||||
found = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
t.Errorf("Expected inventory (%s) not found", expected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright 2019 The Kubernetes Authors.
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
: "${kyaml_major?Need to source VERSIONS}"
|
|
||||||
: "${kyaml_minor?Need to source VERSIONS}"
|
|
||||||
: "${kyaml_patch?Need to source VERSIONS}"
|
|
||||||
|
|
||||||
: "${kstatus_major?Need to source VERSIONS}"
|
|
||||||
: "${kstatus_minor?Need to source VERSIONS}"
|
|
||||||
: "${kstatus_patch?Need to source VERSIONS}"
|
|
||||||
|
|
||||||
|
|
||||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/kyaml@v0.0.0
|
|
||||||
go mod edit -require=sigs.k8s.io/kustomize/kyaml@v$kyaml_major.$kyaml_minor.$kyaml_patch
|
|
||||||
|
|
||||||
go mod edit -dropreplace=sigs.k8s.io/kustomize/kstatus@v0.0.0
|
|
||||||
go mod edit -require=sigs.k8s.io/kustomize/kstatus@v$kstatus_major.$kstatus_minor.$kstatus_patch
|
|
||||||
@@ -12,11 +12,11 @@ require (
|
|||||||
k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655
|
k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655
|
||||||
k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90
|
k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90
|
||||||
sigs.k8s.io/controller-runtime v0.4.0
|
sigs.k8s.io/controller-runtime v0.4.0
|
||||||
sigs.k8s.io/kustomize/kstatus v0.0.0
|
sigs.k8s.io/kustomize/kstatus v0.0.0-20191204200457-7c1b477ff62d
|
||||||
sigs.k8s.io/kustomize/kyaml v0.0.0
|
sigs.k8s.io/kustomize/kyaml v0.0.0-20191202204815-0a19a5dbd9b8
|
||||||
)
|
)
|
||||||
|
|
||||||
replace (
|
replace (
|
||||||
sigs.k8s.io/kustomize/kstatus v0.0.0 => ../../kstatus
|
sigs.k8s.io/kustomize/kstatus v0.0.0-20191204200457-7c1b477ff62d => ../../kstatus
|
||||||
sigs.k8s.io/kustomize/kyaml v0.0.0 => ../../kyaml
|
sigs.k8s.io/kustomize/kyaml v0.0.0-20191202204815-0a19a5dbd9b8 => ../../kyaml
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -138,10 +138,10 @@ func (s *TablePrinter) Print() {
|
|||||||
|
|
||||||
func (s *TablePrinter) PrintUntil(stop <-chan struct{}, interval time.Duration) <-chan struct{} {
|
func (s *TablePrinter) PrintUntil(stop <-chan struct{}, interval time.Duration) <-chan struct{} {
|
||||||
completed := make(chan struct{})
|
completed := make(chan struct{})
|
||||||
setColor(s.out, WHITE)
|
|
||||||
s.printTable(s.statusInfo.CurrentStatus(), false)
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(completed)
|
defer close(completed)
|
||||||
|
setColor(s.out, WHITE)
|
||||||
|
s.printTable(s.statusInfo.CurrentStatus(), false)
|
||||||
ticker := time.NewTicker(interval)
|
ticker := time.NewTicker(interval)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func TestWaitNoResources(t *testing.T) {
|
|||||||
|
|
||||||
aggStatuses := tableOutput.allAggStatuses()
|
aggStatuses := tableOutput.allAggStatuses()
|
||||||
expectedAggStatuses := []status.Status{
|
expectedAggStatuses := []status.Status{
|
||||||
status.UnknownStatus,
|
status.CurrentStatus,
|
||||||
status.CurrentStatus,
|
status.CurrentStatus,
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(aggStatuses, expectedAggStatuses) {
|
if !reflect.DeepEqual(aggStatuses, expectedAggStatuses) {
|
||||||
|
|||||||
@@ -1,37 +1,27 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# VERSIONS contains the release versions of each kustomize go module
|
# VERSIONS contains the release versions of each kustomize go module
|
||||||
# update this file and run releasemodule.sh to cut a new release
|
# update this file and run releaseall.sh to cut a new release
|
||||||
|
|
||||||
# kyaml version
|
# kyaml version
|
||||||
export kyaml_major=0
|
export kyaml_major=0
|
||||||
export kyaml_minor=0
|
export kyaml_minor=0
|
||||||
export kyaml_patch=6
|
export kyaml_patch=5
|
||||||
|
|
||||||
# kstatus version
|
|
||||||
export kstatus_major=0
|
|
||||||
export kstatus_minor=0
|
|
||||||
export kstatus_patch=1
|
|
||||||
|
|
||||||
# kustomize api version
|
# kustomize api version
|
||||||
export api_major=0
|
export api_major=0
|
||||||
export api_minor=3
|
export api_minor=3
|
||||||
export api_patch=2
|
export api_patch=1
|
||||||
|
|
||||||
# cmd/config version
|
# cmd/config version
|
||||||
export cmd_config_major=0
|
export cmd_config_major=0
|
||||||
export cmd_config_minor=0
|
export cmd_config_minor=0
|
||||||
export cmd_config_patch=6
|
export cmd_config_patch=5
|
||||||
|
|
||||||
# cmd/kubectl version
|
# cmd/kubectl version
|
||||||
export cmd_kubectl_major=0
|
export cmd_kubectl_major=0
|
||||||
export cmd_kubectl_minor=0
|
export cmd_kubectl_minor=0
|
||||||
export cmd_kubectl_patch=3
|
export cmd_kubectl_patch=2
|
||||||
|
|
||||||
# cmd/resource version
|
|
||||||
export cmd_resource_major=0
|
|
||||||
export cmd_resource_minor=0
|
|
||||||
export cmd_resource_patch=1
|
|
||||||
|
|
||||||
# kustomize version
|
# kustomize version
|
||||||
export kustomize_major=3
|
export kustomize_major=3
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ function releaseModule {
|
|||||||
echo "$module complete"
|
echo "$module complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
modules="kyaml api kstatus cmd/config cmd/resource cmd/kubectl pluginator kustomize"
|
modules="kyaml api cmd/config cmd/kubectl pluginator kustomize"
|
||||||
|
|
||||||
# configure the branch and tag names
|
# configure the branch and tag names
|
||||||
module="${1?must provide the module to release as an argument: supported modules [$modules]}"
|
module="${1?must provide the module to release as an argument: supported modules [$modules]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user