当前位置: 首页 > news >正文

【azure笔记 1】容器实例管理python sdk封装

容器实例管理python sdk封装

测试结果

在这里插入图片描述

说明

  • 这是根据我的需求写的,所以有些参数是写死的,比如cpu核数和内存,你可以根据你的需要自行修改。
  • 前置条件:
    当前环境已安装python3.8以上版本和azure cli并且已经登陆到你的账户

依赖安装

requirments.txt

azure-mgmt-resource
azure-identity
azure-mgmt-containerinstance
pip install -r requirments.txt

PS: 安装不上就多安几次或使用魔法

containerhelpor.py

from azure.identity import DefaultAzureCredential
from azure.mgmt.containerinstance import ContainerInstanceManagementClient
from azure.mgmt.containerinstance.models import ContainerGroup, Container, ContainerPort, IpAddress, ResourceRequests, ResourceRequirementsclass ContainerHelpor:def create(subscription_id:str, resource_group:str, location:str, container_name:str, container_image:str, no_port:int, protocol: str='TCP'):# 使用默认 Azure 凭据进行验证credentials = DefaultAzureCredential()# 创建容器实例管理客户端实例container_client = ContainerInstanceManagementClient(credentials, subscription_id)# 容器端口和 IP 地址配置port1 = ContainerPort(port=no_port, protocol=protocol)ports = [port1]# port2 = ContainerPort(port=no_port + 1, protocol=protocol)# ports = [port1, port2]ip_address = IpAddress(ports=ports, type='Public')# 容器资源请求requests = ResourceRequests(memory_in_gb=1.0, cpu=1.0)requirements = ResourceRequirements(requests=requests)# 创建容器container = Container(name=container_name,image=container_image,resources=requirements,ports=ports)# 容器组(容器实例)container_group = ContainerGroup(location=location,containers=[container],os_type='Linux',ip_address=ip_address)# 创建容器实例container_group_result = container_client.container_groups.begin_create_or_update(resource_group, container_name, container_group)print(f"Container instance {container_name} created successfully.")return container_group_resultdef stop(subscription_id:str, resource_group:str, container_name:str):# 使用默认凭证进行身份验证credential = DefaultAzureCredential()# 创建容器实例管理客户端client = ContainerInstanceManagementClient(credential, subscription_id)# 停止容器实例client.container_groups.stop(resource_group, container_name)print(f"Container instance {container_name} stoped successfully.")def start(subscription_id:str, resource_group:str, container_name:str):# 使用默认凭证进行身份验证credential = DefaultAzureCredential()# 创建容器实例管理客户端client = ContainerInstanceManagementClient(credential, subscription_id)# 停止容器实例client.container_groups.begin_start(resource_group, container_name)print(f"Container instance {container_name} started successfully.")def remove(subscription_id:str, resource_group:str, container_name:str):# 创建 Azure 认证凭证credentials = DefaultAzureCredential()# 创建 ContainerInstanceManagementClientcontainer_client = ContainerInstanceManagementClient(credentials, subscription_id)# 删除容器实例container_client.container_groups.begin_delete(resource_group, container_name)print(f"Container instance {container_name} deleted successfully.")def query_ip(subscription_id:str, resource_group:str, container_name:str):credential = DefaultAzureCredential()client = ContainerInstanceManagementClient(credential, subscription_id)container_group = client.container_groups.get(resource_group, container_name)return  container_group.ip_address

测试代码

