A small package targeting to help on python project packaging process
Project description
py_az_vm_controller
Introduction
This is simple library for doing remote turn on and off azure virtual machine.
The library requires the user to have
- Azure Subscription with Entra ID (Entra ID's app id as tenantID) for register new app (
registered app) for oauth login- App ID as clientId
- Creating
Credentialas (clientSecret)
- The
registered appconfigured to be able to perform- Microsoft.Compute/virtualMachines/read
- Microsoft.Compute/virtualMachines/instanceView/read
- Microsoft.Compute/virtualMachines/start/action
- Microsoft.Compute/virtualMachines/powerOff/action
Execution
This is a library rather then a executable problem. The execution will trigger the demo only
Run through python interpreter:
python -m py_az_vm_controller
Demo Code
import os
os.environ["using-j-vault-rest-server"]="localhost,7910,false,harden"
import py_az_vm_controller as project
from j_vault_http_client_xethhung12 import client
# Make sure you defined the system variables:
# * tenantId <--- The microsoft Entra Id
# * clientId <--- The client id of the app registered
# * clientSecret <--- The client secret of the app registered
# * subscriptionId <--- The subscription id of the VM
# * resourceGroupName <--- The resource group name of the VM
# * vmName <--- The name of the virtual machine
import time
def main():
client.load_to_env()
tenantId = os.getenv("tenantId")
clientId = os.getenv("clientId")
clientSecret = os.getenv("clientSecret")
subscriptionId = os.getenv("subscriptionId")
resourceGroupName = os.getenv("resourceGroupName")
vmName = os.getenv("vmName")
print(tenantId, clientId, clientSecret, subscriptionId, resourceGroupName, vmName)
azOAuth = project.AzOAuth(tenantId)
session = azOAuth.get_session(clientId, clientSecret)
vm = session.vm(subscriptionId, resourceGroupName, vmName)
if vm.isVMStopped():
print("Try power on the machine")
vm.powerOn()
while(True):
time.sleep(5)
print(vm.instanceState())
if vm.isVMRunning():
print("running finally")
break
time.sleep(10)
print("stopping machine")
vm.powerOff()
while(True):
time.sleep(5)
print(vm.instanceState())
if vm.isVMStopped():
print("stopped finally")
break
Development
The project requires python (3+ version) installed and pip ready for use on adding manage dependencies
Tools
| Name | Platform | Type | Description |
|---|---|---|---|
| install-dependencies.sh | shell | script | The scripts for installing depencies required |
| build.sh | shell | script | The scripts for build the package |
| build-and-deploy.sh | shell | script | The scripts for build and deploy the package |
- install-dependencies.sh
The script will install dependencies listed in
dev-requirements.txtandrequirements.txt. The first requirement file contains the dependencies for development like build and deploy tools. The second requirement file defined all required dependencies for the making the package works (actual dependencies).
Useful Scripts
Project Versioning
For version update in pyproject.toml.
This project use package xh-py-project-versioning to manipulate the project version.
Simple usage includes:
Base on current version, update the patch number with dev id
python -m xh_py_project_versioning --patch
In case current version is 0.0.1, the updated version will be 0.0.2-dev+000
To prompt the dev version to official version use command.
python -m xh_py_project_versioning -r.
Through the command, version 0.0.2-dev+000 will be prompt to 0.0.2 official versioning.
Base on current version, update the patch number directly
python -m xh_py_project_versioning --patch -d
In case current version is 0.0.1, the updated version will be 0.0.2
Base on current version, update the minor number directly
python -m xh_py_project_versioning --minor -d
In case current version is 0.0.1, the updated version will be 0.1.0
Base on current version, update the minor number directly
python -m xh_py_project_versioning --minor -d
In case current version is 0.0.1, the updated version will be 1.0.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_az_vm_controller_xethhung12-0.3.0.tar.gz.
File metadata
- Download URL: py_az_vm_controller_xethhung12-0.3.0.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95843f8309965b6efda7552f5cfa259d54e1cf59f707fd9b36b5ad153070356a
|
|
| MD5 |
e91c8d69c97dae1c0aedf34230f60edf
|
|
| BLAKE2b-256 |
285c220a604cc5f0508cf8e1b41e4ae2b714e8c1c036eb74fddc49fdef0c1503
|
File details
Details for the file py_az_vm_controller_xethhung12-0.3.0-py3-none-any.whl.
File metadata
- Download URL: py_az_vm_controller_xethhung12-0.3.0-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebdd5e78c27e2fcfc52eef5e63d7d12b3a78773b5388e58b26fbbc327162042d
|
|
| MD5 |
b070b90f34ab4540bab937f3d675a087
|
|
| BLAKE2b-256 |
0ebdf60f038687174c9e0892ce8acd4622b16186835c635b6a9c56a28bc6cd80
|