Skip to content

Commit 9e1700c

Browse files
authored
Merge pull request #106 from jianxiaoguo/main
feat(gateways): add addresses field
2 parents c9f8bb2 + af9e9ba commit 9e1700c

4 files changed

Lines changed: 34 additions & 2 deletions

File tree

rootfs/api/models/gateway.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ def listeners(self):
8888
})
8989
return listeners
9090

91+
@property
92+
def addresses(self):
93+
data = self._scheduler.gateways.get(self.app.id, self.name, ignore_exception=True)
94+
if data.status_code != 200:
95+
return []
96+
addresses = data.json()["status"].get("addresses", [])
97+
return addresses
98+
9199
def refresh_to_k8s(self):
92100
try:
93101
try:

rootfs/api/serializers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,12 @@ class GatewaySerializer(serializers.Serializer):
658658
owner = serializers.ReadOnlyField(source='owner.username')
659659
name = serializers.CharField(max_length=63, required=True)
660660
listeners = serializers.JSONField(required=False)
661+
addresses = serializers.JSONField(read_only=True)
662+
663+
def to_representation(self, instance):
664+
representation = super().to_representation(instance)
665+
representation['addresses'] = instance.addresses
666+
return representation
661667

662668
@staticmethod
663669
def validate_port(value):

rootfs/api/tests/test_gateway.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,11 @@ def test_add_listener(self):
102102
"port": 443,
103103
"protocol": "HTTP",
104104
"allowedRoutes": {"namespaces": {"from": "All"}}
105-
}]
105+
}],
106+
"addresses": [{
107+
"type": "IPAddress",
108+
"value": "172.22.108.207"
109+
}]
106110
}]
107111
self.assertEqual(results, json.loads(json.dumps(response.data["results"])))
108112

@@ -139,6 +143,10 @@ def add_tls_listener(self, name, protocol):
139143
"from": "All"
140144
}
141145
}
146+
}],
147+
"addresses": [{
148+
"type": "IPAddress",
149+
"value": "172.22.108.207"
142150
}]
143151
}]
144152
self.assertEqual(results, json.loads(json.dumps(response.data["results"])))

rootfs/scheduler/mock.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,13 @@ def post(request, context):
712712
]
713713
}
714714
}
715+
if resource_type in ["gateways"]:
716+
data['status'] = {
717+
"addresses": [{
718+
"type": "IPAddress",
719+
"value": "172.22.108.207"
720+
}],
721+
}
715722
# Handle RC / RS / Deployments
716723
if resource_type in ['replicationcontrollers', 'replicasets', 'deployments']:
717724
data['status'] = {
@@ -806,7 +813,7 @@ def put(request, context):
806813
return request.json()
807814

808815

809-
def patch(request, context):
816+
def patch(request, context): # noqa: C901
810817
"""Process a PATCH request to the kubernetes API"""
811818
url = cache_key(request.url)
812819
# type is the second last element
@@ -869,6 +876,9 @@ def patch(request, context):
869876
upsert_pods(data, url)
870877
elif resource_type == 'deployments':
871878
manage_replicasets(data, url)
879+
elif resource_type in ['gateways']:
880+
data['status'] = item['status']
881+
cache.set(url, data, None)
872882
else:
873883
# Update the individual resource
874884
cache.set(url, data, None)

0 commit comments

Comments
 (0)