From dc6f1a51550c44337c6875139d7ae71a63b755cb Mon Sep 17 00:00:00 2001 From: Scott Baker Date: Tue, 11 Nov 2014 23:56:13 -0800 Subject: [PATCH] cleanup all of the model declarations, and add defaults for them --- .../xoslib/static/js/xoslib/xos-backbone.js | 223 ++++++++---------- 1 file changed, 102 insertions(+), 121 deletions(-) diff --git a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js index b514ff3..4b048fb 100644 --- a/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js +++ b/planetstack/core/xoslib/static/js/xoslib/xos-backbone.js @@ -191,130 +191,111 @@ if (! window.XOSLIB_LOADED ) { }, }); + function define_model(lib, attrs) { + modelName = attrs.modelName; + modelClassName = modelName; + collectionClassName = modelName + "Collection"; + collectionName = modelName + "s"; + + modelAttrs = {} + collectionAttrs = {} + + for (key in attrs) { + value = attrs[key]; + if ($.inArray(key, ["urlRoot", "modelName"])>=0) { + modelAttrs[key] = value; + } + if ($.inArray(key, ["urlRoot", "modelName", "relatedCollections", "foreignCollections"])>=0) { + collectionAttrs[key] = value; + } + } + + if (xosdefaults && xosdefaults[modelName]) { + modelAttrs["defaults"] = xosdefaults[modelName]; + } + + lib[modelName] = XOSModel.extend(modelAttrs); + + collectionAttrs["model"] = lib[modelName]; + + lib[collectionClassName] = XOSCollection.extend(collectionAttrs); + lib[collectionName] = new lib[collectionClassName](); + + lib.allCollectionNames.push(collectionName); + }; + function xoslib() { - // basic REST - this.sliver = XOSModel.extend({ urlRoot: SLIVER_API, modelName: "sliver" }); - this.sliverCollection = XOSCollection.extend({ urlRoot: SLIVER_API, - relatedCollections: {"networkSlivers": "sliver"}, - foreignCollections: ["slices", "deployments", "images", "nodes", "users"], - model: this.sliver, - modelName: "sliver"}); - this.slivers = new this.sliverCollection(); - - this.slice = XOSModel.extend({ urlRoot: SLICE_API, modelName: "slice" }); - this.sliceCollection = XOSCollection.extend({ urlRoot: SLICE_API, - relatedCollections: {"slivers": "slice", "sliceDeployments": "slice", "slicePrivileges": "slice", "networks": "owner"}, - foreignCollections: ["services", "sites"], - model: this.slice, - modelName: "slice"}); - this.slices = new this.sliceCollection(); - - this.sliceDeployment = XOSModel.extend({ urlRoot: SLICEDEPLOYMENT_API, modelName: "sliceDeployment" }); - this.sliceDeploymentCollection = XOSCollection.extend({ urlRoot: SLICEDEPLOYMENT_API, - foreignCollections: ["slices", "deployments"], - model: this.sliceDeployment, - modelName: "sliceDeployment"}); - this.sliceDeployments = new this.sliceDeploymentCollection(); - - this.slicePrivilege = XOSModel.extend({ urlRoot: SLICEPRIVILEGE_API, modelName: "slicePrivilege" }); - this.slicePrivilegeCollection = XOSCollection.extend({ urlRoot: SLICEPRIVILEGE_API, - foreignCollections: ["slices", "users", "sliceRoles"], - model: this.slicePrivilege, - modelName: "slicePrivilege"}); - this.slicePrivileges = new this.slicePrivilegeCollection(); - - this.sliceRole = XOSModel.extend({ urlRoot: SLICEROLE_API, modelName: "sliceRole" }); - this.sliceRoleCollection = XOSCollection.extend({ urlRoot: SLICEROLE_API, - model: this.sliceRole, - modelName: "sliceRole"}); - this.sliceRoles = new this.sliceRoleCollection(); - - this.node = XOSModel.extend({ urlRoot: NODE_API, modelName: "node" }); - this.nodeCollection = XOSCollection.extend({ urlRoot: NODE_API, - foreignCollections: ["sites", "deployments"], - model: this.node, - modelName: "node"}); - this.nodes = new this.nodeCollection(); - - this.site = XOSModel.extend({ urlRoot: SITE_API, modelName: "site" }); - this.siteCollection = XOSCollection.extend({ urlRoot: SITE_API, - relatedCollections: {"users": "site", "slices": "site", "nodes": "site"}, - model: this.site, - modelName: "site"}); - this.sites = new this.siteCollection(); - - this.user = XOSModel.extend({ urlRoot: USER_API, modelName: "user" }); - this.userCollection = XOSCollection.extend({ urlRoot: USER_API, - relatedCollections: {"slicePrivileges": "user", "slices": "owner", "userDeployments": "user"}, - foreignCollections: ["sites"], - model: this.user, - modelName: "user"}); - this.users = new this.userCollection(); - - this.userDeployment = XOSModel.extend({ urlRoot: USERDEPLOYMENT_API, modelName: "userDeployment" }); - this.userDeploymentCollection = XOSCollection.extend({ urlRoot: USERDEPLOYMENT_API, - foreignCollections: ["users","deployments"], - model: this.userDeployment, - modelName: "userDeployment"}); - this.userDeployments = new this.userDeploymentCollection(); - - this.deployment = XOSModel.extend({ urlRoot: DEPLOYMENT_API, - modelName: "deployment", - defaults: xosdefaults.deployment }); - this.deploymentCollection = XOSCollection.extend({ urlRoot: DEPLOYMENT_API, - relatedCollections: {"nodes": "deployment", "slivers": "deploymentNetwork", "networkDeployments": "deployment", "userDeployments": "deployment"}, - model: this.deployment, - modelName: "deployment"}); - this.deployments = new this.deploymentCollection(); - - this.image = XOSModel.extend({ urlRoot: IMAGE_API, - modelName: "image" }); - this.imageCollection = XOSCollection.extend({ urlRoot: IMAGE_API, - model: this.image, - modelName: "image"}); - this.images = new this.imageCollection(); - - this.networkTemplate = XOSModel.extend({ urlRoot: NETWORKTEMPLATE_API, modelName: "networkTemplate" }); - this.networkTemplateCollection = XOSCollection.extend({ urlRoot: NETWORKTEMPLATE_API, - model: this.networkTemplate, - modelName: "networkTemplate"}); - this.networkTemplates = new this.networkTemplateCollection(); - - this.network = XOSModel.extend({ urlRoot: NETWORK_API, modelName: "network" }); - this.networkCollection = XOSCollection.extend({ urlRoot: NETWORK_API, - relatedCollections: {"networkDeployments": "network", "networkSlivers": "network"}, - foreignCollections: ["slices", "networkTemplates"], - model: this.network, - modelName: "network"}); - this.networks = new this.networkCollection(); - - this.networkSliver = XOSModel.extend({ urlRoot: NETWORKSLIVER_API, modelName: "networkSliver" }); - this.networkSliverCollection = XOSCollection.extend({ urlRoot: NETWORKSLIVER_API, - model: this.networkSliver, - modelName: "networkSliver"}); - this.networkSlivers = new this.networkSliverCollection(); - - this.networkDeployment = XOSModel.extend({ urlRoot: NETWORKDEPLOYMENT_API, modelName: "networkDeployment" }); - this.networkDeploymentCollection = XOSCollection.extend({ urlRoot: NETWORKDEPLOYMENT_API, - model: this.networkDeployment, - modelName: "networkDeployment"}); - this.networkDeployments = new this.networkDeploymentCollection(); - - this.service = XOSModel.extend({ urlRoot: SERVICE_API, modelName: "sliver" }); - this.serviceCollection = XOSCollection.extend({ urlRoot: SERVICE_API, - model: this.service, - modelName: "service"}); - this.services = new this.serviceCollection(); + this.allCollectionNames = []; + + define_model(this, {urlRoot: SLIVER_API, + relatedCollections: {"networkSlivers": "sliver"}, + foreignCollections: ["slices", "deployments", "images", "nodes", "users"], + modelName: "sliver"}); + + define_model(this, {urlRoot: SLICE_API, + relatedCollections: {"slivers": "slice", "sliceDeployments": "slice", "slicePrivileges": "slice", "networks": "owner"}, + foreignCollections: ["services", "sites"], + modelName: "slice"}); + + define_model(this, {urlRoot: SLICEDEPLOYMENT_API, + foreignCollections: ["slices", "deployments"], + modelName: "sliceDeployment"}); + + define_model(this, {urlRoot: SLICEPRIVILEGE_API, + foreignCollections: ["slices", "users", "sliceRoles"], + modelName: "slicePrivilege"}); + + define_model(this, {urlRoot: SLICEROLE_API, + modelName: "sliceRole"}); + + define_model(this, {urlRoot: NODE_API, + foreignCollections: ["sites", "deployments"], + modelName: "node"}); + + define_model(this, {urlRoot: SITE_API, + relatedCollections: {"users": "site", "slices": "site", "nodes": "site"}, + modelName: "site"}); + + define_model(this, {urlRoot: USER_API, + relatedCollections: {"slicePrivileges": "user", "slices": "owner", "userDeployments": "user"}, + foreignCollections: ["sites"], + modelName: "user"}); + + define_model(this, {urlRoot: USERDEPLOYMENT_API, + foreignCollections: ["users","deployments"], + modelName: "userDeployment"}); + + define_model(this, { urlRoot: DEPLOYMENT_API, + relatedCollections: {"nodes": "deployment", "slivers": "deploymentNetwork", "networkDeployments": "deployment", "userDeployments": "deployment"}, + modelName: "deployment"}); + + define_model(this, {urlRoot: IMAGE_API, + model: this.image, + modelName: "image"}); + + define_model(this, {urlRoot: NETWORKTEMPLATE_API, + modelName: "networkTemplate"}); + + define_model(this, {urlRoot: NETWORK_API, + relatedCollections: {"networkDeployments": "network", "networkSlivers": "network"}, + foreignCollections: ["slices", "networkTemplates"], + modelName: "network"}); + + define_model(this, {urlRoot: NETWORKSLIVER_API, + modelName: "networkSliver"}); + + define_model(this, {urlRoot: NETWORKDEPLOYMENT_API, + modelName: "networkDeployment"}); + + define_model(this, {urlRoot: SERVICE_API, + modelName: "service"}); // enhanced REST - this.slicePlus = XOSModel.extend({ urlRoot: SLICEPLUS_API, modelName: "slicePlus" }); - this.slicePlusCollection = XOSCollection.extend({ urlRoot: SLICEPLUS_API, - relatedCollections: {'slivers': "slice"}, - model: this.slicePlus, - modelName: "slicePlus"}); - this.slicesPlus = new this.slicePlusCollection(); - - this.listObjects = function() { return ["slivers", "slices", "nodes", "sites", "users", "deployments"]; }; + define_model(this, {urlRoot: SLICEPLUS_API, + relatedCollections: {'slivers': "slice"}, + modelName: "slicePlus"}); + + this.listObjects = function() { return this.allCollectionNames; }; }; xos = new xoslib(); -- 2.43.0