Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
This is a Python client for the Abiquo API. It allows to consume the API in a dynamic way and to navigate its resources using its built-in linking features.
The project depends on requests and optionally on requests_oauthlib, if you prefer to use OAuth instead of Basic Authentication.
You can easily install the module with:
pip install abiquo-api
Using the client is pretty straightforward. Here are some examples:
This example shows how to get the list of existing datacenters and how to navigate its links to create a rack in each of them:
import json
from abiquo.client import Abiquo
from abiquo.client import check_response
api = Abiquo(API_URL, auth=(username, password))
code, datacenters = api.admin.datacenters.get(
headers={'Accept':'application/vnd.abiquo.datacenters+json'})
print "Response code is: %s" % code
for dc in datacenters:
print "Creating rack in datacenter %s [%s]" % (dc.name, dc.location)
code, rack = dc.follow('racks').post(
data=json.dumps({'name': 'New rack'}),
headers={'accept':'application/vnd.abiquo.rack+json',
'content-type':'application/vnd.abiquo.rack+json'})
check_response(201, code, rack)
print "Response code is: %s" % code
print "Created Rack: %s" % rack.name
Note that you don't need to care about pagination, the client handles it internally for you.
If your platform uses OpenID and you have a Bearer access token, you can configure the client as follows:
import json
from abiquo.client import Abiquo
from abiquo.auth import BearerTokenAuth
api = Abiquo(API_URL, auth=BearerTokenAuth(token))
import json
from abiquo.client import Abiquo
from abiquo.auth import TokenAuth
api = Abiquo(API_URL, auth=TokenAuth(token))
To use OAuth first you have to register your client application in the Abiquo API. To do that, you can
use the register.py
script as follows, and it will register the application and generate the access
tokens:
$ python register.py
Abiquo API endpoint: http://localhost/api
Username or OpenID access_token (prefixed with "openid:"): your-username
Password: your-password
Application name: My Cool App
App key: 54e00f27-6995-40e8-aefe-75f76f514d89
App secret: eayP6ll3G02ypBhQBmg0398HYBldkf3B5Jqti73Z
Access token: c9c9bd44-6812-4ddf-b39d-a27f86bf03da
Access token secret: MifYOffkoPkhk33ZTiGOYnIg8irRjw7BlUCR2GUh7IQKv4omfENlMi/tr+gUdt5L8eRCSYKFQVhI4Npga6mXIVl1tCMHqTldYfqUJZdHr0c=
If your Abiquo platform uses OpenID, then you can register your application using the Access Token as follows:
$ python register.py
Abiquo API endpoint: http://localhost/api
Username or OpenID access_token (prefixed with "openid:"): openid:bac4564c-4522-450e-985b-5f880f02a3dd
Application name: My Cool App
App key: 685df603-cb51-4ffa-bd7e-8b0235f5ac70
App secret: HtoICXYr2WENp5D1g7UjbifNizTFh1I3AW3ylEjm
Access token: b1b2856e-5098-4a54-ae3c-d99b739f6770
Access token secret: pBioSC7SNv/0lPRQWBiOr9uSXf8bIs6D2jVVAy2WkBq3Vr37efMKv3mTugk9+TlTAtrWPsPoPdHDGjEtbb5PBHKb2JKWUC9y+OZ44I4v9kk=
Once you have the tokens, you just have to create the authentication object and pass it to the Abiquo client as follows:
from requests_oauthlib import OAuth1
from abiquo.client import Abiquo
APP_KEY = '54e00f27-6995-40e8-aefe-75f76f514d89'
APP_SECRET = 'eayP6ll3G02ypBhQBmg0398HYBldkf3B5Jqti73Z'
ACCESS_TOKEN = 'c9c9bd44-6812-4ddf-b39d-a27f86bf03da'
ACCESS_TOKEN_SECRET = 'MifYOffkoPkhk33ZTiGOYnIg8irRjw7BlUCR2GUh7IQKv4omfENlMi/tr+gUdt5L8eRCSYKFQVhI4Npga6mXIVl1tCMHqTldYfqUJZdHr0c='
oauth=OAuth1(APP_KEY,
client_secret=APP_SECRET,
resource_owner_key=ACCESS_TOKEN,
resource_owner_secret=ACCESS_TOKEN_SECRET)
api = Abiquo(API_URL, auth=oauth)
And that's it! Now you can use the Abiquo client as shown in the Basic Authentication examples.
You can run the unit tests as follows:
pip install requests requests_oauthlib httpretty
python -m unittest discover -v
This project is still in an early development stage and is still incomplete. All contributions are welcome, so feel free to raise a pull request.
The Abiquo API Java Client is licensed under the Apache License version 2. For further details, see the LICENSE file.
FAQs
Abiquo API Python Client
We found that abiquo-api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.