/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 * 
 * Code generated by Microsoft (R) AutoRest Code Generator 0.15.0.0
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
// TODO: Include PageTemplateModels here too?? Probably
 */


/**
 * @class
 * Initializes a new instance of the Sku class.
 * @constructor
 * Sku parameters supplied to the create redis operation.
 * @member {string} name What type of redis cache to deploy. Valid values:
 * (Basic, Standard, Premium). Possible values include: 'Basic', 'Standard',
 * 'Premium'
 * 
 * @member {string} family Which family to use. Valid values: (C, P). Possible
 * values include: 'C', 'P'
 * 
 * @member {number} capacity What size of redis cache to deploy. Valid values:
 * for C family (0, 1, 2, 3, 4, 5, 6), for P family (1, 2, 3, 4)
 * 
 */
export interface Sku {
    name: string;
    family: string;
    capacity: number;
}

/**
 * @class
 * Initializes a new instance of the Resource class.
 * @constructor
 * @member {string} [id] Resource Id
 * 
 * @member {string} [name] Resource name
 * 
 * @member {string} [type] Resource type
 * 
 * @member {string} location Resource location
 * 
 * @member {object} [tags] Resource tags
 * 
 */
export interface Resource extends BaseResource {
    id?: string;
    name?: string;
    type?: string;
    location: string;
    tags?: { [propertyName: string]: string };
}

/**
 * @class
 * Initializes a new instance of the RedisCreateOrUpdateParameters class.
 * @constructor
 * Parameters supplied to the CreateOrUpdate Redis operation.
 * @member {string} [redisVersion] RedisVersion parameter has been deprecated.
 * As such, it is no longer necessary to provide this parameter and any value
 * specified is ignored.
 * 
 * @member {object} sku What sku of redis cache to deploy.
 * 
 * @member {string} [sku.name] What type of redis cache to deploy. Valid
 * values: (Basic, Standard, Premium). Possible values include: 'Basic',
 * 'Standard', 'Premium'
 * 
 * @member {string} [sku.family] Which family to use. Valid values: (C, P).
 * Possible values include: 'C', 'P'
 * 
 * @member {number} [sku.capacity] What size of redis cache to deploy. Valid
 * values: for C family (0, 1, 2, 3, 4, 5, 6), for P family (1, 2, 3, 4)
 * 
 * @member {object} [redisConfiguration] All Redis Settings. Few possible
 * keys: <para>rdb-backup-enabled</para><para>rdb-storage-connection-string</para><para>rdb-backup-frequency</para><para>maxmemory-delta</para><para>maxmemory-policy</para><para>notify-keyspace-events</para><para>maxmemory-samples</para><para>slowlog-log-slower-than</para><para>slowlog-max-len</para><para>list-max-ziplist-entries</para><para>list-max-ziplist-value</para><para>hash-max-ziplist-entries</para><para>hash-max-ziplist-value</para><para>set-max-intset-entries</para><para>zset-max-ziplist-entries</para><para>zset-max-ziplist-value
 * etc.</para>
 * 
 * @member {boolean} [enableNonSslPort] If the value is true, then the non-ssl
 * redis server port (6379) will be enabled.
 * 
 * @member {object} [tenantSettings] tenantSettings
 * 
 * @member {number} [shardCount] The number of shards to be created on a
 * Premium Cluster Cache.
 * 
 * @member {string} [virtualNetwork] The exact ARM resource ID of the virtual
 * network to deploy the redis cache in. Example format:
 * /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.ClassicNetwork/VirtualNetworks/vnet1
 * 
 * @member {string} [subnet] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 * @member {string} [staticIP] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 */
export interface RedisCreateOrUpdateParameters extends Resource {
    redisVersion?: string;
    sku: Sku;
    redisConfiguration?: { [propertyName: string]: string };
    enableNonSslPort?: boolean;
    tenantSettings?: { [propertyName: string]: string };
    shardCount?: number;
    virtualNetwork?: string;
    subnet?: string;
    staticIP?: string;
}

