mirror of https://github.com/fluxcd/flux2.git
Compare commits
47 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
8454b02a32 | 1 month ago |
|
|
931f101cb1 | 1 month ago |
|
|
06ed49dcd3 | 2 months ago |
|
|
6021981de3 | 2 months ago |
|
|
4b7d46e511 | 2 months ago |
|
|
e8c87047ba | 2 months ago |
|
|
abd603eca7 | 2 months ago |
|
|
83d426c3c0 | 2 months ago |
|
|
48e77c820e | 2 months ago |
|
|
01fbe37639 | 2 months ago |
|
|
532c121a26 | 2 months ago |
|
|
4387e30d1f | 2 months ago |
|
|
0f30cfb8b0 | 2 months ago |
|
|
c69a5c5850 | 2 months ago |
|
|
0b51c7443e | 2 months ago |
|
|
5aa89ab42b | 2 months ago |
|
|
b6e76ca253 | 2 months ago |
|
|
e084250147 | 2 months ago |
|
|
c3bc3d59b3 | 2 months ago |
|
|
1295ba285e | 2 months ago |
|
|
41ebc0e0f9 | 2 months ago |
|
|
67d2fb09a4 | 3 months ago |
|
|
888e8a9aff | 3 months ago |
|
|
4a15fa6a02 | 3 months ago |
|
|
6adffe74c4 | 3 months ago |
|
|
e8213d75a6 | 3 months ago |
|
|
ddd9ef9d13 | 3 months ago |
|
|
f3cc58037a | 3 months ago |
|
|
bb9b4e8533 | 3 months ago |
|
|
6bb4aeff95 | 3 months ago |
|
|
ca29bb1a41 | 3 months ago |
|
|
c707c3ae7b | 3 months ago |
|
|
53552c8816 | 3 months ago |
|
|
fb8f2508d1 | 3 months ago |
|
|
de92e95a50 | 3 months ago |
|
|
b398208c7e | 3 months ago |
|
|
8d0001f5b6 | 3 months ago |
|
|
a2ff6c601e | 3 months ago |
|
|
4accd37c1a | 3 months ago |
|
|
742baa62d1 | 3 months ago |
|
|
784a62c6a5 | 3 months ago |
|
|
0bcccb2482 | 3 months ago |
|
|
17dae751a2 | 3 months ago |
|
|
93a87240b0 | 3 months ago |
|
|
9c66b0d752 | 3 months ago |
|
|
9fc6853024 | 3 months ago |
|
|
22a8310b0a | 3 months ago |
@ -1,84 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2025 The Flux authors
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
|
||||||
|
|
||||||
sourcev1 "github.com/fluxcd/source-controller/api/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
var exportSourceExternalCmd = &cobra.Command{
|
|
||||||
Use: "external [name]",
|
|
||||||
Short: "Export ExternalArtifact sources in YAML format",
|
|
||||||
Long: "The export source external command exports one or all ExternalArtifact sources in YAML format.",
|
|
||||||
Example: ` # Export all ExternalArtifact sources
|
|
||||||
flux export source external --all > sources.yaml
|
|
||||||
|
|
||||||
# Export a specific ExternalArtifact
|
|
||||||
flux export source external my-artifact > source.yaml`,
|
|
||||||
ValidArgsFunction: resourceNamesCompletionFunc(sourcev1.GroupVersion.WithKind(sourcev1.ExternalArtifactKind)),
|
|
||||||
RunE: exportWithSecretCommand{
|
|
||||||
list: externalArtifactListAdapter{&sourcev1.ExternalArtifactList{}},
|
|
||||||
object: externalArtifactAdapter{&sourcev1.ExternalArtifact{}},
|
|
||||||
}.run,
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
exportSourceCmd.AddCommand(exportSourceExternalCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
func exportExternalArtifact(source *sourcev1.ExternalArtifact) any {
|
|
||||||
gvk := sourcev1.GroupVersion.WithKind(sourcev1.ExternalArtifactKind)
|
|
||||||
export := sourcev1.ExternalArtifact{
|
|
||||||
TypeMeta: metav1.TypeMeta{
|
|
||||||
Kind: gvk.Kind,
|
|
||||||
APIVersion: gvk.GroupVersion().String(),
|
|
||||||
},
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: source.Name,
|
|
||||||
Namespace: source.Namespace,
|
|
||||||
Labels: source.Labels,
|
|
||||||
Annotations: source.Annotations,
|
|
||||||
},
|
|
||||||
Spec: source.Spec,
|
|
||||||
}
|
|
||||||
return export
|
|
||||||
}
|
|
||||||
|
|
||||||
func getExternalArtifactSecret(source *sourcev1.ExternalArtifact) *types.NamespacedName {
|
|
||||||
// ExternalArtifact does not have a secretRef in its spec, this satisfies the interface
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ex externalArtifactAdapter) secret() *types.NamespacedName {
|
|
||||||
return getExternalArtifactSecret(ex.ExternalArtifact)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ex externalArtifactListAdapter) secretItem(i int) *types.NamespacedName {
|
|
||||||
return getExternalArtifactSecret(&ex.ExternalArtifactList.Items[i])
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ex externalArtifactAdapter) export() any {
|
|
||||||
return exportExternalArtifact(ex.ExternalArtifact)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ex externalArtifactListAdapter) exportItem(i int) any {
|
|
||||||
return exportExternalArtifact(&ex.ExternalArtifactList.Items[i])
|
|
||||||
}
|
|
||||||
@ -1,108 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2025 The Flux authors
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
|
|
||||||
sourcev1 "github.com/fluxcd/source-controller/api/v1"
|
|
||||||
|
|
||||||
"github.com/fluxcd/flux2/v2/internal/utils"
|
|
||||||
)
|
|
||||||
|
|
||||||
var getSourceExternalCmd = &cobra.Command{
|
|
||||||
Use: "external",
|
|
||||||
Short: "Get ExternalArtifact source statuses",
|
|
||||||
Long: `The get sources external command prints the status of the ExternalArtifact sources.`,
|
|
||||||
Example: ` # List all ExternalArtifacts and their status
|
|
||||||
flux get sources external
|
|
||||||
|
|
||||||
# List ExternalArtifacts from all namespaces
|
|
||||||
flux get sources external --all-namespaces`,
|
|
||||||
ValidArgsFunction: resourceNamesCompletionFunc(sourcev1.GroupVersion.WithKind(sourcev1.ExternalArtifactKind)),
|
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
|
||||||
get := getCommand{
|
|
||||||
apiType: externalArtifactType,
|
|
||||||
list: &externalArtifactListAdapter{&sourcev1.ExternalArtifactList{}},
|
|
||||||
funcMap: make(typeMap),
|
|
||||||
}
|
|
||||||
|
|
||||||
err := get.funcMap.registerCommand(get.apiType.kind, func(obj runtime.Object) (summarisable, error) {
|
|
||||||
o, ok := obj.(*sourcev1.ExternalArtifact)
|
|
||||||
if !ok {
|
|
||||||
return nil, fmt.Errorf("impossible to cast type %#v to ExternalArtifact", obj)
|
|
||||||
}
|
|
||||||
|
|
||||||
sink := &externalArtifactListAdapter{&sourcev1.ExternalArtifactList{
|
|
||||||
Items: []sourcev1.ExternalArtifact{
|
|
||||||
*o,
|
|
||||||
}}}
|
|
||||||
return sink, nil
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := get.run(cmd, args); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
getSourceCmd.AddCommand(getSourceExternalCmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *externalArtifactListAdapter) summariseItem(i int, includeNamespace bool, includeKind bool) []string {
|
|
||||||
item := a.Items[i]
|
|
||||||
var revision string
|
|
||||||
if item.Status.Artifact != nil {
|
|
||||||
revision = item.Status.Artifact.Revision
|
|
||||||
}
|
|
||||||
status, msg := statusAndMessage(item.Status.Conditions)
|
|
||||||
revision = utils.TruncateHex(revision)
|
|
||||||
msg = utils.TruncateHex(msg)
|
|
||||||
|
|
||||||
var source string
|
|
||||||
if item.Spec.SourceRef != nil {
|
|
||||||
source = fmt.Sprintf("%s/%s/%s",
|
|
||||||
item.Spec.SourceRef.Kind,
|
|
||||||
item.Spec.SourceRef.Namespace,
|
|
||||||
item.Spec.SourceRef.Name)
|
|
||||||
}
|
|
||||||
return append(nameColumns(&item, includeNamespace, includeKind),
|
|
||||||
revision, source, status, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a externalArtifactListAdapter) headers(includeNamespace bool) []string {
|
|
||||||
headers := []string{"Name", "Revision", "Source", "Ready", "Message"}
|
|
||||||
if includeNamespace {
|
|
||||||
headers = append([]string{"Namespace"}, headers...)
|
|
||||||
}
|
|
||||||
return headers
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a externalArtifactListAdapter) statusSelectorMatches(i int, conditionType, conditionStatus string) bool {
|
|
||||||
item := a.Items[i]
|
|
||||||
return statusMatches(conditionType, conditionStatus, item.Status.Conditions)
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
apiVersion: source.toolkit.fluxcd.io/v1
|
|
||||||
kind: ExternalArtifact
|
|
||||||
metadata:
|
|
||||||
name: flux-system
|
|
||||||
namespace: {{ .fluxns }}
|
|
||||||
spec:
|
|
||||||
sourceRef:
|
|
||||||
apiVersion: source.example.com/v1alpha1
|
|
||||||
kind: GitHubRelease
|
|
||||||
name: flux-system
|
|
||||||
namespace: {{ .fluxns }}
|
|
||||||
Loading…
Reference in New Issue