Last updated:
0 purchases
bcsoiapi 1.1.1
Business Critical Services Operational Insights API SDK
SDK for the Business Critical Services (BCS) Operations Insights (OI) API
Example
from bcs_oi_api import BCSOIAPI
from bcs_oi_api.models import Device, SecurityAdvisory, SecurityAdvisoryBulletin, SecurityAdvisoryOutcome
bcs_oi_api = BCSOIAPI(
client_id='client id',
client_secret='client secret',
region='us'
)
# Getting a generator for all discovered devices
devices = bcs_oi_api.get_output(model=Device)
# Building a dictionary with as key the device_id and the value the Device object for lookups
devices_dict = {device.device_id: device for device in devices}
# Getting a generator for all the Security Advisories
security_advisories = bcs_oi_api.get_output(model=SecurityAdvisory)
# Getting a generator for all the Security Advisory Bulletins
security_advisory_bulletins = bcs_oi_api.get_output(model=SecurityAdvisoryBulletin)
# Building a dictionary with as key the id of the bulletin and as value the bulletin itself for lookups
security_advisory_bulletins_dict = {bulletin.security_advisory_cold_id: bulletin for bulletin in
security_advisory_bulletins}
# Listing devices which are vulnerable to security advisories with a critical impact rating
for advisory in security_advisories:
if advisory.match_confidence == SecurityAdvisoryOutcome.VULNERABLE and \
security_advisory_bulletins_dict[advisory.security_advisory_cold_id].security_impact_rating == 'Critical':
print(
f"Device \"{devices_dict[advisory.device_id].device_name}\" is vulnerable to "
f"\"{security_advisory_bulletins_dict[advisory.security_advisory_cold_id].bulletin_title}\""
)
Filtering & Masking Example
# Filtering - Inventory Devices
from bcs_oi_api import BCSOIAPI
from bcs_oi_api.models import DeviceFilter, Device, UIRDetailsFilter, UIRDetails
bcs_oi_api = BCSOIAPI(
client_id='client id',
client_secret='client secret',
region='us'
)
filter_params = {
"productFamily": [
"Cisco ASR 9000 Series Aggregation Services Routers",
"Cisco Catalyst 3850 Series Switches",
"Cisco ASR 1000 Series Aggregation Services Routers",
],
}
filter_parameter = DeviceFilter.parse_obj(filter_params)
inventory_devices = bcs_oi_api.get_output(model=Device, filter_=filter_parameter)
for inventory_device in inventory_devices:
print(inventory_device)
# Masking - UIR Details
filter_params = {
"unidentifiedDeviceName": ["site2-asr-1"],
"unidentifiedDeviceStatus": ["Recurring"],
}
fields = "unidentifiedDeviceName,unidentifiedDevicePlatform"
filter_parameter = UIRDetailsFilter.parse_obj(filter_params)
uir_details = bcs_oi_api.get_output(model=UIRDetails, filter_=filter_parameter, fields=fields)
for uir_detail in uir_details:
print(uir_detail)
# In the uir_detail response, only specified fields would be accessible.
print(f"Unidentified Device Name : {uir_detail.unidentified_device_name}")
print(f"Unidentified Device Platform : {uir_detail.unidentified_device_platform}")
Installation
Installing and upgrading is easy:
Install via PIP
$ pip install bcs-oi-api
Upgrading to the latest Version
$ pip install bcs-oi-api --upgrade
Questions, Support & Discussion
bcs-oi-api is a community developed and community supported project. Feedback, thoughts, questions, issues can be submitted using the issues page.
Contribution
bcs-oi-api is a community developed project. Code contributions are welcome via PRs!
Business Cricital Services Operations Insights API
Issues
Copyright (c) 2018-2021 Cisco and/or its affiliates.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.