This is no longer supported, please consider using IONOS Cloud SDK NodeJS instead.
Version: ionosenterprise-sdk-nodejs 5.1.1
- Description
- Getting Started
- Installation
- Usage
- Reference
- Contract Resources Functions
- Data Center Functions
- Firewall Rule Functions
- Image Functions
- LAN Functions
- Load Balancer Functions
- Location Functions
- NIC Functions
- Request Functions
- Server Functions
- Server Volume Functions
- Server CDROM Functions
- Server Command Functions
- Snapshot Functions
- User Management Functions
- Volume Functions
- Support
- Testing
- Contributing
The Ionos Enterprise Client Library for Node.js allows interaction with the Ionos Enterprise platform over the REST API. It is designed for developers who are building applications in Node.js. This guide will walk you through installing the library and performing various actions against the API.
The Node.js Client Library, libionosenterprise, wraps the latest version of the Ionos Enterprise REST API. All API operations are performed over SSL and authenticated using your Ionos Enterprise account credentials. The API can be accessed within a server running on the Ionos Enterprise platform or directly over the Internet from any application that can send and receive HTTPS requests and responses.
Before you begin you will need to have signed-up for a Ionos Enterprise account. The credentials you setup during sign-up will be used to authenticate against the API.
The Node.js Client Library is available on npm. You can install the latest stable version using npm:
npm install libionosenterprise
Connecting to Ionos Enterprise is handled by first setting up your authentication credentials.
var libpb = require('libionosenterprise')
libpb.setauth('username', 'password')
The depth
is used to control the depth of JSON object returned. The depth value can be from 1 to 5.
libpb.depth = 1
libpb.setdepth(5)
Ionos Enterprise uses the concept of data centers. These are logically separated from one another and allow you to have a self-contained environment for all servers, volumes, networking, snapshots, and so forth. The goal is to give you the same experience as you would have if you were running your own physical data center.
You will need a data center before you can create anything else. Like the server functions, the data center functions can be used to create a simple data center or a complex one.
To create a simple one you would do this:
var libpb = require('libionosenterprise')
libpb.setauth('username', 'password')
dcData = {
"properties": {
"name": "Test Data Center",
"location": "us/las",
"description": "Test description"
}
};
libpb.createDatacenter(dcData, function(error, response, body) {
console.log(body)
console.log(error)
console.log(response)
})
You can find more detailed information about data center creation here
You will want to exercise a bit of caution here. Removing a data center will destroy all objects contained within that data center including servers, volumes, snapshots, and so forth.
datacenter_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
libpb.deleteDatacenter(datacenter_id, callback)
The following example shows you how to create a new server in the virtual data center created above.
var datacenter_id = '1234567-1234-1234-1234-123456789012'
var data = {
"properties": {
"name": "Test Server",
"ram": 2048,
"cores": 1,
"cpuFamily": "AMD_OPTERON"
}
}
libpb.createServer(datacenter_id, data, function(error, response, body) {
console.log(body)
console.log(error)
console.log(response)
})
One of the unique features of the Ionos Enterprise platform when compared with the other providers is that it allows you to define your own settings for cores, memory, and disk size without being tied to a particular size.
Ionos Enterprise allows users to dynamically update cores, memory, and disk independently of each other. This removes the restriction of needing to upgrade to the next instance size to receive an increase in memory. You can now simply increase the server's memory thereby keeping your costs in-line with your resource needs.
The following code illustrates how you can update the cores and memory of a server:
var datacenter_id = '1234567-1234-1234-1234-123456789012'
var server_id = '1234567-1234-1234-1234-123456789012'
var data = { "properties" : { "cores": 16, "ram": 4096 } }
libpb.updateServer(datacenter_id, server_id, data, callback)
Listing resources is fairly straight forward. To view all data centers:
libpb.listDatacenters(function(error, response, body) {
console.log(body)
console.log(error)
console.log(response)
})
Listing servers within a data center:
var datacenter_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
libpb.listServers(datacenter_id, callback)
Listing volumes within a data center:
var datacenter_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
libpb.listVolumes(datacenter_id, callback)
The Ionos Enterprise platform supports adding multiple NICs to a server. These NICs can be used to create segmented networks on the platform.
The sample below shows you how to add a second NIC to an existing server:
dc_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
server_id = '700e1cab-99b2-4c30-ba8c-1d273ddba023'
var data = { name: 'nic11', ips: ['10.2.2.11'], lan: 1 }
libpb.createNic(dc_id, server_id, data)
The following example shows you how to create a new user with administrator privileges.
var data = {
"properties": {
"firstname": "John",
"lastname": "Doe",
"email": "no-reply@example.com",
"password": "secretpassword123",
"administrator": true,
"forceSecAuth": false
}
}
libpb.createUser(data, function(error, response, body) {
console.log(body)
console.log(error)
console.log(response)
})
The following example shows you how to create a new group.
var data = {
"properties": {
"name": "Test Group",
"createDataCenter": true,
"createSnapshot": true,
"reserveIp": true,
"accessActivityLog": true
}
}
libpb.createGroup(data)
listContractResources: function(callback)
listDatacenters: function(callback)
createDatacenter: function(data, callback)
getDatacenter: function(dc_id, callback)
updateDatacenter: function(dc_id, data, callback)
patchDatacenter: function(dc_id, data, callback)
deleteDatacenter: function(dc_id, callback)
listFWRules: function(dc_id, server_id, nic_id, callback)
createFWRule: function(dc_id, server_id, nic_id, data, callback)
getFWRule: function(dc_id, server_id, nic_id, fwrule_id, callback)
updateFWRule: function(dc_id, server_id, nic_id,fwrule_id, data, callback)
patchFWRule: function(dc_id, server_id, nic_id, fwrule_id, data, callback)
delFWRule: function(dc_id, server_id, nic_id, fwrule_id, callback)
listImages: function(callback)
getImage: function(image_id,callback)
updateImage: function(image_id,data,callback)
patchImage: function(image_id,data,callback)
deleteImage: function(image_id,callback)
listIpblocks: function(callback)
reserveIpblock: function(data,callback)
getIpblock: function(ipblock_id,callback)
releaseIpblock: function(ipblock_id,callback)
listLans: function(dc_id,callback)
createLan: function(dc_id,data,callback)
getLan: function(dc_id,lan_id,callback)
updateLan: function(dc_id,lan_id,data,callback)
patchLan: function(dc_id,lan_id,data,callback)
deleteLan: function(dc_id,lan_id,callback)
listLanMembers: function(dc_id,lan_id,callback)
createLoadbalancer: function(dc_id, data, callback)
deleteLoadbalancer: function(dc_id, lb_id, callback)
getLoadbalancer: function(dc_id, lb_id, callback)
listLoadbalancers: function(dc_id, callback)
patchLoadbalancer: function(dc_id, lb_id, data, callback)
updateLoadbalancer: function(dc_id, lb_id, data, callback)
getLocation: function(location_id, callback)
listLocations: function(callback)
createNic: function(dc_id, server_id, data, callback)
deleteNic: function(dc_id, server_id, nic_id, callback)
getNic: function(dc_id, server_id, nic_id, callback)
listNics: function(dc_id, server_id, callback)
patchNic: function(dc_id, server_id, nic_id, data, callback)
updateNic: function(dc_id, server_id, nic_id, data, callback)
listRequests: function(callback)
getRequest: function(request_id, callback)
statusRequest: function(request_id, callback)
createServer: function(dc_id, data, callback)
delServer: function(dc_id, server_id, callback)
getServer: function(dc_id, server_id, callback)
listServers: function(dc_id, callback)
patchServer: function(dc_id, server_id, data, callback)
updateServer: function(dc_id, server_id, data, callback)
listAttachedVolumes: function(dc_id, server_id, callback)
attachVolume: function(dc_id, server_id, volume_id, callback)
getAttachedVolume: function(dc_id, server_id, volume_id, callback)
detachVolume: function(dc_id, server_id, volume_id, callback)
listAttachedCdroms: function(dc_id, server_id, callback)
attachCdrom: function(dc_id, server_id, cdrom_id, callback)
getAttachedCdrom: function(dc_id,server_id, cdrom_id, callback)
detachCdrom: function(dc_id, server_id, cdrom_id, callback)
rebootServer: function(dc_id, server_id, callback)
startServer: function(dc_id, server_id, callback)
stopServer: function(dc_id, server_id, callback)
deleteSnapshot: function(snapshot_id, callback)
getSnapshot: function(snapshot_id, callback)
listSnapshots: function(callback)
patchSnapshot: function(snapshot_id, data, callback)
updateSnapshot: function(snapshot_id, data, callback)
createSnapshot: function(dc_id, volume_id, data, callback)
restoreSnapshot: function(dc_id, volume_id, data, callback)
listGroups: function (callback)
createGroup: function (data, callback)
getGroup: function (group_id, callback)
updateGroup: function (group_id, data, callback)
deleteGroup: function (group_id, callback)
listUsers: function (callback)
createUser: function (data, callback)
getUser: function (user_id, callback)
updateUser: function (user_id, data, callback)
deleteUser: function (user_id, callback)
listGroupUsers: function (group_id, callback)
addGroupUser: function (group_id, data, callback)
removeGroupUser: function (group_id, user_id, callback)
listShares: function (group_id, callback)
addShare: function (group_id, resource_id, data, callback)
getShare: function (group_id, resource_id, callback)
updateShare: function (group_id, resource_id, data, callback)
removeShare: function (group_id, resource_id, callback)
listResources: function (callback)
listResourcesByType: function (resource_type, callback)
getResourceByType: function (resource_type, resource_id, callback)
listVolumes: function(dc_id, callback)
createVolume: function(dc_id, data, callback)
getVolume: function(dc_id, volume_id, callback)
updateVolume: function(dc_id, volume_id, data, callback)
patchVolume: function(dc_id, volume_id, data, callback)
deleteVolume: function(dc_id, volume_id, callback)
You can find additional examples in the repository examples
directory. If you find any issues, please let us know via the DevOps Central community or GitHub's issue system and we'll check it out.
You can find a full list of tests inside the test
directory. Before running the tests, install the package dependencies and export your Ionos Enterprise credentials.
Note that the test user must have administrator privileges.
export IONOSENTERPRISE_USERNAME=username
export IONOSENTERPRISE_PASSWORD=password
npm install
To run all available tests:
npm test
or
mocha test
To run a particular test context:
mocha -g 'Datacenter tests'
- Fork it ( https://github.com/ionos-enterprise/ionos-enterprise-sdk-nodejs/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request