From 84f5aaa729d6286252602800a1f9e1bf1e5b47d3 Mon Sep 17 00:00:00 2001 From: Alessio Caiazza Date: Tue, 31 Oct 2017 11:29:56 +0100 Subject: [PATCH] WIP: mock cluster apps status API --- app/serializers/cluster_entity.rb | 12 +++++++ app/serializers/cluster_serializer.rb | 2 +- spec/fixtures/api/schemas/cluster_status.json | 35 +++++++++++++++++-- spec/serializers/cluster_entity_spec.rb | 4 +++ spec/serializers/cluster_serializer_spec.rb | 2 +- 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/app/serializers/cluster_entity.rb b/app/serializers/cluster_entity.rb index 08a113c4d8a..84ce34afb32 100644 --- a/app/serializers/cluster_entity.rb +++ b/app/serializers/cluster_entity.rb @@ -3,4 +3,16 @@ class ClusterEntity < Grape::Entity expose :status_name, as: :status expose :status_reason + expose :applications do |cluster, options| + if cluster.created? + { + helm: { status: 'installed' }, + ingress: { status: 'error', status_reason: 'Missing namespace' }, + runner: { status: 'installing' }, + prometheus: { status: 'installable' } + } + else + {} + end + end end diff --git a/app/serializers/cluster_serializer.rb b/app/serializers/cluster_serializer.rb index 2c87202a105..2e13c1501e7 100644 --- a/app/serializers/cluster_serializer.rb +++ b/app/serializers/cluster_serializer.rb @@ -2,6 +2,6 @@ class ClusterSerializer < BaseSerializer entity ClusterEntity def represent_status(resource) - represent(resource, { only: [:status, :status_reason] }) + represent(resource, { only: [:status, :status_reason, :applications] }) end end diff --git a/spec/fixtures/api/schemas/cluster_status.json b/spec/fixtures/api/schemas/cluster_status.json index 1f255a17881..451ea50f0f9 100644 --- a/spec/fixtures/api/schemas/cluster_status.json +++ b/spec/fixtures/api/schemas/cluster_status.json @@ -5,7 +5,38 @@ ], "properties" : { "status": { "type": "string" }, - "status_reason": { "type": ["string", "null"] } + "status_reason": { "type": ["string", "null"] }, + "applications": { "$ref": "#/definitions/applications" } }, - "additionalProperties": false + "additionalProperties": false, + "definitions": { + "applications": { + "type": "object", + "additionalProperties": false, + "properties" : { + "helm": { "$ref": "#/definitions/app_status" }, + "runner": { "$ref": "#/definitions/app_status" }, + "ingress": { "$ref": "#/definitions/app_status" }, + "prometheus": { "$ref": "#/definitions/app_status" } + } + }, + "app_status": { + "type": "object", + "additionalProperties": false, + "properties" : { + "status": { + "type": { + "enum": [ + "installable", + "installing", + "installed", + "error" + ] + } + }, + "status_reason": { "type": ["string", "null"] } + }, + "required" : [ "status" ] + } + } } diff --git a/spec/serializers/cluster_entity_spec.rb b/spec/serializers/cluster_entity_spec.rb index 2c7f49974f1..ec02af4b620 100644 --- a/spec/serializers/cluster_entity_spec.rb +++ b/spec/serializers/cluster_entity_spec.rb @@ -18,5 +18,9 @@ describe ClusterEntity do it 'contains status reason' do expect(subject[:status_reason]).to eq('general error') end + + it 'contains applications' do + expect(subject[:applications]).to eq({}) + end end end diff --git a/spec/serializers/cluster_serializer_spec.rb b/spec/serializers/cluster_serializer_spec.rb index 1ac6784d28f..44039327457 100644 --- a/spec/serializers/cluster_serializer_spec.rb +++ b/spec/serializers/cluster_serializer_spec.rb @@ -12,7 +12,7 @@ describe ClusterSerializer do let(:resource) { create(:gcp_cluster, :errored) } it 'serializes only status' do - expect(subject.keys).to contain_exactly(:status, :status_reason) + expect(subject.keys).to contain_exactly(:status, :status_reason, :applications) end end end