python调用openstack组件

1,创建flavor

import requests
import json
import os     #调用三个需要的模块
headers = {"a": "b"}  
data = {                   #设置认证的数据元
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
#然后指定头部,这里数据元给keystone的认证所以链接时keystone的auth下的tokens
headers["X-Auth-Token"] = requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data = {    #然后用flavor资源的数据覆盖data
    "flavor": {
        "name": "test_flavor",
        "id": "666",
        "ram": 2048,
        "disk": 20,
        "vcpus": 2
    }
}
#这次请求是给nova的链接下创建flavor资源的。
requests.post("http://controller:8774/v2.1/flavors",headers=headers,json=data).json()
print("创建成功")

2,创建镜像

[root@controller python]# cat image.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "name": "qwe",
    "min-disk": "1",
    "min-ram": "1024",
    "container_format": "bare",
    "disk_format": "qcow2",
    "visibility": "public"
}
a=requests.post("http://controller:9292/v2/images",headers=headers,json=data).json()
headers["Content-Type"]="application/octet-stream"
requests.put(f"http://controller:9292{a['file']}",headers=headers,data=open('/root/CentOS-7-x86_64-2009.qcow2','rb')).status_code
print("创建成功")

3,创建用户

[root@controller python]# cat user.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "user": {
        "name": "test",
        "password": "000000",
        "domain_id": "fe9f8c850d0241a6a01bb0656ba2b74c"
    }
}
requests.post("http://controller:5000/v3/users",headers=headers,json=data).json()
print("创建完毕")

4,创建卷

[root@controller python]# cat volume.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "volume": {
       "name": "rrr",
       "size": "10"
    }
}
requests.post("http://controller:8776/v2/e3e46f0408a54a5c85d0d4dffd78d215/volumes",headers=headers,json=data).json()
print("创建完成")

5,创建网络

[root@controller python]# cat network.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "network": {
        "name": "wai",
        "shared": "true",
        "provider:physical_network": "provider",
        "provider:network_type": "flat"
    }
}
requests.post("http://controller:9696/v2.0/networks",headers=headers,json=data).json()
print("创建成功")

6,创建子网

[root@controller python]# cat subnet.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                "name": "admin",
                "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "subnet": {
        "name": "wai-sub",
        "cidr": "192.168.200.0/24",
        "gateway_ip": "192.168.200.1",
        "network_id": "b5ae5238-b316-4903-a8c2-93f17fed62d2",
        "ip_version": "4"   #设置子网ip类型,如ipv4,和ipv6
    }
}
requests.post("http://controller:9696/v2.0/subnets",headers=headers,json=data).json()

7,创建实例

[root@controller python]# cat server.py
import  requests
import os
import json
headers={"a":"b"}
data={
    "auth": {
         "identity": {
             "methods": ["password"],
             "password": {
                 "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "server": {
        "name": "server1",
        "imageRef": "50b58234-dfb1-405d-bb66-839e93693a90",
        "flavorRef": "666",   #此处一定要使用flavor的id,不能够使用名称
        "networks": [{"uuid": "b5ae5238-b316-4903-a8c2-93f17fed62d2"}]
    }
}
requests.post("http://controller:8774/v2.1/servers",headers=headers,json=data).json()

8,同时创建网络和子网

[root@controller python]# cat net-subnet.py
import requests
import json
import os
headers={"a":"b"}
data={
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "domain": {
                        "name": "demo"
                    },
                    "name": "admin",
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
headers["X-Auth-Token"]=requests.post("http://controller:5000/v3/auth/tokens",headers=headers,json=data).headers["X-Subject-Token"]
data={
    "network": {
        "name": "wai",
        "shared": "true",
        "provider:physical_network": "provider",
        "provider:network_type": "flat"
    }
}
a=requests.post("http://controller:9696/v2.0/networks",headers=headers,json=data).json()
print("网络创建成功")
b=a["network"]["id"]
data={
    "subnet": {
        "name": "wai-sub",
        "gateway_ip": "192.168.200.1",
        "cidr": "192.168.200.0/24",
        "network_id": b,
        "ip_version": "4"
    }
}
requests.post("http://controller:9696/v2.0/subnets",headers=headers,json=data).json()
print("子网创建成功")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值