/**
 * @class
 * Initializes a new instance of the RedisAccessKeys class.
 * @constructor
 * Redis cache access keys.
 * @member {string} [primaryKey] The current primary key that clients can use
 * to authenticate with redis cache.
 * 
 * @member {string} [secondaryKey] The current secondary key that clients can
 * use to authenticate with redis cache.
 * 
 */
export interface RedisAccessKeys {
    primaryKey?: string;
    secondaryKey?: string;
}

/**
 * @class
 * Initializes a new instance of the RedisResourceWithAccessKey class.
 * @constructor
 * A redis item in CreateOrUpdate Operation response.
 * @member {object} [accessKeys] Redis cache access keys.
 * 
 * @member {string} [accessKeys.primaryKey] The current primary key that
 * clients can use to authenticate with redis cache.
 * 
 * @member {string} [accessKeys.secondaryKey] The current secondary key that
 * clients can use to authenticate with redis cache.
 * 
 * @member {string} [provisioningState] Redis instance provisioning status
 * 
 * @member {string} [hostName] Redis host name
 * 
 * @member {number} [port] Redis non-ssl port
 * 
 * @member {number} [sslPort] Redis ssl port
 * 
 * @member {string} [redisVersion] RedisVersion parameter has been deprecated.
 * As such, it is no longer necessary to provide this parameter and any value
 * specified is ignored.
 * 
 * @member {object} sku What sku of redis cache to deploy.
 * 
 * @member {string} [sku.name] What type of redis cache to deploy. Valid
 * values: (Basic, Standard, Premium). Possible values include: 'Basic',
 * 'Standard', 'Premium'
 * 
 * @member {string} [sku.family] Which family to use. Valid values: (C, P).
 * Possible values include: 'C', 'P'
 * 
 * @member {number} [sku.capacity] What size of redis cache to deploy. Valid
 * values: for C family (0, 1, 2, 3, 4, 5, 6), for P family (1, 2, 3, 4)
 * 
 * @member {object} [redisConfiguration] All Redis Settings. Few possible
 * keys: <para>rdb-backup-enabled</para><para>rdb-storage-connection-string</para><para>rdb-backup-frequency</para><para>maxmemory-delta</para><para>maxmemory-policy</para><para>notify-keyspace-events</para><para>maxmemory-samples</para><para>slowlog-log-slower-than</para><para>slowlog-max-len</para><para>list-max-ziplist-entries</para><para>list-max-ziplist-value</para><para>hash-max-ziplist-entries</para><para>hash-max-ziplist-value</para><para>set-max-intset-entries</para><para>zset-max-ziplist-entries</para><para>zset-max-ziplist-value
 * etc.</para>
 * 
 * @member {boolean} [enableNonSslPort] If the value is true, then the non-ssl
 * redis server port (6379) will be enabled.
 * 
 * @member {object} [tenantSettings] tenantSettings
 * 
 * @member {number} [shardCount] The number of shards to be created on a
 * Premium Cluster Cache.
 * 
 * @member {string} [virtualNetwork] The exact ARM resource ID of the virtual
 * network to deploy the redis cache in. Example format:
 * /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.ClassicNetwork/VirtualNetworks/vnet1
 * 
 * @member {string} [subnet] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 * @member {string} [staticIP] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 */
export interface RedisResourceWithAccessKey extends Resource {
    accessKeys?: RedisAccessKeys;
    provisioningState?: string;
    hostName?: string;
    port?: number;
    sslPort?: number;
    redisVersion?: string;
    sku: Sku;
    redisConfiguration?: { [propertyName: string]: string };
    enableNonSslPort?: boolean;
    tenantSettings?: { [propertyName: string]: string };
    shardCount?: number;
    virtualNetwork?: string;
    subnet?: string;
    staticIP?: string;
}

