diff --git a/packages/cp-frontend/yarn.lock b/packages/cp-frontend/yarn.lock index 7486a36b..ec17cf3c 100644 --- a/packages/cp-frontend/yarn.lock +++ b/packages/cp-frontend/yarn.lock @@ -1430,6 +1430,10 @@ clap@^1.0.9: dependencies: chalk "^1.1.3" +classnames@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + clean-css@4.1.x: version "4.1.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.3.tgz#07cfe8980edb20d455ddc23aadcf1e04c6e509ce" @@ -1497,6 +1501,10 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +codemirror@^5.18.2: + version "5.26.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.26.0.tgz#bcbee86816ed123870c260461c2b5c40b68746e5" + color-convert@^1.0.0, color-convert@^1.3.0: version "1.9.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" @@ -1721,7 +1729,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.3: +create-react-class@^15.5.1, create-react-class@^15.5.3: version "15.5.3" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.5.3.tgz#fb0f7cae79339e9a179e194ef466efa3923820fe" dependencies: @@ -4176,6 +4184,10 @@ lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -4188,7 +4200,7 @@ lodash.isarraylike@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.isarraylike/-/lodash.isarraylike-4.2.0.tgz#4623310ab318804b667ddc3619058137559400c4" -lodash.isequal@^4.1.1: +lodash.isequal@^4.1.1, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -4603,10 +4615,6 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" -nprogress@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" - nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -5416,6 +5424,17 @@ react-apollo@^1.2.0: optionalDependencies: react-dom "0.14.x || 15.* || ^15.0.0 || ^16.0.0-alpha" +react-codemirror@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/react-codemirror/-/react-codemirror-1.0.0.tgz#91467b53b1f5d80d916a2fd0b4c7adb85a9001ba" + dependencies: + classnames "^2.2.5" + codemirror "^5.18.2" + create-react-class "^15.5.1" + lodash.debounce "^4.0.8" + lodash.isequal "^4.5.0" + prop-types "^15.5.4" + react-dev-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-3.0.0.tgz#3677f37718ba0cae892ba9c01fe54d1622e6ef7c" diff --git a/packages/cp-gql-schema/schema.gql b/packages/cp-gql-schema/schema.gql index c6af6250..5fc9db18 100644 --- a/packages/cp-gql-schema/schema.gql +++ b/packages/cp-gql-schema/schema.gql @@ -20,7 +20,7 @@ type User { type DeploymentGroup { id: ID! name: String! - slug: String + slug: String! services(name: String, slug: String, parentId: ID): [Service] version: Version history: [Version] @@ -71,7 +71,7 @@ enum ManifestFormat { type Manifest { id: ID! - created: Date + created: Float type: ManifestType! format: ManifestFormat! raw: String! @@ -85,8 +85,8 @@ type Service { name: String! # human readable name slug: String! instances(name: String, machineId: ID, status: InstanceStatus): [Instance]! - # metrics: [MetricType]! - currentMetrics: [CurrentMetric]! + # metrics: [MetricType] + currentMetrics: [CurrentMetric] connections: [String!] # list of serviceIds parent: ID # parent service id package: Package! # we don't have this in current mock data, diff --git a/packages/portal-api/bootstrap-data.js b/packages/portal-api/bootstrap-data.js index 8f8bfc3b..3a94a61d 100644 --- a/packages/portal-api/bootstrap-data.js +++ b/packages/portal-api/bootstrap-data.js @@ -2,7 +2,6 @@ const Data = require('portal-data'); -const data = new Data(); const ifError = function (err) { if (err) { @@ -11,26 +10,36 @@ const ifError = function (err) { } }; -data.connect(() => { - data.createDatacenter({ region: 'us-sw', name: 'us-sw' }, (err, datacenter) => { - ifError(err); +const bootstrap = function () { + const data = new Data(); - data.createUser({ firstName: 'Nikola', lastName: 'Tesla', email: 'nikola@tesla.com', login: 'nikola' }, (err, user) => { + data.connect(() => { + data.createDatacenter({ region: 'us-sw', name: 'us-sw' }, (err, datacenter) => { ifError(err); - data.createPortal({ - user, - datacenter - }, (err, portal) => { + data.createUser({ firstName: 'Nikola', lastName: 'Tesla', email: 'nikola@tesla.com', login: 'nikola' }, (err, user) => { ifError(err); - data.createDeploymentGroup({ name: 'test' }, (err) => { + data.createPortal({ + user, + datacenter + }, (err, portal) => { ifError(err); - console.log('data bootstrapped'); process.exit(0); }); }); }); }); -}); +}; + +const main = function () { + const dropData = new Data(); + + dropData.connect(() => { + dropData._db.r.dbDrop('portal').run(dropData._db._connection, () => { + bootstrap(); + }); + }); +}; +main(); diff --git a/packages/portal-data/lib/index.js b/packages/portal-data/lib/index.js index b81de7f4..f10e2a3c 100644 --- a/packages/portal-data/lib/index.js +++ b/packages/portal-data/lib/index.js @@ -252,15 +252,16 @@ module.exports = class Data extends EventEmitter { } getDeploymentGroup (query, cb) { - this._db.deployment_groups.single(query, (err, deploymentGroup) => { + this._db.deployment_groups.query(query, (err, deploymentGroups) => { if (err) { return cb(err); } - if (!deploymentGroup) { + if (!deploymentGroups || !deploymentGroups.length) { return cb(null, {}); } + const deploymentGroup = deploymentGroups[0]; if (!deploymentGroup.service_ids || !deploymentGroup.service_ids.length) { return cb(null, Transform.fromDeploymentGroup(deploymentGroup)); } @@ -274,7 +275,7 @@ module.exports = class Data extends EventEmitter { return reject(err); } - resolve(services); + resolve(services || []); }); }); }; @@ -711,7 +712,25 @@ module.exports = class Data extends EventEmitter { }); } + _getDeploymentGroupServices (deploymentGroupSlug, cb) { + this.getDeploymentGroup({ slug: deploymentGroupSlug }, (err, deploymentGroup) => { + if (err) { + return cb(err); + } + + if (!deploymentGroup) { + return cb(null, {}); + } + + return this.getServices({ deploymentGroupId: deploymentGroup.id }, cb); + }); + } + getServices (options, cb) { + if (options.deploymentGroupSlug) { + return this._getDeploymentGroupServices(options.deploymentGroupSlug, cb); + } + const query = {}; if (options.ids && options.ids.length) { query.id = this._db.or(options.ids); diff --git a/packages/portal-data/lib/transform.js b/packages/portal-data/lib/transform.js index 291d74e2..df25fddd 100644 --- a/packages/portal-data/lib/transform.js +++ b/packages/portal-data/lib/transform.js @@ -37,7 +37,7 @@ exports.fromDeploymentGroup = function (deploymentGroup, services) { exports.toDeploymentGroup = function ({ name }) { return { name, - slug: '', + slug: name, services: [], version_id: '', history_version_ids: [] @@ -63,7 +63,7 @@ exports.fromService = function ({ service, instances, packages }) { exports.toService = function (clientService) { return { - version_hash: clientService.hash || '', + version_hash: clientService.hash || clientService.name, deployment_group_id: clientService.deploymentGroupId, name: clientService.name, slug: clientService.slug || '',