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
colocation
-
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.
-