
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Access the Bumblebee Networks Controller API and define account, endpoint node, service node, app service, endpoint, and user classes.
The bbt class is used to simplify interactions with the Bumblebee Networks controller API by providing methods that manage accounts, IAM users, SAML SSO, service node groups, service nodes, app services, endpoint node groups, endpoint nodes, endpoints, user agents. It also provides methods to manage the database, get messages, download OVA files, get stats, billing, and contact information.
get_bt(api_url, access_key_id, access_key_secret, verbose)
api_url
(string) - base URL of the APIaccess_key_url
(string) - email/username for login and authenticationaccess_key_secret
(string) - password for login and authenticationverbose
(boolean) - set to True
Bt
classbt = get_bt(api_url="https://apiurl.com",
access_key_id="access_key_id",
access_key_secret="access_key_secret"
)
auth_header()
dict
if authorization successful, None
if unsuccessfulheaders = bt.auth_header()
create_account(username, password, headers=None)
username
(string): email/username for the new accountpassword
(string): password for the new accountheaders
(string): headers for making the request (optional)Account
object that represents the newly created account if account creation is successfulNone
if the account creation is unsuccessfulaccount, error = bt.create_account(username="new_email@gmail.com", password="new_password")
if error:
print(f"Error creating account: {error}")
else:
print(f"Account created: {account}")
get_account(username=None)
username
(string): username to retrieve account information for (optional)Account
objects representing a list of the retrieved accountsNone
if the account retrieval failsaccounts, error_msg = bt.get_account(username="new_email@gmail.com")
assert error_msg == None, f"Account get failed, error = {error_msg}"
for act in accounts:
print("\nAccount Information: ", act.to_dict())
remove_account(username)
username
(string): username of the account to be removedNone
if account removal unsuccessfulremoval_response, error = bt.remove_account(username="new_email@gmail.com")
if error:
print(f"Error removing account: {error}")
else:
print(f"Successful account removal: {removal_response}")
clean_account_resources(target_account_id)
target_account_id
(string): the ID of the account that will have its resources cleaned upNone
if account clean up unsuccessfulcleanup_response, error = bt.clean_account_resources(target_account_id='account_id')
if error:
print(f"Error cleaning account resources: {error}")
else:
print(f"Successful account clean-up: {cleanup_response}")
enable_account_trial(target_account_id, trial_period_days)
target_account_id
(string): the ID of the account to enable the trial fortrial_period_days
(string): the number of days the trial period should lastNone
if enabling account trial failsenable_response, error = bt.enable_account_trial(target_account_id="account_id", trial_period_days="10")
if error:
print(f"Error enabling account trial: {error}")
else:
print(f"Successfully enabled account trial: {enable_response}")
disable_account_trial(target_account_id)
target_account_id
(str): the ID of the account to disable the trial forNone
if disabling account trial failsdisable_response, error = bt.disable_account_trial(target_account_id="account_id")
if error:
print(f"Error disabling account trial: {error}")
else:
print(f"Successfully disabled account trial: {disable_response}")
create_iam_user(account_id, username, role)
account_id
(string): the ID of the IAM user accountusername
(string): the username/email for the new IAM userrole
(string): the role of the new IAM userNone
if IAM user creation failsiam_creation_response, error = bt.create_iam_user(account_id="account_id", username="username@gmail.com", role="role")
if error:
print(f"Error creating IAM user: {error}")
else:
print(f"Successful IAM user creation: {iam_creation_response}")
get_iam_users(username)
username
(string): the username/email for the new IAM userNone
if IAM users retrieval failsget_response, error = bt.get_iam_users(username="existing_email@gmail.com")
if error:
print(f"Error retrieving IAM users: {error}")
else:
print(f"Successful IAM users retrieval: {get_response}")
set_new_iam_user_password(iam_user_token, password)
iam_user_token
(string): the user token that is associated with the IAM userpassword
(string): the new password you want to set for the IAM userNone
if setting the new IAM user password failsnew_password_response, error = bt.set_new_iam_user_password(iam_user_token="user_token", password="password")
if error:
print(f"Error setting new IAM user password: {error}")
else:
print(f"New IAM user password successfully set: {new_password_response}")
update_iam_user(name, email, address, phone, password)
name
(string): the new name for the IAM user (optional)email
(string): the new email for the IAM user (optional)address
(string): the new address for the IAM user (optional)phone
(string): the new phone for the IAM user (optional)password
(string): the new password for the IAM user (optional)None
if updating the new IAM information failsupdate_response, error = bt.update_iam_user(name="new_name", email="new_email@example.com", address="new_address", phone="new_phone", password="new_password")
if error:
print(f"Error updating IAM user information: {error}")
else:
print(f"IAM user successfully updated: {update_response}")
iam_user_enable_mfa(type)
type
(string): the type of MFA to enable (optional)None
if enabling the MFA type failsMFA_response, error = bt.iam_user_enable_mfa(type="MFA_type")
if error:
print(f"Error enabling MFA: {error}")
else:
print(f"MFA successfully enabled: {MFA_response}")
iam_user_disable_mfa()
None
if disabling the MFA type failsMFA_response, error = bt.iam_user_disable_mfa()
if error:
print(f"Error disabling MFA: {error}")
else:
print(f"MFA successfully disabled: {MFA_response}")
iam_user_update_role(new_role, iam_user_id)
new_role
(string): the updated new role of the IAM useriam_user_id
(string): the ID of the IAM user to updateNone
if updating the IAM user role failsupdate_role_response, error = bt.iam_user_update_role(new_role="new_role", iam_user_id="user_id")
if error:
print(f"Error updating IAM user role: {error}")
else:
print(f"IAM user role successfully updated: {update_role_response}")
create_account_idp(idp_name, entity_id, issuer, sso_url, certificate)
idp_name
(string): the name of the IDPentity_id
(string): the entity ID of the IDPissuer
(string): the issuer of the IDPsso_url
(string): the SSO (single sign-on) URL of the IDPcertificate
(string): the certificate of the IDPNone
if creating the IDP failscreation_response, error = bt.create_account_idp(idp_name="ExampleIDP",entity_id="entity_id", issuer="issuer", sso_url="https://ssoexample.com", certificate="certificate")
if error:
print(f"Error creating account IDP: {error}")
else:
print(f"Account IDP successfully created: {creation_response}")
get_account_idp()
None
if retrieving the IDP account information failsget_IDP_response, error = bt.get_account_idp()
if error:
print(f"Error retrieving account IDP: {error}")
else:
print(f"Account IDP information: {get_IDP_response}")
remove_account_idp
None
if removing account IDP failsremove_IDP_response, error = bt.get_account_idp()
if error:
print(f"Error removing account IDP: {error}")
else:
print(f"Remove account IDP successful: {remove_IDP_response}")
update_account_idp(idp_name, entity_id, issuer, sso_url, certificate)
idp_name
(string): the new name of the IDP (optional)entity_id
(string): the new entity ID of the IDP (optional)issuer
(string): the new issuer of the IDP (optional)sso_url
(string): the new SSO URL of the IDP (optional)certificate
(string): the new certificate of the IDP (optional)None
if updating the IDP account information failsupdate_idp_response, error = bt.update_account_idp(idp_name="NewExampleIDP",entity_id="new_entity_id", issuer="new_issuer", sso_url="https://newssoexample.com", certificate="new_certificate")
if error:
print(f"Error updating account IDP: {error}")
else:
print(f"Account IDP successfully updated: {update_idp_response}")
create_service_node(service_node_group_id, service_node_name, new_service_node_group, service_node_group_name)
service_node_group_id
(string): the service node group ID of the new service nodeservice_node_name
(string): the name of the service nodenew_service_node_group
(boolean): boolean representing if a new service node group should be created (optional). default status is set as Falseservice_node_group_name
(string): the name of the new service node group (optional: if new_service_node_group
is True, then service_node_group_name
is required)ServiceNode
class if the creation is successfulNone
if service node creation failscreation_response, error = bt.create_service_node(service_node_group_id="existing_group_id",service_node_name="NewServiceNode", new_service_node_group=False)
if error:
print(f"Error creating service node: {error}")
else:
print(f"Service node successfully created: {creation_response}")
get_service_node(service_node_group_id, service_node_name)
service_node_group_id
(string): the ID of the service node groupservice_node_name
(string): the service node name (optional)ServiceNode
instances if the service node retrieval is successfulNone
if the service node retrieval failsSN_retrieval_response, error = bt.get_service_node(service_node_group_id="group_id")
if error:
print(f"Error retrieving service node: {error}")
else:
print(f"Service nodes: {SN_retrieval_response}")
remove_service_node(service_node_id)
service_node_id
(string): the ID of the service node to removeNone
if the service node removal failsSN_removal_response, error = bt.remove_service_node(service_node_id="node_id")
if error:
print(f"Error removing service node: {error}")
else:
print(f"Service node successfully removed: {SN_removal_response}")
get_service_node_details(service_node_id)
service_node_id
(string): the ID of the service node to retrieve information ofNone
if service node details retrieval failsSN_details_response, error = bt.get_service_node_detail(service_node_id="service_node_id")
if error:
print(f"Error retrieving service node details: {error}")
else:
print(f"Service node details: {response}")
set_service_node_form_factor(service_node_id, form_factor, shipping_addr)
service_node_id
(string): the ID of the service nodeform_factor
(string): the form factor of the service nodeshipping_addr
(string): the shipping address of the service nodeNone
if the setting service node form factor failsresponse, error = bt.set_service_node_form_factor(service_node_id="service_node_id", form_factor="new_form_factor", shipping_addr="1234 Shipping Address St")
if error:
print(f"Error setting service node form factor: {error}")
else:
print(f"Service node form factor successfully set: {response}")
create_app_service(app_service_name, location, region, cloud_endpoint_service_name, service_node_group_id, fqdn, proto, port, network_mode_enabled, real_subnets, address_translation_enabled, virtual_subnet_pools, bgp_enabled, bgp_local_asn, bgp_peer_asn, bgp_peer_ip)
app_service_name
(string): the name of the app servicelocation
(string): the location of the app service (aws, azure, or onprem)region
(string): the region for the app service (required for aws and azure)cloud_endpoint_service_name
(string): the cloud endpoint service name (required for aws and azure)service_node_group_id
(string): the service node group ID (required for onprem)fqdn
(string): the FQDN (fully qualified domain name) for the app service (required for onprem)proto
(string): the protocol for the app service (required)port
(string): the port number for the application service (required)network_mode_enabled
(boolean): a boolean representing if network mode is enabled (required for onprem). default status is set as False.real_subnets
(string): the real subnets for the app service (required for onprem)address_translation_enabled
(boolean): a boolean representing if address translation is enabled (required for onprem). default status is set as False.virtual_subnet_pools
(string): the virtual subnet pools for the app service (required for onprem)bgp_enabled
(boolean): a boolean representing if BGP is enabled (required for onprem). default status is set as Falsebgp_local_asn
(string): the BGP local ASN (required for onprem if bgp_enabled
is True)bgp_peer_asn
(string): the BGP peer ASN (required for onprem if bgp_enabled
is True)bgp_peer_ip
(string): the BGP peer IP (required for onprem if bgp_enabled
is True)AppService
class if app service creation is successfulNone
if app service creation failsAS_creation_response, error = bt.create_app_service(
app_service_name="ExampleAppService",
location="aws",
region="us-west-2",
cloud_endpoint_service_name="cloud_service_name",
service_node_group_id=None,
fqdn=None,
proto="https",
port="443")
if error:
print(f"Error creating app service: {error}")
else:
print(f"App service successfully created: {AS_creation_response}")
get_app_service(app_service_name)
app_service_name
(string): the name of the app serviceAppService
instances if app service retrieval is successfulNone
if the app service retrieval failsresponse, error = bt.get_app_service(app_service_name="example-app-service")
if error:
print(f"Error retrieving app service: {error}")
else:
print(f"App service: {response}")
remove_app_service(app_service_id)
app_service_id
(string): the ID of the app service to removeNone
if the app service removal failsAS_removal_response, error = bt.remove_app_service(app_service_id="service_id")
if error:
print(f"Error removing app service: {error}")
else:
print(f"App service successfully removed: {AS_removal_response}")
get_app_service_detail(app_service_id)
app_service_id
(string): the ID of the app service that will have its details retrievedNone
if the app service details retrieval failsAS_details_response, error = bt.get_app_service_detail(app_service_id="service_id")
if error:
print(f"Error retrieving app service details: {error}")
else:
print(f"App service details: {AS_details_response}")
add_app_service_hosting(app_service_id, location, region, cloud_endpoint_service_name, service_node_group_id, fqdn)
app_service_id
(string): the ID of the app servicelocation
(string): the hosting location of the app service (aws, azure, or onprem)region
(string): the region for the hosting location (required for aws and azure)cloud_endpoint_service_name
(string): the cloud endpoint service name (required for aws and azure)service_node_group_id
(string): the service node group ID (required for onprem)fqdn
(string): the FQDN (fully qualified domain name) for the app service (required for onprem)AppService
class if adding hosting to the app service is successfulNone
if adding hosting to the app service failsresponse, error = bt.add_app_service_hosting(
app_service_id="app_service_id",
location="aws",
region="us-west-2",
cloud_endpoint_service_name="cloud_service_name",
service_node_group_id=None,
fqdn=None)
if error:
print(f"Error adding app service hosting: {error}")
else:
print(f"App service hosting successfully added: {response}")
get_app_service_hosting(app_service_id, hosting_type)
app_service_id
(string): the app service ID that will have its hosting details retrievedhosting_type
(string): the type of hosting to retrieve (optional)None
if the app service hosting retrieval failsresponse, error = bt.get_app_service_hosting(app_service_id="app_service_id")
if error:
print(f"Error retrieving app service hosting: {error}")
else:
print(f"App service hosting: {response}")
remove_app_service_hosting(app_service_id, hosting_id)
app_service_id
(string): the app service ID that will have its hosting details removedhosting_id
(string): the ID of the hosting to removeAppService
class if hosting removal from the app service is successfulNone
if hosting removal from the app service failsresponse, error = bt.remove_app_service_hosting( app_service_id="app_service_id", hosting_id="hosting_id")
if error:
print(f"Error removing app service hosting: {error}")
else:
print(f"App service hosting successfully removed: {response}")
resize_app_service(app_service_id, hosting_id, direction)
app_service_id
(string): the app service ID that will be resizedhosting_id
(string): the ID of the hostingdirection
(string): the direction to resize (e.g. up
or down
)
up
: increases the throughput of the app service, thereby handling more endpointsdown
: reduces the throghput of the app service, thereby handling less endpointsNone
if app service resizing failsresponse, error = bt.resize_app_service(app_service_id="app_service_id", hosting_id="hosting_id", direction="up")
if error:
print(f"Error resizing app service: {error}")
else:
print(f"App service successfully resized: {response}")
update_app_service_contacts(app_service_id, primary_contact_id, secondary_contact_id)
app_service_id
(string): the app service ID that will have its contacts updatedprimary_contact_id
(string): the ID of the primary contact (optional)secondary_contact_id
(string): the ID of the secondary contact (optional)None
if updating the contact details failssuccess, error = bt.update_app_service_contacts(app_service_id="app_service_id", primary_contact_id="primary_contact_id", secondary_contact_id="secondary_contact_id")
if not success:
print(f"Error updating app service contacts: {error}")
else:
print("App service contacts successfully updated.")
create_ep_node_group(ep_node_group_name, ep_node_name)
ep_node_group_name
(string): the endpoint node group nameep_node_name
(string): the endpoint node name (optional)EpNodeGroup
class if endpoint node group creation is successfulNone
if endpoint node group creation failsEP_node_group_response, error = bbt.create_ep_node_group(ep_node_group_name="example_ep_node_group_name", ep_node_name="example_ep_node_name")
if error:
print(f"Error creating endpoint node group: {error}")
else:
print(f"Endpoint node group successfully created: {EP_node_group_response}")
get_ep_node_groups(ep_node_group_name)
ep_node_group_name
(string): the endpoint node group name to filter byEpNodeGroup
instances if endpoint node group retrieval is successfulNone
if endpoint node group retrieval failsep_node_groups, error = bt.get_ep_node_groups(ep_node_group_name="group_name")
if error:
print(f"Error retrieving endpoint node groups: {error}")
else:
print(f"Endpoint node groups: {ep_node_groups}")
remove_ep_node_group(ep_node_group_id)
ep_node_group_id
(string): the endpoint node group ID to removeNone
if endpoint node group removal failsresponse, error = bt.remove_ep_node_group(ep_node_group_id="ep_node_group_id")
if error:
print(f"Error removing endpoint node group: {error}")
else:
print(f"Endpoint node group successfully removed: {response}")
create_ep_node(ep_node_group_id, ep_node_name)
ep_node_group_id
(string): the endpoint node group ID to identify the endpoint node group that the new endpoint would fall underep_node_name
(string): the name of the new endpoint node to be createdEpNode
class if endpoint node creation is successfulNone
if endpoint node creation failsep_node, error = bt.create_ep_node(ep_node_group_id="ep_node_group_id", ep_node_name="ep_node_name")
if error:
print(f"Error creating endpoint node: {error}")
else:
print(f"Endpoint node successfully created: {ep_node}")
get_ep_nodes(ep_node_group_id, ep_node_name)
ep_node_group_id
(string): the endpoint node group IDep_node_name
(string): the name of the endpoint node to filter by (optional)EpNode
instances if endpoint nodes retrieval is successfulNone
if endpoint nodes retrieval failsep_nodes, error = bt.get_ep_nodes(ep_node_group_id="ep_node_group_id", ep_node_name="ep_node_name")
if error:
print(f"Error retrieving endpoint nodes: {error}")
else:
print(f"Endpoint nodes: {ep_nodes}")
remove_ep_node(ep_node_group_id, ep_node_id)
ep_node_group_id
(string): the ID of the endpoint node groupep_node_id
(string): the ID of the endpoint node to remove from the endpoint node groupNone
if the endpoint node removal failsresponse, error = bt.remove_ep_node(ep_node_group_id="ep_node_group_id", ep_node_id="ep_node_id")
if error:
print(f"Error removing endpoint node: {error}")
else:
print(f"Endpoint node removed: {response}")
get_endpoint_node_detail(ep_node_id)
ep_node_id
(string): the endpoint node ID of the endpoint node that will have its details retrievedNone
if the endpoint node details retrieval failsendpoint_node_details, error = bt.get_endpoint_node_detail(ep_node_id="ep_node_id")
if error:
print(f"Error retrieving endpoint node detail: {error}")
else:
print(f"Endpoint node detail: {endpoint_node_details}")
add_endpoint_node_secondary_ips(ep_node_id, secondary_ips)
ep_node_id
(string): the ID of the endpoint node that will have secondary IPs added to itsecondary_ips
(string): the secondary IPs to add to the endpoint nodeNone
if adding the secondary IPs to the endpoint node failsresponse, error = bt.add_endpoint_node_secondary_ips(ep_node_id="ep_node_id", secondary_ips="192.123.1.2, 192.123.1.3")
if error:
print(f"Error adding secondary IPs: {error}")
else:
print(f"Secondary IPs successfully added: {response}")
set_endpoint_node_form_factor(ep_node_id, form_factor, shipping_addr)
ep_node_id
(string): the ID of the endpoint node that will have its form factor set upform_factor
(string): the form factor to set to the endpoint nodeshipping_addr
(string): the shipping address (optional)None
if the endpoint node form factor setup failscreate_ep(create_ep(app_service_id, ep_node_group_id, ep_node_id, ep_name, ep_deployment, region, consumer_principle, verbose, real_subnets, bgp_enabled, bgp_local_asn, bgp_peer_asn, bgp_peer_ip)
app_service_id
(string): the app service's IDep_node_group_id
(string): the endpoint node group IDep_node_id
(string): the endpoint node IDep_name
(string): the name of the endpoint to be createdep_deployment
(string): the deployment type of the endpoint (agent, onprem, or aws)region
(string): the region for AWS deployment (required for AWS)consumer_principle
(string): the allowed principal principle (required for AWS)verbose
(boolean): a boolean representing whether the input data should be printed (optional). default status is set as Falsereal_subnets
(string): the real subnets (required for onprem)bgp_enabled
(boolean): a boolean indicating if BGP is enabled (required for onprem)bgp_local_asn
(string): the local ASN for BGP (required for onprem)bgp_peer_asn
(string): the peer ASN for BGP (required for onprem)bgp_peer_ip
(string): the peer IP for BGP (required for onprem)Ep
class if the endpoint creation is successfulNone
if the endpoint creation failsresponse, error = bt.create_ep(
app_service_id="app_service_id",
ep_node_group_id="ep_node_group_id",
ep_node_id="ep_node_id",
ep_name="ep_name",
ep_deployment="onprem",
real_subnets="192.168.1.0/24",
bgp_enabled=True,
bgp_local_asn="65101",
bgp_peer_asn="65102",
bgp_peer_ip="192.168.1.1")
if error:
print(f"Error creating EP: {error}")
else:
print(f"Successfully created EP: {response}")
get_eps(app_service_id, ep_node_id, ep_name, verbose)
app_service_id
(string): the app service ID to filter the retrieval by (optional)ep_ndoe_id
(string): the endpoint node ID to filter the retrieval by (optional)ep_name
(string): the endpoint name to filter the retrieval by (optional)verbose
(boolean): a boolean representing if each item in the result should be printed (optional). default status is set as TrueEp
objects representing a list of the retrieved endpoints if the endpoint retrieval is successfulNone
if the endpoint retrieval failseps, error = bt.get_eps(app_service_id="app_service_id", ep_node_id="ep_node_id", verbose=True)
if error:
print(f"Error retrieving EPs: {error}")
else:
print(f"Successfully retrieved EPs: {eps}")
remove_ep(ep_id)
ep_id
(string): the endpoint ID to be removedNone
if the endpoint removal failsresponse, error = bt.remove_ep(ep_id="endpoint_id")
if error:
print(f"Error removing EP: {error}")
else:
print(f"Successfully removed EP: {response}")
approve_ep(ep_id)
ep_id
(string): the endpoint ID to be approvedNone
if the endpoint approval failsresponse, error = bt.approve_ep(ep_id="endpoint_id")
if error:
print(f"Error approving EP: {error}")
else:
print(f"Successfully approved EP: {response}")
reject_ep(ep_id)
ep_id
(string): the endpoint ID to be rejectedNone
if the endpoint rejection failsresponse, error = bt.reject_ep(ep_id="endpoint_id")
if error:
print(f"Error rejecting EP: {error}")
else:
print(f"Rejected EP: {response}")
get_endpoint_detail(ep_id)
ep_id
(string): the endpoint ID to have its details retrievedNone
if the endpoint details retrieval failsdetails, error = bt.get_endpoint_detail(ep_id="endpoint_id")
if error:
print(f"Error retrieving endpoint details: {error}")
else:
print(f"Endpoint details: {details}")
resize_endpoint_throughput(ep_id, direction)
ep_id
(string): the endpoint ID of the endpoint that will be resizeddirection
(string): the direction to resize (e.g. up
or down
)
up
: increases the throughput of the endpointdown
: reduces the throghput of the endpointNone
if endpoint resizing failsresponse, error = bt.resize_endpoint_throughput(ep_id="endpoint_id", direction="up")
if error:
print(f"Error resizing endpoint throughput: {error}")
else:
print(f"Successfully resized endpoint throughput: {response}")
update_endpoint_contacts(ep_id, primary_contact_id, secondary_contact_id)
ep_id
(string): the endpoint ID that will have its contacts updatedprimary_contact_id
(string): the ID of the primary contact (optional)secondary_contact_id
(string): the ID of the secondary contact (optional)None
if updatingn the contact details failsresponse, error = bt.update_endpoint_contacts(ep_id="endpoint_id", primary_contact_id="primary_contact", secondary_contact_id="secondary_contact")
if error:
print(f"Error updating endpoint contacts: {error}")
else:
print(f"Updated endpoint contacts: {response}")
create_user_agent(name, email, description, ep_id)
name
(string): name of the new user agentemail
(string): email of the new user agentdescription
(string): description of the new user agent (optional)ep_id
(string): the endpoint ID associated with the user agent (optional)UserAgent
class if the user agent creation is successfulNone
if user agent creation failsresponse, error = bt.create_user_agent(name="John Doe", email="johndoe@gmail.com", description="Example user agent", ep_id="endpoint_id")
if error:
print(f"Error creating user agent: {error}")
else:
print(f"Successfully created user agent: {response}")
get_user_agents(email)
email
(string): the email to filter the retrieval of user agents byUserAgent
objects if the user agents retrieval is successfulNone
if the user agents retrieval failsuser_agents, error = bt.get_user_agents(email="johndoe@gmail.com")
if error:
print(f"Error retrieving user agents: {error}")
else:
print(f"Successfully retrieved user agents: {user_agents}")
remove_user_agent(user_agent_id)
user_agent_id
(string): the user agent ID to filter the user agent removalNone
if the user agent removal failsresponse, error = bt.remove_user_agent(user_agent_id="agent_id")
if error:
print(f"Error removing user agent: {error}")
else:
print(f"Successfully removed user agent: {response}")
attach_user_agent_to_ep(user_agent_id, ep_id)
user_agent_id
(string): the user agent ID for the attachmentep_id
(string): the endpoint ID for the attachmentNone
if the user agent to endpoint attachment failsresponse, error = bt.attach_user_agent_to_ep(user_agent_id="user_agent_id", ep_id="endpoint_id")
if error:
print(f"Error attaching user agent to EP: {error}")
else:
print(f"Successfully ttached user agent to EP: {response}")
detach_user_agent_from_ep(user_agent_id, ep_id)
user_agent_id
(string): the user agent ID for the detachmentep_id
(string): the endpoint ID for the detachmentNone
if the user agent to endpoint detachment failsresponse, error = bt.detach_user_agent_from_ep(user_agent_id="user_agent_id", ep_id="endpoint_id")
if error:
print(f"Error detaching user agent from EP: {error}")
else:
print(f"Successfully detached user agent from EP: {response}")
get_linked_user_agent_ep(user_agent_id)
user_agent_id
(string): the user agent IDNone
if the linked endpoint retrieval failsresponse, error = bt.get_linked_user_agent_ep(user_agent_id="user_agent_id")
if error:
print(f"Error retrieving linked endpoint: {error}")
else:
print(f"Linked endpoint: {response}")
get_unlinked_user_agent_ep(user_agent_id)
user_agent_id
(string): the user agent IDNone
if the unlinked endpoint retrieval failsresponse, error = bt.get_linked_user_agent_ep(user_agent_id="user_agent_id")
if error:
print(f"Error retrieving unlinked endpoint: {error}")
else:
print(f"Unlinked endpoint: {response}")
remove_table_content(table_name)
table_name
(string): the name of the table to have all its content removedNone
if the table removal failsresponse, error = bt.remove_table_content(table_name="example_table")
if error:
print(f"Error removing table content: {error}")
else:
print(f"Successfully removed content from table: {response}")
remove_all_table_content()
None
if the content removal from all tables failsresponse, error = bt.remove_all_table_content()
if error:
print(f"Error removing all table content: {error}")
else:
print(f"Successfully removed all table content: {response}")
get_latest_message(target_id, last_seen_msg_id)
target_id
(string): the ID of the target (e.g. user or conversation) to retrieve the latest messages forlast_seen_msg_id
(int): the ID of the latest message seen by the client so that all messages posted since this message will be retrievedNone
if the latest message retrieval failsresponse, error = bt.get_latest_message(target_id="example_user", last_seen_msg_id=100)
if error:
print(f"Error retrieving latest messages: {error}")
else:
print(f"Latest messages: {response}")
get_filename_from_cd(cd)
cd
: the content-disposition header value to retrieve filename fromNone
if the filename is not present in the content-disposition headerexample_cd = 'attachment; filename="filename.jpg"'
filename = bt.get_filename_from_cd(cd=example_cd)
if filename:
print(f"Retrieved filename: {filename}")
else:
print("No filename found in content-disposition header")
prepare_ep_node_vm(ep_node_id, filename)
ep_node_id
(string): the ID of the endpoint node for which the VM is to be preparedfilename
(string): the name of the file to save the OVA (optional)None
if the VM preparation failsresponse, error = bt.prepare_ep_node_vm(ep_node_id="ep_node_id", filename="ep_node.ova")
if error:
print(f"Error preparing endpoint node VM: {error}")
else:
print(f"Successfully prepared endpoint node VM: {response}")
prepare_service_node_vm(ep_node_id, filename)
service_node_id
(string): the ID of the service node for which the VM is to be preparedfilename
(string): the name of the file to save the OVA (optional)None
if the VM preparation failsresponse, error = bt.prepare_service_node_vm(service_node_id="service_node_id", filename="service_node.ova")
if error:
print(f"Error preparing service node VM: {error}")
else:
print(f"Successfully prepared service node VM: {response}")
get_net_stats(id_list, start_time, end_time, appservice_id)
id_list
(list): a list of IDs for which to retrieve the network statisticsstart_time
(string): the start time of the time range for the networks statistics retrievalend_time
(string): the end time of the time range for the networks statistics retrievalappservice_id
(string): the app service ID to filter the network statistics by, if provided (optional)None
if the networks statistics retrieval failsresponse, error = bt.get_net_stats(id_list=["example_id1", "example_id2"], start_time="2023-01-01T00:00:00Z", end_time="2023-01-01T23:59:59Z")
if error:
print(f"Error retrieving network statistics: {error}")
else:
print(f"Network statistics: {response}")
run_health_check(node_id)
node_id
(string): the ID of the node/gateway to run the health check onNone
if the health check run failsresponse, error = bt.run_health_check(node_id="node_id")
if error:
print(f"Error running health check: {error}")
else:
print(f"Health check results: {response}")
gen_cloud_init_data(node_id)
node_id
(string): the ID of the node/gateway to generate cloud-init data forNone
if generating the cloud-init data failsresponse, error = bt.gen_cloud_init_data(node_id="node_id")
if error:
print(f"Error generating cloud-init data: {error}")
else:
print(f"Cloud-init data: {response}")
upload_diag(node_id)
node_id
(string): the ID of the node/gateway to upload diagnostics informationNone
if requesting the node/gateway to upload diagnostics information failsresponse, error = bt.upload_diag(node_id="node_id")
if error:
print(f"Error requesting diagnostics upload: {error}")
else:
print(f"Upload request confirmation: {response}")
measure_ep_latency(ep_id)
ep_id
(string): the ID of the endpoint to measure latency forNone
if the endpoint latency measurement failsresponse, error = bt.measure_ep_latency(ep_id="ep_id")
if error:
print(f"Error measuring endpoint latency: {error}")
else:
print(f"Endpoint latency: {response}")
measure_app_service_latency(app_service_id)
app_service_id
(string): the ID of the app service to measure latency forNone
if the app service latency measurement failsresponse, error = bt.measure_ep_latency(app_service_id="AS_id")
if error:
print(f"Error measuring app service latency: {error}")
else:
print(f"App service latency: {response}")
reset_ep(ep_id)
ep_id
(string): the ID of the endpoint to resetNone
if the endpoint reset failsresponse, error = bt.reset_ep(ep_id="ep_id")
if error:
print(f"Error resetting endpoint: {error}")
else:
print(f"Endpoint reset confirmation: {response}")
upgrade_node(node_id, url)
node_id
(string): the ID of the node/gateway to upgradeNone
if the node upgrade failsresponse, error = bt.upgrade_node(node_id="node_id", url="http://examplenodeupgradeurl.com")
if error:
print(f"Error upgrading node: {error}")
else:
print(f"Node upgrade confirmation: {response}")
reset_node(node_id, hard)
node_id
(string): the ID of the node/gateway to resethard
(boolean): a boolean representing whether a hard reset should be performed (optional). default value is set as FalseNone
if the node reset failsresponse, error = bt.reset_node(node_id="node_id", hard=True)
if error:
print(f"Error resetting node: {error}")
else:
print(f"Node reset confirmation: {response}")
enable_remote_access(node_id)
node_id
(string): the ID of the node/gateway to enable remote access forNone
if the enabling remote access failsresponse, error = bt.enable_remote_access(node_id="node_id")
if error:
print(f"Error enabling remote access: {error}")
else:
print(f"Remote access successfully enabled: {response}")
disable_remote_access(node_id)
node_id
(string): the ID of the node/gateway to disable remote access forNone
if the disabling remote access failsresponse, error = bt.disable_remote_access(node_id="node_id")
if error:
print(f"Error disabling remote access: {error}")
else:
print(f"Remote access successfully disabled: {response}")
get_connected_endpoints(node_id)
node_id
(string): the ID of the node/gateway to retrieve connected endpoints forNone
if the retrieval of connected endpoints failsresponse, error = bt.get_connected_endpoints(node_id="node_id")
if error:
print(f"Error retrieving connected endpoints: {error}")
else:
print(f"Connected endpoints: {response}")
``
get_endpoint_sessions(ep_id)
ep_id
(string): the ID of the endpoint to retrieve sessions forNone
if the retrieval of endpoint sessions failsresponse, error = bt.get_endpoint_sessions(ep_id="ep_id")
if error:
print(f"Error retrieving endpoint sessions: {error}")
else:
print(f"Endpoint sessions: {response}")
get_top_talker(app_service_id, start_time, end_time)
app_service_id
(string): the ID of the app service to retrieve the top talker fromstart_time
(string): the start time of the time range for the top talker retrievalend_time
(string): the end time of the time range for the top talker retrievalNone
if the top talker retrival failsresponse, error = bt.get_top_talker(app_service_id="AS_id", start_time="2024-01-01T00:00:00Z", end_time="2024-01-01T23:59:59Z")
if error:
print(f"Error retrieving top talker: {error}")
else:
print(f"Top talker: {response}")
get_ep_sessions(ep_id, start_time, end_time)
ep_id
(string); the ID of the endpoint to retrieve sessions forstart_time
(string): the start time of the time range for the endpoint sessions retrievalend_time
(string): the end time of the time range for the endpoint sessions retrievalNone
if the endpoint sessions retrieval failsresponse, error = bt.get_ep_sessions(ep_id="ep_id", start_time="2023-01-01T00:00:00Z", end_time="2023-01-01T23:59:59Z")
if error:
print(f"Error retrieving endpoint sessions: {error}")
else:
print(f"Endpoint sessions: {response}")
get_stripe_publishable_key()
None
if Stripe publishable key retrieval failsresponse, error = bt.get_stripe_publishable_key()
if error:
print(f"Error retrieving Stripe publishable key: {error}")
else:
print(f"Stripe publishable key: {response}")
get_billings
None
if billing information retrieval failsresponse, error = bt.get_stripe_publishable_key()
if error:
print(f"Error retrieving billing information: {error}")
else:
print(f"Billing information: {response}")
create_payment_method(payment_type, card_number, exp_month, exp_year, cvc, name, email, phone, street_addr_1, street_addr_2, city, state, postal_code, country)
payment_type
(string): the type of paymentcard_number
(string): the card numberexp_month
(int): the expiration monthexp_year
(int): the expiration yearcvc
(int): the card verification code (cvc)name
(string): the name the card is underemail
(string): the email addressphone
(string): the phone numberstreet_addr_1
(string): the primary street addressstreet_addr_2
(string): the secondary street addresscity
(string): the citystate
(string): the statepostal_code
(string): the postal codecountry
(string): the countryNone
if the payment method creation failsresponse, error = bt.create_payment_method(
payment_type="card",
card_number="1231231231231231",
exp_month=1,
exp_year=2025,
cvc=123,
name="John Doe",
email="johndoe@gmail.com",
phone="1234567890",
street_addr_1="123 Example St",
street_addr_2="456 Practice St",
city="San Francisco",
state="CA",
postal_code="94106",
country="United States of America"
)
if error:
print(f"Error creating payment method: {error}")
else:
print(f"Payment method successfully created: {response}")
setup_strip_subscription(payment_type, card_number, exp_month, exp_year, cvc, name, email, phone, street_addr1, street_addr_2, city, state, postal_code, county)
payment_type
(string): the type of paymentcard_number
(string): the card numberexp_month
(int): the expiration monthexp_year
(int): the expiration yearcvc
(int): the card verification code (cvc)name
(string): the name the card is underemail
(string): the email addressphone
(string): the phone numberstreet_addr_1
(string): the primary street addressstreet_addr_2
(string): the secondary street addresscity
(string): the citystate
(string): the statepostal_code
(string): the postal codecountry
(string): the countryNone
if the Stripe subscription setup failsresponse, error = bt.setup_stripe_subscription(
payment_type="card",
card_number="1231231231231231",
exp_month=1,
exp_year=2025,
cvc=123,
name="John Doe",
email="johndoe@gmail.com",
phone="1234567890",
street_addr_1="123 Example St",
street_addr_2="456 Practice St",
city="San Francisco",
state="CA",
postal_code="94106",
country="United States of America"
)
if error:
print(f"Error setting up Stripe subscription: {error}")
else:
print(f"Stripe subscription successfully set up: {response}")
remove_stripe_subscription()
None
if the Stripe subscription removal failsresponse, error = bt.remove_strip_subscription()
if error:
print(f"Error removing Stripe subscription: {error}")
else:
print(f"Stripe subscription succesfully removed: {response}")
set_preferred_billing_provider(provider)
provider
(string): the billing provider to set as the preferredNone
if the preferred billing provider setup failsresponse, error = bt.set_preferred_billing_provider(provider="Stripe")
if error:
print(f"Error setting up preferred billing provider: {error}")
else:
print(f"Preferred billing provider successfully set up: {response}")
edit_app_service(app_service_id, app_service_name, fqdn, proto, port, service_down_timeout)
app_service_id
(string): the app service ID to be editted (optional)app_service_name
(string): the new name of the app service (optional)fqdn
(string): the new fully qualified domain name (FQDN) (optional)proto
(string): the new protocol (optional)port
(string): the new port (optional)service_down_timeout
(integer): the timeout time for monitoring the app server (optional)None
if the app service edit failsresponse, error = bt.edit_app_service(
app_service_id="app_service_id",
app_service_name="app_service_name",
fqdn="example.com",
proto="https",
port="8080",
service_down_timeout=300)
if error:
print(f"Error editing application service: {error}")
else:
print(f"Application service successfully edited: {response}")
create_contact(email, first_name, last_name, phone, address, company_name)
email
(string): the email of the contactfirst_name
(string): the first name of the contact (optional)last_name
(string): the last name of the contact (optional)phone
(string): the phone number of the contact (optional)address
(string): the address of the contact (optional)company_name
(string): the company name of the contact (optional)None
if the contact creation failsresponse, error = bt.create_contact(email="johndoe@gmail.com",
first_name="John",
last_name="Doe",
phone="1234567890",
address="123 Example St",
company_name="Company Name")
if error:
print(f"Error creating new contact: {error}")
else:
print(f"New contact information: {response}")
get_contact(email)
email
(string): the email address of the contact to retrieveNone
if contact retrieval failsresponse, error = bt.get_contact(email="johndoe@gmail.com")
if error:
print(f"Error retrieving contact: {error}")
else:
print(f"Contact details: {response}")
get_contact_by_ep_id(ep_id)
ep_id
(string): the endpoint Id of the contact to retrieveNone
if contact by endpoint ID retrieval failsresponse, error = bt.get_contact_by_ep_id(ep_id="ep_id")
if error:
print(f"Error retrieving contact by endpoint ID: {error}")
else:
print(f"Contact details: {response}")
remove_contact(email)
email
(string): the email address of the contact to removeNone
if removing the contact failsresponse, error = bt.remove_contact(email="johndoe@gmail.com")
if error:
print(f"Error removing contact: {error}")
else:
print(f"Remaining contacts: {response}")
update_contact(contact_id, email, first_name, last_name, phone, address, company_name)
contact_id
(string): the ID of the contact to updateemail
(string): the new email address of the contact (optional)first_name
(string): the new first name of the contact (optional)last_name
(string): the new last name of the contact (optional)phone
(string): the new phone number of the contact (optional)address
(string): the new address of the contact (optional)company_name
(string): the new company name of the contact (optional)None
if updating the contact information failsresponse, error = bt.update_contact(
contact_id="contact_id",
email="newjohndoeemail@gmail.com",
first_name="John Doe"
)
if error:
print(f"Error updating contact: {error}")
else:
print(f"Successfully updated contact details: {response}")
configure_node_lan_interface(node_id, enable, primary_ipv4_address, secondary_ipv4_address)
node_id
(string): the ID of the node to configureenable
(boolean): a boolean representing whether the LAN interface should be enabled or disabledprimary_ipv4_address
(string): the primary IPv4 address (optional)secondary_ipv4_address
(string): the secondary IPv4 address (optional)None
if configuration of the LAN interface failsresponse, error = bt.configure_node_lan_interface(
node_id="node_id",
enable=True,
primary_ipv4_address="192.123.1.2"
)
if error:
print(f"Error configuring LAN interface: {error}")
else:
print(f"LAN interface configuration: {response}")
configure_dhcp_relay(node_group_id, enable, server_ip)
node_group_id
(string): the ID of the node group to configureenable
(boolean): a boolean representing if the DHCP relay should be enabled or disabledserver_ip
(string): the server IP address (optional)None
if configuration of the DHCP relay failsresponse, error = bt.configure_dhcp_relay(
node_group_id="node_gorup_id",
enable=True,
)
if error:
print(f"Error configuring DHCP relay: {error}")
else:
print(f"DHCP relay configuration: {response}")
configure_vrrp(node_group_id, enable, virtual_ip)
node_group_id
(string): the ID of the node group to configureenable
(boolean): a boolean representing if the VRRP should be enabled or disabledvirtual_ip
(string): the virtual IP address (optional)None
if configuration of the VRRP failsresponse, error = bt.configure_vrrp(
node_group_id="node_group_id",
enable=True,
)
if error:
print(f"Error configuring VRRP: {error}")
else:
print(f"VRRP configuration: {response}")
FAQs
Access the Bumblebee Networks Controller API and define account, endpoint node, service node, app service, endpoint, and user classes.
We found that bumblebee-sdk-test demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.