38ea9e3d59
Add initial code of skyline-apiserver Change-Id: Ib425960b707237193fd8531fb3989f29282f5b58
102 lines
3.4 KiB
Python
102 lines
3.4 KiB
Python
# Copyright 2021 99cloud
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import time
|
|
import uuid
|
|
|
|
from httpx import AsyncClient
|
|
|
|
from skyline_apiserver import config, main, schemas
|
|
from skyline_apiserver.types import constants
|
|
|
|
|
|
def get_session_profile() -> schemas.Profile:
|
|
profile = schemas.Profile(
|
|
username="testUser",
|
|
keystone_token="testKeystoneToken",
|
|
region="testRegion",
|
|
project={
|
|
"id": uuid.uuid4().hex,
|
|
"name": "testProject",
|
|
"domain": {"id": uuid.uuid4().hex, "name": "testDomain"},
|
|
},
|
|
user={
|
|
"id": uuid.uuid4().hex,
|
|
"name": "testUser",
|
|
"domain": {
|
|
"id": uuid.uuid4().hex,
|
|
"name": "testDomain",
|
|
},
|
|
},
|
|
roles=[{"id": uuid.uuid4().hex, "name": "testRole"}],
|
|
keystone_token_exp="2221-01-13T12:29:37.000000Z",
|
|
base_roles=[],
|
|
exp=int(time.time()) + config.CONF.default.access_token_expire,
|
|
uuid=uuid.uuid4().hex,
|
|
endpoints={
|
|
"placement": "/api/openstack/placement",
|
|
"neutron": "/api/openstack/network",
|
|
"swift": "/api/openstack/object-storage",
|
|
"nova": "/api/openstack/compute",
|
|
"heat": "/api/openstack/heat-api",
|
|
"nova_legacy": "/api/openstack/compute",
|
|
"cinderv2": "/api/openstack/volume",
|
|
"heat-cfn": "/api/openstack/heat-api-cfn",
|
|
"keystone": "/api/openstack/identity",
|
|
"cinder": "/api/openstack/volume",
|
|
"cinderv3": "/api/openstack/volume",
|
|
"glance": "/api/openstack/image",
|
|
},
|
|
projects={
|
|
"0e064ea01b614943993a28b2c15bd6c4": {"name": "demo", "domain_id": "default"},
|
|
"4c017648d2e34d1a8e732b98e3232af9": {"name": "alt_demo", "domain_id": "default"},
|
|
"e88226c062094881b7a1f01517b945b4": {"name": "admin", "domain_id": "default"},
|
|
},
|
|
version=constants.VERSION,
|
|
license={
|
|
"name": "test_license_name",
|
|
"summary": "test_license_summary",
|
|
"macs": [],
|
|
"features": [{"name": "compute", "count": "3"}],
|
|
"start": "2020-12-20",
|
|
"end": "2030-10-02",
|
|
},
|
|
currency={"zh": "元", "en": "CNY"},
|
|
)
|
|
return profile
|
|
|
|
|
|
def get_session_token() -> str:
|
|
profile = get_session_profile()
|
|
return profile.toJWTPayload()
|
|
|
|
|
|
async def get_jwt_from_cookie(client: AsyncClient) -> str:
|
|
login_data = {
|
|
"region": "RegionOne",
|
|
"username": config.CONF.openstack.system_user_name,
|
|
"domain": config.CONF.openstack.system_user_domain,
|
|
"password": config.CONF.openstack.system_user_password,
|
|
}
|
|
r = await client.post(
|
|
url=f"{main.API_PREFIX}/login",
|
|
json=login_data,
|
|
)
|
|
token = r.cookies.get(config.CONF.default.session_name, "")
|
|
return token
|
|
|
|
|
|
async def _logout(client: AsyncClient) -> None:
|
|
await client.post(f"{main.API_PREFIX}/logout")
|