Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import { AppRunnerNode } from './apprunnerNode'

import { toArrayAsync, toMap } from '../../../shared/utilities/collectionUtils'
import { CloudWatchLogsBase } from '../../../awsService/cloudWatchLogs/explorer/cloudWatchLogsNode'
import { CloudWatchLogs } from 'aws-sdk'
import { AWSResourceNode } from '../../../shared/treeview/nodes/awsResourceNode'

import * as nls from 'vscode-nls'
import { getLogger } from '../../../shared/logger/logger'
import { getIcon } from '../../../shared/icons'
import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { LogGroup } from '@aws-sdk/client-cloudwatch-logs'
const localize = nls.loadMessageBundle()

const contextBase = 'awsAppRunnerServiceNode'
Expand All @@ -43,7 +43,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou
private readonly client: AppRunnerClient,
private _info: AppRunner.Service,
private currentOperation: AppRunner.OperationSummary & { Type?: ServiceOperation } = {},
cloudwatchClient = new DefaultCloudWatchLogsClient(client.regionCode)
cloudwatchClient = new CloudWatchLogsClient(client.regionCode)
) {
super('App Runner Service', parent.regionCode, cloudwatchClient)

Expand All @@ -63,7 +63,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou
return `https://${this._info.ServiceUrl}`
}

