From 6b9f668ea0b657526b35008f8efd9c8f0a46df9b Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Thu, 5 Apr 2018 17:02:13 -0400 Subject: [PATCH 1/4] api/v3/clairpb: document and regenerate protos --- api/v3/clairpb/clair.pb.go | 849 ++++++++++++++++-------------- api/v3/clairpb/clair.pb.gw.go | 96 ++-- api/v3/clairpb/clair.proto | 333 +++++++----- api/v3/clairpb/clair.swagger.json | 226 ++++---- api/v3/clairpb/convert.go | 10 +- 5 files changed, 855 insertions(+), 659 deletions(-) diff --git a/api/v3/clairpb/clair.pb.go b/api/v3/clairpb/clair.pb.go index 210c2d4c..7125402e 100644 --- a/api/v3/clairpb/clair.pb.go +++ b/api/v3/clairpb/clair.pb.go @@ -9,19 +9,16 @@ It is generated from these files: It has these top-level messages: Vulnerability - ClairStatus Feature - Ancestry Layer - Notification - IndexedAncestryName - PagedVulnerableAncestries - PostAncestryRequest - PostAncestryResponse + ClairStatus GetAncestryRequest GetAncestryResponse + PostAncestryRequest + PostAncestryResponse GetNotificationRequest GetNotificationResponse + PagedVulnerableAncestries MarkNotificationAsReadRequest */ package clairpb @@ -50,15 +47,23 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type Vulnerability struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The name of the vulnerability. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The name of the namespace in which the vulnerability was detected. NamespaceName string `protobuf:"bytes,2,opt,name=namespace_name,json=namespaceName" json:"namespace_name,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` - Link string `protobuf:"bytes,4,opt,name=link" json:"link,omitempty"` - Severity string `protobuf:"bytes,5,opt,name=severity" json:"severity,omitempty"` - Metadata string `protobuf:"bytes,6,opt,name=metadata" json:"metadata,omitempty"` - // fixed_by exists when vulnerability is under feature. + // A description of the vulnerability according to the source for the namespace. + Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"` + // A link to the vulnerability according to the source for the namespace. + Link string `protobuf:"bytes,4,opt,name=link" json:"link,omitempty"` + // How dangerous the vulnerability is. + Severity string `protobuf:"bytes,5,opt,name=severity" json:"severity,omitempty"` + // Namespace agnostic metadata about the vulnerability. + Metadata string `protobuf:"bytes,6,opt,name=metadata" json:"metadata,omitempty"` + // The feature that fixes this vulnerability. + // This field only exists when a vulnerability is a part of a Feature. FixedBy string `protobuf:"bytes,7,opt,name=fixed_by,json=fixedBy" json:"fixed_by,omitempty"` - // affected_versions exists when vulnerability is under notification. + // The Features that are affected by the vulnerability. + // This field only exists when a vulnerability is a part of a Notification. AffectedVersions []*Feature `protobuf:"bytes,8,rep,name=affected_versions,json=affectedVersions" json:"affected_versions,omitempty"` } @@ -123,54 +128,23 @@ func (m *Vulnerability) GetAffectedVersions() []*Feature { return nil } -type ClairStatus struct { - // listers and detectors are processors implemented in this Clair and used to - // scan ancestries - Listers []string `protobuf:"bytes,1,rep,name=listers" json:"listers,omitempty"` - Detectors []string `protobuf:"bytes,2,rep,name=detectors" json:"detectors,omitempty"` - LastUpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` -} - -func (m *ClairStatus) Reset() { *m = ClairStatus{} } -func (m *ClairStatus) String() string { return proto.CompactTextString(m) } -func (*ClairStatus) ProtoMessage() {} -func (*ClairStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *ClairStatus) GetListers() []string { - if m != nil { - return m.Listers - } - return nil -} - -func (m *ClairStatus) GetDetectors() []string { - if m != nil { - return m.Detectors - } - return nil -} - -func (m *ClairStatus) GetLastUpdateTime() *google_protobuf2.Timestamp { - if m != nil { - return m.LastUpdateTime - } - return nil -} - type Feature struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The name of the feature. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The name of the namespace in which the feature is detected. NamespaceName string `protobuf:"bytes,2,opt,name=namespace_name,json=namespaceName" json:"namespace_name,omitempty"` - Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` - // version_format is the format used by installer package manager to store - // package versions. - VersionFormat string `protobuf:"bytes,4,opt,name=version_format,json=versionFormat" json:"version_format,omitempty"` + // The specific version of this feature. + Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"` + // The format used to parse version numbers for the feature. + VersionFormat string `protobuf:"bytes,4,opt,name=version_format,json=versionFormat" json:"version_format,omitempty"` + // The list of vulnerabilities that affect the feature. Vulnerabilities []*Vulnerability `protobuf:"bytes,5,rep,name=vulnerabilities" json:"vulnerabilities,omitempty"` } func (m *Feature) Reset() { *m = Feature{} } func (m *Feature) String() string { return proto.CompactTextString(m) } func (*Feature) ProtoMessage() {} -func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } +func (*Feature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Feature) GetName() string { if m != nil { @@ -207,65 +181,15 @@ func (m *Feature) GetVulnerabilities() []*Vulnerability { return nil } -type Ancestry struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"` - Layers []*Layer `protobuf:"bytes,3,rep,name=layers" json:"layers,omitempty"` - // scanned_listers and scanned_detectors are used to scan this ancestry, it - // may be different from listers and detectors in ClairStatus since the - // ancestry could be scanned by previous version of Clair. - ScannedListers []string `protobuf:"bytes,4,rep,name=scanned_listers,json=scannedListers" json:"scanned_listers,omitempty"` - ScannedDetectors []string `protobuf:"bytes,5,rep,name=scanned_detectors,json=scannedDetectors" json:"scanned_detectors,omitempty"` -} - -func (m *Ancestry) Reset() { *m = Ancestry{} } -func (m *Ancestry) String() string { return proto.CompactTextString(m) } -func (*Ancestry) ProtoMessage() {} -func (*Ancestry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *Ancestry) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Ancestry) GetFeatures() []*Feature { - if m != nil { - return m.Features - } - return nil -} - -func (m *Ancestry) GetLayers() []*Layer { - if m != nil { - return m.Layers - } - return nil -} - -func (m *Ancestry) GetScannedListers() []string { - if m != nil { - return m.ScannedListers - } - return nil -} - -func (m *Ancestry) GetScannedDetectors() []string { - if m != nil { - return m.ScannedDetectors - } - return nil -} - type Layer struct { + // The sha256 tarsum for the layer. Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"` } func (m *Layer) Reset() { *m = Layer{} } func (m *Layer) String() string { return proto.CompactTextString(m) } func (*Layer) ProtoMessage() {} -func (*Layer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } +func (*Layer) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *Layer) GetHash() string { if m != nil { @@ -274,147 +198,170 @@ func (m *Layer) GetHash() string { return "" } -type Notification struct { - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Created string `protobuf:"bytes,2,opt,name=created" json:"created,omitempty"` - Notified string `protobuf:"bytes,3,opt,name=notified" json:"notified,omitempty"` - Deleted string `protobuf:"bytes,4,opt,name=deleted" json:"deleted,omitempty"` - Old *PagedVulnerableAncestries `protobuf:"bytes,5,opt,name=old" json:"old,omitempty"` - New *PagedVulnerableAncestries `protobuf:"bytes,6,opt,name=new" json:"new,omitempty"` +type ClairStatus struct { + // The configured list of feature listers used to scan an ancestry. + Listers []string `protobuf:"bytes,1,rep,name=listers" json:"listers,omitempty"` + // The configured list of namespace detectors used to scan an ancestry. + Detectors []string `protobuf:"bytes,2,rep,name=detectors" json:"detectors,omitempty"` + // The time at which the updater last ran. + LastUpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` } -func (m *Notification) Reset() { *m = Notification{} } -func (m *Notification) String() string { return proto.CompactTextString(m) } -func (*Notification) ProtoMessage() {} -func (*Notification) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } +func (m *ClairStatus) Reset() { *m = ClairStatus{} } +func (m *ClairStatus) String() string { return proto.CompactTextString(m) } +func (*ClairStatus) ProtoMessage() {} +func (*ClairStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } -func (m *Notification) GetName() string { +func (m *ClairStatus) GetListers() []string { + if m != nil { + return m.Listers + } + return nil +} + +func (m *ClairStatus) GetDetectors() []string { + if m != nil { + return m.Detectors + } + return nil +} + +func (m *ClairStatus) GetLastUpdateTime() *google_protobuf2.Timestamp { + if m != nil { + return m.LastUpdateTime + } + return nil +} + +type GetAncestryRequest struct { + // The name of the desired ancestry. + AncestryName string `protobuf:"bytes,1,opt,name=ancestry_name,json=ancestryName" json:"ancestry_name,omitempty"` + // Whether to include vulnerabilities or not in the response. + WithVulnerabilities bool `protobuf:"varint,2,opt,name=with_vulnerabilities,json=withVulnerabilities" json:"with_vulnerabilities,omitempty"` + // Whether to include features or not in the response. + WithFeatures bool `protobuf:"varint,3,opt,name=with_features,json=withFeatures" json:"with_features,omitempty"` +} + +func (m *GetAncestryRequest) Reset() { *m = GetAncestryRequest{} } +func (m *GetAncestryRequest) String() string { return proto.CompactTextString(m) } +func (*GetAncestryRequest) ProtoMessage() {} +func (*GetAncestryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } + +func (m *GetAncestryRequest) GetAncestryName() string { + if m != nil { + return m.AncestryName + } + return "" +} + +func (m *GetAncestryRequest) GetWithVulnerabilities() bool { + if m != nil { + return m.WithVulnerabilities + } + return false +} + +func (m *GetAncestryRequest) GetWithFeatures() bool { + if m != nil { + return m.WithFeatures + } + return false +} + +type GetAncestryResponse struct { + // The ancestry requested. + Ancestry *GetAncestryResponse_Ancestry `protobuf:"bytes,1,opt,name=ancestry" json:"ancestry,omitempty"` + // The status of Clair at the time of the request. + Status *ClairStatus `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` +} + +func (m *GetAncestryResponse) Reset() { *m = GetAncestryResponse{} } +func (m *GetAncestryResponse) String() string { return proto.CompactTextString(m) } +func (*GetAncestryResponse) ProtoMessage() {} +func (*GetAncestryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } + +func (m *GetAncestryResponse) GetAncestry() *GetAncestryResponse_Ancestry { + if m != nil { + return m.Ancestry + } + return nil +} + +func (m *GetAncestryResponse) GetStatus() *ClairStatus { + if m != nil { + return m.Status + } + return nil +} + +type GetAncestryResponse_Ancestry struct { + // The name of the desired ancestry. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The list of features present in the ancestry. + // This will only be provided if requested. + Features []*Feature `protobuf:"bytes,2,rep,name=features" json:"features,omitempty"` + // The layers present in the ancestry. + Layers []*Layer `protobuf:"bytes,3,rep,name=layers" json:"layers,omitempty"` + // The configured list of feature listers used to scan this ancestry. + ScannedListers []string `protobuf:"bytes,4,rep,name=scanned_listers,json=scannedListers" json:"scanned_listers,omitempty"` + // The configured list of namespace detectors used to scan an ancestry. + ScannedDetectors []string `protobuf:"bytes,5,rep,name=scanned_detectors,json=scannedDetectors" json:"scanned_detectors,omitempty"` +} + +func (m *GetAncestryResponse_Ancestry) Reset() { *m = GetAncestryResponse_Ancestry{} } +func (m *GetAncestryResponse_Ancestry) String() string { return proto.CompactTextString(m) } +func (*GetAncestryResponse_Ancestry) ProtoMessage() {} +func (*GetAncestryResponse_Ancestry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} } + +func (m *GetAncestryResponse_Ancestry) GetName() string { if m != nil { return m.Name } return "" } -func (m *Notification) GetCreated() string { +func (m *GetAncestryResponse_Ancestry) GetFeatures() []*Feature { if m != nil { - return m.Created - } - return "" -} - -func (m *Notification) GetNotified() string { - if m != nil { - return m.Notified - } - return "" -} - -func (m *Notification) GetDeleted() string { - if m != nil { - return m.Deleted - } - return "" -} - -func (m *Notification) GetOld() *PagedVulnerableAncestries { - if m != nil { - return m.Old + return m.Features } return nil } -func (m *Notification) GetNew() *PagedVulnerableAncestries { +func (m *GetAncestryResponse_Ancestry) GetLayers() []*Layer { if m != nil { - return m.New + return m.Layers } return nil } -type IndexedAncestryName struct { - // index is unique to name in all streams simultaneously streamed, increasing - // and larger than all indexes in previous page in same stream. - Index int32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` -} - -func (m *IndexedAncestryName) Reset() { *m = IndexedAncestryName{} } -func (m *IndexedAncestryName) String() string { return proto.CompactTextString(m) } -func (*IndexedAncestryName) ProtoMessage() {} -func (*IndexedAncestryName) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *IndexedAncestryName) GetIndex() int32 { +func (m *GetAncestryResponse_Ancestry) GetScannedListers() []string { if m != nil { - return m.Index - } - return 0 -} - -func (m *IndexedAncestryName) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -type PagedVulnerableAncestries struct { - CurrentPage string `protobuf:"bytes,1,opt,name=current_page,json=currentPage" json:"current_page,omitempty"` - // if next_page is empty, it signals the end of all pages. - NextPage string `protobuf:"bytes,2,opt,name=next_page,json=nextPage" json:"next_page,omitempty"` - Limit int32 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"` - Vulnerability *Vulnerability `protobuf:"bytes,4,opt,name=vulnerability" json:"vulnerability,omitempty"` - Ancestries []*IndexedAncestryName `protobuf:"bytes,5,rep,name=ancestries" json:"ancestries,omitempty"` -} - -func (m *PagedVulnerableAncestries) Reset() { *m = PagedVulnerableAncestries{} } -func (m *PagedVulnerableAncestries) String() string { return proto.CompactTextString(m) } -func (*PagedVulnerableAncestries) ProtoMessage() {} -func (*PagedVulnerableAncestries) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *PagedVulnerableAncestries) GetCurrentPage() string { - if m != nil { - return m.CurrentPage - } - return "" -} - -func (m *PagedVulnerableAncestries) GetNextPage() string { - if m != nil { - return m.NextPage - } - return "" -} - -func (m *PagedVulnerableAncestries) GetLimit() int32 { - if m != nil { - return m.Limit - } - return 0 -} - -func (m *PagedVulnerableAncestries) GetVulnerability() *Vulnerability { - if m != nil { - return m.Vulnerability + return m.ScannedListers } return nil } -func (m *PagedVulnerableAncestries) GetAncestries() []*IndexedAncestryName { +func (m *GetAncestryResponse_Ancestry) GetScannedDetectors() []string { if m != nil { - return m.Ancestries + return m.ScannedDetectors } return nil } type PostAncestryRequest struct { - AncestryName string `protobuf:"bytes,1,opt,name=ancestry_name,json=ancestryName" json:"ancestry_name,omitempty"` - Format string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` - Layers []*PostAncestryRequest_PostLayer `protobuf:"bytes,3,rep,name=layers" json:"layers,omitempty"` + // The name of the ancestry being scanned. + // If scanning OCI images, this should be the hash of the manifest. + AncestryName string `protobuf:"bytes,1,opt,name=ancestry_name,json=ancestryName" json:"ancestry_name,omitempty"` + // The format of the image being uploaded. + Format string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` + // The layers to be scanned for this particular ancestry. + Layers []*PostAncestryRequest_PostLayer `protobuf:"bytes,3,rep,name=layers" json:"layers,omitempty"` } func (m *PostAncestryRequest) Reset() { *m = PostAncestryRequest{} } func (m *PostAncestryRequest) String() string { return proto.CompactTextString(m) } func (*PostAncestryRequest) ProtoMessage() {} -func (*PostAncestryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } +func (*PostAncestryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *PostAncestryRequest) GetAncestryName() string { if m != nil { @@ -438,8 +385,11 @@ func (m *PostAncestryRequest) GetLayers() []*PostAncestryRequest_PostLayer { } type PostAncestryRequest_PostLayer struct { - Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` + // The hash of the layer. + Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"` + // The location of the layer (URL or filepath). + Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"` + // Any HTTP Headers that need to be used if requesting a layer over HTTP(S). Headers map[string]string `protobuf:"bytes,3,rep,name=headers" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` } @@ -447,7 +397,7 @@ func (m *PostAncestryRequest_PostLayer) Reset() { *m = PostAncestryReque func (m *PostAncestryRequest_PostLayer) String() string { return proto.CompactTextString(m) } func (*PostAncestryRequest_PostLayer) ProtoMessage() {} func (*PostAncestryRequest_PostLayer) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{8, 0} + return fileDescriptor0, []int{6, 0} } func (m *PostAncestryRequest_PostLayer) GetHash() string { @@ -472,13 +422,14 @@ func (m *PostAncestryRequest_PostLayer) GetHeaders() map[string]string { } type PostAncestryResponse struct { + // The status of Clair at the time of the request. Status *ClairStatus `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` } func (m *PostAncestryResponse) Reset() { *m = PostAncestryResponse{} } func (m *PostAncestryResponse) String() string { return proto.CompactTextString(m) } func (*PostAncestryResponse) ProtoMessage() {} -func (*PostAncestryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } +func (*PostAncestryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (m *PostAncestryResponse) GetStatus() *ClairStatus { if m != nil { @@ -487,74 +438,23 @@ func (m *PostAncestryResponse) GetStatus() *ClairStatus { return nil } -type GetAncestryRequest struct { - AncestryName string `protobuf:"bytes,1,opt,name=ancestry_name,json=ancestryName" json:"ancestry_name,omitempty"` - WithVulnerabilities bool `protobuf:"varint,2,opt,name=with_vulnerabilities,json=withVulnerabilities" json:"with_vulnerabilities,omitempty"` - WithFeatures bool `protobuf:"varint,3,opt,name=with_features,json=withFeatures" json:"with_features,omitempty"` -} - -func (m *GetAncestryRequest) Reset() { *m = GetAncestryRequest{} } -func (m *GetAncestryRequest) String() string { return proto.CompactTextString(m) } -func (*GetAncestryRequest) ProtoMessage() {} -func (*GetAncestryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } - -func (m *GetAncestryRequest) GetAncestryName() string { - if m != nil { - return m.AncestryName - } - return "" -} - -func (m *GetAncestryRequest) GetWithVulnerabilities() bool { - if m != nil { - return m.WithVulnerabilities - } - return false -} - -func (m *GetAncestryRequest) GetWithFeatures() bool { - if m != nil { - return m.WithFeatures - } - return false -} - -type GetAncestryResponse struct { - Ancestry *Ancestry `protobuf:"bytes,1,opt,name=ancestry" json:"ancestry,omitempty"` - Status *ClairStatus `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` -} - -func (m *GetAncestryResponse) Reset() { *m = GetAncestryResponse{} } -func (m *GetAncestryResponse) String() string { return proto.CompactTextString(m) } -func (*GetAncestryResponse) ProtoMessage() {} -func (*GetAncestryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } - -func (m *GetAncestryResponse) GetAncestry() *Ancestry { - if m != nil { - return m.Ancestry - } - return nil -} - -func (m *GetAncestryResponse) GetStatus() *ClairStatus { - if m != nil { - return m.Status - } - return nil -} - type GetNotificationRequest struct { - // if the vulnerability_page is empty, it implies the first page. + // The current page of previous vulnerabilities for the ancestry. + // This will be empty when it is the first page. OldVulnerabilityPage string `protobuf:"bytes,1,opt,name=old_vulnerability_page,json=oldVulnerabilityPage" json:"old_vulnerability_page,omitempty"` + // The current page of vulnerabilities for the ancestry. + // This will be empty when it is the first page. NewVulnerabilityPage string `protobuf:"bytes,2,opt,name=new_vulnerability_page,json=newVulnerabilityPage" json:"new_vulnerability_page,omitempty"` - Limit int32 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` + // The requested maximum number of results per page. + Limit int32 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"` + // The name of the notification being requested. + Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` } func (m *GetNotificationRequest) Reset() { *m = GetNotificationRequest{} } func (m *GetNotificationRequest) String() string { return proto.CompactTextString(m) } func (*GetNotificationRequest) ProtoMessage() {} -func (*GetNotificationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } +func (*GetNotificationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *GetNotificationRequest) GetOldVulnerabilityPage() string { if m != nil { @@ -585,29 +485,182 @@ func (m *GetNotificationRequest) GetName() string { } type GetNotificationResponse struct { - Notification *Notification `protobuf:"bytes,1,opt,name=notification" json:"notification,omitempty"` + // The notification as requested. + Notification *GetNotificationResponse_Notification `protobuf:"bytes,1,opt,name=notification" json:"notification,omitempty"` } func (m *GetNotificationResponse) Reset() { *m = GetNotificationResponse{} } func (m *GetNotificationResponse) String() string { return proto.CompactTextString(m) } func (*GetNotificationResponse) ProtoMessage() {} -func (*GetNotificationResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } +func (*GetNotificationResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } -func (m *GetNotificationResponse) GetNotification() *Notification { +func (m *GetNotificationResponse) GetNotification() *GetNotificationResponse_Notification { if m != nil { return m.Notification } return nil } +type GetNotificationResponse_Notification struct { + // The name of the requested notification. + Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` + // The time at which the notification was created. + Created string `protobuf:"bytes,2,opt,name=created" json:"created,omitempty"` + // The time at which the notification was last sent out. + Notified string `protobuf:"bytes,3,opt,name=notified" json:"notified,omitempty"` + // The time at which a notification has been deleted. + Deleted string `protobuf:"bytes,4,opt,name=deleted" json:"deleted,omitempty"` + // The previous vulnerability and a paginated view of the ancestries it affects. + Old *PagedVulnerableAncestries `protobuf:"bytes,5,opt,name=old" json:"old,omitempty"` + // The newly updated vulnerability and a paginated view of the ancestries it affects. + New *PagedVulnerableAncestries `protobuf:"bytes,6,opt,name=new" json:"new,omitempty"` +} + +func (m *GetNotificationResponse_Notification) Reset() { *m = GetNotificationResponse_Notification{} } +func (m *GetNotificationResponse_Notification) String() string { return proto.CompactTextString(m) } +func (*GetNotificationResponse_Notification) ProtoMessage() {} +func (*GetNotificationResponse_Notification) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{9, 0} +} + +func (m *GetNotificationResponse_Notification) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *GetNotificationResponse_Notification) GetCreated() string { + if m != nil { + return m.Created + } + return "" +} + +func (m *GetNotificationResponse_Notification) GetNotified() string { + if m != nil { + return m.Notified + } + return "" +} + +func (m *GetNotificationResponse_Notification) GetDeleted() string { + if m != nil { + return m.Deleted + } + return "" +} + +func (m *GetNotificationResponse_Notification) GetOld() *PagedVulnerableAncestries { + if m != nil { + return m.Old + } + return nil +} + +func (m *GetNotificationResponse_Notification) GetNew() *PagedVulnerableAncestries { + if m != nil { + return m.New + } + return nil +} + +type PagedVulnerableAncestries struct { + // The identifier for the current page. + CurrentPage string `protobuf:"bytes,1,opt,name=current_page,json=currentPage" json:"current_page,omitempty"` + // The token used to request the next page. + // This will be empty when there are no more pages. + NextPage string `protobuf:"bytes,2,opt,name=next_page,json=nextPage" json:"next_page,omitempty"` + // The requested maximum number of results per page. + Limit int32 `protobuf:"varint,3,opt,name=limit" json:"limit,omitempty"` + // The vulnerability that affects a given set of ancestries. + Vulnerability *Vulnerability `protobuf:"bytes,4,opt,name=vulnerability" json:"vulnerability,omitempty"` + // The ancestries affected by a vulnerability. + Ancestries []*PagedVulnerableAncestries_IndexedAncestryName `protobuf:"bytes,5,rep,name=ancestries" json:"ancestries,omitempty"` +} + +func (m *PagedVulnerableAncestries) Reset() { *m = PagedVulnerableAncestries{} } +func (m *PagedVulnerableAncestries) String() string { return proto.CompactTextString(m) } +func (*PagedVulnerableAncestries) ProtoMessage() {} +func (*PagedVulnerableAncestries) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } + +func (m *PagedVulnerableAncestries) GetCurrentPage() string { + if m != nil { + return m.CurrentPage + } + return "" +} + +func (m *PagedVulnerableAncestries) GetNextPage() string { + if m != nil { + return m.NextPage + } + return "" +} + +func (m *PagedVulnerableAncestries) GetLimit() int32 { + if m != nil { + return m.Limit + } + return 0 +} + +func (m *PagedVulnerableAncestries) GetVulnerability() *Vulnerability { + if m != nil { + return m.Vulnerability + } + return nil +} + +func (m *PagedVulnerableAncestries) GetAncestries() []*PagedVulnerableAncestries_IndexedAncestryName { + if m != nil { + return m.Ancestries + } + return nil +} + +type PagedVulnerableAncestries_IndexedAncestryName struct { + // The index is an ever increasing number associated with the particular ancestry. + // This is useful if you're processing notifications, and need to keep track of the progress of paginating the results. + Index int32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` + // The name of the ancestry. + Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` +} + +func (m *PagedVulnerableAncestries_IndexedAncestryName) Reset() { + *m = PagedVulnerableAncestries_IndexedAncestryName{} +} +func (m *PagedVulnerableAncestries_IndexedAncestryName) String() string { + return proto.CompactTextString(m) +} +func (*PagedVulnerableAncestries_IndexedAncestryName) ProtoMessage() {} +func (*PagedVulnerableAncestries_IndexedAncestryName) Descriptor() ([]byte, []int) { + return fileDescriptor0, []int{10, 0} +} + +func (m *PagedVulnerableAncestries_IndexedAncestryName) GetIndex() int32 { + if m != nil { + return m.Index + } + return 0 +} + +func (m *PagedVulnerableAncestries_IndexedAncestryName) GetName() string { + if m != nil { + return m.Name + } + return "" +} + type MarkNotificationAsReadRequest struct { + // The name of the Notification that has been processed. Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` } func (m *MarkNotificationAsReadRequest) Reset() { *m = MarkNotificationAsReadRequest{} } func (m *MarkNotificationAsReadRequest) String() string { return proto.CompactTextString(m) } func (*MarkNotificationAsReadRequest) ProtoMessage() {} -func (*MarkNotificationAsReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } +func (*MarkNotificationAsReadRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *MarkNotificationAsReadRequest) GetName() string { if m != nil { @@ -618,20 +671,20 @@ func (m *MarkNotificationAsReadRequest) GetName() string { func init() { proto.RegisterType((*Vulnerability)(nil), "clairpb.Vulnerability") - proto.RegisterType((*ClairStatus)(nil), "clairpb.ClairStatus") proto.RegisterType((*Feature)(nil), "clairpb.Feature") - proto.RegisterType((*Ancestry)(nil), "clairpb.Ancestry") proto.RegisterType((*Layer)(nil), "clairpb.Layer") - proto.RegisterType((*Notification)(nil), "clairpb.Notification") - proto.RegisterType((*IndexedAncestryName)(nil), "clairpb.IndexedAncestryName") - proto.RegisterType((*PagedVulnerableAncestries)(nil), "clairpb.PagedVulnerableAncestries") + proto.RegisterType((*ClairStatus)(nil), "clairpb.ClairStatus") + proto.RegisterType((*GetAncestryRequest)(nil), "clairpb.GetAncestryRequest") + proto.RegisterType((*GetAncestryResponse)(nil), "clairpb.GetAncestryResponse") + proto.RegisterType((*GetAncestryResponse_Ancestry)(nil), "clairpb.GetAncestryResponse.Ancestry") proto.RegisterType((*PostAncestryRequest)(nil), "clairpb.PostAncestryRequest") proto.RegisterType((*PostAncestryRequest_PostLayer)(nil), "clairpb.PostAncestryRequest.PostLayer") proto.RegisterType((*PostAncestryResponse)(nil), "clairpb.PostAncestryResponse") - proto.RegisterType((*GetAncestryRequest)(nil), "clairpb.GetAncestryRequest") - proto.RegisterType((*GetAncestryResponse)(nil), "clairpb.GetAncestryResponse") proto.RegisterType((*GetNotificationRequest)(nil), "clairpb.GetNotificationRequest") proto.RegisterType((*GetNotificationResponse)(nil), "clairpb.GetNotificationResponse") + proto.RegisterType((*GetNotificationResponse_Notification)(nil), "clairpb.GetNotificationResponse.Notification") + proto.RegisterType((*PagedVulnerableAncestries)(nil), "clairpb.PagedVulnerableAncestries") + proto.RegisterType((*PagedVulnerableAncestries_IndexedAncestryName)(nil), "clairpb.PagedVulnerableAncestries.IndexedAncestryName") proto.RegisterType((*MarkNotificationAsReadRequest)(nil), "clairpb.MarkNotificationAsReadRequest") } @@ -646,8 +699,10 @@ const _ = grpc.SupportPackageIsVersion4 // Client API for AncestryService service type AncestryServiceClient interface { - PostAncestry(ctx context.Context, in *PostAncestryRequest, opts ...grpc.CallOption) (*PostAncestryResponse, error) + // The RPC used to read the results of scanning for a particular ancestry. GetAncestry(ctx context.Context, in *GetAncestryRequest, opts ...grpc.CallOption) (*GetAncestryResponse, error) + // The RPC used to create a new scan of an ancestry. + PostAncestry(ctx context.Context, in *PostAncestryRequest, opts ...grpc.CallOption) (*PostAncestryResponse, error) } type ancestryServiceClient struct { @@ -658,15 +713,6 @@ func NewAncestryServiceClient(cc *grpc.ClientConn) AncestryServiceClient { return &ancestryServiceClient{cc} } -func (c *ancestryServiceClient) PostAncestry(ctx context.Context, in *PostAncestryRequest, opts ...grpc.CallOption) (*PostAncestryResponse, error) { - out := new(PostAncestryResponse) - err := grpc.Invoke(ctx, "/clairpb.AncestryService/PostAncestry", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *ancestryServiceClient) GetAncestry(ctx context.Context, in *GetAncestryRequest, opts ...grpc.CallOption) (*GetAncestryResponse, error) { out := new(GetAncestryResponse) err := grpc.Invoke(ctx, "/clairpb.AncestryService/GetAncestry", in, out, c.cc, opts...) @@ -676,35 +722,28 @@ func (c *ancestryServiceClient) GetAncestry(ctx context.Context, in *GetAncestry return out, nil } +func (c *ancestryServiceClient) PostAncestry(ctx context.Context, in *PostAncestryRequest, opts ...grpc.CallOption) (*PostAncestryResponse, error) { + out := new(PostAncestryResponse) + err := grpc.Invoke(ctx, "/clairpb.AncestryService/PostAncestry", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for AncestryService service type AncestryServiceServer interface { - PostAncestry(context.Context, *PostAncestryRequest) (*PostAncestryResponse, error) + // The RPC used to read the results of scanning for a particular ancestry. GetAncestry(context.Context, *GetAncestryRequest) (*GetAncestryResponse, error) + // The RPC used to create a new scan of an ancestry. + PostAncestry(context.Context, *PostAncestryRequest) (*PostAncestryResponse, error) } func RegisterAncestryServiceServer(s *grpc.Server, srv AncestryServiceServer) { s.RegisterService(&_AncestryService_serviceDesc, srv) } -func _AncestryService_PostAncestry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(PostAncestryRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AncestryServiceServer).PostAncestry(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/clairpb.AncestryService/PostAncestry", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AncestryServiceServer).PostAncestry(ctx, req.(*PostAncestryRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _AncestryService_GetAncestry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetAncestryRequest) if err := dec(in); err != nil { @@ -723,18 +762,36 @@ func _AncestryService_GetAncestry_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _AncestryService_PostAncestry_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PostAncestryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AncestryServiceServer).PostAncestry(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clairpb.AncestryService/PostAncestry", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AncestryServiceServer).PostAncestry(ctx, req.(*PostAncestryRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _AncestryService_serviceDesc = grpc.ServiceDesc{ ServiceName: "clairpb.AncestryService", HandlerType: (*AncestryServiceServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "PostAncestry", - Handler: _AncestryService_PostAncestry_Handler, - }, { MethodName: "GetAncestry", Handler: _AncestryService_GetAncestry_Handler, }, + { + MethodName: "PostAncestry", + Handler: _AncestryService_PostAncestry_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "api/v3/clairpb/clair.proto", @@ -743,7 +800,9 @@ var _AncestryService_serviceDesc = grpc.ServiceDesc{ // Client API for NotificationService service type NotificationServiceClient interface { + // The RPC used to get a particularly Notification. GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*GetNotificationResponse, error) + // The RPC used to mark a Notification as read after it has been processed. MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) } @@ -776,7 +835,9 @@ func (c *notificationServiceClient) MarkNotificationAsRead(ctx context.Context, // Server API for NotificationService service type NotificationServiceServer interface { + // The RPC used to get a particularly Notification. GetNotification(context.Context, *GetNotificationRequest) (*GetNotificationResponse, error) + // The RPC used to mark a Notification as read after it has been processed. MarkNotificationAsRead(context.Context, *MarkNotificationAsReadRequest) (*google_protobuf1.Empty, error) } @@ -840,78 +901,78 @@ var _NotificationService_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api/v3/clairpb/clair.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1162 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4d, 0x6f, 0xdb, 0x46, - 0x13, 0x06, 0x25, 0xcb, 0x92, 0x46, 0xf2, 0xd7, 0x5a, 0x51, 0x68, 0xd9, 0x46, 0x1c, 0xbe, 0x78, - 0xd3, 0x20, 0x6d, 0x25, 0x54, 0xf6, 0xa1, 0x35, 0xd2, 0x8f, 0xa4, 0x4e, 0xd2, 0x02, 0x49, 0x10, - 0x30, 0xa9, 0x0f, 0xbd, 0x08, 0x6b, 0x72, 0x64, 0x13, 0xa6, 0x48, 0x96, 0xbb, 0x92, 0x2c, 0x04, - 0xbd, 0xb4, 0xc7, 0x9e, 0xda, 0xfe, 0x8f, 0xfe, 0x84, 0x5e, 0x0b, 0xf4, 0x9a, 0x7b, 0x81, 0x02, - 0xbd, 0xf6, 0x3f, 0x14, 0xbb, 0xdc, 0xa5, 0x48, 0x8b, 0x0e, 0x8c, 0xf6, 0x24, 0xce, 0xcc, 0x33, - 0xbb, 0x33, 0xcf, 0x33, 0x3b, 0x10, 0x74, 0x68, 0xe4, 0xf5, 0x26, 0xfb, 0x3d, 0xc7, 0xa7, 0x5e, - 0x1c, 0x9d, 0x24, 0xbf, 0xdd, 0x28, 0x0e, 0x79, 0x48, 0xaa, 0xca, 0xd9, 0xd9, 0x39, 0x0d, 0xc3, - 0x53, 0x1f, 0x7b, 0x02, 0x4b, 0x83, 0x20, 0xe4, 0x94, 0x7b, 0x61, 0xc0, 0x12, 0x58, 0x67, 0x5b, - 0x45, 0xa5, 0x75, 0x32, 0x1e, 0xf6, 0x70, 0x14, 0xf1, 0x99, 0x0a, 0xde, 0xba, 0x1c, 0xe4, 0xde, - 0x08, 0x19, 0xa7, 0xa3, 0x28, 0x01, 0x58, 0x3f, 0x95, 0x60, 0xe5, 0x78, 0xec, 0x07, 0x18, 0xd3, - 0x13, 0xcf, 0xf7, 0xf8, 0x8c, 0x10, 0x58, 0x0a, 0xe8, 0x08, 0x4d, 0x63, 0xcf, 0xb8, 0x5b, 0xb7, - 0xe5, 0x37, 0xf9, 0x3f, 0xac, 0x8a, 0x5f, 0x16, 0x51, 0x07, 0x07, 0x32, 0x5a, 0x92, 0xd1, 0x95, - 0xd4, 0xfb, 0x5c, 0xc0, 0xf6, 0xa0, 0xe1, 0x22, 0x73, 0x62, 0x2f, 0x12, 0x05, 0x9a, 0x65, 0x89, - 0xc9, 0xba, 0xc4, 0xe1, 0xbe, 0x17, 0x9c, 0x9b, 0x4b, 0xc9, 0xe1, 0xe2, 0x9b, 0x74, 0xa0, 0xc6, - 0x70, 0x82, 0xb1, 0xc7, 0x67, 0x66, 0x45, 0xfa, 0x53, 0x5b, 0xc4, 0x46, 0xc8, 0xa9, 0x4b, 0x39, - 0x35, 0x97, 0x93, 0x98, 0xb6, 0xc9, 0x16, 0xd4, 0x86, 0xde, 0x05, 0xba, 0x83, 0x93, 0x99, 0x59, - 0x95, 0xb1, 0xaa, 0xb4, 0x1f, 0xce, 0xc8, 0xc7, 0xb0, 0x41, 0x87, 0x43, 0x74, 0x38, 0xba, 0x83, - 0x09, 0xc6, 0x4c, 0xd0, 0x65, 0xd6, 0xf6, 0xca, 0x77, 0x1b, 0xfd, 0xf5, 0xae, 0xa2, 0xb5, 0xfb, - 0x18, 0x29, 0x1f, 0xc7, 0x68, 0xaf, 0x6b, 0xe8, 0xb1, 0x42, 0x5a, 0x3f, 0x18, 0xd0, 0xf8, 0x5c, - 0xa0, 0x5e, 0x72, 0xca, 0xc7, 0x8c, 0x98, 0x50, 0xf5, 0x3d, 0xc6, 0x31, 0x66, 0xa6, 0xb1, 0x57, - 0x16, 0x17, 0x29, 0x93, 0xec, 0x40, 0xdd, 0x45, 0x8e, 0x0e, 0x0f, 0x63, 0x66, 0x96, 0x64, 0x6c, - 0xee, 0x20, 0x47, 0xb0, 0xee, 0x53, 0xc6, 0x07, 0xe3, 0xc8, 0xa5, 0x1c, 0x07, 0x82, 0x7b, 0x49, - 0x4a, 0xa3, 0xdf, 0xe9, 0x26, 0xc2, 0x74, 0xb5, 0x30, 0xdd, 0x57, 0x5a, 0x18, 0x7b, 0x55, 0xe4, - 0x7c, 0x25, 0x53, 0x84, 0xd3, 0xfa, 0xcd, 0x80, 0xaa, 0xaa, 0xf5, 0xbf, 0x88, 0x63, 0x42, 0x55, - 0x51, 0xa1, 0x84, 0xd1, 0xa6, 0x38, 0x40, 0x7d, 0x0e, 0x86, 0x61, 0x3c, 0xa2, 0x5c, 0xc9, 0xb3, - 0xa2, 0xbc, 0x8f, 0xa5, 0x93, 0x7c, 0x06, 0x6b, 0x93, 0xcc, 0xa4, 0x78, 0xc8, 0xcc, 0x8a, 0xa4, - 0xb4, 0x9d, 0x52, 0x9a, 0x9b, 0x24, 0xfb, 0x32, 0xdc, 0xfa, 0xdd, 0x80, 0xda, 0x83, 0xc0, 0x41, - 0xc6, 0xe3, 0xe2, 0x39, 0x7b, 0x0f, 0x6a, 0xc3, 0xa4, 0xd3, 0x84, 0xcd, 0x22, 0xb9, 0x52, 0x04, - 0xb9, 0x03, 0xcb, 0x3e, 0x9d, 0x09, 0x55, 0xca, 0x12, 0xbb, 0x9a, 0x62, 0x9f, 0x0a, 0xb7, 0xad, - 0xa2, 0xe4, 0x1d, 0x58, 0x63, 0x0e, 0x0d, 0x02, 0x74, 0x07, 0x5a, 0xc6, 0x25, 0x29, 0xd5, 0xaa, - 0x72, 0x3f, 0x55, 0x6a, 0xbe, 0x0b, 0x1b, 0x1a, 0x38, 0x57, 0xb5, 0x22, 0xa1, 0xeb, 0x2a, 0x70, - 0xa4, 0xfd, 0xd6, 0x36, 0x54, 0xe4, 0x35, 0xa2, 0x91, 0x33, 0xca, 0xce, 0x74, 0x23, 0xe2, 0xdb, - 0xfa, 0xc3, 0x80, 0xe6, 0xf3, 0x90, 0x7b, 0x43, 0xcf, 0xa1, 0x7a, 0xf0, 0x17, 0xba, 0x35, 0xa1, - 0xea, 0xc4, 0x48, 0x39, 0xba, 0x4a, 0x31, 0x6d, 0x8a, 0xb1, 0x0f, 0x64, 0x36, 0xba, 0x4a, 0xac, - 0xd4, 0x16, 0x59, 0x2e, 0xfa, 0x28, 0xb2, 0x12, 0x99, 0xb4, 0x49, 0x0e, 0xa0, 0x1c, 0xfa, 0xae, - 0x7c, 0x43, 0x8d, 0xbe, 0x95, 0x92, 0xf1, 0x82, 0x9e, 0xa2, 0xab, 0x95, 0xf1, 0x51, 0x09, 0xe0, - 0x21, 0xb3, 0x05, 0x5c, 0x64, 0x05, 0x38, 0x95, 0xaf, 0xeb, 0x9a, 0x59, 0x01, 0x4e, 0xad, 0x4f, - 0x61, 0xf3, 0xcb, 0xc0, 0xc5, 0x0b, 0x74, 0xb5, 0xa0, 0x72, 0xc8, 0x5a, 0x50, 0xf1, 0x84, 0x5b, - 0xf6, 0x59, 0xb1, 0x13, 0x23, 0x6d, 0xbe, 0x34, 0x6f, 0xde, 0xfa, 0xdb, 0x80, 0xad, 0x2b, 0xef, - 0x20, 0xb7, 0xa1, 0xe9, 0x8c, 0xe3, 0x18, 0x03, 0x3e, 0x88, 0xe8, 0xa9, 0xa6, 0xad, 0xa1, 0x7c, - 0x22, 0x8f, 0x6c, 0x43, 0x3d, 0xc0, 0x0b, 0x15, 0x2f, 0x29, 0x92, 0xf0, 0x22, 0x09, 0xb6, 0xa0, - 0xe2, 0x7b, 0x23, 0x8f, 0x4b, 0xf6, 0x2a, 0x76, 0x62, 0x90, 0xfb, 0xb0, 0x92, 0x1d, 0xc9, 0x99, - 0x24, 0xf0, 0xea, 0xf9, 0xcd, 0x83, 0xc9, 0x7d, 0x00, 0x9a, 0x56, 0xa8, 0x46, 0x7f, 0x27, 0x4d, - 0x2d, 0x60, 0xc3, 0xce, 0xe0, 0xad, 0x37, 0x25, 0xd8, 0x7c, 0x11, 0x32, 0xae, 0x01, 0x36, 0x7e, - 0x33, 0x46, 0xc6, 0xc9, 0xff, 0x60, 0x45, 0xa1, 0x66, 0x83, 0xcc, 0x84, 0x34, 0x69, 0x96, 0xd6, - 0x36, 0x2c, 0xab, 0x97, 0x99, 0x34, 0xaa, 0x2c, 0xf2, 0xc9, 0xa5, 0x17, 0x70, 0x67, 0x2e, 0xdf, - 0xe2, 0x55, 0xd2, 0x97, 0x7b, 0x19, 0x9d, 0x5f, 0x0d, 0xa8, 0xa7, 0xde, 0xa2, 0x41, 0x16, 0xbe, - 0x88, 0xf2, 0x33, 0x2d, 0x9d, 0xf8, 0x26, 0xcf, 0xa0, 0x7a, 0x86, 0xd4, 0x9d, 0x5f, 0xbb, 0x7f, - 0xbd, 0x6b, 0xbb, 0x5f, 0x24, 0x59, 0x8f, 0x02, 0x11, 0xd5, 0x67, 0x74, 0x0e, 0xa1, 0x99, 0x0d, - 0x90, 0x75, 0x28, 0x9f, 0xe3, 0x4c, 0x55, 0x21, 0x3e, 0x85, 0x9a, 0x13, 0xea, 0x8f, 0xb5, 0xcc, - 0x89, 0x71, 0x58, 0xfa, 0xd0, 0xb0, 0x8e, 0xa0, 0x95, 0xbf, 0x92, 0x45, 0x61, 0xc0, 0xc4, 0x22, - 0x59, 0x66, 0x72, 0x77, 0xcb, 0x63, 0x1a, 0xfd, 0x56, 0x5a, 0x61, 0x66, 0xaf, 0xdb, 0x0a, 0x63, - 0xfd, 0x68, 0x00, 0x79, 0x82, 0xff, 0x4e, 0x9a, 0x0f, 0xa0, 0x35, 0xf5, 0xf8, 0xd9, 0xe0, 0xf2, - 0x6a, 0x14, 0xa5, 0xd6, 0xec, 0x4d, 0x11, 0x3b, 0xce, 0x87, 0xc4, 0xb9, 0x32, 0x25, 0x5d, 0x75, - 0x65, 0x89, 0x6d, 0x0a, 0xa7, 0xda, 0x72, 0xcc, 0x8a, 0x61, 0x33, 0x57, 0x92, 0x6a, 0xec, 0x7d, - 0xa8, 0xe9, 0xeb, 0x55, 0x6b, 0x1b, 0x69, 0x6b, 0x29, 0x38, 0x85, 0x64, 0x78, 0x28, 0x5d, 0x83, - 0x87, 0x5f, 0x0c, 0x68, 0x3f, 0x41, 0x9e, 0x5d, 0x5c, 0x9a, 0x8b, 0x03, 0x68, 0x87, 0xbe, 0x9b, - 0xeb, 0x72, 0x96, 0x7d, 0x9a, 0xad, 0xd0, 0x77, 0x73, 0xaf, 0x47, 0x3e, 0xc3, 0x03, 0x68, 0x07, - 0x38, 0x2d, 0xca, 0x4a, 0x94, 0x6c, 0x05, 0x38, 0x5d, 0xcc, 0x2a, 0x7e, 0xbc, 0x7a, 0x89, 0x2c, - 0x65, 0x96, 0xc8, 0x2b, 0xb8, 0xb9, 0x50, 0xaf, 0x22, 0xea, 0x23, 0x68, 0x06, 0x19, 0xbf, 0x22, - 0xeb, 0x46, 0xda, 0x7f, 0x2e, 0x29, 0x07, 0xb5, 0xf6, 0x61, 0xf7, 0x19, 0x8d, 0xcf, 0xb3, 0x88, - 0x07, 0xcc, 0x46, 0xea, 0x6a, 0x32, 0x0a, 0x96, 0x79, 0xff, 0x4f, 0x03, 0xd6, 0xb4, 0x00, 0x2f, - 0x31, 0x9e, 0x78, 0x0e, 0x12, 0x0a, 0xcd, 0xec, 0x74, 0x92, 0x9d, 0xb7, 0xbd, 0x93, 0xce, 0xee, - 0x15, 0xd1, 0xa4, 0x21, 0xab, 0xf5, 0xdd, 0x9b, 0xbf, 0x7e, 0x2e, 0xad, 0x5a, 0xf5, 0x9e, 0x56, - 0xf7, 0xd0, 0xb8, 0x47, 0xce, 0xa1, 0x91, 0x19, 0x13, 0xb2, 0x9d, 0x9e, 0xb1, 0x38, 0xcf, 0x9d, - 0x9d, 0xe2, 0xa0, 0x3a, 0xff, 0xb6, 0x3c, 0x7f, 0x9b, 0x6c, 0xa5, 0xe7, 0xf7, 0x5e, 0xe7, 0xc6, - 0xff, 0xdb, 0xfe, 0xf7, 0x25, 0xd8, 0xcc, 0xb2, 0xa2, 0xfb, 0x64, 0xb0, 0x76, 0x49, 0x06, 0x72, - 0x2b, 0x7b, 0x57, 0xc1, 0x40, 0x75, 0xf6, 0xae, 0x06, 0xa8, 0x82, 0x76, 0x65, 0x41, 0x37, 0xc9, - 0x8d, 0x5e, 0x56, 0x1d, 0xd6, 0x7b, 0x2d, 0x8b, 0x21, 0x53, 0x68, 0x17, 0xab, 0x44, 0xe6, 0x5b, - 0xf0, 0xad, 0x32, 0x76, 0xda, 0x0b, 0x7f, 0xc2, 0x1e, 0x89, 0xbf, 0xce, 0xfa, 0xe2, 0x7b, 0xc5, - 0x17, 0x3f, 0xac, 0x7f, 0xad, 0xff, 0x99, 0x9f, 0x2c, 0xcb, 0xcc, 0xfd, 0x7f, 0x02, 0x00, 0x00, - 0xff, 0xff, 0x51, 0xb7, 0x75, 0x58, 0xc7, 0x0b, 0x00, 0x00, + // 1166 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6f, 0xdb, 0x54, + 0x14, 0x97, 0xd3, 0xa6, 0x49, 0x4e, 0xd2, 0x8f, 0xdd, 0x86, 0xcc, 0x73, 0x3b, 0xad, 0x33, 0xda, + 0x98, 0xc6, 0x48, 0x44, 0x3a, 0x21, 0x54, 0xf1, 0xd5, 0xd1, 0x6d, 0x20, 0x6d, 0xd3, 0xf0, 0xa0, + 0x0f, 0xbc, 0x44, 0xb7, 0xf6, 0x49, 0x6b, 0xd5, 0xb1, 0x8d, 0xef, 0x4d, 0xd2, 0x68, 0xe2, 0x05, + 0x1e, 0x79, 0x02, 0xfe, 0x0f, 0xfe, 0x04, 0x5e, 0x41, 0x48, 0x3c, 0xed, 0x1d, 0x09, 0x89, 0x3f, + 0x04, 0xdd, 0xeb, 0x7b, 0x1d, 0xbb, 0x75, 0xdb, 0x09, 0x9e, 0xe2, 0xf3, 0xfd, 0xf5, 0x3b, 0xf7, + 0x04, 0x2c, 0x1a, 0xfb, 0xbd, 0xc9, 0x76, 0xcf, 0x0d, 0xa8, 0x9f, 0xc4, 0x07, 0xe9, 0x6f, 0x37, + 0x4e, 0x22, 0x1e, 0x91, 0x9a, 0x62, 0x5a, 0x9b, 0x87, 0x51, 0x74, 0x18, 0x60, 0x4f, 0xe8, 0xd2, + 0x30, 0x8c, 0x38, 0xe5, 0x7e, 0x14, 0xb2, 0x54, 0xcd, 0xda, 0x50, 0x52, 0x49, 0x1d, 0x8c, 0x87, + 0x3d, 0x1c, 0xc5, 0x7c, 0xa6, 0x84, 0x37, 0x4e, 0x0b, 0xb9, 0x3f, 0x42, 0xc6, 0xe9, 0x28, 0x4e, + 0x15, 0xec, 0x9f, 0x2a, 0xb0, 0xbc, 0x3f, 0x0e, 0x42, 0x4c, 0xe8, 0x81, 0x1f, 0xf8, 0x7c, 0x46, + 0x08, 0x2c, 0x86, 0x74, 0x84, 0xa6, 0xb1, 0x65, 0xdc, 0x69, 0x38, 0xf2, 0x9b, 0xdc, 0x82, 0x15, + 0xf1, 0xcb, 0x62, 0xea, 0xe2, 0x40, 0x4a, 0x2b, 0x52, 0xba, 0x9c, 0x71, 0x9f, 0x09, 0xb5, 0x2d, + 0x68, 0x7a, 0xc8, 0xdc, 0xc4, 0x8f, 0x45, 0x82, 0xe6, 0x82, 0xd4, 0xc9, 0xb3, 0x84, 0xf3, 0xc0, + 0x0f, 0x8f, 0xcd, 0xc5, 0xd4, 0xb9, 0xf8, 0x26, 0x16, 0xd4, 0x19, 0x4e, 0x30, 0xf1, 0xf9, 0xcc, + 0xac, 0x4a, 0x7e, 0x46, 0x0b, 0xd9, 0x08, 0x39, 0xf5, 0x28, 0xa7, 0xe6, 0x52, 0x2a, 0xd3, 0x34, + 0xb9, 0x06, 0xf5, 0xa1, 0x7f, 0x82, 0xde, 0xe0, 0x60, 0x66, 0xd6, 0xa4, 0xac, 0x26, 0xe9, 0x07, + 0x33, 0xf2, 0x21, 0x5c, 0xa1, 0xc3, 0x21, 0xba, 0x1c, 0xbd, 0xc1, 0x04, 0x13, 0x26, 0xda, 0x65, + 0xd6, 0xb7, 0x16, 0xee, 0x34, 0xfb, 0x6b, 0x5d, 0xd5, 0xd6, 0xee, 0x23, 0xa4, 0x7c, 0x9c, 0xa0, + 0xb3, 0xa6, 0x55, 0xf7, 0x95, 0xa6, 0xfd, 0x9b, 0x01, 0x35, 0x25, 0xfd, 0x3f, 0xed, 0x30, 0xa1, + 0xa6, 0x82, 0xab, 0x56, 0x68, 0x52, 0x38, 0x50, 0x9f, 0x83, 0x61, 0x94, 0x8c, 0x28, 0x57, 0x0d, + 0x59, 0x56, 0xdc, 0x47, 0x92, 0x49, 0x3e, 0x81, 0xd5, 0x49, 0x6e, 0x36, 0x3e, 0x32, 0xb3, 0x2a, + 0x8b, 0xe8, 0x64, 0x45, 0x14, 0x66, 0xe7, 0x9c, 0x56, 0xb7, 0x37, 0xa0, 0xfa, 0x84, 0xce, 0x30, + 0x11, 0x65, 0x1c, 0x51, 0x76, 0xa4, 0xcb, 0x10, 0xdf, 0xf6, 0x0f, 0x06, 0x34, 0x3f, 0x15, 0x7e, + 0x5e, 0x70, 0xca, 0xc7, 0x4c, 0xe4, 0x1b, 0xf8, 0x8c, 0x63, 0xc2, 0x4c, 0x63, 0x6b, 0x41, 0xe4, + 0xab, 0x48, 0xb2, 0x09, 0x0d, 0x0f, 0x39, 0xba, 0x3c, 0x4a, 0x98, 0x59, 0x91, 0xb2, 0x39, 0x83, + 0xec, 0xc1, 0x5a, 0x40, 0x19, 0x1f, 0x8c, 0x63, 0x8f, 0x72, 0x1c, 0x08, 0x88, 0xc9, 0x82, 0x9b, + 0x7d, 0xab, 0x9b, 0xe2, 0xaf, 0xab, 0xf1, 0xd7, 0xfd, 0x52, 0xe3, 0xcf, 0x59, 0x11, 0x36, 0x5f, + 0x49, 0x13, 0xc1, 0xb4, 0x7f, 0x34, 0x80, 0x3c, 0x46, 0xbe, 0x1b, 0xba, 0xc8, 0x78, 0x32, 0x73, + 0xf0, 0x9b, 0x31, 0x32, 0x4e, 0xde, 0x84, 0x65, 0xaa, 0x58, 0x83, 0xdc, 0x20, 0x5a, 0x9a, 0x29, + 0x3b, 0xfd, 0x2e, 0xb4, 0xa7, 0x3e, 0x3f, 0x1a, 0x9c, 0xee, 0x96, 0x18, 0x4b, 0xdd, 0x59, 0x17, + 0xb2, 0xfd, 0xa2, 0x48, 0xf8, 0x95, 0x26, 0xc3, 0x74, 0xce, 0x4c, 0x66, 0x5c, 0x77, 0x5a, 0x82, + 0xa9, 0x66, 0xcf, 0xec, 0x57, 0x15, 0x58, 0x2f, 0xe4, 0xc4, 0xe2, 0x28, 0x64, 0x48, 0x76, 0xa1, + 0xae, 0xe3, 0xcb, 0x7c, 0x9a, 0xfd, 0x5b, 0xd9, 0x44, 0x4a, 0xf4, 0xbb, 0x19, 0x23, 0x33, 0x23, + 0xf7, 0x60, 0x89, 0xc9, 0xb6, 0xcb, 0x24, 0x9b, 0xfd, 0x76, 0xe6, 0x20, 0x37, 0x12, 0x47, 0xe9, + 0x58, 0x7f, 0x18, 0x50, 0xd7, 0x4e, 0x4a, 0x21, 0x79, 0x0f, 0xea, 0x59, 0x25, 0x95, 0x73, 0x80, + 0x9e, 0x69, 0x90, 0xdb, 0xb0, 0x14, 0x08, 0x58, 0x88, 0xaa, 0x85, 0xee, 0x4a, 0xa6, 0x2b, 0xd1, + 0xe2, 0x28, 0x29, 0x79, 0x0b, 0x56, 0x99, 0x4b, 0xc3, 0x10, 0xbd, 0x81, 0x46, 0xc6, 0xa2, 0x9c, + 0xfe, 0x8a, 0x62, 0x3f, 0x51, 0x00, 0x79, 0x1b, 0xae, 0x68, 0xc5, 0x39, 0x50, 0xaa, 0x52, 0x75, + 0x4d, 0x09, 0xf6, 0x34, 0x5f, 0x76, 0xf5, 0x79, 0xc4, 0xfe, 0xdb, 0xa8, 0x3b, 0xb0, 0xa4, 0x56, + 0x26, 0xdd, 0x39, 0x45, 0x91, 0x8f, 0x4e, 0x95, 0x74, 0x3b, 0x2b, 0xa9, 0x24, 0x94, 0xe4, 0x15, + 0x4a, 0xb5, 0x7e, 0x35, 0xa0, 0x91, 0x71, 0xcb, 0xd6, 0x45, 0xf0, 0x62, 0xca, 0x8f, 0x54, 0x5c, + 0xf9, 0x4d, 0x9e, 0x42, 0xed, 0x08, 0xa9, 0x37, 0x0f, 0xbb, 0xfd, 0x7a, 0x61, 0xbb, 0x9f, 0xa5, + 0x56, 0x0f, 0x43, 0x21, 0xd5, 0x3e, 0xac, 0x1d, 0x68, 0xe5, 0x05, 0x64, 0x0d, 0x16, 0x8e, 0x71, + 0xa6, 0xb2, 0x10, 0x9f, 0xa4, 0x0d, 0xd5, 0x09, 0x0d, 0xc6, 0xfa, 0xc5, 0x49, 0x89, 0x9d, 0xca, + 0xfb, 0x86, 0xbd, 0x07, 0xed, 0x62, 0x48, 0x85, 0xd5, 0x39, 0xd0, 0x8c, 0xcb, 0x81, 0x66, 0xff, + 0x62, 0x40, 0xe7, 0x31, 0xf2, 0x67, 0x11, 0xf7, 0x87, 0xbe, 0x2b, 0x0f, 0x8d, 0x1e, 0xcf, 0x7d, + 0xe8, 0x44, 0x81, 0x57, 0xd8, 0xb1, 0xd9, 0x20, 0xa6, 0x87, 0x7a, 0x4e, 0xed, 0x28, 0xf0, 0x0a, + 0xcf, 0xd1, 0x73, 0x7a, 0x88, 0xc2, 0x2a, 0xc4, 0x69, 0x99, 0x55, 0x5a, 0x41, 0x3b, 0xc4, 0xe9, + 0x59, 0xab, 0x36, 0x54, 0x03, 0x7f, 0xe4, 0x73, 0xb9, 0x95, 0x55, 0x27, 0x25, 0x32, 0xe0, 0x2f, + 0xce, 0x81, 0x6f, 0xff, 0x59, 0x81, 0xab, 0x67, 0x12, 0x56, 0xa5, 0x7f, 0x01, 0xad, 0x30, 0xc7, + 0x57, 0x0d, 0x78, 0x27, 0xbf, 0xaa, 0x65, 0x76, 0xdd, 0x02, 0xb3, 0xe0, 0xc2, 0xfa, 0xcb, 0x80, + 0x56, 0x5e, 0x5c, 0xba, 0x8c, 0x26, 0xd4, 0xdc, 0x04, 0x29, 0x47, 0x4f, 0x15, 0xa9, 0x49, 0x71, + 0xcf, 0x52, 0x77, 0xe8, 0xa9, 0x9b, 0x90, 0xd1, 0xc2, 0xca, 0xc3, 0x00, 0x85, 0x55, 0x5a, 0xa0, + 0x26, 0xc9, 0x7d, 0x58, 0x88, 0x02, 0x4f, 0x1e, 0xc7, 0x66, 0xdf, 0x9e, 0x23, 0x8c, 0x1e, 0x62, + 0xd6, 0xf1, 0x00, 0xd5, 0xe4, 0x7d, 0x64, 0x8e, 0x50, 0x17, 0x56, 0x21, 0x4e, 0xe5, 0xd9, 0x7c, + 0x4d, 0xab, 0x10, 0xa7, 0xf6, 0xef, 0x15, 0xb8, 0x76, 0xae, 0x0a, 0xb9, 0x09, 0x2d, 0x77, 0x9c, + 0x24, 0x18, 0xf2, 0xfc, 0xe4, 0x9b, 0x8a, 0x27, 0x47, 0xb7, 0x01, 0x8d, 0x10, 0x4f, 0x78, 0x7e, + 0xc6, 0x75, 0xc1, 0xb8, 0x60, 0xae, 0x1f, 0xc0, 0x72, 0x01, 0x1f, 0xb2, 0xfe, 0xf3, 0xaf, 0x5c, + 0x51, 0x99, 0xec, 0x03, 0xd0, 0x2c, 0x43, 0x75, 0x20, 0xdf, 0xbb, 0xbc, 0xdc, 0xee, 0xe7, 0xa1, + 0x87, 0x27, 0xe8, 0xed, 0xe6, 0x5e, 0x17, 0x27, 0xe7, 0xc9, 0xfa, 0x18, 0xd6, 0x4b, 0x54, 0x44, + 0x09, 0xbe, 0x60, 0xcb, 0xda, 0xab, 0x4e, 0x4a, 0x64, 0x30, 0xa8, 0xe4, 0xa0, 0xb9, 0x0d, 0xd7, + 0x9f, 0xd2, 0xe4, 0x38, 0x0f, 0x97, 0x5d, 0xe6, 0x20, 0xf5, 0xf4, 0x46, 0x95, 0x60, 0xa7, 0xff, + 0xb7, 0x01, 0xab, 0x3a, 0xde, 0x0b, 0x4c, 0x26, 0xbe, 0x8b, 0xe4, 0x18, 0x9a, 0xb9, 0xab, 0x42, + 0x36, 0xca, 0x6f, 0x8d, 0xf4, 0x69, 0x6d, 0x5e, 0x74, 0x88, 0xec, 0x9b, 0xdf, 0xbd, 0xfa, 0xe7, + 0xe7, 0xca, 0x06, 0xb9, 0xd6, 0xd3, 0x8f, 0x6a, 0xef, 0x65, 0xe1, 0xcd, 0xfd, 0x96, 0x50, 0x68, + 0xe5, 0xdf, 0x11, 0xb2, 0x79, 0xd1, 0x8b, 0x66, 0x5d, 0x3f, 0x47, 0xaa, 0xe2, 0xb5, 0x65, 0xbc, + 0x15, 0xbb, 0x91, 0xc5, 0xdb, 0x31, 0xee, 0xf6, 0xbf, 0xaf, 0xc0, 0x7a, 0xbe, 0x2b, 0xba, 0x4e, + 0x06, 0xab, 0xa7, 0x56, 0x92, 0xdc, 0x38, 0x7f, 0x59, 0xd3, 0x04, 0xb6, 0x2e, 0xdb, 0x66, 0xfb, + 0xba, 0xcc, 0xe1, 0x2a, 0x79, 0xa3, 0x97, 0xdf, 0x64, 0xd6, 0x7b, 0x99, 0xd6, 0x3b, 0x85, 0x4e, + 0xf9, 0x94, 0xc8, 0xfc, 0x84, 0x5c, 0x38, 0x46, 0xab, 0x73, 0xe6, 0x5f, 0xce, 0x43, 0xf1, 0x17, + 0x5c, 0x07, 0xbe, 0x5b, 0x1e, 0xf8, 0x41, 0xe3, 0x6b, 0xfd, 0x0f, 0xff, 0x60, 0x49, 0x5a, 0x6e, + 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xee, 0xb6, 0xdc, 0x0f, 0x0c, 0x00, 0x00, } diff --git a/api/v3/clairpb/clair.pb.gw.go b/api/v3/clairpb/clair.pb.gw.go index ebe4435d..5e4cd05c 100644 --- a/api/v3/clairpb/clair.pb.gw.go +++ b/api/v3/clairpb/clair.pb.gw.go @@ -28,21 +28,6 @@ var _ status.Status var _ = runtime.String var _ = utilities.NewDoubleArray -func request_AncestryService_PostAncestry_0(ctx context.Context, marshaler runtime.Marshaler, client AncestryServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq PostAncestryRequest - var metadata runtime.ServerMetadata - - if req.ContentLength > 0 { - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - } - - msg, err := client.PostAncestry(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - var ( filter_AncestryService_GetAncestry_0 = &utilities.DoubleArray{Encoding: map[string]int{"ancestry_name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -78,6 +63,21 @@ func request_AncestryService_GetAncestry_0(ctx context.Context, marshaler runtim } +func request_AncestryService_PostAncestry_0(ctx context.Context, marshaler runtime.Marshaler, client AncestryServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PostAncestryRequest + var metadata runtime.ServerMetadata + + if req.ContentLength > 0 { + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + } + + msg, err := client.PostAncestry(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + var ( filter_NotificationService_GetNotification_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} ) @@ -178,35 +178,6 @@ func RegisterAncestryServiceHandler(ctx context.Context, mux *runtime.ServeMux, // "AncestryServiceClient" to call the correct interceptors. func RegisterAncestryServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client AncestryServiceClient) error { - mux.Handle("POST", pattern_AncestryService_PostAncestry_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_AncestryService_PostAncestry_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_AncestryService_PostAncestry_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - mux.Handle("GET", pattern_AncestryService_GetAncestry_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -236,19 +207,48 @@ func RegisterAncestryServiceHandlerClient(ctx context.Context, mux *runtime.Serv }) + mux.Handle("POST", pattern_AncestryService_PostAncestry_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_AncestryService_PostAncestry_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_AncestryService_PostAncestry_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( - pattern_AncestryService_PostAncestry_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ancestry"}, "")) - pattern_AncestryService_GetAncestry_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"ancestry", "ancestry_name"}, "")) + + pattern_AncestryService_PostAncestry_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"ancestry"}, "")) ) var ( - forward_AncestryService_PostAncestry_0 = runtime.ForwardResponseMessage - forward_AncestryService_GetAncestry_0 = runtime.ForwardResponseMessage + + forward_AncestryService_PostAncestry_0 = runtime.ForwardResponseMessage ) // RegisterNotificationServiceHandlerFromEndpoint is same as RegisterNotificationServiceHandler but diff --git a/api/v3/clairpb/clair.proto b/api/v3/clairpb/clair.proto index be1eabd8..0a384383 100644 --- a/api/v3/clairpb/clair.proto +++ b/api/v3/clairpb/clair.proto @@ -1,4 +1,4 @@ -// Copyright 2017 clair authors +// Copyright 2018 clair authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,150 +16,239 @@ syntax = "proto3"; option go_package = "clairpb"; package clairpb; + import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; message Vulnerability { - string name = 1; - string namespace_name = 2; - string description = 3; - string link = 4; - string severity = 5; - string metadata = 6; - // fixed_by exists when vulnerability is under feature. - string fixed_by = 7; - // affected_versions exists when vulnerability is under notification. - repeated Feature affected_versions = 8; + // The name of the vulnerability. + string name = 1; + + // The name of the namespace in which the vulnerability was detected. + string namespace_name = 2; + + // A description of the vulnerability according to the source for the namespace. + string description = 3; + + // A link to the vulnerability according to the source for the namespace. + string link = 4; + + // How dangerous the vulnerability is. + string severity = 5; + + // Namespace agnostic metadata about the vulnerability. + string metadata = 6; + + // The feature that fixes this vulnerability. + // This field only exists when a vulnerability is a part of a Feature. + string fixed_by = 7; + + // The Features that are affected by the vulnerability. + // This field only exists when a vulnerability is a part of a Notification. + repeated Feature affected_versions = 8; +} + +message Feature { + // The name of the feature. + string name = 1; + + // The name of the namespace in which the feature is detected. + string namespace_name = 2; + + // The specific version of this feature. + string version = 3; + + // The format used to parse version numbers for the feature. + string version_format = 4; + + // The list of vulnerabilities that affect the feature. + repeated Vulnerability vulnerabilities = 5; +} + +message Layer { + // The sha256 tarsum for the layer. + string hash = 1; +} + +service AncestryService { + // The RPC used to read the results of scanning for a particular ancestry. + rpc GetAncestry(GetAncestryRequest) returns (GetAncestryResponse) { + option (google.api.http) = { + get: "/ancestry/{ancestry_name}" + }; + } + + // The RPC used to create a new scan of an ancestry. + rpc PostAncestry(PostAncestryRequest) returns (PostAncestryResponse) { + option (google.api.http) = { + post: "/ancestry" + body: "*" + }; + } } message ClairStatus { - // listers and detectors are processors implemented in this Clair and used to - // scan ancestries - repeated string listers = 1; - repeated string detectors = 2; - google.protobuf.Timestamp last_update_time = 3; -} + // The configured list of feature listers used to scan an ancestry. + repeated string listers = 1; -message Feature{ - string name = 1; - string namespace_name = 2; - string version = 3; + // The configured list of namespace detectors used to scan an ancestry. + repeated string detectors = 2; - // version_format is the format used by installer package manager to store - // package versions. - string version_format = 4; - repeated Vulnerability vulnerabilities = 5; -} - -message Ancestry { - string name = 1; - repeated Feature features = 2; - repeated Layer layers = 3; - - // scanned_listers and scanned_detectors are used to scan this ancestry, it - // may be different from listers and detectors in ClairStatus since the - // ancestry could be scanned by previous version of Clair. - repeated string scanned_listers = 4; - repeated string scanned_detectors = 5; -} - -message Layer { - string hash = 1; -} - -message Notification { - string name = 1; - string created = 2; - string notified = 3; - string deleted = 4; - PagedVulnerableAncestries old = 5; - PagedVulnerableAncestries new = 6; -} - -message IndexedAncestryName { - // index is unique to name in all streams simultaneously streamed, increasing - // and larger than all indexes in previous page in same stream. - int32 index = 1; - string name = 2; -} - -message PagedVulnerableAncestries { - string current_page = 1; - // if next_page is empty, it signals the end of all pages. - string next_page = 2; - int32 limit = 3; - Vulnerability vulnerability = 4; - repeated IndexedAncestryName ancestries = 5; -} - -message PostAncestryRequest { - message PostLayer { - string hash = 1; - string path = 2; - map headers = 3; - } - string ancestry_name = 1; - string format = 2; - repeated PostLayer layers = 3; -} - -message PostAncestryResponse { - ClairStatus status = 1; + // The time at which the updater last ran. + google.protobuf.Timestamp last_update_time = 3; } message GetAncestryRequest { - string ancestry_name = 1; - bool with_vulnerabilities = 2; - bool with_features = 3; + // The name of the desired ancestry. + string ancestry_name = 1; + + // Whether to include vulnerabilities or not in the response. + bool with_vulnerabilities = 2; + + // Whether to include features or not in the response. + bool with_features = 3; } message GetAncestryResponse { - Ancestry ancestry = 1; - ClairStatus status = 2; + message Ancestry { + // The name of the desired ancestry. + string name = 1; + + // The list of features present in the ancestry. + // This will only be provided if requested. + repeated Feature features = 2; + + // The layers present in the ancestry. + repeated Layer layers = 3; + + // The configured list of feature listers used to scan this ancestry. + repeated string scanned_listers = 4; + + // The configured list of namespace detectors used to scan an ancestry. + repeated string scanned_detectors = 5; + } + + // The ancestry requested. + Ancestry ancestry = 1; + + // The status of Clair at the time of the request. + ClairStatus status = 2; +} + +message PostAncestryRequest { + message PostLayer { + // The hash of the layer. + string hash = 1; + + // The location of the layer (URL or filepath). + string path = 2; + + // Any HTTP Headers that need to be used if requesting a layer over HTTP(S). + map headers = 3; + } + + // The name of the ancestry being scanned. + // If scanning OCI images, this should be the hash of the manifest. + string ancestry_name = 1; + + // The format of the image being uploaded. + string format = 2; + + // The layers to be scanned for this particular ancestry. + repeated PostLayer layers = 3; +} + +message PostAncestryResponse { + // The status of Clair at the time of the request. + ClairStatus status = 1; +} + +service NotificationService { + // The RPC used to get a particularly Notification. + rpc GetNotification(GetNotificationRequest) returns (GetNotificationResponse) { + option (google.api.http) = { + get: "/notifications/{name}" + }; + } + + // The RPC used to mark a Notification as read after it has been processed. + rpc MarkNotificationAsRead(MarkNotificationAsReadRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + delete: "/notifications/{name}" + }; + } } message GetNotificationRequest { - // if the vulnerability_page is empty, it implies the first page. - string old_vulnerability_page = 1; - string new_vulnerability_page = 2; - int32 limit = 3; - string name = 4; + // The current page of previous vulnerabilities for the ancestry. + // This will be empty when it is the first page. + string old_vulnerability_page = 1; + + // The current page of vulnerabilities for the ancestry. + // This will be empty when it is the first page. + string new_vulnerability_page = 2; + + // The requested maximum number of results per page. + int32 limit = 3; + + // The name of the notification being requested. + string name = 4; } message GetNotificationResponse { - Notification notification = 1; + message Notification { + // The name of the requested notification. + string name = 1; + + // The time at which the notification was created. + string created = 2; + + // The time at which the notification was last sent out. + string notified = 3; + + // The time at which a notification has been deleted. + string deleted = 4; + + // The previous vulnerability and a paginated view of the ancestries it affects. + PagedVulnerableAncestries old = 5; + + // The newly updated vulnerability and a paginated view of the ancestries it affects. + PagedVulnerableAncestries new = 6; + } + + // The notification as requested. + Notification notification = 1; +} + +message PagedVulnerableAncestries { + message IndexedAncestryName { + // The index is an ever increasing number associated with the particular ancestry. + // This is useful if you're processing notifications, and need to keep track of the progress of paginating the results. + int32 index = 1; + + // The name of the ancestry. + string name = 2; + } + + // The identifier for the current page. + string current_page = 1; + + // The token used to request the next page. + // This will be empty when there are no more pages. + string next_page = 2; + + // The requested maximum number of results per page. + int32 limit = 3; + + // The vulnerability that affects a given set of ancestries. + Vulnerability vulnerability = 4; + + // The ancestries affected by a vulnerability. + repeated IndexedAncestryName ancestries = 5; } message MarkNotificationAsReadRequest { - string name = 1; + // The name of the Notification that has been processed. + string name = 1; } - -service AncestryService{ - rpc PostAncestry(PostAncestryRequest) returns (PostAncestryResponse) { - option (google.api.http) = { - post: "/ancestry" - body: "*" - }; - } - - rpc GetAncestry(GetAncestryRequest) returns (GetAncestryResponse) { - option (google.api.http) = { - get: "/ancestry/{ancestry_name}" - }; - } -} - -service NotificationService{ - rpc GetNotification(GetNotificationRequest) returns (GetNotificationResponse) { - option (google.api.http) = { - get: "/notifications/{name}" - }; - } - - rpc MarkNotificationAsRead(MarkNotificationAsReadRequest) returns (google.protobuf.Empty) { - option (google.api.http) = { - delete: "/notifications/{name}" - }; - } -} \ No newline at end of file diff --git a/api/v3/clairpb/clair.swagger.json b/api/v3/clairpb/clair.swagger.json index 8bfd19de..3b450729 100644 --- a/api/v3/clairpb/clair.swagger.json +++ b/api/v3/clairpb/clair.swagger.json @@ -17,6 +17,7 @@ "paths": { "/ancestry": { "post": { + "summary": "The RPC used to create a new scan of an ancestry.", "operationId": "PostAncestry", "responses": { "200": { @@ -43,6 +44,7 @@ }, "/ancestry/{ancestry_name}": { "get": { + "summary": "The RPC used to read the results of scanning for a particular ancestry.", "operationId": "GetAncestry", "responses": { "200": { @@ -61,6 +63,7 @@ }, { "name": "with_vulnerabilities", + "description": "Whether to include vulnerabilities or not in the response.", "in": "query", "required": false, "type": "boolean", @@ -68,6 +71,7 @@ }, { "name": "with_features", + "description": "Whether to include features or not in the response.", "in": "query", "required": false, "type": "boolean", @@ -81,6 +85,7 @@ }, "/notifications/{name}": { "get": { + "summary": "The RPC used to get a particularly Notification.", "operationId": "GetNotification", "responses": { "200": { @@ -99,19 +104,21 @@ }, { "name": "old_vulnerability_page", - "description": "if the vulnerability_page is empty, it implies the first page.", + "description": "The current page of previous vulnerabilities for the ancestry.\nThis will be empty when it is the first page.", "in": "query", "required": false, "type": "string" }, { "name": "new_vulnerability_page", + "description": "The current page of vulnerabilities for the ancestry.\nThis will be empty when it is the first page.", "in": "query", "required": false, "type": "string" }, { "name": "limit", + "description": "The requested maximum number of results per page.", "in": "query", "required": false, "type": "integer", @@ -123,6 +130,7 @@ ] }, "delete": { + "summary": "The RPC used to mark a Notification as read after it has been processed.", "operationId": "MarkNotificationAsRead", "responses": { "200": { @@ -147,53 +155,103 @@ } }, "definitions": { - "PostAncestryRequestPostLayer": { - "type": "object", - "properties": { - "hash": { - "type": "string" - }, - "path": { - "type": "string" - }, - "headers": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "clairpbAncestry": { + "GetAncestryResponseAncestry": { "type": "object", "properties": { "name": { - "type": "string" + "type": "string", + "description": "The name of the desired ancestry." }, "features": { "type": "array", "items": { "$ref": "#/definitions/clairpbFeature" - } + }, + "description": "The list of features present in the ancestry.\nThis will only be provided if requested." }, "layers": { "type": "array", "items": { "$ref": "#/definitions/clairpbLayer" - } + }, + "description": "The layers present in the ancestry." }, "scanned_listers": { "type": "array", "items": { "type": "string" }, - "description": "scanned_listers and scanned_detectors are used to scan this ancestry, it\nmay be different from listers and detectors in ClairStatus since the\nancestry could be scanned by previous version of Clair." + "description": "The configured list of feature listers used to scan this ancestry." }, "scanned_detectors": { "type": "array", "items": { "type": "string" - } + }, + "description": "The configured list of namespace detectors used to scan an ancestry." + } + } + }, + "GetNotificationResponseNotification": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of the requested notification." + }, + "created": { + "type": "string", + "description": "The time at which the notification was created." + }, + "notified": { + "type": "string", + "description": "The time at which the notification was last sent out." + }, + "deleted": { + "type": "string", + "description": "The time at which a notification has been deleted." + }, + "old": { + "$ref": "#/definitions/clairpbPagedVulnerableAncestries", + "description": "The previous vulnerability and a paginated view of the ancestries it affects." + }, + "new": { + "$ref": "#/definitions/clairpbPagedVulnerableAncestries", + "description": "The newly updated vulnerability and a paginated view of the ancestries it affects." + } + } + }, + "PagedVulnerableAncestriesIndexedAncestryName": { + "type": "object", + "properties": { + "index": { + "type": "integer", + "format": "int32", + "description": "The index is an ever increasing number associated with the particular ancestry.\nThis is useful if you're processing notifications, and need to keep track of the progress of paginating the results." + }, + "name": { + "type": "string", + "description": "The name of the ancestry." + } + } + }, + "PostAncestryRequestPostLayer": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "description": "The hash of the layer." + }, + "path": { + "type": "string", + "description": "The location of the layer (URL or filepath)." + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Any HTTP Headers that need to be used if requesting a layer over HTTP(S)." } } }, @@ -205,17 +263,19 @@ "items": { "type": "string" }, - "title": "listers and detectors are processors implemented in this Clair and used to\nscan ancestries" + "description": "The configured list of feature listers used to scan an ancestry." }, "detectors": { "type": "array", "items": { "type": "string" - } + }, + "description": "The configured list of namespace detectors used to scan an ancestry." }, "last_update_time": { "type": "string", - "format": "date-time" + "format": "date-time", + "description": "The time at which the updater last ran." } } }, @@ -223,23 +283,27 @@ "type": "object", "properties": { "name": { - "type": "string" + "type": "string", + "description": "The name of the feature." }, "namespace_name": { - "type": "string" + "type": "string", + "description": "The name of the namespace in which the feature is detected." }, "version": { - "type": "string" + "type": "string", + "description": "The specific version of this feature." }, "version_format": { "type": "string", - "description": "version_format is the format used by installer package manager to store\npackage versions." + "description": "The format used to parse version numbers for the feature." }, "vulnerabilities": { "type": "array", "items": { "$ref": "#/definitions/clairpbVulnerability" - } + }, + "description": "The list of vulnerabilities that affect the feature." } } }, @@ -247,10 +311,12 @@ "type": "object", "properties": { "ancestry": { - "$ref": "#/definitions/clairpbAncestry" + "$ref": "#/definitions/GetAncestryResponseAncestry", + "description": "The ancestry requested." }, "status": { - "$ref": "#/definitions/clairpbClairStatus" + "$ref": "#/definitions/clairpbClairStatus", + "description": "The status of Clair at the time of the request." } } }, @@ -258,20 +324,8 @@ "type": "object", "properties": { "notification": { - "$ref": "#/definitions/clairpbNotification" - } - } - }, - "clairpbIndexedAncestryName": { - "type": "object", - "properties": { - "index": { - "type": "integer", - "format": "int32", - "description": "index is unique to name in all streams simultaneously streamed, increasing\nand larger than all indexes in previous page in same stream." - }, - "name": { - "type": "string" + "$ref": "#/definitions/GetNotificationResponseNotification", + "description": "The notification as requested." } } }, @@ -279,30 +333,8 @@ "type": "object", "properties": { "hash": { - "type": "string" - } - } - }, - "clairpbNotification": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "created": { - "type": "string" - }, - "notified": { - "type": "string" - }, - "deleted": { - "type": "string" - }, - "old": { - "$ref": "#/definitions/clairpbPagedVulnerableAncestries" - }, - "new": { - "$ref": "#/definitions/clairpbPagedVulnerableAncestries" + "type": "string", + "description": "The sha256 tarsum for the layer." } } }, @@ -310,24 +342,28 @@ "type": "object", "properties": { "current_page": { - "type": "string" + "type": "string", + "description": "The identifier for the current page." }, "next_page": { "type": "string", - "description": "if next_page is empty, it signals the end of all pages." + "description": "The token used to request the next page.\nThis will be empty when there are no more pages." }, "limit": { "type": "integer", - "format": "int32" + "format": "int32", + "description": "The requested maximum number of results per page." }, "vulnerability": { - "$ref": "#/definitions/clairpbVulnerability" + "$ref": "#/definitions/clairpbVulnerability", + "description": "The vulnerability that affects a given set of ancestries." }, "ancestries": { "type": "array", "items": { - "$ref": "#/definitions/clairpbIndexedAncestryName" - } + "$ref": "#/definitions/PagedVulnerableAncestriesIndexedAncestryName" + }, + "description": "The ancestries affected by a vulnerability." } } }, @@ -335,16 +371,19 @@ "type": "object", "properties": { "ancestry_name": { - "type": "string" + "type": "string", + "description": "The name of the ancestry being scanned.\nIf scanning OCI images, this should be the hash of the manifest." }, "format": { - "type": "string" + "type": "string", + "description": "The format of the image being uploaded." }, "layers": { "type": "array", "items": { "$ref": "#/definitions/PostAncestryRequestPostLayer" - } + }, + "description": "The layers to be scanned for this particular ancestry." } } }, @@ -352,7 +391,8 @@ "type": "object", "properties": { "status": { - "$ref": "#/definitions/clairpbClairStatus" + "$ref": "#/definitions/clairpbClairStatus", + "description": "The status of Clair at the time of the request." } } }, @@ -360,33 +400,39 @@ "type": "object", "properties": { "name": { - "type": "string" + "type": "string", + "description": "The name of the vulnerability." }, "namespace_name": { - "type": "string" + "type": "string", + "description": "The name of the namespace in which the vulnerability was detected." }, "description": { - "type": "string" + "type": "string", + "description": "A description of the vulnerability according to the source for the namespace." }, "link": { - "type": "string" + "type": "string", + "description": "A link to the vulnerability according to the source for the namespace." }, "severity": { - "type": "string" + "type": "string", + "description": "How dangerous the vulnerability is." }, "metadata": { - "type": "string" + "type": "string", + "description": "Namespace agnostic metadata about the vulnerability." }, "fixed_by": { "type": "string", - "description": "fixed_by exists when vulnerability is under feature." + "description": "The feature that fixes this vulnerability.\nThis field only exists when a vulnerability is a part of a Feature." }, "affected_versions": { "type": "array", "items": { "$ref": "#/definitions/clairpbFeature" }, - "description": "affected_versions exists when vulnerability is under notification." + "description": "The Features that are affected by the vulnerability.\nThis field only exists when a vulnerability is a part of a Notification." } } }, diff --git a/api/v3/clairpb/convert.go b/api/v3/clairpb/convert.go index a3584587..408b0983 100644 --- a/api/v3/clairpb/convert.go +++ b/api/v3/clairpb/convert.go @@ -48,7 +48,7 @@ func PagedVulnerableAncestriesFromDatabaseModel(dbVuln *database.PagedVulnerable } for index, ancestryName := range dbVuln.Affected { - indexedAncestry := IndexedAncestryName{ + indexedAncestry := PagedVulnerableAncestries_IndexedAncestryName{ Name: ancestryName, Index: int32(index), } @@ -60,9 +60,9 @@ func PagedVulnerableAncestriesFromDatabaseModel(dbVuln *database.PagedVulnerable // NotificationFromDatabaseModel converts database notification, old and new // vulnerabilities' paged vulnerable ancestries to be api notification. -func NotificationFromDatabaseModel(dbNotification database.VulnerabilityNotificationWithVulnerable) (*Notification, error) { +func NotificationFromDatabaseModel(dbNotification database.VulnerabilityNotificationWithVulnerable) (*GetNotificationResponse_Notification, error) { var ( - noti Notification + noti GetNotificationResponse_Notification err error ) @@ -123,8 +123,8 @@ func VulnerabilityWithFixedInFromDatabaseModel(dbVuln database.VulnerabilityWith } // AncestryFromDatabaseModel converts database ancestry to api ancestry. -func AncestryFromDatabaseModel(dbAncestry database.Ancestry) *Ancestry { - ancestry := &Ancestry{ +func AncestryFromDatabaseModel(dbAncestry database.Ancestry) *GetAncestryResponse_Ancestry { + ancestry := &GetAncestryResponse_Ancestry{ Name: dbAncestry.Name, } for _, layer := range dbAncestry.Layers { From d7a751e0d4298442883fde30ee37c529b2bb3719 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Sun, 22 Apr 2018 15:11:41 -0400 Subject: [PATCH 2/4] api/v3: prototool format --- api/v3/clairpb/clair.pb.go | 218 +++++++++++++++--------------- api/v3/clairpb/clair.proto | 82 +++-------- api/v3/clairpb/clair.swagger.json | 44 +++--- api/v3/clairpb/prototool.yaml | 3 + 4 files changed, 153 insertions(+), 194 deletions(-) create mode 100644 api/v3/clairpb/prototool.yaml diff --git a/api/v3/clairpb/clair.pb.go b/api/v3/clairpb/clair.pb.go index 7125402e..2c1ed417 100644 --- a/api/v3/clairpb/clair.pb.go +++ b/api/v3/clairpb/clair.pb.go @@ -26,9 +26,9 @@ package clairpb import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" +import google_protobuf "github.com/golang/protobuf/ptypes/empty" +import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" import _ "google.golang.org/genproto/googleapis/api/annotations" -import google_protobuf1 "github.com/golang/protobuf/ptypes/empty" -import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp" import ( context "golang.org/x/net/context" @@ -204,7 +204,7 @@ type ClairStatus struct { // The configured list of namespace detectors used to scan an ancestry. Detectors []string `protobuf:"bytes,2,rep,name=detectors" json:"detectors,omitempty"` // The time at which the updater last ran. - LastUpdateTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` + LastUpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` } func (m *ClairStatus) Reset() { *m = ClairStatus{} } @@ -226,7 +226,7 @@ func (m *ClairStatus) GetDetectors() []string { return nil } -func (m *ClairStatus) GetLastUpdateTime() *google_protobuf2.Timestamp { +func (m *ClairStatus) GetLastUpdateTime() *google_protobuf1.Timestamp { if m != nil { return m.LastUpdateTime } @@ -670,22 +670,22 @@ func (m *MarkNotificationAsReadRequest) GetName() string { } func init() { - proto.RegisterType((*Vulnerability)(nil), "clairpb.Vulnerability") - proto.RegisterType((*Feature)(nil), "clairpb.Feature") - proto.RegisterType((*Layer)(nil), "clairpb.Layer") - proto.RegisterType((*ClairStatus)(nil), "clairpb.ClairStatus") - proto.RegisterType((*GetAncestryRequest)(nil), "clairpb.GetAncestryRequest") - proto.RegisterType((*GetAncestryResponse)(nil), "clairpb.GetAncestryResponse") - proto.RegisterType((*GetAncestryResponse_Ancestry)(nil), "clairpb.GetAncestryResponse.Ancestry") - proto.RegisterType((*PostAncestryRequest)(nil), "clairpb.PostAncestryRequest") - proto.RegisterType((*PostAncestryRequest_PostLayer)(nil), "clairpb.PostAncestryRequest.PostLayer") - proto.RegisterType((*PostAncestryResponse)(nil), "clairpb.PostAncestryResponse") - proto.RegisterType((*GetNotificationRequest)(nil), "clairpb.GetNotificationRequest") - proto.RegisterType((*GetNotificationResponse)(nil), "clairpb.GetNotificationResponse") - proto.RegisterType((*GetNotificationResponse_Notification)(nil), "clairpb.GetNotificationResponse.Notification") - proto.RegisterType((*PagedVulnerableAncestries)(nil), "clairpb.PagedVulnerableAncestries") - proto.RegisterType((*PagedVulnerableAncestries_IndexedAncestryName)(nil), "clairpb.PagedVulnerableAncestries.IndexedAncestryName") - proto.RegisterType((*MarkNotificationAsReadRequest)(nil), "clairpb.MarkNotificationAsReadRequest") + proto.RegisterType((*Vulnerability)(nil), "coreos.clair.Vulnerability") + proto.RegisterType((*Feature)(nil), "coreos.clair.Feature") + proto.RegisterType((*Layer)(nil), "coreos.clair.Layer") + proto.RegisterType((*ClairStatus)(nil), "coreos.clair.ClairStatus") + proto.RegisterType((*GetAncestryRequest)(nil), "coreos.clair.GetAncestryRequest") + proto.RegisterType((*GetAncestryResponse)(nil), "coreos.clair.GetAncestryResponse") + proto.RegisterType((*GetAncestryResponse_Ancestry)(nil), "coreos.clair.GetAncestryResponse.Ancestry") + proto.RegisterType((*PostAncestryRequest)(nil), "coreos.clair.PostAncestryRequest") + proto.RegisterType((*PostAncestryRequest_PostLayer)(nil), "coreos.clair.PostAncestryRequest.PostLayer") + proto.RegisterType((*PostAncestryResponse)(nil), "coreos.clair.PostAncestryResponse") + proto.RegisterType((*GetNotificationRequest)(nil), "coreos.clair.GetNotificationRequest") + proto.RegisterType((*GetNotificationResponse)(nil), "coreos.clair.GetNotificationResponse") + proto.RegisterType((*GetNotificationResponse_Notification)(nil), "coreos.clair.GetNotificationResponse.Notification") + proto.RegisterType((*PagedVulnerableAncestries)(nil), "coreos.clair.PagedVulnerableAncestries") + proto.RegisterType((*PagedVulnerableAncestries_IndexedAncestryName)(nil), "coreos.clair.PagedVulnerableAncestries.IndexedAncestryName") + proto.RegisterType((*MarkNotificationAsReadRequest)(nil), "coreos.clair.MarkNotificationAsReadRequest") } // Reference imports to suppress errors if they are not otherwise used. @@ -715,7 +715,7 @@ func NewAncestryServiceClient(cc *grpc.ClientConn) AncestryServiceClient { func (c *ancestryServiceClient) GetAncestry(ctx context.Context, in *GetAncestryRequest, opts ...grpc.CallOption) (*GetAncestryResponse, error) { out := new(GetAncestryResponse) - err := grpc.Invoke(ctx, "/clairpb.AncestryService/GetAncestry", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/coreos.clair.AncestryService/GetAncestry", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -724,7 +724,7 @@ func (c *ancestryServiceClient) GetAncestry(ctx context.Context, in *GetAncestry func (c *ancestryServiceClient) PostAncestry(ctx context.Context, in *PostAncestryRequest, opts ...grpc.CallOption) (*PostAncestryResponse, error) { out := new(PostAncestryResponse) - err := grpc.Invoke(ctx, "/clairpb.AncestryService/PostAncestry", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/coreos.clair.AncestryService/PostAncestry", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -754,7 +754,7 @@ func _AncestryService_GetAncestry_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/clairpb.AncestryService/GetAncestry", + FullMethod: "/coreos.clair.AncestryService/GetAncestry", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AncestryServiceServer).GetAncestry(ctx, req.(*GetAncestryRequest)) @@ -772,7 +772,7 @@ func _AncestryService_PostAncestry_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/clairpb.AncestryService/PostAncestry", + FullMethod: "/coreos.clair.AncestryService/PostAncestry", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(AncestryServiceServer).PostAncestry(ctx, req.(*PostAncestryRequest)) @@ -781,7 +781,7 @@ func _AncestryService_PostAncestry_Handler(srv interface{}, ctx context.Context, } var _AncestryService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "clairpb.AncestryService", + ServiceName: "coreos.clair.AncestryService", HandlerType: (*AncestryServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -803,7 +803,7 @@ type NotificationServiceClient interface { // The RPC used to get a particularly Notification. GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*GetNotificationResponse, error) // The RPC used to mark a Notification as read after it has been processed. - MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) + MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) } type notificationServiceClient struct { @@ -816,16 +816,16 @@ func NewNotificationServiceClient(cc *grpc.ClientConn) NotificationServiceClient func (c *notificationServiceClient) GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*GetNotificationResponse, error) { out := new(GetNotificationResponse) - err := grpc.Invoke(ctx, "/clairpb.NotificationService/GetNotification", in, out, c.cc, opts...) + err := grpc.Invoke(ctx, "/coreos.clair.NotificationService/GetNotification", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } -func (c *notificationServiceClient) MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) { - out := new(google_protobuf1.Empty) - err := grpc.Invoke(ctx, "/clairpb.NotificationService/MarkNotificationAsRead", in, out, c.cc, opts...) +func (c *notificationServiceClient) MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { + out := new(google_protobuf.Empty) + err := grpc.Invoke(ctx, "/coreos.clair.NotificationService/MarkNotificationAsRead", in, out, c.cc, opts...) if err != nil { return nil, err } @@ -838,7 +838,7 @@ type NotificationServiceServer interface { // The RPC used to get a particularly Notification. GetNotification(context.Context, *GetNotificationRequest) (*GetNotificationResponse, error) // The RPC used to mark a Notification as read after it has been processed. - MarkNotificationAsRead(context.Context, *MarkNotificationAsReadRequest) (*google_protobuf1.Empty, error) + MarkNotificationAsRead(context.Context, *MarkNotificationAsReadRequest) (*google_protobuf.Empty, error) } func RegisterNotificationServiceServer(s *grpc.Server, srv NotificationServiceServer) { @@ -855,7 +855,7 @@ func _NotificationService_GetNotification_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/clairpb.NotificationService/GetNotification", + FullMethod: "/coreos.clair.NotificationService/GetNotification", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(NotificationServiceServer).GetNotification(ctx, req.(*GetNotificationRequest)) @@ -873,7 +873,7 @@ func _NotificationService_MarkNotificationAsRead_Handler(srv interface{}, ctx co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/clairpb.NotificationService/MarkNotificationAsRead", + FullMethod: "/coreos.clair.NotificationService/MarkNotificationAsRead", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(NotificationServiceServer).MarkNotificationAsRead(ctx, req.(*MarkNotificationAsReadRequest)) @@ -882,7 +882,7 @@ func _NotificationService_MarkNotificationAsRead_Handler(srv interface{}, ctx co } var _NotificationService_serviceDesc = grpc.ServiceDesc{ - ServiceName: "clairpb.NotificationService", + ServiceName: "coreos.clair.NotificationService", HandlerType: (*NotificationServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -901,78 +901,80 @@ var _NotificationService_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api/v3/clairpb/clair.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1166 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x6f, 0xdb, 0x54, - 0x14, 0x97, 0xd3, 0xa6, 0x49, 0x4e, 0xd2, 0x8f, 0xdd, 0x86, 0xcc, 0x73, 0x3b, 0xad, 0x33, 0xda, - 0x98, 0xc6, 0x48, 0x44, 0x3a, 0x21, 0x54, 0xf1, 0xd5, 0xd1, 0x6d, 0x20, 0x6d, 0xd3, 0xf0, 0xa0, - 0x0f, 0xbc, 0x44, 0xb7, 0xf6, 0x49, 0x6b, 0xd5, 0xb1, 0x8d, 0xef, 0x4d, 0xd2, 0x68, 0xe2, 0x05, - 0x1e, 0x79, 0x02, 0xfe, 0x0f, 0xfe, 0x04, 0x5e, 0x41, 0x48, 0x3c, 0xed, 0x1d, 0x09, 0x89, 0x3f, - 0x04, 0xdd, 0xeb, 0x7b, 0x1d, 0xbb, 0x75, 0xdb, 0x09, 0x9e, 0xe2, 0xf3, 0xfd, 0xf5, 0x3b, 0xf7, - 0x04, 0x2c, 0x1a, 0xfb, 0xbd, 0xc9, 0x76, 0xcf, 0x0d, 0xa8, 0x9f, 0xc4, 0x07, 0xe9, 0x6f, 0x37, - 0x4e, 0x22, 0x1e, 0x91, 0x9a, 0x62, 0x5a, 0x9b, 0x87, 0x51, 0x74, 0x18, 0x60, 0x4f, 0xe8, 0xd2, - 0x30, 0x8c, 0x38, 0xe5, 0x7e, 0x14, 0xb2, 0x54, 0xcd, 0xda, 0x50, 0x52, 0x49, 0x1d, 0x8c, 0x87, - 0x3d, 0x1c, 0xc5, 0x7c, 0xa6, 0x84, 0x37, 0x4e, 0x0b, 0xb9, 0x3f, 0x42, 0xc6, 0xe9, 0x28, 0x4e, - 0x15, 0xec, 0x9f, 0x2a, 0xb0, 0xbc, 0x3f, 0x0e, 0x42, 0x4c, 0xe8, 0x81, 0x1f, 0xf8, 0x7c, 0x46, - 0x08, 0x2c, 0x86, 0x74, 0x84, 0xa6, 0xb1, 0x65, 0xdc, 0x69, 0x38, 0xf2, 0x9b, 0xdc, 0x82, 0x15, - 0xf1, 0xcb, 0x62, 0xea, 0xe2, 0x40, 0x4a, 0x2b, 0x52, 0xba, 0x9c, 0x71, 0x9f, 0x09, 0xb5, 0x2d, - 0x68, 0x7a, 0xc8, 0xdc, 0xc4, 0x8f, 0x45, 0x82, 0xe6, 0x82, 0xd4, 0xc9, 0xb3, 0x84, 0xf3, 0xc0, - 0x0f, 0x8f, 0xcd, 0xc5, 0xd4, 0xb9, 0xf8, 0x26, 0x16, 0xd4, 0x19, 0x4e, 0x30, 0xf1, 0xf9, 0xcc, - 0xac, 0x4a, 0x7e, 0x46, 0x0b, 0xd9, 0x08, 0x39, 0xf5, 0x28, 0xa7, 0xe6, 0x52, 0x2a, 0xd3, 0x34, - 0xb9, 0x06, 0xf5, 0xa1, 0x7f, 0x82, 0xde, 0xe0, 0x60, 0x66, 0xd6, 0xa4, 0xac, 0x26, 0xe9, 0x07, - 0x33, 0xf2, 0x21, 0x5c, 0xa1, 0xc3, 0x21, 0xba, 0x1c, 0xbd, 0xc1, 0x04, 0x13, 0x26, 0xda, 0x65, - 0xd6, 0xb7, 0x16, 0xee, 0x34, 0xfb, 0x6b, 0x5d, 0xd5, 0xd6, 0xee, 0x23, 0xa4, 0x7c, 0x9c, 0xa0, - 0xb3, 0xa6, 0x55, 0xf7, 0x95, 0xa6, 0xfd, 0x9b, 0x01, 0x35, 0x25, 0xfd, 0x3f, 0xed, 0x30, 0xa1, - 0xa6, 0x82, 0xab, 0x56, 0x68, 0x52, 0x38, 0x50, 0x9f, 0x83, 0x61, 0x94, 0x8c, 0x28, 0x57, 0x0d, - 0x59, 0x56, 0xdc, 0x47, 0x92, 0x49, 0x3e, 0x81, 0xd5, 0x49, 0x6e, 0x36, 0x3e, 0x32, 0xb3, 0x2a, - 0x8b, 0xe8, 0x64, 0x45, 0x14, 0x66, 0xe7, 0x9c, 0x56, 0xb7, 0x37, 0xa0, 0xfa, 0x84, 0xce, 0x30, - 0x11, 0x65, 0x1c, 0x51, 0x76, 0xa4, 0xcb, 0x10, 0xdf, 0xf6, 0x0f, 0x06, 0x34, 0x3f, 0x15, 0x7e, - 0x5e, 0x70, 0xca, 0xc7, 0x4c, 0xe4, 0x1b, 0xf8, 0x8c, 0x63, 0xc2, 0x4c, 0x63, 0x6b, 0x41, 0xe4, - 0xab, 0x48, 0xb2, 0x09, 0x0d, 0x0f, 0x39, 0xba, 0x3c, 0x4a, 0x98, 0x59, 0x91, 0xb2, 0x39, 0x83, - 0xec, 0xc1, 0x5a, 0x40, 0x19, 0x1f, 0x8c, 0x63, 0x8f, 0x72, 0x1c, 0x08, 0x88, 0xc9, 0x82, 0x9b, - 0x7d, 0xab, 0x9b, 0xe2, 0xaf, 0xab, 0xf1, 0xd7, 0xfd, 0x52, 0xe3, 0xcf, 0x59, 0x11, 0x36, 0x5f, - 0x49, 0x13, 0xc1, 0xb4, 0x7f, 0x34, 0x80, 0x3c, 0x46, 0xbe, 0x1b, 0xba, 0xc8, 0x78, 0x32, 0x73, - 0xf0, 0x9b, 0x31, 0x32, 0x4e, 0xde, 0x84, 0x65, 0xaa, 0x58, 0x83, 0xdc, 0x20, 0x5a, 0x9a, 0x29, - 0x3b, 0xfd, 0x2e, 0xb4, 0xa7, 0x3e, 0x3f, 0x1a, 0x9c, 0xee, 0x96, 0x18, 0x4b, 0xdd, 0x59, 0x17, - 0xb2, 0xfd, 0xa2, 0x48, 0xf8, 0x95, 0x26, 0xc3, 0x74, 0xce, 0x4c, 0x66, 0x5c, 0x77, 0x5a, 0x82, - 0xa9, 0x66, 0xcf, 0xec, 0x57, 0x15, 0x58, 0x2f, 0xe4, 0xc4, 0xe2, 0x28, 0x64, 0x48, 0x76, 0xa1, - 0xae, 0xe3, 0xcb, 0x7c, 0x9a, 0xfd, 0x5b, 0xd9, 0x44, 0x4a, 0xf4, 0xbb, 0x19, 0x23, 0x33, 0x23, - 0xf7, 0x60, 0x89, 0xc9, 0xb6, 0xcb, 0x24, 0x9b, 0xfd, 0x76, 0xe6, 0x20, 0x37, 0x12, 0x47, 0xe9, - 0x58, 0x7f, 0x18, 0x50, 0xd7, 0x4e, 0x4a, 0x21, 0x79, 0x0f, 0xea, 0x59, 0x25, 0x95, 0x73, 0x80, - 0x9e, 0x69, 0x90, 0xdb, 0xb0, 0x14, 0x08, 0x58, 0x88, 0xaa, 0x85, 0xee, 0x4a, 0xa6, 0x2b, 0xd1, - 0xe2, 0x28, 0x29, 0x79, 0x0b, 0x56, 0x99, 0x4b, 0xc3, 0x10, 0xbd, 0x81, 0x46, 0xc6, 0xa2, 0x9c, - 0xfe, 0x8a, 0x62, 0x3f, 0x51, 0x00, 0x79, 0x1b, 0xae, 0x68, 0xc5, 0x39, 0x50, 0xaa, 0x52, 0x75, - 0x4d, 0x09, 0xf6, 0x34, 0x5f, 0x76, 0xf5, 0x79, 0xc4, 0xfe, 0xdb, 0xa8, 0x3b, 0xb0, 0xa4, 0x56, - 0x26, 0xdd, 0x39, 0x45, 0x91, 0x8f, 0x4e, 0x95, 0x74, 0x3b, 0x2b, 0xa9, 0x24, 0x94, 0xe4, 0x15, - 0x4a, 0xb5, 0x7e, 0x35, 0xa0, 0x91, 0x71, 0xcb, 0xd6, 0x45, 0xf0, 0x62, 0xca, 0x8f, 0x54, 0x5c, - 0xf9, 0x4d, 0x9e, 0x42, 0xed, 0x08, 0xa9, 0x37, 0x0f, 0xbb, 0xfd, 0x7a, 0x61, 0xbb, 0x9f, 0xa5, - 0x56, 0x0f, 0x43, 0x21, 0xd5, 0x3e, 0xac, 0x1d, 0x68, 0xe5, 0x05, 0x64, 0x0d, 0x16, 0x8e, 0x71, - 0xa6, 0xb2, 0x10, 0x9f, 0xa4, 0x0d, 0xd5, 0x09, 0x0d, 0xc6, 0xfa, 0xc5, 0x49, 0x89, 0x9d, 0xca, - 0xfb, 0x86, 0xbd, 0x07, 0xed, 0x62, 0x48, 0x85, 0xd5, 0x39, 0xd0, 0x8c, 0xcb, 0x81, 0x66, 0xff, - 0x62, 0x40, 0xe7, 0x31, 0xf2, 0x67, 0x11, 0xf7, 0x87, 0xbe, 0x2b, 0x0f, 0x8d, 0x1e, 0xcf, 0x7d, - 0xe8, 0x44, 0x81, 0x57, 0xd8, 0xb1, 0xd9, 0x20, 0xa6, 0x87, 0x7a, 0x4e, 0xed, 0x28, 0xf0, 0x0a, - 0xcf, 0xd1, 0x73, 0x7a, 0x88, 0xc2, 0x2a, 0xc4, 0x69, 0x99, 0x55, 0x5a, 0x41, 0x3b, 0xc4, 0xe9, - 0x59, 0xab, 0x36, 0x54, 0x03, 0x7f, 0xe4, 0x73, 0xb9, 0x95, 0x55, 0x27, 0x25, 0x32, 0xe0, 0x2f, - 0xce, 0x81, 0x6f, 0xff, 0x59, 0x81, 0xab, 0x67, 0x12, 0x56, 0xa5, 0x7f, 0x01, 0xad, 0x30, 0xc7, - 0x57, 0x0d, 0x78, 0x27, 0xbf, 0xaa, 0x65, 0x76, 0xdd, 0x02, 0xb3, 0xe0, 0xc2, 0xfa, 0xcb, 0x80, - 0x56, 0x5e, 0x5c, 0xba, 0x8c, 0x26, 0xd4, 0xdc, 0x04, 0x29, 0x47, 0x4f, 0x15, 0xa9, 0x49, 0x71, - 0xcf, 0x52, 0x77, 0xe8, 0xa9, 0x9b, 0x90, 0xd1, 0xc2, 0xca, 0xc3, 0x00, 0x85, 0x55, 0x5a, 0xa0, - 0x26, 0xc9, 0x7d, 0x58, 0x88, 0x02, 0x4f, 0x1e, 0xc7, 0x66, 0xdf, 0x9e, 0x23, 0x8c, 0x1e, 0x62, - 0xd6, 0xf1, 0x00, 0xd5, 0xe4, 0x7d, 0x64, 0x8e, 0x50, 0x17, 0x56, 0x21, 0x4e, 0xe5, 0xd9, 0x7c, - 0x4d, 0xab, 0x10, 0xa7, 0xf6, 0xef, 0x15, 0xb8, 0x76, 0xae, 0x0a, 0xb9, 0x09, 0x2d, 0x77, 0x9c, - 0x24, 0x18, 0xf2, 0xfc, 0xe4, 0x9b, 0x8a, 0x27, 0x47, 0xb7, 0x01, 0x8d, 0x10, 0x4f, 0x78, 0x7e, - 0xc6, 0x75, 0xc1, 0xb8, 0x60, 0xae, 0x1f, 0xc0, 0x72, 0x01, 0x1f, 0xb2, 0xfe, 0xf3, 0xaf, 0x5c, - 0x51, 0x99, 0xec, 0x03, 0xd0, 0x2c, 0x43, 0x75, 0x20, 0xdf, 0xbb, 0xbc, 0xdc, 0xee, 0xe7, 0xa1, - 0x87, 0x27, 0xe8, 0xed, 0xe6, 0x5e, 0x17, 0x27, 0xe7, 0xc9, 0xfa, 0x18, 0xd6, 0x4b, 0x54, 0x44, - 0x09, 0xbe, 0x60, 0xcb, 0xda, 0xab, 0x4e, 0x4a, 0x64, 0x30, 0xa8, 0xe4, 0xa0, 0xb9, 0x0d, 0xd7, - 0x9f, 0xd2, 0xe4, 0x38, 0x0f, 0x97, 0x5d, 0xe6, 0x20, 0xf5, 0xf4, 0x46, 0x95, 0x60, 0xa7, 0xff, - 0xb7, 0x01, 0xab, 0x3a, 0xde, 0x0b, 0x4c, 0x26, 0xbe, 0x8b, 0xe4, 0x18, 0x9a, 0xb9, 0xab, 0x42, - 0x36, 0xca, 0x6f, 0x8d, 0xf4, 0x69, 0x6d, 0x5e, 0x74, 0x88, 0xec, 0x9b, 0xdf, 0xbd, 0xfa, 0xe7, - 0xe7, 0xca, 0x06, 0xb9, 0xd6, 0xd3, 0x8f, 0x6a, 0xef, 0x65, 0xe1, 0xcd, 0xfd, 0x96, 0x50, 0x68, - 0xe5, 0xdf, 0x11, 0xb2, 0x79, 0xd1, 0x8b, 0x66, 0x5d, 0x3f, 0x47, 0xaa, 0xe2, 0xb5, 0x65, 0xbc, - 0x15, 0xbb, 0x91, 0xc5, 0xdb, 0x31, 0xee, 0xf6, 0xbf, 0xaf, 0xc0, 0x7a, 0xbe, 0x2b, 0xba, 0x4e, - 0x06, 0xab, 0xa7, 0x56, 0x92, 0xdc, 0x38, 0x7f, 0x59, 0xd3, 0x04, 0xb6, 0x2e, 0xdb, 0x66, 0xfb, - 0xba, 0xcc, 0xe1, 0x2a, 0x79, 0xa3, 0x97, 0xdf, 0x64, 0xd6, 0x7b, 0x99, 0xd6, 0x3b, 0x85, 0x4e, - 0xf9, 0x94, 0xc8, 0xfc, 0x84, 0x5c, 0x38, 0x46, 0xab, 0x73, 0xe6, 0x5f, 0xce, 0x43, 0xf1, 0x17, - 0x5c, 0x07, 0xbe, 0x5b, 0x1e, 0xf8, 0x41, 0xe3, 0x6b, 0xfd, 0x0f, 0xff, 0x60, 0x49, 0x5a, 0x6e, - 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xee, 0xb6, 0xdc, 0x0f, 0x0c, 0x00, 0x00, + // 1189 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4f, 0x73, 0xdb, 0x44, + 0x14, 0x1f, 0x29, 0x71, 0xec, 0x3c, 0x3b, 0x7f, 0xba, 0x76, 0x53, 0x45, 0x69, 0x21, 0x11, 0x74, + 0xda, 0x69, 0x67, 0xec, 0xa9, 0xcb, 0xa1, 0x94, 0x03, 0x93, 0xb4, 0x49, 0xe9, 0x4c, 0xe9, 0x74, + 0x54, 0xc8, 0x01, 0x0e, 0x9e, 0xb5, 0xf4, 0x9c, 0x68, 0x22, 0x4b, 0x42, 0xbb, 0x76, 0xe2, 0x29, + 0xbd, 0x70, 0xe5, 0x04, 0x1c, 0xf8, 0x16, 0x7c, 0x09, 0xae, 0x9c, 0x80, 0x23, 0xdc, 0x98, 0x81, + 0x2f, 0xc0, 0x9d, 0xd9, 0xd5, 0xae, 0x22, 0x39, 0x26, 0x49, 0xe1, 0x14, 0xbd, 0xff, 0xff, 0x7e, + 0x6f, 0x5f, 0x0c, 0x36, 0x4d, 0x82, 0xce, 0xf8, 0x7e, 0xc7, 0x0b, 0x69, 0x90, 0x26, 0xfd, 0xec, + 0x6f, 0x3b, 0x49, 0x63, 0x1e, 0x93, 0x86, 0x17, 0xa7, 0x18, 0xb3, 0xb6, 0xe4, 0xd9, 0x1b, 0x07, + 0x71, 0x7c, 0x10, 0x62, 0x47, 0xca, 0xfa, 0xa3, 0x41, 0x07, 0x87, 0x09, 0x9f, 0x64, 0xaa, 0xf6, + 0xdb, 0xd3, 0x42, 0x1e, 0x0c, 0x91, 0x71, 0x3a, 0x4c, 0x94, 0xc2, 0x75, 0xa5, 0x20, 0xc2, 0xd1, + 0x28, 0x8a, 0x39, 0xe5, 0x41, 0x1c, 0xb1, 0x4c, 0xea, 0x7c, 0x6f, 0xc2, 0xd2, 0xfe, 0x28, 0x8c, + 0x30, 0xa5, 0xfd, 0x20, 0x0c, 0xf8, 0x84, 0x10, 0x98, 0x8f, 0xe8, 0x10, 0x2d, 0x63, 0xd3, 0xb8, + 0xbd, 0xe8, 0xca, 0x6f, 0x72, 0x13, 0x96, 0xc5, 0x5f, 0x96, 0x50, 0x0f, 0x7b, 0x52, 0x6a, 0x4a, + 0xe9, 0x52, 0xce, 0x7d, 0x2e, 0xd4, 0x36, 0xa1, 0xee, 0x23, 0xf3, 0xd2, 0x20, 0x11, 0x21, 0xac, + 0x39, 0xa9, 0x53, 0x64, 0x09, 0xe7, 0x61, 0x10, 0x1d, 0x59, 0xf3, 0x99, 0x73, 0xf1, 0x4d, 0x6c, + 0xa8, 0x31, 0x1c, 0x63, 0x1a, 0xf0, 0x89, 0x55, 0x91, 0xfc, 0x9c, 0x16, 0xb2, 0x21, 0x72, 0xea, + 0x53, 0x4e, 0xad, 0x85, 0x4c, 0xa6, 0x69, 0xb2, 0x0e, 0xb5, 0x41, 0x70, 0x82, 0x7e, 0xaf, 0x3f, + 0xb1, 0xaa, 0x52, 0x56, 0x95, 0xf4, 0xce, 0x84, 0xec, 0xc0, 0x15, 0x3a, 0x18, 0xa0, 0xc7, 0xd1, + 0xef, 0x8d, 0x31, 0x65, 0xa2, 0x60, 0xab, 0xb6, 0x39, 0x77, 0xbb, 0xde, 0xbd, 0xda, 0x2e, 0xf6, + 0xb6, 0xbd, 0x87, 0x94, 0x8f, 0x52, 0x74, 0x57, 0xb5, 0xfe, 0xbe, 0x52, 0x77, 0x7e, 0x32, 0xa0, + 0xaa, 0xa4, 0xff, 0xa7, 0x27, 0x16, 0x54, 0x55, 0x06, 0xaa, 0x1f, 0x9a, 0x14, 0x0e, 0xd4, 0x67, + 0x6f, 0x10, 0xa7, 0x43, 0xca, 0x55, 0x57, 0x96, 0x14, 0x77, 0x4f, 0x32, 0xc9, 0x2e, 0xac, 0x8c, + 0x0b, 0x03, 0x0a, 0x90, 0x59, 0x15, 0x59, 0xc9, 0x46, 0xb9, 0x92, 0xd2, 0x14, 0xdd, 0x69, 0x1b, + 0x67, 0x03, 0x2a, 0xcf, 0xe8, 0x04, 0x53, 0x51, 0xcb, 0x21, 0x65, 0x87, 0xba, 0x16, 0xf1, 0xed, + 0x7c, 0x6d, 0x40, 0xfd, 0x91, 0xf0, 0xf2, 0x92, 0x53, 0x3e, 0x62, 0x22, 0xe9, 0x30, 0x60, 0x1c, + 0x53, 0x66, 0x19, 0x9b, 0x73, 0x22, 0x69, 0x45, 0x92, 0xeb, 0xb0, 0xe8, 0x23, 0x47, 0x8f, 0xc7, + 0x29, 0xb3, 0x4c, 0x29, 0x3b, 0x65, 0x90, 0xc7, 0xb0, 0x1a, 0x52, 0xc6, 0x7b, 0xa3, 0xc4, 0xa7, + 0x1c, 0x7b, 0x02, 0x8a, 0xb2, 0xea, 0x7a, 0xd7, 0x6e, 0x67, 0x30, 0x6c, 0x6b, 0x9c, 0xb6, 0x3f, + 0xd1, 0x38, 0x75, 0x97, 0x85, 0xcd, 0xa7, 0xd2, 0x44, 0x30, 0x9d, 0x6f, 0x0c, 0x20, 0x4f, 0x90, + 0x6f, 0x47, 0x1e, 0x32, 0x9e, 0x4e, 0x5c, 0xfc, 0x62, 0x84, 0x8c, 0x93, 0x77, 0x60, 0x89, 0x2a, + 0x56, 0xaf, 0x30, 0x8d, 0x86, 0x66, 0xca, 0x76, 0xdf, 0x83, 0xd6, 0x71, 0xc0, 0x0f, 0x7b, 0xd3, + 0x2d, 0x13, 0xb3, 0xa9, 0xb9, 0x4d, 0x21, 0xdb, 0x2f, 0x8b, 0x84, 0x5f, 0x69, 0x32, 0xc8, 0x86, + 0xcd, 0x64, 0xc6, 0x35, 0xb7, 0x21, 0x98, 0x0a, 0x00, 0xcc, 0xf9, 0xd3, 0x84, 0x66, 0x29, 0x27, + 0x96, 0xc4, 0x11, 0x43, 0xb2, 0x07, 0x35, 0x1d, 0x5f, 0xe6, 0x53, 0xef, 0xde, 0x29, 0x8f, 0x65, + 0x86, 0x51, 0x3b, 0x67, 0xe4, 0xb6, 0xe4, 0x1e, 0x2c, 0x30, 0xd9, 0x7b, 0x99, 0x69, 0xbd, 0xbb, + 0x5e, 0xf6, 0x52, 0x18, 0x8e, 0xab, 0x14, 0xed, 0x5f, 0x0d, 0xa8, 0x69, 0x4f, 0x33, 0x11, 0x7a, + 0x0f, 0x6a, 0x79, 0x4d, 0xe6, 0x79, 0xe0, 0xcf, 0xd5, 0xc8, 0x5d, 0x58, 0x08, 0x05, 0x4a, 0x44, + 0x13, 0x84, 0x41, 0xb3, 0x6c, 0x20, 0x11, 0xe4, 0x2a, 0x15, 0x72, 0x0b, 0x56, 0x98, 0x47, 0xa3, + 0x08, 0xfd, 0x9e, 0x46, 0xcb, 0xbc, 0x44, 0xc4, 0xb2, 0x62, 0x3f, 0x53, 0xa0, 0xb9, 0x0b, 0x57, + 0xb4, 0xe2, 0x29, 0x78, 0x2a, 0x52, 0x75, 0x55, 0x09, 0x1e, 0x6b, 0xbe, 0xf3, 0xbb, 0x09, 0xcd, + 0x17, 0x31, 0xfb, 0x6f, 0xe3, 0x5f, 0x83, 0x05, 0xb5, 0x4b, 0xd9, 0x32, 0x2a, 0x8a, 0x3c, 0x9a, + 0xaa, 0xeb, 0x6e, 0xb9, 0xae, 0x19, 0xf1, 0x24, 0xaf, 0x54, 0xaf, 0xfd, 0xa3, 0x01, 0x8b, 0x39, + 0x77, 0xd6, 0x1e, 0x09, 0x5e, 0x42, 0xf9, 0xa1, 0x0a, 0x2e, 0xbf, 0x89, 0x0b, 0xd5, 0x43, 0xa4, + 0xfe, 0x69, 0xec, 0x07, 0x6f, 0x10, 0xbb, 0xfd, 0x51, 0x66, 0xba, 0x1b, 0x09, 0xa9, 0x76, 0x64, + 0x3f, 0x84, 0x46, 0x51, 0x40, 0x56, 0x61, 0xee, 0x08, 0x27, 0x2a, 0x15, 0xf1, 0x49, 0x5a, 0x50, + 0x19, 0xd3, 0x70, 0xa4, 0x1f, 0xa5, 0x8c, 0x78, 0x68, 0x3e, 0x30, 0x9c, 0xa7, 0xd0, 0x2a, 0x87, + 0x54, 0x48, 0x3e, 0x45, 0xa0, 0x71, 0x49, 0x04, 0x3a, 0x3f, 0x18, 0xb0, 0xf6, 0x04, 0xf9, 0xf3, + 0x98, 0x07, 0x83, 0xc0, 0x93, 0x77, 0x45, 0x4f, 0xeb, 0x3d, 0x58, 0x8b, 0x43, 0xbf, 0xb4, 0x86, + 0x93, 0x5e, 0x42, 0x0f, 0xf4, 0xd8, 0x5a, 0x71, 0xe8, 0x97, 0x5e, 0xac, 0x17, 0xf4, 0x00, 0x85, + 0x55, 0x84, 0xc7, 0xb3, 0xac, 0xb2, 0x32, 0x5a, 0x11, 0x1e, 0x9f, 0xb5, 0x6a, 0x41, 0x25, 0x0c, + 0x86, 0x01, 0x97, 0x8b, 0x5b, 0x71, 0x33, 0x22, 0xdf, 0x88, 0xf9, 0xd3, 0x8d, 0x70, 0x7e, 0x33, + 0xe1, 0xda, 0x99, 0x84, 0x55, 0xfd, 0xfb, 0xd0, 0x88, 0x0a, 0x7c, 0xd5, 0x85, 0xee, 0x99, 0x6d, + 0x9e, 0x65, 0xdc, 0x2e, 0x31, 0x4b, 0x7e, 0xec, 0xbf, 0x0c, 0x68, 0x14, 0xc5, 0x33, 0x57, 0xd5, + 0x82, 0xaa, 0x97, 0x22, 0xe5, 0xe8, 0xab, 0x4a, 0x35, 0x29, 0x2e, 0x60, 0xe6, 0x0e, 0x7d, 0x75, + 0x40, 0x72, 0x5a, 0x58, 0xf9, 0x18, 0xa2, 0xb0, 0xca, 0xaa, 0xd4, 0x24, 0x79, 0x1f, 0xe6, 0xe2, + 0xd0, 0x97, 0xe7, 0xb4, 0xde, 0xbd, 0x35, 0x05, 0x38, 0x7a, 0x80, 0x79, 0xef, 0x43, 0x54, 0x40, + 0x08, 0x90, 0xb9, 0xc2, 0x46, 0x98, 0x46, 0x78, 0x2c, 0xaf, 0xed, 0x9b, 0x98, 0x46, 0x78, 0xec, + 0xfc, 0x6c, 0xc2, 0xfa, 0xbf, 0xaa, 0x90, 0x2d, 0x68, 0x78, 0xa3, 0x34, 0xc5, 0x88, 0x17, 0x81, + 0x50, 0x57, 0x3c, 0x39, 0xc9, 0x0d, 0x58, 0x8c, 0xf0, 0x84, 0x17, 0x47, 0x5e, 0x13, 0x8c, 0x73, + 0xc6, 0xbc, 0x0d, 0x4b, 0x25, 0xb8, 0xc8, 0x4e, 0x5c, 0x70, 0x1c, 0xcb, 0x16, 0xe4, 0x73, 0x00, + 0x9a, 0xa7, 0xa9, 0x8e, 0xeb, 0x07, 0x97, 0x2c, 0xbc, 0xfd, 0x34, 0xf2, 0xf1, 0x04, 0xfd, 0xed, + 0xc2, 0x2b, 0xe4, 0x16, 0xdc, 0xd9, 0x1f, 0x42, 0x73, 0x86, 0x8a, 0x28, 0x26, 0x10, 0x6c, 0xd9, + 0x85, 0x8a, 0x9b, 0x11, 0x39, 0x34, 0xcc, 0x02, 0x66, 0xef, 0xc3, 0x8d, 0x8f, 0x69, 0x7a, 0x54, + 0x84, 0xd0, 0x36, 0x73, 0x91, 0xfa, 0x7a, 0xd5, 0x66, 0xe0, 0xa9, 0xfb, 0xb7, 0x01, 0x2b, 0x3a, + 0xde, 0x4b, 0x4c, 0xc7, 0x81, 0x87, 0x64, 0x04, 0xf5, 0xc2, 0x31, 0x22, 0x9b, 0xe7, 0xdc, 0x29, + 0xe9, 0xd8, 0xde, 0xba, 0xf0, 0x92, 0x39, 0x5b, 0x5f, 0xfd, 0xf2, 0xc7, 0x77, 0xe6, 0x06, 0x59, + 0xef, 0xe8, 0x67, 0xb8, 0xf3, 0xaa, 0xf4, 0x4a, 0xbf, 0x26, 0x47, 0xd0, 0x28, 0xbe, 0x37, 0x64, + 0xeb, 0xc2, 0xe7, 0xcf, 0x76, 0xce, 0x53, 0x51, 0x91, 0x5b, 0x32, 0xf2, 0xb2, 0xb3, 0x98, 0x47, + 0x7e, 0x68, 0xdc, 0xe9, 0x7e, 0x6b, 0x42, 0xb3, 0xd8, 0x29, 0x5d, 0xfb, 0x6b, 0x58, 0x99, 0x5a, + 0x5d, 0xf2, 0xee, 0x05, 0x9b, 0x9d, 0xa5, 0x72, 0xf3, 0x52, 0xfb, 0xef, 0xdc, 0x90, 0xd9, 0x5c, + 0x23, 0x57, 0x3b, 0xc5, 0xdd, 0x67, 0x9d, 0x57, 0x59, 0x0f, 0xbe, 0x84, 0xb5, 0xd9, 0x33, 0x24, + 0x53, 0x87, 0xe8, 0xdc, 0x49, 0xdb, 0x6b, 0x67, 0xfe, 0x89, 0xda, 0x15, 0xbf, 0x04, 0x74, 0xf4, + 0x3b, 0xb3, 0xa3, 0xef, 0xbc, 0x05, 0x4d, 0x2f, 0x1e, 0x96, 0x03, 0x25, 0xfd, 0xcf, 0xaa, 0xea, + 0x97, 0x47, 0x7f, 0x41, 0xba, 0xbb, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xb6, 0x68, + 0xf9, 0x92, 0x0c, 0x00, 0x00, } diff --git a/api/v3/clairpb/clair.proto b/api/v3/clairpb/clair.proto index 0a384383..3166f0ea 100644 --- a/api/v3/clairpb/clair.proto +++ b/api/v3/clairpb/clair.proto @@ -13,37 +13,33 @@ // limitations under the License. syntax = "proto3"; -option go_package = "clairpb"; -package clairpb; - -import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; +import "google/api/annotations.proto"; + +package coreos.clair; + +option go_package = "clairpb"; +option java_package = "com.coreos.clair.pb"; + message Vulnerability { // The name of the vulnerability. string name = 1; - // The name of the namespace in which the vulnerability was detected. string namespace_name = 2; - // A description of the vulnerability according to the source for the namespace. string description = 3; - // A link to the vulnerability according to the source for the namespace. string link = 4; - // How dangerous the vulnerability is. string severity = 5; - // Namespace agnostic metadata about the vulnerability. string metadata = 6; - // The feature that fixes this vulnerability. // This field only exists when a vulnerability is a part of a Feature. string fixed_by = 7; - // The Features that are affected by the vulnerability. // This field only exists when a vulnerability is a part of a Notification. repeated Feature affected_versions = 8; @@ -52,21 +48,17 @@ message Vulnerability { message Feature { // The name of the feature. string name = 1; - // The name of the namespace in which the feature is detected. string namespace_name = 2; - // The specific version of this feature. string version = 3; - // The format used to parse version numbers for the feature. string version_format = 4; - // The list of vulnerabilities that affect the feature. repeated Vulnerability vulnerabilities = 5; } -message Layer { +message Layer { // The sha256 tarsum for the layer. string hash = 1; } @@ -74,11 +66,8 @@ message Layer { service AncestryService { // The RPC used to read the results of scanning for a particular ancestry. rpc GetAncestry(GetAncestryRequest) returns (GetAncestryResponse) { - option (google.api.http) = { - get: "/ancestry/{ancestry_name}" - }; + option (google.api.http) = { get: "/ancestry/{ancestry_name}" }; } - // The RPC used to create a new scan of an ancestry. rpc PostAncestry(PostAncestryRequest) returns (PostAncestryResponse) { option (google.api.http) = { @@ -91,10 +80,8 @@ service AncestryService { message ClairStatus { // The configured list of feature listers used to scan an ancestry. repeated string listers = 1; - // The configured list of namespace detectors used to scan an ancestry. repeated string detectors = 2; - // The time at which the updater last ran. google.protobuf.Timestamp last_update_time = 3; } @@ -102,10 +89,8 @@ message ClairStatus { message GetAncestryRequest { // The name of the desired ancestry. string ancestry_name = 1; - // Whether to include vulnerabilities or not in the response. bool with_vulnerabilities = 2; - // Whether to include features or not in the response. bool with_features = 3; } @@ -114,69 +99,53 @@ message GetAncestryResponse { message Ancestry { // The name of the desired ancestry. string name = 1; - // The list of features present in the ancestry. // This will only be provided if requested. repeated Feature features = 2; - // The layers present in the ancestry. repeated Layer layers = 3; - // The configured list of feature listers used to scan this ancestry. repeated string scanned_listers = 4; - // The configured list of namespace detectors used to scan an ancestry. repeated string scanned_detectors = 5; } - // The ancestry requested. Ancestry ancestry = 1; - // The status of Clair at the time of the request. - ClairStatus status = 2; + ClairStatus status = 2; } message PostAncestryRequest { message PostLayer { // The hash of the layer. string hash = 1; - // The location of the layer (URL or filepath). string path = 2; - - // Any HTTP Headers that need to be used if requesting a layer over HTTP(S). - map headers = 3; - } - + // Any HTTP Headers that need to be used if requesting a layer over HTTP(S). + map headers = 3; + } // The name of the ancestry being scanned. // If scanning OCI images, this should be the hash of the manifest. string ancestry_name = 1; - // The format of the image being uploaded. string format = 2; - // The layers to be scanned for this particular ancestry. repeated PostLayer layers = 3; } message PostAncestryResponse { // The status of Clair at the time of the request. - ClairStatus status = 1; + ClairStatus status = 1; } service NotificationService { // The RPC used to get a particularly Notification. rpc GetNotification(GetNotificationRequest) returns (GetNotificationResponse) { - option (google.api.http) = { - get: "/notifications/{name}" - }; + option (google.api.http) = { get: "/notifications/{name}" }; } - // The RPC used to mark a Notification as read after it has been processed. rpc MarkNotificationAsRead(MarkNotificationAsReadRequest) returns (google.protobuf.Empty) { - option (google.api.http) = { - delete: "/notifications/{name}" - }; + option (google.api.http) = { delete: "/notifications/{name}" }; } } @@ -184,14 +153,11 @@ message GetNotificationRequest { // The current page of previous vulnerabilities for the ancestry. // This will be empty when it is the first page. string old_vulnerability_page = 1; - // The current page of vulnerabilities for the ancestry. // This will be empty when it is the first page. string new_vulnerability_page = 2; - // The requested maximum number of results per page. int32 limit = 3; - // The name of the notification being requested. string name = 4; } @@ -200,23 +166,17 @@ message GetNotificationResponse { message Notification { // The name of the requested notification. string name = 1; - // The time at which the notification was created. string created = 2; - // The time at which the notification was last sent out. string notified = 3; - // The time at which a notification has been deleted. - string deleted = 4; - + string deleted = 4; // The previous vulnerability and a paginated view of the ancestries it affects. PagedVulnerableAncestries old = 5; - // The newly updated vulnerability and a paginated view of the ancestries it affects. PagedVulnerableAncestries new = 6; } - // The notification as requested. Notification notification = 1; } @@ -226,24 +186,18 @@ message PagedVulnerableAncestries { // The index is an ever increasing number associated with the particular ancestry. // This is useful if you're processing notifications, and need to keep track of the progress of paginating the results. int32 index = 1; - // The name of the ancestry. string name = 2; } - // The identifier for the current page. string current_page = 1; - // The token used to request the next page. // This will be empty when there are no more pages. string next_page = 2; - // The requested maximum number of results per page. - int32 limit = 3; - + int32 limit = 3; // The vulnerability that affects a given set of ancestries. Vulnerability vulnerability = 4; - // The ancestries affected by a vulnerability. repeated IndexedAncestryName ancestries = 5; } diff --git a/api/v3/clairpb/clair.swagger.json b/api/v3/clairpb/clair.swagger.json index 3b450729..55f73b5e 100644 --- a/api/v3/clairpb/clair.swagger.json +++ b/api/v3/clairpb/clair.swagger.json @@ -23,7 +23,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/clairpbPostAncestryResponse" + "$ref": "#/definitions/clairPostAncestryResponse" } } }, @@ -33,7 +33,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/clairpbPostAncestryRequest" + "$ref": "#/definitions/clairPostAncestryRequest" } } ], @@ -50,7 +50,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/clairpbGetAncestryResponse" + "$ref": "#/definitions/clairGetAncestryResponse" } } }, @@ -91,7 +91,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/clairpbGetNotificationResponse" + "$ref": "#/definitions/clairGetNotificationResponse" } } }, @@ -165,14 +165,14 @@ "features": { "type": "array", "items": { - "$ref": "#/definitions/clairpbFeature" + "$ref": "#/definitions/clairFeature" }, "description": "The list of features present in the ancestry.\nThis will only be provided if requested." }, "layers": { "type": "array", "items": { - "$ref": "#/definitions/clairpbLayer" + "$ref": "#/definitions/clairLayer" }, "description": "The layers present in the ancestry." }, @@ -212,11 +212,11 @@ "description": "The time at which a notification has been deleted." }, "old": { - "$ref": "#/definitions/clairpbPagedVulnerableAncestries", + "$ref": "#/definitions/clairPagedVulnerableAncestries", "description": "The previous vulnerability and a paginated view of the ancestries it affects." }, "new": { - "$ref": "#/definitions/clairpbPagedVulnerableAncestries", + "$ref": "#/definitions/clairPagedVulnerableAncestries", "description": "The newly updated vulnerability and a paginated view of the ancestries it affects." } } @@ -255,7 +255,7 @@ } } }, - "clairpbClairStatus": { + "clairClairStatus": { "type": "object", "properties": { "listers": { @@ -279,7 +279,7 @@ } } }, - "clairpbFeature": { + "clairFeature": { "type": "object", "properties": { "name": { @@ -301,13 +301,13 @@ "vulnerabilities": { "type": "array", "items": { - "$ref": "#/definitions/clairpbVulnerability" + "$ref": "#/definitions/clairVulnerability" }, "description": "The list of vulnerabilities that affect the feature." } } }, - "clairpbGetAncestryResponse": { + "clairGetAncestryResponse": { "type": "object", "properties": { "ancestry": { @@ -315,12 +315,12 @@ "description": "The ancestry requested." }, "status": { - "$ref": "#/definitions/clairpbClairStatus", + "$ref": "#/definitions/clairClairStatus", "description": "The status of Clair at the time of the request." } } }, - "clairpbGetNotificationResponse": { + "clairGetNotificationResponse": { "type": "object", "properties": { "notification": { @@ -329,7 +329,7 @@ } } }, - "clairpbLayer": { + "clairLayer": { "type": "object", "properties": { "hash": { @@ -338,7 +338,7 @@ } } }, - "clairpbPagedVulnerableAncestries": { + "clairPagedVulnerableAncestries": { "type": "object", "properties": { "current_page": { @@ -355,7 +355,7 @@ "description": "The requested maximum number of results per page." }, "vulnerability": { - "$ref": "#/definitions/clairpbVulnerability", + "$ref": "#/definitions/clairVulnerability", "description": "The vulnerability that affects a given set of ancestries." }, "ancestries": { @@ -367,7 +367,7 @@ } } }, - "clairpbPostAncestryRequest": { + "clairPostAncestryRequest": { "type": "object", "properties": { "ancestry_name": { @@ -387,16 +387,16 @@ } } }, - "clairpbPostAncestryResponse": { + "clairPostAncestryResponse": { "type": "object", "properties": { "status": { - "$ref": "#/definitions/clairpbClairStatus", + "$ref": "#/definitions/clairClairStatus", "description": "The status of Clair at the time of the request." } } }, - "clairpbVulnerability": { + "clairVulnerability": { "type": "object", "properties": { "name": { @@ -430,7 +430,7 @@ "affected_versions": { "type": "array", "items": { - "$ref": "#/definitions/clairpbFeature" + "$ref": "#/definitions/clairFeature" }, "description": "The Features that are affected by the vulnerability.\nThis field only exists when a vulnerability is a part of a Notification." } diff --git a/api/v3/clairpb/prototool.yaml b/api/v3/clairpb/prototool.yaml new file mode 100644 index 00000000..8fe4dd22 --- /dev/null +++ b/api/v3/clairpb/prototool.yaml @@ -0,0 +1,3 @@ +protoc_version: 3.5.1 +protoc_includes: +- ../../../vendor/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis From f550dd16a01edc17de0e3c658c5f7bc25639a0a1 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Mon, 23 Apr 2018 15:36:52 -0400 Subject: [PATCH 3/4] api/v3: remove dependency on google empty message --- api/v3/clairpb/clair.pb.go | 175 ++++++++++++++++-------------- api/v3/clairpb/clair.proto | 5 +- api/v3/clairpb/clair.swagger.json | 10 +- api/v3/rpc.go | 5 +- 4 files changed, 101 insertions(+), 94 deletions(-) diff --git a/api/v3/clairpb/clair.pb.go b/api/v3/clairpb/clair.pb.go index 2c1ed417..2dd77344 100644 --- a/api/v3/clairpb/clair.pb.go +++ b/api/v3/clairpb/clair.pb.go @@ -20,14 +20,14 @@ It has these top-level messages: GetNotificationResponse PagedVulnerableAncestries MarkNotificationAsReadRequest + MarkNotificationAsReadResponse */ package clairpb import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" -import google_protobuf "github.com/golang/protobuf/ptypes/empty" -import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp" +import google_protobuf "github.com/golang/protobuf/ptypes/timestamp" import _ "google.golang.org/genproto/googleapis/api/annotations" import ( @@ -204,7 +204,7 @@ type ClairStatus struct { // The configured list of namespace detectors used to scan an ancestry. Detectors []string `protobuf:"bytes,2,rep,name=detectors" json:"detectors,omitempty"` // The time at which the updater last ran. - LastUpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` + LastUpdateTime *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"` } func (m *ClairStatus) Reset() { *m = ClairStatus{} } @@ -226,7 +226,7 @@ func (m *ClairStatus) GetDetectors() []string { return nil } -func (m *ClairStatus) GetLastUpdateTime() *google_protobuf1.Timestamp { +func (m *ClairStatus) GetLastUpdateTime() *google_protobuf.Timestamp { if m != nil { return m.LastUpdateTime } @@ -669,6 +669,14 @@ func (m *MarkNotificationAsReadRequest) GetName() string { return "" } +type MarkNotificationAsReadResponse struct { +} + +func (m *MarkNotificationAsReadResponse) Reset() { *m = MarkNotificationAsReadResponse{} } +func (m *MarkNotificationAsReadResponse) String() string { return proto.CompactTextString(m) } +func (*MarkNotificationAsReadResponse) ProtoMessage() {} +func (*MarkNotificationAsReadResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } + func init() { proto.RegisterType((*Vulnerability)(nil), "coreos.clair.Vulnerability") proto.RegisterType((*Feature)(nil), "coreos.clair.Feature") @@ -686,6 +694,7 @@ func init() { proto.RegisterType((*PagedVulnerableAncestries)(nil), "coreos.clair.PagedVulnerableAncestries") proto.RegisterType((*PagedVulnerableAncestries_IndexedAncestryName)(nil), "coreos.clair.PagedVulnerableAncestries.IndexedAncestryName") proto.RegisterType((*MarkNotificationAsReadRequest)(nil), "coreos.clair.MarkNotificationAsReadRequest") + proto.RegisterType((*MarkNotificationAsReadResponse)(nil), "coreos.clair.MarkNotificationAsReadResponse") } // Reference imports to suppress errors if they are not otherwise used. @@ -803,7 +812,7 @@ type NotificationServiceClient interface { // The RPC used to get a particularly Notification. GetNotification(ctx context.Context, in *GetNotificationRequest, opts ...grpc.CallOption) (*GetNotificationResponse, error) // The RPC used to mark a Notification as read after it has been processed. - MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) + MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*MarkNotificationAsReadResponse, error) } type notificationServiceClient struct { @@ -823,8 +832,8 @@ func (c *notificationServiceClient) GetNotification(ctx context.Context, in *Get return out, nil } -func (c *notificationServiceClient) MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*google_protobuf.Empty, error) { - out := new(google_protobuf.Empty) +func (c *notificationServiceClient) MarkNotificationAsRead(ctx context.Context, in *MarkNotificationAsReadRequest, opts ...grpc.CallOption) (*MarkNotificationAsReadResponse, error) { + out := new(MarkNotificationAsReadResponse) err := grpc.Invoke(ctx, "/coreos.clair.NotificationService/MarkNotificationAsRead", in, out, c.cc, opts...) if err != nil { return nil, err @@ -838,7 +847,7 @@ type NotificationServiceServer interface { // The RPC used to get a particularly Notification. GetNotification(context.Context, *GetNotificationRequest) (*GetNotificationResponse, error) // The RPC used to mark a Notification as read after it has been processed. - MarkNotificationAsRead(context.Context, *MarkNotificationAsReadRequest) (*google_protobuf.Empty, error) + MarkNotificationAsRead(context.Context, *MarkNotificationAsReadRequest) (*MarkNotificationAsReadResponse, error) } func RegisterNotificationServiceServer(s *grpc.Server, srv NotificationServiceServer) { @@ -901,80 +910,80 @@ var _NotificationService_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api/v3/clairpb/clair.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1189 bytes of a gzipped FileDescriptorProto + // 1191 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4f, 0x73, 0xdb, 0x44, - 0x14, 0x1f, 0x29, 0x71, 0xec, 0x3c, 0x3b, 0x7f, 0xba, 0x76, 0x53, 0x45, 0x69, 0x21, 0x11, 0x74, - 0xda, 0x69, 0x67, 0xec, 0xa9, 0xcb, 0xa1, 0x94, 0x03, 0x93, 0xb4, 0x49, 0xe9, 0x4c, 0xe9, 0x74, - 0x54, 0xc8, 0x01, 0x0e, 0x9e, 0xb5, 0xf4, 0x9c, 0x68, 0x22, 0x4b, 0x42, 0xbb, 0x76, 0xe2, 0x29, - 0xbd, 0x70, 0xe5, 0x04, 0x1c, 0xf8, 0x16, 0x7c, 0x09, 0xae, 0x9c, 0x80, 0x23, 0xdc, 0x98, 0x81, - 0x2f, 0xc0, 0x9d, 0xd9, 0xd5, 0xae, 0x22, 0x39, 0x26, 0x49, 0xe1, 0x14, 0xbd, 0xff, 0xff, 0x7e, - 0x6f, 0x5f, 0x0c, 0x36, 0x4d, 0x82, 0xce, 0xf8, 0x7e, 0xc7, 0x0b, 0x69, 0x90, 0x26, 0xfd, 0xec, - 0x6f, 0x3b, 0x49, 0x63, 0x1e, 0x93, 0x86, 0x17, 0xa7, 0x18, 0xb3, 0xb6, 0xe4, 0xd9, 0x1b, 0x07, - 0x71, 0x7c, 0x10, 0x62, 0x47, 0xca, 0xfa, 0xa3, 0x41, 0x07, 0x87, 0x09, 0x9f, 0x64, 0xaa, 0xf6, - 0xdb, 0xd3, 0x42, 0x1e, 0x0c, 0x91, 0x71, 0x3a, 0x4c, 0x94, 0xc2, 0x75, 0xa5, 0x20, 0xc2, 0xd1, - 0x28, 0x8a, 0x39, 0xe5, 0x41, 0x1c, 0xb1, 0x4c, 0xea, 0x7c, 0x6f, 0xc2, 0xd2, 0xfe, 0x28, 0x8c, - 0x30, 0xa5, 0xfd, 0x20, 0x0c, 0xf8, 0x84, 0x10, 0x98, 0x8f, 0xe8, 0x10, 0x2d, 0x63, 0xd3, 0xb8, - 0xbd, 0xe8, 0xca, 0x6f, 0x72, 0x13, 0x96, 0xc5, 0x5f, 0x96, 0x50, 0x0f, 0x7b, 0x52, 0x6a, 0x4a, - 0xe9, 0x52, 0xce, 0x7d, 0x2e, 0xd4, 0x36, 0xa1, 0xee, 0x23, 0xf3, 0xd2, 0x20, 0x11, 0x21, 0xac, - 0x39, 0xa9, 0x53, 0x64, 0x09, 0xe7, 0x61, 0x10, 0x1d, 0x59, 0xf3, 0x99, 0x73, 0xf1, 0x4d, 0x6c, - 0xa8, 0x31, 0x1c, 0x63, 0x1a, 0xf0, 0x89, 0x55, 0x91, 0xfc, 0x9c, 0x16, 0xb2, 0x21, 0x72, 0xea, - 0x53, 0x4e, 0xad, 0x85, 0x4c, 0xa6, 0x69, 0xb2, 0x0e, 0xb5, 0x41, 0x70, 0x82, 0x7e, 0xaf, 0x3f, - 0xb1, 0xaa, 0x52, 0x56, 0x95, 0xf4, 0xce, 0x84, 0xec, 0xc0, 0x15, 0x3a, 0x18, 0xa0, 0xc7, 0xd1, - 0xef, 0x8d, 0x31, 0x65, 0xa2, 0x60, 0xab, 0xb6, 0x39, 0x77, 0xbb, 0xde, 0xbd, 0xda, 0x2e, 0xf6, - 0xb6, 0xbd, 0x87, 0x94, 0x8f, 0x52, 0x74, 0x57, 0xb5, 0xfe, 0xbe, 0x52, 0x77, 0x7e, 0x32, 0xa0, - 0xaa, 0xa4, 0xff, 0xa7, 0x27, 0x16, 0x54, 0x55, 0x06, 0xaa, 0x1f, 0x9a, 0x14, 0x0e, 0xd4, 0x67, - 0x6f, 0x10, 0xa7, 0x43, 0xca, 0x55, 0x57, 0x96, 0x14, 0x77, 0x4f, 0x32, 0xc9, 0x2e, 0xac, 0x8c, - 0x0b, 0x03, 0x0a, 0x90, 0x59, 0x15, 0x59, 0xc9, 0x46, 0xb9, 0x92, 0xd2, 0x14, 0xdd, 0x69, 0x1b, - 0x67, 0x03, 0x2a, 0xcf, 0xe8, 0x04, 0x53, 0x51, 0xcb, 0x21, 0x65, 0x87, 0xba, 0x16, 0xf1, 0xed, - 0x7c, 0x6d, 0x40, 0xfd, 0x91, 0xf0, 0xf2, 0x92, 0x53, 0x3e, 0x62, 0x22, 0xe9, 0x30, 0x60, 0x1c, - 0x53, 0x66, 0x19, 0x9b, 0x73, 0x22, 0x69, 0x45, 0x92, 0xeb, 0xb0, 0xe8, 0x23, 0x47, 0x8f, 0xc7, - 0x29, 0xb3, 0x4c, 0x29, 0x3b, 0x65, 0x90, 0xc7, 0xb0, 0x1a, 0x52, 0xc6, 0x7b, 0xa3, 0xc4, 0xa7, - 0x1c, 0x7b, 0x02, 0x8a, 0xb2, 0xea, 0x7a, 0xd7, 0x6e, 0x67, 0x30, 0x6c, 0x6b, 0x9c, 0xb6, 0x3f, - 0xd1, 0x38, 0x75, 0x97, 0x85, 0xcd, 0xa7, 0xd2, 0x44, 0x30, 0x9d, 0x6f, 0x0c, 0x20, 0x4f, 0x90, - 0x6f, 0x47, 0x1e, 0x32, 0x9e, 0x4e, 0x5c, 0xfc, 0x62, 0x84, 0x8c, 0x93, 0x77, 0x60, 0x89, 0x2a, - 0x56, 0xaf, 0x30, 0x8d, 0x86, 0x66, 0xca, 0x76, 0xdf, 0x83, 0xd6, 0x71, 0xc0, 0x0f, 0x7b, 0xd3, - 0x2d, 0x13, 0xb3, 0xa9, 0xb9, 0x4d, 0x21, 0xdb, 0x2f, 0x8b, 0x84, 0x5f, 0x69, 0x32, 0xc8, 0x86, - 0xcd, 0x64, 0xc6, 0x35, 0xb7, 0x21, 0x98, 0x0a, 0x00, 0xcc, 0xf9, 0xd3, 0x84, 0x66, 0x29, 0x27, - 0x96, 0xc4, 0x11, 0x43, 0xb2, 0x07, 0x35, 0x1d, 0x5f, 0xe6, 0x53, 0xef, 0xde, 0x29, 0x8f, 0x65, - 0x86, 0x51, 0x3b, 0x67, 0xe4, 0xb6, 0xe4, 0x1e, 0x2c, 0x30, 0xd9, 0x7b, 0x99, 0x69, 0xbd, 0xbb, - 0x5e, 0xf6, 0x52, 0x18, 0x8e, 0xab, 0x14, 0xed, 0x5f, 0x0d, 0xa8, 0x69, 0x4f, 0x33, 0x11, 0x7a, - 0x0f, 0x6a, 0x79, 0x4d, 0xe6, 0x79, 0xe0, 0xcf, 0xd5, 0xc8, 0x5d, 0x58, 0x08, 0x05, 0x4a, 0x44, - 0x13, 0x84, 0x41, 0xb3, 0x6c, 0x20, 0x11, 0xe4, 0x2a, 0x15, 0x72, 0x0b, 0x56, 0x98, 0x47, 0xa3, - 0x08, 0xfd, 0x9e, 0x46, 0xcb, 0xbc, 0x44, 0xc4, 0xb2, 0x62, 0x3f, 0x53, 0xa0, 0xb9, 0x0b, 0x57, - 0xb4, 0xe2, 0x29, 0x78, 0x2a, 0x52, 0x75, 0x55, 0x09, 0x1e, 0x6b, 0xbe, 0xf3, 0xbb, 0x09, 0xcd, - 0x17, 0x31, 0xfb, 0x6f, 0xe3, 0x5f, 0x83, 0x05, 0xb5, 0x4b, 0xd9, 0x32, 0x2a, 0x8a, 0x3c, 0x9a, - 0xaa, 0xeb, 0x6e, 0xb9, 0xae, 0x19, 0xf1, 0x24, 0xaf, 0x54, 0xaf, 0xfd, 0xa3, 0x01, 0x8b, 0x39, - 0x77, 0xd6, 0x1e, 0x09, 0x5e, 0x42, 0xf9, 0xa1, 0x0a, 0x2e, 0xbf, 0x89, 0x0b, 0xd5, 0x43, 0xa4, - 0xfe, 0x69, 0xec, 0x07, 0x6f, 0x10, 0xbb, 0xfd, 0x51, 0x66, 0xba, 0x1b, 0x09, 0xa9, 0x76, 0x64, - 0x3f, 0x84, 0x46, 0x51, 0x40, 0x56, 0x61, 0xee, 0x08, 0x27, 0x2a, 0x15, 0xf1, 0x49, 0x5a, 0x50, - 0x19, 0xd3, 0x70, 0xa4, 0x1f, 0xa5, 0x8c, 0x78, 0x68, 0x3e, 0x30, 0x9c, 0xa7, 0xd0, 0x2a, 0x87, - 0x54, 0x48, 0x3e, 0x45, 0xa0, 0x71, 0x49, 0x04, 0x3a, 0x3f, 0x18, 0xb0, 0xf6, 0x04, 0xf9, 0xf3, - 0x98, 0x07, 0x83, 0xc0, 0x93, 0x77, 0x45, 0x4f, 0xeb, 0x3d, 0x58, 0x8b, 0x43, 0xbf, 0xb4, 0x86, - 0x93, 0x5e, 0x42, 0x0f, 0xf4, 0xd8, 0x5a, 0x71, 0xe8, 0x97, 0x5e, 0xac, 0x17, 0xf4, 0x00, 0x85, - 0x55, 0x84, 0xc7, 0xb3, 0xac, 0xb2, 0x32, 0x5a, 0x11, 0x1e, 0x9f, 0xb5, 0x6a, 0x41, 0x25, 0x0c, - 0x86, 0x01, 0x97, 0x8b, 0x5b, 0x71, 0x33, 0x22, 0xdf, 0x88, 0xf9, 0xd3, 0x8d, 0x70, 0x7e, 0x33, - 0xe1, 0xda, 0x99, 0x84, 0x55, 0xfd, 0xfb, 0xd0, 0x88, 0x0a, 0x7c, 0xd5, 0x85, 0xee, 0x99, 0x6d, - 0x9e, 0x65, 0xdc, 0x2e, 0x31, 0x4b, 0x7e, 0xec, 0xbf, 0x0c, 0x68, 0x14, 0xc5, 0x33, 0x57, 0xd5, - 0x82, 0xaa, 0x97, 0x22, 0xe5, 0xe8, 0xab, 0x4a, 0x35, 0x29, 0x2e, 0x60, 0xe6, 0x0e, 0x7d, 0x75, - 0x40, 0x72, 0x5a, 0x58, 0xf9, 0x18, 0xa2, 0xb0, 0xca, 0xaa, 0xd4, 0x24, 0x79, 0x1f, 0xe6, 0xe2, - 0xd0, 0x97, 0xe7, 0xb4, 0xde, 0xbd, 0x35, 0x05, 0x38, 0x7a, 0x80, 0x79, 0xef, 0x43, 0x54, 0x40, - 0x08, 0x90, 0xb9, 0xc2, 0x46, 0x98, 0x46, 0x78, 0x2c, 0xaf, 0xed, 0x9b, 0x98, 0x46, 0x78, 0xec, - 0xfc, 0x6c, 0xc2, 0xfa, 0xbf, 0xaa, 0x90, 0x2d, 0x68, 0x78, 0xa3, 0x34, 0xc5, 0x88, 0x17, 0x81, - 0x50, 0x57, 0x3c, 0x39, 0xc9, 0x0d, 0x58, 0x8c, 0xf0, 0x84, 0x17, 0x47, 0x5e, 0x13, 0x8c, 0x73, - 0xc6, 0xbc, 0x0d, 0x4b, 0x25, 0xb8, 0xc8, 0x4e, 0x5c, 0x70, 0x1c, 0xcb, 0x16, 0xe4, 0x73, 0x00, - 0x9a, 0xa7, 0xa9, 0x8e, 0xeb, 0x07, 0x97, 0x2c, 0xbc, 0xfd, 0x34, 0xf2, 0xf1, 0x04, 0xfd, 0xed, - 0xc2, 0x2b, 0xe4, 0x16, 0xdc, 0xd9, 0x1f, 0x42, 0x73, 0x86, 0x8a, 0x28, 0x26, 0x10, 0x6c, 0xd9, - 0x85, 0x8a, 0x9b, 0x11, 0x39, 0x34, 0xcc, 0x02, 0x66, 0xef, 0xc3, 0x8d, 0x8f, 0x69, 0x7a, 0x54, - 0x84, 0xd0, 0x36, 0x73, 0x91, 0xfa, 0x7a, 0xd5, 0x66, 0xe0, 0xa9, 0xfb, 0xb7, 0x01, 0x2b, 0x3a, - 0xde, 0x4b, 0x4c, 0xc7, 0x81, 0x87, 0x64, 0x04, 0xf5, 0xc2, 0x31, 0x22, 0x9b, 0xe7, 0xdc, 0x29, - 0xe9, 0xd8, 0xde, 0xba, 0xf0, 0x92, 0x39, 0x5b, 0x5f, 0xfd, 0xf2, 0xc7, 0x77, 0xe6, 0x06, 0x59, - 0xef, 0xe8, 0x67, 0xb8, 0xf3, 0xaa, 0xf4, 0x4a, 0xbf, 0x26, 0x47, 0xd0, 0x28, 0xbe, 0x37, 0x64, - 0xeb, 0xc2, 0xe7, 0xcf, 0x76, 0xce, 0x53, 0x51, 0x91, 0x5b, 0x32, 0xf2, 0xb2, 0xb3, 0x98, 0x47, - 0x7e, 0x68, 0xdc, 0xe9, 0x7e, 0x6b, 0x42, 0xb3, 0xd8, 0x29, 0x5d, 0xfb, 0x6b, 0x58, 0x99, 0x5a, - 0x5d, 0xf2, 0xee, 0x05, 0x9b, 0x9d, 0xa5, 0x72, 0xf3, 0x52, 0xfb, 0xef, 0xdc, 0x90, 0xd9, 0x5c, - 0x23, 0x57, 0x3b, 0xc5, 0xdd, 0x67, 0x9d, 0x57, 0x59, 0x0f, 0xbe, 0x84, 0xb5, 0xd9, 0x33, 0x24, - 0x53, 0x87, 0xe8, 0xdc, 0x49, 0xdb, 0x6b, 0x67, 0xfe, 0x89, 0xda, 0x15, 0xbf, 0x04, 0x74, 0xf4, - 0x3b, 0xb3, 0xa3, 0xef, 0xbc, 0x05, 0x4d, 0x2f, 0x1e, 0x96, 0x03, 0x25, 0xfd, 0xcf, 0xaa, 0xea, - 0x97, 0x47, 0x7f, 0x41, 0xba, 0xbb, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xb6, 0x68, - 0xf9, 0x92, 0x0c, 0x00, 0x00, + 0x14, 0x1f, 0x29, 0x71, 0xec, 0x3c, 0x3b, 0x7f, 0xba, 0x76, 0x53, 0x45, 0x69, 0x8b, 0x23, 0xe8, + 0xb4, 0x93, 0x30, 0xf6, 0xc4, 0xe1, 0x50, 0xc2, 0x81, 0x49, 0xda, 0xa6, 0x74, 0xa6, 0x74, 0x3a, + 0x2a, 0xe4, 0x00, 0x07, 0xcf, 0x5a, 0x7a, 0x4e, 0x34, 0x91, 0x25, 0xa3, 0x5d, 0x3b, 0xf1, 0x74, + 0x7a, 0xe1, 0xca, 0x09, 0x38, 0xf0, 0x19, 0xb8, 0xf0, 0x25, 0xb8, 0x72, 0x02, 0x8e, 0x70, 0x63, + 0x06, 0xbe, 0x00, 0x77, 0x66, 0x57, 0x2b, 0x45, 0x72, 0xd4, 0x24, 0xa5, 0x27, 0xeb, 0xfd, 0xde, + 0x9f, 0x7d, 0x7f, 0x7e, 0x6f, 0x37, 0x01, 0x93, 0x0e, 0xbd, 0xf6, 0x78, 0xbb, 0xed, 0xf8, 0xd4, + 0x8b, 0x86, 0xbd, 0xf8, 0xb7, 0x35, 0x8c, 0x42, 0x1e, 0x92, 0x9a, 0x13, 0x46, 0x18, 0xb2, 0x96, + 0xc4, 0xcc, 0x77, 0x0e, 0xc3, 0xf0, 0xd0, 0xc7, 0xb6, 0xd4, 0xf5, 0x46, 0xfd, 0x36, 0xf7, 0x06, + 0xc8, 0x38, 0x1d, 0x0c, 0x63, 0x73, 0xf3, 0xa6, 0x32, 0x10, 0x11, 0x69, 0x10, 0x84, 0x9c, 0x72, + 0x2f, 0x0c, 0x58, 0xac, 0xb5, 0x7e, 0xd0, 0x61, 0xe1, 0x60, 0xe4, 0x07, 0x18, 0xd1, 0x9e, 0xe7, + 0x7b, 0x7c, 0x42, 0x08, 0xcc, 0x06, 0x74, 0x80, 0x86, 0xd6, 0xd4, 0xee, 0xcd, 0xdb, 0xf2, 0x9b, + 0xdc, 0x81, 0x45, 0xf1, 0xcb, 0x86, 0xd4, 0xc1, 0xae, 0xd4, 0xea, 0x52, 0xbb, 0x90, 0xa2, 0xcf, + 0x84, 0x59, 0x13, 0xaa, 0x2e, 0x32, 0x27, 0xf2, 0x86, 0xe2, 0x08, 0x63, 0x46, 0xda, 0x64, 0x21, + 0x11, 0xdc, 0xf7, 0x82, 0x63, 0x63, 0x36, 0x0e, 0x2e, 0xbe, 0x89, 0x09, 0x15, 0x86, 0x63, 0x8c, + 0x3c, 0x3e, 0x31, 0x4a, 0x12, 0x4f, 0x65, 0xa1, 0x1b, 0x20, 0xa7, 0x2e, 0xe5, 0xd4, 0x98, 0x8b, + 0x75, 0x89, 0x4c, 0x56, 0xa1, 0xd2, 0xf7, 0x4e, 0xd1, 0xed, 0xf6, 0x26, 0x46, 0x59, 0xea, 0xca, + 0x52, 0xde, 0x9b, 0x90, 0x3d, 0xb8, 0x46, 0xfb, 0x7d, 0x74, 0x38, 0xba, 0xdd, 0x31, 0x46, 0x4c, + 0x14, 0x6c, 0x54, 0x9a, 0x33, 0xf7, 0xaa, 0x9d, 0xeb, 0xad, 0x6c, 0xfb, 0x5a, 0xfb, 0x48, 0xf9, + 0x28, 0x42, 0x7b, 0x39, 0xb1, 0x3f, 0x50, 0xe6, 0xd6, 0x2f, 0x1a, 0x94, 0x95, 0xf6, 0x6d, 0x7a, + 0x62, 0x40, 0x59, 0x65, 0xa0, 0xfa, 0x91, 0x88, 0x22, 0x80, 0xfa, 0xec, 0xf6, 0xc3, 0x68, 0x40, + 0xb9, 0xea, 0xca, 0x82, 0x42, 0xf7, 0x25, 0x48, 0x1e, 0xc1, 0xd2, 0x38, 0x33, 0x20, 0x0f, 0x99, + 0x51, 0x92, 0x95, 0xac, 0xe5, 0x2b, 0xc9, 0x4d, 0xd1, 0x9e, 0xf6, 0xb1, 0xd6, 0xa0, 0xf4, 0x94, + 0x4e, 0x30, 0x12, 0xb5, 0x1c, 0x51, 0x76, 0x94, 0xd4, 0x22, 0xbe, 0xad, 0x6f, 0x34, 0xa8, 0x3e, + 0x10, 0x51, 0x5e, 0x70, 0xca, 0x47, 0x4c, 0x24, 0xed, 0x7b, 0x8c, 0x63, 0xc4, 0x0c, 0xad, 0x39, + 0x23, 0x92, 0x56, 0x22, 0xb9, 0x09, 0xf3, 0x2e, 0x72, 0x74, 0x78, 0x18, 0x31, 0x43, 0x97, 0xba, + 0x33, 0x80, 0x3c, 0x84, 0x65, 0x9f, 0x32, 0xde, 0x1d, 0x0d, 0x5d, 0xca, 0xb1, 0x2b, 0xa8, 0x28, + 0xab, 0xae, 0x76, 0xcc, 0x56, 0x4c, 0xc3, 0x56, 0xc2, 0xd3, 0xd6, 0x67, 0x09, 0x4f, 0xed, 0x45, + 0xe1, 0xf3, 0xb9, 0x74, 0x11, 0xa0, 0xf5, 0xad, 0x06, 0xe4, 0x31, 0xf2, 0xdd, 0xc0, 0x41, 0xc6, + 0xa3, 0x89, 0x8d, 0x5f, 0x8d, 0x90, 0x71, 0xf2, 0x2e, 0x2c, 0x50, 0x05, 0x75, 0x33, 0xd3, 0xa8, + 0x25, 0xa0, 0x6c, 0xf7, 0x16, 0x34, 0x4e, 0x3c, 0x7e, 0xd4, 0x9d, 0x6e, 0x99, 0x98, 0x4d, 0xc5, + 0xae, 0x0b, 0xdd, 0x41, 0x5e, 0x25, 0xe2, 0x4a, 0x97, 0x7e, 0x3c, 0x6c, 0x26, 0x33, 0xae, 0xd8, + 0x35, 0x01, 0x2a, 0x02, 0x30, 0xeb, 0x6f, 0x1d, 0xea, 0xb9, 0x9c, 0xd8, 0x30, 0x0c, 0x18, 0x92, + 0x7d, 0xa8, 0x24, 0xe7, 0xcb, 0x7c, 0xaa, 0x9d, 0x8d, 0xfc, 0x58, 0x0a, 0x9c, 0x5a, 0x29, 0x90, + 0xfa, 0x92, 0x2d, 0x98, 0x63, 0xb2, 0xf7, 0x32, 0xd3, 0x6a, 0x67, 0x35, 0x1f, 0x25, 0x33, 0x1c, + 0x5b, 0x19, 0x9a, 0xbf, 0x6b, 0x50, 0x49, 0x22, 0x15, 0x32, 0x74, 0x0b, 0x2a, 0x69, 0x4d, 0xfa, + 0x45, 0xe4, 0x4f, 0xcd, 0xc8, 0x26, 0xcc, 0xf9, 0x82, 0x25, 0xa2, 0x09, 0xc2, 0xa1, 0x9e, 0x77, + 0x90, 0x0c, 0xb2, 0x95, 0x09, 0xb9, 0x0b, 0x4b, 0xcc, 0xa1, 0x41, 0x80, 0x6e, 0x37, 0x61, 0xcb, + 0xac, 0x64, 0xc4, 0xa2, 0x82, 0x9f, 0x2a, 0xd2, 0x6c, 0xc2, 0xb5, 0xc4, 0xf0, 0x8c, 0x3c, 0x25, + 0x69, 0xba, 0xac, 0x14, 0x0f, 0x13, 0xdc, 0xfa, 0x53, 0x87, 0xfa, 0xf3, 0x90, 0xfd, 0xbf, 0xf1, + 0xaf, 0xc0, 0x9c, 0xda, 0xa5, 0x78, 0x19, 0x95, 0x44, 0x1e, 0x4c, 0xd5, 0xb5, 0x99, 0xaf, 0xab, + 0xe0, 0x3c, 0x89, 0xe5, 0xea, 0x35, 0x7f, 0xd6, 0x60, 0x3e, 0x45, 0x8b, 0xf6, 0x48, 0x60, 0x43, + 0xca, 0x8f, 0xd4, 0xe1, 0xf2, 0x9b, 0xd8, 0x50, 0x3e, 0x42, 0xea, 0x9e, 0x9d, 0x7d, 0xff, 0x0d, + 0xce, 0x6e, 0x7d, 0x12, 0xbb, 0x3e, 0x0a, 0x84, 0x36, 0x09, 0x64, 0xee, 0x40, 0x2d, 0xab, 0x20, + 0xcb, 0x30, 0x73, 0x8c, 0x13, 0x95, 0x8a, 0xf8, 0x24, 0x0d, 0x28, 0x8d, 0xa9, 0x3f, 0x4a, 0x2e, + 0xa5, 0x58, 0xd8, 0xd1, 0xef, 0x6b, 0xd6, 0x13, 0x68, 0xe4, 0x8f, 0x54, 0x4c, 0x3e, 0x63, 0xa0, + 0x76, 0x45, 0x06, 0x5a, 0x3f, 0x69, 0xb0, 0xf2, 0x18, 0xf9, 0xb3, 0x90, 0x7b, 0x7d, 0xcf, 0x91, + 0xef, 0x4a, 0x32, 0xad, 0x0f, 0x60, 0x25, 0xf4, 0xdd, 0xdc, 0x1a, 0x4e, 0xba, 0x43, 0x7a, 0x98, + 0x8c, 0xad, 0x11, 0xfa, 0x6e, 0xee, 0xc6, 0x7a, 0x4e, 0x0f, 0x51, 0x78, 0x05, 0x78, 0x52, 0xe4, + 0x15, 0x97, 0xd1, 0x08, 0xf0, 0xe4, 0xbc, 0x57, 0x03, 0x4a, 0xbe, 0x37, 0xf0, 0xb8, 0x5c, 0xdc, + 0x92, 0x1d, 0x0b, 0xe9, 0x46, 0xcc, 0x9e, 0x6d, 0x84, 0xf5, 0x87, 0x0e, 0x37, 0xce, 0x25, 0xac, + 0xea, 0x3f, 0x80, 0x5a, 0x90, 0xc1, 0x55, 0x17, 0x3a, 0xe7, 0xb6, 0xb9, 0xc8, 0xb9, 0x95, 0x03, + 0x73, 0x71, 0xcc, 0x7f, 0x34, 0xa8, 0x65, 0xd5, 0x85, 0xab, 0x6a, 0x40, 0xd9, 0x89, 0x90, 0x72, + 0x74, 0x55, 0xa5, 0x89, 0x28, 0x5e, 0xc0, 0x38, 0x1c, 0xba, 0xea, 0x01, 0x49, 0x65, 0xe1, 0xe5, + 0xa2, 0x8f, 0xc2, 0x2b, 0xae, 0x32, 0x11, 0xc9, 0x87, 0x30, 0x13, 0xfa, 0xae, 0x7c, 0x4e, 0xab, + 0x9d, 0xbb, 0x53, 0x84, 0xa3, 0x87, 0x98, 0xf6, 0xde, 0x47, 0x45, 0x04, 0x0f, 0x99, 0x2d, 0x7c, + 0x84, 0x6b, 0x80, 0x27, 0xf2, 0xb5, 0x7d, 0x13, 0xd7, 0x00, 0x4f, 0xac, 0x5f, 0x75, 0x58, 0x7d, + 0xad, 0x09, 0x59, 0x87, 0x9a, 0x33, 0x8a, 0x22, 0x0c, 0x78, 0x96, 0x08, 0x55, 0x85, 0xc9, 0x49, + 0xae, 0xc1, 0x7c, 0x80, 0xa7, 0x3c, 0x3b, 0xf2, 0x8a, 0x00, 0x2e, 0x18, 0xf3, 0x2e, 0x2c, 0xe4, + 0xe8, 0x22, 0x3b, 0x71, 0xc9, 0xe3, 0x98, 0xf7, 0x20, 0x5f, 0x02, 0xd0, 0x34, 0x4d, 0xf5, 0xb8, + 0x7e, 0x74, 0xc5, 0xc2, 0x5b, 0x4f, 0x02, 0x17, 0x4f, 0xd1, 0xdd, 0xcd, 0xdc, 0x42, 0x76, 0x26, + 0x9c, 0xf9, 0x31, 0xd4, 0x0b, 0x4c, 0x44, 0x31, 0x9e, 0x80, 0x65, 0x17, 0x4a, 0x76, 0x2c, 0xa4, + 0xd4, 0xd0, 0x33, 0x9c, 0xdd, 0x86, 0x5b, 0x9f, 0xd2, 0xe8, 0x38, 0x4b, 0xa1, 0x5d, 0x66, 0x23, + 0x75, 0x93, 0x55, 0x2b, 0xe0, 0x93, 0xd5, 0x84, 0xdb, 0xaf, 0x73, 0x8a, 0x19, 0xdb, 0xf9, 0x57, + 0x83, 0xa5, 0x24, 0xa3, 0x17, 0x18, 0x8d, 0x3d, 0x07, 0xc9, 0x08, 0xaa, 0x99, 0xe7, 0x8a, 0x34, + 0x2f, 0x78, 0xc9, 0xe4, 0xd1, 0xe6, 0xfa, 0xa5, 0x6f, 0x9d, 0xb5, 0xfe, 0xf5, 0x6f, 0x7f, 0x7d, + 0xaf, 0xaf, 0x91, 0xd5, 0x76, 0x72, 0x51, 0xb7, 0x5f, 0xe6, 0xee, 0xf1, 0x57, 0xe4, 0x18, 0x6a, + 0xd9, 0x1b, 0x89, 0xac, 0x5f, 0x7a, 0x41, 0x9a, 0xd6, 0x45, 0x26, 0xea, 0xe4, 0x86, 0x3c, 0x79, + 0xd1, 0x9a, 0x4f, 0x4f, 0xde, 0xd1, 0x36, 0x3a, 0x3f, 0xea, 0x50, 0xcf, 0xb6, 0x25, 0xa9, 0xfd, + 0x15, 0x2c, 0x4d, 0x2d, 0x37, 0x79, 0xef, 0x92, 0xdd, 0x8f, 0x53, 0xb9, 0x73, 0xa5, 0x1b, 0xc2, + 0xba, 0x25, 0xb3, 0xb9, 0x41, 0xae, 0xb7, 0xb3, 0xb7, 0x03, 0x6b, 0xbf, 0x8c, 0x7b, 0xf0, 0x9d, + 0x06, 0x2b, 0xc5, 0x13, 0x23, 0x53, 0x6f, 0xd5, 0x85, 0x64, 0x30, 0xdf, 0xbf, 0x9a, 0x71, 0x3e, + 0xa9, 0x8d, 0xe2, 0xa4, 0xf6, 0x6e, 0x43, 0xdd, 0x09, 0x07, 0xf9, 0x88, 0xc3, 0xde, 0x17, 0x65, + 0xf5, 0x5f, 0x49, 0x6f, 0x4e, 0xfe, 0x31, 0xb7, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, + 0x24, 0x28, 0x46, 0xae, 0x0c, 0x00, 0x00, } diff --git a/api/v3/clairpb/clair.proto b/api/v3/clairpb/clair.proto index 3166f0ea..4dcce1b3 100644 --- a/api/v3/clairpb/clair.proto +++ b/api/v3/clairpb/clair.proto @@ -14,7 +14,6 @@ syntax = "proto3"; -import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "google/api/annotations.proto"; @@ -144,7 +143,7 @@ service NotificationService { option (google.api.http) = { get: "/notifications/{name}" }; } // The RPC used to mark a Notification as read after it has been processed. - rpc MarkNotificationAsRead(MarkNotificationAsReadRequest) returns (google.protobuf.Empty) { + rpc MarkNotificationAsRead(MarkNotificationAsReadRequest) returns (MarkNotificationAsReadResponse) { option (google.api.http) = { delete: "/notifications/{name}" }; } } @@ -206,3 +205,5 @@ message MarkNotificationAsReadRequest { // The name of the Notification that has been processed. string name = 1; } + +message MarkNotificationAsReadResponse {} diff --git a/api/v3/clairpb/clair.swagger.json b/api/v3/clairpb/clair.swagger.json index 55f73b5e..64c8b413 100644 --- a/api/v3/clairpb/clair.swagger.json +++ b/api/v3/clairpb/clair.swagger.json @@ -136,7 +136,7 @@ "200": { "description": "", "schema": { - "$ref": "#/definitions/protobufEmpty" + "$ref": "#/definitions/clairMarkNotificationAsReadResponse" } } }, @@ -338,6 +338,9 @@ } } }, + "clairMarkNotificationAsReadResponse": { + "type": "object" + }, "clairPagedVulnerableAncestries": { "type": "object", "properties": { @@ -435,11 +438,6 @@ "description": "The Features that are affected by the vulnerability.\nThis field only exists when a vulnerability is a part of a Notification." } } - }, - "protobufEmpty": { - "type": "object", - "description": "service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "title": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:" } } } diff --git a/api/v3/rpc.go b/api/v3/rpc.go index 109bf17a..02244ff3 100644 --- a/api/v3/rpc.go +++ b/api/v3/rpc.go @@ -18,7 +18,6 @@ import ( "fmt" "github.com/golang/protobuf/ptypes" - google_protobuf1 "github.com/golang/protobuf/ptypes/empty" "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -227,7 +226,7 @@ func (s *NotificationServer) GetNotification(ctx context.Context, req *pb.GetNot // MarkNotificationAsRead implements deleting a notification via the Clair gRPC // service. -func (s *NotificationServer) MarkNotificationAsRead(ctx context.Context, req *pb.MarkNotificationAsReadRequest) (*google_protobuf1.Empty, error) { +func (s *NotificationServer) MarkNotificationAsRead(ctx context.Context, req *pb.MarkNotificationAsReadRequest) (*pb.MarkNotificationAsReadResponse, error) { if req.GetName() == "" { return nil, status.Error(codes.InvalidArgument, "notification name should not be empty") } @@ -249,5 +248,5 @@ func (s *NotificationServer) MarkNotificationAsRead(ctx context.Context, req *pb return nil, status.Error(codes.Internal, err.Error()) } - return &google_protobuf1.Empty{}, nil + return &pb.MarkNotificationAsReadResponse{}, nil } From 7492aa31baf5b834088ecb8e8bd6ffd7817e5dd7 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Sun, 22 Apr 2018 15:21:02 -0400 Subject: [PATCH 4/4] travis: fail unformatted protos --- .travis.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.travis.yml b/.travis.yml index 576da9fc..ba758209 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,19 @@ go: sudo: required +env: + global: + - PATH=$HOME/.local/bin:$PATH + install: - curl https://glide.sh/get | sh +- mkdir -p $HOME/.local/bin +- curl -o $HOME/.local/bin/prototool -sSL https://github.com/uber/prototool/releases/download/v0.1.0/prototool-$(uname -s)-$(uname -m) +- chmod +x $HOME/.local/bin/prototool script: +- prototool format -d api/v3/clairpb/clair.proto +- prototool lint api/v3/clairpb/clair.proto - go test $(glide novendor | grep -v contrib) dist: trusty