first commit
This commit is contained in:
commit
d241efd180
|
@ -0,0 +1,8 @@
|
|||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
|
@ -0,0 +1,6 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.6 (pythonProject)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (pythonProject)" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/openstack-api.iml" filepath="$PROJECT_DIR$/.idea/openstack-api.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,39 @@
|
|||
import requests
|
||||
import json
|
||||
def get_domain(ip, token):
|
||||
url = "http://" + ip + ":5000/v3/domains"
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
return response.json()
|
||||
def get_domain_id(ip, token, domain_name):
|
||||
url = "http://" + ip + ":5000/v3/domains"
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
for i in response.json()['domains']:
|
||||
if i['name'] == domain_name:
|
||||
domain_id = i['id']
|
||||
return domain_id
|
||||
def create_domain(ip, token, domain_name, description):
|
||||
url = "http://" + ip + ":5000/v3/domains"
|
||||
headers = {'X-Auth-Token': token}
|
||||
data = {
|
||||
"domain": {
|
||||
"description": description,
|
||||
"enabled": True,
|
||||
"name": domain_name
|
||||
}
|
||||
}
|
||||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||||
return response.json()
|
||||
def show_domain(ip, token,domain_name):
|
||||
domain_id = get_domain_id(ip, token, domain_name)
|
||||
url = "http://" + ip + ":5000/v3/domains/" + domain_id
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
return response.json()
|
||||
def delete_domain(ip, token, domain_name):
|
||||
domain_id = get_domain_id(ip, token, domain_name)
|
||||
url = "http://" + ip + ":5000/v3/domains/" + domain_id
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.delete(url, headers=headers)
|
||||
return response.json()
|
|
@ -0,0 +1,31 @@
|
|||
import requests
|
||||
ip=""
|
||||
domain_name=""
|
||||
project_name=""
|
||||
user_name=""
|
||||
password=""
|
||||
def get_token(ip,domain_name,project_name,user_name,password):
|
||||
url=f"http://{ip}:5000/v3/auth/tokens"
|
||||
auth_data = {
|
||||
"auth": {
|
||||
"identity": {
|
||||
"methods": ["password"],
|
||||
"password": {
|
||||
"user": {
|
||||
"name": user_name,
|
||||
"domain": {"name": domain_name},
|
||||
"password": password
|
||||
}
|
||||
}
|
||||
},
|
||||
"scope": {
|
||||
"project": {
|
||||
"name": project_name,
|
||||
"domain": {"name": domain_name}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
resp=requests.post(url=url,json=auth_data)
|
||||
token=resp.headers['X-Subject-Token']
|
||||
return token
|
|
@ -0,0 +1,50 @@
|
|||
import requests
|
||||
import json
|
||||
def create_group(ip, token, group_name, description):
|
||||
url = "http://" + ip + ":5000/v3/groups"
|
||||
headers = {'X-Auth-Token': token}
|
||||
data = {
|
||||
"group": {
|
||||
"name": group_name,
|
||||
"domain_id": "default",
|
||||
"description": description
|
||||
}
|
||||
}
|
||||
response = requests.post(url, headers=headers, data=json.dumps(data))
|
||||
return response.json()
|
||||
def get_group_id(ip, token, group_name):
|
||||
url = "http://" + ip + ":5000/v3/groups"
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
for i in response.json()['groups']:
|
||||
if i['name'] == group_name:
|
||||
return i['id']
|
||||
def show_group(ip, token, group_name):
|
||||
group_id = get_group_id(ip, token, group_name)
|
||||
url = "http://" + ip + ":5000/v3/groups/" + group_id
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
return response.json()
|
||||
def delete_group(ip, token, group_name):
|
||||
group_id = get_group_id(ip, token, group_name)
|
||||
url = "http://" + ip + ":5000/v3/groups/" + group_id
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.delete(url, headers=headers)
|
||||
return response.json()
|
||||
def get_group(ip, token):
|
||||
url = "http://" + ip + ":5000/v3/groups"
|
||||
headers = {'X-Auth-Token': token}
|
||||
response = requests.get(url, headers=headers)
|
||||
return response.json()
|
||||
def update_group(ip, token, group_name, new_group_name, new_description):
|
||||
group_id = get_group_id(ip, token, group_name)
|
||||
url = "http://" + ip + ":5000/v3/groups/" + group_id
|
||||
headers = {'X-Auth-Token': token}
|
||||
data = {
|
||||
"group": {
|
||||
"name": new_group_name,
|
||||
"description": new_description
|
||||
}
|
||||
}
|
||||
response = requests.patch(url, headers=headers, data=json.dumps(data))
|
||||
return response.json()
|
|
@ -0,0 +1,71 @@
|
|||
import requests
|
||||
import json
|
||||
def create_user(ip, token, user_name, password, description):
|
||||
headers = {'X-Auth-Token': token}
|
||||
body = {
|
||||
"user": {
|
||||
"name": user_name,
|
||||
"password": password,
|
||||
"description": description,
|
||||
}
|
||||
}
|
||||
resp = requests.post(f"http://{ip}:5000/v3/users", data=json.dumps(body), headers=headers)
|
||||
return resp.json() # Assuming the API returns JSON
|
||||
|
||||
|
||||
def get_users(ip, token):
|
||||
headers = {'X-Auth-Token': token}
|
||||
resp = requests.get(f"http://{ip}:5000/v3/users", headers=headers)
|
||||
return resp.json() # Assuming the API returns JSON
|
||||
|
||||
|
||||
def get_user_id(ip, token, user_name):
|
||||
headers = {'X-Auth-Token': token}
|
||||
result = requests.get(f"http://{ip}:5000/v3/users", headers=headers).json()
|
||||
for item in result['users']:
|
||||
if item['name'] == user_name:
|
||||
return item['id']
|
||||
return "NONE"
|
||||
|
||||
|
||||
def get_user(ip, token, user_name):
|
||||
user_id = get_user_id(ip, token, user_name)
|
||||
if user_id == "NONE":
|
||||
return {"error": "User not found"}
|
||||
|
||||
headers = {'X-Auth-Token': token}
|
||||
api_url = f"http://{ip}:5000/v3/users/{user_id}"
|
||||
resp = requests.get(api_url, headers=headers)
|
||||
return resp.json() # Assuming the API returns JSON
|
||||
|
||||
|
||||
def delete_user(ip, token, user_name):
|
||||
user_id = get_user_id(ip, token, user_name)
|
||||
if user_id == "NONE":
|
||||
return {"error": "User not found"}
|
||||
|
||||
headers = {'X-Auth-Token': token}
|
||||
api_url = f"http://{ip}:5000/v3/users/{user_id}"
|
||||
resp = requests.delete(api_url, headers=headers)
|
||||
if resp.status_code == 204:
|
||||
return {"message":"用户删除成功"}
|
||||
else:
|
||||
return {"error": "用户删除失败", "status_code": resp.status_code}
|
||||
def update_user_password(ip, token, user_name, new_password, original_password):
|
||||
user_id = get_user_id(ip, token, user_name)
|
||||
if user_id == "NONE":
|
||||
return {"error": "User not found"}
|
||||
|
||||
headers = {'X-Auth-Token': token}
|
||||
body = {
|
||||
"user": {
|
||||
"password": new_password,
|
||||
"original_password": original_password
|
||||
}
|
||||
}
|
||||
api_url = f"http://{ip}:5000/v3/users/{user_id}/password"
|
||||
resp = requests.post(api_url, data=json.dumps(body), headers=headers)
|
||||
if resp.status_code == 204:
|
||||
return {"message": "密码更新成功"}
|
||||
else:
|
||||
return {"error": "密码更新失败", "status_code": resp.status_code}
|
|
@ -0,0 +1,126 @@
|
|||
from keystone import get_token
|
||||
from keystone import user
|
||||
from keystone import domain
|
||||
import time
|
||||
def main():
|
||||
print("====================")
|
||||
print("选择一个操作:")
|
||||
print("====================")
|
||||
print("Keystone操作")
|
||||
print("1. 用户管理")
|
||||
print("2. 组管理")
|
||||
print("3. 域管理")
|
||||
print("====================")
|
||||
choice = input("输入选项 (1-3): ")
|
||||
|
||||
ip = "172.30.26.171"
|
||||
token = get_token.get_token(ip,'demo','admin','admin','000000')
|
||||
|
||||
if choice == '1':
|
||||
print("====================")
|
||||
print("选择一个操作:")
|
||||
print("1. 创建用户")
|
||||
print("2. 获取所有用户")
|
||||
print("3. 获取特定用户信息")
|
||||
print("4. 删除用户")
|
||||
print("5. 更新用户密码")
|
||||
print("====================")
|
||||
choice = input("输入选项 (1-5): ")
|
||||
print("====================")
|
||||
if choice == '1':
|
||||
user_name = input("请输入用户名: ")
|
||||
password = input("请输入密码: ")
|
||||
description = input("请输入描述: ")
|
||||
result = user.create_user(ip, token, user_name, password, description)
|
||||
print(result)
|
||||
print("====================")
|
||||
main()
|
||||
|
||||
elif choice == '2':
|
||||
result = user.get_users(ip, token)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '3':
|
||||
user_name = input("请输入用户名: ")
|
||||
result = user.get_user(ip, token, user_name)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '4':
|
||||
user_name = input("请输入用户名: ")
|
||||
result = user.delete_user(ip, token, user_name)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '5':
|
||||
user_name = input("请输入用户名: ")
|
||||
new_password = input("请输入新密码: ")
|
||||
original_password = input("请输入原始密码: ")
|
||||
result = user.update_user_password(ip, token, user_name, new_password, original_password)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
else:
|
||||
print("无效选项")
|
||||
main()
|
||||
|
||||
elif choice == '2':
|
||||
print("====================")
|
||||
print("选择一个操作:")
|
||||
print("1. 创建组")
|
||||
print("2. 获取所有组")
|
||||
print("3. 获取特定组信息")
|
||||
print("4. 删除组")
|
||||
print("5. 更新组信息")
|
||||
print("====================")
|
||||
choice = input("输入选项 (1-5): ")
|
||||
print("====================")
|
||||
if choice == '1':
|
||||
user_name = input("请输入组名: ")
|
||||
password = input("请输入域: ")
|
||||
description = input("请输入描述: ")
|
||||
result = user.create_user(ip, token, user_name, password, description)
|
||||
print(result)
|
||||
print("====================")
|
||||
main()
|
||||
|
||||
elif choice == '2':
|
||||
result = user.get_users(ip, token)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '3':
|
||||
user_name = input("请输入用户名: ")
|
||||
result = user.get_user(ip, token, user_name)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '4':
|
||||
user_name = input("请输入用户名: ")
|
||||
result = user.delete_user(ip, token, user_name)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
elif choice == '5':
|
||||
user_name = input("请输入用户名: ")
|
||||
new_password = input("请输入新密码: ")
|
||||
original_password = input("请输入原始密码: ")
|
||||
result = user.update_user_password(ip, token, user_name, new_password, original_password)
|
||||
print(result)
|
||||
main()
|
||||
|
||||
else:
|
||||
print("无效选项")
|
||||
main()
|
||||
#
|
||||
# elif choice == '3':
|
||||
#
|
||||
# elif choice == '4':
|
||||
#
|
||||
# elif choice == '5':
|
||||
else:
|
||||
print("无效选项")
|
||||
main()
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue