mirror of
https://github.com/gravitational/teleport.git
synced 2026-09-19 01:58:44 +08:00
Fix gRPC -> Teleport types message conversion (#56124)
This commit is contained in:
@@ -37,13 +37,13 @@ func FromMemberProto(msg *accesslistv1.Member, opts ...MemberOption) (*accesslis
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
|
||||
member, err := accesslist.NewAccessListMember(headerv1.FromMetadataProto(msg.Header.Metadata), accesslist.AccessListMemberSpec{
|
||||
AccessList: msg.Spec.AccessList,
|
||||
Name: msg.Spec.Name,
|
||||
Joined: msg.Spec.Joined.AsTime(),
|
||||
Expires: msg.Spec.Expires.AsTime(),
|
||||
Reason: msg.Spec.Reason,
|
||||
AddedBy: msg.Spec.AddedBy,
|
||||
member, err := accesslist.NewAccessListMember(headerv1.FromMetadataProto(msg.GetHeader().GetMetadata()), accesslist.AccessListMemberSpec{
|
||||
AccessList: msg.GetSpec().GetAccessList(),
|
||||
Name: msg.GetSpec().GetName(),
|
||||
Joined: msg.GetSpec().GetJoined().AsTime(),
|
||||
Expires: msg.GetSpec().GetExpires().AsTime(),
|
||||
Reason: msg.GetSpec().GetReason(),
|
||||
AddedBy: msg.GetSpec().GetAddedBy(),
|
||||
// Set it to empty as default.
|
||||
// Must provide as options to set it with the provided value.
|
||||
IneligibleStatus: "",
|
||||
|
||||
@@ -34,35 +34,35 @@ func FromReviewProto(msg *accesslistv1.Review) (*accesslist.Review, error) {
|
||||
return nil, trace.BadParameter("access list review message is nil")
|
||||
}
|
||||
|
||||
if msg.Spec == nil {
|
||||
if msg.GetSpec() == nil {
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
|
||||
// Manually check for the presence of the time so that we can be sure that the review date is
|
||||
// zero if the proto message's review date is nil.
|
||||
var reviewDate time.Time
|
||||
if msg.Spec.ReviewDate != nil {
|
||||
reviewDate = msg.Spec.ReviewDate.AsTime()
|
||||
if msg.GetSpec().GetReviewDate() != nil {
|
||||
reviewDate = msg.GetSpec().GetReviewDate().AsTime()
|
||||
}
|
||||
|
||||
var reviewChanges accesslist.ReviewChanges
|
||||
if msg.Spec.Changes != nil {
|
||||
if msg.Spec.Changes.MembershipRequirementsChanged != nil {
|
||||
if msg.GetSpec().GetChanges() != nil {
|
||||
if msg.GetSpec().GetChanges().GetMembershipRequirementsChanged() != nil {
|
||||
reviewChanges.MembershipRequirementsChanged = &accesslist.Requires{
|
||||
Roles: msg.Spec.Changes.MembershipRequirementsChanged.Roles,
|
||||
Traits: traitv1.FromProto(msg.Spec.Changes.MembershipRequirementsChanged.Traits),
|
||||
Roles: msg.GetSpec().GetChanges().GetMembershipRequirementsChanged().GetRoles(),
|
||||
Traits: traitv1.FromProto(msg.GetSpec().GetChanges().GetMembershipRequirementsChanged().GetTraits()),
|
||||
}
|
||||
}
|
||||
reviewChanges.RemovedMembers = msg.Spec.Changes.RemovedMembers
|
||||
reviewChanges.ReviewFrequencyChanged = accesslist.ReviewFrequency(msg.Spec.Changes.ReviewFrequencyChanged)
|
||||
reviewChanges.ReviewDayOfMonthChanged = accesslist.ReviewDayOfMonth(msg.Spec.Changes.ReviewDayOfMonthChanged)
|
||||
reviewChanges.RemovedMembers = msg.GetSpec().GetChanges().GetRemovedMembers()
|
||||
reviewChanges.ReviewFrequencyChanged = accesslist.ReviewFrequency(msg.GetSpec().GetChanges().GetReviewFrequencyChanged())
|
||||
reviewChanges.ReviewDayOfMonthChanged = accesslist.ReviewDayOfMonth(msg.GetSpec().GetChanges().GetReviewDayOfMonthChanged())
|
||||
}
|
||||
|
||||
member, err := accesslist.NewReview(headerv1.FromMetadataProto(msg.Header.Metadata), accesslist.ReviewSpec{
|
||||
AccessList: msg.Spec.AccessList,
|
||||
Reviewers: msg.Spec.Reviewers,
|
||||
member, err := accesslist.NewReview(headerv1.FromMetadataProto(msg.GetHeader().GetMetadata()), accesslist.ReviewSpec{
|
||||
AccessList: msg.GetSpec().GetAccessList(),
|
||||
Reviewers: msg.GetSpec().GetReviewers(),
|
||||
ReviewDate: reviewDate,
|
||||
Notes: msg.Spec.Notes,
|
||||
Notes: msg.GetSpec().GetNotes(),
|
||||
Changes: reviewChanges,
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -34,48 +34,48 @@ func FromProto(msg *discoveryconfigv1.DiscoveryConfig) (*discoveryconfig.Discove
|
||||
return nil, trace.BadParameter("discovery config message is nil")
|
||||
}
|
||||
|
||||
if msg.Spec == nil {
|
||||
if msg.GetSpec() == nil {
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
if msg.Spec.DiscoveryGroup == "" {
|
||||
if msg.GetSpec().GetDiscoveryGroup() == "" {
|
||||
return nil, trace.BadParameter("discovery group is missing")
|
||||
}
|
||||
|
||||
awsMatchers := make([]types.AWSMatcher, 0, len(msg.Spec.Aws))
|
||||
for _, m := range msg.Spec.Aws {
|
||||
awsMatchers := make([]types.AWSMatcher, 0, len(msg.GetSpec().GetAws()))
|
||||
for _, m := range msg.GetSpec().GetAws() {
|
||||
awsMatchers = append(awsMatchers, *m)
|
||||
}
|
||||
|
||||
azureMatchers := make([]types.AzureMatcher, 0, len(msg.Spec.Azure))
|
||||
for _, m := range msg.Spec.Azure {
|
||||
azureMatchers := make([]types.AzureMatcher, 0, len(msg.GetSpec().GetAzure()))
|
||||
for _, m := range msg.GetSpec().GetAzure() {
|
||||
azureMatchers = append(azureMatchers, *m)
|
||||
}
|
||||
|
||||
gcpMatchers := make([]types.GCPMatcher, 0, len(msg.Spec.Gcp))
|
||||
for _, m := range msg.Spec.Gcp {
|
||||
gcpMatchers := make([]types.GCPMatcher, 0, len(msg.GetSpec().GetGcp()))
|
||||
for _, m := range msg.GetSpec().GetGcp() {
|
||||
gcpMatchers = append(gcpMatchers, *m)
|
||||
}
|
||||
|
||||
kubeMatchers := make([]types.KubernetesMatcher, 0, len(msg.Spec.Kube))
|
||||
for _, m := range msg.Spec.Kube {
|
||||
kubeMatchers := make([]types.KubernetesMatcher, 0, len(msg.GetSpec().GetKube()))
|
||||
for _, m := range msg.GetSpec().GetKube() {
|
||||
kubeMatchers = append(kubeMatchers, *m)
|
||||
}
|
||||
|
||||
discoveryConfig, err := discoveryconfig.NewDiscoveryConfig(
|
||||
headerv1.FromMetadataProto(msg.Header.Metadata),
|
||||
headerv1.FromMetadataProto(msg.GetHeader().GetMetadata()),
|
||||
discoveryconfig.Spec{
|
||||
DiscoveryGroup: msg.Spec.DiscoveryGroup,
|
||||
DiscoveryGroup: msg.GetSpec().GetDiscoveryGroup(),
|
||||
AWS: awsMatchers,
|
||||
Azure: azureMatchers,
|
||||
GCP: gcpMatchers,
|
||||
Kube: kubeMatchers,
|
||||
AccessGraph: msg.Spec.AccessGraph,
|
||||
AccessGraph: msg.GetSpec().GetAccessGraph(),
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
}
|
||||
discoveryConfig.Status = StatusFromProto(msg.Status)
|
||||
discoveryConfig.Status = StatusFromProto(msg.GetStatus())
|
||||
return discoveryConfig, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -31,20 +31,20 @@ func FromProtoDraft(in *externalauditstoragev1.ExternalAuditStorage) (*externala
|
||||
return nil, trace.BadParameter("External Audit Storage message is nil")
|
||||
}
|
||||
|
||||
if in.Spec == nil {
|
||||
if in.GetSpec() == nil {
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
|
||||
externalAuditStorage, err := externalauditstorage.NewDraftExternalAuditStorage(headerv1.FromMetadataProto(in.Header.Metadata), externalauditstorage.ExternalAuditStorageSpec{
|
||||
IntegrationName: in.Spec.IntegrationName,
|
||||
PolicyName: in.Spec.PolicyName,
|
||||
Region: in.Spec.Region,
|
||||
SessionRecordingsURI: in.Spec.SessionRecordingsUri,
|
||||
AthenaWorkgroup: in.Spec.AthenaWorkgroup,
|
||||
GlueDatabase: in.Spec.GlueDatabase,
|
||||
GlueTable: in.Spec.GlueTable,
|
||||
AuditEventsLongTermURI: in.Spec.AuditEventsLongTermUri,
|
||||
AthenaResultsURI: in.Spec.AthenaResultsUri,
|
||||
externalAuditStorage, err := externalauditstorage.NewDraftExternalAuditStorage(headerv1.FromMetadataProto(in.GetHeader().GetMetadata()), externalauditstorage.ExternalAuditStorageSpec{
|
||||
IntegrationName: in.GetSpec().GetIntegrationName(),
|
||||
PolicyName: in.GetSpec().GetPolicyName(),
|
||||
Region: in.GetSpec().GetRegion(),
|
||||
SessionRecordingsURI: in.GetSpec().GetSessionRecordingsUri(),
|
||||
AthenaWorkgroup: in.GetSpec().GetAthenaWorkgroup(),
|
||||
GlueDatabase: in.GetSpec().GetGlueDatabase(),
|
||||
GlueTable: in.GetSpec().GetGlueTable(),
|
||||
AuditEventsLongTermURI: in.GetSpec().GetAuditEventsLongTermUri(),
|
||||
AthenaResultsURI: in.GetSpec().GetAthenaResultsUri(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
@@ -59,20 +59,20 @@ func FromProtoCluster(in *externalauditstoragev1.ExternalAuditStorage) (*externa
|
||||
return nil, trace.BadParameter("External Audit Storage message is nil")
|
||||
}
|
||||
|
||||
if in.Spec == nil {
|
||||
if in.GetSpec() == nil {
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
|
||||
externalAuditStorage, err := externalauditstorage.NewClusterExternalAuditStorage(headerv1.FromMetadataProto(in.Header.Metadata), externalauditstorage.ExternalAuditStorageSpec{
|
||||
IntegrationName: in.Spec.IntegrationName,
|
||||
PolicyName: in.Spec.PolicyName,
|
||||
Region: in.Spec.Region,
|
||||
SessionRecordingsURI: in.Spec.SessionRecordingsUri,
|
||||
AthenaWorkgroup: in.Spec.AthenaWorkgroup,
|
||||
GlueDatabase: in.Spec.GlueDatabase,
|
||||
GlueTable: in.Spec.GlueTable,
|
||||
AuditEventsLongTermURI: in.Spec.AuditEventsLongTermUri,
|
||||
AthenaResultsURI: in.Spec.AthenaResultsUri,
|
||||
externalAuditStorage, err := externalauditstorage.NewClusterExternalAuditStorage(headerv1.FromMetadataProto(in.GetHeader().GetMetadata()), externalauditstorage.ExternalAuditStorageSpec{
|
||||
IntegrationName: in.GetSpec().GetIntegrationName(),
|
||||
PolicyName: in.GetSpec().GetPolicyName(),
|
||||
Region: in.GetSpec().GetRegion(),
|
||||
SessionRecordingsURI: in.GetSpec().GetSessionRecordingsUri(),
|
||||
AthenaWorkgroup: in.GetSpec().GetAthenaWorkgroup(),
|
||||
GlueDatabase: in.GetSpec().GetGlueDatabase(),
|
||||
GlueTable: in.GetSpec().GetGlueTable(),
|
||||
AuditEventsLongTermURI: in.GetSpec().GetAuditEventsLongTermUri(),
|
||||
AthenaResultsURI: in.GetSpec().GetAthenaResultsUri(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
|
||||
@@ -48,18 +48,21 @@ func ToResourceHeaderProto(resourceHeader header.ResourceHeader) *headerv1.Resou
|
||||
|
||||
// FromMetadataProto converts v1 metadata into an internal metadata object.
|
||||
func FromMetadataProto(msg *headerv1.Metadata) header.Metadata {
|
||||
if msg == nil {
|
||||
return header.Metadata{}
|
||||
}
|
||||
// We map the zero protobuf time (nil) to the zero go time.
|
||||
var expires time.Time
|
||||
if msg.Expires != nil {
|
||||
expires = msg.Expires.AsTime()
|
||||
if msg.GetExpires() != nil {
|
||||
expires = msg.GetExpires().AsTime()
|
||||
}
|
||||
|
||||
return header.Metadata{
|
||||
Name: msg.Name,
|
||||
Description: msg.Description,
|
||||
Labels: msg.Labels,
|
||||
Name: msg.GetName(),
|
||||
Description: msg.GetDescription(),
|
||||
Labels: msg.GetLabels(),
|
||||
Expires: expires,
|
||||
Revision: msg.Revision,
|
||||
Revision: msg.GetRevision(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ func FromProtoAuditQuery(in *secreportsv1.AuditQuery) (*secreports.AuditQuery, e
|
||||
Query: in.GetSpec().GetQuery(),
|
||||
Description: in.GetSpec().GetDescription(),
|
||||
}
|
||||
out, err := secreports.NewAuditQuery(headerv1.FromMetadataProto(in.Header.Metadata), spec)
|
||||
out, err := secreports.NewAuditQuery(headerv1.FromMetadataProto(in.GetHeader().GetMetadata()), spec)
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
}
|
||||
@@ -76,7 +76,7 @@ func FromProtoReport(in *secreportsv1.Report) (*secreports.Report, error) {
|
||||
Title: in.GetSpec().GetTitle(),
|
||||
Version: in.GetSpec().GetVersion(),
|
||||
}
|
||||
out, err := secreports.NewReport(headerv1.FromMetadataProto(in.Header.Metadata), spec)
|
||||
out, err := secreports.NewReport(headerv1.FromMetadataProto(in.GetHeader().GetMetadata()), spec)
|
||||
if err != nil {
|
||||
return nil, trace.Wrap(err)
|
||||
}
|
||||
|
||||
@@ -32,13 +32,13 @@ func FromProto(msg *userloginstatev1.UserLoginState) (*userloginstate.UserLoginS
|
||||
return nil, trace.BadParameter("spec is missing")
|
||||
}
|
||||
|
||||
uls, err := userloginstate.New(headerv1.FromMetadataProto(msg.Header.Metadata), userloginstate.Spec{
|
||||
OriginalRoles: msg.Spec.GetOriginalRoles(),
|
||||
OriginalTraits: traitv1.FromProto(msg.Spec.OriginalTraits),
|
||||
Roles: msg.Spec.Roles,
|
||||
Traits: traitv1.FromProto(msg.Spec.Traits),
|
||||
UserType: types.UserType(msg.Spec.UserType),
|
||||
GitHubIdentity: externalIdentityFromProto(msg.Spec.GitHubIdentity),
|
||||
uls, err := userloginstate.New(headerv1.FromMetadataProto(msg.GetHeader().GetMetadata()), userloginstate.Spec{
|
||||
OriginalRoles: msg.GetSpec().GetOriginalRoles(),
|
||||
OriginalTraits: traitv1.FromProto(msg.GetSpec().GetOriginalTraits()),
|
||||
Roles: msg.GetSpec().GetRoles(),
|
||||
Traits: traitv1.FromProto(msg.GetSpec().GetTraits()),
|
||||
UserType: types.UserType(msg.GetSpec().GetUserType()),
|
||||
GitHubIdentity: externalIdentityFromProto(msg.GetSpec().GetGitHubIdentity()),
|
||||
})
|
||||
|
||||
return uls, trace.Wrap(err)
|
||||
|
||||
@@ -100,7 +100,7 @@ func ProtoToResource(set *clusterconfigpb.AccessGraphSettings) (*AccessGraphSett
|
||||
ResourceHeader: types.ResourceHeader{
|
||||
Kind: set.Kind,
|
||||
Version: set.Version,
|
||||
Metadata: legacy.FromHeaderMetadata(headerv1.FromMetadataProto(set.Metadata)),
|
||||
Metadata: legacy.FromHeaderMetadata(headerv1.FromMetadataProto(set.GetMetadata())),
|
||||
},
|
||||
Spec: accessGraphSettingsSpec{
|
||||
SecretsScanConfig: conf,
|
||||
|
||||
Reference in New Issue
Block a user