blob: 63626b4c30d5b7433632fc8be3a960a7144761dc [file] [log] [blame]
"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[387],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,o,a=function(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)n=r[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||r;return n?o.createElement(h,l(l({ref:t},u),{},{components:n})):o.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,l=new Array(r);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:a,l[1]=i;for(var c=2;c<r;c++)l[c]=n[c];return o.createElement.apply(null,l)}return o.createElement.apply(null,n)}m.displayName="MDXCreateElement"},60409:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>c});var o=n(87462),a=(n(67294),n(3905));const r={layout:"post",title:"What's coming in CloudMonkey v6.0.0",tags:["announcement"],slug:"what-s-coming-in-cloudmonkey"},l=void 0,i={permalink:"/blog/what-s-coming-in-cloudmonkey",editUrl:"https://github.com/apache/cloudstack-www/tree/main/blog/2019-03-19-what-s-coming-in-cloudmonkey.md",source:"@site/blog/2019-03-19-what-s-coming-in-cloudmonkey.md",title:"What's coming in CloudMonkey v6.0.0",description:"The original CloudMonkey was contributed to the Apache CloudStack project on 31",date:"2019-03-19T00:00:00.000Z",formattedDate:"March 19, 2019",tags:[{label:"announcement",permalink:"/blog/tags/announcement"}],hasTruncateMarker:!0,authors:[],frontMatter:{layout:"post",title:"What's coming in CloudMonkey v6.0.0",tags:["announcement"],slug:"what-s-coming-in-cloudmonkey"},prevItem:{title:"Announcing Apache CloudStack\xae 4.12.0.0",permalink:"/blog/announcing-apache-cloudstack-4-12"},nextItem:{title:"Announcing Apache CloudStack LTS Maintenance Release 4.11.2.0",permalink:"/blog/announcing-apache-cloudstack-lts-maintenance1"}},s={authorsImageUrls:[]},c=[],u={toc:c},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The original CloudMonkey was contributed to the Apache CloudStack project on 31\nOct 2012 under the Apache License 2.0. It is written in Python and shipped using\nthe Python CheeseShop, and since its inception has gone through several\nrefactors and rewrites. While this has worked well over the years, the\ninstallation and usage have been limited to just a few modern platforms due to\nthe dependency on Python 2.7, meaning it is hard to install on older\ndistributions such as CentOS6."),(0,a.kt)("p",null,"Over the past two years, several attempts have been made to make the code compatible across Python 2.6, 2.7 and 3.x. However, it proved to be a maintenance and release challenge \u2013 making it code compatible across all the platforms, all the Python versions and the varied dependency versions; whilst also keeping it easy to install and use. During late 2017, an experimental CloudMonkey rewrite called cmk was written in Go, a modern, statically typed and compiled programming language which could produce cross-platforms standalone binaries. Finally, in early 2018, after reaching a promising state the results of the experiment were shared with the community, to build support and gather feedback for moving the CloudMonkey codebase to Go and deprecate the Python version."),(0,a.kt)("br",null),"During 2018, two Go-based ports were written using two different readline and prompt libraries. The alpha / beta builds were shared with the community who tested them, reported bugs and provided valuable feedback (especially around tab-completion) which drove the final implementation. With the new rewrite CloudMonkey (for the first time) ships as a single executable file for Windows which can be easily installed and used having mostly the same user experience one would get on Linux or Mac OSX. The rewrite aims to maintain command-line tool backward compatibility as a drop-in replacement for the legacy Python-based CloudMonkey (i.e. shell scripts using legacy CloudMonkey can also use the modern CloudMonkey cmk). Legacy Python-based CloudMonkey will continue to be available for installation via pip but it will not be maintained moving forward.",(0,a.kt)("br",null),"CloudMonkey 6.0 requires a final round of testing and bug-fixing before the release process will commence. The beta binaries are available for testing ",(0,a.kt)("a",{href:"https://github.com/apache/cloudstack-cloudmonkey/releases"},"here"),".",(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("b",null,"# Major changes in CloudMonkey 6.0"),(0,a.kt)("br",null),"- Ships as standalone 32-bit and 64-bit binaries targeting Windows, Linux and Mac including ARM support (for example, to run on Raspberry Pi)",(0,a.kt)("br",null),"- Drop-in replacement for legacy Python-based CloudMonkey as a command line tool",(0,a.kt)("br",null),"- Interactive selection of API commands, arguments, and argument options",(0,a.kt)("br",null),"- JSON is the default API response output format",(0,a.kt)("br",null),"- Improved help docs output when \u2018-h\u2019 is passed to an API command",(0,a.kt)("br",null),"- Added new output format \u2018column\u2019 that outputs API response in a new columnar way like modern CLIs such as kubectl and docker",(0,a.kt)("br",null),"- Added new set option \u2018debug\u2019 to enable debug mode, set option \u2018display\u2019 renamed as \u2018output\u2019",(0,a.kt)("br",null),"- New CloudMonkey configuration file locking mechanism to avoid file corruption when multiple cmk instances run",(0,a.kt)("br",null),"- New configuration folder ~/.cmk to avoid conflict with legacy Python-based version",(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("br",null),(0,a.kt)("b",null,"# Features removed in CloudMonkey 6.0:"),(0,a.kt)("br",null),"- Removed XML output format.",(0,a.kt)("br",null),"- Removed CloudMonkey logging API requests and responses to a file.",(0,a.kt)("br",null),"- Coloured output removed.",(0,a.kt)("br",null),"- Removed set options: color (for coloured output), signatureversion and expires (no longer acceptable API parameters), paramcompletion (API parameter completion is not enabled by default), cache_file (the default cache file, now at ~/.cmk/cache ), history_file (the history file), log_file (API log file).")}p.isMDXComponent=!0}}]);