def create_pipeline(self, onetime=None): """Create the spinnaker pipeline(s).""" utils.banner("Creating Pipeline") kwargs = { 'app': self.app, 'trigger_job': self.trigger_job, 'prop_path': self.json_path, 'base': None, 'runway_dir': self.runway_dir, } pipeline_type = self.configs['pipeline']['type'] if pipeline_type not in consts.ALLOWED_TYPES and pipeline_type not in consts.MANUAL_TYPES: raise NotImplementedError('Pipeline type "{0}" not permitted.'.format(pipeline_type)) if not onetime: if pipeline_type == 'lambda': spinnakerpipeline = pipeline.SpinnakerPipelineLambda(**kwargs) elif pipeline_type == 's3': spinnakerpipeline = pipeline.SpinnakerPipelineS3(**kwargs) elif pipeline_type == 'datapipeline': spinnakerpipeline = pipeline.SpinnakerPipelineDataPipeline(**kwargs) elif pipeline_type in consts.MANUAL_TYPES: spinnakerpipeline = pipeline.SpinnakerPipelineManual(**kwargs) else: # Handles all other pipelines spinnakerpipeline = pipeline.SpinnakerPipeline(**kwargs) else: spinnakerpipeline = pipeline.SpinnakerPipelineOnetime(onetime=onetime, **kwargs) spinnakerpipeline.create_pipeline()
def create_elb(self): """Create the ELB for the defined environment.""" utils.banner("Creating ELB") elbobj = elb.SpinnakerELB(app=self.app, env=self.env, region=self.region, prop_path=self.json_path) elbobj.create_elb()
def create_s3app(self): """Create S3 infra for s3 applications""" utils.banner("Creating S3 App Infrastructure") s3obj = s3.S3Apps(app=self.app, env=self.env, region=self.region, prop_path=self.json_path) s3obj.create_bucket()
def create_app(self): """Create the spinnaker application.""" utils.banner("Creating Spinnaker App") spinnakerapp = app.SpinnakerApp(app=self.app, email=self.email, project=self.group, repo=self.repo) spinnakerapp.create_app()
def create_secgroups(self): """Create security groups as defined in the configs.""" utils.banner("Creating Security Group") sgobj = securitygroup.SpinnakerSecurityGroup(app=self.app, env=self.env, region=self.region, prop_path=self.json_path) sgobj.create_security_group()
def create_datapipeline(self): """Creates data pipeline and adds definition""" utils.banner("Creating Data Pipeline") dpobj = datapipeline.AWSDataPipeline(app=self.app, env=self.env, region=self.region, prop_path=self.json_path) dpobj.create_datapipeline() dpobj.set_pipeline_definition() if self.configs[self.env].get('datapipeline').get('activate_on_deploy'): dpobj.activate_pipeline()
def slack_notify(self): """Send out a slack notification.""" utils.banner("Sending slack notification") if self.env.startswith("prod"): notify = slacknotify.SlackNotification(app=self.app, env=self.env, prop_path=self.json_path) notify.post_message() else: LOG.info("No slack message sent, not production environment")
def create_scheduled_actions(self): """Create Scheduled Actions for app in environment""" utils.banner("Creating Scheduled Actions") actionsobj = scheduled_actions.ScheduledActions( app=self.app, env=self.env, region=self.region, prop_path=self.json_path) actionsobj.create_scheduled_actions()
def create_autoscaling_policy(self): """Create Scaling Policy for app in environment""" utils.banner("Creating Scaling Policy") policyobj = autoscaling_policy.AutoScalingPolicy( app=self.app, env=self.env, region=self.region, prop_path=self.json_path) policyobj.create_policy()
def create_awslambda(self): """Create security groups as defined in the configs.""" utils.banner("Creating Lambda Function") awslambdaobj = awslambda.LambdaFunction( app=self.app, env=self.env, region=self.region, prop_path=self.json_path) awslambdaobj.create_lambda_function() utils.banner("Creating Lambda Event") lambdaeventobj = awslambda.LambdaEvent(app=self.app, env=self.env, region=self.region, prop_path=self.json_path) lambdaeventobj.create_lambda_events()
def create_s3app(self): """Create S3 infra for s3 applications""" utils.banner("Creating S3 App Infrastructure") primary_region = self.configs['pipeline']['primary_region'] s3obj = s3.S3Apps(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, primary_region=primary_region) s3obj.create_bucket()
def write_configs(self): """Generate the configurations needed for pipes.""" utils.banner("Generating Configs") if not self.runway_dir: app_configs = configs.process_git_configs(git_short=self.git_short) else: app_configs = configs.process_runway_configs(runway_dir=self.runway_dir) self.configs = configs.write_variables( app_configs=app_configs, out_file=self.raw_path, git_short=self.git_short)
def create_dns(self): """Create DNS for the defined app and environment.""" utils.banner("Creating DNS") elb_subnet = self.configs[self.env]['elb']['subnet_purpose'] dnsobj = dns.SpinnakerDns(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, elb_subnet=elb_subnet) dnsobj.create_elb_dns()
def promote_s3app(self): """promotes S3 deployment to LATEST""" utils.banner("Promoting S3 App") s3obj = s3.S3Deployment(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, artifact_path=self.artifact_path, artifact_version=self.artifact_version) s3obj.promote_artifacts()
def deploy_s3app(self): """Deploys artifacts contents to S3 bucket""" utils.banner("Deploying S3 App") s3obj = s3.S3Deployment(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, artifact_path=self.artifact_path, artifact_version=self.artifact_version) s3obj.upload_artifacts()
def promote_s3app(self): """promotes S3 deployment to LATEST""" utils.banner("Promoting S3 App") primary_region = self.configs['pipeline']['primary_region'] s3obj = s3.S3Deployment(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, artifact_path=self.artifact_path, artifact_version=self.artifact_version, primary_region=primary_region) s3obj.promote_artifacts(promote_stage=self.promote_stage)
def create_app(self): """Create the spinnaker application.""" utils.banner("Creating Spinnaker App") plugin = self.plugin_manager('app') spinnakerapp = plugin.SpinnakerApp( app=self.app, email=self.email, project=self.group, repo=self.repo, pipeline_config=self.configs['pipeline']) spinnakerapp.create()
def deploy_s3app(self): """Deploys artifacts contents to S3 bucket""" utils.banner("Deploying S3 App") primary_region = self.configs['pipeline']['primary_region'] s3obj = s3.S3Deployment(app=self.app, env=self.env, region=self.region, prop_path=self.json_path, artifact_path=self.artifact_path, artifact_version=self.artifact_version, artifact_branch=self.artifact_branch, primary_region=primary_region) s3obj.upload_artifacts()
def create_dns(self): """Create DNS for the defined app and environment.""" utils.banner("Creating DNS") elb_subnet = self.configs[self.env]['elb']['subnet_purpose'] regions = self.configs[self.env]['regions'] failover = self.configs[self.env]['dns']['failover_dns'] primary_region = self.configs['pipeline']['primary_region'] regionspecific_dns = self.configs[self.env]['dns']['region_specific'] dnsobj = dns.SpinnakerDns( app=self.app, env=self.env, region=self.region, prop_path=self.json_path, elb_subnet=elb_subnet) if len(regions) > 1 and failover: dnsobj.create_elb_dns(regionspecific=True) dnsobj.create_failover_dns(primary_region=primary_region) else: if regionspecific_dns: dnsobj.create_elb_dns(regionspecific=True) if self.region == primary_region: dnsobj.create_elb_dns(regionspecific=False)
def create_iam(self): """Create IAM resources.""" utils.banner("Creating IAM") iam.create_iam_resources(env=self.env, app=self.app)
def create_archaius(self): """Create S3 bucket for Archaius.""" utils.banner("Creating S3") s3.init_properties(env=self.env, app=self.app)