You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

408 rivejä
14 KiB

  1. // Copyright 2019 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // Code generated by gapic-generator. DO NOT EDIT.
  15. package logging
  16. import (
  17. "context"
  18. "math"
  19. "time"
  20. "github.com/golang/protobuf/proto"
  21. gax "github.com/googleapis/gax-go/v2"
  22. "google.golang.org/api/iterator"
  23. "google.golang.org/api/option"
  24. "google.golang.org/api/transport"
  25. monitoredrespb "google.golang.org/genproto/googleapis/api/monitoredres"
  26. loggingpb "google.golang.org/genproto/googleapis/logging/v2"
  27. "google.golang.org/grpc"
  28. "google.golang.org/grpc/codes"
  29. "google.golang.org/grpc/metadata"
  30. )
  31. // CallOptions contains the retry settings for each method of Client.
  32. type CallOptions struct {
  33. DeleteLog []gax.CallOption
  34. WriteLogEntries []gax.CallOption
  35. ListLogEntries []gax.CallOption
  36. ListMonitoredResourceDescriptors []gax.CallOption
  37. ListLogs []gax.CallOption
  38. }
  39. func defaultClientOptions() []option.ClientOption {
  40. return []option.ClientOption{
  41. option.WithEndpoint("logging.googleapis.com:443"),
  42. option.WithScopes(DefaultAuthScopes()...),
  43. }
  44. }
  45. func defaultCallOptions() *CallOptions {
  46. retry := map[[2]string][]gax.CallOption{
  47. {"default", "idempotent"}: {
  48. gax.WithRetry(func() gax.Retryer {
  49. return gax.OnCodes([]codes.Code{
  50. codes.DeadlineExceeded,
  51. codes.Internal,
  52. codes.Unavailable,
  53. }, gax.Backoff{
  54. Initial: 100 * time.Millisecond,
  55. Max: 60000 * time.Millisecond,
  56. Multiplier: 1.3,
  57. })
  58. }),
  59. },
  60. }
  61. return &CallOptions{
  62. DeleteLog: retry[[2]string{"default", "idempotent"}],
  63. WriteLogEntries: retry[[2]string{"default", "idempotent"}],
  64. ListLogEntries: retry[[2]string{"default", "idempotent"}],
  65. ListMonitoredResourceDescriptors: retry[[2]string{"default", "idempotent"}],
  66. ListLogs: retry[[2]string{"default", "idempotent"}],
  67. }
  68. }
  69. // Client is a client for interacting with Stackdriver Logging API.
  70. //
  71. // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
  72. type Client struct {
  73. // The connection to the service.
  74. conn *grpc.ClientConn
  75. // The gRPC API client.
  76. client loggingpb.LoggingServiceV2Client
  77. // The call options for this service.
  78. CallOptions *CallOptions
  79. // The x-goog-* metadata to be sent with each request.
  80. xGoogMetadata metadata.MD
  81. }
  82. // NewClient creates a new logging service v2 client.
  83. //
  84. // Service for ingesting and querying logs.
  85. func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
  86. conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
  87. if err != nil {
  88. return nil, err
  89. }
  90. c := &Client{
  91. conn: conn,
  92. CallOptions: defaultCallOptions(),
  93. client: loggingpb.NewLoggingServiceV2Client(conn),
  94. }
  95. c.SetGoogleClientInfo()
  96. return c, nil
  97. }
  98. // Connection returns the client's connection to the API service.
  99. func (c *Client) Connection() *grpc.ClientConn {
  100. return c.conn
  101. }
  102. // Close closes the connection to the API service. The user should invoke this when
  103. // the client is no longer required.
  104. func (c *Client) Close() error {
  105. return c.conn.Close()
  106. }
  107. // SetGoogleClientInfo sets the name and version of the application in
  108. // the `x-goog-api-client` header passed on each request. Intended for
  109. // use by Google-written clients.
  110. func (c *Client) SetGoogleClientInfo(keyval ...string) {
  111. kv := append([]string{"gl-go", versionGo()}, keyval...)
  112. kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
  113. c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
  114. }
  115. // DeleteLog deletes all the log entries in a log.
  116. // The log reappears if it receives new entries.
  117. // Log entries written shortly before the delete operation might not be
  118. // deleted.
  119. func (c *Client) DeleteLog(ctx context.Context, req *loggingpb.DeleteLogRequest, opts ...gax.CallOption) error {
  120. ctx = insertMetadata(ctx, c.xGoogMetadata)
  121. opts = append(c.CallOptions.DeleteLog[0:len(c.CallOptions.DeleteLog):len(c.CallOptions.DeleteLog)], opts...)
  122. err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
  123. var err error
  124. _, err = c.client.DeleteLog(ctx, req, settings.GRPC...)
  125. return err
  126. }, opts...)
  127. return err
  128. }
  129. // WriteLogEntries writes log entries to Logging. This API method is the
  130. // only way to send log entries to Logging. This method
  131. // is used, directly or indirectly, by the Logging agent
  132. // (fluentd) and all logging libraries configured to use Logging.
  133. // A single request may contain log entries for a maximum of 1000
  134. // different resources (projects, organizations, billing accounts or
  135. // folders)
  136. func (c *Client) WriteLogEntries(ctx context.Context, req *loggingpb.WriteLogEntriesRequest, opts ...gax.CallOption) (*loggingpb.WriteLogEntriesResponse, error) {
  137. ctx = insertMetadata(ctx, c.xGoogMetadata)
  138. opts = append(c.CallOptions.WriteLogEntries[0:len(c.CallOptions.WriteLogEntries):len(c.CallOptions.WriteLogEntries)], opts...)
  139. var resp *loggingpb.WriteLogEntriesResponse
  140. err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
  141. var err error
  142. resp, err = c.client.WriteLogEntries(ctx, req, settings.GRPC...)
  143. return err
  144. }, opts...)
  145. if err != nil {
  146. return nil, err
  147. }
  148. return resp, nil
  149. }
  150. // ListLogEntries lists log entries. Use this method to retrieve log entries from
  151. // Logging. For ways to export log entries, see
  152. // Exporting Logs (at /logging/docs/export).
  153. func (c *Client) ListLogEntries(ctx context.Context, req *loggingpb.ListLogEntriesRequest, opts ...gax.CallOption) *LogEntryIterator {
  154. ctx = insertMetadata(ctx, c.xGoogMetadata)
  155. opts = append(c.CallOptions.ListLogEntries[0:len(c.CallOptions.ListLogEntries):len(c.CallOptions.ListLogEntries)], opts...)
  156. it := &LogEntryIterator{}
  157. req = proto.Clone(req).(*loggingpb.ListLogEntriesRequest)
  158. it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.LogEntry, string, error) {
  159. var resp *loggingpb.ListLogEntriesResponse
  160. req.PageToken = pageToken
  161. if pageSize > math.MaxInt32 {
  162. req.PageSize = math.MaxInt32
  163. } else {
  164. req.PageSize = int32(pageSize)
  165. }
  166. err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
  167. var err error
  168. resp, err = c.client.ListLogEntries(ctx, req, settings.GRPC...)
  169. return err
  170. }, opts...)
  171. if err != nil {
  172. return nil, "", err
  173. }
  174. return resp.Entries, resp.NextPageToken, nil
  175. }
  176. fetch := func(pageSize int, pageToken string) (string, error) {
  177. items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
  178. if err != nil {
  179. return "", err
  180. }
  181. it.items = append(it.items, items...)
  182. return nextPageToken, nil
  183. }
  184. it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
  185. it.pageInfo.MaxSize = int(req.PageSize)
  186. return it
  187. }
  188. // ListMonitoredResourceDescriptors lists the descriptors for monitored resource types used by Logging.
  189. func (c *Client) ListMonitoredResourceDescriptors(ctx context.Context, req *loggingpb.ListMonitoredResourceDescriptorsRequest, opts ...gax.CallOption) *MonitoredResourceDescriptorIterator {
  190. ctx = insertMetadata(ctx, c.xGoogMetadata)
  191. opts = append(c.CallOptions.ListMonitoredResourceDescriptors[0:len(c.CallOptions.ListMonitoredResourceDescriptors):len(c.CallOptions.ListMonitoredResourceDescriptors)], opts...)
  192. it := &MonitoredResourceDescriptorIterator{}
  193. req = proto.Clone(req).(*loggingpb.ListMonitoredResourceDescriptorsRequest)
  194. it.InternalFetch = func(pageSize int, pageToken string) ([]*monitoredrespb.MonitoredResourceDescriptor, string, error) {
  195. var resp *loggingpb.ListMonitoredResourceDescriptorsResponse
  196. req.PageToken = pageToken
  197. if pageSize > math.MaxInt32 {
  198. req.PageSize = math.MaxInt32
  199. } else {
  200. req.PageSize = int32(pageSize)
  201. }
  202. err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
  203. var err error
  204. resp, err = c.client.ListMonitoredResourceDescriptors(ctx, req, settings.GRPC...)
  205. return err
  206. }, opts...)
  207. if err != nil {
  208. return nil, "", err
  209. }
  210. return resp.ResourceDescriptors, resp.NextPageToken, nil
  211. }
  212. fetch := func(pageSize int, pageToken string) (string, error) {
  213. items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
  214. if err != nil {
  215. return "", err
  216. }
  217. it.items = append(it.items, items...)
  218. return nextPageToken, nil
  219. }
  220. it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
  221. it.pageInfo.MaxSize = int(req.PageSize)
  222. return it
  223. }
  224. // ListLogs lists the logs in projects, organizations, folders, or billing accounts.
  225. // Only logs that have entries are listed.
  226. func (c *Client) ListLogs(ctx context.Context, req *loggingpb.ListLogsRequest, opts ...gax.CallOption) *StringIterator {
  227. ctx = insertMetadata(ctx, c.xGoogMetadata)
  228. opts = append(c.CallOptions.ListLogs[0:len(c.CallOptions.ListLogs):len(c.CallOptions.ListLogs)], opts...)
  229. it := &StringIterator{}
  230. req = proto.Clone(req).(*loggingpb.ListLogsRequest)
  231. it.InternalFetch = func(pageSize int, pageToken string) ([]string, string, error) {
  232. var resp *loggingpb.ListLogsResponse
  233. req.PageToken = pageToken
  234. if pageSize > math.MaxInt32 {
  235. req.PageSize = math.MaxInt32
  236. } else {
  237. req.PageSize = int32(pageSize)
  238. }
  239. err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
  240. var err error
  241. resp, err = c.client.ListLogs(ctx, req, settings.GRPC...)
  242. return err
  243. }, opts...)
  244. if err != nil {
  245. return nil, "", err
  246. }
  247. return resp.LogNames, resp.NextPageToken, nil
  248. }
  249. fetch := func(pageSize int, pageToken string) (string, error) {
  250. items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
  251. if err != nil {
  252. return "", err
  253. }
  254. it.items = append(it.items, items...)
  255. return nextPageToken, nil
  256. }
  257. it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
  258. it.pageInfo.MaxSize = int(req.PageSize)
  259. return it
  260. }
  261. // LogEntryIterator manages a stream of *loggingpb.LogEntry.
  262. type LogEntryIterator struct {
  263. items []*loggingpb.LogEntry
  264. pageInfo *iterator.PageInfo
  265. nextFunc func() error
  266. // InternalFetch is for use by the Google Cloud Libraries only.
  267. // It is not part of the stable interface of this package.
  268. //
  269. // InternalFetch returns results from a single call to the underlying RPC.
  270. // The number of results is no greater than pageSize.
  271. // If there are no more results, nextPageToken is empty and err is nil.
  272. InternalFetch func(pageSize int, pageToken string) (results []*loggingpb.LogEntry, nextPageToken string, err error)
  273. }
  274. // PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
  275. func (it *LogEntryIterator) PageInfo() *iterator.PageInfo {
  276. return it.pageInfo
  277. }
  278. // Next returns the next result. Its second return value is iterator.Done if there are no more
  279. // results. Once Next returns Done, all subsequent calls will return Done.
  280. func (it *LogEntryIterator) Next() (*loggingpb.LogEntry, error) {
  281. var item *loggingpb.LogEntry
  282. if err := it.nextFunc(); err != nil {
  283. return item, err
  284. }
  285. item = it.items[0]
  286. it.items = it.items[1:]
  287. return item, nil
  288. }
  289. func (it *LogEntryIterator) bufLen() int {
  290. return len(it.items)
  291. }
  292. func (it *LogEntryIterator) takeBuf() interface{} {
  293. b := it.items
  294. it.items = nil
  295. return b
  296. }
  297. // MonitoredResourceDescriptorIterator manages a stream of *monitoredrespb.MonitoredResourceDescriptor.
  298. type MonitoredResourceDescriptorIterator struct {
  299. items []*monitoredrespb.MonitoredResourceDescriptor
  300. pageInfo *iterator.PageInfo
  301. nextFunc func() error
  302. // InternalFetch is for use by the Google Cloud Libraries only.
  303. // It is not part of the stable interface of this package.
  304. //
  305. // InternalFetch returns results from a single call to the underlying RPC.
  306. // The number of results is no greater than pageSize.
  307. // If there are no more results, nextPageToken is empty and err is nil.
  308. InternalFetch func(pageSize int, pageToken string) (results []*monitoredrespb.MonitoredResourceDescriptor, nextPageToken string, err error)
  309. }
  310. // PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
  311. func (it *MonitoredResourceDescriptorIterator) PageInfo() *iterator.PageInfo {
  312. return it.pageInfo
  313. }
  314. // Next returns the next result. Its second return value is iterator.Done if there are no more
  315. // results. Once Next returns Done, all subsequent calls will return Done.
  316. func (it *MonitoredResourceDescriptorIterator) Next() (*monitoredrespb.MonitoredResourceDescriptor, error) {
  317. var item *monitoredrespb.MonitoredResourceDescriptor
  318. if err := it.nextFunc(); err != nil {
  319. return item, err
  320. }
  321. item = it.items[0]
  322. it.items = it.items[1:]
  323. return item, nil
  324. }
  325. func (it *MonitoredResourceDescriptorIterator) bufLen() int {
  326. return len(it.items)
  327. }
  328. func (it *MonitoredResourceDescriptorIterator) takeBuf() interface{} {
  329. b := it.items
  330. it.items = nil
  331. return b
  332. }
  333. // StringIterator manages a stream of string.
  334. type StringIterator struct {
  335. items []string
  336. pageInfo *iterator.PageInfo
  337. nextFunc func() error
  338. // InternalFetch is for use by the Google Cloud Libraries only.
  339. // It is not part of the stable interface of this package.
  340. //
  341. // InternalFetch returns results from a single call to the underlying RPC.
  342. // The number of results is no greater than pageSize.
  343. // If there are no more results, nextPageToken is empty and err is nil.
  344. InternalFetch func(pageSize int, pageToken string) (results []string, nextPageToken string, err error)
  345. }
  346. // PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
  347. func (it *StringIterator) PageInfo() *iterator.PageInfo {
  348. return it.pageInfo
  349. }
  350. // Next returns the next result. Its second return value is iterator.Done if there are no more
  351. // results. Once Next returns Done, all subsequent calls will return Done.
  352. func (it *StringIterator) Next() (string, error) {
  353. var item string
  354. if err := it.nextFunc(); err != nil {
  355. return item, err
  356. }
  357. item = it.items[0]
  358. it.items = it.items[1:]
  359. return item, nil
  360. }
  361. func (it *StringIterator) bufLen() int {
  362. return len(it.items)
  363. }
  364. func (it *StringIterator) takeBuf() interface{} {
  365. b := it.items
  366. it.items = nil
  367. return b
  368. }