예제 #1
0
    def main():
        """メイン関数"""
        # Clientクラスをインスタンス化
        c = k5c.Client()

        # トークンを取得
        token = c.getToken()

        # tokenオブジェクトをダンプ表示
        print(json.dumps(token, indent=2))

        return 0
예제 #2
0
def access_api(data=None):
    """REST APIにアクセスします"""
    # 接続先URL
    url = k5c.EP_NETWORK + "/v2.0/fw/firewall_rules"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # POSTメソッドで作成して、結果のオブジェクトを得る
    r = c.post(url=url, data=data)

    return r
예제 #3
0
def access_api(router_id="", data=None):
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_NETWORK +  "/v2.0/routers/" + router_id + "/add_router_interface"

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # PUTメソッドを発行して、結果のオブジェクトを得る
  r = c.put(url=url, data=data)

  return r
예제 #4
0
def access_api():
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_IDENTITY + "/v3/users?domain_id=" + k5c.DOMAIN_ID

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # GETメソッドで取得して、結果のオブジェクトを得る
    r = c.get(url=url)

    return r
예제 #5
0
def access_api(floatingip_id="", data=None):
    """REST APIにアクセスします"""

    # 接続先URL
    url = k5c.EP_NETWORK + "/v2.0/floatingips/" + floatingip_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # PUTメソッド
    r = c.put(url=url, data=data)

    return r
def access_api(ncep_id="", data=None):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints/" + ncep_id + "/disconnect"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # PUTメソッドを発行して、結果のオブジェクトを得る
    r = c.put(url=url, data=data)

    return r
예제 #7
0
def access_api(ipsecpolicy_id=""):
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_NETWORK + "/v2.0/vpn/ipsecpolicies/" + ipsecpolicy_id

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # GETメソッドで取得して、結果のオブジェクトを得る
  r = c.get(url=url)

  return r
예제 #8
0
def access_api():
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_NETWORK + "/v2.0/vpn/ipsec-site-connections"

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # GETメソッドで取得して、結果のオブジェクトを得る
  r = c.get(url=url)

  return r
예제 #9
0
def access_api(rule_id="", data=None):
  """REST APIにアクセスします"""

  # 接続先URL
  url = k5c.EP_NETWORK + "/v2.0/fw/firewall_rules/" + rule_id

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # PUTメソッドで更新
  r = c.put(url=url, data=data)

  return r
예제 #10
0
def access_api(firewall_id="", data=None):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/fw/firewalls/" + firewall_id + "/reset_connections"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # PUTメソッドで更新して、結果のオブジェクトを得る
    r = c.put(url=url, data=data)

    return r
예제 #11
0
def access_api(data=None):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # POSTメソッドで作成して、結果のオブジェクトを得る
    r = c.post(url=url, data=data)

    return r
예제 #12
0
def access_api(port_id=""):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/ports/" + port_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # GETメソッドで取得して、結果のオブジェクトを得る
    r = c.get(url=url)

    return r
예제 #13
0
def access_api(policy_id="", data=None):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/vpn/ikepolicies/" + policy_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # PUTメソッドで作成して、結果のオブジェクトを得る
    r = c.put(url=url, data=data)

    return r
예제 #14
0
def access_api(rule_id=""):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/fw/firewall_rules/" + rule_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # GETメソッドで取得して、結果のオブジェクトを得る
    r = c.get(url=url)

    return r
예제 #15
0
def access_api():
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_CEILOMETER + "/v2/meters"

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # GETメソッドで取得して、結果のオブジェクトを得る
  r = c.get(url=url)

  return r
def access_api(connection_id=""):
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_NETWORK + "/v2.0/vpn/ipsec-site-connections/" + connection_id

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # DELETEメソッドで削除して、結果のオブジェクトを得る
  r = c.delete(url=url)

  return r
def access_api(ncep_id=""):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints/" + ncep_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # GETメソッドで取得して、結果のオブジェクトを得る
    r = c.get(url=url)

    return r
예제 #18
0
def access_api(policy_id=""):
  """REST APIにアクセスします"""

  # 接続先
  url = k5c.EP_NETWORK + "/v2.0/fw/firewall_policies/" + policy_id

  # Clientクラスをインスタンス化
  c = k5c.Client()

  # DELETEメソッドで削除して、結果のオブジェクトを得る
  r = c.delete(url=url)

  return r
예제 #19
0
def access_api(network_id=""):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/networks/" + network_id

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # DELETEメソッドで削除して、結果のオブジェクトを得る
    r = c.delete(url=url)

    return r
예제 #20
0
def access_api():
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/networks"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # GETメソッドで取得して、結果のオブジェクトを得る
    r = c.get(url=url)

    return r
