Windows Cloudmesh Development Environment¶
It is trivial to set up cloudmesh on Windows.
For development we recommend that you do not use conda,but regular python. conda has lots of features that we will not use and do not want to rely on. Especially when we develop for containers or th cloud where we do not want to waste storage space of hundreds of packages that we will never use.
Here our recommended install
install emacs as it is a real good editor, that you may want to use
make sure to add a shortcut to runemacs so you can start it quickly
install gitforwindows from
Make sure to select an editor that you are comfortable with for commenting on your commits. (As lots of us like emacs, you can now see why we installed emacs first).
Now install python from
Next we create a python virtual environment so we do not effect your local python install. This is real important.
python -m venv ENV3
in every terminal in which you work, you need to make sure you start this environment with
ENV3\Scripts\activate.bat
So please do it now. You will see an
(ENV3)
at the beginning of the prompt, so it is easy to see that you have done it.Now, let us update pip
pip install --user pip -U
Next we install an easy
cloudmesh-installer
program that we use to clone the cloudmesh repositoriespip install cloudmesh-installer
Let us check out the needed repositories. Cloudmesh is distributed in bundles for development. One of the most comprehensive bundles is the
storage
bundles. Let us clone it withmkdir cm cd cm cloudmesh-installer git clone storage
Do a
dir
and you will see something like(ENV3) C:\Users\yourname\cm>dir Volume in drive C has no label. Volume Serial Number is B215-C79C Directory of C:\Users\blue\cm 05/13/2019 12:09 PM <DIR> . 05/13/2019 12:09 PM <DIR> .. 05/13/2019 12:06 PM <DIR> cloudmesh-box 05/13/2019 12:06 PM <DIR> cloudmesh-cloud 05/13/2019 12:06 PM <DIR> cloudmesh-cmd5 05/13/2019 12:06 PM <DIR> cloudmesh-common 05/13/2019 12:06 PM <DIR> cloudmesh-inventory 05/13/2019 12:06 PM <DIR> cloudmesh-manual 05/13/2019 12:06 PM <DIR> cloudmesh-storage 05/13/2019 12:06 PM <DIR> cloudmesh-sys 0 File(s) 0 bytes 11 Dir(s) 965,946,884,096 bytes free
If you like to explore other bundles, you can do this with
(ENV3) C:\Users\blue\cm>cloudmesh-installer bundles
Which will return you a list of the different development combinations. Please note that they are here just for developer convenience and you do not have to think about which bundles you need. Get in contact with us to find out mor. We even can create you a custom bundle. If you are a user, you naturally will be able to use a pip install once the package has been released and the dependencies will be discovered automatically.
cms:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-manual
cloud:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-inventory cloudmesh-manual
batch:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-inventory cloudmesh-batch cloudmesh-manual
storage:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-storage cloudmesh-inventory cloudmesh-box cloudmesh-manual
source:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-storage cloudmesh-inventory cloudmesh-emr cloudmesh-comet
cloudmesh-openapi cloudmesh-nn cloudmesh-nist cloudmesh-conda
cloudmesh-azure cloudmesh-aws cloudmesh-box cloudmesh-redshift
cloudmesh-manual
web:
about get cloudmesh-github.io cloudmesh-manual
community:
cloudmesh-community.github.io
flow:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-inventory cloudmesh-flow cloudmesh-manual
emr:
cloudmesh-common cloudmesh-cmd5 cloudmesh-sys cloudmesh-cloud
cloudmesh-inventory cloudmesh-emr cloudmesh-manual
conda:
cloudmesh-conda
all:
cloudmesh-box cloudmesh-cloud cloudmesh-cmd5 cloudmesh-common
cloudmesh-inventory cloudmesh-manual cloudmesh-storage cloudmesh-sys
cloudmesh:
cloudmesh-box cloudmesh-cloud cloudmesh-cmd5 cloudmesh-common
cloudmesh-inventory cloudmesh-manual cloudmesh-storage cloudmesh-sys
Development with pyCharm¶
Pycharm is a great editor with many features. It is worthwhile to spend
some time with it and explore. Please install pycharm community
edition from
Start it up and say Open Project. Locate the cm
directory and open
it. All repositories will be imported and you can use them for
development.
Next we want to configure the python interpreter. Go to
File->Settings->Project:cm->Project Interpreter
Click on project interpreter and select All
add the interpreter with
the location
C:\USers\yourusername\venv
It will add your interpreter to pycharm
Github use¶
cloudmesh-installer is best used with ssh keys. Generate one in the terminal while saying
ssh-keygen
It is very important that you do not create a password less key out of security reasons. If we find out you do, you will get all repository access revoked in case you have write access. Look at the public key with in gitbash
$ cat ~/.ssh/id_rsa.pub
and upload the key to
As you can directly commit from pycharm you can set up git hub access also in pycharm.
Git Pull requests¶
In case you do not have direct access to github cloudmesh, you can create yourself a local clone and create pull requests. Please note it is of utmost important that you do not wait for 10 weeks with your pull request, we want to see your git updates on a weekly basis.
Compiling the code¶
To avoid compiling the code all the time you can visit each directory and issue the command
pip install -e .
or you can apply it an a bundle with
cloudmesh-installer install storage -e
where we assume that your bundle is storage. This will take quire a while as we install lots of libraries to give you access to lots of clouds.
To see if this installed cloudmesh you can do
cms help
Makefile¶
Install Linux subsystem
Install ubuntu
sudo apt update
sudo apt install -y make
sudo apt install -y emacs
sudo apt install -y git
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt install -y python3.7
python -m venv ENV3 --without-pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py --user
python3.7 --version
pip --version
Setup git¶
Next configure your github identity. It is important you do this or your may not get proper credit as we obtain user information form github
git config --global user.name "user_name"
git config --global user.email "email_id"
git config --global core.editor emacs
.bashrc¶
At the end of your .bashrc place the following lines so that your environment will be always activated when you start a new ubuntu terminal.
emacs ~/.bashrc
Add the following line to it so whenever you start the the ubuntu shell, it just jumps right into your development directory and replace user with your username
# the default ls has some uggly colors, so lets improve this
export LS_COLORS="$LS_COLORS:ow=1;34:tw=1;34:"
# lets us make python 3.7 available via python
alias python='python3.7'
# let us cd to the cloudmesh working directory upon login
cd /mnt/c/Users/<USER>/cm
# set ENV3 to be the default python
alias ENV3="source ~/ENV3/bin/activate"
ENV3
Pycharm different terminal¶
go to Settings->tools->terminal
original:
cmd.exe
gitbash:
"C:\Users\USERNAME\AppData\Local\Programs\Git\bin\sh.exe " –login -i
ubuntu:
C:\Users\<my_user>\AppData\Local\Microsoft\WindowsApps\ubuntu.exe