Skip to main content

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 Credential as (clientSecret)
  • The registered app configured 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.txt and requirements.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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_az_vm_controller_xethhung12-0.0.1.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_az_vm_controller_xethhung12-0.0.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file py_az_vm_controller_xethhung12-0.0.1.tar.gz.

File metadata

File hashes

Hashes for py_az_vm_controller_xethhung12-0.0.1.tar.gz
Algorithm Hash digest
SHA256 d7f061d8595acc36efd24daf34fb8df7d567b237aabc34f9f96aedc17c196d0f
MD5 896cc790f13890877c907dde610ceb9b
BLAKE2b-256 8cea308c91c0a6d2bcdab06e0d04c43c8cac734ee0e9856eaca6b2c08600b3b6

See more details on using hashes here.

File details

Details for the file py_az_vm_controller_xethhung12-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for py_az_vm_controller_xethhung12-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 259d85d199af240924e7b0e6f75f5aa45fd5f364afa2eeecf02c2d8e8eb870e2
MD5 2bd38d7cd4943bf08616b287d2ffea6f
BLAKE2b-256 c4f00f75158dba2dc7b1c5c39d3630ed80d8006613d004c6130d3eb335d0c67e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.2

2 files

This release

0.0.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page