com.azure.resourcemanager.search.models.SearchService Maven / Gradle / Ivy
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.resourcemanager.search.models;
import com.azure.core.annotation.Fluent;
import com.azure.core.http.rest.PagedFlux;
import com.azure.core.http.rest.PagedIterable;
import com.azure.core.management.exception.ManagementException;
import com.azure.resourcemanager.resources.fluentcore.arm.models.GroupableResource;
import com.azure.resourcemanager.resources.fluentcore.arm.models.Resource;
import com.azure.resourcemanager.resources.fluentcore.model.Appliable;
import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
import com.azure.resourcemanager.resources.fluentcore.model.Refreshable;
import com.azure.resourcemanager.resources.fluentcore.model.Updatable;
import com.azure.resourcemanager.search.SearchServiceManager;
import com.azure.resourcemanager.search.fluent.models.SearchServiceInner;
import reactor.core.publisher.Mono;
/**
* An immutable client-side representation of an Azure Cognitive Search service.
*/
@Fluent
public interface SearchService extends
GroupableResource,
Refreshable,
Updatable {
/**
* The hosting mode value.
*
* Applicable only for the standard3 SKU. You can set this property to enable up to
* 3 high density partitions that allow up to 1000 indexes, which is much higher than
* the maximum indexes allowed for any other SKU. For the standard3 SKU, the value is
* either 'default' or 'highDensity'. For all other SKUs, this value must be 'default'.
*
* @return the hosting mode value.
*/
HostingMode hostingMode();
/**
* @return the number of partitions used by the service
*/
int partitionCount();
/**
* The state of the last provisioning operation performed on the Search service.
*
* Provisioning is an intermediate state that occurs while service capacity is being established.
* After capacity is set up, provisioningState changes to either 'succeeded' or 'failed'.
* Client applications can poll provisioning status (the recommended polling interval is
* from 30 seconds to one minute) by using the Get Search Service operation to see when
* an operation is completed. If you are using the free service, this value tends to come
* back as 'succeeded' directly in the call to Create Search service. This is because
* the free service uses capacity that is already set up.
*
* @return the provisioning state of the resource
*/
ProvisioningState provisioningState();
/**
* @return the number of replicas used by the service
*/
int replicaCount();
/**
* @return the SKU type of the service
*/
Sku sku();
/**
* The status of the Search service.
*
* Possible values include:
* 'running': the Search service is running and no provisioning operations are underway.
* 'provisioning': the Search service is being provisioned or scaled up or down.
* 'deleting': the Search service is being deleted.
* 'degraded': the Search service is degraded. This can occur when the underlying search
* units are not healthy. The Search service is most likely operational,
* but performance might be slow and some requests might be dropped.
* 'disabled': the Search service is disabled. In this state, the service will reject all API requests.
* 'error': the Search service is in an error state. If your service is in the degraded,
* disabled, or error states, it means the Azure Search team is actively investigating
* the underlying issue. Dedicated services in these states are still chargeable based
* on the number of search units provisioned.
*
* @return the status of the service
*/
SearchServiceStatus status();
/**
* @return the details of the status.
*/
String statusDetails();
/**
* The primary and secondary admin API keys for the specified Azure Search service.
*
* @throws IllegalArgumentException thrown if parameters fail the validation
* @throws ManagementException thrown if the request is rejected by server
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
* @return the AdminKeys object if successful
*/
AdminKeys getAdminKeys();
/**
* The primary and secondary admin API keys for the specified Azure Search service.
*
* @throws IllegalArgumentException thrown if parameters fail the validation
* @return a representation of the future computation of this call
*/
Mono getAdminKeysAsync();
/**
* Returns the list of query API keys for the given Azure Search service.
*
* @throws IllegalArgumentException thrown if parameters fail the validation
* @throws ManagementException thrown if the request is rejected by server
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
* @return the List<QueryKey> object if successful
*/
PagedIterable listQueryKeys();
/**
* Returns the list of query API keys for the given Azure Search service.
*
* @throws IllegalArgumentException thrown if parameters fail the validation
* @return the observable to the List<QueryKey> object
*/
PagedFlux listQueryKeysAsync();
/**
* Regenerates either the primary or secondary admin API key.
*
* You can only regenerate one key at a time.
*
* @param keyKind specifies which key to regenerate
* @throws IllegalArgumentException thrown if parameters fail the validation
* @throws ManagementException thrown if the request is rejected by server
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
* @return the AdminKeys object if successful
*/
AdminKeys regenerateAdminKeys(AdminKeyKind keyKind);
/**
* Regenerates either the primary or secondary admin API key. You can only regenerate one key at a time.
*
* @param keyKind Specifies which key to regenerate
* @throws IllegalArgumentException thrown if parameters fail the validation
* @return a representation of the future computation of this call
*/
Mono regenerateAdminKeysAsync(AdminKeyKind keyKind);
/**
* Regenerates either the primary or secondary admin API key.
*
* You can only regenerate one key at a time.
*
* @param name The name of the new query API key.
* @throws IllegalArgumentException thrown if parameters fail the validation
* @throws ManagementException thrown if the request is rejected by server
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
* @return the <QueryKey> object if successful
*/
QueryKey createQueryKey(String name);
/**
* Regenerates either the primary or secondary admin API key.
*
* You can only regenerate one key at a time.
*
* @param name The name of the new query API key.
* @throws IllegalArgumentException thrown if parameters fail the validation
* @return a representation of the future computation of this call
*/
Mono createQueryKeyAsync(String name);
/**
* Deletes the specified query key.
*
* Unlike admin keys, query keys are not regenerated. The process for regenerating a query
* key is to delete and then recreate it.
*
* @param key The query key to be deleted. Query keys are identified by value, not by name.
* @throws IllegalArgumentException thrown if parameters fail the validation
* @throws ManagementException thrown if the request is rejected by server
* @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
*/
void deleteQueryKey(String key);
/**
* Deletes the specified query key.
*
* Unlike admin keys, query keys are not regenerated. The process for
* regenerating a query key is to delete and then recreate it.
*
* @param key The query key to be deleted. Query keys are identified by value, not by name.
* @throws IllegalArgumentException thrown if parameters fail the validation
* @return a representation of the future computation of this call
*/
Mono deleteQueryKeyAsync(String key);
/**
* Whether the search service can be accessed from public network.
*
* @return whether the search service can be accessed from public network.
*/
PublicNetworkAccess publicNetworkAccess();
/**
* The entirety of the Search service definition.
*/
interface Definition extends
DefinitionStages.Blank,
DefinitionStages.WithGroup,
DefinitionStages.WithSku,
DefinitionStages.WithPublicNetworkAccess,
DefinitionStages.WithPartitionsAndCreate,
DefinitionStages.WithReplicasAndCreate,
DefinitionStages.WithCreate {
}
/**
* Grouping of virtual network definition stages.
*/
interface DefinitionStages {
/**
* The first stage of the Search service definition.
*/
interface Blank
extends GroupableResource.DefinitionWithRegion {
}
/**
* The stage of the Search service definition allowing to specify the resource group.
*/
interface WithGroup
extends GroupableResource.DefinitionStages.WithGroup {
}
/**
* The stage of the Search service definition allowing to specify the SKU.
*/
interface WithSku {
/**
* Specifies the SKU of the Search service.
*
* @param skuName the SKU
* @return the next stage of the definition
*/
WithCreate withSku(SkuName skuName);
/**
* Specifies to use a free SKU type for the Search service.
*
* @return the next stage of the definition
*/
WithCreate withFreeSku();
/**
* Specifies to use a basic SKU type for the Search service.
*
* @return the next stage of the definition
*/
WithReplicasAndCreate withBasicSku();
/**
* Specifies to use a standard SKU type for the Search service.
*
* @return the next stage of the definition
*/
WithPartitionsAndCreate withStandardSku();
}
/** The stage of search service definition allowing to configure network access settings. */
interface WithPublicNetworkAccess {
/**
* Disables public network access for the search service.
*
* @return the next stage of the definition
*/
WithCreate disablePublicNetworkAccess();
}
/**
* The stage of the Search service definition allowing to specify the replica count.
*/
interface WithReplicasAndCreate extends WithCreate {
/**
* Specifies the SKU of the Search service.
*
* @param count the number of replicas to be created
* @return the next stage of the definition
*/
WithCreate withReplicaCount(int count);
}
/**
* The stage of the Search service definition allowing to specify the partition count.
*/
interface WithPartitionsAndCreate extends WithReplicasAndCreate {
/**
* Specifies the SKU of the Search service.
*
* @param count the number of partitions to be created
* @return the next stage of the definition
*/
WithReplicasAndCreate withPartitionCount(int count);
}
/**
* The stage of the definition which contains all the minimum required inputs for the resource to be created
* (via {@link WithCreate#create()}), but also allows for any other optional settings to be specified.
*/
interface WithCreate extends
Creatable,
Resource.DefinitionWithTags,
WithPublicNetworkAccess {
}
}
/**
* The template for a Search service update operation, containing all the settings that can be modified.
*/
interface Update extends
Appliable,
Resource.UpdateWithTags,
UpdateStages.WithReplicaCount,
UpdateStages.WithPartitionCount,
UpdateStages.WithPublicNetworkAccess {
}
/**
* Grouping of all the Search service update stages.
*/
interface UpdateStages {
/**
* The stage of the Search service update allowing to modify the number of replicas used.
*/
interface WithReplicaCount {
/**
* Specifies the replicas count of the Search service.
*
* @param count the replicas count; replicas distribute workloads across the service. You need 2 or more
* to support high availability (applies to Basic and Standard tiers only)
* @return the next stage of the definition
*/
Update withReplicaCount(int count);
}
/**
* The stage of the Search service update allowing to modify the number of partitions used.
*/
interface WithPartitionCount {
/**
* Specifies the Partitions count of the Search service.
* @param count the partitions count; Partitions allow for scaling of document counts as well
* as faster data ingestion by spanning your index over multiple Azure
* Search Units (applies to Standard tiers only)
* @return the next stage of the definition
*/
Update withPartitionCount(int count);
}
/** The stage of search service update allowing to configure network access settings. */
interface WithPublicNetworkAccess {
/**
* Enables public network access for the search service.
*
* @return the next stage of the update
*/
Update enablePublicNetworkAccess();
/**
* Disables public network access for the search service.
*
* @return the next stage of the update
*/
Update disablePublicNetworkAccess();
}
}
}