/**
 * @class
 * Initializes a new instance of the RedisResource class.
 * @constructor
 * A single redis item in List or Get Operation.
 * @member {string} [provisioningState] Redis instance provisioning status
 * 
 * @member {string} [hostName] Redis host name
 * 
 * @member {number} [port] Redis non-ssl port
 * 
 * @member {number} [sslPort] Redis ssl port
 * 
 * @member {string} [redisVersion] RedisVersion parameter has been deprecated.
 * As such, it is no longer necessary to provide this parameter and any value
 * specified is ignored.
 * 
 * @member {object} sku What sku of redis cache to deploy.
 * 
 * @member {string} [sku.name] What type of redis cache to deploy. Valid
 * values: (Basic, Standard, Premium). Possible values include: 'Basic',
 * 'Standard', 'Premium'
 * 
 * @member {string} [sku.family] Which family to use. Valid values: (C, P).
 * Possible values include: 'C', 'P'
 * 
 * @member {number} [sku.capacity] What size of redis cache to deploy. Valid
 * values: for C family (0, 1, 2, 3, 4, 5, 6), for P family (1, 2, 3, 4)
 * 
 * @member {object} [redisConfiguration] All Redis Settings. Few possible
 * keys: <para>rdb-backup-enabled</para><para>rdb-storage-connection-string</para><para>rdb-backup-frequency</para><para>maxmemory-delta</para><para>maxmemory-policy</para><para>notify-keyspace-events</para><para>maxmemory-samples</para><para>slowlog-log-slower-than</para><para>slowlog-max-len</para><para>list-max-ziplist-entries</para><para>list-max-ziplist-value</para><para>hash-max-ziplist-entries</para><para>hash-max-ziplist-value</para><para>set-max-intset-entries</para><para>zset-max-ziplist-entries</para><para>zset-max-ziplist-value
 * etc.</para>
 * 
 * @member {boolean} [enableNonSslPort] If the value is true, then the non-ssl
 * redis server port (6379) will be enabled.
 * 
 * @member {object} [tenantSettings] tenantSettings
 * 
 * @member {number} [shardCount] The number of shards to be created on a
 * Premium Cluster Cache.
 * 
 * @member {string} [virtualNetwork] The exact ARM resource ID of the virtual
 * network to deploy the redis cache in. Example format:
 * /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.ClassicNetwork/VirtualNetworks/vnet1
 * 
 * @member {string} [subnet] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 * @member {string} [staticIP] Required when deploying a redis cache inside an
 * existing Azure Virtual Network.
 * 
 */
export interface RedisResource extends Resource {
    provisioningState?: string;
    hostName?: string;
    port?: number;
    sslPort?: number;
    redisVersion?: string;
    sku: Sku;
    redisConfiguration?: { [propertyName: string]: string };
    enableNonSslPort?: boolean;
    tenantSettings?: { [propertyName: string]: string };
    shardCount?: number;
    virtualNetwork?: string;
    subnet?: string;
    staticIP?: string;
}

/**
 * @class
 * Initializes a new instance of the RedisListKeysResult class.
 * @constructor
 * The response of redis list keys operation.
 * @member {string} [primaryKey] The current primary key that clients can use
 * to authenticate with redis cache.
 * 
 * @member {string} [secondaryKey] The current secondary key that clients can
 * use to authenticate with redis cache.
 * 
 */
export interface RedisListKeysResult {
    primaryKey?: string;
    secondaryKey?: string;
}

/**
 * @class
 * Initializes a new instance of the RedisRegenerateKeyParameters class.
 * @constructor
 * Specifies which redis access keys to reset.
 * @member {string} keyType Which redis access key to reset. Possible values
 * include: 'Primary', 'Secondary'
 * 
 */
export interface RedisRegenerateKeyParameters {
    keyType: string;
}

/**
 * @class
 * Initializes a new instance of the SubResource class.
 * @constructor
 * @member {string} [id] Resource Id
 * 
 */
export interface SubResource extends BaseResource {
    id?: string;
}
