servicecatalog / oscm

An Enterprise-ready Cloud Services Management Software.
https://openservicecatalogmanager.org
Apache License 2.0
38 stars 14 forks source link

Price Model for service with simple functions #1249

Open mamu0 opened 3 years ago

mamu0 commented 3 years ago

Hi guys, Summary I would like to know if it is possible to define the price of a service based on simple functions; for example, if I have an integer among the parameters, I would like to calculate the price based on the units (Eg PARAM = 100, Price = 100 * UNIT_VALUE) If it is already possible how can it be configured?

Details in the XML file of the Technical Service I have to enter variable values ​​(e.g. number of VMs, size of storage, etc.), the price varies based on these values, so I would like to define the value per unit (e.g. cost of a single VM, cost of 1Gb) and then calculate the price.

Acceptance criteria Precise and detailed conditions under which a feature request is considered to be completed.

Additional context EXAMPLE of XML:

<ParameterDefinition configurable="true" id="DATA_DISK_SIZE" mandatory="false" maxValue="500" minValue="20" valueType="INTEGER">
    <LocalizedDescription locale="en">Data disk size in Gigabyte</LocalizedDescription>
    <LocalizedDescription locale="de"/>
    <LocalizedDescription locale="ja"/>
  </ParameterDefinition>
<ParameterDefinition configurable="true" default="DEV" id="TYPE_OF_STORAGE" mandatory="false" valueType="ENUMERATION">
    <Options>
      <Option id="DEV">
        <LocalizedOption locale="en">Development</LocalizedOption>
      </Option>
      <Option id="PROD">
        <LocalizedOption locale="en">Production</LocalizedOption>
      </Option>
    </Options>
    <LocalizedDescription locale="en">Type of Storage</LocalizedDescription>
    <LocalizedDescription locale="de"/>
    <LocalizedDescription locale="ja"/>
</ParameterDefinition>

So during subscription i have to choose dimension of storage and type of storage, if type is Development 1GB cost 0.45 if is production cost is 0.75, then i've to choose the storage dimension and the cost is 0.45*DIMENSION or 0.75*DIMENSION.

Thank you.

GoebelL commented 3 years ago

Hi @Crys-K

The short answer: There is no built-in way, to have subscription parameter prices being multiplied by any other service parameter.

The positive answer is a bit longer. Basically, you can define such price models in OSCM as you described.
One important thing to clarify before, is, how you want the customer to be charged back: a) Based on subscription parameters, e.g. amount of storage booked with the subscription? b) Or dynamically based on the end consumption metrics?

In case of a) your technical service could offer a DIMENSION parameter, for instance like DATA_DISK_SIZE in your example, to select the storage size. On base of your technical service, you could simply create two (or any number) of marketable service offers with different price models. F.e. two marketable services, both have the parameter TYPE_OF_STORAGE with the checkbox "User Option" deselected (set by the supplier). One marketable service, where the parameter is set to "Development", and one where it's set to "Production". Then you can define respective storage prices separately, for the price model "Development" and for the price model "Production".

With the different price models, you could also define upgrade & downgrade options for the marketable service to allow the customer for switching between both types.

In case of b) you'll need to build the integration based on priced events. What is the technical base of your service? The integration of event based consumption metering and charging is supported for VMware, OpenStack and for the Shell Integration. The latter one is the most flexible approach. For example, you can use the Shell Integration API to integrate any kind of services, using Unix shell or PowerShell scripts. The amount that is charged depends on the event prices defined in the price model and the number of event occurrences.
For Shell Integration API, you could stay with a single marketable service, and cover the requested cost factor by setting the multiplier parameter in your Usage Data script. For instance, for your case, you could read the TYPE_OF_STORAGE parameter and set multiplier to 75 in case 'Production' and 45 for 'Development'. See page 9 in ShellIntegration.pdf. A technical service example with definition of usage events can be found here.

mamu0 commented 3 years ago

Hi @GoebelL ! Thank you for the answer, and it's possible to see a quote with the final price that you would pay after various parameters have been set?