| // This is a generated file (see the discoveryapis_generator project). |
| |
| // ignore_for_file: camel_case_types |
| // ignore_for_file: comment_references |
| // ignore_for_file: file_names |
| // ignore_for_file: library_names |
| // ignore_for_file: lines_longer_than_80_chars |
| // ignore_for_file: non_constant_identifier_names |
| // ignore_for_file: prefer_expression_function_bodies |
| // ignore_for_file: prefer_interpolation_to_compose_strings |
| // ignore_for_file: unnecessary_brace_in_string_interps |
| // ignore_for_file: unnecessary_lambdas |
| // ignore_for_file: unnecessary_string_interpolations |
| |
| /// Stackdriver Profiler API - v2 |
| /// |
| /// Manages continuous profiling information. |
| /// |
| /// For more information, see <https://cloud.google.com/profiler/> |
| /// |
| /// Create an instance of [CloudProfilerApi] to access these resources: |
| /// |
| /// - [ProjectsResource] |
| /// - [ProjectsProfilesResource] |
| library cloudprofiler.v2; |
| |
| import 'dart:async' as async; |
| import 'dart:convert' as convert; |
| import 'dart:core' as core; |
| |
| import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; |
| import 'package:http/http.dart' as http; |
| |
| import '../src/user_agent.dart'; |
| |
| export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' |
| show ApiRequestError, DetailedApiRequestError; |
| |
| /// Manages continuous profiling information. |
| class CloudProfilerApi { |
| /// See, edit, configure, and delete your Google Cloud data and see the email |
| /// address for your Google Account. |
| static const cloudPlatformScope = |
| 'https://www.googleapis.com/auth/cloud-platform'; |
| |
| /// View and write monitoring data for all of your Google and third-party |
| /// Cloud and API projects |
| static const monitoringScope = 'https://www.googleapis.com/auth/monitoring'; |
| |
| /// Publish metric data to your Google Cloud projects |
| static const monitoringWriteScope = |
| 'https://www.googleapis.com/auth/monitoring.write'; |
| |
| final commons.ApiRequester _requester; |
| |
| ProjectsResource get projects => ProjectsResource(_requester); |
| |
| CloudProfilerApi(http.Client client, |
| {core.String rootUrl = 'https://cloudprofiler.googleapis.com/', |
| core.String servicePath = ''}) |
| : _requester = |
| commons.ApiRequester(client, rootUrl, servicePath, requestHeaders); |
| } |
| |
| class ProjectsResource { |
| final commons.ApiRequester _requester; |
| |
| ProjectsProfilesResource get profiles => ProjectsProfilesResource(_requester); |
| |
| ProjectsResource(commons.ApiRequester client) : _requester = client; |
| } |
| |
| class ProjectsProfilesResource { |
| final commons.ApiRequester _requester; |
| |
| ProjectsProfilesResource(commons.ApiRequester client) : _requester = client; |
| |
| /// CreateProfile creates a new profile resource in the online mode. |
| /// |
| /// The server ensures that the new profiles are created at a constant rate |
| /// per deployment, so the creation request may hang for some time until the |
| /// next profile session is available. The request may fail with ABORTED error |
| /// if the creation is not available within ~1m, the response will indicate |
| /// the duration of the backoff the client should take before attempting |
| /// creating a profile again. The backoff duration is returned in |
| /// google.rpc.RetryInfo extension on the response status. To a gRPC client, |
| /// the extension will be return as a binary-serialized proto in the trailing |
| /// metadata item named "google.rpc.retryinfo-bin". |
| /// |
| /// [request] - The metadata request object. |
| /// |
| /// Request parameters: |
| /// |
| /// [parent] - Parent project to create the profile in. |
| /// Value must have pattern `^projects/\[^/\]+$`. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// Completes with a [Profile]. |
| /// |
| /// Completes with a [commons.ApiRequestError] if the API endpoint returned an |
| /// error. |
| /// |
| /// If the used [http.Client] completes with an error when making a REST call, |
| /// this method will complete with the same error. |
| async.Future<Profile> create( |
| CreateProfileRequest request, |
| core.String parent, { |
| core.String? $fields, |
| }) async { |
| final _body = convert.json.encode(request.toJson()); |
| final _queryParams = <core.String, core.List<core.String>>{ |
| if ($fields != null) 'fields': [$fields], |
| }; |
| |
| final _url = 'v2/' + core.Uri.encodeFull('$parent') + '/profiles'; |
| |
| final _response = await _requester.request( |
| _url, |
| 'POST', |
| body: _body, |
| queryParams: _queryParams, |
| ); |
| return Profile.fromJson(_response as core.Map<core.String, core.dynamic>); |
| } |
| |
| /// CreateOfflineProfile creates a new profile resource in the offline mode. |
| /// |
| /// The client provides the profile to create along with the profile bytes, |
| /// the server records it. |
| /// |
| /// [request] - The metadata request object. |
| /// |
| /// Request parameters: |
| /// |
| /// [parent] - Parent project to create the profile in. |
| /// Value must have pattern `^projects/\[^/\]+$`. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// Completes with a [Profile]. |
| /// |
| /// Completes with a [commons.ApiRequestError] if the API endpoint returned an |
| /// error. |
| /// |
| /// If the used [http.Client] completes with an error when making a REST call, |
| /// this method will complete with the same error. |
| async.Future<Profile> createOffline( |
| Profile request, |
| core.String parent, { |
| core.String? $fields, |
| }) async { |
| final _body = convert.json.encode(request.toJson()); |
| final _queryParams = <core.String, core.List<core.String>>{ |
| if ($fields != null) 'fields': [$fields], |
| }; |
| |
| final _url = |
| 'v2/' + core.Uri.encodeFull('$parent') + '/profiles:createOffline'; |
| |
| final _response = await _requester.request( |
| _url, |
| 'POST', |
| body: _body, |
| queryParams: _queryParams, |
| ); |
| return Profile.fromJson(_response as core.Map<core.String, core.dynamic>); |
| } |
| |
| /// UpdateProfile updates the profile bytes and labels on the profile resource |
| /// created in the online mode. |
| /// |
| /// Updating the bytes for profiles created in the offline mode is currently |
| /// not supported: the profile content must be provided at the time of the |
| /// profile creation. |
| /// |
| /// [request] - The metadata request object. |
| /// |
| /// Request parameters: |
| /// |
| /// [name] - Output only. Opaque, server-assigned, unique ID for this profile. |
| /// Value must have pattern `^projects/\[^/\]+/profiles/\[^/\]+$`. |
| /// |
| /// [updateMask] - Field mask used to specify the fields to be overwritten. |
| /// Currently only profile_bytes and labels fields are supported by |
| /// UpdateProfile, so only those fields can be specified in the mask. When no |
| /// mask is provided, all fields are overwritten. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// Completes with a [Profile]. |
| /// |
| /// Completes with a [commons.ApiRequestError] if the API endpoint returned an |
| /// error. |
| /// |
| /// If the used [http.Client] completes with an error when making a REST call, |
| /// this method will complete with the same error. |
| async.Future<Profile> patch( |
| Profile request, |
| core.String name, { |
| core.String? updateMask, |
| core.String? $fields, |
| }) async { |
| final _body = convert.json.encode(request.toJson()); |
| final _queryParams = <core.String, core.List<core.String>>{ |
| if (updateMask != null) 'updateMask': [updateMask], |
| if ($fields != null) 'fields': [$fields], |
| }; |
| |
| final _url = 'v2/' + core.Uri.encodeFull('$name'); |
| |
| final _response = await _requester.request( |
| _url, |
| 'PATCH', |
| body: _body, |
| queryParams: _queryParams, |
| ); |
| return Profile.fromJson(_response as core.Map<core.String, core.dynamic>); |
| } |
| } |
| |
| /// CreateProfileRequest describes a profile resource online creation request. |
| /// |
| /// The deployment field must be populated. The profile_type specifies the list |
| /// of profile types supported by the agent. The creation call will hang until a |
| /// profile of one of these types needs to be collected. |
| class CreateProfileRequest { |
| /// Deployment details. |
| Deployment? deployment; |
| |
| /// One or more profile types that the agent is capable of providing. |
| core.List<core.String>? profileType; |
| |
| CreateProfileRequest({ |
| this.deployment, |
| this.profileType, |
| }); |
| |
| CreateProfileRequest.fromJson(core.Map _json) |
| : this( |
| deployment: _json.containsKey('deployment') |
| ? Deployment.fromJson( |
| _json['deployment'] as core.Map<core.String, core.dynamic>) |
| : null, |
| profileType: _json.containsKey('profileType') |
| ? (_json['profileType'] as core.List) |
| .map<core.String>((value) => value as core.String) |
| .toList() |
| : null, |
| ); |
| |
| core.Map<core.String, core.dynamic> toJson() => { |
| if (deployment != null) 'deployment': deployment!.toJson(), |
| if (profileType != null) 'profileType': profileType!, |
| }; |
| } |
| |
| /// Deployment contains the deployment identification information. |
| class Deployment { |
| /// Labels identify the deployment within the user universe and same target. |
| /// |
| /// Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. |
| /// Value for an individual label must be <= 512 bytes, the total size of all |
| /// label names and values must be <= 1024 bytes. Label named "language" can |
| /// be used to record the programming language of the profiled deployment. The |
| /// standard choices for the value include "java", "go", "python", "ruby", |
| /// "nodejs", "php", "dotnet". For deployments running on Google Cloud |
| /// Platform, "zone" or "region" label should be present describing the |
| /// deployment location. An example of a zone is "us-central1-a", an example |
| /// of a region is "us-central1" or "us-central". |
| core.Map<core.String, core.String>? labels; |
| |
| /// Project ID is the ID of a cloud project. |
| /// |
| /// Validation regex: `^a-z{4,61}[a-z0-9]$`. |
| core.String? projectId; |
| |
| /// Target is the service name used to group related deployments: * Service |
| /// name for GAE Flex / Standard. |
| /// |
| /// * Cluster and container name for GKE. * User-specified string for direct |
| /// GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: |
| /// `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`. |
| core.String? target; |
| |
| Deployment({ |
| this.labels, |
| this.projectId, |
| this.target, |
| }); |
| |
| Deployment.fromJson(core.Map _json) |
| : this( |
| labels: _json.containsKey('labels') |
| ? (_json['labels'] as core.Map<core.String, core.dynamic>).map( |
| (key, item) => core.MapEntry( |
| key, |
| item as core.String, |
| ), |
| ) |
| : null, |
| projectId: _json.containsKey('projectId') |
| ? _json['projectId'] as core.String |
| : null, |
| target: _json.containsKey('target') |
| ? _json['target'] as core.String |
| : null, |
| ); |
| |
| core.Map<core.String, core.dynamic> toJson() => { |
| if (labels != null) 'labels': labels!, |
| if (projectId != null) 'projectId': projectId!, |
| if (target != null) 'target': target!, |
| }; |
| } |
| |
| /// Profile resource. |
| class Profile { |
| /// Deployment this profile corresponds to. |
| Deployment? deployment; |
| |
| /// Duration of the profiling session. |
| /// |
| /// Input (for the offline mode) or output (for the online mode). The field |
| /// represents requested profiling duration. It may slightly differ from the |
| /// effective profiling duration, which is recorded in the profile data, in |
| /// case the profiling can't be stopped immediately (e.g. in case stopping the |
| /// profiling is handled asynchronously). |
| core.String? duration; |
| |
| /// Input only. |
| /// |
| /// Labels associated to this specific profile. These labels will get merged |
| /// with the deployment labels for the final data set. See documentation on |
| /// deployment labels for validation rules and limits. |
| core.Map<core.String, core.String>? labels; |
| |
| /// Opaque, server-assigned, unique ID for this profile. |
| /// |
| /// Output only. |
| core.String? name; |
| |
| /// Input only. |
| /// |
| /// Profile bytes, as a gzip compressed serialized proto, the format is |
| /// https://github.com/google/pprof/blob/master/proto/profile.proto. |
| core.String? profileBytes; |
| core.List<core.int> get profileBytesAsBytes => |
| convert.base64.decode(profileBytes!); |
| |
| set profileBytesAsBytes(core.List<core.int> _bytes) { |
| profileBytes = |
| convert.base64.encode(_bytes).replaceAll('/', '_').replaceAll('+', '-'); |
| } |
| |
| /// Type of profile. |
| /// |
| /// For offline mode, this must be specified when creating the profile. For |
| /// online mode it is assigned and returned by the server. |
| /// Possible string values are: |
| /// - "PROFILE_TYPE_UNSPECIFIED" : Unspecified profile type. |
| /// - "CPU" : Thread CPU time sampling. |
| /// - "WALL" : Wallclock time sampling. More expensive as stops all threads. |
| /// - "HEAP" : In-use heap profile. Represents a snapshot of the allocations |
| /// that are live at the time of the profiling. |
| /// - "THREADS" : Single-shot collection of all thread stacks. |
| /// - "CONTENTION" : Synchronization contention profile. |
| /// - "PEAK_HEAP" : Peak heap profile. |
| /// - "HEAP_ALLOC" : Heap allocation profile. It represents the aggregation of |
| /// all allocations made over the duration of the profile. All allocations are |
| /// included, including those that might have been freed by the end of the |
| /// profiling interval. The profile is in particular useful for garbage |
| /// collecting languages to understand which parts of the code create most of |
| /// the garbage collection pressure to see if those can be optimized. |
| core.String? profileType; |
| |
| Profile({ |
| this.deployment, |
| this.duration, |
| this.labels, |
| this.name, |
| this.profileBytes, |
| this.profileType, |
| }); |
| |
| Profile.fromJson(core.Map _json) |
| : this( |
| deployment: _json.containsKey('deployment') |
| ? Deployment.fromJson( |
| _json['deployment'] as core.Map<core.String, core.dynamic>) |
| : null, |
| duration: _json.containsKey('duration') |
| ? _json['duration'] as core.String |
| : null, |
| labels: _json.containsKey('labels') |
| ? (_json['labels'] as core.Map<core.String, core.dynamic>).map( |
| (key, item) => core.MapEntry( |
| key, |
| item as core.String, |
| ), |
| ) |
| : null, |
| name: _json.containsKey('name') ? _json['name'] as core.String : null, |
| profileBytes: _json.containsKey('profileBytes') |
| ? _json['profileBytes'] as core.String |
| : null, |
| profileType: _json.containsKey('profileType') |
| ? _json['profileType'] as core.String |
| : null, |
| ); |
| |
| core.Map<core.String, core.dynamic> toJson() => { |
| if (deployment != null) 'deployment': deployment!.toJson(), |
| if (duration != null) 'duration': duration!, |
| if (labels != null) 'labels': labels!, |
| if (name != null) 'name': name!, |
| if (profileBytes != null) 'profileBytes': profileBytes!, |
| if (profileType != null) 'profileType': profileType!, |
| }; |
| } |