{"id":424,"date":"2014-02-14T11:24:00","date_gmt":"2014-02-14T11:24:00","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/2014\/02\/14\/a-wrapper-over-linode-python-api-bindings\/"},"modified":"2025-11-21T20:32:41","modified_gmt":"2025-11-21T15:02:41","slug":"a-wrapper-over-linode-python-api-bindings","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2014\/02\/14\/a-wrapper-over-linode-python-api-bindings\/","title":{"rendered":"A wrapper over linode python API bindings"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left;\">\n<p>Recently I&#8217;ve been working on automating the nodes creation on our <a href=\"https:\/\/linode.com\/\" target=\"_blank\" rel=\"noopener\">Linode <\/a>infrastructure, in the process I came across the <a href=\"https:\/\/www.linode.com\/api\/\" target=\"_blank\" rel=\"noopener\">Linode API<\/a> and it&#8217;s bindings. Though they were powerful but lacks at some places i.e:<\/p>\n<ol style=\"text-align: left;\">\n<li>In case of Linode CLI, while creating a linode you have to enter the root password so you can&#8217;t achieve full automation. Also I was not able to find an option to add private ip to the linode<\/li>\n<li>In case of Linode API python binding you can&#8217;t straight away create a running linode machine.<\/li>\n<\/ol>\n<p>Recently I&#8217;ve launched a new GitHub project, this project is a wrapper over existing python bindings of linode and will try to ease out the working with linode api. Currently using this project you can create a linode with 3 lines of code<br \/>\n<span style=\"font-size: x-small;\"><span style=\"font-family: Verdana, sans-serif;\">from linode import Linode <\/span><\/span><br \/>\n<span style=\"font-size: x-small;\"><span style=\"font-family: Verdana, sans-serif;\">linode=Linode(&#8216;node_identifier&#8217;)<\/span><\/span><br \/>\n<span style=\"font-size: x-small;\"><span style=\"font-family: Verdana, sans-serif;\">linode.create() <\/span><\/span><\/p>\n<\/div>\n<p>You just need to have a property file<i>,\/data\/linode\/linode.properties:<\/i><\/p>\n<div style=\"text-align: left;\"><span style=\"font-size: x-small;\">[DEFAULT]<br \/>\nUBUNTU_DIST=Ubuntu 12.04<br \/>\nKERNEL_LABEL=Latest 64 bit<br \/>\nDATACENTER_LABEL=Dallas<br \/>\nPLAN_ID=1024<br \/>\nROOT_SSH_KEY=<br \/>\nLINODE_API=<\/span><\/div>\n<div style=\"text-align: left;\"><\/div>\n<div style=\"text-align: left;\"><span style=\"font-size: x-small;\">\u00a0<\/span>The project is still in development, if someone wants to contribute or have any suggestions you are most welcome.<\/div>\n<div style=\"text-align: left;\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Recently I&#8217;ve been working on automating the nodes creation on our Linode infrastructure, in the process I came across the Linode API and it&#8217;s bindings. Though they were powerful but lacks at some places i.e: In case of Linode CLI, while creating a linode you have to enter the root password so you can&#8217;t achieve &hellip; <a href=\"https:\/\/opstree.com\/blog\/2014\/02\/14\/a-wrapper-over-linode-python-api-bindings\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;A wrapper over linode python API bindings&#8221;<\/span><\/a><\/p>\n","protected":false},"author":171775670,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474,1892878],"tags":[30871489,69816,185240932,768739308,768739303,768739285],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-6Q","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/424"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/171775670"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":5,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":30017,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/424\/revisions\/30017"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}