1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-05 05:45:22 +02:00

chore(code): clean up the code EE-7251 (#11948)
Some checks are pending
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run

This commit is contained in:
andres-portainer 2024-06-18 15:59:12 -03:00 committed by GitHub
parent be9d3285e1
commit bfa27d9103
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 338 additions and 368 deletions

View file

@ -8,6 +8,7 @@ import (
"github.com/portainer/portainer/api/crypto"
"github.com/portainer/portainer/api/dataservices"
"github.com/portainer/portainer/api/http/client"
"github.com/rs/zerolog/log"
)
@ -23,10 +24,9 @@ import (
// will save the signature from the first request after the admin user is created, ensuring that
// it matches in the event of a backup restoration.
func InitEndpoint(shutdownCtx context.Context, adminCreationDone <-chan struct{}, flags *portainer.CLIFlags, dataStore dataservices.DataStore, snapshotService portainer.SnapshotService) {
select {
case <-shutdownCtx.Done():
log.Debug().Msg("shutdown endpoint initalization")
log.Debug().Msg("shutdown endpoint initialization")
case <-adminCreationDone:
// Wait for the admin user to be created before initializing the primary endpoint
@ -35,8 +35,7 @@ func InitEndpoint(shutdownCtx context.Context, adminCreationDone <-chan struct{}
// 2. Using the API with the /api/users/admin/init endpoint
log.Debug().Msg("init primary endpoint")
err := initEndpoint(flags, dataStore, snapshotService)
if err != nil {
if err := initEndpoint(flags, dataStore, snapshotService); err != nil {
log.Fatal().Err(err).Msg("failed initializing environment")
}
}
@ -61,6 +60,7 @@ func initEndpoint(flags *portainer.CLIFlags, dataStore dataservices.DataStore, s
if *flags.TLS || *flags.TLSSkipVerify {
return createTLSSecuredEndpoint(flags, dataStore, snapshotService)
}
return createUnsecuredEndpoint(*flags.EndpointURL, dataStore, snapshotService)
}
@ -123,8 +123,7 @@ func createTLSSecuredEndpoint(flags *portainer.CLIFlags, dataStore dataservices.
}
}
err := snapshotService.SnapshotEndpoint(endpoint)
if err != nil {
if err := snapshotService.SnapshotEndpoint(endpoint); err != nil {
log.Error().
Str("endpoint", endpoint.Name).
Str("URL", endpoint.URL).
@ -137,8 +136,7 @@ func createTLSSecuredEndpoint(flags *portainer.CLIFlags, dataStore dataservices.
func createUnsecuredEndpoint(endpointURL string, dataStore dataservices.DataStore, snapshotService portainer.SnapshotService) error {
if strings.HasPrefix(endpointURL, "tcp://") {
_, err := client.ExecutePingOperation(endpointURL, nil)
if err != nil {
if _, err := client.ExecutePingOperation(endpointURL, nil); err != nil {
return err
}
}
@ -172,8 +170,7 @@ func createUnsecuredEndpoint(endpointURL string, dataStore dataservices.DataStor
},
}
err := snapshotService.SnapshotEndpoint(endpoint)
if err != nil {
if err := snapshotService.SnapshotEndpoint(endpoint); err != nil {
log.Error().
Str("endpoint", endpoint.Name).
Str("URL", endpoint.URL).Err(err).

View file

@ -5,20 +5,20 @@ import (
"github.com/portainer/portainer/api/dataservices"
)
func isRegistryAssignedToNamespace(registry portainer.Registry, endpointID portainer.EndpointID, namespace string) (in bool) {
func isRegistryAssignedToNamespace(registry portainer.Registry, endpointID portainer.EndpointID, namespace string) bool {
for _, ns := range registry.RegistryAccesses[endpointID].Namespaces {
if ns == namespace {
return true
}
}
return
return false
}
func RefreshEcrSecret(cli portainer.KubeClient, endpoint *portainer.Endpoint, dataStore dataservices.DataStore, namespace string) (err error) {
func RefreshEcrSecret(cli portainer.KubeClient, endpoint *portainer.Endpoint, dataStore dataservices.DataStore, namespace string) error {
registries, err := dataStore.Registry().ReadAll()
if err != nil {
return
return err
}
for _, registry := range registries {
@ -30,21 +30,18 @@ func RefreshEcrSecret(cli portainer.KubeClient, endpoint *portainer.Endpoint, da
continue
}
err = EnsureRegTokenValid(dataStore, &registry)
if err != nil {
return
if err := EnsureRegTokenValid(dataStore, &registry); err != nil {
return err
}
err = cli.DeleteRegistrySecret(registry.ID, namespace)
if err != nil {
return
if err := cli.DeleteRegistrySecret(registry.ID, namespace); err != nil {
return err
}
err = cli.CreateRegistrySecret(&registry, namespace)
if err != nil {
return
if err := cli.CreateRegistrySecret(&registry, namespace); err != nil {
return err
}
}
return
return nil
}

View file

@ -14,6 +14,7 @@ func (s Set[T]) Add(key T) {
// Contains returns true if the set contains the key.
func (s Set[T]) Contains(key T) bool {
_, ok := s[key]
return ok
}
@ -47,18 +48,17 @@ func (s Set[T]) Keys() []T {
// Clear removes all keys from the set.
func (s Set[T]) Copy() Set[T] {
copy := make(Set[T])
c := make(Set[T])
for key := range s {
copy.Add(key)
c.Add(key)
}
return copy
return c
}
// Difference returns a new set containing the keys that are in the first set but not in the second set.
func (set Set[T]) Difference(second Set[T]) Set[T] {
difference := set.Copy()
for key := range second {
@ -106,5 +106,6 @@ func ToSet[T SetKey](keys []T) Set[T] {
for _, key := range keys {
set.Add(key)
}
return set
}

View file

@ -15,7 +15,6 @@ type filterTestCase[T any] struct {
}
func TestFilter(t *testing.T) {
intTestCases := []filterTestCase[int]{
{
name: "Filter even numbers",
@ -59,7 +58,6 @@ func TestFilter(t *testing.T) {
}
runTestCases(t, stringTestCases)
}
func runTestCases[T any](t *testing.T, testCases []filterTestCase[T]) {
@ -85,9 +83,7 @@ func TestMap(t *testing.T) {
name: "Map integers to strings",
input: []int{1, 2, 3, 4, 5},
expected: []string{"1", "2", "3", "4", "5"},
mapper: func(n int) string {
return strconv.Itoa(n)
},
mapper: strconv.Itoa,
},
}

View file

@ -57,7 +57,7 @@ func NewService(
// NewBackgroundSnapshotter queues snapshots of existing edge environments that
// do not have one already
func NewBackgroundSnapshotter(dataStore dataservices.DataStore, tunnelService portainer.ReverseTunnelService) {
err := dataStore.ViewTx(func(tx dataservices.DataStoreTx) error {
if err := dataStore.ViewTx(func(tx dataservices.DataStoreTx) error {
endpoints, err := tx.Endpoint().Endpoints()
if err != nil {
return err
@ -76,9 +76,9 @@ func NewBackgroundSnapshotter(dataStore dataservices.DataStore, tunnelService po
}
return nil
})
if err != nil {
}); err != nil {
log.Error().Err(err).Msg("background snapshotter failure")
return
}
}
@ -138,6 +138,7 @@ func (service *Service) SnapshotEndpoint(endpoint *portainer.Endpoint) error {
if endpoint.Type == portainer.AgentOnDockerEnvironment || endpoint.Type == portainer.AgentOnKubernetesEnvironment {
var err error
var tlsConfig *tls.Config
if endpoint.TLSConfig.TLS {
tlsConfig, err = crypto.CreateTLSConfigurationFromDisk(endpoint.TLSConfig.TLSCACertPath, endpoint.TLSConfig.TLSCertPath, endpoint.TLSConfig.TLSKeyPath, endpoint.TLSConfig.TLSSkipVerify)
if err != nil {
@ -243,6 +244,7 @@ func (service *Service) startSnapshotLoop() {
case <-service.shutdownCtx.Done():
log.Debug().Msg("shutting down snapshotting")
ticker.Stop()
return
case interval := <-service.snapshotIntervalCh:
ticker.Reset(interval)
@ -265,6 +267,7 @@ func (service *Service) snapshotEndpoints() error {
service.dataStore.UpdateTx(func(tx dataservices.DataStoreTx) error {
updateEndpointStatus(tx, &endpoint, snapshotError, service.pendingActionsService)
return nil
})
}
@ -284,6 +287,7 @@ func updateEndpointStatus(tx dataservices.DataStoreTx, endpoint *portainer.Endpo
}
latestEndpointReference.Status = portainer.EndpointStatusUp
if snapshotError != nil {
log.Debug().
Str("endpoint", endpoint.Name).
@ -295,8 +299,7 @@ func updateEndpointStatus(tx dataservices.DataStoreTx, endpoint *portainer.Endpo
latestEndpointReference.Agent.Version = endpoint.Agent.Version
err = tx.Endpoint().UpdateEndpoint(latestEndpointReference.ID, latestEndpointReference)
if err != nil {
if err := tx.Endpoint().UpdateEndpoint(latestEndpointReference.ID, latestEndpointReference); err != nil {
log.Debug().
Str("endpoint", endpoint.Name).
Str("URL", endpoint.URL).Err(err).
@ -323,5 +326,6 @@ func FetchDockerID(snapshot portainer.DockerSnapshot) (string, error) {
}
clusterInfo := swarmInfo.Cluster
return clusterInfo.ID, nil
}

View file

@ -1,7 +1,6 @@
package url
import (
"fmt"
"net/url"
"strings"
)
@ -16,7 +15,7 @@ func ParseURL(endpointURL string) (*url.URL, error) {
!strings.HasPrefix(endpointURL, "//") &&
!strings.HasPrefix(endpointURL, `unix:`) &&
!strings.HasPrefix(endpointURL, `npipe:`) {
endpointURL = fmt.Sprintf("//%s", endpointURL)
endpointURL = "//" + endpointURL
}
return url.Parse(endpointURL)