Class OracleCloudPriceListRateCard
- All Implemented Interfaces:
RateCard
RateCard that sources Oracle Cloud (OCI) internet data-egress rates from the
public OCI Price List API
(https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/). The API is
unauthenticated, so this adapter needs no credentials.
OCI prices outbound data transfer by source geography ("Originating in North America,
Europe, and UK" / "APAC, Japan, and South America" / "Middle East and Africa"), not by individual
region, so this adapter maps the supplied region to a geography and selects the matching
"Outbound Data Transfer" SKU. The per-GB figure is the first paid tier (the generous free
allowance, priced at 0, is skipped). It prices EgressPath.INTERNET for
CloudProviderType.ORACLE_CLOUD; EgressPath.PRIVATE (FastConnect) is port-based
rather than a per-GB egress SKU, so a PRIVATE lookup returns empty and a layered card
falls back to another source. Every rate it returns is tagged PriceSource.PROVIDER_API.
The price list is fetched once and cached for the adapter's lifetime - but only when the fetch completed. An incomplete fetch (a transport failure, or pagination cut short) is never memoized: a SKU found in the retrieved pages is still a real datum and is cached, but a miss over an incomplete catalogue is not authoritative and is retried on the next lookup. The adapter is fault-tolerant - any fetch or parse failure yields no rate rather than an exception.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptioncloudRouter(String packageCode, MetroCode metro, Term term) Resolves the price of a single Fabric Cloud Router instance.connection(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) Resolves the price of a single Fabric connection / virtual connection.static OracleCloudPriceListRateCardcreate()Creates an adapter against the public OCI Price List endpoint (DEFAULT_ENDPOINT).static OracleCloudPriceListRateCardCreates an adapter against a custom endpoint - for a proxy or testing.egress(CloudProviderType provider, String region, EgressPath path, Term term) Resolves the per-GB data-egress rate for a cloud provider over a given path.source()The dominant provenance of prices this card produces.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface RateCard
cardName, cloudRouterLookup, colocation, colocationLookup, connectionLookup, egressLookup, multicloudLinkModifier and TypeMethodDescriptiondefault StringcardName()A short name for this card in provenance trails and unpriced reasons; the simple class name by default.default PriceLookup<PriceQuote> cloudRouterLookup(String packageCode, MetroCode metro, Term term) RateCard.cloudRouter(String, MetroCode, Term)with the reason when it cannot be priced.default Optional<PriceQuote> colocation(ColocationItem item, MetroCode metro, Term term) Resolves the price of an Equinix colocation primitive - a cabinet, a kW of power, or a cross-connect (seeColocationItemfor the per-unit semantics).default PriceLookup<PriceQuote> colocationLookup(ColocationItem item, MetroCode metro, Term term) RateCard.colocation(ColocationItem, MetroCode, Term)with the reason when it cannot be priced.default PriceLookup<PriceQuote> connectionLookup(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) RateCard.connection(ConnectionType, int, MetroCode, Term)with the reason when it cannot be priced.default PriceLookup<EgressRate> egressLookup(CloudProviderType provider, String region, EgressPath path, Term term) RateCard.egress(CloudProviderType, String, EgressPath, Term)with the reason when it cannot be priced.default Optional<MulticloudLinkQuote> multicloudLink(MulticloudLinkRequest request) Resolves the two-sided price of a native provider-to-provider multicloud link (for example AWS Interconnect - multicloud paired with a Google Partner Cross-Cloud Interconnect transport).
-
Field Details
-
DEFAULT_ENDPOINT
The public OCI Price List (cetools) products endpoint; the default forcreate(). Override viacreate(String)for a proxy or testing.- See Also:
-
-
Method Details
-
create
Creates an adapter against the public OCI Price List endpoint (DEFAULT_ENDPOINT). No credentials required; note it pricesINTERNETegress only (PRIVATE/FastConnect is port-based).- Returns:
- a new OCI pricing adapter
-
create
Creates an adapter against a custom endpoint - for a proxy or testing.- Parameters:
endpoint- the full OCI Price List products URL
-
connection
public Optional<PriceQuote> connection(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) Description copied from interface:RateCardResolves the price of a single Fabric connection / virtual connection.Implementation contract. The matching strategy is implementation-specific, and a card whose data lacks an axis (metro, term, type) still returns its best figure - or empty - rather than failing; callers must not assume every card is sensitive to every parameter. Of the bundled cards:
CustomRateCardresolves the most specific declared entry (exact metro+term down to metro/term-agnostic, then a declared default);EquinixRateCardmatches bandwidth and type against the live catalogue, honours a requested metro strictly (a wrong-metro row is never returned), and prefers a term-matched row - a different-term row is only ever returned with a note naming the substitution;ReferenceRateCardmatches on bandwidth alone (smallest tabulated tier at or above the request, linearly extrapolated with anEXTRAPOLATEDnote above the top tier) and ignores type, metro, and term entirely.- Specified by:
connectionin interfaceRateCard- Parameters:
type- the connection type (e.g.EVPL_VC); may benullfor any typebandwidthMbps- the provisioned bandwidth in Mbpsmetro- the metro the connection originates in (may benullif metro-agnostic)term- the commitment term (may benullif term-agnostic)- Returns:
- the resolved quote, or
Optional.empty()if this card cannot price the connection
-
cloudRouter
Description copied from interface:RateCardResolves the price of a single Fabric Cloud Router instance.Implementation contract. As with
RateCard.connection(ConnectionType, int, MetroCode, Term), matching is implementation-specific and cards without a metro/term axis return their best figure regardless. Of the bundled cards:CustomRateCardresolves the most specific declared(packageCode, metro, term)entry;EquinixRateCardmatches the package code and metro structurally against the row's own descriptor (exact package equality, the row's own metro code) and prefers a term-matched row, labelling any term substitution;ReferenceRateCardignores metro and term, and substitutes its STANDARD figure for an unlisted package with a note naming the substitution.- Specified by:
cloudRouterin interfaceRateCard- Parameters:
packageCode- the router package / tier code (e.g."STANDARD"); may benullfor anymetro- the metro the router is deployed in (may benullif metro-agnostic)term- the commitment term (may benullif term-agnostic)- Returns:
- the resolved quote, or
Optional.empty()if this card cannot price the router
-
egress
public Optional<EgressRate> egress(CloudProviderType provider, String region, EgressPath path, Term term) Description copied from interface:RateCardResolves the per-GB data-egress rate for a cloud provider over a given path.Equinix does not sell cloud egress, so
EquinixRateCardreturnsOptional.empty()here (the default); egress rates come from aCustomRateCard(your figures), aReferenceRateCard(bundled indicative figures), or a provider-pricing-API card. The default returns empty so cards that do not model egress need not override it. Cards whose data has no region or term axis ignore those parameters - the custom and reference cards match on provider + path alone; only the provider-API adapters are region-sensitive.- Specified by:
egressin interfaceRateCard- Parameters:
provider- the cloud provider the data is leavingregion- the provider region (may benullfor a provider-wide rate)path- internet vs. private interconnectterm- the commitment term (may benull; ignored by term-agnostic cards)- Returns:
- the resolved egress rate, or
Optional.empty()if this card cannot price it
-
source
Description copied from interface:RateCardThe dominant provenance of prices this card produces. Aggregating cards reportPriceSource.COMPOSITE.
-