IP Library › Granted Patent US 10,262,155
Granted Patent B1
US 10,262,155 · App. 14/755,653 · Granted Apr 16, 2019

Disabling features using feature toggle

Inventors: Hao Sun (Shanghai, CN); Jim Pendergraft (Raleigh, NC); Jichao Zhang (Shanghai, CN); Link Yu (Shanghai, CN); Wei Wang (Westborough, MS); Nicholas Wei (Shanghai, CN)
Assignee: EMC IP Holding Company LLC
G06F21/629G06F2221/0768
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,262,155
App. No.
14/755,653
Filed
Jun 30, 2015
Granted
Apr 16, 2019
Kind
B1
Art Unit
2433
USPC
726/26
Abstract

Examples are generally directed towards disabling features using a feature toggle associated with an application programming interface (API). A server receives an API request including one or more elements. An element is associated with a set of features. If a feature state of every feature within the set of features is an enabled feature state, the element state is an enabled element state and the request is validated. The validated request is executed and a response to the request is returned to the client. If at least one feature state of at least one feature within the set of features is a disabled feature state or a hidden feature state, the element state is a disabled element state and the request is invalided. The invalidated request is rejected and an error message is returned to the client.

Claims (64)

1. A server comprising: at least one processor;

a memory storage device coupled to the at least one processor, the memory storage device comprising a memory area, the memory area storing a feature toggle component; and,

an application programming interface (API), the API receives a request from a client, the at least one processor executes the feature toggle component to:

identify a set of features associated with an element that is included in the request;

identify a set of feature states corresponding to the set of features;

on determining that a feature state of every feature within the set of features is enabled, assigning an enabled element state to the element, wherein the request is validated on determining the element state is the enabled element state;

on determining that both i) a feature state of at least one feature within the set of features is a hidden feature state, and ii) a feature state of another feature within the set of features is an enabled feature state, assigning a disabled element state to the element, wherein the request is rejected on determining that the element state is the disabled element state; and

return an error message from the server to the client in response to on determining that the request is rejected, wherein responsive to the disabled element having an associated set of features that includes at least one hidden feature the error message returned to the client indicates i) that the element is non-existent, or ii) that the element is misspelled in the request;

wherein the error message returned to the client responsive to the disabled element having an associated set of features that includes at least one hidden feature is different from another error message that is returned from the server to the client for a disabled element that is associated with a set of features that includes no hidden features and i) one or more features that are not licensed, or ii) one or more features that are unsupported.

2. The server of claim 1 , wherein the at least one processor further executes the feature toggle component to:

process the request to generate a response to the request on determining the request is validated; and return the response to the client.

3. The server of claim 1 , wherein the API is a representational state transfer (REST) API.

4. The server of claim 1 , further comprising:

a types-feed component, wherein the at least one processor executes the types-feed component to:

receive a types-feed request for a resource, wherein the types-feed request comprises a request for all available property types associated with the resource;

generate a list of all property types associated with enabled features and disabled features of the resource, wherein the list of all property types excludes property types associated with hidden features of the resource; and

return the list of all property types to the client.

5. The server of claim 1 , further comprising:

wherein the feature in the feature set corresponding to the at least one feature state that is the hidden feature state is under development.

6. The server of claim 1 , wherein the feature toggle is built into an operating system of the server, wherein the operating system of the server supports a plurality of platforms, wherein a first one of the plurality of platforms is a virtual platform that supports a plurality of virtual storage features, wherein a second one of the plurality of platforms is a hardware platform that supports a plurality of hardware features, wherein the request is associated with the virtual platform, and wherein the at least one processor further executes the feature toggle component to:

assign the disabled element state to the element in response to determining at least one feature state associated with the set of feature tags is the disabled feature state, wherein the feature in the feature set corresponding to the at least one feature state that is the disabled feature state is a hardware feature that is not supported by the virtual platform; and

transmit an error message from the server to the client in response to determining that the request is rejected, wherein the error message comprises a reason the request is rejected, wherein the reason the request is rejected is unsupported feature.

7. The server of claim 1 , wherein the element included in the request comprises a logical unit (LUN);

wherein the set of features associated with the element comprises a set of block features; and

wherein the set of block features includes a block de-duplication feature.

8. The server of claim 1 , wherein the element included in the request comprises a file system; and

wherein the set of features associated with the element comprises a set of file system features.

9. A computer-implemented method executed by one or more processors, the method comprising:

parsing a set of feature tags associated with an element included in an application programming interface (API) request received from a client;