import sys
import os
import time# 此处根据你的项目选择包含目录以及导入导出模块
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
sys.path.append(parent_dir)
from core.containerhelpor import ContainerHelpordef main():print("containerhelpor test begin")# 这里填你的订阅idsub_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"container_name = 'test' # 你的容器名称resource_group = 'jp' # 你的资源组组名print("ContainerHelpor.create begin")ContainerHelpor.create(subscription_id=sub_id,no_port=8080,resource_group=resource_group,location = 'Japan West',container_name = container_name,# 镜像名称以及tag默认指向dockerhub的latsetcontainer_image = '' )print("ContainerHelpor.stop begin")ContainerHelpor.stop(sub_id,resource_group,container_name)print("ContainerHelpor.start begin")is_not_start = Trueretry_cnt = 0while is_not_start:try:ContainerHelpor.start(sub_id,resource_group,container_name)is_not_start = Falseexcept Exception as e: time.sleep(2)retry_cnt += 1if retry_cnt > 3:print(e)ContainerHelpor.remove(sub_id,resource_group,container_name)print("containerhelpor test failed")returnprint("ContainerHelpor.query_ip begin")retry_cnt = 0ip = Nonewhile ip is None:ipaddr = ContainerHelpor.query_ip(sub_id,resource_group,container_name)ip = ipaddr.iptime.sleep(2)retry_cnt += 1if retry_cnt > 10:print("query_ip failed, try it later")breakprint(ip)print("ContainerHelpor.remove begin")ContainerHelpor.remove(sub_id,resource_group,container_name)print("containerhelpor test pass")
if __name__ == "__main__":main()

相关文章:

【azure笔记 1】容器实例管理python sdk封装

容器实例管理python sdk封装 测试结果 说明 这是根据我的需求写的,所以有些参数是写死的,比如cpu核数和内存,你可以根据你的需要自行修改。前置条件: 当前环境已安装python3.8以上版本和azure cli并且已经登陆到你的账户 依赖安…...

Nestjs 中定义既可以捕获错误(Error)和又可以异常(Exception)的过滤器