예제 #21
0
def access_api(data=None):
    """REST APIにアクセスします"""

    # 接続先
    url = k5c.EP_NETWORK + "/v2.0/vpn/ipsecpolicies"

    # Clientクラスをインスタンス化
    c = k5c.Client()

    # POSTメソッドで作成して、結果のオブジェクトを得る
    r = c.post(url=url, data=data)

    return r
예제 #22
0
    def create_cache():
        """k5-list-xxxとk5-show-xxxを実行して結果をキャッシュします。"""

        try:
            from k5c import k5c
        except ImportError:
            logging.error("k5cモジュールのインポートに失敗しました")
            sys.exit(1)

        # k5cクライアント
        c = k5c.Client()

        # これだけのためにデコレータを定義するのはさすがに面倒なので
        # c.get()にラッパー関数をかぶせます
        def get(url=""):
            """c.get()のラッパー"""
            print(url, end="", flush=True)
            r = c.get(url=url)
            print("   ...done", flush=True)

            # ステータスコードは'status_code'キーに格納
            status_code = r.get('status_code', -1)
            if status_code < 200 or status_code >= 300:
                return None

            # データは'data'キーに格納
            data = r.get('data', None)
            if not data:
                return None

            # dbに格納
            db.insert(data)

            return data

        #
        # List Network Connector Pools
        #
        #"data": {
        #  "network_connector_pools": [
        url = k5c.EP_NETWORK + "/v2.0/network_connector_pools"
        data = get(url=url)

        #
        # List Network Connectors
        #
        #"data": {
        #  "network_connectors": [
        url = k5c.EP_NETWORK + "/v2.0/network_connectors"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('network_connectors', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show Network Connector
                #
                #"data": {
                #  "network_connector": {
                url = k5c.EP_NETWORK + "/v2.0/network_connectors/" + item_id
                get(url=url)

        #
        # List Network Connector Endpoints
        #
        #  "data": {
        #    "network_connector_endpoints": [
        url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('network_connector_endpoints', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show Network Connector Endpoint
                #
                #"data": {
                #  "network_connector_endpoint": {
                url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints/" + item_id
                get(url=url)

                #
                # List Connected Interfaces of Network Connector Endpoint
                #
                #"data": {
                #  "network_connector_endpoint": {
                #    "interfaces": [
                url = k5c.EP_NETWORK + "/v2.0/network_connector_endpoints/" + item_id + "/interfaces"
                # ここだけは特別な処理が必要
                # get(url=url)
                print(url, end="", flush=True)
                r = c.get(url=url)
                print("   ...done", flush=True)

                # ステータスコードは'status_code'キーに格納
                status_code = r.get('status_code', -1)
                if status_code < 200 or status_code >= 300:
                    continue

                # データは'data'キーに格納
                data = r.get('data', None)
                if not data:
                    continue

                # dbに格納
                db.update(data, q['network_connector_endpoint'].id == item_id)

        #
        # List networks
        #
        # "data": {
        #   "networks": [
        url = k5c.EP_NETWORK + "/v2.0/networks"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('networks', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show network
                #
                #  "data": {
                #    "network": {
                url = k5c.EP_NETWORK + "/v2.0/networks/" + item_id
                get(url=url)

        #
        # List subnets
        #
        # "data": {
        #   "subnets": [
        url = k5c.EP_NETWORK + "/v2.0/subnets"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('subnets', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show subnet
                #
                #"data": {
                #  "subnet": {
                url = k5c.EP_NETWORK + "/v2.0/subnets/" + item_id
                get(url=url)

        #
        # List ports
        #
        #"data": {
        #  "ports": [
        url = k5c.EP_NETWORK + "/v2.0/ports"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('ports', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show port
                #
                #"data": {
                #  "port": {
                url = k5c.EP_NETWORK + "/v2.0/ports/" + item_id
                get(url=url)

        #
        # List routers
        #
        #"data": {
        #  "routers": [
        url = k5c.EP_NETWORK + "/v2.0/routers"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('routers', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show router
                #
                #"data": {
                #  "router": {
                url = k5c.EP_NETWORK + "/v2.0/routers/" + item_id
                get(url=url)

        #
        # List floating IPs
        #
        #  "data": {
        #    "floatingips": [
        url = k5c.EP_NETWORK + "/v2.0/floatingips"
        data = get(url=url)
        if not data:
            logging.error("GET failed.")
            return 1

        item_list = data.get('floatingips', [])
        for item in item_list:
            item_id = item.get('id', None)
            if item_id:
                #
                # Show floating IP details
                #
                #  "data": {
                #    "floatingip": {
                url = k5c.EP_NETWORK + "/v2.0/floatingips/" + item_id
                get(url=url)

        return 0