identifying a set of features associated with the element, by the one or more processors, based on the set of feature tags;

determining an element state of the element based on at least one feature state corresponding to at least one feature from the set of features, the element state comprises an enabled element state or a disabled element state, including assigning a disabled element state to the element on determining that both i) a feature state of at least one feature within the set of features is a hidden feature state, and ii) a feature state of another feature within the set of features is an enabled feature state; and

rejecting the request on determining that the element state is the disabled element state to form a rejected request and returning an error message associated with the rejected request to the client in response to determining that the request is rejected, wherein responsive to the disabled element having an associated set of features that includes at least one hidden feature the error message returned to the client indicates i) that the element is non-existent, or ii) that the element is misspelled in the request;

wherein the error message returned to the client responsive to the disabled element having an associated set of features that includes at least one hidden feature is different from another error message that is returned from the server to the client for a disabled element that is associated with a set of features that includes no hidden features and i) one or more features that are not licensed, or ii) one or more features that are unsupported.

10. The computer-implemented method of claim 9 , further comprising:

validating the request on determining the element state is the enabled element state to form a validated request;

processing the validated response to generate a response to the validated request; and

returning the response to the validated request to the client.

11. The computer-implemented method of claim 9 , further comprising:

mapping at least one element in a plurality of elements to at least one feature.

12. The computer-implemented method of claim 9 , wherein

the API is a representational state transfer (REST) API.

13. The computer-implemented method of claim 9 , further comprising:

determining a feature state of a feature from the set of features dynamically during runtime, wherein the feature state is one of an enabled feature state, a disabled feature state, or a hidden feature state, and further comprising:

on determining the feature state of every feature within the set of features is enabled, identifying the element state as enabled;

on determining the feature state of at least one feature within the set of features is disabled, identifying the element state as disabled; and

on determining the feature state of at least one feature within the set of features is the hidden feature state, identifying the element state as disabled.

14. The computer-implemented method of claim 9 , further comprising:

receiving a types-feed request for a resource from the client; generating a list of all property types associated with enabled features and disabled features of the resource to form a response to the types-feed request, wherein the list of all property types excludes property types associated with hidden features of the resource; and returning the response to the client.

15. One or more computer storage media embodying computer executable components, said components comprising a feature toggle component that, when executed, causes at least one processor to:

receive a request from a client via a representational state transfer (REST) application programming interface (API), the request including at least one element, the at least one element associated with a set of feature tags, the set of feature tags identifying a set of features associated with the element;

identify an element state based on a set of feature states corresponding to the set of features, including assigning a disabled element state to the element on determining that both i) a feature state of at least one feature within the set of features is a hidden feature state, and ii) a feature state of another feature within the set of features is an enabled feature state;

validate the request on determining the element state is an enabled element state to form a validated request;

execute the validated request;

invalidate the request on determining the element state is a disabled element state to form an invalidated request;

reject the invalidated request; and

return an error message to the client in response to on determining that the request is rejected, wherein responsive to the disabled element having an associated set of features that includes at least one hidden feature the error message returned to the client indicates i) that the element is non-existent, or ii) that the element is misspelled in the request;

wherein the error message returned to the client responsive to the disabled element having an associated set of features that includes at least one hidden feature is different from another error message that is returned from the server to the client for a disabled element that is associated with a set of features that includes no hidden features and i) one or more features that are not licensed, or ii) one or more features that are unsupported.

16. The computer storage media of claim 15 , wherein the feature toggle component is further executed to cause the at least one processor to:

map every element in a plurality of elements to at least one feature within the set of features.

17. The computer storage media of claim 15 , wherein the feature toggle component is further executed to cause the at least one processor to:

identify the element state as the enabled element state on determining that all feature states associated with the set of feature tags are enabled feature states.

18. The computer storage media of claim 15 , wherein the computer executable components further comprise a types-feed component that, when executed in response to receipt of a types-feed request for a resource, the types-feed request comprising a request for all available property types associated with the resource, causes the at least one processor to:

generate a list of all property types associated with enabled features and disabled features of the resource to form a types-feed response, wherein the list of all property types excludes property types associated with hidden features of the resource; and

return the types-feed response to the client.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058001/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050405/0534 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2018
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 045335/0209 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2015
From: SUN, HAO; PENDERGRAFT, JIM; ZHANG, JICHAO; YU, LINK; WANG, WEI; WEI, NICHOLAS
To: EMC CORPORATION
Reel/Frame 035996/0855 →
Cited By (1)
US 12,437,084