194 lines
6.0 KiB
Python
194 lines
6.0 KiB
Python
# Copyright (C) 2021 Nippon Telegraph and Telephone Corporation
|
|
# All Rights Reserved.
|
|
#
|
|
# 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 json
|
|
import os
|
|
import sys
|
|
|
|
from tacker.sol_refactored.common import http_client
|
|
|
|
|
|
# NOTE: This is the tool which intended to use it about APIs under development.
|
|
# This is not maintained at all, but reuse the code for the new APIs
|
|
# development.
|
|
|
|
auth_url = "http://127.0.0.1/identity/v3"
|
|
username = "nfv_user"
|
|
password = "devstack"
|
|
project_name = "nfv"
|
|
domain_name = "Default"
|
|
user_domain_name = "Default"
|
|
project_domain_name = "Default"
|
|
|
|
|
|
class Client(object):
|
|
|
|
def __init__(self, path):
|
|
self.path = path
|
|
self.auth = http_client.KeystonePasswordAuthHandle(
|
|
auth_url=auth_url,
|
|
username=username,
|
|
password=password,
|
|
project_name=project_name,
|
|
user_domain_name=user_domain_name,
|
|
project_domain_name=project_domain_name)
|
|
|
|
self.client = http_client.HttpClient(self.auth)
|
|
|
|
def print(self, resp, body):
|
|
print(resp.status_code)
|
|
print(resp.headers)
|
|
print()
|
|
print(body)
|
|
|
|
def create(self, req_body):
|
|
resp, body = self.client.do_request(
|
|
self.path, "POST", body=req_body, version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def list(self, req_body):
|
|
if req_body is not None:
|
|
resp, body = self.client.do_request(
|
|
self.path, "GET", version="2.0.0", params=req_body)
|
|
else:
|
|
resp, body = self.client.do_request(
|
|
self.path, "GET", version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def show(self, id):
|
|
resp, body = self.client.do_request(
|
|
self.path + '/' + id, "GET", version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def delete(self, id):
|
|
resp, body = self.client.do_request(
|
|
self.path + '/' + id, "DELETE", version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def inst(self, id, req_body):
|
|
path = self.path + '/' + id + '/instantiate'
|
|
resp, body = self.client.do_request(
|
|
path, "POST", body=req_body, version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def term(self, id, req_body):
|
|
path = self.path + '/' + id + '/terminate'
|
|
resp, body = self.client.do_request(
|
|
path, "POST", body=req_body, version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def retry(self, id):
|
|
path = self.path + '/' + id + '/retry'
|
|
resp, body = self.client.do_request(path, "POST", version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
def rollback(self, id):
|
|
path = self.path + '/' + id + '/rollback'
|
|
resp, body = self.client.do_request(path, "POST", version="2.0.0")
|
|
|
|
def fail(self, id):
|
|
path = self.path + '/' + id + '/fail'
|
|
resp, body = self.client.do_request(path, "POST", version="2.0.0")
|
|
self.print(resp, body)
|
|
|
|
|
|
def usage():
|
|
print("usage: cli resource action [arg...]")
|
|
print(" inst create body(path of content)")
|
|
print(" inst list [body(path of content)]")
|
|
print(" inst show {id}")
|
|
print(" inst delete {id}")
|
|
print(" inst inst {id} body(path of content)")
|
|
print(" inst term {id} body(path of content)")
|
|
print(" subsc create body(path of content)")
|
|
print(" subsc list [body(path of content)]")
|
|
print(" subsc show {id}")
|
|
print(" subsc delete {id}")
|
|
print(" lcmocc list [body(path of content)]")
|
|
print(" lcmocc show {id}")
|
|
print(" lcmocc delete {id}")
|
|
print(" lcmocc retry {id}")
|
|
print(" lcmocc rollback {id}")
|
|
print(" lcmocc fail {id}")
|
|
os._exit(1)
|
|
|
|
|
|
def get_body(arg):
|
|
with open(arg) as fp:
|
|
return json.load(fp)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) < 3:
|
|
usage()
|
|
resource = sys.argv[1]
|
|
action = sys.argv[2]
|
|
|
|
if resource == "inst":
|
|
if action not in ["create", "list", "show", "delete", "inst", "term"]:
|
|
usage()
|
|
client = Client("/vnflcm/v2/vnf_instances")
|
|
elif resource == "subsc":
|
|
if action not in ["create", "list", "show", "delete"]:
|
|
usage()
|
|
client = Client("/vnflcm/v2/subscriptions")
|
|
elif resource == "lcmocc":
|
|
if action not in ["list", "show", "delete", "retry", "rollback",
|
|
"fail"]:
|
|
usage()
|
|
client = Client("/vnflcm/v2/vnf_lcm_op_occs")
|
|
else:
|
|
usage()
|
|
|
|
if action == "create":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.create(get_body(sys.argv[3]))
|
|
elif action == "list":
|
|
body = None
|
|
if len(sys.argv) == 4:
|
|
body = get_body(sys.argv[3])
|
|
elif len(sys.argv) != 3:
|
|
usage()
|
|
client.list(body)
|
|
elif action == "show":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.show(sys.argv[3])
|
|
elif action == "delete":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.delete(sys.argv[3])
|
|
elif action == "inst":
|
|
if len(sys.argv) != 5:
|
|
usage()
|
|
client.inst(sys.argv[3], get_body(sys.argv[4]))
|
|
elif action == "term":
|
|
if len(sys.argv) != 5:
|
|
usage()
|
|
client.term(sys.argv[3], get_body(sys.argv[4]))
|
|
elif action == "retry":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.retry(sys.argv[3])
|
|
elif action == "rollback":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.rollback(sys.argv[3])
|
|
elif action == "fail":
|
|
if len(sys.argv) != 4:
|
|
usage()
|
|
client.fail(sys.argv[3])
|