package convert // import "github.com/docker/docker/daemon/cluster/convert" import ( swarmtypes "github.com/docker/docker/api/types/swarm" types "github.com/docker/docker/api/types/swarm" gogotypes "github.com/gogo/protobuf/types" swarmapi "github.com/moby/swarmkit/v2/api" ) // SecretFromGRPC converts a grpc Secret to a Secret. func SecretFromGRPC(s *swarmapi.Secret) swarmtypes.Secret { secret := swarmtypes.Secret{ ID: s.ID, Spec: swarmtypes.SecretSpec{ Annotations: annotationsFromGRPC(s.Spec.Annotations), Data: s.Spec.Data, Driver: driverFromGRPC(s.Spec.Driver), }, } secret.Version.Index = s.Meta.Version.Index // Meta secret.CreatedAt, _ = gogotypes.TimestampFromProto(s.Meta.CreatedAt) secret.UpdatedAt, _ = gogotypes.TimestampFromProto(s.Meta.UpdatedAt) if s.Spec.Templating != nil { secret.Spec.Templating = &types.Driver{ Name: s.Spec.Templating.Name, Options: s.Spec.Templating.Options, } } return secret } // SecretSpecToGRPC converts Secret to a grpc Secret. func SecretSpecToGRPC(s swarmtypes.SecretSpec) swarmapi.SecretSpec { spec := swarmapi.SecretSpec{ Annotations: swarmapi.Annotations{ Name: s.Name, Labels: s.Labels, }, Data: s.Data, Driver: driverToGRPC(s.Driver), } if s.Templating != nil { spec.Templating = &swarmapi.Driver{ Name: s.Templating.Name, Options: s.Templating.Options, } } return spec } // SecretReferencesFromGRPC converts a slice of grpc SecretReference to SecretReference func SecretReferencesFromGRPC(s []*swarmapi.SecretReference) []*swarmtypes.SecretReference { refs := []*swarmtypes.SecretReference{} for _, r := range s { ref := &swarmtypes.SecretReference{ SecretID: r.SecretID, SecretName: r.SecretName, } if t, ok := r.Target.(*swarmapi.SecretReference_File); ok { ref.File = &swarmtypes.SecretReferenceFileTarget{ Name: t.File.Name, UID: t.File.UID, GID: t.File.GID, Mode: t.File.Mode, } } refs = append(refs, ref) } return refs }