Nestjs 中,使用基于 HttpException 定义过滤器的话,只能捕获 Http 带状态码(statusCode)的 Exception,不能捕获 throw new Error(‘xxx’) 抛出的错误。 以下是使用实现 ExceptionFilter 接口定义的一个不特定于平台(express 或 fastify,即无论使用这两个web服务框架的…...

GitHub 仓库 (repository) Branch - SSH clone URL - Clone in Desktop - Download ZIP

GitHub 仓库 [repository] Branch - SSH clone URL - Clone in Desktop - Download ZIP 1. Branch2. SSH clone URL3. Clone in Desktop4. Download ZIPReferences 1. Branch 显示当前分支的名称。从这里可以切换仓库内分支,查看其他分支的文件。 2. SSH clo…...

Training - 使用 WandB 配置 可视化 模型训练参数

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/137529140 WandB (Weights&Biases) 是轻量级的在线模型训练可视化工具,类似于 TensorBoard,可以帮助用户跟踪…...

N1922A是德科技N1922A功率传感器

181/2461/8938产品概述: N192XA 传感器是首款通过将直流参考源和开关电路集成到功率传感器中来提供内部调零和校准的传感器。此功能消除了与使用外部校准源相关的多个连接,从而最大限度地减少了连接器磨损、测试时间和测量不确定性。 连接到 DUT 时进行…...

最简洁的Docker环境配置

Docker环境配置 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Mac、Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不…...

Docker内更新Jenkins详细讲解

很多小伙伴在Docker中使用Jenkins时更新遇到困难,本次结合自己的实际经验,详细讲解。根据官网Jenkins了解以下内容: 一、Jenkins 是什么? Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测…...

基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1遗传算法与模拟退火算法简介 4.2 GSAHO算法应用于JSSP 5.完整程序 1.程序功能描述 车间作业调度问题(Job Shop Scheduling Problem, JSSP)是一种典型的生产调度问…...

Mac 安装 brew brew cask 遇到的问题以及解决办法

安装Homebrew和Homebrew Cask是在Mac上管理软件包的常用方法。虽然大多数情况下安装这两个工具是比较简单的,但有时候也可能遇到一些问题。下面是一些常见的问题以及解决办法: 问题1:无法安装Homebrew 解决办法: 1.确保你的Mac已连…...

Vitalik Buterin香港主旨演讲:协议过去10年迅速发展,但存在效率、安全两大问题

2024 香港 Web3 嘉年华期间,以太坊联合创始人 Vitalik Buterin 在由DRK Lab主办的“Web3 学者峰会 2024”上发表主旨演讲《Reaching the Limits of Protocol Design》。 他介绍到,2010年代,基于基本密码学的协议是哈希、签名。随后&#xff…...

【leetcode】大数相加

题目链接:415. 字符串相加 - 力扣(LeetCode) 计算两个大数的和,从末尾开始逐个字符相加,记录进位 class Solution { public:string addStrings(string num1, string num2) {int i num1.size() - 1, j num2.size() …...

数据检索的优化之道:B树与B+树的深度解析与应用探索

1、引言 在信息时代,数据检索的速度和效率对于任何依赖数据处理的系统来说都至关重要。无论是在线搜索引擎、数据库管理系统还是文件存储系统,快速准确地检索所需数据都是核心需求。传统的线性数据结构在处理大规模数据集时往往力不从心,因此…...

替换服务器的SSL证书有什么影响?

SSL证书是保护网站和用户数据安全的重要组成部分。然而,出于一些原因,网站管理员可能需要替换服务器的SSL证书。替换SSL证书可能会对网站的运行和安全产生一些影响。本文旨在介绍替换服务器SSL证书的影响和相关注意事项,帮助网站管理员更好地…...

java中可变参数和简单游戏

可变参数: 就是一种特殊形参,定义在方法,构造器的形参列表中,格式是:数据类型...参数名称 可变参数的好处: 灵活的接收数据 特点:可以不传数据给它,可以传一个数据或者多个数据给它…...

软考高级架构师:TCP/IP 协议 和 OSI 七层模型

一、AI 讲解 TCP/IP 协议族是一组计算机网络通信协议的集合,其中TCP和IP是两个核心协议。TCP/IP 协议族通常被用来参照互联网的基础通信架构。与之相对的OSI七层模型,是一个更为理论化的网络通信模型,它将网络通信分为七个层次。 TCP/IP 与…...

【微服务】------常见模型的分析与比较

DDD 分层架构 整洁架构 整洁架构又名“洋葱架构”。为什么叫它洋葱架构?看看下面这张图你就明白了。整洁架构的层就像洋葱片一样,它体现了分层的设计思想。 整洁架构最主要的原则是依赖原则,它定义了各层的依赖关系,越往里依赖越…...

C#实现HTTP上传文件的方法

/// <summary> /// Http上传文件 /// </summary> public static string HttpUploadFile(string url, string path) {// 设置参数HttpWebRequest request WebRequest.Create(url) as HttpWebRequest;CookieContainer cookieContainer new CookieContainer();reque…...

pdffactory pro 8注册码序列号下载 附教程

PdfFactory Pro可以说是一款行业专业且技术领先的的PDF虚拟打印机软件。其不仅占用系统内存小巧&#xff0c;功能强大&#xff0c;可支持用户无需使用Acrobat来创建Adobe PDF即可以进行PDF组件的创建和打印。同时&#xff0c;现在全新的PdfFactory Pro 8也正式上线来袭&#xf…...

软件供应链安全:寻找最薄弱的环节

在当今的数字时代&#xff0c;软件占据主导地位&#xff0c;成为全球组织业务和创新的支柱。它是差异化、项目效率、成本降低和竞争力背后的驱动力。软件决定了企业如何运营、管理与客户、员工和合作伙伴的关系&#xff0c;以及充分利用他们的数据。 挑战在于&#xff0c;当今…...

Training - Kubeflow 的 PyTorchJob 配置 DDP 分布式训练 (ncclInternalError)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137569332 Kubeflow 的 PyTorchJob 是 Kubernetes 自定义资源&#xff0c;用于在 Kubernetes 上运行 PyTorch 训练任务&#xff0c;是 K…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...