{"id":23087064,"url":"https://github.com/opennebula/addon-nodejs","last_synced_at":"2025-08-16T06:32:09.411Z","repository":{"id":24734504,"uuid":"28146812","full_name":"OpenNebula/addon-nodejs","owner":"OpenNebula","description":"OpenNebula Nodejs XMLRPC API client.","archived":false,"fork":false,"pushed_at":"2018-12-04T23:02:11.000Z","size":39,"stargazers_count":17,"open_issues_count":4,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-09T12:45:58.466Z","etag":null,"topics":["javascript","node","nodejs","opennebula"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenNebula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-17T17:05:37.000Z","updated_at":"2024-01-09T09:24:16.000Z","dependencies_parsed_at":"2022-09-18T20:52:17.433Z","dependency_job_id":null,"html_url":"https://github.com/OpenNebula/addon-nodejs","commit_stats":null,"previous_names":["apocas/node-one"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/OpenNebula/addon-nodejs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Faddon-nodejs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Faddon-nodejs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Faddon-nodejs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Faddon-nodejs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenNebula","download_url":"https://codeload.github.com/OpenNebula/addon-nodejs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenNebula%2Faddon-nodejs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270677643,"owners_count":24626805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","node","nodejs","opennebula"],"created_at":"2024-12-16T19:41:57.378Z","updated_at":"2025-08-16T06:32:09.179Z","avatar_url":"https://github.com/OpenNebula.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# addon-nodejs\n\n[OpenNebula](http://opennebula.org) XMLRPC Nodejs client.\n\n## Installation\n\n`npm install opennebula`\n\n## Usage\n\n* Input options are directly passed to OpenNebula. Check [OpenNebula XMLRPC API documentation](http://docs.opennebula.org/4.10/integration/system_interfaces/api.html) for more details.\n* Return values are unchanged from OpenNebula, official documentation will also apply to them.\n* Check the tests and examples folder for more examples.\n\n### Getting started\n\nTo use `opennebula` first you need to instantiate it:\n\n``` js\nvar OpenNebula = require('opennebula');\nvar one = new OpenNebula('user:hash', 'http://myone.one:2633/RPC2');\n\none.version(function(err, data) {\n  console.log(data);\n});\n//...\n```\n### Manipulating a VM:\n\n``` js\n// create a vm entity. does not query API\nvar vm = one.getVM(122);\n\n// query API for vm info\nvm.info(function (err, data) {\n  console.log(data);\n});\n\nvm.action('reboot', function(err, data) {\n  console.log(data);\n});\n\n//...\n```\n\n``` js\nvar template = one.getTemplate(4);\n\ntemplate.instantiate('test_one', undefined, undefined, function(err, vm) {\n  vm.action('delete', function(err, data) {\n    console.log(data);\n  });\n});\n\n//...\n```\n\n``` js\none.createVM('GRAPHICS=[TYPE=\"vnc\",LISTEN=\"0.0.0.0\"]\\nMEMORY=\"1024\"\\n FROM_APP=\"53e767ba8fb81d6a69000001\"\\nVCPU=\"1\"\\nFROM_APP_NAME=\"CentOS 6.5 - KVM\"\\nOS=[ARCH=\"x86_64\"]\\n NIC=[NETWORK=\"private\"]\\nLOGO=\"images/logos/centos.png\"\\nCPU=\"0.5\"\\n DISK=[IMAGE=\"CentOS-6.5-one-4.8\",IMAGE_UNAME=\"oneadmin\"]\\n', false, function(err, vm) {\n\n  vm.action('delete', function(err, data) {\n    console.log(data);\n  });\n});\n\n//...\n```\n\n## Spec\n\n### OpenNebula\n\n* one.version(callback)\n* one.config(callback)\n* one.getVM(id)\n* one.createVM(template, state, callback)\n* one.getVMs(callback, userFilter, startID, endID, stateFilter)\n* one.getHost(id)\n* one.createHost(hostname, immad, vmmad, vnmad, cluster, callback)\n* one.getHosts(callback)\n* one.createTemplate(template, callback)\n* one.getTemplate(id)\n* one.getTemplates(callback, userFilter, startID, endID)\n* one.createCluster(name, callback)\n* one.getCluster(id)\n* one.getClusters(callback)\n* one.createGroup(name, callback)\n* one.getGroup(id)\n* one.getGroups(callback)\n* one.createVNet(template, cluster, callback)\n* one.getVNet(id)\n* one.getVNets(callback, userFilter, startID, endID)\n* one.createUser(username, password, driver, callback)\n* one.login(username, token, period, callback)\n* one.getUser(id)\n* one.getUsers(callback)\n* one.createDatastore(template, cluster, callback)\n* one.getDatastore(id)\n* one.getDatastores(callback)\n* one.createImage(template, datastore, callback)\n* one.getImage(id)\n* one.getImages(callback, userFilter, startID, endID)\n* one.createZone(template, callback)\n* one.getZone(id)\n* one.getZones(callback)\n* one.createDocument(template, type, callback)\n* one.getDocument(id)\n* one.getDocuments(callback, userFilter, startID, endID)\n\n### VM\n\n* vm.info(callback)\n* vm.monitoring(callback)\n* vm.action(action, callback)\n* vm.deploy(host, datastore, enforce, callback)\n* vm.diskSnapshot(disk, name, type, imed, clone, callback)\n* vm.attachDisk(disk, callback)\n* vm.detachDisk(disk, callback)\n* vm.attachNIC(template, callback)\n* vm.detachNIC(nicid, callback)\n* vm.chown(owner, callback)\n* vm.chgrp(group, callback)\n* vm.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* vm.rename(name, callback)\n* vm.createSnapshot(name, callback)\n* vm.deleteSnapshot(name, callback)\n* vm.snapshotrevert(snapshot, callback)\n* vm.resize(template, enforce, callback)\n* vm.update(template, replace, callback)\n* vm.recover(recover, callback)\n* vm.migrate(host, live, enforce, datastore, callback)\n* vm.saveAsDisk(disk, imagename, imagetype, snapshot, callback)\n* vm.createDiskSnapshot(disk, snapshot, callback)\n* vm.updateConf(template, callback)\n* vm.revertDiskSnapshot(disk, snapshot, callback)\n* vm.deleteDiskSnapshot(disk, snapshot, callback)\n* vm.lock(level, callback)\n* vm.unlock(callback)\n\n### Datastore\n\n* datastore.info(callback)\n* datastore.update(content, whole, callback)\n* datastore.delete(callback)\n* datastore.chown(owner, callback)\n* datastore.chgrp(group, callback)\n* datastore.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* datastore.rename(name, callback)\n\n### Template\n\n* template.info(callback)\n* template.update(content, whole, callback)\n* template.instantiate(name, state, template, callback)\n* template.clone(name, callback)\n* template.delete(callback)\n* template.chown(owner, callback)\n* template.chgrp(group, callback)\n* template.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* template.rename(name, callback)\n\n### Cluster\n\n* cluster.info(callback)\n* cluster.update(content, whole, callback)\n* cluster.delete(callback)\n* cluster.rename(name, callback)\n* cluster.addHost(host, callback)\n* cluster.delHost(host, callback)\n* cluster.addDatastore(datastore, callback)\n* cluster.delDatastore(datastore, callback)\n* cluster.addVnet(vnet, callback)\n* cluster.delVnet(vnet, callback)\n\n### Document\n\n* document.info(callback)\n* document.update(content, whole, callback)\n* document.clone(name, callback)\n* document.delete(callback)\n* document.chown(owner, callback)\n* document.chgrp(group, callback)\n* document.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* document.rename(name, callback)\n\n### Group\n\n* group.info(callback)\n* group.update(content, whole, callback)\n* group.delete(callback)\n* group.quota(template, callback)\n* group.addProvider(group, zone, cluster, callback)\n* group.delProvider(group, zone, cluster, callback)\n\n### Host\n\n* host.info(callback)\n* host.enable(callback)\n* host.disable(callback)\n* host.update(template, merge, callback)\n* host.delete(callback)\n* host.rename(name, callback)\n* monitoring(callback)\n* allocate(hostname, manager, vm, cluster, callback)\n* setStatus(status, callback)\n\n### Image\n\n* image.info(callback)\n* image.update(content, whole, callback)\n* image.clone(name, callback)\n* image.delete(callback)\n* image.chown(owner, callback)\n* image.chgrp(group, callback)\n* image.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* image.rename(name, callback)\n* image.persistent(persistent, callback)\n* image.chtype(type, callback)\n* image.enable(callback)\n* image.disable(callback)\n* image.lock(level, callback)\n* image.unlock(callback)\n\n### User\n\n* user.info(callback)\n* user.update(content, whole, callback)\n* user.delete(callback)\n* user.chgrp(group, callback)\n* user.passwd(password, callback)\n* user.chauth(driver, password, callback)\n* user.quota(template, callback)\n* user.addgroup(group, callback)\n* user.delgroup(group, callback)\n\n### VNet\n\n* vnet.info(callback)\n* vnet.update(content, whole, callback)\n* vnet.addRange(content, callback)\n* vnet.delRange(range, callback)\n* vnet.freeRange(range, callback)\n* vnet.reserve(template, callback)\n* vnet.updateRange(template, callback)\n* vnet.hold(template, callback)\n* vnet.release(template, callback)\n* vnet.delete(callback)\n* vnet.chown(owner, callback)\n* vnet.chgrp(group, callback)\n* vnet.chmod(user_use, user_manage, user_admin, group_use, group_manage, group_admin, other_use, other_manage, other_admin, callback)\n* vnet.rename(name, callback)\n\n### Zone\n\n* zone.info(callback)\n* zone.update(content, whole, callback)\n* zone.delete(callback)\n* zone.rename(name, callback)\n\n## Tests\n\nTests are implemented using `mocha` and `chai`. Run them with `npm test`.\n\n## Examples\n\nCheck the examples folder for more specific use cases examples.\n\n## License\n\nPedro Dias - [@pedromdias](https://twitter.com/pedromdias)\n\nLicensed under the Apache license, version 2.0 (the \"license\"); You may not use this file except in compliance with the license. You may obtain a copy of the license at:\n\n    http://www.apache.org/licenses/LICENSE-2.0.html\n\nUnless required by applicable law or agreed to in writing, software distributed under the license is distributed on an \"as is\" basis, without warranties or conditions of any kind, either express or implied. See the license for the specific language governing permissions and limitations under the license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopennebula%2Faddon-nodejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopennebula%2Faddon-nodejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopennebula%2Faddon-nodejs/lists"}