Skip to content

Commit d4aa63c

Browse files
committed
Merge pull request #513 from CodeNow/SAN-706-post-instances-id-actions-copy
San 706 post instances id actions copy
2 parents 06907da + f6690a8 commit d4aa63c

File tree

5 files changed

+19
-17
lines changed

5 files changed

+19
-17
lines changed

lib/middlewares/me.js

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,6 @@ module.exports = createMongooseMiddleware(User, 'sessionUser', {
5252
}
5353
};
5454
},
55-
isHelloRunnable: function (modelKey) {
56-
return function (req, res, next) {
57-
var model = keypather.get(req, modelKey);
58-
var modelGithubId = model.owner.github;
59-
var userGithubId = req.sessionUser.accounts.github.id;
60-
if (modelGithubId === process.env.HELLO_RUNNABLE_GITHUB_ID) {
61-
next();
62-
}
63-
else if (userGithubId === process.env.HELLO_RUNNABLE_GITHUB_ID) {
64-
next();
65-
}
66-
else {
67-
next(Boom.forbidden('Access denied (!owner)', { githubId: modelGithubId }));
68-
}
69-
};
70-
},
7155
isRegistered: function (req, res, next) {
7256
this.permission('registered')(req, res, next);
7357
},

lib/routes/actions/analyze/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
var app = module.exports = require('express')();
1111
var debug = require('debug')('runnable-api:actions:analyze');
12+
var dogstatsd = require('models/datadog');
1213
var find = require('101/find');
1314
var flow = require('middleware-flow');
1415
var github = require('middlewares/apis').github;
@@ -105,6 +106,7 @@ var extractProjectDependencyList = flow.series(
105106
*/
106107
function extractJS (req, res, next) {
107108
debug('extracting project dependency-modules for languageFramework: %s', req.languageFramework);
109+
var start = new Date();
108110
var depFile;
109111
try {
110112
depFile = JSON.parse(req.dependencyFileContent);
@@ -122,6 +124,7 @@ function extractJS (req, res, next) {
122124
nodejs: nodev,
123125
npm: npmv
124126
};
127+
dogstatsd.timing('api.actions-analyze-index.extractJS', new Date()-start, 1, []);
125128
next();
126129
}
127130

@@ -133,6 +136,7 @@ function extractJS (req, res, next) {
133136
*/
134137
function extractRuby (req, res, next) {
135138
debug('extracting project dependency-modules for languageFramework: %s', req.languageFramework);
139+
var start = new Date();
136140
var dependencies = [];
137141
var gemfileDependenciesRegexPattern = /^(\s+)?gem\s+['"](\S+)['"]/gm;
138142
var execResult = gemfileDependenciesRegexPattern.exec(req.dependencyFileContent);
@@ -145,6 +149,7 @@ function extractRuby (req, res, next) {
145149
ruby: req.supportedLanguageVersions.defaultVersion,
146150
rails: stacks.rails.defaultVersion
147151
};
152+
dogstatsd.timing('api.actions-analyze-index.extractRuby', new Date()-start, 1, []);
148153
next();
149154
}
150155

@@ -156,6 +161,7 @@ function extractRuby (req, res, next) {
156161
*/
157162
function extractPython (req, res, next) {
158163
debug('extracting project dependency-modules for languageFramework: %s', req.languageFramework);
164+
var start = new Date();
159165
var dependencies = [];
160166
var pythonDependenciesRegexPattern = /^([A-z0-9-_]+)/gm;
161167
var execResult = pythonDependenciesRegexPattern.exec(req.dependencyFileContent);
@@ -167,6 +173,7 @@ function extractPython (req, res, next) {
167173
req.inferredLanguageVersion = {
168174
python: req.supportedLanguageVersions.defaultVersion
169175
};
176+
dogstatsd.timing('api.actions-analyze-index.extractPython', new Date()-start, 1, []);
170177
next();
171178
}
172179

@@ -198,6 +205,7 @@ function inferDependenciesFromDependencyList (req, res, next) {
198205
suggestableServices = suggestableServicesPython;
199206
break;
200207
}
208+
var start = new Date();
201209
var inferredServices = suggestableServicesKeys.filter(function (key) {
202210
return find(suggestableServices[key], function (moduleThatMatchesSuggestableService) {
203211
return find(req.dependencyList, function (dependencyInProject) {
@@ -208,6 +216,8 @@ function inferDependenciesFromDependencyList (req, res, next) {
208216
});
209217
});
210218
});
219+
dogstatsd.timing('api.actions-analyze-index.inferDependenciesFromDependencyList',
220+
new Date()-start, 1, []);
211221
req.inferredDependencies = inferredServices;
212222
next();
213223
}

lib/routes/builds.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ var runnable = require('middlewares/apis').runnable;
2222
var error = require('error');
2323
var pluck = require('101/pluck');
2424
var noop = require('101/noop');
25+
var ownerIsHelloRunnable = require('middlewares/owner-is-hello-runnable');
2526

2627
var findBuild = flow.series(
2728
mw.params('id').require().validate(validations.isObjectId),
2829
builds.findById('params.id'),
2930
checkFound('build'),
3031
flow.or(
3132
me.isOwnerOf('build'),
33+
ownerIsHelloRunnable('build'),
3234
me.isModerator));
3335

3436
/** Create a build

lib/routes/contexts/versions/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ var transformations = require('middlewares/transformations');
2828
var mavis = require('middlewares/apis').mavis;
2929
var docker = require('middlewares/apis').docker;
3030
var error = require('error');
31+
var ownerIsHelloRunnable = require('middlewares/owner-is-hello-runnable');
3132

3233
var findContext = flow.series(
3334
contexts.findById('params.contextId'),
3435
checkFound('context'),
3536
flow.or(
3637
me.isOwnerOf('context'),
38+
ownerIsHelloRunnable('context'),
3739
mw.req('context.isSource').validate(validations.equals(true)),
3840
me.isModerator));
3941

lib/routes/instances/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ var findBuild = flow.series(
4848
checkFound('build'),
4949
flow.or(
5050
me.isOwnerOf('build'),
51+
ownerIsHelloRunnable('build'),
5152
me.isModerator),
5253
mw.req('build.started').require()
5354
.else(mw.next(Boom.badRequest('Instances cannot use builds that haven\'t been started'))));
@@ -601,7 +602,10 @@ app.post('/instances/:id/actions/copy',
601602
me.isModerator),
602603
mw.body('owner.github').require().then(
603604
mw.body('owner.github').number(),
604-
me.isOwnerOf('body')),
605+
flow.or(
606+
me.isOwnerOf('body'),
607+
ownerIsHelloRunnable('body')
608+
)),
605609
// The best way to clone an instance is to just use the post route
606610
// If we deep copy the build, we can attach its id to the body, and just use the post route
607611
findBuild,

0 commit comments

Comments
 (0)