WIP: mock cluster apps status API

This commit is contained in:
Alessio Caiazza 2017-10-31 11:29:56 +01:00
parent 6d462cea77
commit 84f5aaa729
5 changed files with 51 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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" ]
}
}
}

View File

@ -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

View File

@ -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