Skip to content

Commit

Permalink
Merge pull request #51 from in-seo/refactor/loadbalancer
Browse files Browse the repository at this point in the history
Update metadata with listeners
  • Loading branch information
junho100 authored Aug 17, 2024
2 parents bffb221 + d63510e commit 6682525
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 2 deletions.
16 changes: 15 additions & 1 deletion src/plugin/connector/loadbalancer/listener_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,18 @@ def get_listener(self, secret_data: dict, region: REGION) -> dict:
_LOGGER.error(f"Failed to get LB Listeners. {response.json()}")
raise Exception(f"Failed to get LB Listeners. {response.json()}")

return response.json().get("listeners", [])
return response.json().get("listeners", {})

def get_listener_detail(self, listener_id: str, secret_data: dict, region: REGION) -> dict:
token = self.get_token(secret_data)

url = f"https://{region.name.lower()}-api-network-infrastructure.nhncloudservice.com/v2.0/lbaas/listeners/{listener_id}"
headers = {"X-Auth-Token": token}

response = requests.get(url, headers=headers)

if response.status_code != 200:
_LOGGER.error(f"Failed to get LB Listeners Detail. {response.json()}")
raise Exception(f"Failed to get LB Listeners Detail. {response.json()}")

return response.json().get("listener", {})
11 changes: 11 additions & 0 deletions src/plugin/manager/loadbalancer/loadbalancer_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from spaceone.inventory.plugin.collector.lib import *

from plugin.conf.cloud_service_conf import AUTH_TYPE, REGION, ASSET_URL
from plugin.connector.loadbalancer.listener_connector import LoadBalancerListenersConnector
from plugin.connector.loadbalancer.loadbalancer_connector import LoadBalancerConnector
from plugin.manager.base import NHNCloudBaseManager

Expand Down Expand Up @@ -39,9 +40,19 @@ def create_cloud_service_type(self):

def create_cloud_service(self, secret_data):
lb_connector = LoadBalancerConnector()
listener_connector = LoadBalancerListenersConnector()
for AVAILABLE_REGION in self.AVAILABLE_REGIONS:
resources = lb_connector.get_lb(secret_data, AVAILABLE_REGION)

for resource in resources:
listener_list = []
listeners = resource['listeners']
for listener in listeners:
detail = listener_connector.get_listener_detail(listener['id'], secret_data, AVAILABLE_REGION)
listener_list.append(detail)

resource['listeners'] = listener_list

reference = {
"resource_id": resource.get("id")
}
Expand Down
13 changes: 13 additions & 0 deletions src/plugin/metadata/loadbalancer/listeners.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ table:
sort:
key: data.id
desc: false
fields:
- LoadBalancer ID: data.id
- LoadBalancer Name: data.name
- Tenant ID: data.tenant_id
- Protocol: data.protocol
- Proxy Protocol: data.proxy_protocol
- Connection Limit: data.connection_limit
- Description: data.description
- Cert Expire Date: data.cert_expire_date

tabs.0:
name: Details
type: item
fields:
- LoadBalancer ID: data.id
- LoadBalancer Name: data.name
Expand Down
35 changes: 34 additions & 1 deletion src/plugin/metadata/loadbalancer/loadbalancer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,37 @@ table:
- Provider: data.provider
- LoadBalancer Type: data.loadbalancer_type
- Description: data.description
- Distributed: data.distributed
- Distributed: data.distributed

tabs.0:
name: Details
type: item
fields:
- LoadBalancer ID: data.id
- LoadBalancer Name: data.name
- Tenant ID: data.tenant_id
- Provisioning Status: data.provisioning_status
- Operating Status: data.operating_status
- Provider: data.provider
- LoadBalancer Type: data.loadbalancer_type
- Description: data.description
- Distributed: data.distributed

tabs.1:
- name: Listeners
items:
- name: Listeners
type: table
root_path: data.listeners
fields:
- Listener ID: id
- Name: name
- Protocol: protocol
- Protocol Port: protocol_port
- Connection Limit: connection_limit
- Keepalive Timeout: keepalive_timeout
- Default Pool ID: default_pool_id
- Admin State Up: admin_state_up
- Block Invalid HTTP Request: block_invalid_http_request
- Description: description
- Certificate Expiry Date: cert_expire_date

0 comments on commit 6682525

Please sign in to comment.