IP Library › Granted Patent US 9,613,192
Granted Patent B2
US 9,613,192 · App. 14/369,091 · Granted Apr 4, 2017

Flexible licensing architecture

Inventors: Dmitry Nikolayevich Tylik (Saint Petersburg, RU); Yuri Alexandrovich Stotski (Saint Petersburg, RU); Alexander Georgievich Akopyan (Saint Petersburg, RU); Alexander Vladimirovich Sorotsky (Saint Petersburg, RU); Stanislav Yevgenyevich Gorshkov (Saint Petersburg, RU)
Assignee: EMC IP Holding Company LLC
G06F21/12G06F9/4401G06F12/02G06F17/30312G06F21/121G06F21/629G06F2221/0704
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 9,613,192
App. No.
14/369,091
Filed
Jun 26, 2014
Granted
Apr 4, 2017
Kind
B2
Examiner
HO, THOMAS
Art Unit
2494
USPC
726/26
Abstract

An improved technique involves analyzing a system configuration upon a system boot and sending the configuration to a system configuration database that provides configuration details for enabling features of a software package. Such configuration details take the form of configuration parameters having values that may include, for example, an amount of RAM installed in the system, or the operating system used. The configuration database stores values of these parameters in a persistent store and makes these values available to the system when a software package is launched. At this point, the system accesses the database and obtains the values of the configuration parameters. The system uses these values to determine whether to activate particular features of the software package.

Claims (99)

1. A method of operating a computing device configured to run a particular software product, the software product including a set of features, the method comprising:

upon a boot of the computing device, performing an analysis of a system configuration of the computing device, the analysis producing values of a set of system configuration parameters;

storing the values of the set of system configuration parameters in a system configuration database;

upon receiving a command to run the particular software product, extracting the values of the system configuration parameters from the system configuration database; and

for each feature of the set of features, performing an activation decision operation on that feature based on values of the system configuration parameters, the activation decision operation resulting in one of a decision to activate that feature and not activating that feature;

wherein:

the software product supports a storage system, a system configuration parameter of the software product being a platform for the storage system, the platform indicating whether the storage system offers block-level services or a combination of block-level and file-level services for making storage visible over a network; and

performing the activation decision operation on that feature based on values of the system configuration parameters includes basing the activation decision on the platform of the storage system.

2. A method as in claim 1 ,

wherein each feature of the set of features has a corresponding license; and

wherein the method further comprises:

for each feature of the set of features, performing the activation decision operation on that feature based on a state of the corresponding license of that feature, that feature being able to provide its distinct function when its corresponding license is activated, that feature not being able to provide its distinct function when its corresponding license is not activated.

3. A method as in claim 2 ,

wherein each feature of the set of features further includes i) a state having a value equal to one of turned off, not licensed, and turned on and ii) a feature flag exposing the state, the feature flag of that feature having a binary value corresponding to an off value or an on value, the off value to which the value a feature flag of a feature corresponds indicating that the feature is not activated, the on value to which the value a feature flag of a feature corresponds indicating that the feature is activated;

wherein performing the activation decision operation further includes:

computing the binary value of the feature flag for a feature of the set of features based on the at least one value of the system configuration parameters and the state of the corresponding license of that feature.

4. A method as in claim 3 ,

wherein at least one feature of the set of features is dependent on another feature of the set of features;

wherein computing the binary value of the feature flag includes:

when the feature flag of the other feature has its binary value corresponding to the off value, setting the binary value of feature flag of the at least one feature to the value corresponding to the off value.

5. A method as in claim 1 ,

wherein the system configuration database includes a persistent store configured to store values of system configuration parameters through a boot of the computing device;

wherein storing the at least one value of the set of system configuration parameters in the system configuration database includes:

writing the at least one value of the set of system configuration parameters into the persistent store.

6. A method as in claim 5 ,

wherein performing the analysis of the system configuration of the computing device includes:

assessing an amount of RAM available to the computing device;

wherein storing the at least one value of the set of system configuration parameters in the system configuration database includes:

verifying whether the assessed amount of RAM available to the computing device matches a value of the amount of RAM available to the computing device written to the persistent store, and

when the assessed amount of RAM available to the computing device is different from the value of the amount of RAM available to the computing device written to the persistent store, writing the assessed amount of RAM available to the computing device to the persistent store.

7. A method as in claim 6 ,

wherein the computing device includes a memory configuration module configured to allocate memory for the software product;

wherein extracting the at least one value of the system configuration parameters from the system configuration database includes:

reading the system configuration database; and

allocating memory for the software product based on the at least one value of the system configuration parameters and the assessed amount of RAM.

8. A method as in claim 7 ,

wherein the computing device further includes a data services module configured to supply software drivers to the computing device based on the at least one value of the system configuration parameters;

wherein extracting the at least one value of the system configuration parameters from the system configuration database includes:

reading the system configuration database; and

supplying software drivers for the software product based on the at least one value of the system configuration parameters.

9. A method as in claim 1 ,

wherein the system configuration database includes a configuration file that stores the system configuration parameters as keys; and

wherein storing the at least one value of the set of system configuration parameters in the system configuration database includes:

writing the at least one value of the set of system configuration parameters in the configuration file along with a corresponding key.

10. A computing device configured to run a particular software product, the software product including a set of features, each of the set of features having a corresponding license, the computing device comprising:

memory; and

a controller including controlling circuitry, the controlling circuitry being constructed and arranged to:

upon a boot operation of the computing device, perform an analysis of a system configuration of the computing device, the analysis producing values of a set of system configuration parameters;

store the values of the set of system configuration parameters in a system configuration database;

