diff --git a/extensions/arc/src/models/controllerModel.ts b/extensions/arc/src/models/controllerModel.ts index a112446bf6..eedfed3fae 100644 --- a/extensions/arc/src/models/controllerModel.ts +++ b/extensions/arc/src/models/controllerModel.ts @@ -138,12 +138,19 @@ export class ControllerModel { return this._controllerRegistration; } - public getRegistration(type: string, namespace: string, name: string): Registration | undefined { + public getRegistration(type: ResourceType, namespace: string, name: string): Registration | undefined { return this._registrations.find(r => { return r.instanceType === type && r.instanceNamespace === namespace && parseInstanceName(r.instanceName) === name; }); } + public async deleteRegistration(type: ResourceType, namespace: string, name: string) { + const r = this.getRegistration(type, namespace, name); + if (r && !r.isDeleted && r.customObjectName) { + await this._registrationRouter.apiV1RegistrationNsNameIsDeletedDelete(this._namespace, r.customObjectName, true); + } + } + /** * Deletes the specified MIAA resource from the controller * @param namespace The namespace of the resource @@ -151,6 +158,7 @@ export class ControllerModel { */ public async miaaDelete(namespace: string, name: string): Promise { await this._sqlInstanceRouter.apiV1HybridSqlNsNameDelete(namespace, name); + await this.deleteRegistration(ResourceType.sqlManagedInstances, namespace, name); } /** diff --git a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts index 5af2dc40f0..8ad035a15f 100644 --- a/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts +++ b/extensions/arc/src/ui/dashboards/postgres/postgresOverviewPage.ts @@ -231,6 +231,7 @@ export class PostgresOverviewPage extends DashboardPage { try { if (await promptForResourceDeletion(this._postgresModel.namespace, this._postgresModel.name)) { await this._postgresModel.delete(); + await this._controllerModel.deleteRegistration(ResourceType.postgresInstances, this._postgresModel.namespace, this._postgresModel.name); vscode.window.showInformationMessage(loc.resourceDeleted(this._postgresModel.fullName)); } } catch (error) { diff --git a/extensions/arc/src/ui/tree/controllerTreeNode.ts b/extensions/arc/src/ui/tree/controllerTreeNode.ts index 70b1622164..ed87f249cd 100644 --- a/extensions/arc/src/ui/tree/controllerTreeNode.ts +++ b/extensions/arc/src/ui/tree/controllerTreeNode.ts @@ -67,7 +67,7 @@ export class ControllerTreeNode extends TreeNode { private refreshChildren(registrations: Registration[]): void { const newChildren: ResourceTreeNode[] = []; - registrations.forEach(registration => { + registrations.filter(r => !r.isDeleted).forEach(registration => { if (!registration.instanceNamespace || !registration.instanceName) { console.warn('Registration is missing required namespace and name values, skipping'); return;