UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

120 lines (119 loc) 5.32 kB
/** * SPDX-License-Identifier: Apache-2.0 */ import { type K8Factory } from '../../core/kube/k8_factory.js'; import { type LeaseHolder } from './lease_holder.js'; import { type Duration } from '../time/duration.js'; import { type NamespaceName } from '../kube/resources/namespace/namespace_name.js'; export interface Lease { readonly k8Factory: K8Factory; readonly renewalService: LeaseRenewalService; readonly leaseName: string; readonly leaseHolder: LeaseHolder; readonly namespace: NamespaceName; readonly durationSeconds: number; scheduleId: number; /** * Acquires the lease. If the lease is already acquired, it checks if the lease is expired or held by the same process. * If the lease is expired, it creates a new lease. If the lease is held by the same process, it renews the lease. * If the lease is held by another process, then an exception is thrown. * * @throws LeaseAcquisitionError - If the lease is already acquired by another process or an error occurs during acquisition. */ acquire(): Promise<void>; /** * Attempts to acquire the lease, by calling the acquire method. If an exception is thrown, it is caught and false is returned. * If the lease is successfully acquired, true is returned; otherwise, false is returned. * * @returns true if the lease is successfully acquired; otherwise, false. */ tryAcquire(): Promise<boolean>; /** * Renews the lease. If the lease is expired or held by the same process, it creates or renews the lease. * If the lease is held by another process, then an exception is thrown. * * @throws LeaseAcquisitionError - If the lease is already acquired by another process or an error occurs during renewal. */ renew(): Promise<void>; /** * Attempts to renew the lease, by calling the renew method. If an exception is thrown, it is caught and false is returned. * If the lease is successfully renewed, true is returned; otherwise, false is returned. * * @returns true if the lease is successfully renewed; otherwise, false. */ tryRenew(): Promise<boolean>; /** * Releases the lease. If the lease is expired or held by the same process, it deletes the lease. * If the lease is held by another process, then an exception is thrown. * * @throws LeaseRelinquishmentError - If the lease is already acquired by another process or an error occurs during relinquishment. */ release(): Promise<void>; /** * Attempts to release the lease, by calling the release method. If an exception is thrown, it is caught and false is returned. * If the lease is successfully released, true is returned; otherwise, false is returned. * * @returns true if the lease is successfully released; otherwise, false. */ tryRelease(): Promise<boolean>; /** * Checks if the lease is acquired. If the lease is acquired and not expired, it returns true; otherwise, false. * * @returns true if the lease is acquired and not expired; otherwise, false. */ isAcquired(): Promise<boolean>; /** * Checks if the lease is expired. If the lease is expired, it returns true; otherwise, false. * This method does not verify if the lease is acquired by the current process. * * @returns true if the lease is expired; otherwise, false. */ isExpired(): Promise<boolean>; } /** * Copyright (C) 2024 Hedera Hashgraph, LLC * * Licensed under the Apache License, Version 2.0 (the ""License""); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an ""AS IS"" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ export interface LeaseRenewalService { /** * Determines if a lease renewal is scheduled. * @param scheduleId - the unique identifier of the scheduled lease renewal. * @returns true if the lease renewal is scheduled; false otherwise. */ isScheduled(scheduleId: number): Promise<boolean>; /** * Schedules a lease renewal. * @param lease - the lease to be renewed. * @returns the unique identifier of the scheduled lease renewal. */ schedule(lease: Lease): Promise<number>; /** * Cancels a scheduled lease renewal. * @param scheduleId - the unique identifier of the scheduled lease renewal. * @returns true if the lease renewal was successfully cancelled; false otherwise. */ cancel(scheduleId: number): Promise<boolean>; /** * Cancels all scheduled lease renewals. * @returns a map of the unique identifiers of the scheduled lease renewals and their cancellation status. */ cancelAll(): Promise<Map<number, boolean>>; /** * Calculates the delay before the next lease renewal. * @param lease - the lease to be renewed. * @returns the delay in milliseconds. */ calculateRenewalDelay(lease: Lease): Duration; }