upon receiving a command to run the particular software product, extract the values of the system configuration parameters from the system configuration database; and

for each feature of the set of features, performing an activation decision operation on that feature based on values of the system configuration parameters, the activation decision operation resulting in one of a decision to activate that feature and not activating that feature;

wherein:

the software product supports a storage system, a system configuration parameter of the software product being a platform for the storage system, the platform indicating whether the storage system offers block-level services or a combination of block-level and file-level services for making storage visible over a network; and

performing the activation decision operation on that feature based on values of the system configuration parameters includes basing the activation decision on the platform of the storage system.

11. A computing device as in claim 10 ,

wherein each feature of the set of feature has a corresponding license;

wherein the controlling circuitry is further constructed and arranged to:

for each feature of the set of features, perform the activation decision operation on that feature based on a state of the corresponding license of that feature, that feature being able to provide its distinct function when its corresponding license is activated, that feature not being able to provide its distinct function when its corresponding license is not activated.

12. A computing device as in claim 11 ,

wherein each feature of the set of features further includes i) a state having a value equal to one of turned off, not licensed, and turned on and ii) a feature flag exposing the state, the feature flag of that feature having a binary value corresponding to an off value or an on value, the off value to which the value a feature flag of a feature corresponds indicating that the feature is not activated, the on value to which the value a feature flag of a feature corresponds indicating that the feature is activated;

wherein the controlling circuitry constructed and arranged to perform the activation decision operation is further constructed and arranged to:

compute the binary value of the feature flag for a feature of the set of features based on the at least one value of the system configuration parameters and the state of the corresponding license of that feature.

13. A computing device as in claim 12 ,

wherein at least one feature of the set of features is dependent on another feature of the set of features;

wherein the controlling circuitry constructed and arranged to compute the binary value of the feature flag is further constructed and arranged to:

when the feature flag of the other feature has its binary value corresponding to the off value, setting the binary value of feature flag of the at least one feature to the value corresponding to the off value.

14. A computing device as in claim 10 ,

wherein the system configuration database includes a persistent store configured to store values of system configuration parameters through a boot of the computing device;

wherein the controlling circuitry constructed and arranged to store the at least one value of the set of system configuration parameters in the system configuration database is further constructed and arranged to:

write the at least one value of the set of system configuration parameters into the persistent store.

15. A computing device as in claim 14 ,

wherein the controlling circuitry constructed and arranged to perform the analysis of the system configuration of the computing device is further constructed and arranged to:

assess an amount of RAM available to the computing device; and

wherein the controlling circuitry constructed and arranged to store the at least one value of the set of system configuration parameters in the system configuration database is further constructed and arranged to:

verify whether the assessed amount of RAM available to the computing device matches a value of the amount of RAM available to the computing device written to the persistent store, and

when the assessed amount of RAM available to the computing device is different from the value of the amount of RAM available to the computing device written to the persistent store, write the assessed amount of RAM available to the computing device to the persistent store.

16. A computing device as in claim 15 ,

wherein the computing device includes a memory configuration module configured to allocate memory for the software product;

wherein the controlling circuitry constructed and arranged to extract the at least one value of the system configuration parameters from the system configuration database is further constructed and arranged to:

read the system configuration database; and

allocate memory for the software product based on the at least one value of the system configuration parameters and the assessed amount of RAM.

17. A computing device as in claim 16 ,

wherein the computing device further includes a data services module configured to supply software drivers to the computing device based on the at least one value of the system configuration parameters;

wherein the controlling circuitry constructed and arranged to extract the at least one value of the system configuration parameters from the system configuration database is further constructed and arranged to:

read the system configuration database; and

supply software drivers for the software product based on the at least one value of the system configuration parameters.

18. A computer program product having a non-transitory, computer-readable storage medium which stores instructions that, when executed by a computing device configured to run a particular software product, the software product including a set of features, cause the computing device to:

upon a boot of the computing device, perform an analysis of a system configuration of the computing device, the analysis producing at least one value of a set of system configuration parameters;

store the at least one value of the set of system configuration parameters in a system configuration database;

upon receiving a command to run the particular software product, extract the at least one value of the system configuration parameters from the system configuration database; and

for each feature of the set of features, perform an activation decision operation on that feature based on values of the system configuration parameters, the activation decision operation resulting in one of a decision to activate that feature and not activating that feature;

wherein:

the software product supports a storage system, a system configuration parameter of the software product being a platform for the storage system, the platform indicating whether the storage system offers block-level services or a combination of block-level and file-level services for making storage visible over a network; and

performing the activation decision operation on that feature based on values of the system configuration parameters includes basing the activation decision on the platform of the storage system.

19. A method as in claim 1 , wherein the computing device includes a storage processor of a data storage system;

wherein the set of system configuration parameters includes parameters describing the storage processor;

wherein performing the analysis of the system configuration of the computing device includes producing values of the parameters describing the storage processor.

20. A method as in claim 19 , wherein extracting the values of the system configuration parameters from the system configuration database includes automatically providing, by the storage processor, the values of the parameters describing the storage processor.

21. A method as in claim 20 , wherein automatically providing, by the storage processor, the values of the parameters describing the storage processor includes not providing manual input.

Assignments (10)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/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 →
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 Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2015
From: TYLIK, DMITRY NIKOLAYEVICH; STOTSKI, YURI ALEXANDROVICH; AKOPYAN, ALEXANDER GEORGIEVICH; SOROTSKY, ALEXANDER VLADIMIROVICH; GORSHKOV, STANISLAV YEVGENYEVICH
To: EMC CORPORATION
Reel/Frame 035656/0839 →
Continuity (1)
Related Publication 20150227723A1 · Aug 13, 2015