SoftLayer gère le système sur le cloud à partir de Portal. SoftLayer Customer Portal
Vous avez besoin d'un ID utilisateur pour accéder au portail. Le premier ID utilisateur créé lors de la création d'un compte SoftLayer est appelé l'utilisateur principal et dispose de tous les privilèges sur le système pour ce compte.
Puisqu'il n'est pas pratique pour un utilisateur principal de gérer tous les systèmes, l'utilisateur principal crée généralement des utilisateurs enfants et délègue l'autorité administrative sur certains systèmes. L'utilisateur enfant crée en outre un utilisateur enfant et délègue l'autorité, et délègue le développement et la gestion des opérations sur le système au développeur et à la personne en charge de l'exploitation.
La figure est la suivante.
L'utilisateur principal attribue des autorisations aux utilisateurs enfants et spécifie les périphériques auxquels ils peuvent accéder. L'utilisateur enfant attribue des autorisations à l'utilisateur petit-enfant pour déléguer la gestion et spécifie les appareils qui peuvent y accéder.
De cette manière, les utilisateurs ont une structure hiérarchique. Vous pouvez voir la liste des utilisateurs dans Portal, mais vous ne pouvez pas voir la relation parent-enfant des utilisateurs dans la liste dans Portal ou CLI. Cela n'est pas pratique pour la gestion des utilisateurs, j'ai donc créé un script qui utilise l'API SoftLayer pour obtenir une liste d'utilisateurs et une relation parent-enfant.
sluser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
SL_USERNAME = <SL User Name>
SL_API_KEY = <SL API Key>
sl_getUser.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'takechika'
import sys
from prettytable import PrettyTable
import SoftLayer
import sluser
SL_USERNAME = sluser.SL_USERNAME
SL_API_KEY = sluser.SL_API_KEY
_userMask = '''
id,
accountId,
parentId,
firstName,
lastName,
email
'''
_userTableHeader = [
'ParentID',
'ParentName',
'UserID',
'UserName',
'EMail'
]
def getChildren(parent, users):
"""Get children of the parent from the user list /Obtenir l'utilisateur enfant que cet utilisateur est un parent dans la liste.
parent:Objet utilisateur parent(User_Customer)
users:Liste des utilisateurs enfants à rechercher(an array of User_Customer)
"""
a = {}
b = []
for u in users:
if u.get('parentId') == parent.get('id'):
a = {
"ParentID": u.get('parentId'),
"ParentName": parent.get('lastName') + " " + parent.get('firstName'),
"ChildID": u.get('id'),
"ChildName": u.get('lastName') + " " + u.get('firstName'),
"Email": u.get('email')
}
b.append(a)
return(b)
client = SoftLayer.Client(username=SL_USERNAME, api_key=SL_API_KEY)
users = client['Account'].getUsers(mask=_userMask)
# Find the master user id
for u in users:
if u.get('parentId') == '':
masterUser = u
print("Master user is \"%s %s\" (id: %s)" % (masterUser.get('lastName'), masterUser.get('firstName'), masterUser.get('id')))
# Table definition
table = PrettyTable(_userTableHeader)
table.padding_width = 1
# Get user list
count = 0
for parent in users:
userList = getChildren(parent, users)
for x in userList[0:]:
table.add_row(
[
x['ParentID'],
x['ParentName'],
x['ChildID'],
x['ChildName'],
x['Email']
]
)
count = count + 1
print(table)
print(count, "users")
exit()
Le résultat ressemble à ceci (le nom d'utilisateur et l'adresse e-mail sont fictifs): L'utilisateur enfant et l'utilisateur parent correspondant sont affichés dans une liste.
Master user is "Jedi Master" (id: 182178)
+----------+--------------------+--------+-----------------------+--------------------------+
| ParentID | ParentName | UserID | UserName | EMail |
+----------+--------------------+--------+-----------------------+--------------------------+
| 182178 | Jedi Master | 183358 | Obi-Wan Kenobi | [email protected] |
| 182178 | Jedi Master | 183362 | R2 D2 | [email protected] |
| 182178 | Jedi Master | 183372 | C 3PO | [email protected] |
| 182178 | Jedi Master | 183376 | Luke Skywalker | [email protected] |
| 183362 | Jedi Master | 183378 | Chew Bacca | [email protected] |
| 183358 | Obi-Wan Kenobi | 183360 | Anakin Skywalker | [email protected] |
+----------+--------------------+--------+-----------------------+--------------------------+
6 users
Recommended Posts