protected async getLogGroups(): Promise<Map<string, CloudWatchLogs.LogGroup>> {
protected async getLogGroups(): Promise<Map<string, LogGroup>> {
return toMap(
await toArrayAsync(
this.cloudwatchClient.describeLogGroups({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,10 @@ import {
import { DataQuickPickItem } from '../../../shared/ui/pickerPrompter'
import { isValidResponse, isWizardControl, Wizard, WIZARD_RETRY } from '../../../shared/wizards/wizard'
import { cwlUriSchema, msgKey, recordTelemetryFilter } from '../cloudWatchLogsUtils'
import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { CancellationError } from '../../../shared/utilities/timeoutUtils'
import { getLogger } from '../../../shared/logger/logger'
import { TimeFilterResponse, TimeFilterSubmenu } from '../timeFilterSubmenu'
import { CloudWatchLogs } from 'aws-sdk'
import { ExtendedInputBoxOptions, InputBox, InputBoxPrompter } from '../../../shared/ui/inputPrompter'
import { RegionSubmenu, RegionSubmenuResponse } from '../../../shared/ui/common/regionSubmenu'
import { truncate } from '../../../shared/utilities/textUtilities'
Expand All @@ -30,6 +29,7 @@ import { PromptResult } from '../../../shared/ui/prompter'
import { ToolkitError } from '../../../shared/errors'
import { Messages } from '../../../shared/utilities/messages'
import { showFile } from '../../../shared/utilities/textDocumentUtilities'
import { LogGroup } from '@aws-sdk/client-cloudwatch-logs'

const localize = nls.loadMessageBundle()

Expand Down Expand Up @@ -110,7 +110,7 @@ export async function searchLogGroup(
}

async function getLogGroupsFromRegion(regionCode: string): Promise<DataQuickPickItem<string>[]> {
const client = new DefaultCloudWatchLogsClient(regionCode)
const client = new CloudWatchLogsClient(regionCode)
const logGroups = await logGroupsToArray(client.describeLogGroups())
const options = logGroups.map<DataQuickPickItem<string>>((logGroupString) => ({
label: logGroupString,
Expand All @@ -119,7 +119,7 @@ async function getLogGroupsFromRegion(regionCode: string): Promise<DataQuickPick
return options
}

async function logGroupsToArray(logGroups: AsyncIterableIterator<CloudWatchLogs.LogGroup>): Promise<string[]> {
async function logGroupsToArray(logGroups: AsyncIterableIterator<LogGroup>): Promise<string[]> {
const logGroupsArray = []
for await (const logGroupObject of logGroups) {
logGroupObject.logGroupName && logGroupsArray.push(logGroupObject.logGroupName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ import * as vscode from 'vscode'
import * as picker from '../../../shared/ui/picker'
import { MultiStepWizard, WIZARD_RETRY, WIZARD_TERMINATE, WizardStep } from '../../../shared/wizards/multiStepWizard'
import { LogGroupNode } from '../explorer/logGroupNode'
import { CloudWatchLogs } from 'aws-sdk'

import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import * as CloudWatchLogs from '@aws-sdk/client-cloudwatch-logs'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { getPaginatedAwsCallIter, IteratorTransformer } from '../../../shared/utilities/collectionUtils'
import {
CloudWatchLogsGroupInfo,
Expand Down Expand Up @@ -82,7 +81,7 @@ export class DefaultSelectLogStreamWizardContext implements SelectLogStreamWizar
) {}

public async pickLogStream(): Promise<LogSearchChoice> {
const client = new DefaultCloudWatchLogsClient(this.regionCode)
const client = new CloudWatchLogsClient(this.regionCode)
const request: CloudWatchLogs.DescribeLogStreamsRequest = {
logGroupName: this.logGroupName,
orderBy: 'LastEventTime',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
import * as nls from 'vscode-nls'
const localize = nls.loadMessageBundle()

import { CloudWatchLogs } from 'aws-sdk'
import * as vscode from 'vscode'

import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'

import { AWSTreeNodeBase } from '../../../shared/treeview/nodes/awsTreeNodeBase'
import { toMap, updateInPlace, toArrayAsync } from '../../../shared/utilities/collectionUtils'
import { PlaceholderNode } from '../../../shared/treeview/nodes/placeholderNode'
import { makeChildrenNodes } from '../../../shared/treeview/utils'
import { LogGroupNode } from './logGroupNode'
import { LogGroup } from '@aws-sdk/client-cloudwatch-logs'

export abstract class CloudWatchLogsBase extends AWSTreeNodeBase {
protected readonly logGroupNodes: Map<string, LogGroupNode>
Expand All @@ -24,13 +24,13 @@ export abstract class CloudWatchLogsBase extends AWSTreeNodeBase {
public constructor(
label: string,
public override readonly regionCode: string,
protected readonly cloudwatchClient: DefaultCloudWatchLogsClient
protected readonly cloudwatchClient: CloudWatchLogsClient
) {
super(label, vscode.TreeItemCollapsibleState.Collapsed)
this.logGroupNodes = new Map<string, LogGroupNode>()
}

protected abstract getLogGroups(client: DefaultCloudWatchLogsClient): Promise<Map<string, CloudWatchLogs.LogGroup>>
protected abstract getLogGroups(client: CloudWatchLogsClient): Promise<Map<string, LogGroup>>

public override async getChildren(): Promise<AWSTreeNodeBase[]> {
return await makeChildrenNodes({
Expand Down Expand Up @@ -58,12 +58,12 @@ export abstract class CloudWatchLogsBase extends AWSTreeNodeBase {
export class CloudWatchLogsNode extends CloudWatchLogsBase {
protected readonly placeholderMessage = localize('AWS.explorerNode.cloudWatchLogs.nologs', '[No log groups found]')

public constructor(regionCode: string, client = new DefaultCloudWatchLogsClient(regionCode)) {
public constructor(regionCode: string, client = new CloudWatchLogsClient(regionCode)) {
super('CloudWatch Logs', regionCode, client)
this.contextValue = 'awsCloudWatchLogParentNode'
}

protected async getLogGroups(client: DefaultCloudWatchLogsClient): Promise<Map<string, CloudWatchLogs.LogGroup>> {
protected async getLogGroups(client: CloudWatchLogsClient): Promise<Map<string, LogGroup>> {
return toMap(await toArrayAsync(client.describeLogGroups()), (configuration) => configuration.logGroupName)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
* SPDX-License-Identifier: Apache-2.0
*/

import { CloudWatchLogs } from 'aws-sdk'
import * as os from 'os'
import { AWSResourceNode } from '../../../shared/treeview/nodes/awsResourceNode'
import { AWSTreeNodeBase } from '../../../shared/treeview/nodes/awsTreeNodeBase'
import { getIcon } from '../../../shared/icons'
import { localize } from '../../../shared/utilities/vsCodeUtils'
import { LogGroup } from '@aws-sdk/client-cloudwatch-logs'

export const contextValueCloudwatchLog = 'awsCloudWatchLogNode'

export class LogGroupNode extends AWSTreeNodeBase implements AWSResourceNode {
public constructor(
public override readonly regionCode: string,
public logGroup: CloudWatchLogs.LogGroup
public logGroup: LogGroup
) {
super('')
this.update(logGroup)
Expand All @@ -28,7 +28,7 @@ export class LogGroupNode extends AWSTreeNodeBase implements AWSResourceNode {
}
}

public update(logGroup: CloudWatchLogs.LogGroup): void {
public update(logGroup: LogGroup): void {
this.logGroup = logGroup
this.label = this.logGroup.logGroupName || ''
this.tooltip = `${this.logGroup.logGroupName}${os.EOL}${this.logGroup.arn}`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
*/

import * as vscode from 'vscode'
import { CloudWatchLogs } from 'aws-sdk'
import { CloudWatchLogsSettings, uriToKey, msgKey, cwlUriSchema } from '../cloudWatchLogsUtils'
import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { waitTimeout } from '../../../shared/utilities/timeoutUtils'
import { Messages } from '../../../shared/utilities/messages'
import { pageableToCollection } from '../../../shared/utilities/collectionUtils'
import { Settings } from '../../../shared/settings'
import * as CloudWatchLogs from '@aws-sdk/client-cloudwatch-logs'
// TODO: Add debug logging statements

/** Uri as a string */
Expand Down Expand Up @@ -212,7 +212,7 @@ export async function filterLogEventsFromUri(
nextToken?: string,
completeTimeout = false
): Promise<CloudWatchLogsResponse> {
const client = new DefaultCloudWatchLogsClient(logGroupInfo.regionName)
const client = new CloudWatchLogsClient(logGroupInfo.regionName)

const cwlParameters: CloudWatchLogs.FilterLogEventsRequest = {
logGroupName: logGroupInfo.groupName,
Expand Down Expand Up @@ -301,9 +301,9 @@ export type CloudWatchLogsParameters = {
}

export type CloudWatchLogsResponse = {
events: CloudWatchLogs.FilteredLogEvents
nextForwardToken?: CloudWatchLogs.NextToken
nextBackwardToken?: CloudWatchLogs.NextToken
events: CloudWatchLogs.FilteredLogEvent[]
nextForwardToken?: string
nextBackwardToken?: string
}

export type CloudWatchLogsAction = (
Expand All @@ -323,10 +323,10 @@ export class CloudWatchLogsData {
logGroupInfo!: CloudWatchLogsGroupInfo
retrieveLogsFunction!: CloudWatchLogsAction
next?: {
token: CloudWatchLogs.NextToken
token: string
}
previous?: {
token: CloudWatchLogs.NextToken
token: string
}
busy: boolean = false
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { Prompter, PromptResult } from '../../../shared/ui/prompter'
import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { createCommonButtons } from '../../../shared/ui/buttons'
import { createInputBox, InputBoxPrompter } from '../../../shared/ui/inputPrompter'
import { createQuickPick, DataQuickPickItem, QuickPickPrompter } from '../../../shared/ui/pickerPrompter'
import { pageableToCollection } from '../../../shared/utilities/collectionUtils'
import { CloudWatchLogs } from 'aws-sdk'
import * as CloudWatchLogs from '@aws-sdk/client-cloudwatch-logs'
import { isValidResponse, StepEstimator } from '../../../shared/wizards/wizard'
import { isNonNullable } from '../../../shared/utilities/tsUtils'
import {
Expand Down Expand Up @@ -87,7 +87,7 @@ export class LogStreamFilterSubmenu extends Prompter<LogStreamFilterResponse> {

public createLogStreamSelector(): QuickPickPrompter<string> {
const helpUri = startLiveTailLogStreamNamesHelpUrl
const client = new DefaultCloudWatchLogsClient(this.region)
const client = new CloudWatchLogsClient(this.region)
const request: CloudWatchLogs.DescribeLogStreamsRequest = {
logGroupIdentifier: this.logGroupArn,
orderBy: 'LastEventTime',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import * as nls from 'vscode-nls'
import globals from '../../../shared/extensionGlobals'
import { ToolkitError } from '../../../shared/errors'
import { DefaultCloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs'
import { cwlFilterPatternHelpUrl } from '../../../shared/constants'
import { createBackButton, createExitButton, createHelpButton } from '../../../shared/ui/buttons'
import { RegionSubmenu, RegionSubmenuResponse } from '../../../shared/ui/common/regionSubmenu'
Expand Down Expand Up @@ -64,7 +64,7 @@ export function createRegionLogGroupSubmenu(): RegionSubmenu<string> {
}

async function getLogGroupQuickPickOptions(regionCode: string): Promise<DataQuickPickItem<string>[]> {
const client = new DefaultCloudWatchLogsClient(regionCode)
const client = new CloudWatchLogsClient(regionCode)
const logGroups = client.describeLogGroups()

const logGroupsOptions: DataQuickPickItem<string>[] = []
Expand Down
46 changes: 46 additions & 0 deletions packages/core/src/shared/clients/cloudWatchLogs.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*!
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/

import * as CloudWatchLogs from '@aws-sdk/client-cloudwatch-logs'
import { ClientWrapper } from './clientWrapper'

export class CloudWatchLogsClient extends ClientWrapper<CloudWatchLogs.CloudWatchLogsClient> {
public constructor(regionCode: string) {
super(regionCode, CloudWatchLogs.CloudWatchLogsClient)
}

public async *describeLogGroups(
request: CloudWatchLogs.DescribeLogGroupsRequest = {}
): AsyncIterableIterator<CloudWatchLogs.LogGroup> {
do {
const response: CloudWatchLogs.DescribeLogGroupsResponse = await this.makeRequest(
CloudWatchLogs.DescribeLogGroupsCommand,
request
)
if (response.logGroups) {
yield* response.logGroups
}
request.nextToken = response.nextToken
} while (request.nextToken)
}

public async describeLogStreams(
request: CloudWatchLogs.DescribeLogStreamsRequest
): Promise<CloudWatchLogs.DescribeLogStreamsResponse> {
return await this.makeRequest(CloudWatchLogs.DescribeLogStreamsCommand, request)
}

public async getLogEvents(
request: CloudWatchLogs.GetLogEventsRequest
): Promise<CloudWatchLogs.GetLogEventsResponse> {
return await this.makeRequest(CloudWatchLogs.GetLogEventsCommand, request)
}

public async filterLogEvents(
request: CloudWatchLogs.FilterLogEventsRequest
): Promise<CloudWatchLogs.FilterLogEventsResponse> {
return await this.makeRequest(CloudWatchLogs.FilterLogEventsCommand, request)
}
}
61 changes: 0 additions & 61 deletions packages/core/src/shared/clients/cloudWatchLogsClient.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { AppRunner } from 'aws-sdk'
import { AppRunnerNode } from '../../../../awsService/apprunner/explorer/apprunnerNode'
import { AppRunnerServiceNode } from '../../../../awsService/apprunner/explorer/apprunnerServiceNode'
import { DefaultAppRunnerClient } from '../../../../shared/clients/apprunnerClient'
import { DefaultCloudWatchLogsClient } from '../../../../shared/clients/cloudWatchLogsClient'
import { CloudWatchLogsClient } from '../../../../shared/clients/cloudWatchLogs'
import { asyncGenerator } from '../../../../shared/utilities/collectionUtils'
import { AWSTreeNodeBase } from '../../../../shared/treeview/nodes/awsTreeNodeBase'
import { stub } from '../../../utilities/stubber'
Expand All @@ -33,7 +33,7 @@ describe('AppRunnerServiceNode', function () {
})

beforeEach(function () {
const cloudwatchClient = stub(DefaultCloudWatchLogsClient, { regionCode: 'us-east-1' })
const cloudwatchClient = stub(CloudWatchLogsClient, { regionCode: 'us-east-1' })
cloudwatchClient.describeLogGroups.returns(asyncGenerator([{ logGroupName: 'logs' }]))

mockApprunnerClient = stub(DefaultAppRunnerClient, { regionCode: 'us-east-1' })
Expand Down
Loading
Loading