Dispatcher.register(function (event) { switch (event.name) { case 'DEPLOY_APP': switch (event.source) { case 'GH_COMMIT': deployFromGithubCommit(event.repo, event.branchName, event.commit.sha, event.appData); break; case 'GH_PULL': deployFromGithubPull(event.repo, event.pull, event.appData); break; default: throw new Error('Unknown source for DEPLOY_APP action: '+ JSON.stringify(event.source)); } break; case 'APP_DEPLOY_COMMIT': deployFromGithub({ github: 'true', github_user: event.ownerLogin, github_repo: event.repoName, branch: event.branchName, rev: event.sha, clone_url: event.repo.cloneURL }, { id: event.appID }); break; case 'APP_DEPLOY_RELEASE': Config.client.deployAppRelease(event.appID, event.releaseID, event.deployTimeout); break; } });
Promise.all(res.map(function (provider) { var pAttrs = Config.PROVIDER_ATTRS[provider.name]; if ( !pAttrs ) { window.console.error('No provider config found for '+ provider.name); return; } providers[provider.name] = provider; return Promise.all([ Config.client.getApp(pAttrs.appName).then(function (args) { providerApps[provider.id] = args[0]; }), Promise.resolve(null).then(function () { if (pAttrs.route.mode !== 'resource') { return; } return Config.client.listProviderResources(provider.id).then(function (args) { return Promise.all(args[0].map(function (resource) { var appName = pAttrs.route.appNameFromResource(resource); return Config.client.getApp(appName).then(function (args) { resourceApps[resourceAppsKey(provider.id, resource.id)] = args[0]; }); })); }); }) ]); }, this)).then(function () {
Dispatcher.register(function (event) { switch (event.name) { case 'PROVISION_RESOURCE_WITH_ROUTE': if (event.resourceID) { Config.history.navigate('/providers/'+ event.providerID +'/resources/'+ event.resourceID +'/create-external-route?provision=true', { replace: true }); } else { Config.history.navigate('/providers/'+ event.providerID +'/create-external-route?provision=true', { replace: true }); } break; case 'PROVISION_RESOURCE': provisionResource(event.providerID, event.createRoute || null); break; case 'APP_PROVISION_RESOURCES': provisionResourcesForApp(event.providerIDs, event.appID); break; case 'RESOURCE_ADD_APP': addAppToResource(event.appID, event.providerID, event.resourceID); break; case 'DELETE_RESOURCE': deleteResource(event.providerID, event.resourceID, event.appID); break; case 'CREATE_EXTERNAL_PROVIDER_ROUTE': createTCPRoute(event.providerAppID, event.serviceName); break; case 'CREATE_EXTERNAL_RESOURCE_ROUTE': Config.client.getResource(event.providerID, event.resourceID).then(function (args) { var resource = args[0]; createTCPRoute(event.serviceAppID, event.serviceNameFromResource(resource)); }); break; } });
__fetchPrevPage: function (skipLock) { if (skipLock !== true) { return this.__withFetchLock(this.__fetchPrevPage.bind(this, true)); } var prevState = this.state; return Config.client.getEvents({ app_id: this.props.appID, since_id: this.state.sinceID, object_types: OBJECT_TYPES, count: FETCH_COUNT }).then(function (args) { var events = this.__rewriteEvents(this.__filterEvents(args[0])); var pages; var hasPrevPage = true; if (events.length === 0) { pages = prevState.pages; hasPrevPage = args[0].length !== 0; } else { pages = [{ id: buildPageID(events), events: events }].concat(prevState.pages); } this.setState({ hasPrevPage: hasPrevPage, pages: pages, eventIDs: prevState.eventIDs.concat(events.map(function (e) { return e.id; })), sinceID: ((args[0] || [])[0] || {}).id || prevState.sinceID }); }.bind(this)).catch(function (err) { setTimeout(function () { throw err; }, 0); }); },
Promise.resolve(null).then(function () { if (pAttrs.route.mode !== 'resource') { return; } return Config.client.listProviderResources(provider.id).then(function (args) { return Promise.all(args[0].map(function (resource) { var appName = pAttrs.route.appNameFromResource(resource); return Config.client.getApp(appName).then(function (args) { resourceApps[resourceAppsKey(provider.id, resource.id)] = args[0]; }); })); }); })
__fetchProviders: function () { Config.client.listProviders().then(function (args) { var res = args[0]; var providers = {}; var providerApps = {}; var resourceApps = {}; Promise.all(res.map(function (provider) { var pAttrs = Config.PROVIDER_ATTRS[provider.name]; if ( !pAttrs ) { window.console.error('No provider config found for '+ provider.name); return; } providers[provider.name] = provider; return Promise.all([ Config.client.getApp(pAttrs.appName).then(function (args) { providerApps[provider.id] = args[0]; }), Promise.resolve(null).then(function () { if (pAttrs.route.mode !== 'resource') { return; } return Config.client.listProviderResources(provider.id).then(function (args) { return Promise.all(args[0].map(function (resource) { var appName = pAttrs.route.appNameFromResource(resource); return Config.client.getApp(appName).then(function (args) { resourceApps[resourceAppsKey(provider.id, resource.id)] = args[0]; }); })); }); }) ]); }, this)).then(function () { this.setState({ fetched: true, providers: Config.PROVIDER_ORDER.filter(function (name) { return providers.hasOwnProperty(name); }).map(function (name) { return providers[name]; }), providerApps: providerApps, resourceApps: resourceApps }); }.bind(this)); }.bind(this)); }
var createTaffyJob = function (taffyReleaseId, appID, appName, meta, env) { env = env || {}; var args = [appName, meta.clone_url, meta.branch, meta.rev]; [{ arg: '--meta', data: meta }, { arg: '--env', data: env }].forEach(function (item) { Object.keys(item.data).forEach(function (k) { var v = item.data[k]; args.push(item.arg); args.push(k +'='+ v); }); }); return Config.client.createTaffyJob({ release: taffyReleaseId, release_env: true, cmd: args, meta: extend({}, meta, { app: appID }) }); };
__fetchNextPage: function (skipLock, beforeID, eventsBuffer) { if (skipLock !== true) { return this.__withFetchLock(this.__fetchNextPage.bind(this, true)); } if (this.state.hasNextPage === false) { return Promise.resolve(); } var prevState = this.state; return Config.client.getEvents({ app_id: this.props.appID, before_id: beforeID || this.state.beforeID, object_types: OBJECT_TYPES, count: FETCH_COUNT }).then(function (args) { var events = (eventsBuffer || []).concat(this.__rewriteEvents(this.__filterEvents(args[0]))); var pages; var hasNextPage = true; var beforeID = ((args[0] || [])[args[0].length-1] || {}).id || prevState.beforeID; if (args[0].length > events.length) { return this.__fetchNextPage(skipLock, beforeID, events); } if (events.length === 0) { pages = prevState.pages; hasNextPage = args[0].length !== 0; } else { pages = prevState.pages.concat([{ id: buildPageID(events), events: events }]); } var state = { hasNextPage: hasNextPage, pages: pages, eventIDs: prevState.eventIDs.concat(events.map(function (e) { return e.id; })), beforeID: ((args[0] || [])[args[0].length-1] || {}).id || prevState.beforeID }; this.setState(state); }.bind(this)).catch(function (err) { setTimeout(function () { throw err; }, 0); }); },
return Promise.all(args[0].map(function (resource) { var appName = pAttrs.route.appNameFromResource(resource); return Config.client.getApp(appName).then(function (args) { resourceApps[resourceAppsKey(provider.id, resource.id)] = args[0]; }); }));