【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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/302483.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己写的组件中使用v-model双向绑定

这里的时间选择表单是我写的一个组件&#xff0c;我想用v-model获取到实时的ref值。 代码&#xff1a; //父组件<TimePickerModal v-model:value"time" label-text"计划客面时间" /> const time ref(2024-04-09 15:20:00);//子组件<template>…

JRT判断数据是否存在优化

有一种业务情况类似下图&#xff0c;质控能做的项目是仪器关联的项目。这时候维护质控物时候开通项目时候要求加载仪器项目里面的项目&#xff08;没有开通的子业务数据的部分&#xff09;。对右边已经开通的部分要求加载仪器项目里面的项目&#xff08;有开通业务子数据的部分…

【C语言】扫雷小游戏

文章目录 前言一、游戏玩法二、创建文件test.c文件menu()——打印菜单game()——调用功能函数&#xff0c;游戏的实现main()主函数 game.c文件初始化棋盘打印棋盘随机布置雷的位置统计周围雷的个数展开周围一片没有雷的区域计算已排查位置的个数排查雷(包括检测输赢): game.h文…

基于ssm乐购游戏商城系统论文

摘 要 随着社会的发展&#xff0c;游戏品种越来越多&#xff0c;计算机的优势和普及使得乐购游戏商城系统的开发成为必需。乐购游戏商城系统主要是借助计算机&#xff0c;通过对信息进行管理。减少管理员的工作&#xff0c;同时也方便广大用户对个人所需信息的及时查询以及管理…

推荐一款自动化测试神器---Katalon Studio

Katalon Studio介绍 Katalon Studio 是一款在网页应用、移动和网页服务方面功能强大的自动化测试解决方案。基于 Selenium 和 Appium框架&#xff0c;Katalon Studio集成了这些框架在软件自动化方面的优点。这个工具支持不同层次的测试技能集。非程序员也可以快速上手一个自动…

maven profiles 配置

1.pom.xml中的文件配置 <profiles><profile> <!-- 开发/本地 默认激活 --><id>dev</id><activation><activeByDefault>true</activeByDefault></activation> <!--默认启用的是dev环境配置--><properties>&…

川川本人著作《Python3编程从零基础到实战》

在数字时代&#xff0c;Python已经成为了一种极为强大和灵活的编程语言&#xff0c;它的应用范围从网站开发到数据科学&#xff0c;再到机器学习和人工智能。无论你是一名编程新手还是希望深化已有技能的开发者&#xff0c;《Python3编程从零基础到实战》将成为你通往Python世界…

海外盲盒系统开发,盲盒出口成为企业新机遇

随着盲盒的兴起&#xff0c;国内消费市场形成了万物皆可盲盒的态势。并且&#xff0c;盲盒自带社交属性&#xff0c;也成为了年轻人的社交神器。 除了在国内&#xff0c;盲盒在海外也掀起了一股热潮&#xff0c;呈现出了爆发式增长形势&#xff0c;国内热门盲盒企业也出口到了…

DSP实时计算平台设计方案:912-基于6U CPCIe的双路光纤图像DSP实时计算平台

基于6U CPCIe的双路光纤图像DSP实时计算平台 一、设备概述 设备基于6U CPCIe架构&#xff0c;通过背板交换实现4片信号处理板卡的互联传输&#xff0c;每个信号处理板卡支持双TMS320C6678&#xff0c;支持2路光纤的图像处理&#xff0c;实现FPGA的预处理和备份工…

初识Python(注释、编码规范、关键字...)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

最新剧透前沿信息GPT-5或将今年发布

GPT2 很糟糕 &#xff0c;GPT3 很糟糕 &#xff0c;GPT4 可以 &#xff0c;但 GPT5 会很好。 PS:GPT2 很糟糕,3 很糟糕,4 可以,5 很可以。 如果想升级GPT4玩玩&#xff0c;地址 今年发布的具有推理功能的 GPT5不断发展&#xff0c;就像 iPhone 一样 Sam Altman 于 17 日&am…

【MATLAB高级编程】第二篇 | 元胞数组(cell)操作

【第二篇】元胞数组&#xff08;cell&#xff09;操作 1. 创建元胞数组cell2. 查看和修改cell内的元素值3. 高级操作: 可视化作图显示cell内的内容4. 把矩阵转换成单元数组5. 把单元数组转换成结构体变量 你好&#xff01; 欢迎进入 《MATLAB高级编程》 文章系列 &#xff0c;每…

Linux基础篇:Linux第三方软件仓库——可以让Linux变得有趣的软件仓库

Linux第三方软件仓库——可以让Linux变得有趣的软件仓库 一、epel源介绍 EPEL&#xff08;Extra Packages for Enterprise Linux&#xff09;源是一个由Fedora项目组维护的第三方软件仓库&#xff0c;为企业级Linux发行版&#xff08;如Red Hat Enterprise Linux&#xff08;…

IDEA中连接SQLserver数据库(DataGrip相同连接)

IDEA中连接SQLserver数据库(DataGrip相同连接) 1. 打开IDEA-database组件 2. 新建SQL server连接 3. 填写信息进行连接 填写连接名称&#xff0c;连接主机IP&#xff0c;端口&#xff0c;默认端口1433&#xff0c;数据库用户名密码&#xff0c;默认数据库用户名是sa 第一次连接…

(学习日记)2024.04.09:UCOSIII第三十七节:事件函数接口

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Macos 部署自己的privateGpt(2024-0404)

Private Chatgpt 安装指引 https://docs.privategpt.dev/installation/getting-started/installation#base-requirements-to-run-privategpt 下载源码 git clone https://github.com/imartinez/privateGPT cd privateGPT安装软件 安装&#xff1a; Homebrew /bin/bash -c…

【Linux】磁盘与文件系统管理

目录 一、 磁盘结构 1. 数据结构 2. 物理结构 3. 硬盘的接口类型 二、 如何使用Linux中的磁盘 三、 文件系统 四、 磁盘分区 1. MBR分区 2. 分区的优缺点 3. 磁盘及分区的管理工具 五、格式化与挂载 1. 格式化 2. 挂载 六、实例演示 1. 演示分区格式化挂载 2. …

CICD流水线 发布应用到docker镜像仓库

准备工作 1.先注册免费的镜像仓库 复制链接: https://cr.console.aliyun.com/cn-beijing/instances 实施 1. 新建流水线&#xff0c;选择模板 2.添加流水线源&#xff0c;及是你的代码仓库, 选择对应分支. 3.代码检查以及单元测试&#xff0c;这个步骤可以不用动它. 4. …

【Android】App通信基础架构相关类源码解析

应用通信基础架构相关类源码解析 这里主要对Android App开发时&#xff0c;常用到的一些通信基础类进行一下源码的简单分析&#xff0c;包括&#xff1a; Handler&#xff1a;处理器&#xff0c;与某个Looper&#xff08;一个线程对应一个Looper&#xff09;进行关联。用于接…

基于SpringBoot+Vue的大学生体质测试管理系统(源码+文档+部署+讲解)

一.系统概述 大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息&#xff0c;通过留言区互动更方便。本系统采用了B/S体系的结构&#xff0c;使用了java技术以及MYSQL作为后台数据库进行开发。系统主要分为系统管理员、教师和用户三个部分&#xff0c;系统管理员主…