diff --git a/indigo-schema-couch/schemas/flavor.js b/indigo-schema-couch/schemas/flavor.js new file mode 100644 index 0000000..6dacdd1 --- /dev/null +++ b/indigo-schema-couch/schemas/flavor.js @@ -0,0 +1,79 @@ +module.exports = { + type: "object", + additionalProperties: true, + list: { + filters: { + flavor_name: ["flavor_name"], + tenant_id: ["tenant_id"], + user_group: ["user_group"] + }, + value: { + flavor_id: "flavor_id", + flavor_name: "flavor_name", + user_group: "user_group" + } + }, + belongs_to: [{ + type: 'tenant', + many_name: 'flavors', + foreign_key: 'tenant_id', + value: { + flavor_id: "flavor_id", + flavor_name: "flavor_name", + tenant_id: "tenant_id", + user_group: "user_group" + } + }], + properties: { + flavor_id: { + type: "string", + required: true + }, + flavor_name: { + type: "string", + required: true + }, + ram: { + type: "integer", + required: false + }, + disk: { + type: "integer", + required: false + }, + num_vcpus: { + type: "integer", + required: false + }, + num_gpus: { + type: "integer", + required: false + }, + gpu_model: { + type: ["string", "null"], + required: false + }, + gpu_vendor: { + type: ["string", "null"], + required: false + }, + tenant_id: { + type: "string", + required: true + }, + tenant_name: { + type: "string", + required: false + }, + user_group: { + type: "string", + required: false + }, + service: { + type: "string", + required: false + } + } +} + + diff --git a/indigo-schema-couch/schemas/image.js b/indigo-schema-couch/schemas/image.js index 6a3d1ba..02ade9c 100644 --- a/indigo-schema-couch/schemas/image.js +++ b/indigo-schema-couch/schemas/image.js @@ -4,21 +4,24 @@ module.exports = { list: { filters: { image_name: ["image_name"], - service: ["service"] + tenant_id: ["tenant_id"], + user_group: ["user_group"] }, value: { image_id: "image_id", - image_name: "image_name" + image_name: "image_name", + user_group: "user_group" } }, belongs_to: [{ - type: 'service', + type: 'tenant', many_name: 'images', - foreign_key: 'service', + foreign_key: 'tenant_id', value: { image_id: "image_id", image_name: "image_name", - service: "service" + tenant_id: "tenant_id", + user_group: "user_group" } }], properties: { @@ -46,9 +49,21 @@ module.exports = { type: "string", required: false }, - service: { + tenant_id: { type: "string", required: true + }, + tenant_name: { + type: "string", + required: false + }, + user_group: { + type: "string", + required: false + }, + service: { + type: "string", + required: false } } } diff --git a/indigo-schema-couch/schemas/service.js b/indigo-schema-couch/schemas/service.js index b95aac4..4b3efeb 100644 --- a/indigo-schema-couch/schemas/service.js +++ b/indigo-schema-couch/schemas/service.js @@ -16,7 +16,9 @@ module.exports = { } }, has_many: [ - { name: 'images', type: 'image' } + { name: 'images', type: 'image' }, + { name: 'flavors', type: 'flavor' }, + { name: 'tenants', type: 'tenant' } ], belongs_to: [{ type: 'provider', diff --git a/indigo-schema-couch/schemas/tenant.js b/indigo-schema-couch/schemas/tenant.js new file mode 100644 index 0000000..4067e85 --- /dev/null +++ b/indigo-schema-couch/schemas/tenant.js @@ -0,0 +1,51 @@ +module.exports = { + type: "object", + additionalProperties: true, + list: { + filters: { + tenant_name: ["tenant_name"], + service: ["service"], + user_group: ["user_group"] + }, + value: { + tenant_id: "tenant_id", + tenant_name: "tenant_name", + user_group: "user_group" + } + }, + has_many: [ + { name: 'images', type: 'image' }, + { name: 'flavors', type: 'flavor' } + ], + belongs_to: [{ + type: 'service', + many_name: 'tenants', + foreign_key: 'service', + value: { + tenant_id: "tenant_id", + tenant_name: "tenant_name", + service: "service", + user_group: "user_group" + } + }], + properties: { + tenant_id: { + type: "string", + required: true + }, + tenant_name: { + type: "string", + required: true + }, + service: { + type: "string", + required: true + }, + user_group: { + type: "string", + required: false + } + } +} + +